filestack-adaptive
Version:
HTML5 picture elements powered by Filestack
116 lines (114 loc) • 14.9 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var tree_1 = require("../tree");
var DOM_1 = require("./DOM");
var validator = require('html-validator');
var handle = 'seW1thvcR1aQBfOCF8bX';
var makeHTML = function (el) {
return "\n <!DOCTYPE html>\n <html>\n <head>\n <title>Test</title>\n </head>\n <body>\n " + el.toString() + "\n </body>\n </html>\n ";
};
var isInvalid = function (json) {
var data = JSON.parse(json);
var types = data.messages.map(function (m) { return m.type; });
return types.indexOf('error') !== -1;
};
describe('DOM adapter', function () {
it('sanity - should invalidate an img without alt', function (done) {
var options = {};
var picture = DOM_1.makePicture(tree_1.makePictureTree(handle, options));
validator({ data: makeHTML(picture) }).then(function (data) {
done(!isInvalid(data));
});
});
it('should generate a valid picture element with width and pixel density', function (done) {
var options = {
alt: 'downtown',
width: '768px'
};
var picture = DOM_1.makePicture(tree_1.makePictureTree(handle, options));
validator({ data: makeHTML(picture) }).then(function (data) {
done(isInvalid(data));
});
});
it('should generate a valid picture element with 1 size and width descriptors', function (done) {
var options = {
alt: 'downtown',
sizes: {
'(min-width: 640px)': '80vw',
fallback: '100vw'
},
resolutions: [540, 670, 1080]
};
var picture = DOM_1.makePicture(tree_1.makePictureTree(handle, options));
validator({ data: makeHTML(picture) }).then(function (data) {
console.log(data, isInvalid(data));
done(isInvalid(data));
});
});
it('should generate a valid picture element with 2 formats and 2 sizes', function (done) {
var options = {
alt: 'downtown',
sizes: {
'(min-width: 640px)': '80vw',
'(min-width: 320px)': '700px',
fallback: '100vw'
},
formats: ['webp', 'jpg']
};
var picture = DOM_1.makePicture(tree_1.makePictureTree(handle, options));
validator({ data: makeHTML(picture) }).then(function (data) {
done(isInvalid(data));
});
});
it('should generate a valid picture element with 1 format and fallback', function (done) {
var options = {
alt: 'downtown',
sizes: {
fallback: '100vw'
},
formats: ['webp', 'jpg']
};
var picture = DOM_1.makePicture(tree_1.makePictureTree(handle, options));
validator({ data: makeHTML(picture) }).then(function (data) {
done(isInvalid(data));
});
});
it('should generate a valid picture element with 1 format', function (done) {
var options = {
alt: 'downtown',
formats: ['webp']
};
var picture = DOM_1.makePicture(tree_1.makePictureTree(handle, options));
validator({ data: makeHTML(picture) }).then(function (data) {
done(isInvalid(data));
});
});
it('should generate a valid picture element with img fallback size and 2 width descriptors', function (done) {
var options = {
alt: 'downtown',
sizes: {
fallback: '100vw'
},
resolutions: ['320w', '640w']
};
var picture = DOM_1.makePicture(tree_1.makePictureTree(handle, options));
validator({ data: makeHTML(picture) }).then(function (data) {
done(isInvalid(data));
});
});
it('should generate a valid picture element with 1 fallback size and 1 format', function (done) {
var options = {
alt: 'downtown',
formats: ['webp'],
resolutions: [640],
sizes: {
fallback: '700px'
}
};
var picture = DOM_1.makePicture(tree_1.makePictureTree(handle, options));
validator({ data: makeHTML(picture) }).then(function (data) {
done(isInvalid(data));
});
});
});
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hZGFwdGVycy9ET00uc3BlYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLGdDQUEwQztBQUMxQyw2QkFBb0M7QUFFcEMsSUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFDNUMsSUFBTSxNQUFNLEdBQUcsc0JBQXNCLENBQUM7QUFFdEMsSUFBTSxRQUFRLEdBQUcsVUFBQyxFQUFPO0lBQ3ZCLE9BQU8sc0hBT0MsRUFBRSxDQUFDLFFBQVEsRUFBRSxxQ0FHcEIsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGLElBQU0sU0FBUyxHQUFHLFVBQUMsSUFBUztJQUMxQixJQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlCLElBQU0sS0FBSyxHQUFhLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFVBQUMsQ0FBTSxJQUFLLE9BQUEsQ0FBQyxDQUFDLElBQUksRUFBTixDQUFNLENBQUMsQ0FBQztJQUM5RCxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDdkMsQ0FBQyxDQUFDO0FBRUYsUUFBUSxDQUFDLGFBQWEsRUFBRTtJQUN0QixFQUFFLENBQUMsK0NBQStDLEVBQUUsVUFBQSxJQUFJO1FBQ3RELElBQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNuQixJQUFNLE9BQU8sR0FBRyxpQkFBVyxDQUN6QixzQkFBZSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FDakMsQ0FBQztRQUNGLFNBQVMsQ0FBQyxFQUFFLElBQUksRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFDLElBQVM7WUFDcEQsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDekIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxzRUFBc0UsRUFBRSxVQUFBLElBQUk7UUFDN0UsSUFBTSxPQUFPLEdBQUc7WUFDZCxHQUFHLEVBQUUsVUFBVTtZQUNmLEtBQUssRUFBRSxPQUFPO1NBQ2YsQ0FBQztRQUNGLElBQU0sT0FBTyxHQUFHLGlCQUFXLENBQ3pCLHNCQUFlLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUNqQyxDQUFDO1FBRUYsU0FBUyxDQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQUMsSUFBUztZQUNwRCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDeEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQywyRUFBMkUsRUFBRSxVQUFBLElBQUk7UUFDbEYsSUFBTSxPQUFPLEdBQUc7WUFDZCxHQUFHLEVBQUUsVUFBVTtZQUNmLEtBQUssRUFBRTtnQkFDTCxvQkFBb0IsRUFBRSxNQUFNO2dCQUM1QixRQUFRLEVBQUUsT0FBTzthQUNsQjtZQUNELFdBQVcsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDO1NBQzlCLENBQUM7UUFDRixJQUFNLE9BQU8sR0FBRyxpQkFBVyxDQUN6QixzQkFBZSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FDakMsQ0FBQztRQUNGLFNBQVMsQ0FBQyxFQUFFLElBQUksRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFDLElBQVM7WUFDcEQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDbkMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3hCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsb0VBQW9FLEVBQUUsVUFBQSxJQUFJO1FBQzNFLElBQU0sT0FBTyxHQUFHO1lBQ2QsR0FBRyxFQUFFLFVBQVU7WUFDZixLQUFLLEVBQUU7Z0JBQ0wsb0JBQW9CLEVBQUUsTUFBTTtnQkFDNUIsb0JBQW9CLEVBQUUsT0FBTztnQkFDN0IsUUFBUSxFQUFFLE9BQU87YUFDbEI7WUFDRCxPQUFPLEVBQUUsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDO1NBQ3pCLENBQUM7UUFDRixJQUFNLE9BQU8sR0FBRyxpQkFBVyxDQUN6QixzQkFBZSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FDakMsQ0FBQztRQUNGLFNBQVMsQ0FBQyxFQUFFLElBQUksRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFDLElBQVM7WUFDcEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3hCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsb0VBQW9FLEVBQUUsVUFBQSxJQUFJO1FBQzNFLElBQU0sT0FBTyxHQUFHO1lBQ2QsR0FBRyxFQUFFLFVBQVU7WUFDZixLQUFLLEVBQUU7Z0JBQ0wsUUFBUSxFQUFFLE9BQU87YUFDbEI7WUFDRCxPQUFPLEVBQUUsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDO1NBQ3pCLENBQUM7UUFDRixJQUFNLE9BQU8sR0FBRyxpQkFBVyxDQUN6QixzQkFBZSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FDakMsQ0FBQztRQUNGLFNBQVMsQ0FBQyxFQUFFLElBQUksRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFDLElBQVM7WUFDcEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3hCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsdURBQXVELEVBQUUsVUFBQSxJQUFJO1FBQzlELElBQU0sT0FBTyxHQUFHO1lBQ2QsR0FBRyxFQUFFLFVBQVU7WUFDZixPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUM7U0FDbEIsQ0FBQztRQUNGLElBQU0sT0FBTyxHQUFHLGlCQUFXLENBQ3pCLHNCQUFlLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUNqQyxDQUFDO1FBQ0YsU0FBUyxDQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQUMsSUFBUztZQUNwRCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDeEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyx3RkFBd0YsRUFBRSxVQUFBLElBQUk7UUFDL0YsSUFBTSxPQUFPLEdBQUc7WUFDZCxHQUFHLEVBQUUsVUFBVTtZQUNmLEtBQUssRUFBRTtnQkFDTCxRQUFRLEVBQUUsT0FBTzthQUNsQjtZQUNELFdBQVcsRUFBRSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUM7U0FDOUIsQ0FBQztRQUNGLElBQU0sT0FBTyxHQUFHLGlCQUFXLENBQ3pCLHNCQUFlLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUNqQyxDQUFDO1FBQ0YsU0FBUyxDQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQUMsSUFBUztZQUNwRCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDeEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQywyRUFBMkUsRUFBRSxVQUFBLElBQUk7UUFDbEYsSUFBTSxPQUFPLEdBQUc7WUFDZCxHQUFHLEVBQUUsVUFBVTtZQUNmLE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQztZQUNqQixXQUFXLEVBQUUsQ0FBQyxHQUFHLENBQUM7WUFDbEIsS0FBSyxFQUFFO2dCQUNMLFFBQVEsRUFBRSxPQUFPO2FBQ2xCO1NBQ0YsQ0FBQztRQUNGLElBQU0sT0FBTyxHQUFHLGlCQUFXLENBQ3pCLHNCQUFlLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUNqQyxDQUFDO1FBQ0YsU0FBUyxDQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQUMsSUFBUztZQUNwRCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDeEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwiZmlsZSI6ImFkYXB0ZXJzL0RPTS5zcGVjLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbWFrZVBpY3R1cmVUcmVlIH0gZnJvbSAnLi4vdHJlZSc7XG5pbXBvcnQgeyBtYWtlUGljdHVyZSB9IGZyb20gJy4vRE9NJztcblxuY29uc3QgdmFsaWRhdG9yID0gcmVxdWlyZSgnaHRtbC12YWxpZGF0b3InKTtcbmNvbnN0IGhhbmRsZSA9ICdzZVcxdGh2Y1IxYVFCZk9DRjhiWCc7XG5cbmNvbnN0IG1ha2VIVE1MID0gKGVsOiBhbnkpID0+IHtcbiAgcmV0dXJuIGBcbiAgPCFET0NUWVBFIGh0bWw+XG4gICAgPGh0bWw+XG4gICAgICA8aGVhZD5cbiAgICAgICAgPHRpdGxlPlRlc3Q8L3RpdGxlPlxuICAgICAgPC9oZWFkPlxuICAgICAgPGJvZHk+XG4gICAgICAgICR7ZWwudG9TdHJpbmcoKX1cbiAgICAgIDwvYm9keT5cbiAgICA8L2h0bWw+XG4gIGA7XG59O1xuXG5jb25zdCBpc0ludmFsaWQgPSAoanNvbjogYW55KSA9PiB7XG4gIGNvbnN0IGRhdGEgPSBKU09OLnBhcnNlKGpzb24pO1xuICBjb25zdCB0eXBlczogc3RyaW5nW10gPSBkYXRhLm1lc3NhZ2VzLm1hcCgobTogYW55KSA9PiBtLnR5cGUpO1xuICByZXR1cm4gdHlwZXMuaW5kZXhPZignZXJyb3InKSAhPT0gLTE7XG59O1xuXG5kZXNjcmliZSgnRE9NIGFkYXB0ZXInLCAoKSA9PiB7XG4gIGl0KCdzYW5pdHkgLSBzaG91bGQgaW52YWxpZGF0ZSBhbiBpbWcgd2l0aG91dCBhbHQnLCBkb25lID0+IHtcbiAgICBjb25zdCBvcHRpb25zID0ge307XG4gICAgY29uc3QgcGljdHVyZSA9IG1ha2VQaWN0dXJlKFxuICAgICAgbWFrZVBpY3R1cmVUcmVlKGhhbmRsZSwgb3B0aW9ucylcbiAgICApO1xuICAgIHZhbGlkYXRvcih7IGRhdGE6IG1ha2VIVE1MKHBpY3R1cmUpIH0pLnRoZW4oKGRhdGE6IGFueSkgPT4ge1xuICAgICAgZG9uZSghaXNJbnZhbGlkKGRhdGEpKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBnZW5lcmF0ZSBhIHZhbGlkIHBpY3R1cmUgZWxlbWVudCB3aXRoIHdpZHRoIGFuZCBwaXhlbCBkZW5zaXR5JywgZG9uZSA9PiB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgIGFsdDogJ2Rvd250b3duJyxcbiAgICAgIHdpZHRoOiAnNzY4cHgnXG4gICAgfTtcbiAgICBjb25zdCBwaWN0dXJlID0gbWFrZVBpY3R1cmUoXG4gICAgICBtYWtlUGljdHVyZVRyZWUoaGFuZGxlLCBvcHRpb25zKVxuICAgICk7XG5cbiAgICB2YWxpZGF0b3IoeyBkYXRhOiBtYWtlSFRNTChwaWN0dXJlKSB9KS50aGVuKChkYXRhOiBhbnkpID0+IHtcbiAgICAgIGRvbmUoaXNJbnZhbGlkKGRhdGEpKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBnZW5lcmF0ZSBhIHZhbGlkIHBpY3R1cmUgZWxlbWVudCB3aXRoIDEgc2l6ZSBhbmQgd2lkdGggZGVzY3JpcHRvcnMnLCBkb25lID0+IHtcbiAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgYWx0OiAnZG93bnRvd24nLFxuICAgICAgc2l6ZXM6IHtcbiAgICAgICAgJyhtaW4td2lkdGg6IDY0MHB4KSc6ICc4MHZ3JyxcbiAgICAgICAgZmFsbGJhY2s6ICcxMDB2dydcbiAgICAgIH0sXG4gICAgICByZXNvbHV0aW9uczogWzU0MCwgNjcwLCAxMDgwXVxuICAgIH07XG4gICAgY29uc3QgcGljdHVyZSA9IG1ha2VQaWN0dXJlKFxuICAgICAgbWFrZVBpY3R1cmVUcmVlKGhhbmRsZSwgb3B0aW9ucylcbiAgICApO1xuICAgIHZhbGlkYXRvcih7IGRhdGE6IG1ha2VIVE1MKHBpY3R1cmUpIH0pLnRoZW4oKGRhdGE6IGFueSkgPT4ge1xuICAgICAgY29uc29sZS5sb2coZGF0YSwgaXNJbnZhbGlkKGRhdGEpKTtcbiAgICAgIGRvbmUoaXNJbnZhbGlkKGRhdGEpKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBnZW5lcmF0ZSBhIHZhbGlkIHBpY3R1cmUgZWxlbWVudCB3aXRoIDIgZm9ybWF0cyBhbmQgMiBzaXplcycsIGRvbmUgPT4ge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICBhbHQ6ICdkb3dudG93bicsXG4gICAgICBzaXplczoge1xuICAgICAgICAnKG1pbi13aWR0aDogNjQwcHgpJzogJzgwdncnLFxuICAgICAgICAnKG1pbi13aWR0aDogMzIwcHgpJzogJzcwMHB4JyxcbiAgICAgICAgZmFsbGJhY2s6ICcxMDB2dydcbiAgICAgIH0sXG4gICAgICBmb3JtYXRzOiBbJ3dlYnAnLCAnanBnJ11cbiAgICB9O1xuICAgIGNvbnN0IHBpY3R1cmUgPSBtYWtlUGljdHVyZShcbiAgICAgIG1ha2VQaWN0dXJlVHJlZShoYW5kbGUsIG9wdGlvbnMpXG4gICAgKTtcbiAgICB2YWxpZGF0b3IoeyBkYXRhOiBtYWtlSFRNTChwaWN0dXJlKSB9KS50aGVuKChkYXRhOiBhbnkpID0+IHtcbiAgICAgIGRvbmUoaXNJbnZhbGlkKGRhdGEpKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBnZW5lcmF0ZSBhIHZhbGlkIHBpY3R1cmUgZWxlbWVudCB3aXRoIDEgZm9ybWF0IGFuZCBmYWxsYmFjaycsIGRvbmUgPT4ge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICBhbHQ6ICdkb3dudG93bicsXG4gICAgICBzaXplczoge1xuICAgICAgICBmYWxsYmFjazogJzEwMHZ3J1xuICAgICAgfSxcbiAgICAgIGZvcm1hdHM6IFsnd2VicCcsICdqcGcnXVxuICAgIH07XG4gICAgY29uc3QgcGljdHVyZSA9IG1ha2VQaWN0dXJlKFxuICAgICAgbWFrZVBpY3R1cmVUcmVlKGhhbmRsZSwgb3B0aW9ucylcbiAgICApO1xuICAgIHZhbGlkYXRvcih7IGRhdGE6IG1ha2VIVE1MKHBpY3R1cmUpIH0pLnRoZW4oKGRhdGE6IGFueSkgPT4ge1xuICAgICAgZG9uZShpc0ludmFsaWQoZGF0YSkpO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGdlbmVyYXRlIGEgdmFsaWQgcGljdHVyZSBlbGVtZW50IHdpdGggMSBmb3JtYXQnLCBkb25lID0+IHtcbiAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgYWx0OiAnZG93bnRvd24nLFxuICAgICAgZm9ybWF0czogWyd3ZWJwJ11cbiAgICB9O1xuICAgIGNvbnN0IHBpY3R1cmUgPSBtYWtlUGljdHVyZShcbiAgICAgIG1ha2VQaWN0dXJlVHJlZShoYW5kbGUsIG9wdGlvbnMpXG4gICAgKTtcbiAgICB2YWxpZGF0b3IoeyBkYXRhOiBtYWtlSFRNTChwaWN0dXJlKSB9KS50aGVuKChkYXRhOiBhbnkpID0+IHtcbiAgICAgIGRvbmUoaXNJbnZhbGlkKGRhdGEpKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBnZW5lcmF0ZSBhIHZhbGlkIHBpY3R1cmUgZWxlbWVudCB3aXRoIGltZyBmYWxsYmFjayBzaXplIGFuZCAyIHdpZHRoIGRlc2NyaXB0b3JzJywgZG9uZSA9PiB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgIGFsdDogJ2Rvd250b3duJyxcbiAgICAgIHNpemVzOiB7XG4gICAgICAgIGZhbGxiYWNrOiAnMTAwdncnXG4gICAgICB9LFxuICAgICAgcmVzb2x1dGlvbnM6IFsnMzIwdycsICc2NDB3J11cbiAgICB9O1xuICAgIGNvbnN0IHBpY3R1cmUgPSBtYWtlUGljdHVyZShcbiAgICAgIG1ha2VQaWN0dXJlVHJlZShoYW5kbGUsIG9wdGlvbnMpXG4gICAgKTtcbiAgICB2YWxpZGF0b3IoeyBkYXRhOiBtYWtlSFRNTChwaWN0dXJlKSB9KS50aGVuKChkYXRhOiBhbnkpID0+IHtcbiAgICAgIGRvbmUoaXNJbnZhbGlkKGRhdGEpKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBnZW5lcmF0ZSBhIHZhbGlkIHBpY3R1cmUgZWxlbWVudCB3aXRoIDEgZmFsbGJhY2sgc2l6ZSBhbmQgMSBmb3JtYXQnLCBkb25lID0+IHtcbiAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgYWx0OiAnZG93bnRvd24nLFxuICAgICAgZm9ybWF0czogWyd3ZWJwJ10sXG4gICAgICByZXNvbHV0aW9uczogWzY0MF0sXG4gICAgICBzaXplczoge1xuICAgICAgICBmYWxsYmFjazogJzcwMHB4J1xuICAgICAgfVxuICAgIH07XG4gICAgY29uc3QgcGljdHVyZSA9IG1ha2VQaWN0dXJlKFxuICAgICAgbWFrZVBpY3R1cmVUcmVlKGhhbmRsZSwgb3B0aW9ucylcbiAgICApO1xuICAgIHZhbGlkYXRvcih7IGRhdGE6IG1ha2VIVE1MKHBpY3R1cmUpIH0pLnRoZW4oKGRhdGE6IGFueSkgPT4ge1xuICAgICAgZG9uZShpc0ludmFsaWQoZGF0YSkpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19