UNPKG

ngx-analog-wrist-watch

Version:

This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 8.2.14.

310 lines 46.9 kB
/** * @fileoverview added by tsickle * Generated from: lib/ngx-analog-wrist-watch.service.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Injectable } from '@angular/core'; import * as i0 from "@angular/core"; /** @type {?} */ var watchStraps = [ { styleClassName: ['strap-primary-top-left', 'border-color'] }, { styleClassName: ['strap-primary-top-middle', 'border-color'] }, { styleClassName: ['strap-primary-top-right', 'border-color'] }, { styleClassName: ['strap-secondary-top-left'] }, { styleClassName: ['strap-secondary-top-middle'] }, { styleClassName: ['strap-secondary-top-right'] }, { styleClassName: ['strap-tertiary-top-left'] }, { styleClassName: ['strap-tertiary-top-middle'] }, { styleClassName: ['strap-tertiary-top-right'] }, { styleClassName: ['strap-primary-bottom-left', 'border-color'] }, { styleClassName: ['strap-primary-bottom-middle', 'border-color'] }, { styleClassName: ['strap-primary-bottom-right', 'border-color'] }, { styleClassName: ['strap-secondary-bottom-left'] }, { styleClassName: ['strap-secondary-bottom-middle'] }, { styleClassName: ['strap-secondary-bottom-right'] }, { styleClassName: ['strap-tertiary-bottom-left'] }, { styleClassName: ['strap-tertiary-bottom-middle'] }, { styleClassName: ['strap-tertiary-bottom-right'] }, ]; /** @type {?} */ var dugHoles = ['topLeftDugHole', 'topRightDugHole', 'bottomLeftDugHole', 'bottomRightDugHole']; /** @type {?} */ var internalStyle = "\n:root {\n --color:#2F4F4F;\n --border-color:black;\n --border-green:green;\n --absolute:absolute;\n --transparent:transparent;\n}\nspan + .toggle-time {\n display:flex!important;\n}\ndiv .top-left-dughole::before{\n content: \"\";\n border-right: 15px solid var(--color);\n position: var(--absolute);\n left: 0px;\n border-top: 16px solid var(--transparent);\n border-bottom: 0px solid var(--color);\n width: 0px;\n bottom: 0px;\n}\ndiv .top-right-dughole::before{\n content: \"\";\n border-left: 15px solid var(--color);\n position: var(--absolute);\n left: 0px;\n border-top: 15px solid var(--transparent);\n border-bottom: 0px solid var(--color);\n bottom: 0px;\n}\n\ndiv .strap-primary-top-left {\n position: var(--absolute);\n left: 42%;\n top: 31%;\n height: 40px;\n background:var(--color);\n margin: 3px;\n width: 25px;\n}\n\ndiv .border-color{\n box-shadow: 0px 0px 1px 1px var(--border-green);\n}\n\ndiv .strap-primary-top-middle{\n position: var(--absolute);\n left: 47%;\n top: 30%;\n height: 40px;\n background:var(--color);\n margin: 1px;\n width: 38px;\n}\n\ndiv .strap-primary-top-right {\n position: var(--absolute);\n left: 53%;\n top: 201px;\n height: 42px;\n background:var(--color);\n width: 25px;\n margin: 6px;\n}\n\ndiv .bottom-left-dughole{\n position: var(--absolute);\n width: 15px;\n border-top: 54px solid rgb(47, 79, 79);\n border-left: 16px solid white;\n top: 64%;\n left: 37%;\n}\n\ndiv .bottom-left-dughole::before{\n content: \"\";\n border-right: 15px solid var(--color);\n position: var(--absolute);\n left: 0px;\n border-top: 0px solid var(--color);\n border-bottom: 14px solid var(--transparent);\n width: 0px;\n}\n\ndiv .strap-primary-bottom-left {\n position: var(--absolute);\n left: 42%;\n top: 444px;\n height: 35px;\n background:var(--color);\n margin: 3px;\n width: 25px;\n}\n\ndiv .strap-primary-bottom-middle{\n position: var(--absolute);\n left: 47%;\n top: 67%;\n height: 40px;\n background:var(--color);\n margin: 1px;\n width: 38px;\n}\n\ndiv .strap-primary-bottom-right {\n position: var(--absolute);\n left: 55%;\n top: 440px;\n height: 44px;\n background:var(--color);\n width: 25px;\n margin: -4px\n}\n\ndiv .bottom-right-dughole{\n position: var(--absolute);\n width: 15px;\n border-top: 61px solid rgb(47, 79, 79);\n border-right: 16px solid white;\n top: 408px;\n left: 57%;\n margin: 11px;\n border-top-left-radius: 19px;\n}\ndiv .bottom-right-dughole::before{\n content: \"\";\n border-left: 15px solid var(--color);\n position: var(--absolute);\n left: 0px;\n border-top: 0px solid var(--color);\n border-bottom: 14px solid var(--transparent);\n width: 0px;\n}\n div .strap-secondary-top-left{\n top: 133px;\n left: 241px;\n position: var(--absolute);\n width: 20px;\n height: 30px;\n border-bottom: 43px solid var(--color);\n border-left: 4px solid var(--transparent);\n}\n\ndiv .strap-secondary-top-middle{\n top: 150px;\n left: 265px;\n position: var(--absolute);\n width: 40px;\n height: 48px;\n background-color:var(--color);\n box-shadow: 0px 0px 0px 1px var(--border-green);\n}\n\ndiv .strap-secondary-top-right{\n top: 132px;\n left: 306px;\n position: var(--absolute);\n width: 20px;\n height: 29px;\n border-bottom: 43px solid var(--color);\n border-right: 4px solid var(--transparent);\n}\n\n\ndiv .strap-tertiary-top-left{\n top: 88px;\n left: 241px;\n position: var(--absolute);\n width: 20px;\n height: 30px;\n border-bottom: 43px solid var(--color);\n border-left: 4px solid var(--transparent);\n}\n\ndiv .strap-tertiary-top-middle{\n top: 100px;\n left: 265px;\n position: var(--absolute);\n width: 40px;\n height: 48px;\n background-color:var(--color);\n box-shadow: 0px 0px 0px 1px var(--border-green);\n}\n\ndiv .strap-tertiary-top-right{\n top: 87px;\n left: 306px;\n position: var(--absolute);\n width: 20px;\n height: 29px;\n border-bottom: 43px solid var(--color);\n border-right: 4px solid var(--transparent);\n}\n\ndiv .strap-secondary-bottom-left{\n top: 485px;\n left: 241px;\n position: var(--absolute);\n width: 20px;\n height: 30px;\n border-top: 43px solid var(--color);\n border-left: 4px solid var(--transparent);\n}\n\n\ndiv .strap-secondary-bottom-middle{\n top: 485px;\n left: 265px;\n position: var(--absolute);\n width: 40px;\n height: 48px;\n background-color:var(--color);\n box-shadow: 0px 0px 0px 1px var(--border-green);\n}\n\ndiv .strap-secondary-bottom-right{\n top: 483px;\n left: 306px;\n position: var(--absolute);\n width: 20px;\n height: 30px;\n border-top: 45px solid var(--color);\n border-right: 4px solid var(--transparent);\n}\n\ndiv .strap-tertiary-bottom-left{\n top: 530px;\n left: 241px;\n position: var(--absolute);\n width: 20px;\n height: 30px;\n border-top: 43px solid var(--color);\n border-left: 4px solid var(--transparent);\n}\n\ndiv .strap-tertiary-bottom-middle{\n top: 530px;\n left: 265px;\n position: var(--absolute);\n width: 40px;\n height: 48px;\n background-color:var(--color);\n box-shadow: 0px 0px 0px 1px var(--border-green);\n}\n\ndiv .strap-tertiary-bottom-right{\n top: 530px;\n left: 306px;\n position: var(--absolute);\n width: 20px;\n height: 30px;\n border-top: 45px solid var(--color);\n border-right: 4px solid var(--transparent);\n}\n\ndiv .hour-hand {\n border: 1px solid var(--border-color);\n position: var(--absolute);\n top: 61px;\n height: 40px;\n left: 82px;\n width: 5px;\n}\n\ndiv .hour-hand::before {\n position: var(--absolute);\n content: \"\";\n border-radius: 50%;\n width: 15px;\n height: 15px;\n border: 1px solid var(--border-color);\n top: -17px;\n left: -6px;\n}\n\ndiv .second-hand{\n position: var(--absolute);\n width: 112px;\n border-bottom: 1px solid black;\n left: 10px;\n}\ndiv .second-hand::after {\n content: \"\";\n width: 10px;\n background: var(--border-color);\n height: 10px;\n position: var(--absolute);\n left: 111px;\n top: -5px;\n border-radius: 50%;\n}\n\ndiv .second-hand::before {\n content: \"\";\n width: 15px;\n background: var(--border-color);\n height: 15px;\n position: var(--absolute);\n left: 23px;\n top: -7px;\n border-radius: 50%;\n background-image: radial-gradient(circle, black, white, black);\n}\n\ndiv .minute-hand {\n border: 1px solid var(--border-color);\n position: var(--absolute);\n top: 51px;\n height: 50px;\n left: 85px;\n width: 5px;\n}\n\ndiv .minute-hand::before {\n position: var(--absolute);\n content: \"\";\n border-right: 4px solid var(--transparent);\n border-left: 3px solid var(--transparent);\n top: -24px;\n left: -1px;\n border-bottom: 23px solid var(--border-color);\n}\n\ndiv .hour-hand-round {\n position: var(--absolute);\n height: 9px;\n border-left: 1px solid var(--border-color);\n left: 35%;\n top: -10px;\n}\n\ndiv .hour-hand-round::before {\n position: var(--absolute);\n content: \"\";\n height: 7px;\n border-left: 1px solid var(--border-color);\n right: 3px;\n top: -5px;\n transform: rotate(120deg);\n}\n\ndiv .hour-hand-round::after {\n position: var(--absolute);\n content: \"\";\n height: 7px;\n border-left: 1px solid var(--border-color);\n left: 2px;\n top: -5px;\n transform: rotate(63deg);\n}\n\ndiv .hour-hand-arrow{\n position: var(--absolute);\n content: \"\";\n border-right: 6px solid var(--transparent);\n border-left: 6px solid var(--transparent);\n top: -31px;\n left: -4px;\n border-bottom: 15px solid var(--border-color);\n border-bottom-left-radius: 6px;\n border-bottom-right-radius: 6px;\n}\n\ndiv .hour {\n transform-origin: 70% 85%;\n transition: all 0.05s;\n transform: rotate(90deg);\n transition-timing-function: cubic-bezier(0.1, 2.7, 0.58, 1);\n}\n\ndiv .hand {\n top: 51%;\n position: var(--absolute);\n transform-origin: 70%;\n transition: all 0.05s;\n transform: rotate(90deg);\n transition-timing-function: cubic-bezier(0.1, 2.7, 0.58, 1);\n}\n\ndiv .axis-circle {\n height: 10px;\n width: 10px;\n border: 5px solid var(--border-color);\n border-radius: 50%;\n position: var(--absolute);\n top: 85px;\n left: 78px;\n background-color: var(--border-color);\n z-index:1;\n }\n\ndiv .axis-circle .dot-puncture {\n z-index: 1;\n width: 6px;\n background: silver;\n height: 6px;\n position: var(--absolute);\n left: 2px;\n top: 2px;\n border-radius: 50%;\n }\n div .clock-crown {\n position :absolute;\n left:201px;\n top:51%;\n transform: rotate(90deg);\n z-index:1;\n }\n div .clock-crown::before {\n content:\"\";\n position :var(--absolute);\n width: 10px;\n height: 0;\n border-left: 2px solid var(--transparent);\n border-right: 2px solid var(--transparent);\n border-bottom: 10px solid var(--color);\n top:-10px;\n left:-1px;\n }\n div .spindle {\n position :absolute;\n left:216px;\n top:49%;\n transform: rotate(90deg);\n transition:all 2s;\n\n }\n div .spindle::after {\n content: \"\";\n position: var(--absolute);\n width: 4px;\n left: 8px;\n border-bottom: 14px solid var(--color);\n opacity:0\n }\n\n div .spindle-move::after {\n opacity:1;\n\n }\n\n div .clock-crown-drag {\n left:215px;\n }\n div .change-hour {\n transform-origin: 70% 85%;\n transition: all 0.05s;\n transform: rotate(90deg);\n transition-timing-function: cubic-bezier(0.1, 2.7, 0.58, 1);\n }\n"; var NgxAnalogWristWatchService = /** @class */ (function () { function NgxAnalogWristWatchService() { this.CLOCK_NUMBER = 12; this.inlineStyleInfo = { border: 'none', borderBottom: '2px solid teal', inputBorderBottom: '2px solid blue', outline: 'none', color: 'blue', fontSize: '18px', labelFontSize: '14px', left: '10px', bottom: '10px', relative: 'relative', absolute: 'absolute', display: 'inline-block', marginbottom: '25px', float: 'left', marginright: '25px', padding: '2rem', top: '15px', width: '250px', boxShadow: '#ded9d9 0px 3px 4px', boxWidth: '500px', boxHeight: '575px', inherit: 'inherit', transistionTop: 'top 2s cubic-bezier(0.53, 0.49, 0.35, 0.39) 0s', marginLeft: '-15px', iconTop: '24px', iconFontSize: '20px', boxDisplayNone: 'none', boxDisplayFlex: 'flex', justifyContent: 'center', alignItems: 'center', cursor: 'pointer', primaryWidth: '202px', primaryHeight: '202px', primaryBorderRadius: '50%', primaryBorder: '10px solid var(--color)', secondaryWidth: '193px', secondaryHeight: '193px', secondaryBorderRadius: '50%', secondaryBorder: '6px solid gray', thirdWidth: '184px', thirdHeight: '185px', thirdBorderRadius: '50%', thirdBorder: '5px solid var(--border-color)', thirdTop: '-1px', numLeft: '133px', numTop: '14px', clockNum: [ { left: '130px', top: '18px' }, { left: '160px', top: '49px', }, { left: '165px', top: '89px', }, { left: '151px', top: '128px', }, { left: '125px', top: '153px', }, { left: '86px', top: '162px', }, { left: '49px', top: '153px', }, { left: '19px', top: '127px', }, { left: '7px', top: '89px', }, { left: '13px', top: '48px', }, { left: '39px', top: '20px', }, { left: '81px', top: '3px', } ], beltTop: '-143px', beltLeft: '85px', beltWidth: '38px', beltHeight: '48px', beltBackgroundColor: '#2F4F4F', wrapWidth: '15px', wrapBorderBottom: '54px solid var(--color)', wrapBorderLeft: '16px solid white', wrapLeft: '37%', wrapTop: '207px', rightWrapWidth: '15px', rightBorderRightRadius: '9px', rightWrapBorderBottom: '63px solid var(--color)', rightWrapBorderright: '16px solid white', rightWrapLeft: '60%', rightWrapTop: '32%', rightWrapMargin: '-7px', rightBorderLeftRadius: '10px', }; this.watchElements = ['label', 'input', 'span', 'primaryCricle', 'secondaryCircle', 'teritaryCircle', 'clockBox', 'hourHand', 'minuteHand', 'secondHand']; } /** * @return {?} */ NgxAnalogWristWatchService.prototype.fetchInternalStyle = /** * @return {?} */ function () { return internalStyle; }; /** * @return {?} */ NgxAnalogWristWatchService.prototype.fetchInLineStyle = /** * @return {?} */ function () { return this.inlineStyleInfo; }; /** * @param {?} wrapper * @param {?} renderer * @return {?} */ NgxAnalogWristWatchService.prototype.createDugHoles = /** * @param {?} wrapper * @param {?} renderer * @return {?} */ function (wrapper, renderer) { /** @type {?} */ var styleToDugHole = {}; dugHoles.forEach((/** * @param {?} dugHole * @return {?} */ function (dugHole) { /** @type {?} */ var dugHol = renderer.createElement('span'); renderer.appendChild(wrapper, dugHol); styleToDugHole[dugHole] = dugHol; })); return styleToDugHole; }; /** * @param {?} wrapper * @param {?} renderer * @return {?} */ NgxAnalogWristWatchService.prototype.createWatchStraps = /** * @param {?} wrapper * @param {?} renderer * @return {?} */ function (wrapper, renderer) { /** @type {?} */ var styleToWatchStrap = {}; watchStraps.forEach((/** * @param {?} watchStrap * @param {?} index * @return {?} */ function (watchStrap, index) { /** @type {?} */ var strap = renderer.createElement('span'); renderer.appendChild(wrapper, strap); styleToWatchStrap['elementName' + index] = strap; styleToWatchStrap['className' + index] = watchStrap.styleClassName.map((/** * @param {?} className * @return {?} */ function (className) { return className; })); })); return styleToWatchStrap; }; /** * @param {?} thirdCircle * @param {?} applyStyleInClockNum * @param {?} renderer * @return {?} */ NgxAnalogWristWatchService.prototype.addClockNumbers = /** * @param {?} thirdCircle * @param {?} applyStyleInClockNum * @param {?} renderer * @return {?} */ function (thirdCircle, applyStyleInClockNum, renderer) { for (var pos = 0; pos < this.CLOCK_NUMBER; pos++) { /** @type {?} */ var numSpan = renderer.createElement('span'); /** @type {?} */ var num = renderer.createText((pos + 1).toString()); renderer.appendChild(numSpan, num); renderer.appendChild(thirdCircle, numSpan); renderer.setProperty(numSpan, '[timeChange]', 'onNumClick()'); applyStyleInClockNum(numSpan, pos, this.inlineStyleInfo); } }; NgxAnalogWristWatchService.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] } ]; /** @nocollapse */ NgxAnalogWristWatchService.ctorParameters = function () { return []; }; /** @nocollapse */ NgxAnalogWristWatchService.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function NgxAnalogWristWatchService_Factory() { return new NgxAnalogWristWatchService(); }, token: NgxAnalogWristWatchService, providedIn: "root" }); return NgxAnalogWristWatchService; }()); export { NgxAnalogWristWatchService }; if (false) { /** @type {?} */ NgxAnalogWristWatchService.prototype.CLOCK_NUMBER; /** @type {?} */ NgxAnalogWristWatchService.prototype.inlineStyleInfo; /** @type {?} */ NgxAnalogWristWatchService.prototype.watchElements; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWFuYWxvZy13cmlzdC13YXRjaC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LWFuYWxvZy13cmlzdC13YXRjaC8iLCJzb3VyY2VzIjpbImxpYi9uZ3gtYW5hbG9nLXdyaXN0LXdhdGNoLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7SUFDckMsV0FBVyxHQUFHO0lBQ2xCO1FBQ0UsY0FBYyxFQUFFLENBQUMsd0JBQXdCLEVBQUUsY0FBYyxDQUFDO0tBQzNEO0lBQ0Q7UUFDRSxjQUFjLEVBQUUsQ0FBQywwQkFBMEIsRUFBRSxjQUFjLENBQUM7S0FDN0Q7SUFDRDtRQUVFLGNBQWMsRUFBRSxDQUFDLHlCQUF5QixFQUFFLGNBQWMsQ0FBQztLQUM1RDtJQUNEO1FBRUUsY0FBYyxFQUFFLENBQUMsMEJBQTBCLENBQUM7S0FDN0M7SUFDRDtRQUVFLGNBQWMsRUFBRSxDQUFDLDRCQUE0QixDQUFDO0tBQy9DO0lBQ0Q7UUFFRSxjQUFjLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQztLQUM5QztJQUNEO1FBQ0UsY0FBYyxFQUFFLENBQUMseUJBQXlCLENBQUM7S0FDNUM7SUFDRDtRQUVFLGNBQWMsRUFBRSxDQUFDLDJCQUEyQixDQUFDO0tBQzlDO0lBQ0Q7UUFFRSxjQUFjLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQztLQUM3QztJQUNEO1FBRUUsY0FBYyxFQUFFLENBQUMsMkJBQTJCLEVBQUUsY0FBYyxDQUFDO0tBQzlEO0lBQ0Q7UUFFRSxjQUFjLEVBQUUsQ0FBQyw2QkFBNkIsRUFBRSxjQUFjLENBQUM7S0FDaEU7SUFDRDtRQUVFLGNBQWMsRUFBRSxDQUFDLDRCQUE0QixFQUFFLGNBQWMsQ0FBQztLQUMvRDtJQUNEO1FBQ0UsY0FBYyxFQUFFLENBQUMsNkJBQTZCLENBQUM7S0FDaEQ7SUFDRDtRQUNFLGNBQWMsRUFBRSxDQUFDLCtCQUErQixDQUFDO0tBQ2xE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QUcsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNyRCxRQUFRLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQztZQUNuQyxRQUFRLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUMzQyxRQUFRLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxjQUFjLEVBQUUsY0FBYyxDQUFDLENBQUM7WUFDOUQsb0JBQW9CLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7U0FDMUQ7SUFDSCxDQUFDOztnQkF2S0YsVUFBVSxTQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7Ozs7cUNBM2dCRDtDQWtyQkMsQUF6S0QsSUF5S0M7U0F0S1ksMEJBQTBCOzs7SUFDckMsa0RBQWtCOztJQUNsQixxREFtSEU7O0lBQ0YsbURBQzJGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuY29uc3Qgd2F0Y2hTdHJhcHMgPSBbXG4gIHtcbiAgICBzdHlsZUNsYXNzTmFtZTogWydzdHJhcC1wcmltYXJ5LXRvcC1sZWZ0JywgJ2JvcmRlci1jb2xvciddXG4gIH0sXG4gIHtcbiAgICBzdHlsZUNsYXNzTmFtZTogWydzdHJhcC1wcmltYXJ5LXRvcC1taWRkbGUnLCAnYm9yZGVyLWNvbG9yJ11cbiAgfSxcbiAge1xuXG4gICAgc3R5bGVDbGFzc05hbWU6IFsnc3RyYXAtcHJpbWFyeS10b3AtcmlnaHQnLCAnYm9yZGVyLWNvbG9yJ11cbiAgfSxcbiAge1xuXG4gICAgc3R5bGVDbGFzc05hbWU6IFsnc3RyYXAtc2Vjb25kYXJ5LXRvcC1sZWZ0J11cbiAgfSxcbiAge1xuXG4gICAgc3R5bGVDbGFzc05hbWU6IFsnc3RyYXAtc2Vjb25kYXJ5LXRvcC1taWRkbGUnXVxuICB9LFxuICB7XG5cbiAgICBzdHlsZUNsYXNzTmFtZTogWydzdHJhcC1zZWNvbmRhcnktdG9wLXJpZ2h0J11cbiAgfSxcbiAge1xuICAgIHN0eWxlQ2xhc3NOYW1lOiBbJ3N0cmFwLXRlcnRpYXJ5LXRvcC1sZWZ0J11cbiAgfSxcbiAge1xuXG4gICAgc3R5bGVDbGFzc05hbWU6IFsnc3RyYXAtdGVydGlhcnktdG9wLW1pZGRsZSddXG4gIH0sXG4gIHtcblxuICAgIHN0eWxlQ2xhc3NOYW1lOiBbJ3N0cmFwLXRlcnRpYXJ5LXRvcC1yaWdodCddXG4gIH0sXG4gIHtcblxuICAgIHN0eWxlQ2xhc3NOYW1lOiBbJ3N0cmFwLXByaW1hcnktYm90dG9tLWxlZnQnLCAnYm9yZGVyLWNvbG9yJ11cbiAgfSxcbiAge1xuXG4gICAgc3R5bGVDbGFzc05hbWU6IFsnc3RyYXAtcHJpbWFyeS1ib3R0b20tbWlkZGxlJywgJ2JvcmRlci1jb2xvciddXG4gIH0sXG4gIHtcblxuICAgIHN0eWxlQ2xhc3NOYW1lOiBbJ3N0cmFwLXByaW1hcnktYm90dG9tLXJpZ2h0JywgJ2JvcmRlci1jb2xvciddXG4gIH0sXG4gIHtcbiAgICBzdHlsZUNsYXNzTmFtZTogWydzdHJhcC1zZWNvbmRhcnktYm90dG9tLWxlZnQnXVxuICB9LFxuICB7XG4gICAgc3R5bGVDbGFzc05hbWU6IFsnc3RyYXAtc2Vjb25kYXJ5LWJvdHRvbS1taWRkbGUnXVxuICB9LFxuICB7XG4gICAgc3R5bGVDbGFzc05hbWU6IFsnc3RyYXAtc2Vjb25kYXJ5LWJvdHRvbS1yaWdodCddXG4gIH0sXG4gIHtcblxuICAgIHN0eWxlQ2xhc3NOYW1lOiBbJ3N0cmFwLXRlcnRpYXJ5LWJvdHRvbS1sZWZ0J11cbiAgfSxcbiAge1xuICAgIHN0eWxlQ2xhc3NOYW1lOiBbJ3N0cmFwLXRlcnRpYXJ5LWJvdHRvbS1taWRkbGUnXVxuICB9LFxuICB7XG5cbiAgICBzdHlsZUNsYXNzTmFtZTogWydzdHJhcC10ZXJ0aWFyeS1ib3R0b20tcmlnaHQnXVxuICB9LFxuXG5dO1xuY29uc3QgZHVnSG9sZXMgPSBbJ3RvcExlZnREdWdIb2xlJywgJ3RvcFJpZ2h0RHVnSG9sZScsICdib3R0b21MZWZ0RHVnSG9sZScsICdib3R0b21SaWdodER1Z0hvbGUnXTtcbmNvbnN0IGludGVybmFsU3R5bGUgPSAgYFxuOnJvb3Qge1xuICAtLWNvbG9yOiMyRjRGNEY7XG4gIC0tYm9yZGVyLWNvbG9yOmJsYWNrO1xuICAtLWJvcmRlci1ncmVlbjpncmVlbjtcbiAgLS1hYnNvbHV0ZTphYnNvbHV0ZTtcbiAgLS10cmFuc3BhcmVudDp0cmFuc3BhcmVudDtcbn1cbnNwYW4gKyAudG9nZ2xlLXRpbWUge1xuICAgICAgZGlzcGxheTpmbGV4IWltcG9ydGFudDtcbn1cbmRpdiAudG9wLWxlZnQtZHVnaG9sZTo6YmVmb3Jle1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgYm9yZGVyLXJpZ2h0OiAxNXB4IHNvbGlkIHZhcigtLWNvbG9yKTtcbiAgICBwb3NpdGlvbjogdmFyKC0tYWJzb2x1dGUpO1xuICAgIGxlZnQ6IDBweDtcbiAgICBib3JkZXItdG9wOiAxNnB4IHNvbGlkIHZhcigtLXRyYW5zcGFyZW50KTtcbiAgICBib3JkZXItYm90dG9tOiAwcHggc29saWQgdmFyKC0tY29sb3IpO1xuICAgIHdpZHRoOiAwcHg7XG4gICAgYm90dG9tOiAwcHg7XG59XG5kaXYgLnRvcC1yaWdodC1kdWdob2xlOjpiZWZvcmV7XG4gIGNvbnRlbnQ6IFwiXCI7XG4gIGJvcmRlci1sZWZ0OiAxNXB4IHNvbGlkIHZhcigtLWNvbG9yKTtcbiAgcG9zaXRpb246IHZhcigtLWFic29sdXRlKTtcbiAgbGVmdDogMHB4O1xuICBib3JkZXItdG9wOiAxNXB4IHNvbGlkIHZhcigtLXRyYW5zcGFyZW50KTtcbiAgYm9yZGVyLWJvdHRvbTogMHB4IHNvbGlkIHZhcigtLWNvbG9yKTtcbiAgYm90dG9tOiAwcHg7XG59XG5cbmRpdiAuc3RyYXAtcHJpbWFyeS10b3AtbGVmdCB7XG4gICAgcG9zaXRpb246IHZhcigtLWFic29sdXRlKTtcbiAgICBsZWZ0OiA0MiU7XG4gICAgdG9wOiAzMSU7XG4gICAgaGVpZ2h0OiA0MHB4O1xuICAgIGJhY2tncm91bmQ6dmFyKC0tY29sb3IpO1xuICAgIG1hcmdpbjogM3B4O1xuICAgIHdpZHRoOiAyNXB4O1xufVxuXG5kaXYgLmJvcmRlci1jb2xvcntcbiAgICBib3gtc2hhZG93OiAwcHggMHB4IDFweCAxcHggdmFyKC0tYm9yZGVyLWdyZWVuKTtcbn1cblxuZGl2IC5zdHJhcC1wcmltYXJ5LXRvcC1taWRkbGV7XG4gICAgcG9zaXRpb246IHZhcigtLWFic29sdXRlKTtcbiAgICBsZWZ0OiA0NyU7XG4gICAgdG9wOiAzMCU7XG4gICAgaGVpZ2h0OiA0MHB4O1xuICAgIGJhY2tncm91bmQ6dmFyKC0tY29sb3IpO1xuICAgIG1hcmdpbjogMXB4O1xuICAgIHdpZHRoOiAzOHB4O1xufVxuXG5kaXYgLnN0cmFwLXByaW1hcnktdG9wLXJpZ2h0IHtcbiAgICBwb3NpdGlvbjogdmFyKC0tYWJzb2x1dGUpO1xuICAgIGxlZnQ6IDUzJTtcbiAgICB0b3A6IDIwMXB4O1xuICAgIGhlaWdodDogNDJweDtcbiAgICBiYWNrZ3JvdW5kOnZhcigtLWNvbG9yKTtcbiAgICB3aWR0aDogMjVweDtcbiAgICBtYXJnaW46IDZweDtcbn1cblxuZGl2IC5ib3R0b20tbGVmdC1kdWdob2xle1xuICAgcG9zaXRpb246IHZhcigtLWFic29sdXRlKTtcbiAgIHdpZHRoOiAxNXB4O1xuICAgYm9yZGVyLXRvcDogNTRweCBzb2xpZCByZ2IoNDcsIDc5LCA3OSk7XG4gICBib3JkZXItbGVmdDogMTZweCBzb2xpZCB3aGl0ZTtcbiAgIHRvcDogNjQlO1xuICAgbGVmdDogMzclO1xufVxuXG5kaXYgLmJvdHRvbS1sZWZ0LWR1Z2hvbGU6OmJlZm9yZXtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGJvcmRlci1yaWdodDogMTVweCBzb2xpZCB2YXIoLS1jb2xvcik7XG4gICAgcG9zaXRpb246IHZhcigtLWFic29sdXRlKTtcbiAgICBsZWZ0OiAwcHg7XG4gICAgYm9yZGVyLXRvcDogMHB4IHNvbGlkIHZhcigtLWNvbG9yKTtcbiAgICBib3JkZXItYm90dG9tOiAxNHB4IHNvbGlkIHZhcigtLXRyYW5zcGFyZW50KTtcbiAgICB3aWR0aDogMHB4O1xufVxuXG5kaXYgLnN0cmFwLXByaW1hcnktYm90dG9tLWxlZnQge1xuICAgIHBvc2l0aW9uOiB2YXIoLS1hYnNvbHV0ZSk7XG4gICAgbGVmdDogNDIlO1xuICAgIHRvcDogNDQ0cHg7XG4gICAgaGVpZ2h0OiAzNXB4O1xuICAgIGJhY2tncm91bmQ6dmFyKC0tY29sb3IpO1xuICAgIG1hcmdpbjogM3B4O1xuICAgIHdpZHRoOiAyNXB4O1xufVxuXG5kaXYgLnN0cmFwLXByaW1hcnktYm90dG9tLW1pZGRsZXtcbiAgICBwb3NpdGlvbjogdmFyKC0tYWJzb2x1dGUpO1xuICAgIGxlZnQ6IDQ3JTtcbiAgICB0b3A6IDY3JTtcbiAgICBoZWlnaHQ6IDQwcHg7XG4gICAgYmFja2dyb3VuZDp2YXIoLS1jb2xvcik7XG4gICAgbWFyZ2luOiAxcHg7XG4gICAgd2lkdGg6IDM4cHg7XG59XG5cbmRpdiAuc3RyYXAtcHJpbWFyeS1ib3R0b20tcmlnaHQge1xuICAgIHBvc2l0aW9uOiB2YXIoLS1hYnNvbHV0ZSk7XG4gICAgbGVmdDogNTUlO1xuICAgIHRvcDogNDQwcHg7XG4gICAgaGVpZ2h0OiA0NHB4O1xuICAgIGJhY2tncm91bmQ6dmFyKC0tY29sb3IpO1xuICAgIHdpZHRoOiAyNXB4O1xuICAgIG1hcmdpbjogLTRweFxufVxuXG5kaXYgLmJvdHRvbS1yaWdodC1kdWdob2xle1xuICBwb3NpdGlvbjogdmFyKC0tYWJzb2x1dGUpO1xuICB3aWR0aDogMTVweDtcbiAgYm9yZGVyLXRvcDogNjFweCBzb2xpZCByZ2IoNDcsIDc5LCA3OSk7XG4gIGJvcmRlci1yaWdodDogMTZweCBzb2xpZCB3aGl0ZTtcbiAgdG9wOiA0MDhweDtcbiAgbGVmdDogNTclO1xuICBtYXJnaW46IDExcHg7XG4gIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDE5cHg7XG59XG5kaXYgLmJvdHRvbS1yaWdodC1kdWdob2xlOjpiZWZvcmV7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBib3JkZXItbGVmdDogMTVweCBzb2xpZCB2YXIoLS1jb2xvcik7XG4gICAgcG9zaXRpb246IHZhcigtLWFic29sdXRlKTtcbiAgICBsZWZ0OiAwcHg7XG4gICAgYm9yZGVyLXRvcDogMHB4IHNvbGlkIHZhcigtLWNvbG9yKTtcbiAgICBib3JkZXItYm90dG9tOiAxNHB4IHNvbGlkIHZhcigtLXRyYW5zcGFyZW50KTtcbiAgICB3aWR0aDogMHB4O1xufVxuIGRpdiAuc3RyYXAtc2Vjb25kYXJ5LXRvcC1sZWZ0e1xuICAgIHRvcDogMTMzcHg7XG4gICAgbGVmdDogMjQxcHg7XG4gICAgcG9zaXRpb246IHZhcigtLWFic29sdXRlKTtcbiAgICB3aWR0aDogMjBweDtcbiAgICBoZWlnaHQ6IDMwcHg7XG4gICAgYm9yZGVyLWJvdHRvbTogNDNweCBzb2xpZCB2YXIoLS1jb2xvcik7XG4gICAgYm9yZGVyLWxlZnQ6IDRweCBzb2xpZCB2YXIoLS10cmFuc3BhcmVudCk7XG59XG5cbmRpdiAuc3RyYXAtc2Vjb25kYXJ5LXRvcC1taWRkbGV7XG4gICAgdG9wOiAxNTBweDtcbiAgICBsZWZ0OiAyNjVweDtcbiAgICBwb3NpdGlvbjogdmFyKC0tYWJzb2x1dGUpO1xuICAgIHdpZHRoOiA0MHB4O1xuICAgIGhlaWdodDogNDhweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNvbG9yKTtcbiAgICBib3gtc2hhZG93OiAwcHggMHB4IDBweCAxcHggdmFyKC0tYm9yZGVyLWdyZWVuKTtcbn1cblxuZGl2IC5zdHJhcC1zZWNvbmRhcnktdG9wLXJpZ2h0e1xuICAgIHRvcDogMTMycHg7XG4gICAgbGVmdDogMzA2cHg7XG4gICAgcG9zaXRpb246IHZhcigtLWFic29sdXRlKTtcbiAgICB3aWR0aDogMjBweDtcbiAgICBoZWlnaHQ6IDI5cHg7XG4gICAgYm9yZGVyLWJvdHRvbTogNDNweCBzb2xpZCB2YXIoLS1jb2xvcik7XG4gICAgYm9yZGVyLXJpZ2h0OiA0cHggc29saWQgdmFyKC0tdHJhbnNwYXJlbnQpO1xufVxuXG5cbmRpdiAuc3RyYXAtdGVydGlhcnktdG9wLWxlZnR7XG4gIHRvcDogODhweDtcbiAgbGVmdDogMjQxcHg7XG4gIHBvc2l0aW9uOiB2YXIoLS1hYnNvbHV0ZSk7XG4gIHdpZHRoOiAyMHB4O1xuICBoZWlnaHQ6IDMwcHg7XG4gIGJvcmRlci1ib3R0b206IDQzcHggc29saWQgdmFyKC0tY29sb3IpO1xuICBib3JkZXItbGVmdDogNHB4IHNvbGlkIHZhcigtLXRyYW5zcGFyZW50KTtcbn1cblxuZGl2IC5zdHJhcC10ZXJ0aWFyeS10b3AtbWlkZGxle1xuICB0b3A6IDEwMHB4O1xuICBsZWZ0OiAyNjVweDtcbiAgcG9zaXRpb246IHZhcigtLWFic29sdXRlKTtcbiAgd2lkdGg6IDQwcHg7XG4gIGhlaWdodDogNDhweDtcbiAgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jb2xvcik7XG4gIGJveC1zaGFkb3c6IDBweCAwcHggMHB4IDFweCB2YXIoLS1ib3JkZXItZ3JlZW4pO1xufVxuXG5kaXYgLnN0cmFwLXRlcnRpYXJ5LXRvcC1yaWdodHtcbiAgdG9wOiA4N3B4O1xuICBsZWZ0OiAzMDZweDtcbiAgcG9zaXRpb246IHZhcigtLWFic29sdXRlKTtcbiAgd2lkdGg6IDIwcHg7XG4gIGhlaWdodDogMjlweDtcbiAgYm9yZGVyLWJvdHRvbTogNDNweCBzb2xpZCB2YXIoLS1jb2xvcik7XG4gIGJvcmRlci1yaWdodDogNHB4IHNvbGlkIHZhcigtLXRyYW5zcGFyZW50KTtcbn1cblxuZGl2IC5zdHJhcC1zZWNvbmRhcnktYm90dG9tLWxlZnR7XG4gIHRvcDogNDg1cHg7XG4gIGxlZnQ6IDI0MXB4O1xuICBwb3NpdGlvbjogdmFyKC0tYWJzb2x1dGUpO1xuICB3aWR0aDogMjBweDtcbiAgaGVpZ2h0OiAzMHB4O1xuICBib3JkZXItdG9wOiA0M3B4IHNvbGlkIHZhcigtLWNvbG9yKTtcbiAgYm9yZGVyLWxlZnQ6IDRweCBzb2xpZCB2YXIoLS10cmFuc3BhcmVudCk7XG59XG5cblxuZGl2IC5zdHJhcC1zZWNvbmRhcnktYm90dG9tLW1pZGRsZXtcbiAgICB0b3A6IDQ4NXB4O1xuICAgIGxlZnQ6IDI2NXB4O1xuICAgIHBvc2l0aW9uOiB2YXIoLS1hYnNvbHV0ZSk7XG4gICAgd2lkdGg6IDQwcHg7XG4gICAgaGVpZ2h0OiA0OHB4O1xuICAgIGJhY2tncm91bmQtY29sb3I6dmFyKC0tY29sb3IpO1xuICAgIGJveC1zaGFkb3c6IDBweCAwcHggMHB4IDFweCB2YXIoLS1ib3JkZXItZ3JlZW4pO1xufVxuXG5kaXYgLnN0cmFwLXNlY29uZGFyeS1ib3R0b20tcmlnaHR7XG4gIHRvcDogNDgzcHg7XG4gIGxlZnQ6IDMwNnB4O1xuICBwb3NpdGlvbjogdmFyKC0tYWJzb2x1dGUpO1xuICB3aWR0aDogMjBweDtcbiAgaGVpZ2h0OiAzMHB4O1xuICBib3JkZXItdG9wOiA0NXB4IHNvbGlkIHZhcigtLWNvbG9yKTtcbiAgYm9yZGVyLXJpZ2h0OiA0cHggc29saWQgdmFyKC0tdHJhbnNwYXJlbnQpO1xufVxuXG5kaXYgLnN0cmFwLXRlcnRpYXJ5LWJvdHRvbS1sZWZ0e1xuICB0b3A6IDUzMHB4O1xuICBsZWZ0OiAyNDFweDtcbiAgcG9zaXRpb246IHZhcigtLWFic29sdXRlKTtcbiAgd2lkdGg6IDIwcHg7XG4gIGhlaWdodDogMzBweDtcbiAgYm9yZGVyLXRvcDogNDNweCBzb2xpZCB2YXIoLS1jb2xvcik7XG4gIGJvcmRlci1sZWZ0OiA0cHggc29saWQgdmFyKC0tdHJhbnNwYXJlbnQpO1xufVxuXG5kaXYgLnN0cmFwLXRlcnRpYXJ5LWJvdHRvbS1taWRkbGV7XG4gIHRvcDogNTMwcHg7XG4gIGxlZnQ6IDI2NXB4O1xuICBwb3NpdGlvbjogdmFyKC0tYWJzb2x1dGUpO1xuICB3aWR0aDogNDBweDtcbiAgaGVpZ2h0OiA0OHB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNvbG9yKTtcbiAgYm94LXNoYWRvdzogMHB4IDBweCAwcHggMXB4IHZhcigtLWJvcmRlci1ncmVlbik7XG59XG5cbmRpdiAuc3RyYXAtdGVydGlhcnktYm90dG9tLXJpZ2h0e1xuICB0b3A6IDUzMHB4O1xuICBsZWZ0OiAzMDZweDtcbiAgcG9zaXRpb246IHZhcigtLWFic29sdXRlKTtcbiAgd2lkdGg6IDIwcHg7XG4gIGhlaWdodDogMzBweDtcbiAgYm9yZGVyLXRvcDogNDVweCBzb2xpZCB2YXIoLS1jb2xvcik7XG4gIGJvcmRlci1yaWdodDogNHB4IHNvbGlkIHZhcigtLXRyYW5zcGFyZW50KTtcbn1cblxuZGl2IC5ob3VyLWhhbmQge1xuICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWNvbG9yKTtcbiAgICBwb3NpdGlvbjogdmFyKC0tYWJzb2x1dGUpO1xuICAgIHRvcDogNjFweDtcbiAgICBoZWlnaHQ6IDQwcHg7XG4gICAgbGVmdDogODJweDtcbiAgICB3aWR0aDogNXB4O1xufVxuXG5kaXYgLmhvdXItaGFuZDo6YmVmb3JlIHtcbiAgcG9zaXRpb246IHZhcigtLWFic29sdXRlKTtcbiAgY29udGVudDogXCJcIjtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICB3aWR0aDogMTVweDtcbiAgaGVpZ2h0OiAxNXB4O1xuICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IpO1xuICB0b3A6IC0xN3B4O1xuICBsZWZ0OiAtNnB4O1xufVxuXG5kaXYgLnNlY29uZC1oYW5ke1xuICAgIHBvc2l0aW9uOiB2YXIoLS1hYnNvbHV0ZSk7XG4gICAgd2lkdGg6IDExMnB4O1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBibGFjaztcbiAgICBsZWZ0OiAxMHB4O1xufVxuZGl2IC5zZWNvbmQtaGFuZDo6YWZ0ZXIge1xuICBjb250ZW50OiBcIlwiO1xuICB3aWR0aDogMTBweDtcbiAgYmFja2dyb3VuZDogdmFyKC0tYm9yZGVyLWNvbG9yKTtcbiAgaGVpZ2h0OiAxMHB4O1xuICBwb3NpdGlvbjogdmFyKC0tYWJzb2x1dGUpO1xuICBsZWZ0OiAxMTFweDtcbiAgdG9wOiAtNXB4O1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG59XG5cbmRpdiAuc2Vjb25kLWhhbmQ6OmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXCI7XG4gIHdpZHRoOiAxNXB4O1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1ib3JkZXItY29sb3IpO1xuICBoZWlnaHQ6IDE1cHg7XG4gIHBvc2l0aW9uOiB2YXIoLS1hYnNvbHV0ZSk7XG4gIGxlZnQ6IDIzcHg7XG4gIHRvcDogLTdweDtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBiYWNrZ3JvdW5kLWltYWdlOiByYWRpYWwtZ3JhZGllbnQoY2lyY2xlLCBibGFjaywgd2hpdGUsIGJsYWNrKTtcbn1cblxuZGl2IC5taW51dGUtaGFuZCB7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWNvbG9yKTtcbiAgICBwb3NpdGlvbjogdmFyKC0tYWJzb2x1dGUpO1xuICAgIHRvcDogNTFweDtcbiAgICBoZWlnaHQ6IDUwcHg7XG4gICAgbGVmdDogODVweDtcbiAgICB3aWR0aDogNXB4O1xufVxuXG5kaXYgLm1pbnV0ZS1oYW5kOjpiZWZvcmUge1xuICAgIHBvc2l0aW9uOiB2YXIoLS1hYnNvbHV0ZSk7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBib3JkZXItcmlnaHQ6IDRweCBzb2xpZCB2YXIoLS10cmFuc3BhcmVudCk7XG4gICAgYm9yZGVyLWxlZnQ6IDNweCBzb2xpZCB2YXIoLS10cmFuc3BhcmVudCk7XG4gICAgdG9wOiAtMjRweDtcbiAgICBsZWZ0OiAtMXB4O1xuICAgIGJvcmRlci1ib3R0b206IDIzcHggc29saWQgdmFyKC0tYm9yZGVyLWNvbG9yKTtcbn1cblxuZGl2IC5ob3VyLWhhbmQtcm91bmQge1xuICBwb3NpdGlvbjogdmFyKC0tYWJzb2x1dGUpO1xuICBoZWlnaHQ6IDlweDtcbiAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IpO1xuICBsZWZ0OiAzNSU7XG4gIHRvcDogLTEwcHg7XG59XG5cbmRpdiAuaG91ci1oYW5kLXJvdW5kOjpiZWZvcmUge1xuICAgIHBvc2l0aW9uOiB2YXIoLS1hYnNvbHV0ZSk7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBoZWlnaHQ6IDdweDtcbiAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1jb2xvcik7XG4gICAgcmlnaHQ6IDNweDtcbiAgICB0b3A6IC01cHg7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMTIwZGVnKTtcbn1cblxuZGl2IC5ob3VyLWhhbmQtcm91bmQ6OmFmdGVyIHtcbiAgICBwb3NpdGlvbjogdmFyKC0tYWJzb2x1dGUpO1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgaGVpZ2h0OiA3cHg7XG4gICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IpO1xuICAgIGxlZnQ6IDJweDtcbiAgICB0b3A6IC01cHg7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoNjNkZWcpO1xufVxuXG5kaXYgLmhvdXItaGFuZC1hcnJvd3tcbiAgcG9zaXRpb246IHZhcigtLWFic29sdXRlKTtcbiAgY29udGVudDogXCJcIjtcbiAgYm9yZGVyLXJpZ2h0OiA2cHggc29saWQgdmFyKC0tdHJhbnNwYXJlbnQpO1xuICBib3JkZXItbGVmdDogNnB4IHNvbGlkIHZhcigtLXRyYW5zcGFyZW50KTtcbiAgdG9wOiAtMzFweDtcbiAgbGVmdDogLTRweDtcbiAgYm9yZGVyLWJvdHRvbTogMTVweCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IpO1xuICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiA2cHg7XG4gIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiA2cHg7XG59XG5cbmRpdiAuaG91ciB7XG4gICAgdHJhbnNmb3JtLW9yaWdpbjogNzAlIDg1JTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4wNXM7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpO1xuICAgIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4xLCAyLjcsIDAuNTgsIDEpO1xufVxuXG5kaXYgLmhhbmQge1xuICB0b3A6IDUxJTtcbiAgcG9zaXRpb246IHZhcigtLWFic29sdXRlKTtcbiAgdHJhbnNmb3JtLW9yaWdpbjogNzAlO1xuICB0cmFuc2l0aW9uOiBhbGwgMC4wNXM7XG4gIHRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTtcbiAgdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjEsIDIuNywgMC41OCwgMSk7XG59XG5cbmRpdiAuYXhpcy1jaXJjbGUge1xuICBoZWlnaHQ6IDEwcHg7XG4gIHdpZHRoOiAxMHB4O1xuICBib3JkZXI6IDVweCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IpO1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIHBvc2l0aW9uOiB2YXIoLS1hYnNvbHV0ZSk7XG4gIHRvcDogODVweDtcbiAgbGVmdDogNzhweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYm9yZGVyLWNvbG9yKTtcbiAgei1pbmRleDoxO1xuIH1cblxuZGl2IC5heGlzLWNpcmNsZSAuZG90LXB1bmN0dXJlIHtcbiAgei1pbmRleDogMTtcbiAgd2lkdGg6IDZweDtcbiAgYmFja2dyb3VuZDogc2lsdmVyO1xuICBoZWlnaHQ6IDZweDtcbiAgcG9zaXRpb246IHZhcigtLWFic29sdXRlKTtcbiAgbGVmdDogMnB4O1xuICB0b3A6IDJweDtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuIH1cbiBkaXYgLmNsb2NrLWNyb3duIHtcbiAgcG9zaXRpb24gOmFic29sdXRlO1xuICBsZWZ0OjIwMXB4O1xuICB0b3A6NTElO1xuICB0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7XG4gIHotaW5kZXg6MTtcbiB9XG4gZGl2IC5jbG9jay1jcm93bjo6YmVmb3JlIHtcbiAgY29udGVudDpcIlwiO1xuICBwb3NpdGlvbiA6dmFyKC0tYWJzb2x1dGUpO1xuICB3aWR0aDogMTBweDtcbiAgaGVpZ2h0OiAwO1xuICBib3JkZXItbGVmdDogMnB4IHNvbGlkIHZhcigtLXRyYW5zcGFyZW50KTtcbiAgYm9yZGVyLXJpZ2h0OiAycHggc29saWQgdmFyKC0tdHJhbnNwYXJlbnQpO1xuICBib3JkZXItYm90dG9tOiAxMHB4IHNvbGlkIHZhcigtLWNvbG9yKTtcbiAgdG9wOi0xMHB4O1xuICBsZWZ0Oi0xcHg7XG4gfVxuIGRpdiAgLnNwaW5kbGUge1xuICBwb3NpdGlvbiA6YWJzb2x1dGU7XG4gIGxlZnQ6MjE2cHg7XG4gIHRvcDo0OSU7XG4gIHRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTtcbiAgdHJhbnNpdGlvbjphbGwgMnM7XG5cbiB9XG4gZGl2IC5zcGluZGxlOjphZnRlciB7XG4gIGNvbnRlbnQ6IFwiXCI7XG4gIHBvc2l0aW9uOiB2YXIoLS1hYnNvbHV0ZSk7XG4gIHdpZHRoOiA0cHg7XG4gIGxlZnQ6IDhweDtcbiAgYm9yZGVyLWJvdHRvbTogMTRweCBzb2xpZCB2YXIoLS1jb2xvcik7XG4gIG9wYWNpdHk6MFxuIH1cblxuIGRpdiAuc3BpbmRsZS1tb3ZlOjphZnRlciB7XG4gICBvcGFjaXR5OjE7XG5cbiB9XG5cbiBkaXYgLmNsb2NrLWNyb3duLWRyYWcge1xuICAgbGVmdDoyMTVweDtcbiB9XG4gZGl2IC5jaGFuZ2UtaG91ciB7XG4gICAgdHJhbnNmb3JtLW9yaWdpbjogNzAlIDg1JTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4wNXM7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpO1xuICAgIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4xLCAyLjcsIDAuNTgsIDEpO1xuIH1cbmA7XG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBOZ3hBbmFsb2dXcmlzdFdhdGNoU2VydmljZSB7XG4gIENMT0NLX05VTUJFUiA9IDEyO1xuICBpbmxpbmVTdHlsZUluZm86IGFueSA9IHtcbiAgICBib3JkZXI6ICdub25lJyxcbiAgICBib3JkZXJCb3R0b206ICcycHggc29saWQgdGVhbCcsXG4gICAgaW5wdXRCb3JkZXJCb3R0b206ICcycHggc29saWQgYmx1ZScsXG4gICAgb3V0bGluZTogJ25vbmUnLFxuICAgIGNvbG9yOiAnYmx1ZScsXG4gICAgZm9udFNpemU6ICcxOHB4JyxcbiAgICBsYWJlbEZvbnRTaXplOiAnMTRweCcsXG4gICAgbGVmdDogJzEwcHgnLFxuICAgIGJvdHRvbTogJzEwcHgnLFxuICAgIHJlbGF0aXZlOiAncmVsYXRpdmUnLFxuICAgIGFic29sdXRlOiAnYWJzb2x1dGUnLFxuICAgIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLFxuICAgIG1hcmdpbmJvdHRvbTogJzI1cHgnLFxuICAgIGZsb2F0OiAnbGVmdCcsXG4gICAgbWFyZ2lucmlnaHQ6ICcyNXB4JyxcbiAgICBwYWRkaW5nOiAnMnJlbScsXG4gICAgdG9wOiAnMTVweCcsXG4gICAgd2lkdGg6ICcyNTBweCcsXG4gICAgYm94U2hhZG93OiAnI2RlZDlkOSAwcHggM3B4IDRweCcsXG4gICAgYm94V2lkdGg6ICc1MDBweCcsXG4gICAgYm94SGVpZ2h0OiAnNTc1cHgnLFxuICAgIGluaGVyaXQ6ICdpbmhlcml0JyxcbiAgICB0cmFuc2lzdGlvblRvcDogJ3RvcCAycyBjdWJpYy1iZXppZXIoMC41MywgMC40OSwgMC4zNSwgMC4zOSkgMHMnLFxuICAgIG1hcmdpbkxlZnQ6ICctMTVweCcsXG4gICAgaWNvblRvcDogJzI0cHgnLFxuICAgIGljb25Gb250U2l6ZTogJzIwcHgnLFxuICAgIGJveERpc3BsYXlOb25lOiAnbm9uZScsXG4gICAgYm94RGlzcGxheUZsZXg6ICdmbGV4JyxcbiAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgY3Vyc29yOiAncG9pbnRlcicsXG4gICAgcHJpbWFyeVdpZHRoOiAnMjAycHgnLFxuICAgIHByaW1hcnlIZWlnaHQ6ICcyMDJweCcsXG4gICAgcHJpbWFyeUJvcmRlclJhZGl1czogJzUwJScsXG4gICAgcHJpbWFyeUJvcmRlcjogJzEwcHggc29saWQgdmFyKC0tY29sb3IpJyxcbiAgICBzZWNvbmRhcnlXaWR0aDogJzE5M3B4JyxcbiAgICBzZWNvbmRhcnlIZWlnaHQ6ICcxOTNweCcsXG4gICAgc2Vjb25kYXJ5Qm9yZGVyUmFkaXVzOiAnNTAlJyxcbiAgICBzZWNvbmRhcnlCb3JkZXI6ICc2cHggc29saWQgZ3JheScsXG4gICAgdGhpcmRXaWR0aDogJzE4NHB4JyxcbiAgICB0aGlyZEhlaWdodDogJzE4NXB4JyxcbiAgICB0aGlyZEJvcmRlclJhZGl1czogJzUwJScsXG4gICAgdGhpcmRCb3JkZXI6ICc1cHggc29saWQgdmFyKC0tYm9yZGVyLWNvbG9yKScsXG4gICAgdGhpcmRUb3A6ICctMXB4JyxcbiAgICBudW1MZWZ0OiAnMTMzcHgnLFxuICAgIG51bVRvcDogJzE0cHgnLFxuICAgIGNsb2NrTnVtOiBbXG4gICAgICB7XG4gICAgICAgIGxlZnQ6ICcxMzBweCcsXG4gICAgICAgIHRvcDogJzE4cHgnXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBsZWZ0OiAnMTYwcHgnLFxuICAgICAgICB0b3A6ICc0OXB4JyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGxlZnQ6ICcxNjVweCcsXG4gICAgICAgIHRvcDogJzg5cHgnLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbGVmdDogJzE1MXB4JyxcbiAgICAgICAgdG9wOiAnMTI4cHgnLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbGVmdDogJzEyNXB4JyxcbiAgICAgICAgdG9wOiAnMTUzcHgnLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbGVmdDogJzg2cHgnLFxuICAgICAgICB0b3A6ICcxNjJweCcsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBsZWZ0OiAnNDlweCcsXG4gICAgICAgIHRvcDogJzE1M3B4JyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGxlZnQ6ICcxOXB4JyxcbiAgICAgICAgdG9wOiAnMTI3cHgnLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbGVmdDogJzdweCcsXG4gICAgICAgIHRvcDogJzg5cHgnLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbGVmdDogJzEzcHgnLFxuICAgICAgICB0b3A6ICc0OHB4JyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGxlZnQ6ICczOXB4JyxcbiAgICAgICAgdG9wOiAnMjBweCcsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBsZWZ0OiAnODFweCcsXG4gICAgICAgIHRvcDogJzNweCcsXG4gICAgICB9XG4gICAgXSxcbiAgICBiZWx0VG9wOiAnLTE0M3B4JyxcbiAgICBiZWx0TGVmdDogJzg1cHgnLFxuICAgIGJlbHRXaWR0aDogJzM4cHgnLFxuICAgIGJlbHRIZWlnaHQ6ICc0OHB4JyxcbiAgICBiZWx0QmFja2dyb3VuZENvbG9yOiAnIzJGNEY0RicsXG4gICAgd3JhcFdpZHRoOiAnMTVweCcsXG4gICAgd3JhcEJvcmRlckJvdHRvbTogJzU0cHggc29saWQgdmFyKC0tY29sb3IpJyxcbiAgICB3cmFwQm9yZGVyTGVmdDogJzE2cHggc29saWQgd2hpdGUnLFxuICAgIHdyYXBMZWZ0OiAnMzclJyxcbiAgICB3cmFwVG9wOiAnMjA3cHgnLFxuICAgIHJpZ2h0V3JhcFdpZHRoOiAnMTVweCcsXG4gICAgcmlnaHRCb3JkZXJSaWdodFJhZGl1czogJzlweCcsXG4gICAgcmlnaHRXcmFwQm9yZGVyQm90dG9tOiAnNjNweCBzb2xpZCB2YXIoLS1jb2xvciknLFxuICAgIHJpZ2h0V3JhcEJvcmRlcnJpZ2h0OiAnMTZweCBzb2xpZCB3aGl0ZScsXG4gICAgcmlnaHRXcmFwTGVmdDogJzYwJScsXG4gICAgcmlnaHRXcmFwVG9wOiAnMzIlJyxcbiAgICByaWdodFdyYXBNYXJnaW46ICctN3B4JyxcbiAgICByaWdodEJvcmRlckxlZnRSYWRpdXM6ICcxMHB4JyxcbiAgfTtcbiAgd2F0Y2hFbGVtZW50cyA9IFsnbGFiZWwnLCAnaW5wdXQnLCAnc3BhbicsICdwcmltYXJ5Q3JpY2xlJyxcbiAgICAnc2Vjb25kYXJ5Q2lyY2xlJywgJ3Rlcml0YXJ5Q2lyY2xlJywgJ2Nsb2NrQm94JywgJ2hvdXJIYW5kJywgJ21pbnV0ZUhhbmQnLCAnc2Vjb25kSGFuZCddO1xuXG4gIGNvbnN0cnVjdG9yKCkgeyB9XG5cbiAgZmV0Y2hJbnRlcm5hbFN0eWxlKCkge1xuICAgIHJldHVybiBpbnRlcm5hbFN0eWxlO1xuICB9XG5cbiAgZmV0Y2hJbkxpbmVTdHlsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5pbmxpbmVTdHlsZUluZm87XG4gIH1cblxuXG4gIGNyZWF0ZUR1Z0hvbGVzKHdyYXBwZXIsIHJlbmRlcmVyKSB7XG4gICAgY29uc3Qgc3R5bGVUb0R1Z0hvbGUgPSB7fTtcbiAgICBkdWdIb2xlcy5mb3JFYWNoKGR1Z0hvbGUgPT4ge1xuICAgICAgY29uc3QgZHVnSG9sID0gcmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICAgICAgcmVuZGVyZXIuYXBwZW5kQ2hpbGQod3JhcHBlciwgZHVnSG9sKTtcbiAgICAgIHN0eWxlVG9EdWdIb2xlW2R1Z0hvbGVdID0gZHVnSG9sO1xuICAgIH0pO1xuICAgIHJldHVybiBzdHlsZVRvRHVnSG9sZTtcbiAgfVxuXG4gIGNyZWF0ZVdhdGNoU3RyYXBzKHdyYXBwZXIsIHJlbmRlcmVyKSB7XG4gICAgY29uc3Qgc3R5bGVUb1dhdGNoU3RyYXAgPSB7fTtcbiAgICB3YXRjaFN0cmFwcy5mb3JFYWNoKCh3YXRjaFN0cmFwLCBpbmRleCkgPT4ge1xuICAgICAgY29uc3Qgc3RyYXAgPSByZW5kZXJlci5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG4gICAgICByZW5kZXJlci5hcHBlbmRDaGlsZCh3cmFwcGVyLCBzdHJhcCk7XG4gICAgICBzdHlsZVRvV2F0Y2hTdHJhcFsnZWxlbWVudE5hbWUnICsgaW5kZXhdID0gc3RyYXA7XG4gICAgICBzdHlsZVRvV2F0Y2hTdHJhcFsnY2xhc3NOYW1lJyArIGluZGV4XSA9IHdhdGNoU3RyYXAuc3R5bGVDbGFzc05hbWUubWFwKGNsYXNzTmFtZSA9PiB7XG4gICAgICAgIHJldHVybiBjbGFzc05hbWU7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICByZXR1cm4gc3R5bGVUb1dhdGNoU3RyYXA7XG4gIH1cblxuICBhZGRDbG9ja051bWJlcnModGhpcmRDaXJjbGUsIGFwcGx5U3R5bGVJbkNsb2NrTnVtLCByZW5kZXJlcikge1xuICAgIGZvciAobGV0IHBvcyA9IDA7IHBvcyA8IHRoaXMuQ0xPQ0tfTlVNQkVSOyBwb3MrKykge1xuICAgICAgY29uc3QgbnVtU3BhbiA9IHJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcbiAgICAgIGNvbnN0IG51bSA9IHJlbmRlcmVyLmNyZWF0ZVRleHQoKHBvcyArIDEpLnRvU3RyaW5nKCkpO1xuICAgICAgcmVuZGVyZXIuYXBwZW5kQ2hpbGQobnVtU3BhbiwgbnVtKTtcbiAgICAgIHJlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXJkQ2lyY2xlLCBudW1TcGFuKTtcbiAgICAgIHJlbmRlcmVyLnNldFByb3BlcnR5KG51bVNwYW4sICdbdGltZUNoYW5nZV0nLCAnb25OdW1DbGljaygpJyk7XG4gICAgICBhcHBseVN0eWxlSW5DbG9ja051bShudW1TcGFuLCBwb3MsIHRoaXMuaW5saW5lU3R5bGVJbmZvKTtcbiAgICB9XG4gIH1cblxufVxuXG5cbiJdfQ==