UNPKG

ngx-analog-wrist-watch

Version:

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

736 lines (695 loc) 46.1 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 {?} */ const 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 {?} */ const dugHoles = ['topLeftDugHole', 'topRightDugHole', 'bottomLeftDugHole', 'bottomRightDugHole']; /** @type {?} */ const internalStyle = ` :root { --color:#2F4F4F; --border-color:black; --border-green:green; --absolute:absolute; --transparent:transparent; } span + .toggle-time { display:flex!important; } div .top-left-dughole::before{ content: ""; border-right: 15px solid var(--color); position: var(--absolute); left: 0px; border-top: 16px solid var(--transparent); border-bottom: 0px solid var(--color); width: 0px; bottom: 0px; } div .top-right-dughole::before{ content: ""; border-left: 15px solid var(--color); position: var(--absolute); left: 0px; border-top: 15px solid var(--transparent); border-bottom: 0px solid var(--color); bottom: 0px; } div .strap-primary-top-left { position: var(--absolute); left: 42%; top: 31%; height: 40px; background:var(--color); margin: 3px; width: 25px; } div .border-color{ box-shadow: 0px 0px 1px 1px var(--border-green); } div .strap-primary-top-middle{ position: var(--absolute); left: 47%; top: 30%; height: 40px; background:var(--color); margin: 1px; width: 38px; } div .strap-primary-top-right { position: var(--absolute); left: 53%; top: 201px; height: 42px; background:var(--color); width: 25px; margin: 6px; } div .bottom-left-dughole{ position: var(--absolute); width: 15px; border-top: 54px solid rgb(47, 79, 79); border-left: 16px solid white; top: 64%; left: 37%; } div .bottom-left-dughole::before{ content: ""; border-right: 15px solid var(--color); position: var(--absolute); left: 0px; border-top: 0px solid var(--color); border-bottom: 14px solid var(--transparent); width: 0px; } div .strap-primary-bottom-left { position: var(--absolute); left: 42%; top: 444px; height: 35px; background:var(--color); margin: 3px; width: 25px; } div .strap-primary-bottom-middle{ position: var(--absolute); left: 47%; top: 67%; height: 40px; background:var(--color); margin: 1px; width: 38px; } div .strap-primary-bottom-right { position: var(--absolute); left: 55%; top: 440px; height: 44px; background:var(--color); width: 25px; margin: -4px } div .bottom-right-dughole{ position: var(--absolute); width: 15px; border-top: 61px solid rgb(47, 79, 79); border-right: 16px solid white; top: 408px; left: 57%; margin: 11px; border-top-left-radius: 19px; } div .bottom-right-dughole::before{ content: ""; border-left: 15px solid var(--color); position: var(--absolute); left: 0px; border-top: 0px solid var(--color); border-bottom: 14px solid var(--transparent); width: 0px; } div .strap-secondary-top-left{ top: 133px; left: 241px; position: var(--absolute); width: 20px; height: 30px; border-bottom: 43px solid var(--color); border-left: 4px solid var(--transparent); } div .strap-secondary-top-middle{ top: 150px; left: 265px; position: var(--absolute); width: 40px; height: 48px; background-color:var(--color); box-shadow: 0px 0px 0px 1px var(--border-green); } div .strap-secondary-top-right{ top: 132px; left: 306px; position: var(--absolute); width: 20px; height: 29px; border-bottom: 43px solid var(--color); border-right: 4px solid var(--transparent); } div .strap-tertiary-top-left{ top: 88px; left: 241px; position: var(--absolute); width: 20px; height: 30px; border-bottom: 43px solid var(--color); border-left: 4px solid var(--transparent); } div .strap-tertiary-top-middle{ top: 100px; left: 265px; position: var(--absolute); width: 40px; height: 48px; background-color:var(--color); box-shadow: 0px 0px 0px 1px var(--border-green); } div .strap-tertiary-top-right{ top: 87px; left: 306px; position: var(--absolute); width: 20px; height: 29px; border-bottom: 43px solid var(--color); border-right: 4px solid var(--transparent); } div .strap-secondary-bottom-left{ top: 485px; left: 241px; position: var(--absolute); width: 20px; height: 30px; border-top: 43px solid var(--color); border-left: 4px solid var(--transparent); } div .strap-secondary-bottom-middle{ top: 485px; left: 265px; position: var(--absolute); width: 40px; height: 48px; background-color:var(--color); box-shadow: 0px 0px 0px 1px var(--border-green); } div .strap-secondary-bottom-right{ top: 483px; left: 306px; position: var(--absolute); width: 20px; height: 30px; border-top: 45px solid var(--color); border-right: 4px solid var(--transparent); } div .strap-tertiary-bottom-left{ top: 530px; left: 241px; position: var(--absolute); width: 20px; height: 30px; border-top: 43px solid var(--color); border-left: 4px solid var(--transparent); } div .strap-tertiary-bottom-middle{ top: 530px; left: 265px; position: var(--absolute); width: 40px; height: 48px; background-color:var(--color); box-shadow: 0px 0px 0px 1px var(--border-green); } div .strap-tertiary-bottom-right{ top: 530px; left: 306px; position: var(--absolute); width: 20px; height: 30px; border-top: 45px solid var(--color); border-right: 4px solid var(--transparent); } div .hour-hand { border: 1px solid var(--border-color); position: var(--absolute); top: 61px; height: 40px; left: 82px; width: 5px; } div .hour-hand::before { position: var(--absolute); content: ""; border-radius: 50%; width: 15px; height: 15px; border: 1px solid var(--border-color); top: -17px; left: -6px; } div .second-hand{ position: var(--absolute); width: 112px; border-bottom: 1px solid black; left: 10px; } div .second-hand::after { content: ""; width: 10px; background: var(--border-color); height: 10px; position: var(--absolute); left: 111px; top: -5px; border-radius: 50%; } div .second-hand::before { content: ""; width: 15px; background: var(--border-color); height: 15px; position: var(--absolute); left: 23px; top: -7px; border-radius: 50%; background-image: radial-gradient(circle, black, white, black); } div .minute-hand { border: 1px solid var(--border-color); position: var(--absolute); top: 51px; height: 50px; left: 85px; width: 5px; } div .minute-hand::before { position: var(--absolute); content: ""; border-right: 4px solid var(--transparent); border-left: 3px solid var(--transparent); top: -24px; left: -1px; border-bottom: 23px solid var(--border-color); } div .hour-hand-round { position: var(--absolute); height: 9px; border-left: 1px solid var(--border-color); left: 35%; top: -10px; } div .hour-hand-round::before { position: var(--absolute); content: ""; height: 7px; border-left: 1px solid var(--border-color); right: 3px; top: -5px; transform: rotate(120deg); } div .hour-hand-round::after { position: var(--absolute); content: ""; height: 7px; border-left: 1px solid var(--border-color); left: 2px; top: -5px; transform: rotate(63deg); } div .hour-hand-arrow{ position: var(--absolute); content: ""; border-right: 6px solid var(--transparent); border-left: 6px solid var(--transparent); top: -31px; left: -4px; border-bottom: 15px solid var(--border-color); border-bottom-left-radius: 6px; border-bottom-right-radius: 6px; } div .hour { transform-origin: 70% 85%; transition: all 0.05s; transform: rotate(90deg); transition-timing-function: cubic-bezier(0.1, 2.7, 0.58, 1); } div .hand { top: 51%; position: var(--absolute); transform-origin: 70%; transition: all 0.05s; transform: rotate(90deg); transition-timing-function: cubic-bezier(0.1, 2.7, 0.58, 1); } div .axis-circle { height: 10px; width: 10px; border: 5px solid var(--border-color); border-radius: 50%; position: var(--absolute); top: 85px; left: 78px; background-color: var(--border-color); z-index:1; } div .axis-circle .dot-puncture { z-index: 1; width: 6px; background: silver; height: 6px; position: var(--absolute); left: 2px; top: 2px; border-radius: 50%; } div .clock-crown { position :absolute; left:201px; top:51%; transform: rotate(90deg); z-index:1; } div .clock-crown::before { content:""; position :var(--absolute); width: 10px; height: 0; border-left: 2px solid var(--transparent); border-right: 2px solid var(--transparent); border-bottom: 10px solid var(--color); top:-10px; left:-1px; } div .spindle { position :absolute; left:216px; top:49%; transform: rotate(90deg); transition:all 2s; } div .spindle::after { content: ""; position: var(--absolute); width: 4px; left: 8px; border-bottom: 14px solid var(--color); opacity:0 } div .spindle-move::after { opacity:1; } div .clock-crown-drag { left:215px; } div .change-hour { transform-origin: 70% 85%; transition: all 0.05s; transform: rotate(90deg); transition-timing-function: cubic-bezier(0.1, 2.7, 0.58, 1); } `; export class NgxAnalogWristWatchService { constructor() { 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 {?} */ fetchInternalStyle() { return internalStyle; } /** * @return {?} */ fetchInLineStyle() { return this.inlineStyleInfo; } /** * @param {?} wrapper * @param {?} renderer * @return {?} */ createDugHoles(wrapper, renderer) { /** @type {?} */ const styleToDugHole = {}; dugHoles.forEach((/** * @param {?} dugHole * @return {?} */ dugHole => { /** @type {?} */ const dugHol = renderer.createElement('span'); renderer.appendChild(wrapper, dugHol); styleToDugHole[dugHole] = dugHol; })); return styleToDugHole; } /** * @param {?} wrapper * @param {?} renderer * @return {?} */ createWatchStraps(wrapper, renderer) { /** @type {?} */ const styleToWatchStrap = {}; watchStraps.forEach((/** * @param {?} watchStrap * @param {?} index * @return {?} */ (watchStrap, index) => { /** @type {?} */ const strap = renderer.createElement('span'); renderer.appendChild(wrapper, strap); styleToWatchStrap['elementName' + index] = strap; styleToWatchStrap['className' + index] = watchStrap.styleClassName.map((/** * @param {?} className * @return {?} */ className => { return className; })); })); return styleToWatchStrap; } /** * @param {?} thirdCircle * @param {?} applyStyleInClockNum * @param {?} renderer * @return {?} */ addClockNumbers(thirdCircle, applyStyleInClockNum, renderer) { for (let pos = 0; pos < this.CLOCK_NUMBER; pos++) { /** @type {?} */ const numSpan = renderer.createElement('span'); /** @type {?} */ const 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 = () => []; /** @nocollapse */ NgxAnalogWristWatchService.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function NgxAnalogWristWatchService_Factory() { return new NgxAnalogWristWatchService(); }, token: NgxAnalogWristWatchService, providedIn: "root" }); if (false) { /** @type {?} */ NgxAnalogWristWatchService.prototype.CLOCK_NUMBER; /** @type {?} */ NgxAnalogWristWatchService.prototype.inlineStyleInfo; /** @type {?} */ NgxAnalogWristWatchService.prototype.watchElements; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWFuYWxvZy13cmlzdC13YXRjaC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LWFuYWxvZy13cmlzdC13YXRjaC8iLCJzb3VyY2VzIjpbImxpYi9uZ3gtYW5hbG9nLXdyaXN0LXdhdGNoLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7TUFDckMsV0FBVyxHQUFHO0lBQ2xCO1FBQ0UsY0FBYyxFQUFFLENBQUMsd0JBQXdCLEVBQUUsY0FBYyxDQUFDO0tBQzNEO0lBQ0Q7UUFDRSxjQUFjLEVBQUUsQ0FBQywwQkFBMEIsRUFBRSxjQUFjLENBQUM7S0FDN0Q7SUFDRDtRQUVFLGNBQWMsRUFBRSxDQUFDLHlCQUF5QixFQUFFLGNBQWMsQ0FBQztLQUM1RDtJQUNEO1FBRUUsY0FBYyxFQUFFLENBQUMsMEJBQTBCLENBQUM7S0FDN0M7SUFDRDtRQUVFLGNBQWMsRUFBRSxDQUFDLDRCQUE0QixDQUFDO0tBQy9DO0lBQ0Q7UUFFRSxjQUFjLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQztLQUM5QztJQUNEO1FBQ0UsY0FBYyxFQUFFLENBQUMseUJBQXlCLENBQUM7S0FDNUM7SUFDRDtRQUVFLGNBQWMsRUFBRSxDQUFDLDJCQUEyQixDQUFDO0tBQzlDO0lBQ0Q7UUFFRSxjQUFjLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQztLQUM3QztJQUNEO1FBRUUsY0FBYyxFQUFFLENBQUMsMkJBQTJCLEVBQUUsY0FBYyxDQUFDO0tBQzlEO0lBQ0Q7UUFFRSxjQUFjLEVBQUUsQ0FBQyw2QkFBNkIsRUFBRSxjQUFjLENBQUM7S0FDaEU7SUFDRDtRQUVFLGNBQWMsRUFBRSxDQUFDLDRCQUE0QixFQUFFLGNBQWMsQ0FBQztLQUMvRDtJQUNEO1FBQ0UsY0FBYyxFQUFFLENBQUMsNkJBQTZCLENBQUM7S0FDaEQ7SUFDRDtRQUNFLGNBQWMsRUFBRSxDQUFDLCtCQUErQixDQUFDO0tBQ2xE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XG5jb25zdCB3YXRjaFN0cmFwcyA9IFtcbiAge1xuICAgIHN0eWxlQ2xhc3NOYW1lOiBbJ3N0cmFwLXByaW1hcnktdG9wLWxlZnQnLCAnYm9yZGVyLWNvbG9yJ11cbiAgfSxcbiAge1xuICAgIHN0eWxlQ2xhc3NOYW1lOiBbJ3N0cmFwLXByaW1hcnktdG9wLW1pZGRsZScsICdib3JkZXItY29sb3InXVxuICB9LFxuICB7XG5cbiAgICBzdHlsZUNsYXNzTmFtZTogWydzdHJhcC1wcmltYXJ5LXRvcC1yaWdodCcsICdib3JkZXItY29sb3InXVxuICB9LFxuICB7XG5cbiAgICBzdHlsZUNsYXNzTmFtZTogWydzdHJhcC1zZWNvbmRhcnktdG9wLWxlZnQnXVxuICB9LFxuICB7XG5cbiAgICBzdHlsZUNsYXNzTmFtZTogWydzdHJhcC1zZWNvbmRhcnktdG9wLW1pZGRsZSddXG4gIH0sXG4gIHtcblxuICAgIHN0eWxlQ2xhc3NOYW1lOiBbJ3N0cmFwLXNlY29uZGFyeS10b3AtcmlnaHQnXVxuICB9LFxuICB7XG4gICAgc3R5bGVDbGFzc05hbWU6IFsnc3RyYXAtdGVydGlhcnktdG9wLWxlZnQnXVxuICB9LFxuICB7XG5cbiAgICBzdHlsZUNsYXNzTmFtZTogWydzdHJhcC10ZXJ0aWFyeS10b3AtbWlkZGxlJ11cbiAgfSxcbiAge1xuXG4gICAgc3R5bGVDbGFzc05hbWU6IFsnc3RyYXAtdGVydGlhcnktdG9wLXJpZ2h0J11cbiAgfSxcbiAge1xuXG4gICAgc3R5bGVDbGFzc05hbWU6IFsnc3RyYXAtcHJpbWFyeS1ib3R0b20tbGVmdCcsICdib3JkZXItY29sb3InXVxuICB9LFxuICB7XG5cbiAgICBzdHlsZUNsYXNzTmFtZTogWydzdHJhcC1wcmltYXJ5LWJvdHRvbS1taWRkbGUnLCAnYm9yZGVyLWNvbG9yJ11cbiAgfSxcbiAge1xuXG4gICAgc3R5bGVDbGFzc05hbWU6IFsnc3RyYXAtcHJpbWFyeS1ib3R0b20tcmlnaHQnLCAnYm9yZGVyLWNvbG9yJ11cbiAgfSxcbiAge1xuICAgIHN0eWxlQ2xhc3NOYW1lOiBbJ3N0cmFwLXNlY29uZGFyeS1ib3R0b20tbGVmdCddXG4gIH0sXG4gIHtcbiAgICBzdHlsZUNsYXNzTmFtZTogWydzdHJhcC1zZWNvbmRhcnktYm90dG9tLW1pZGRsZSddXG4gIH0sXG4gIHtcbiAgICBzdHlsZUNsYXNzTmFtZTogWydzdHJhcC1zZWNvbmRhcnktYm90dG9tLXJpZ2h0J11cbiAgfSxcbiAge1xuXG4gICAgc3R5bGVDbGFzc05hbWU6IFsnc3RyYXAtdGVydGlhcnktYm90dG9tLWxlZnQnXVxuICB9LFxuICB7XG4gICAgc3R5bGVDbGFzc05hbWU6IFsnc3RyYXAtdGVydGlhcnktYm90dG9tLW1pZGRsZSddXG4gIH0sXG4gIHtcblxuICAgIHN0eWxlQ2xhc3NOYW1lOiBbJ3N0cmFwLXRlcnRpYXJ5LWJvdHRvbS1yaWdodCddXG4gIH0sXG5cbl07XG5jb25zdCBkdWdIb2xlcyA9IFsndG9wTGVmdER1Z0hvbGUnLCAndG9wUmlnaHREdWdIb2xlJywgJ2JvdHRvbUxlZnREdWdIb2xlJywgJ2JvdHRvbVJpZ2h0RHVnSG9sZSddO1xuY29uc3QgaW50ZXJuYWxTdHlsZSA9ICBgXG46cm9vdCB7XG4gIC0tY29sb3I6IzJGNEY0RjtcbiAgLS1ib3JkZXItY29sb3I6YmxhY2s7XG4gIC0tYm9yZGVyLWdyZWVuOmdyZWVuO1xuICAtLWFic29sdXRlOmFic29sdXRlO1xuICAtLXRyYW5zcGFyZW50OnRyYW5zcGFyZW50O1xufVxuc3BhbiArIC50b2dnbGUtdGltZSB7XG4gICAgICBkaXNwbGF5OmZsZXghaW1wb3J0YW50O1xufVxuZGl2IC50b3AtbGVmdC1kdWdob2xlOjpiZWZvcmV7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBib3JkZXItcmlnaHQ6IDE1cHggc29saWQgdmFyKC0tY29sb3IpO1xuICAgIHBvc2l0aW9uOiB2YXIoLS1hYnNvbHV0ZSk7XG4gICAgbGVmdDogMHB4O1xuICAgIGJvcmRlci10b3A6IDE2cHggc29saWQgdmFyKC0tdHJhbnNwYXJlbnQpO1xuICAgIGJvcmRlci1ib3R0b206IDBweCBzb2xpZCB2YXIoLS1jb2xvcik7XG4gICAgd2lkdGg6IDBweDtcbiAgICBib3R0b206IDBweDtcbn1cbmRpdiAudG9wLXJpZ2h0LWR1Z2hvbGU6OmJlZm9yZXtcbiAgY29udGVudDogXCJcIjtcbiAgYm9yZGVyLWxlZnQ6IDE1cHggc29saWQgdmFyKC0tY29sb3IpO1xuICBwb3NpdGlvbjogdmFyKC0tYWJzb2x1dGUpO1xuICBsZWZ0OiAwcHg7XG4gIGJvcmRlci10b3A6IDE1cHggc29saWQgdmFyKC0tdHJhbnNwYXJlbnQpO1xuICBib3JkZXItYm90dG9tOiAwcHggc29saWQgdmFyKC0tY29sb3IpO1xuICBib3R0b206IDBweDtcbn1cblxuZGl2IC5zdHJhcC1wcmltYXJ5LXRvcC1sZWZ0IHtcbiAgICBwb3NpdGlvbjogdmFyKC0tYWJzb2x1dGUpO1xuICAgIGxlZnQ6IDQyJTtcbiAgICB0b3A6IDMxJTtcbiAgICBoZWlnaHQ6IDQwcHg7XG4gICAgYmFja2dyb3VuZDp2YXIoLS1jb2xvcik7XG4gICAgbWFyZ2luOiAzcHg7XG4gICAgd2lkdGg6IDI1cHg7XG59XG5cbmRpdiAuYm9yZGVyLWNvbG9ye1xuICAgIGJveC1zaGFkb3c6IDBweCAwcHggMXB4IDFweCB2YXIoLS1ib3JkZXItZ3JlZW4pO1xufVxuXG5kaXYgLnN0cmFwLXByaW1hcnktdG9wLW1pZGRsZXtcbiAgICBwb3NpdGlvbjogdmFyKC0tYWJzb2x1dGUpO1xuICAgIGxlZnQ6IDQ3JTtcbiAgICB0b3A6IDMwJTtcbiAgICBoZWlnaHQ6IDQwcHg7XG4gICAgYmFja2dyb3VuZDp2YXIoLS1jb2xvcik7XG4gICAgbWFyZ2luOiAxcHg7XG4gICAgd2lkdGg6IDM4cHg7XG59XG5cbmRpdiAuc3RyYXAtcHJpbWFyeS10b3AtcmlnaHQge1xuICAgIHBvc2l0aW9uOiB2YXIoLS1hYnNvbHV0ZSk7XG4gICAgbGVmdDogNTMlO1xuICAgIHRvcDogMjAxcHg7XG4gICAgaGVpZ2h0OiA0MnB4O1xuICAgIGJhY2tncm91bmQ6dmFyKC0tY29sb3IpO1xuICAgIHdpZHRoOiAyNXB4O1xuICAgIG1hcmdpbjogNnB4O1xufVxuXG5kaXYgLmJvdHRvbS1sZWZ0LWR1Z2hvbGV7XG4gICBwb3NpdGlvbjogdmFyKC0tYWJzb2x1dGUpO1xuICAgd2lkdGg6IDE1cHg7XG4gICBib3JkZXItdG9wOiA1NHB4IHNvbGlkIHJnYig0NywgNzksIDc5KTtcbiAgIGJvcmRlci1sZWZ0OiAxNnB4IHNvbGlkIHdoaXRlO1xuICAgdG9wOiA2NCU7XG4gICBsZWZ0OiAzNyU7XG59XG5cbmRpdiAuYm90dG9tLWxlZnQtZHVnaG9sZTo6YmVmb3Jle1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgYm9yZGVyLXJpZ2h0OiAxNXB4IHNvbGlkIHZhcigtLWNvbG9yKTtcbiAgICBwb3NpdGlvbjogdmFyKC0tYWJzb2x1dGUpO1xuICAgIGxlZnQ6IDBweDtcbiAgICBib3JkZXItdG9wOiAwcHggc29saWQgdmFyKC0tY29sb3IpO1xuICAgIGJvcmRlci1ib3R0b206IDE0cHggc29saWQgdmFyKC0tdHJhbnNwYXJlbnQpO1xuICAgIHdpZHRoOiAwcHg7XG59XG5cbmRpdiAuc3RyYXAtcHJpbWFyeS1ib3R0b20tbGVmdCB7XG4gICAgcG9zaXRpb246IHZhcigtLWFic29sdXRlKTtcbiAgICBsZWZ0OiA0MiU7XG4gICAgdG9wOiA0NDRweDtcbiAgICBoZWlnaHQ6IDM1cHg7XG4gICAgYmFja2dyb3VuZDp2YXIoLS1jb2xvcik7XG4gICAgbWFyZ2luOiAzcHg7XG4gICAgd2lkdGg6IDI1cHg7XG59XG5cbmRpdiAuc3RyYXAtcHJpbWFyeS1ib3R0b20tbWlkZGxle1xuICAgIHBvc2l0aW9uOiB2YXIoLS1hYnNvbHV0ZSk7XG4gICAgbGVmdDogNDclO1xuICAgIHRvcDogNjclO1xuICAgIGhlaWdodDogNDBweDtcbiAgICBiYWNrZ3JvdW5kOnZhcigtLWNvbG9yKTtcbiAgICBtYXJnaW46IDFweDtcbiAgICB3aWR0aDogMzhweDtcbn1cblxuZGl2IC5zdHJhcC1wcmltYXJ5LWJvdHRvbS1yaWdodCB7XG4gICAgcG9zaXRpb246IHZhcigtLWFic29sdXRlKTtcbiAgICBsZWZ0OiA1NSU7XG4gICAgdG9wOiA0NDBweDtcbiAgICBoZWlnaHQ6IDQ0cHg7XG4gICAgYmFja2dyb3VuZDp2YXIoLS1jb2xvcik7XG4gICAgd2lkdGg6IDI1cHg7XG4gICAgbWFyZ2luOiAtNHB4XG59XG5cbmRpdiAuYm90dG9tLXJpZ2h0LWR1Z2hvbGV7XG4gIHBvc2l0aW9uOiB2YXIoLS1hYnNvbHV0ZSk7XG4gIHdpZHRoOiAxNXB4O1xuICBib3JkZXItdG9wOiA2MXB4IHNvbGlkIHJnYig0NywgNzksIDc5KTtcbiAgYm9yZGVyLXJpZ2h0OiAxNnB4IHNvbGlkIHdoaXRlO1xuICB0b3A6IDQwOHB4O1xuICBsZWZ0OiA1NyU7XG4gIG1hcmdpbjogMTFweDtcbiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMTlweDtcbn1cbmRpdiAuYm90dG9tLXJpZ2h0LWR1Z2hvbGU6OmJlZm9yZXtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGJvcmRlci1sZWZ0OiAxNXB4IHNvbGlkIHZhcigtLWNvbG9yKTtcbiAgICBwb3NpdGlvbjogdmFyKC0tYWJzb2x1dGUpO1xuICAgIGxlZnQ6IDBweDtcbiAgICBib3JkZXItdG9wOiAwcHggc29saWQgdmFyKC0tY29sb3IpO1xuICAgIGJvcmRlci1ib3R0b206IDE0cHggc29saWQgdmFyKC0tdHJhbnNwYXJlbnQpO1xuICAgIHdpZHRoOiAwcHg7XG59XG4gZGl2IC5zdHJhcC1zZWNvbmRhcnktdG9wLWxlZnR7XG4gICAgdG9wOiAxMzNweDtcbiAgICBsZWZ0OiAyNDFweDtcbiAgICBwb3NpdGlvbjogdmFyKC0tYWJzb2x1dGUpO1xuICAgIHdpZHRoOiAyMHB4O1xuICAgIGhlaWdodDogMzBweDtcbiAgICBib3JkZXItYm90dG9tOiA0M3B4IHNvbGlkIHZhcigtLWNvbG9yKTtcbiAgICBib3JkZXItbGVmdDogNHB4IHNvbGlkIHZhcigtLXRyYW5zcGFyZW50KTtcbn1cblxuZGl2IC5zdHJhcC1zZWNvbmRhcnktdG9wLW1pZGRsZXtcbiAgICB0b3A6IDE1MHB4O1xuICAgIGxlZnQ6IDI2NXB4O1xuICAgIHBvc2l0aW9uOiB2YXIoLS1hYnNvbHV0ZSk7XG4gICAgd2lkdGg6IDQwcHg7XG4gICAgaGVpZ2h0OiA0OHB4O1xuICAgIGJhY2tncm91bmQtY29sb3I6dmFyKC0tY29sb3IpO1xuICAgIGJveC1zaGFkb3c6IDBweCAwcHggMHB4IDFweCB2YXIoLS1ib3JkZXItZ3JlZW4pO1xufVxuXG5kaXYgLnN0cmFwLXNlY29uZGFyeS10b3AtcmlnaHR7XG4gICAgdG9wOiAxMzJweDtcbiAgICBsZWZ0OiAzMDZweDtcbiAgICBwb3NpdGlvbjogdmFyKC0tYWJzb2x1dGUpO1xuICAgIHdpZHRoOiAyMHB4O1xuICAgIGhlaWdodDogMjlweDtcbiAgICBib3JkZXItYm90dG9tOiA0M3B4IHNvbGlkIHZhcigtLWNvbG9yKTtcbiAgICBib3JkZXItcmlnaHQ6IDRweCBzb2xpZCB2YXIoLS10cmFuc3BhcmVudCk7XG59XG5cblxuZGl2IC5zdHJhcC10ZXJ0aWFyeS10b3AtbGVmdHtcbiAgdG9wOiA4OHB4O1xuICBsZWZ0OiAyNDFweDtcbiAgcG9zaXRpb246IHZhcigtLWFic29sdXRlKTtcbiAgd2lkdGg6IDIwcHg7XG4gIGhlaWdodDogMzBweDtcbiAgYm9yZGVyLWJvdHRvbTogNDNweCBzb2xpZCB2YXIoLS1jb2xvcik7XG4gIGJvcmRlci1sZWZ0OiA0cHggc29saWQgdmFyKC0tdHJhbnNwYXJlbnQpO1xufVxuXG5kaXYgLnN0cmFwLXRlcnRpYXJ5LXRvcC1taWRkbGV7XG4gIHRvcDogMTAwcHg7XG4gIGxlZnQ6IDI2NXB4O1xuICBwb3NpdGlvbjogdmFyKC0tYWJzb2x1dGUpO1xuICB3aWR0aDogNDBweDtcbiAgaGVpZ2h0OiA0OHB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNvbG9yKTtcbiAgYm94LXNoYWRvdzogMHB4IDBweCAwcHggMXB4IHZhcigtLWJvcmRlci1ncmVlbik7XG59XG5cbmRpdiAuc3RyYXAtdGVydGlhcnktdG9wLXJpZ2h0e1xuICB0b3A6IDg3cHg7XG4gIGxlZnQ6IDMwNnB4O1xuICBwb3NpdGlvbjogdmFyKC0tYWJzb2x1dGUpO1xuICB3aWR0aDogMjBweDtcbiAgaGVpZ2h0OiAyOXB4O1xuICBib3JkZXItYm90dG9tOiA0M3B4IHNvbGlkIHZhcigtLWNvbG9yKTtcbiAgYm9yZGVyLXJpZ2h0OiA0cHggc29saWQgdmFyKC0tdHJhbnNwYXJlbnQpO1xufVxuXG5kaXYgLnN0cmFwLXNlY29uZGFyeS1ib3R0b20tbGVmdHtcbiAgdG9wOiA0ODVweDtcbiAgbGVmdDogMjQxcHg7XG4gIHBvc2l0aW9uOiB2YXIoLS1hYnNvbHV0ZSk7XG4gIHdpZHRoOiAyMHB4O1xuICBoZWlnaHQ6IDMwcHg7XG4gIGJvcmRlci10b3A6IDQzcHggc29saWQgdmFyKC0tY29sb3IpO1xuICBib3JkZXItbGVmdDogNHB4IHNvbGlkIHZhcigtLXRyYW5zcGFyZW50KTtcbn1cblxuXG5kaXYgLnN0cmFwLXNlY29uZGFyeS1ib3R0b20tbWlkZGxle1xuICAgIHRvcDogNDg1cHg7XG4gICAgbGVmdDogMjY1cHg7XG4gICAgcG9zaXRpb246IHZhcigtLWFic29sdXRlKTtcbiAgICB3aWR0aDogNDBweDtcbiAgICBoZWlnaHQ6IDQ4cHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jb2xvcik7XG4gICAgYm94LXNoYWRvdzogMHB4IDBweCAwcHggMXB4IHZhcigtLWJvcmRlci1ncmVlbik7XG59XG5cbmRpdiAuc3RyYXAtc2Vjb25kYXJ5LWJvdHRvbS1yaWdodHtcbiAgdG9wOiA0ODNweDtcbiAgbGVmdDogMzA2cHg7XG4gIHBvc2l0aW9uOiB2YXIoLS1hYnNvbHV0ZSk7XG4gIHdpZHRoOiAyMHB4O1xuICBoZWlnaHQ6IDMwcHg7XG4gIGJvcmRlci10b3A6IDQ1cHggc29saWQgdmFyKC0tY29sb3IpO1xuICBib3JkZXItcmlnaHQ6IDRweCBzb2xpZCB2YXIoLS10cmFuc3BhcmVudCk7XG59XG5cbmRpdiAuc3RyYXAtdGVydGlhcnktYm90dG9tLWxlZnR7XG4gIHRvcDogNTMwcHg7XG4gIGxlZnQ6IDI0MXB4O1xuICBwb3NpdGlvbjogdmFyKC0tYWJzb2x1dGUpO1xuICB3aWR0aDogMjBweDtcbiAgaGVpZ2h0OiAzMHB4O1xuICBib3JkZXItdG9wOiA0M3B4IHNvbGlkIHZhcigtLWNvbG9yKTtcbiAgYm9yZGVyLWxlZnQ6IDRweCBzb2xpZCB2YXIoLS10cmFuc3BhcmVudCk7XG59XG5cbmRpdiAuc3RyYXAtdGVydGlhcnktYm90dG9tLW1pZGRsZXtcbiAgdG9wOiA1MzBweDtcbiAgbGVmdDogMjY1cHg7XG4gIHBvc2l0aW9uOiB2YXIoLS1hYnNvbHV0ZSk7XG4gIHdpZHRoOiA0MHB4O1xuICBoZWlnaHQ6IDQ4cHg7XG4gIGJhY2tncm91bmQtY29sb3I6dmFyKC0tY29sb3IpO1xuICBib3gtc2hhZG93OiAwcHggMHB4IDBweCAxcHggdmFyKC0tYm9yZGVyLWdyZWVuKTtcbn1cblxuZGl2IC5zdHJhcC10ZXJ0aWFyeS1ib3R0b20tcmlnaHR7XG4gIHRvcDogNTMwcHg7XG4gIGxlZnQ6IDMwNnB4O1xuICBwb3NpdGlvbjogdmFyKC0tYWJzb2x1dGUpO1xuICB3aWR0aDogMjBweDtcbiAgaGVpZ2h0OiAzMHB4O1xuICBib3JkZXItdG9wOiA0NXB4IHNvbGlkIHZhcigtLWNvbG9yKTtcbiAgYm9yZGVyLXJpZ2h0OiA0cHggc29saWQgdmFyKC0tdHJhbnNwYXJlbnQpO1xufVxuXG5kaXYgLmhvdXItaGFuZCB7XG4gICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IpO1xuICAgIHBvc2l0aW9uOiB2YXIoLS1hYnNvbHV0ZSk7XG4gICAgdG9wOiA2MXB4O1xuICAgIGhlaWdodDogNDBweDtcbiAgICBsZWZ0OiA4MnB4O1xuICAgIHdpZHRoOiA1cHg7XG59XG5cbmRpdiAuaG91ci1oYW5kOjpiZWZvcmUge1xuICBwb3NpdGlvbjogdmFyKC0tYWJzb2x1dGUpO1xuICBjb250ZW50OiBcIlwiO1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIHdpZHRoOiAxNXB4O1xuICBoZWlnaHQ6IDE1cHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1jb2xvcik7XG4gIHRvcDogLTE3cHg7XG4gIGxlZnQ6IC02cHg7XG59XG5cbmRpdiAuc2Vjb25kLWhhbmR7XG4gICAgcG9zaXRpb246IHZhcigtLWFic29sdXRlKTtcbiAgICB3aWR0aDogMTEycHg7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIGJsYWNrO1xuICAgIGxlZnQ6IDEwcHg7XG59XG5kaXYgLnNlY29uZC1oYW5kOjphZnRlciB7XG4gIGNvbnRlbnQ6IFwiXCI7XG4gIHdpZHRoOiAxMHB4O1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1ib3JkZXItY29sb3IpO1xuICBoZWlnaHQ6IDEwcHg7XG4gIHBvc2l0aW9uOiB2YXIoLS1hYnNvbHV0ZSk7XG4gIGxlZnQ6IDExMXB4O1xuICB0b3A6IC01cHg7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbn1cblxuZGl2IC5zZWNvbmQtaGFuZDo6YmVmb3JlIHtcbiAgY29udGVudDogXCJcIjtcbiAgd2lkdGg6IDE1cHg7XG4gIGJhY2tncm91bmQ6IHZhcigtLWJvcmRlci1jb2xvcik7XG4gIGhlaWdodDogMTVweDtcbiAgcG9zaXRpb246IHZhcigtLWFic29sdXRlKTtcbiAgbGVmdDogMjNweDtcbiAgdG9wOiAtN3B4O1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHJhZGlhbC1ncmFkaWVudChjaXJjbGUsIGJsYWNrLCB3aGl0ZSwgYmxhY2spO1xufVxuXG5kaXYgLm1pbnV0ZS1oYW5kIHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IpO1xuICAgIHBvc2l0aW9uOiB2YXIoLS1hYnNvbHV0ZSk7XG4gICAgdG9wOiA1MXB4O1xuICAgIGhlaWdodDogNTBweDtcbiAgICBsZWZ0OiA4NXB4O1xuICAgIHdpZHRoOiA1cHg7XG59XG5cbmRpdiAubWludXRlLWhhbmQ6OmJlZm9yZSB7XG4gICAgcG9zaXRpb246IHZhcigtLWFic29sdXRlKTtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGJvcmRlci1yaWdodDogNHB4IHNvbGlkIHZhcigtLXRyYW5zcGFyZW50KTtcbiAgICBib3JkZXItbGVmdDogM3B4IHNvbGlkIHZhcigtLXRyYW5zcGFyZW50KTtcbiAgICB0b3A6IC0yNHB4O1xuICAgIGxlZnQ6IC0xcHg7XG4gICAgYm9yZGVyLWJvdHRvbTogMjNweCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IpO1xufVxuXG5kaXYgLmhvdXItaGFuZC1yb3VuZCB7XG4gIHBvc2l0aW9uOiB2YXIoLS1hYnNvbHV0ZSk7XG4gIGhlaWdodDogOXB4O1xuICBib3JkZXItbGVmdDogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1jb2xvcik7XG4gIGxlZnQ6IDM1JTtcbiAgdG9wOiAtMTBweDtcbn1cblxuZGl2IC5ob3VyLWhhbmQtcm91bmQ6OmJlZm9yZSB7XG4gICAgcG9zaXRpb246IHZhcigtLWFic29sdXRlKTtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGhlaWdodDogN3B4O1xuICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWNvbG9yKTtcbiAgICByaWdodDogM3B4O1xuICAgIHRvcDogLTVweDtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgxMjBkZWcpO1xufVxuXG5kaXYgLmhvdXItaGFuZC1yb3VuZDo6YWZ0ZXIge1xuICAgIHBvc2l0aW9uOiB2YXIoLS1hYnNvbHV0ZSk7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBoZWlnaHQ6IDdweDtcbiAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1jb2xvcik7XG4gICAgbGVmdDogMnB4O1xuICAgIHRvcDogLTVweDtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSg2M2RlZyk7XG59XG5cbmRpdiAuaG91ci1oYW5kLWFycm93e1xuICBwb3NpdGlvbjogdmFyKC0tYWJzb2x1dGUpO1xuICBjb250ZW50OiBcIlwiO1xuICBib3JkZXItcmlnaHQ6IDZweCBzb2xpZCB2YXIoLS10cmFuc3BhcmVudCk7XG4gIGJvcmRlci1sZWZ0OiA2cHggc29saWQgdmFyKC0tdHJhbnNwYXJlbnQpO1xuICB0b3A6IC0zMXB4O1xuICBsZWZ0OiAtNHB4O1xuICBib3JkZXItYm90dG9tOiAxNXB4IHNvbGlkIHZhcigtLWJvcmRlci1jb2xvcik7XG4gIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDZweDtcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDZweDtcbn1cblxuZGl2IC5ob3VyIHtcbiAgICB0cmFuc2Zvcm0tb3JpZ2luOiA3MCUgODUlO1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjA1cztcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7XG4gICAgdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjEsIDIuNywgMC41OCwgMSk7XG59XG5cbmRpdiAuaGFuZCB7XG4gIHRvcDogNTElO1xuICBwb3NpdGlvbjogdmFyKC0tYWJzb2x1dGUpO1xuICB0cmFuc2Zvcm0tb3JpZ2luOiA3MCU7XG4gIHRyYW5zaXRpb246IGFsbCAwLjA1cztcbiAgdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpO1xuICB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMSwgMi43LCAwLjU4LCAxKTtcbn1cblxuZGl2IC5heGlzLWNpcmNsZSB7XG4gIGhlaWdodDogMTBweDtcbiAgd2lkdGg6IDEwcHg7XG4gIGJvcmRlcjogNXB4IHNvbGlkIHZhcigtLWJvcmRlci1jb2xvcik7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgcG9zaXRpb246IHZhcigtLWFic29sdXRlKTtcbiAgdG9wOiA4NXB4O1xuICBsZWZ0OiA3OHB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1ib3JkZXItY29sb3IpO1xuICB6LWluZGV4OjE7XG4gfVxuXG5kaXYgLmF4aXMtY2lyY2xlIC5kb3QtcHVuY3R1cmUge1xuICB6LWluZGV4OiAxO1xuICB3aWR0aDogNnB4O1xuICBiYWNrZ3JvdW5kOiBzaWx2ZXI7XG4gIGhlaWdodDogNnB4O1xuICBwb3NpdGlvbjogdmFyKC0tYWJzb2x1dGUpO1xuICBsZWZ0OiAycHg7XG4gIHRvcDogMnB4O1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gfVxuIGRpdiAuY2xvY2stY3Jvd24ge1xuICBwb3NpdGlvbiA6YWJzb2x1dGU7XG4gIGxlZnQ6MjAxcHg7XG4gIHRvcDo1MSU7XG4gIHRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTtcbiAgei1pbmRleDoxO1xuIH1cbiBkaXYgLmNsb2NrLWNyb3duOjpiZWZvcmUge1xuICBjb250ZW50OlwiXCI7XG4gIHBvc2l0aW9uIDp2YXIoLS1hYnNvbHV0ZSk7XG4gIHdpZHRoOiAxMHB4O1xuICBoZWlnaHQ6IDA7XG4gIGJvcmRlci1sZWZ0OiAycHggc29saWQgdmFyKC0tdHJhbnNwYXJlbnQpO1xuICBib3JkZXItcmlnaHQ6IDJweCBzb2xpZCB2YXIoLS10cmFuc3BhcmVudCk7XG4gIGJvcmRlci1ib3R0b206IDEwcHggc29saWQgdmFyKC0tY29sb3IpO1xuICB0b3A6LTEwcHg7XG4gIGxlZnQ6LTFweDtcbiB9XG4gZGl2ICAuc3BpbmRsZSB7XG4gIHBvc2l0aW9uIDphYnNvbHV0ZTtcbiAgbGVmdDoyMTZweDtcbiAgdG9wOjQ5JTtcbiAgdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpO1xuICB0cmFuc2l0aW9uOmFsbCAycztcblxuIH1cbiBkaXYgLnNwaW5kbGU6OmFmdGVyIHtcbiAgY29udGVudDogXCJcIjtcbiAgcG9zaXRpb246IHZhcigtLWFic29sdXRlKTtcbiAgd2lkdGg6IDRweDtcbiAgbGVmdDogOHB4O1xuICBib3JkZXItYm90dG9tOiAxNHB4IHNvbGlkIHZhcigtLWNvbG9yKTtcbiAgb3BhY2l0eTowXG4gfVxuXG4gZGl2IC5zcGluZGxlLW1vdmU6OmFmdGVyIHtcbiAgIG9wYWNpdHk6MTtcblxuIH1cblxuIGRpdiAuY2xvY2stY3Jvd24tZHJhZyB7XG4gICBsZWZ0OjIxNXB4O1xuIH1cbiBkaXYgLmNoYW5nZS1ob3VyIHtcbiAgICB0cmFuc2Zvcm0tb3JpZ2luOiA3MCUgODUlO1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjA1cztcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7XG4gICAgdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjEsIDIuNywgMC41OCwgMSk7XG4gfVxuYDtcbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIE5neEFuYWxvZ1dyaXN0V2F0Y2hTZXJ2aWNlIHtcbiAgQ0xPQ0tfTlVNQkVSID0gMTI7XG4gIGlubGluZVN0eWxlSW5mbzogYW55ID0ge1xuICAgIGJvcmRlcjogJ25vbmUnLFxuICAgIGJvcmRlckJvdHRvbTogJzJweCBzb2xpZCB0ZWFsJyxcbiAgICBpbnB1dEJvcmRlckJvdHRvbTogJzJweCBzb2xpZCBibHVlJyxcbiAgICBvdXRsaW5lOiAnbm9uZScsXG4gICAgY29sb3I6ICdibHVlJyxcbiAgICBmb250U2l6ZTogJzE4cHgnLFxuICAgIGxhYmVsRm9udFNpemU6ICcxNHB4JyxcbiAgICBsZWZ0OiAnMTBweCcsXG4gICAgYm90dG9tOiAnMTBweCcsXG4gICAgcmVsYXRpdmU6ICdyZWxhdGl2ZScsXG4gICAgYWJzb2x1dGU6ICdhYnNvbHV0ZScsXG4gICAgZGlzcGxheTogJ2lubGluZS1ibG9jaycsXG4gICAgbWFyZ2luYm90dG9tOiAnMjVweCcsXG4gICAgZmxvYXQ6ICdsZWZ0JyxcbiAgICBtYXJnaW5yaWdodDogJzI1cHgnLFxuICAgIHBhZGRpbmc6ICcycmVtJyxcbiAgICB0b3A6ICcxNXB4JyxcbiAgICB3aWR0aDogJzI1MHB4JyxcbiAgICBib3hTaGFkb3c6ICcjZGVkOWQ5IDBweCAzcHggNHB4JyxcbiAgICBib3hXaWR0aDogJzUwMHB4JyxcbiAgICBib3hIZWlnaHQ6ICc1NzVweCcsXG4gICAgaW5oZXJpdDogJ2luaGVyaXQnLFxuICAgIHRyYW5zaXN0aW9uVG9wOiAndG9wIDJzIGN1YmljLWJlemllcigwLjUzLCAwLjQ5LCAwLjM1LCAwLjM5KSAwcycsXG4gICAgbWFyZ2luTGVmdDogJy0xNXB4JyxcbiAgICBpY29uVG9wOiAnMjRweCcsXG4gICAgaWNvbkZvbnRTaXplOiAnMjBweCcsXG4gICAgYm94RGlzcGxheU5vbmU6ICdub25lJyxcbiAgICBib3hEaXNwbGF5RmxleDogJ2ZsZXgnLFxuICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICBjdXJzb3I6ICdwb2ludGVyJyxcbiAgICBwcmltYXJ5V2lkdGg6ICcyMDJweCcsXG4gICAgcHJpbWFyeUhlaWdodDogJzIwMnB4JyxcbiAgICBwcmltYXJ5Qm9yZGVyUmFkaXVzOiAnNTAlJyxcbiAgICBwcmltYXJ5Qm9yZGVyOiAnMTBweCBzb2xpZCB2YXIoLS1jb2xvciknLFxuICAgIHNlY29uZGFyeVdpZHRoOiAnMTkzcHgnLFxuICAgIHNlY29uZGFyeUhlaWdodDogJzE5M3B4JyxcbiAgICBzZWNvbmRhcnlCb3JkZXJSYWRpdXM6ICc1MCUnLFxuICAgIHNlY29uZGFyeUJvcmRlcjogJzZweCBzb2xpZCBncmF5JyxcbiAgICB0aGlyZFdpZHRoOiAnMTg0cHgnLFxuICAgIHRoaXJkSGVpZ2h0OiAnMTg1cHgnLFxuICAgIHRoaXJkQm9yZGVyUmFkaXVzOiAnNTAlJyxcbiAgICB0aGlyZEJvcmRlcjogJzVweCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IpJyxcbiAgICB0aGlyZFRvcDogJy0xcHgnLFxuICAgIG51bUxlZnQ6ICcxMzNweCcsXG4gICAgbnVtVG9wOiAnMTRweCcsXG4gICAgY2xvY2tOdW06IFtcbiAgICAgIHtcbiAgICAgICAgbGVmdDogJzEzMHB4JyxcbiAgICAgICAgdG9wOiAnMThweCdcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGxlZnQ6ICcxNjBweCcsXG4gICAgICAgIHRvcDogJzQ5cHgnLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbGVmdDogJzE2NXB4JyxcbiAgICAgICAgdG9wOiAnODlweCcsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBsZWZ0OiAnMTUxcHgnLFxuICAgICAgICB0b3A6ICcxMjhweCcsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBsZWZ0OiAnMTI1cHgnLFxuICAgICAgICB0b3A6ICcxNTNweCcsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBsZWZ0OiAnODZweCcsXG4gICAgICAgIHRvcDogJzE2MnB4JyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGxlZnQ6ICc0OXB4JyxcbiAgICAgICAgdG9wOiAnMTUzcHgnLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbGVmdDogJzE5cHgnLFxuICAgICAgICB0b3A6ICcxMjdweCcsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBsZWZ0OiAnN3B4JyxcbiAgICAgICAgdG9wOiAnODlweCcsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBsZWZ0OiAnMTNweCcsXG4gICAgICAgIHRvcDogJzQ4cHgnLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbGVmdDogJzM5cHgnLFxuICAgICAgICB0b3A6ICcyMHB4JyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGxlZnQ6ICc4MXB4JyxcbiAgICAgICAgdG9wOiAnM3B4JyxcbiAgICAgIH1cbiAgICBdLFxuICAgIGJlbHRUb3A6ICctMTQzcHgnLFxuICAgIGJlbHRMZWZ0OiAnODVweCcsXG4gICAgYmVsdFdpZHRoOiAnMzhweCcsXG4gICAgYmVsdEhlaWdodDogJzQ4cHgnLFxuICAgIGJlbHRCYWNrZ3JvdW5kQ29sb3I6ICcjMkY0RjRGJyxcbiAgICB3cmFwV2lkdGg6ICcxNXB4JyxcbiAgICB3cmFwQm9yZGVyQm90dG9tOiAnNTRweCBzb2xpZCB2YXIoLS1jb2xvciknLFxuICAgIHdyYXBCb3JkZXJMZWZ0OiAnMTZweCBzb2xpZCB3aGl0ZScsXG4gICAgd3JhcExlZnQ6ICczNyUnLFxuICAgIHdyYXBUb3A6ICcyMDdweCcsXG4gICAgcmlnaHRXcmFwV2lkdGg6ICcxNXB4JyxcbiAgICByaWdodEJvcmRlclJpZ2h0UmFkaXVzOiAnOXB4JyxcbiAgICByaWdodFdyYXBCb3JkZXJCb3R0b206ICc2M3B4IHNvbGlkIHZhcigtLWNvbG9yKScsXG4gICAgcmlnaHRXcmFwQm9yZGVycmlnaHQ6ICcxNnB4IHNvbGlkIHdoaXRlJyxcbiAgICByaWdodFdyYXBMZWZ0OiAnNjAlJyxcbiAgICByaWdodFdyYXBUb3A6ICczMiUnLFxuICAgIHJpZ2h0V3JhcE1hcmdpbjogJy03cHgnLFxuICAgIHJpZ2h0Qm9yZGVyTGVmdFJhZGl1czogJzEwcHgnLFxuICB9O1xuICB3YXRjaEVsZW1lbnRzID0gWydsYWJlbCcsICdpbnB1dCcsICdzcGFuJywgJ3ByaW1hcnlDcmljbGUnLFxuICAgICdzZWNvbmRhcnlDaXJjbGUnLCAndGVyaXRhcnlDaXJjbGUnLCAnY2xvY2tCb3gnLCAnaG91ckhhbmQnLCAnbWludXRlSGFuZCcsICdzZWNvbmRIYW5kJ107XG5cbiAgY29uc3RydWN0b3IoKSB7IH1cblxuICBmZXRjaEludGVybmFsU3R5bGUoKSB7XG4gICAgcmV0dXJuIGludGVybmFsU3R5bGU7XG4gIH1cblxuICBmZXRjaEluTGluZVN0eWxlKCkge1xuICAgIHJldHVybiB0aGlzLmlubGluZVN0eWxlSW5mbztcbiAgfVxuXG5cbiAgY3JlYXRlRHVnSG9sZXMod3JhcHBlciwgcmVuZGVyZXIpIHtcbiAgICBjb25zdCBzdHlsZVRvRHVnSG9sZSA9IHt9O1xuICAgIGR1Z0hvbGVzLmZvckVhY2goZHVnSG9sZSA9PiB7XG4gICAgICBjb25zdCBkdWdIb2wgPSByZW5kZXJlci5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG4gICAgICByZW5kZXJlci5hcHBlbmRDaGlsZCh3cmFwcGVyLCBkdWdIb2wpO1xuICAgICAgc3R5bGVUb0R1Z0hvbGVbZHVnSG9sZV0gPSBkdWdIb2w7XG4gICAgfSk7XG4gICAgcmV0dXJuIHN0eWxlVG9EdWdIb2xlO1xuICB9XG5cbiAgY3JlYXRlV2F0Y2hTdHJhcHMod3JhcHBlciwgcmVuZGVyZXIpIHtcbiAgICBjb25zdCBzdHlsZVRvV2F0Y2hTdHJhcCA9IHt9O1xuICAgIHdhdGNoU3RyYXBzLmZvckVhY2goKHdhdGNoU3RyYXAsIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCBzdHJhcCA9IHJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcbiAgICAgIHJlbmRlcmVyLmFwcGVuZENoaWxkKHdyYXBwZXIsIHN0cmFwKTtcbiAgICAgIHN0eWxlVG9XYXRjaFN0cmFwWydlbGVtZW50TmFtZScgKyBpbmRleF0gPSBzdHJhcDtcbiAgICAgIHN0eWxlVG9XYXRjaFN0cmFwWydjbGFzc05hbWUnICsgaW5kZXhdID0gd2F0Y2hTdHJhcC5zdHlsZUNsYXNzTmFtZS5tYXAoY2xhc3NOYW1lID0+IHtcbiAgICAgICAgcmV0dXJuIGNsYXNzTmFtZTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHJldHVybiBzdHlsZVRvV2F0Y2hTdHJhcDtcbiAgfVxuXG4gIGFkZENsb2NrTnVtYmVycyh0aGlyZENpcmNsZSwgYXBwbHlTdHlsZUluQ2xvY2tOdW0sIHJlbmRlcmVyKSB7XG4gICAgZm9yIChsZXQgcG9zID0gMDsgcG9zIDwgdGhpcy5DTE9DS19OVU1CRVI7IHBvcysrKSB7XG4gICAgICBjb25zdCBudW1TcGFuID0gcmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICAgICAgY29uc3QgbnVtID0gcmVuZGVyZXIuY3JlYXRlVGV4dCgocG9zICsgMSkudG9TdHJpbmcoKSk7XG4gICAgICByZW5kZXJlci5hcHBlbmRDaGlsZChudW1TcGFuLCBudW0pO1xuICAgICAgcmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcmRDaXJjbGUsIG51bVNwYW4pO1xuICAgICAgcmVuZGVyZXIuc2V0UHJvcGVydHkobnVtU3BhbiwgJ1t0aW1lQ2hhbmdlXScsICdvbk51bUNsaWNrKCknKTtcbiAgICAgIGFwcGx5U3R5bGVJbkNsb2NrTnVtKG51bVNwYW4sIHBvcywgdGhpcy5pbmxpbmVTdHlsZUluZm8pO1xuICAgIH1cbiAgfVxuXG59XG5cblxuIl19