tango-app-ui-store-builder 1.2.17 → 1.2.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/access-denied/access-denied.component.mjs +31 -0
- package/esm2022/lib/components/collection-update-ai/collection-update-ai.component.mjs +3 -3
- package/esm2022/lib/components/collection-update-ai/find-replace-layout/prepare-template/prepare-template.component.mjs +3 -3
- package/esm2022/lib/components/collection-update-ai/find-replace-layout/review-replace/review-replace.component.mjs +3 -3
- package/esm2022/lib/components/fixture-template/template-assign-stores/preview-modal/preview-modal.component.mjs +3 -3
- package/esm2022/lib/components/fixture-template/template-assign-stores/template-assign-stores.component.mjs +3 -3
- package/esm2022/lib/components/fixture-template-table/find-and-replace/find-and-replace.component.mjs +3 -3
- package/esm2022/lib/components/fixture-template-table/fixture-template-table.component.mjs +25 -3
- package/esm2022/lib/components/fixture-template-tree/fixture-template-tree.component.mjs +3 -3
- package/esm2022/lib/components/manage-store-plano/manage-store-plano.component.mjs +3 -3
- package/esm2022/lib/components/manage-store-plano/plano-rollout/plano-rollout.component.mjs +3 -3
- package/esm2022/lib/components/manage-store-plano/verification-feedback/verification-feedback.component.mjs +9 -3
- package/esm2022/lib/components/manage-store-plano/zone-verification-feedback/zone-verification-feedback.component.mjs +9 -3
- package/esm2022/lib/components/onboard-store-plano/onboard-store-plano.component.mjs +133 -21
- package/esm2022/lib/components/plano-configurations/plano-configurations.component.mjs +8 -3
- package/esm2022/lib/components/plano-library/fixture-library/fixture-library.component.mjs +28 -5
- package/esm2022/lib/components/plano-tools/cad-render/cad-render.component.mjs +3 -3
- package/esm2022/lib/components/plano-tools/delete-floor/delete-floor.component.mjs +3 -3
- package/esm2022/lib/components/plano-tools/layout-touchup/layout-touchup.component.mjs +3 -3
- package/esm2022/lib/components/plano-tools/plano-migrate/plano-migrate.component.mjs +3 -3
- package/esm2022/lib/components/plano-tools/tool-page-header/tool-page-header.component.mjs +3 -3
- package/esm2022/lib/components/plano-tools/tools-parent/tools-parent.component.mjs +3 -3
- package/esm2022/lib/components/planogram/merch-compliance/merch-compliance.component.mjs +3 -3
- package/esm2022/lib/components/planogram/merch-compliance/product-locator/product-locator.component.mjs +3 -3
- package/esm2022/lib/components/planogram/plano-overview/plano-comparison/plano-comparison.component.mjs +3 -3
- package/esm2022/lib/components/planogram/plano-overview/plano-overview.component.mjs +3 -3
- package/esm2022/lib/components/popups/publish-plano-modal/publish-plano-modal.component.mjs +1 -1
- package/esm2022/lib/components/store-plano/store-plano-tree-view/store-plano-tree-view.component.mjs +3 -3
- package/esm2022/lib/components/store-plano/store-plano.component.mjs +3 -3
- package/esm2022/lib/functions/feature-access.guard.mjs +20 -0
- package/esm2022/lib/functions/plano.function.mjs +22 -1
- package/esm2022/lib/services/store-builder.service.mjs +15 -3
- package/esm2022/lib/tango-store-builder-routing.module.mjs +11 -1
- package/esm2022/lib/tango-store-builder.module.mjs +5 -2
- package/fesm2022/tango-app-ui-store-builder.mjs +318 -61
- package/fesm2022/tango-app-ui-store-builder.mjs.map +1 -1
- package/lib/components/access-denied/access-denied.component.d.ts +18 -0
- package/lib/components/fixture-template-table/fixture-template-table.component.d.ts +6 -0
- package/lib/components/manage-plano/rollout-table/rollout-table.component.d.ts +2 -2
- package/lib/components/manage-plano/verification-table/verification-table.component.d.ts +5 -5
- package/lib/components/manage-store-plano/verification-feedback/verification-feedback.component.d.ts +1 -0
- package/lib/components/manage-store-plano/zone-verification-feedback/zone-verification-feedback.component.d.ts +1 -0
- package/lib/components/onboard-store-plano/onboard-store-plano.component.d.ts +8 -0
- package/lib/components/plano-library/fixture-library/fixture-library.component.d.ts +5 -1
- package/lib/functions/feature-access.guard.d.ts +9 -0
- package/lib/functions/plano.function.d.ts +9 -0
- package/lib/services/store-builder.service.d.ts +6 -0
- package/lib/tango-store-builder.module.d.ts +38 -37
- package/package.json +1 -1
|
@@ -2,7 +2,7 @@ import { TitleCasePipe } from "@angular/common";
|
|
|
2
2
|
import { Component, HostListener, Input, ViewChild, } from "@angular/core";
|
|
3
3
|
import { Subject, takeUntil } from "rxjs";
|
|
4
4
|
import * as fabric from "fabric";
|
|
5
|
-
import { getFixtureCanvasLabel } from "../../../functions/plano.function";
|
|
5
|
+
import { getFixtureCanvasLabel, getFixtureProductCapacity } from "../../../functions/plano.function";
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
7
|
import * as i1 from "tango-app-ui-global";
|
|
8
8
|
import * as i2 from "@angular/common";
|
|
@@ -802,7 +802,7 @@ export class MerchComplianceComponent {
|
|
|
802
802
|
stroke: "transparent",
|
|
803
803
|
fill: "transparent",
|
|
804
804
|
});
|
|
805
|
-
const bottomTextContent = new fabric.Textbox(`Shelves - ${actualShelves.length} . Products - ${fixtureData.
|
|
805
|
+
const bottomTextContent = new fabric.Textbox(`Shelves - ${actualShelves.length} . Products - ${getFixtureProductCapacity(fixtureData.shelfConfig)} . VM - ${fixtureData.vmConfig?.length}`, {
|
|
806
806
|
left: bottomX + bottomWidth / 2,
|
|
807
807
|
top: bottomY + bottomHeight / 2,
|
|
808
808
|
fontSize: 5,
|
|
@@ -1147,4 +1147,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
1147
1147
|
type: HostListener,
|
|
1148
1148
|
args: ["window:resize"]
|
|
1149
1149
|
}] } });
|
|
1150
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVyY2gtY29tcGxpYW5jZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1zdG9yZS1idWlsZGVyL3NyYy9saWIvY29tcG9uZW50cy9wbGFub2dyYW0vbWVyY2gtY29tcGxpYW5jZS9tZXJjaC1jb21wbGlhbmNlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLXN0b3JlLWJ1aWxkZXIvc3JjL2xpYi9jb21wb25lbnRzL3BsYW5vZ3JhbS9tZXJjaC1jb21wbGlhbmNlL21lcmNoLWNvbXBsaWFuY2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hELE9BQU8sRUFFTCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFJTCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHMUMsT0FBTyxLQUFLLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDakMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7Ozs7O0FBUTFFLE1BQU0sT0FBTyx3QkFBd0I7SUFxQ3pCO0lBQ0E7SUFuQ0QsU0FBUyxDQUFNO0lBRXhCLFFBQVEsQ0FBaUM7SUFDWCxZQUFZLENBQThCO0lBR3hFLFFBQVE7UUFDTixVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3RCLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNWLENBQUM7SUFFRCxNQUFNLENBQWlCO0lBQ3ZCLFFBQVEsQ0FBUztJQUVqQixNQUFNLENBQVM7SUFFZixTQUFTLEdBQVcsQ0FBQyxDQUFDO0lBQ3RCLGFBQWEsR0FBRyxJQUFJLENBQUMs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QUFZO3NCQUF6QyxTQUFTO3VCQUFDLGlCQUFpQjtnQkFHNUIsUUFBUTtzQkFEUCxZQUFZO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUaXRsZUNhc2VQaXBlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQge1xyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgQ29tcG9uZW50LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgSG9zdExpc3RlbmVyLFxyXG4gIElucHV0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkRlc3Ryb3ksXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBWaWV3Q2hpbGQsXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgR2xvYmFsU3RhdGVTZXJ2aWNlIH0gZnJvbSBcInRhbmdvLWFwcC11aS1nbG9iYWxcIjtcclxuXHJcbmltcG9ydCAqIGFzIGZhYnJpYyBmcm9tIFwiZmFicmljXCI7XHJcbmltcG9ydCB7IGdldEZpeHR1cmVDYW52YXNMYWJlbCB9IGZyb20gXCIuLi8uLi8uLi9mdW5jdGlvbnMvcGxhbm8uZnVuY3Rpb25cIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcIm1lcmNoLWNvbXBsaWFuY2VcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL21lcmNoLWNvbXBsaWFuY2UuY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybDogXCIuL21lcmNoLWNvbXBsaWFuY2UuY29tcG9uZW50LnNjc3NcIixcclxuICBwcm92aWRlcnM6IFtUaXRsZUNhc2VQaXBlXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIE1lcmNoQ29tcGxpYW5jZUNvbXBvbmVudFxyXG4gIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3lcclxue1xyXG4gIEBJbnB1dCgpIGZsb29yRGF0YTogYW55O1xyXG4gIEBWaWV3Q2hpbGQoXCJiYXNlQ2FudmFzXCIsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG4gIGNhbnZhc0VsITogRWxlbWVudFJlZjxIVE1MQ2FudmFzRWxlbWVudD47XHJcbiAgQFZpZXdDaGlsZChcImNhbnZhc0NvbnRhaW5lclwiKSBjb250YWluZXJSZWYhOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuXHJcbiAgQEhvc3RMaXN0ZW5lcihcIndpbmRvdzpyZXNpemVcIilcclxuICBvblJlc2l6ZSgpOiB2b2lkIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLnJlc2l6ZUNhbnZhcygpO1xyXG4gICAgfSwgMzAwKTtcclxuICB9XHJcblxyXG4gIGNhbnZhcyE6IGZhYnJpYy5DYW52YXM7XHJcbiAgY2xpZW50SWQ6IHN0cmluZztcclxuXHJcbiAgY2RuVXJsOiBzdHJpbmc7XHJcblxyXG4gIHpvb21MZXZlbDogbnVtYmVyID0gMTtcclxuICBmaXh0dXJlSGVpZ2h0ID0gdGhpcy50b1BpeGVscygxNTI0LCBcIm1tXCIpO1xyXG4gIGZpeHR1cmVXaWR0aCA9IHRoaXMudG9QaXhlbHMoMTIyMCwgXCJtbVwiKTtcclxuICB3YWxsVGhpY2tuZXNzID0gMzA7XHJcbiAgdmVydGljYWxNYXJnaW4gPSAoMS4yNSAvIDEwMCkgKiB0aGlzLmZpeHR1cmVIZWlnaHQ7XHJcblxyXG4gIGlzUGFnZUxvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgc2VsZWN0ZWRGaXh0dXJlOiBhbnk7XHJcbiAgc2VsZWN0ZWRGaXh0dXJlRGF0YTogYW55O1xyXG5cclxuICBwcml2YXRlIGFjdGl2ZUhpZ2hsaWdodDogZmFicmljLlJlY3QgfCBudWxsID0gbnVsbDtcclxuICBwcml2YXRlIGNhbmNlbEhpZ2hsaWdodEJsaW5rID0gZmFsc2U7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZ3M6IEdsb2JhbFN0YXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgdGl0bGVDYXNlOiBUaXRsZUNhc2VQaXBlLFxyXG4gICkge1xyXG4gICAgdGhpcy5ncy5lbnZpcm9ubWVudC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChlKSA9PiB7XHJcbiAgICAgIGlmIChlKSB0aGlzLmNkblVybCA9IGUucGxhbm9ncmFtQ0ROO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlc1tcImZsb29yRGF0YVwiXT8uY3VycmVudFZhbHVlKSB7XHJcbiAgICAgIHRoaXMuZmxvb3JEYXRhID0gY2hhbmdlc1tcImZsb29yRGF0YVwiXS5jdXJyZW50VmFsdWU7XHJcblxyXG4gICAgICBpZiAodGhpcy5mbG9vckRhdGE/LmZsb29yQ2hhbmdlKSB7XHJcbiAgICAgICAgdGhpcy5vbkNsaWNrQ2xvc2UoKTtcclxuICAgICAgICB0aGlzLnJlbmRlckZsb29yKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuY2FudmFzID0gbmV3IGZhYnJpYy5DYW52YXModGhpcy5jYW52YXNFbD8ubmF0aXZlRWxlbWVudCwge1xyXG4gICAgICBzZWxlY3Rpb246IHRydWUsXHJcbiAgICAgIHNlbGVjdGlvbkZ1bGx5Q29udGFpbmVkOiB0cnVlLFxyXG4gICAgICBwZXJQaXhlbFRhcmdldEZpbmQ6IHRydWUsXHJcbiAgICAgIHRhcmdldEZpbmRUb2xlcmFuY2U6IDUsXHJcbiAgICAgIHdpZHRoOiAxMDAwLFxyXG4gICAgICBoZWlnaHQ6IDcwMCxcclxuICAgIH0pO1xyXG4gICAgdGhpcy5zZXR1cFpvb21IYW5kbGVycygpO1xyXG5cclxuICAgIGlmICh0aGlzLmZsb29yRGF0YSkge1xyXG4gICAgICB0aGlzLnJlbmRlckZsb29yKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXNpemVDYW52YXMoKTogdm9pZCB7XHJcbiAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLmNvbnRhaW5lclJlZi5uYXRpdmVFbGVtZW50O1xyXG4gICAgdGhpcy5jYW52YXMuc2V0RGltZW5zaW9ucyh7XHJcbiAgICAgIHdpZHRoOiBjb250YWluZXIuY2xpZW50V2lkdGggLSA1MCxcclxuICAgICAgaGVpZ2h0OiBjb250YWluZXIuY2xpZW50SGVpZ2h0IC0gNDAsXHJcbiAgICB9KTtcclxuICAgIHRoaXMuY2FudmFzLnJlcXVlc3RSZW5kZXJBbGwoKTtcclxuICB9XHJcblxyXG4gIHNldHVwWm9vbUhhbmRsZXJzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5jYW52YXMub24oXCJtb3VzZTp3aGVlbFwiLCAob3B0OiBmYWJyaWMuVEV2ZW50PFdoZWVsRXZlbnQ+KSA9PiB7XHJcbiAgICAgIGNvbnN0IGUgPSBvcHQuZTtcclxuXHJcbiAgICAgIGlmIChlLmN0cmxLZXkgfHwgZS5tZXRhS2V5KSB7XHJcbiAgICAgICAgY29uc3QgZGVsdGEgPSBlLmRlbHRhWTtcclxuICAgICAgICBsZXQgem9vbSA9IHRoaXMuY2FudmFzLmdldFpvb20oKTtcclxuICAgICAgICB6b29tICo9IDAuOTk1ICoqIGRlbHRhO1xyXG5cclxuICAgICAgICB6b29tID0gTWF0aC5tYXgoMC4wNSwgTWF0aC5taW4oem9vbSwgNSkpO1xyXG5cclxuICAgICAgICB0aGlzLmNhbnZhcy56b29tVG9Qb2ludChcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgeDogZS5vZmZzZXRYLFxyXG4gICAgICAgICAgICB5OiBlLm9mZnNldFksXHJcbiAgICAgICAgICB9IGFzIGZhYnJpYy5Qb2ludCxcclxuICAgICAgICAgIHpvb20sXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIGxldCBpc0RyYWdnaW5nID0gZmFsc2U7XHJcbiAgICBsZXQgbGFzdFBvc1ggPSAwO1xyXG4gICAgbGV0IGxhc3RQb3NZID0gMDtcclxuXHJcbiAgICB0aGlzLmNhbnZhcy5vbihcIm1vdXNlOmRvd25cIiwgKG9wdDogYW55KSA9PiB7XHJcbiAgICAgIGlmICghb3B0LnRhcmdldCkge1xyXG4gICAgICAgIGlzRHJhZ2dpbmcgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuY2FudmFzLnNlbGVjdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgIGNvbnN0IGUgPSBvcHQuZTtcclxuICAgICAgICBsYXN0UG9zWCA9IGUuY2xpZW50WDtcclxuICAgICAgICBsYXN0UG9zWSA9IGUuY2xpZW50WTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5jYW52YXMub24oXCJtb3VzZTptb3ZlXCIsIChvcHQ6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoaXNEcmFnZ2luZyAmJiB0aGlzLmNhbnZhcy52aWV3cG9ydFRyYW5zZm9ybSkge1xyXG4gICAgICAgIGNvbnN0IGUgPSBvcHQuZTtcclxuICAgICAgICBjb25zdCB2cHQgPSB0aGlzLmNhbnZhcy52aWV3cG9ydFRyYW5zZm9ybTtcclxuICAgICAgICB2cHRbNF0gKz0gZS5jbGllbnRYIC0gbGFzdFBvc1g7XHJcbiAgICAgICAgdnB0WzVdICs9IGUuY2xpZW50WSAtIGxhc3RQb3NZO1xyXG4gICAgICAgIHRoaXMuY2FudmFzLnJlcXVlc3RSZW5kZXJBbGwoKTtcclxuICAgICAgICBsYXN0UG9zWCA9IGUuY2xpZW50WDtcclxuICAgICAgICBsYXN0UG9zWSA9IGUuY2xpZW50WTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5jYW52YXMub24oXCJtb3VzZTp1cFwiLCAoKSA9PiB7XHJcbiAgICAgIGlzRHJhZ2dpbmcgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jYW52YXMuc2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgcmVuZGVyRmxvb3IoKSB7XHJcbiAgICB0aGlzLmNhbnZhcz8uY2xlYXIoKTtcclxuICAgIGF3YWl0IHRoaXMuZHJhd0xheW91dEVsZW1lbnRzKCk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5yZXNpemVDYW52YXMoKTtcclxuICAgICAgdGhpcy5maXRDYW52YXNUb0xheW91dEFuaW1hdGVkKCk7XHJcbiAgICB9LCAzMDApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmaXRDYW52YXNUb0xheW91dEFuaW1hdGVkKGR1cmF0aW9uID0gMzAwKSB7XHJcbiAgICBpZiAoIXRoaXMuY2FudmFzKSByZXR1cm47XHJcblxyXG4gICAgY29uc3QgYm91bmRzID0gdGhpcy5nZXRGdWxsTGF5b3V0Qm91bmRzKCk7XHJcbiAgICBpZiAoIWJvdW5kcy53aWR0aCB8fCAhYm91bmRzLmhlaWdodCkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IGNhbnZhc1cgPSB0aGlzLmNhbnZhcy5nZXRXaWR0aCgpO1xyXG4gICAgY29uc3QgY2FudmFzSCA9IHRoaXMuY2FudmFzLmdldEhlaWdodCgpO1xyXG5cclxuICAgIC8vIENvbXB1dGUgem9vbSB0byBmaXRcclxuICAgIGNvbnN0IHNjYWxlWCA9IGNhbnZhc1cgLyBib3VuZHMud2lkdGg7XHJcbiAgICBjb25zdCBzY2FsZVkgPSBjYW52YXNIIC8gYm91bmRzLmhlaWdodDtcclxuICAgIGNvbnN0IHRhcmdldFpvb20gPSBNYXRoLm1pbihzY2FsZVgsIHNjYWxlWSk7XHJcblxyXG4gICAgY29uc3QgdGFyZ2V0VnB0ID0gW1xyXG4gICAgICAuLi4odGhpcy5jYW52YXMudmlld3BvcnRUcmFuc2Zvcm0gfHwgWzEsIDAsIDAsIDEsIDAsIDBdKSxcclxuICAgIF0gYXMgZmFicmljLlRNYXQyRDtcclxuXHJcbiAgICB0YXJnZXRWcHRbMF0gPSB0YXJnZXRab29tOyAvLyBzY2FsZVhcclxuICAgIHRhcmdldFZwdFszXSA9IHRhcmdldFpvb207IC8vIHNjYWxlWVxyXG5cclxuICAgIC8vIENlbnRlciBYXHJcbiAgICB0YXJnZXRWcHRbNF0gPSBjYW52YXNXIC8gMiAtIChib3VuZHMubGVmdCArIGJvdW5kcy53aWR0aCAvIDIpICogdGFyZ2V0Wm9vbTtcclxuXHJcbiAgICAvLyAtLS0tLSBGSVhFRDoga2VlcCBsYXlvdXQgc2xpZ2h0bHkgdXAgd2l0aG91dCBzdGFja2luZyAtLS0tLVxyXG4gICAgY29uc3QgY2VudGVyZWRZID1cclxuICAgICAgY2FudmFzSCAvIDIgLSAoYm91bmRzLnRvcCArIGJvdW5kcy5oZWlnaHQgLyAyKSAqIHRhcmdldFpvb207XHJcblxyXG4gICAgY29uc3Qgc2NhbGVkSGVpZ2h0ID0gYm91bmRzLmhlaWdodCAqIHRhcmdldFpvb207XHJcbiAgICBjb25zdCBlbXB0eVNwYWNlWSA9IGNhbnZhc0ggLSBzY2FsZWRIZWlnaHQ7XHJcblxyXG4gICAgY29uc3Qgc2hpZnRVcCA9IGVtcHR5U3BhY2VZID4gMCA/IGVtcHR5U3BhY2VZICogMC4yNSA6IDA7XHJcblxyXG4gICAgdGFyZ2V0VnB0WzVdID0gY2VudGVyZWRZIC0gc2hpZnRVcDtcclxuXHJcbiAgICAvLyBBbmltYXRlXHJcbiAgICBjb25zdCBzdGFydFZwdCA9IFsuLi50aGlzLmNhbnZhcy52aWV3cG9ydFRyYW5zZm9ybSFdIGFzIGZhYnJpYy5UTWF0MkQ7XHJcblxyXG4gICAgZmFicmljLnV0aWwuYW5pbWF0ZSh7XHJcbiAgICAgIHN0YXJ0VmFsdWU6IDAsXHJcbiAgICAgIGVuZFZhbHVlOiAxLFxyXG4gICAgICBkdXJhdGlvbixcclxuICAgICAgZWFzaW5nOiBmYWJyaWMudXRpbC5lYXNlLmVhc2VPdXRDdWJpYyxcclxuICAgICAgb25DaGFuZ2U6ICh2YWx1ZTogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgY29uc3QgdnB0ID0gdGhpcy5jYW52YXMudmlld3BvcnRUcmFuc2Zvcm0hO1xyXG5cclxuICAgICAgICB2cHRbMF0gPSBzdGFydFZwdFswXSArICh0YXJnZXRWcHRbMF0gLSBzdGFydFZwdFswXSkgKiB2YWx1ZTtcclxuICAgICAgICB2cHRbM10gPSBzdGFydFZwdFszXSArICh0YXJnZXRWcHRbM10gLSBzdGFydFZwdFszXSkgKiB2YWx1ZTtcclxuICAgICAgICB2cHRbNF0gPSBzdGFydFZwdFs0XSArICh0YXJnZXRWcHRbNF0gLSBzdGFydFZwdFs0XSkgKiB2YWx1ZTtcclxuICAgICAgICB2cHRbNV0gPSBzdGFydFZwdFs1XSArICh0YXJnZXRWcHRbNV0gLSBzdGFydFZwdFs1XSkgKiB2YWx1ZTtcclxuXHJcbiAgICAgICAgdGhpcy5jYW52YXMucmVxdWVzdFJlbmRlckFsbCgpO1xyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBkcmF3TGF5b3V0RWxlbWVudHMoKSB7XHJcbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgdGhpcy5mbG9vckRhdGEubGF5b3V0UG9seWdvbi5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMuZmxvb3JEYXRhLmxheW91dFBvbHlnb25baW5kZXhdO1xyXG5cclxuICAgICAgbGV0IHdhbGw7XHJcblxyXG4gICAgICBlbGVtZW50LnJlbGF0aXZlUG9zaXRpb24gPz89IHtcclxuICAgICAgICB4OiAwLFxyXG4gICAgICAgIHk6IDAsXHJcbiAgICAgICAgdW5pdDogXCJmdFwiLFxyXG4gICAgICB9O1xyXG5cclxuICAgICAgY29uc3QgeCA9IHRoaXMudG9QaXhlbHMoZWxlbWVudC5yZWxhdGl2ZVBvc2l0aW9uLngsIGVsZW1lbnQudW5pdCk7XHJcbiAgICAgIGNvbnN0IHkgPSB0aGlzLnRvUGl4ZWxzKGVsZW1lbnQucmVsYXRpdmVQb3NpdGlvbi55LCBlbGVtZW50LnVuaXQpO1xyXG5cclxuICAgICAgaWYgKGVsZW1lbnQuZWxlbWVudFR5cGUgPT09IFwid2FsbFwiKSB7XHJcbiAgICAgICAgY29uc3QgaGVpZ2h0ID0gdGhpcy53YWxsVGhpY2tuZXNzO1xyXG4gICAgICAgIGNvbnN0IHdpZHRoID0gdGhpcy50b1BpeGVscyhlbGVtZW50LmRpc3RhbmNlLCBlbGVtZW50LnVuaXQpO1xyXG4gICAgICAgIHdhbGwgPSB0aGlzLmRyYXdXYWxsKHRoaXMuY2FudmFzLCB4LCB5LCBoZWlnaHQsIHdpZHRoLCBlbGVtZW50KTtcclxuICAgICAgfSBlbHNlIGlmIChlbGVtZW50LmVsZW1lbnRUeXBlID09PSBcImVudHJhbmNlXCIpIHtcclxuICAgICAgICBjb25zdCBhcnJvd1dpZHRoID0gODA7XHJcbiAgICAgICAgY29uc3QgYXJyb3dIZWlnaHQgPSA3NTtcclxuICAgICAgICBjb25zdCBhcnJvd0Jhc2UgPSA0MDtcclxuICAgICAgICB0aGlzLmRyYXdFbnRyYW5jZShcclxuICAgICAgICAgIHRoaXMuY2FudmFzLFxyXG4gICAgICAgICAgeCxcclxuICAgICAgICAgIHksXHJcbiAgICAgICAgICBhcnJvd1dpZHRoLFxyXG4gICAgICAgICAgYXJyb3dIZWlnaHQsXHJcbiAgICAgICAgICBhcnJvd0Jhc2UsXHJcbiAgICAgICAgICBlbGVtZW50LFxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChlbGVtZW50LmVsZW1lbnRUeXBlID09PSBcIndhbGxcIikge1xyXG4gICAgICAgIGNvbnN0IGZpeHR1cmVHcm91cHM6IGZhYnJpYy5Hcm91cFtdID0gW107XHJcblxyXG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgZWxlbWVudD8uZml4dHVyZXM/Lmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgICBjb25zdCBmaXh0dXJlID0gZWxlbWVudC5maXh0dXJlc1tqXTtcclxuICAgICAgICAgIGNvbnN0IHggPSB0aGlzLnRvUGl4ZWxzKFxyXG4gICAgICAgICAgICBmaXh0dXJlLnJlbGF0aXZlUG9zaXRpb24ueCxcclxuICAgICAgICAgICAgZml4dHVyZS5yZWxhdGl2ZVBvc2l0aW9uLnVuaXQsXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgY29uc3QgeSA9IHRoaXMudG9QaXhlbHMoXHJcbiAgICAgICAgICAgIGZpeHR1cmUucmVsYXRpdmVQb3NpdGlvbi55LFxyXG4gICAgICAgICAgICBmaXh0dXJlLnJlbGF0aXZlUG9zaXRpb24udW5pdCxcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBjb25zdCBmaXh0dXJlSGVpZ2h0ID0gdGhpcy50b1BpeGVscyhcclxuICAgICAgICAgICAgZml4dHVyZS5maXh0dXJlU3RhdGljTGVuZ3RoLnZhbHVlLFxyXG4gICAgICAgICAgICBmaXh0dXJlLmZpeHR1cmVTdGF0aWNMZW5ndGgudW5pdCxcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBjb25zdCBmaXh0dXJlV2lkdGggPSB0aGlzLnRvUGl4ZWxzKFxyXG4gICAgICAgICAgICBmaXh0dXJlLmZpeHR1cmVTdGF0aWNXaWR0aC52YWx1ZSxcclxuICAgICAgICAgICAgZml4dHVyZS5maXh0dXJlU3RhdGljV2lkdGgudW5pdCxcclxuICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgY29uc3QgZml4dHVyZU9iaiA9IGF3YWl0IHRoaXMuZHJhd0ZpeHR1cmUoXHJcbiAgICAgICAgICAgIHRoaXMuY2FudmFzLFxyXG4gICAgICAgICAgICB4LFxyXG4gICAgICAgICAgICB5LFxyXG4gICAgICAgICAgICBmaXh0dXJlSGVpZ2h0LFxyXG4gICAgICAgICAgICBmaXh0dXJlV2lkdGgsXHJcbiAgICAgICAgICAgIGZpeHR1cmUsXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgZml4dHVyZUdyb3Vwcy5wdXNoKGZpeHR1cmVPYmogYXMgZmFicmljLkdyb3VwKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChlbGVtZW50LmlzTG9ja2VkICYmIHdhbGwpIHtcclxuICAgICAgICAgIHRoaXMuY2FudmFzLnJlbW92ZSh3YWxsKTtcclxuICAgICAgICAgIGZpeHR1cmVHcm91cHMuZm9yRWFjaCgoZikgPT4gdGhpcy5jYW52YXMucmVtb3ZlKGYpKTtcclxuXHJcbiAgICAgICAgICBjb25zdCBjb21iaW5lZEdyb3VwID0gbmV3IGZhYnJpYy5Hcm91cChbd2FsbCwgLi4uZml4dHVyZUdyb3Vwc10sIHtcclxuICAgICAgICAgICAgaGFzQ29udHJvbHM6IHRydWUsXHJcbiAgICAgICAgICAgIHNlbGVjdGFibGU6IHRydWUsXHJcbiAgICAgICAgICAgIHN1YlRhcmdldENoZWNrOiB0cnVlLFxyXG4gICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgY29tYmluZWRHcm91cC5zZXQoeyBpc0xvY2tlZDogdHJ1ZSB9KTtcclxuICAgICAgICAgIHRoaXMuY2FudmFzLmFkZChjb21iaW5lZEdyb3VwKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgZWxlbWVudD8ub3RoZXJFbGVtZW50cz8ubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgIGNvbnN0IG90aGVyRWxlbWVudCA9IGVsZW1lbnQub3RoZXJFbGVtZW50c1tqXTtcclxuICAgICAgICAgIGNvbnN0IHggPSB0aGlzLnRvUGl4ZWxzKG90aGVyRWxlbWVudC5yZWxhdGl2ZVBvc2l0aW9uLngsIFwiZnRcIik7XHJcbiAgICAgICAgICBjb25zdCB5ID0gdGhpcy50b1BpeGVscyhvdGhlckVsZW1lbnQucmVsYXRpdmVQb3NpdGlvbi55LCBcImZ0XCIpO1xyXG4gICAgICAgICAgY29uc3QgaCA9IHRoaXMudG9QaXhlbHMoXHJcbiAgICAgICAgICAgIG90aGVyRWxlbWVudC5maXh0dXJlU3RhdGljTGVuZ3RoLnZhbHVlLFxyXG4gICAgICAgICAgICBvdGhlckVsZW1lbnQuZml4dHVyZVN0YXRpY0xlbmd0aC51bml0LFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGNvbnN0IHcgPSB0aGlzLnRvUGl4ZWxzKFxyXG4gICAgICAgICAgICBvdGhlckVsZW1lbnQuZml4dHVyZVN0YXRpY1dpZHRoLnZhbHVlLFxyXG4gICAgICAgICAgICBvdGhlckVsZW1lbnQuZml4dHVyZVN0YXRpY1dpZHRoLnVuaXQsXHJcbiAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgIHRoaXMuZHJhd0xhYmVsZWRSZWN0YW5nbGUodGhpcy5jYW52YXMsIHgsIHksIHcsIGgsIG90aGVyRWxlbWVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmZsb29yRGF0YT8uY2VudGVyRml4dHVyZT8ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgY29uc3QgZml4dHVyZSA9IHRoaXMuZmxvb3JEYXRhLmNlbnRlckZpeHR1cmVbaV07XHJcbiAgICAgIGNvbnN0IHggPSB0aGlzLnRvUGl4ZWxzKFxyXG4gICAgICAgIGZpeHR1cmUucmVsYXRpdmVQb3NpdGlvbi54LFxyXG4gICAgICAgIGZpeHR1cmUucmVsYXRpdmVQb3NpdGlvbi51bml0LFxyXG4gICAgICApO1xyXG4gICAgICBjb25zdCB5ID0gdGhpcy50b1BpeGVscyhcclxuICAgICAgICBmaXh0dXJlLnJlbGF0aXZlUG9zaXRpb24ueSxcclxuICAgICAgICBmaXh0dXJlLnJlbGF0aXZlUG9zaXRpb24udW5pdCxcclxuICAgICAgKTtcclxuICAgICAgY29uc3QgZml4dHVyZUhlaWdodCA9IHRoaXMudG9QaXhlbHMoXHJcbiAgICAgICAgZml4dHVyZS5maXh0dXJlU3RhdGljTGVuZ3RoLnZhbHVlLFxyXG4gICAgICAgIGZpeHR1cmUuZml4dHVyZVN0YXRpY0xlbmd0aC51bml0LFxyXG4gICAgICApO1xyXG4gICAgICBjb25zdCBmaXh0dXJlV2lkdGggPSB0aGlzLnRvUGl4ZWxzKFxyXG4gICAgICAgIGZpeHR1cmUuZml4dHVyZVN0YXRpY1dpZHRoLnZhbHVlLFxyXG4gICAgICAgIGZpeHR1cmUuZml4dHVyZVN0YXRpY1dpZHRoLnVuaXQsXHJcbiAgICAgICk7XHJcbiAgICAgIGF3YWl0IHRoaXMuZHJhd0ZpeHR1cmUoXHJcbiAgICAgICAgdGhpcy5jYW52YXMsXHJcbiAgICAgICAgeCxcclxuICAgICAgICB5LFxyXG4gICAgICAgIGZpeHR1cmVIZWlnaHQsXHJcbiAgICAgICAgZml4dHVyZVdpZHRoLFxyXG4gICAgICAgIGZpeHR1cmUsXHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmZsb29yRGF0YT8ub3RoZXJFbGVtZW50cz8ubGVuZ3RoOyBqKyspIHtcclxuICAgICAgY29uc3Qgb3RoZXJFbGVtZW50ID0gdGhpcy5mbG9vckRhdGEub3RoZXJFbGVtZW50c1tqXTtcclxuICAgICAgY29uc3QgeCA9IHRoaXMudG9QaXhlbHMob3RoZXJFbGVtZW50LnJlbGF0aXZlUG9zaXRpb24ueCwgXCJmdFwiKTtcclxuICAgICAgY29uc3QgeSA9IHRoaXMudG9QaXhlbHMob3RoZXJFbGVtZW50LnJlbGF0aXZlUG9zaXRpb24ueSwgXCJmdFwiKTtcclxuICAgICAgY29uc3QgaCA9IHRoaXMudG9QaXhlbHMoXHJcbiAgICAgICAgb3RoZXJFbGVtZW50LmZpeHR1cmVTdGF0aWNMZW5ndGgudmFsdWUsXHJcbiAgICAgICAgb3RoZXJFbGVtZW50LmZpeHR1cmVTdGF0aWNMZW5ndGgudW5pdCxcclxuICAgICAgKTtcclxuICAgICAgY29uc3QgdyA9IHRoaXMudG9QaXhlbHMoXHJcbiAgICAgICAgb3RoZXJFbGVtZW50LmZpeHR1cmVTdGF0aWNXaWR0aC52YWx1ZSxcclxuICAgICAgICBvdGhlckVsZW1lbnQuZml4dHVyZVN0YXRpY1dpZHRoLnVuaXQsXHJcbiAgICAgICk7XHJcblxyXG4gICAgICB0aGlzLmRyYXdMYWJlbGVkUmVjdGFuZ2xlKHRoaXMuY2FudmFzLCB4LCB5LCB3LCBoLCBvdGhlckVsZW1lbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZHJhd1dhbGwoXHJcbiAgICBjYW52YXM6IGZhYnJpYy5DYW52YXMsXHJcbiAgICB4OiBudW1iZXIsXHJcbiAgICB5OiBudW1iZXIsXHJcbiAgICBoZWlnaHQ6IG51bWJlcixcclxuICAgIHdpZHRoOiBudW1iZXIsXHJcbiAgICBlbGVtZW50RGF0YTogYW55LFxyXG4gICkge1xyXG4gICAgY29uc3QgcmFkaXVzID0gNTtcclxuICAgIGNvbnN0IGZpbGxDb2xvciA9IFwiI0Y2RkNGRlwiO1xyXG4gICAgY29uc3Qgc3Ryb2tlQ29sb3IgPSBcIiNEMEQ1RERcIjtcclxuICAgIGNvbnN0IGxhYmVsQ29sb3IgPSBcIiMwMDlCRjNcIjtcclxuICAgIGNvbnN0IHRleHQgPSBgJHt0aGlzLnRpdGxlQ2FzZS50cmFuc2Zvcm0oZWxlbWVudERhdGEuZWxlbWVudFR5cGUpfSAke1xyXG4gICAgICBlbGVtZW50RGF0YS5lbGVtZW50TnVtYmVyXHJcbiAgICB9YDtcclxuXHJcbiAgICBjb25zdCB3YWxsID0gbmV3IGZhYnJpYy5SZWN0KHtcclxuICAgICAgbGVmdDogMCxcclxuICAgICAgdG9wOiAwLFxyXG4gICAgICB3aWR0aCxcclxuICAgICAgaGVpZ2h0LFxyXG4gICAgICByeDogcmFkaXVzLFxyXG4gICAgICByeTogcmFkaXVzLFxyXG4gICAgICBmaWxsOiBmaWxsQ29sb3IsXHJcbiAgICAgIHN0cm9rZTogc3Ryb2tlQ29sb3IsXHJcbiAgICAgIHN0cm9rZVdpZHRoOiAwLjI3LFxyXG4gICAgICBzZWxlY3RhYmxlOiBmYWxzZSxcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IGNlbnRlclggPSB3aWR0aCAvIDI7XHJcbiAgICBjb25zdCBjZW50ZXJZID0gaGVpZ2h0IC8gMjtcclxuICAgIGNvbnN0IGlzVmVydGljYWwgPSBoZWlnaHQgPiB3aWR0aDtcclxuXHJcbiAgICBjb25zdCBsYWJlbCA9IG5ldyBmYWJyaWMuRmFicmljVGV4dCh0ZXh0LCB7XHJcbiAgICAgIGxlZnQ6IGNlbnRlclgsXHJcbiAgICAgIHRvcDogY2VudGVyWSxcclxuICAgICAgZm9udFNpemU6IDEwLFxyXG4gICAgICBmb250RmFtaWx5OiBcIkludGVyXCIsXHJcbiAgICAgIGZvbnRXZWlnaHQ6IFwiNTAwXCIsXHJcbiAgICAgIGZpbGw6IGxhYmVsQ29sb3IsXHJcbiAgICAgIG9yaWdpblg6IFwiY2VudGVyXCIsXHJcbiAgICAgIG9yaWdpblk6IFwiY2VudGVyXCIsXHJcbiAgICAgIGFuZ2xlOiBpc1ZlcnRpY2FsID8gLTkwIDogMCxcclxuICAgICAgc2VsZWN0YWJsZTogZmFsc2UsXHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zdCBhcnJvd0hlYWQgPSA1O1xyXG4gICAgY29uc3QgZWxlbWVudHM6IGZhYnJpYy5PYmplY3RbXSA9IFt3YWxsLCBsYWJlbF07XHJcblxyXG4gICAgaWYgKGlzVmVydGljYWwpIHtcclxuICAgICAgY29uc3QgdGV4dFdpZHRoID0gbGFiZWwud2lkdGggfHwgMDtcclxuICAgICAgY29uc3QgdG9wQXJyb3dZID0gNTtcclxuICAgICAgY29uc3QgdG9wQXJyb3dFbmRZID0gY2VudGVyWSAtIHRleHRXaWR0aCAvIDIgLSA1O1xyXG5cclxuICAgICAgaWYgKHRvcEFycm93RW5kWSA+IHRvcEFycm93WSArIGFycm93SGVhZCkge1xyXG4gICAgICAgIGVsZW1lbnRzLnB1c2goXHJcbiAgICAgICAgICBuZXcgZmFicmljLkxpbmUoW2NlbnRlclgsIHRvcEFycm93WSwgY2VudGVyWCwgdG9wQXJyb3dFbmRZXSwge1xyXG4gICAgICAgICAgICBzdHJva2U6IGxhYmVsQ29sb3IsXHJcbiAgICAgICAgICAgIHN0cm9rZVdpZHRoOiAxLFxyXG4gICAgICAgICAgICBzZWxlY3RhYmxlOiBmYWxzZSxcclxuICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgbmV3IGZhYnJpYy5UcmlhbmdsZSh7XHJcbiAgICAgICAgICAgIGxlZnQ6IGNlbnRlclgsXHJcbiAgICAgICAgICAgIHRvcDogdG9wQXJyb3dZLFxyXG4gICAgICAgICAgICB3aWR0aDogYXJyb3dIZWFkLFxyXG4gICAgICAgICAgICBoZWlnaHQ6IGFycm93SGVhZCxcclxuICAgICAgICAgICAgYW5nbGU6IDAsXHJcbiAgICAgICAgICAgIGZpbGw6IGxhYmVsQ29sb3IsXHJcbiAgICAgICAgICAgIG9yaWdpblg6IFwiY2VudGVyXCIsXHJcbiAgICAgICAgICAgIG9yaWdpblk6IFwiYm90dG9tXCIsXHJcbiAgICAgICAgICAgIHNlbGVjdGFibGU6IGZhbHNlLFxyXG4gICAgICAgICAgfSksXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3QgYm90dG9tQXJyb3dTdGFydFkgPSBjZW50ZXJZICsgdGV4dFdpZHRoIC8gMiArIDU7XHJcbiAgICAgIGNvbnN0IGJvdHRvbUFycm93RW5kWSA9IGhlaWdodCAtIDU7XHJcblxyXG4gICAgICBpZiAoYm90dG9tQXJyb3dFbmRZID4gYm90dG9tQXJyb3dTdGFydFkgKyBhcnJvd0hlYWQpIHtcclxuICAgICAgICBlbGVtZW50cy5wdXNoKFxyXG4gICAgICAgICAgbmV3IGZhYnJpYy5MaW5lKFxyXG4gICAgICAgICAgICBbY2VudGVyWCwgYm90dG9tQXJyb3dTdGFydFksIGNlbnRlclgsIGJvdHRvbUFycm93RW5kWV0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBzdHJva2U6IGxhYmVsQ29sb3IsXHJcbiAgICAgICAgICAgICAgc3Ryb2tlV2lkdGg6IDEsXHJcbiAgICAgICAgICAgICAgc2VsZWN0YWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICApLFxyXG4gICAgICAgICAgbmV3IGZhYnJpYy5UcmlhbmdsZSh7XHJcbiAgICAgICAgICAgIGxlZnQ6IGNlbnRlclgsXHJcbiAgICAgICAgICAgIHRvcDogYm90dG9tQXJyb3dFbmRZLFxyXG4gICAgICAgICAgICB3aWR0aDogYXJyb3dIZWFkLFxyXG4gICAgICAgICAgICBoZWlnaHQ6IGFycm93SGVhZCxcclxuICAgICAgICAgICAgYW5nbGU6IDE4MCxcclxuICAgICAgICAgICAgZmlsbDogbGFiZWxDb2xvcixcclxuICAgICAgICAgICAgb3JpZ2luWDogXCJjZW50ZXJcIixcclxuICAgICAgICAgICAgb3JpZ2luWTogXCJ0b3BcIixcclxuICAgICAgICAgICAgc2VsZWN0YWJsZTogZmFsc2UsXHJcbiAgICAgICAgICB9KSxcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCB0ZXh0V2lkdGggPSBsYWJlbC53aWR0aCB8fCAwO1xyXG4gICAgICBjb25zdCBsZWZ0QXJyb3dTdGFydFggPSA1O1xyXG4gICAgICBjb25zdCBsZWZ0QXJyb3dFbmRYID0gY2VudGVyWCAtIHRleHRXaWR0aCAvIDIgLSA1O1xyXG5cclxuICAgICAgaWYgKGxlZnRBcnJvd0VuZFggPiBsZWZ0QXJyb3dTdGFydFggKyBhcnJvd0hlYWQpIHtcclxuICAgICAgICBlbGVtZW50cy5wdXNoKFxyXG4gICAgICAgICAgbmV3IGZhYnJpYy5MaW5lKFtsZWZ0QXJyb3dTdGFydFgsIGNlbnRlclksIGxlZnRBcnJvd0VuZFgsIGNlbnRlclldLCB7XHJcbiAgICAgICAgICAgIHN0cm9rZTogbGFiZWxDb2xvcixcclxuICAgICAgICAgICAgc3Ryb2tlV2lkdGg6IDEsXHJcbiAgICAgICAgICAgIHNlbGVjdGFibGU6IGZhbHNlLFxyXG4gICAgICAgICAgfSksXHJcbiAgICAgICAgICBuZXcgZmFicmljLlRyaWFuZ2xlKHtcclxuICAgICAgICAgICAgbGVmdDogbGVmdEFycm93U3RhcnRYLFxyXG4gICAgICAgICAgICB0b3A6IGNlbnRlclksXHJcbiAgICAgICAgICAgIHdpZHRoOiBhcnJvd0hlYWQsXHJcbiAgICAgICAgICAgIGhlaWdodDogYXJyb3dIZWFkLFxyXG4gICAgICAgICAgICBhbmdsZTogLTkwLFxyXG4gICAgICAgICAgICBmaWxsOiBsYWJlbENvbG9yLFxyXG4gICAgICAgICAgICBvcmlnaW5YOiBcImNlbnRlclwiLFxyXG4gICAgICAgICAgICBvcmlnaW5ZOiBcImNlbnRlclwiLFxyXG4gICAgICAgICAgICBzZWxlY3RhYmxlOiBmYWxzZSxcclxuICAgICAgICAgIH0pLFxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IHJpZ2h0QXJyb3dTdGFydFggPSBjZW50ZXJYICsgdGV4dFdpZHRoIC8gMiArIDU7XHJcbiAgICAgIGNvbnN0IHJpZ2h0QXJyb3dFbmRYID0gd2lkdGggLSA1O1xyXG5cclxuICAgICAgaWYgKHJpZ2h0QXJyb3dFbmRYID4gcmlnaHRBcnJvd1N0YXJ0WCArIGFycm93SGVhZCkge1xyXG4gICAgICAgIGVsZW1lbnRzLnB1c2goXHJcbiAgICAgICAgICBuZXcgZmFicmljLkxpbmUoXHJcbiAgICAgICAgICAgIFtyaWdodEFycm93U3RhcnRYLCBjZW50ZXJZLCByaWdodEFycm93RW5kWCwgY2VudGVyWV0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBzdHJva2U6IGxhYmVsQ29sb3IsXHJcbiAgICAgICAgICAgICAgc3Ryb2tlV2lkdGg6IDEsXHJcbiAgICAgICAgICAgICAgc2VsZWN0YWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICApLFxyXG4gICAgICAgICAgbmV3IGZhYnJpYy5UcmlhbmdsZSh7XHJcbiAgICAgICAgICAgIGxlZnQ6IHJpZ2h0QXJyb3dFbmRYLFxyXG4gICAgICAgICAgICB0b3A6IGNlbnRlclksXHJcbiAgICAgICAgICAgIHdpZHRoOiBhcnJvd0hlYWQsXHJcbiAgICAgICAgICAgIGhlaWdodDogYXJyb3dIZWFkLFxyXG4gICAgICAgICAgICBhbmdsZTogOTAsXHJcbiAgICAgICAgICAgIGZpbGw6IGxhYmVsQ29sb3IsXHJcbiAgICAgICAgICAgIG9yaWdpblg6IFwiY2VudGVyXCIsXHJcbiAgICAgICAgICAgIG9yaWdpblk6IFwiY2VudGVyXCIsXHJcbiAgICAgICAgICAgIHNlbGVjdGFibGU6IGZhbHNlLFxyXG4gICAgICAgICAgfSksXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGdyb3VwID0gbmV3IGZhYnJpYy5Hcm91cChlbGVtZW50cywge1xyXG4gICAgICBsZWZ0OiB4LFxyXG4gICAgICB0b3A6IHksXHJcbiAgICAgIGhhc0NvbnRyb2xzOiBmYWxzZSxcclxuICAgICAgbG9ja1NjYWxpbmdYOiB0cnVlLFxyXG4gICAgICBsb2NrU2NhbGluZ1k6IHRydWUsXHJcbiAgICAgIGxvY2tSb3RhdGlvbjogdHJ1ZSxcclxuICAgICAgc2VsZWN0YWJsZTogZmFsc2UsXHJcbiAgICAgIGFuZ2xlOiBlbGVtZW50RGF0YS5hbmdsZSxcclxuICAgIH0pIGFzIGZhYnJpYy5Hcm91cCAmIHtcclxuICAgICAgb2JqVHlwZTogc3RyaW5nO1xyXG4gICAgICBkYXRhOiBhbnk7XHJcbiAgICB9O1xyXG4gICAgZ3JvdXAub2JqVHlwZSA9IGVsZW1lbnREYXRhLmVsZW1lbnRUeXBlO1xyXG4gICAgZ3JvdXAuZGF0YSA9IGVsZW1lbnREYXRhO1xyXG4gICAgY2FudmFzLmFkZChncm91cCk7XHJcblxyXG4gICAgcmV0dXJuIGdyb3VwO1xyXG4gIH1cclxuXHJcbiAgZHJhd0VudHJhbmNlKFxyXG4gICAgY2FudmFzOiBmYWJyaWMuQ2FudmFzLFxyXG4gICAgeDogbnVtYmVyLFxyXG4gICAgeTogbnVtYmVyLFxyXG4gICAgd2lkdGg6IG51bWJlcixcclxuICAgIGhlaWdodDogbnVtYmVyLFxyXG4gICAgYXJyb3dXaWR0aDogbnVtYmVyLFxyXG4gICAgZWxlbWVudERhdGE6IGFueSxcclxuICApIHtcclxuICAgIGNvbnN0IGJvZHlXaWR0aCA9IHdpZHRoIC0gYXJyb3dXaWR0aDtcclxuXHJcbiAgICBjb25zdCBwYXRoRGF0YSA9IFtcclxuICAgICAgYE0gMCAwYCxcclxuICAgICAgYEwgJHtib2R5V2lkdGh9IDBgLFxyXG4gICAgICBgTCAke2JvZHlXaWR0aH0gJHstaGVpZ2h0IC8gMn1gLFxyXG4gICAgICBgTCAke3dpZHRofSAke2hlaWdodCAvIDJ9YCxcclxuICAgICAgYEwgJHtib2R5V2lkdGh9ICR7aGVpZ2h0ICsgaGVpZ2h0IC8gMn1gLFxyXG4gICAgICBgTCAke2JvZHlXaWR0aH0gJHtoZWlnaHR9YCxcclxuICAgICAgYEwgMCAke2hlaWdodH1gLFxyXG4gICAgICBgWmAsXHJcbiAgICBdLmpvaW4oXCIgXCIpO1xyXG5cclxuICAgIGNvbnN0IGFycm93ID0gbmV3IGZhYnJpYy5QYXRoKHBhdGhEYXRhLCB7XHJcbiAgICAgIGZpbGw6IFwiIzAzQTlGNFwiLFxyXG4gICAgICBzZWxlY3RhYmxlOiBmYWxzZSxcclxuICAgICAgZXZlbnRlZDogZmFsc2UsXHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zdCBtYXhUZXh0SGVpZ2h0ID0gaGVpZ2h0IC0gNjtcclxuICAgIGNvbnN0IHRleHQgPSBuZXcgZmFicmljLlRleHQoXCJFbnRyYW5jZVwiLCB7XHJcbiAgICAgIGZvbnRGYW1pbHk6IFwiQXJpYWxcIixcclxuICAgICAgZm9udFdlaWdodDogXCJib2xkXCIsXHJcbiAgICAgIGZpbGw6IFwid2hpdGVcIixcclxuICAgICAgYW5nbGU6IC05MCxcclxuICAgICAgb3JpZ2luWDogXCJjZW50ZXJcIixcclxuICAgICAgb3JpZ2luWTogXCJjZW50ZXJcIixcclxuICAgICAgbGVmdDogMTUsXHJcbiAgICAgIHRvcDogaGVpZ2h0IC8gMixcclxuICAgICAgZm9udFNpemU6IDIwLFxyXG4gICAgICBzZWxlY3RhYmxlOiBmYWxzZSxcclxuICAgICAgZXZlbnRlZDogZmFsc2UsXHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zdCB0ZXh0Qm91bmRzID0gdGV4dC5nZXRCb3VuZGluZ1JlY3QoKTtcclxuICAgIGlmICh0ZXh0Qm91bmRzLmhlaWdodCA+IG1heFRleHRIZWlnaHQpIHtcclxuICAgICAgY29uc3Qgc2NhbGUgPSBtYXhUZXh0SGVpZ2h0IC8gdGV4dEJvdW5kcy5oZWlnaHQ7XHJcbiAgICAgIHRleHQuc2V0KFwiZm9udFNpemVcIiwgdGV4dC5mb250U2l6ZSEgKiBzY2FsZSk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZ3JvdXAgPSBuZXcgZmFicmljLkdyb3VwKFthcnJvdywgdGV4dF0sIHtcclxuICAgICAgbGVmdDogeCxcclxuICAgICAgdG9wOiB5LFxyXG4gICAgICBzZWxlY3RhYmxlOiBmYWxzZSxcclxuICAgICAgbG9ja1NjYWxpbmdYOiB0cnVlLFxyXG4gICAgICBsb2NrU2NhbGluZ1k6IHRydWUsXHJcbiAgICAgIGxvY2tTY2FsaW5nRmxpcDogdHJ1ZSxcclxuICAgICAgYW5nbGU6IGVsZW1lbnREYXRhLmFuZ2xlLFxyXG4gICAgfSkgYXMgZmFicmljLkdyb3VwICYge1xyXG4gICAgICBvYmpUeXBlOiBzdHJpbmc7XHJcbiAgICAgIGRhdGE6IGFueTtcclxuICAgIH07XHJcblxyXG4gICAgZ3JvdXAub2JqVHlwZSA9IGVsZW1lbnREYXRhLmVsZW1lbnRUeXBlO1xyXG4gICAgZ3JvdXAuZGF0YSA9IGVsZW1lbnREYXRhO1xyXG5cclxuICAgIGNhbnZhcy5hZGQoZ3JvdXApO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgZHJhd0ZpeHR1cmUoXHJcbiAgICBjYW52YXM6IGZhYnJpYy5DYW52YXMsXHJcbiAgICB4OiBudW1iZXIsXHJcbiAgICB5OiBudW1iZXIsXHJcbiAgICBoZWlnaHQ6IG51bWJlcixcclxuICAgIHdpZHRoOiBudW1iZXIsXHJcbiAgICBmaXh0dXJlRGF0YTogYW55LFxyXG4gICkge1xyXG4gICAgY29uc3QgYWN0dWFsU2hlbHZlcyA9XHJcbiAgICAgIGZpeHR1cmVEYXRhLnNoZWxmQ29uZmlnPy5maWx0ZXIoKHM6IGFueSkgPT4gcy5zaGVsZlR5cGUgIT0gXCJ2bW9ubHlcIikgPz9cclxuICAgICAgW107XHJcblxyXG4gICAgY29uc3QgcmFkaXVzID0gNTtcclxuICAgIGNvbnN0IG1haW5Db250YWluZXIgPSBuZXcgZmFicmljLlJlY3Qoe1xyXG4gICAgICBsZWZ0OiB4LFxyXG4gICAgICB0b3A6IHksXHJcbiAgICAgIHdpZHRoOiB3aWR0aCxcclxuICAgICAgaGVpZ2h0OiBoZWlnaHQsXHJcbiAgICAgIHJ4OiByYWRpdXMsXHJcbiAgICAgIHJ5OiByYWRpdXMsXHJcbiAgICAgIHN0cm9rZTogXCIjNTFDMUZGXCIsXHJcbiAgICAgIHN0cm9rZVdpZHRoOiAwLjI3LFxyXG4gICAgICBmaWxsOiBcIndoaXRlXCIsXHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zdCB0b3BXaWR0aCA9IHdpZHRoIC8gMS4wNTtcclxuICAgIGNvbnN0IHRvcEhlaWdodCA9ICgxNSAvIDEwMCkgKiBoZWlnaHQ7XHJcbiAgICBjb25zdCB0b3BYID0geCArICh3aWR0aCAtIHRvcFdpZHRoKSAvIDI7XHJcbiAgICBjb25zdCB0b3BZID0geSArIHRoaXMudmVydGljYWxNYXJnaW47XHJcblxyXG4gICAgY29uc3QgdG9wQ29udGFpbmVyID0gbmV3IGZhYnJpYy5SZWN0KHtcclxuICAgICAgbGVmdDogdG9wWCxcclxuICAgICAgdG9wOiB0b3BZLFxyXG4gICAgICB3aWR0aDogdG9wV2lkdGgsXHJcbiAgICAgIGhlaWdodDogdG9wSGVpZ2h0LFxyXG4gICAgICByeDogcmFkaXVzLFxyXG4gICAgICByeTogcmFkaXVzLFxyXG4gICAgICBzdHJva2U6IFwiIzUxQzFGRlwiLFxyXG4gICAgICBzdHJva2VXaWR0aDogMC4yNyxcclxuICAgICAgZmlsbDogXCJ3aGl0ZVwiLFxyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc3QgaW5uZXJCb3hIZWlnaHQgPSB0b3BIZWlnaHQgLyAyO1xyXG4gICAgY29uc3QgaW5uZXJUb3BCb3ggPSBuZXcgZmFicmljLlBhdGgoXHJcbiAgICAgIGBNICR7dG9wWCArIHJhZGl1c30gJHt0b3BZfSBcclxuICAgICAgICBMICR7dG9wWCArIHRvcFdpZHRoIC0gcmFkaXVzfSAke3RvcFl9IFxyXG4gICAgICAgIFEgJHt0b3BYICsgdG9wV2lkdGh9ICR7dG9wWX0gJHt0b3BYICsgdG9wV2lkdGh9ICR7dG9wWSArIHJhZGl1c30gXHJcbiAgICAgICAgTCAke3RvcFggKyB0b3BXaWR0aH0gJHt0b3BZICsgaW5uZXJCb3hIZWlnaHR9IFxyXG4gICAgICAgIEwgJHt0b3BYfSAke3RvcFkgKyBpbm5lckJveEhlaWdodH0gXHJcbiAgICAgICAgTCAke3RvcFh9ICR7dG9wWSArIHJhZGl1c30gXHJcbiAgICAgICAgUSAke3RvcFh9ICR7dG9wWX0gJHt0b3BYICsgcmFkaXVzfSAke3RvcFl9IFpgLFxyXG4gICAgICB7XHJcbiAgICAgICAgc3Ryb2tlOiBcIiM1MUMxRkZcIixcclxuICAgICAgICBzdHJva2VXaWR0aDogMC4yNyxcclxuICAgICAgICBmaWxsOiBcInRyYW5zcGFyZW50XCIsXHJcbiAgICAgIH0sXHJcbiAgICApO1xyXG5cclxuICAgIGNvbnN0IHRvcFRleHQgPSBuZXcgZmFicmljLlRleHRib3goXHJcbiAgICAgIGBGaXh0dXJlICR7XHJcbiAgICAgICAgZml4dHVyZURhdGEuYXNzb2NpYXRlZEVsZW1lbnRGaXh0dXJlTnVtYmVyXHJcbiAgICAgICAgICA/IGZpeHR1cmVEYXRhLmFzc29jaWF0ZWRFbGVtZW50Rml4dHVyZU51bWJlciArXHJcbiAgICAgICAgICAgIChmaXh0dXJlRGF0YT8uZml4dHVyZU51bWJlclxyXG4gICAgICAgICAgICAgID8gXCIgLSBGWC1cIiArIGZpeHR1cmVEYXRhLmZpeHR1cmVOdW1iZXJcclxuICAgICAgICAgICAgICA6IFwiXCIpXHJcbiAgICAgICAgICA6IFwibmV3XCJcclxuICAgICAgfWAsXHJcbiAgICAgIHtcclxuICAgICAgICBsZWZ0OiB0b3BYICsgdG9wV2lkdGggLyAyLFxyXG4gICAgICAgIHRvcDogdG9wWSArIGlubmVyQm94SGVpZ2h0IC8gMixcclxuICAgICAgICBmb250U2l6ZTogNSxcclxuICAgICAgICBmb250RmFtaWx5OiBcIkludGVyXCIsXHJcbiAgICAgICAgZm9udFdlaWdodDogXCI1MDBcIixcclxuICAgICAgICBmaWxsOiBcIiMxMDE4MjhcIixcclxuICAgICAgICBvcmlnaW5YOiBcImNlbnRlclwiLFxyXG4gICAgICAgIG9yaWdpblk6IFwiY2VudGVyXCIsXHJcbiAgICAgICAgd2lkdGg6IHRvcFdpZHRoLFxyXG4gICAgICAgIGhlaWdodDogaW5uZXJCb3hIZWlnaHQsXHJcbiAgICAgICAgdGV4dEFsaWduOiBcImNlbnRlclwiLFxyXG4gICAgICB9LFxyXG4gICAgKTtcclxuXHJcbiAgICBjb25zdCBzZWNvbmRCb3hZID0gdG9wWSArIGlubmVyQm94SGVpZ2h0O1xyXG5cclxuICAgIGNvbnN0IGlubmVyQm90dG9tQm94ID0gbmV3IGZhYnJpYy5QYXRoKFxyXG4gICAgICBgTSAke3RvcFh9ICR7c2Vjb25kQm94WX0gXHJcbiAgICBMICR7dG9wWCArIHRvcFdpZHRofSAke3NlY29uZEJveFl9IFxyXG4gICAgTCAke3RvcFggKyB0b3BXaWR0aH0gJHtzZWNvbmRCb3hZICsgaW5uZXJCb3hIZWlnaHQgLSByYWRpdXN9IFxyXG4gICAgUSAke3RvcFggKyB0b3BXaWR0aH0gJHtzZWNvbmRCb3hZICsgaW5uZXJCb3hIZWlnaHR9ICR7XHJcbiAgICAgIHRvcFggKyB0b3BXaWR0aCAtIHJhZGl1c1xyXG4gICAgfSAke3NlY29uZEJveFkgKyBpbm5lckJveEhlaWdodH0gXHJcbiAgICBMICR7dG9wWCArIHJhZGl1c30gJHtzZWNvbmRCb3hZICsgaW5uZXJCb3hIZWlnaHR9IFxyXG4gICAgUSAke3RvcFh9ICR7c2Vjb25kQm94WSArIGlubmVyQm94SGVpZ2h0fSAke3RvcFh9ICR7XHJcbiAgICAgIHNlY29uZEJveFkgKyBpbm5lckJveEhlaWdodCAtIHJhZGl1c1xyXG4gICAgfSBcclxuICAgIEwgJHt0b3BYfSAke3NlY29uZEJveFl9IFpgLFxyXG4gICAgICB7XHJcbiAgICAgICAgZmlsbDogXCIjMzQ0MDU0XCIsXHJcbiAgICAgICAgc3Ryb2tlOiBcIiM1MUMxRkZcIixcclxuICAgICAgICBzdHJva2VXaWR0aDogMC4yNyxcclxuICAgICAgfSxcclxuICAgICk7XHJcblxyXG4gICAgbGV0IGZvbnRTaXplID0gNTtcclxuICAgIGxldCBib3R0b21UZXh0O1xyXG5cclxuICAgIGNvbnN0IHRleHRDb250ZW50ID0gZ2V0Rml4dHVyZUNhbnZhc0xhYmVsKGZpeHR1cmVEYXRhKTtcclxuXHJcbiAgICBjb25zdCBjcmVhdGVCb3R0b21UZXh0ID0gKGZzOiBhbnkpID0+XHJcbiAgICAgIG5ldyBmYWJyaWMuVGV4dGJveCh0ZXh0Q29udGVudCwge1xyXG4gICAgICAgIGxlZnQ6IHRvcFggKyB0b3BXaWR0aCAvIDIsXHJcbiAgICAgICAgdG9wOiBzZWNvbmRCb3hZICsgaW5uZXJCb3hIZWlnaHQgLyAyLFxyXG4gICAgICAgIGZvbnRTaXplOiBmcyxcclxuICAgICAgICBmb250RmFtaWx5OiBcIkludGVyXCIsXHJcbiAgICAgICAgZm9udFdlaWdodDogXCI1MDBcIixcclxuICAgICAgICBmaWxsOiBcIiNGRkZGRkZcIixcclxuICAgICAgICBvcmlnaW5YOiBcImNlbnRlclwiLFxyXG4gICAgICAgIG9yaWdpblk6IFwiY2VudGVyXCIsXHJcbiAgICAgICAgdGV4dEFsaWduOiBcImNlbnRlclwiLFxyXG4gICAgICAgIHdpZHRoOiB0b3BXaWR0aCxcclxuICAgICAgfSk7XHJcblxyXG4gICAgZG8ge1xyXG4gICAgICBib3R0b21UZXh0ID0gY3JlYXRlQm90dG9tVGV4dChmb250U2l6ZSk7XHJcbiAgICAgIGZvbnRTaXplIC09IDAuNTtcclxuICAgIH0gd2hpbGUgKGJvdHRvbVRleHQuaGVpZ2h0ID4gaW5uZXJCb3hIZWlnaHQgJiYgZm9udFNpemUgPiAyKTtcclxuXHJcbiAgICBjb25zdCBtaWRXaWR0aCA9IHdpZHRoIC8gMS4wNTtcclxuICAgIGNvbnN0IG1pZEhlaWdodCA9ICg3NyAvIDEwMCkgKiBoZWlnaHQ7XHJcbiAgICBjb25zdCBtaWRYID0geCArICh3aWR0aCAtIG1pZFdpZHRoKSAvIDI7XHJcbiAgICBjb25zdCBtaWRZID0gdG9wWSArIHRvcEhlaWdodCArIHRoaXMudmVydGljYWxNYXJnaW47XHJcblxyXG4gICAgY29uc3QgbWlkQ29udGFpbmVyID0gbmV3IGZhYnJpYy5SZWN0KHtcclxuICAgICAgbGVmdDogbWlkWCxcclxuICAgICAgdG9wOiBtaWRZLFxyXG4gICAgICB3aWR0aDogbWlkV2lkdGgsXHJcbiAgICAgIGhlaWdodDogbWlkSGVpZ2h0LFxyXG4gICAgICByeDogcmFkaXVzLFxyXG4gICAgICByeTogcmFkaXVzLFxyXG4gICAgICBzdHJva2U6IFwiIzUxQzFGRlwiLFxyXG4gICAgICBzdHJva2VXaWR0aDogMC4yNyxcclxuICAgICAgZmlsbDogXCJ3aGl0ZVwiLFxyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc3Qgc2hlbGZDb3VudCA9IGZpeHR1cmVEYXRhLnNoZWxmQ29uZmlnLmxlbmd0aDtcclxuXHJcbiAgICBjb25zdCBib3hIZWlnaHQgPSBtaWRIZWlnaHQgLyAoc2hlbGZDb3VudCArIDIpO1xyXG4gICAgY29uc3QgZmlyc3RCb3hZID0gbWlkWTtcclxuXHJcbiAgICBjb25zdCBmaXJzdEJveCA9IG5ldyBmYWJyaWMuUGF0aChcclxuICAgICAgYE0gJHttaWRYICsgcmFkaXVzfSAke2ZpcnN0Qm94WX0gXHJcbiAgICAgICAgTCAke21pZFggKyBtaWRXaWR0aCAtIHJhZGl1c30gJHtmaXJzdEJveFl9IFxyXG4gICAgICAgIFEgJHttaWRYICsgbWlkV2lkdGh9ICR7Zmlyc3RCb3hZfSAke21pZFggKyBtaWRXaWR0aH0gJHtcclxuICAgICAgICAgIGZpcnN0Qm94WSArIHJhZGl1c1xyXG4gICAgICAgIH0gXHJcbiAgICAgICAgTCAke21pZFggKyBtaWRXaWR0aH0gJHtmaXJzdEJveFkgKyBib3hIZWlnaHR9IFxyXG4gICAgICAgIEwgJHttaWRYfSAke2ZpcnN0Qm94WSArIGJveEhlaWdodH0gXHJcbiAgICAgICAgTCAke21pZFh9ICR7Zmlyc3RCb3hZICsgcmFkaXVzfSBcclxuICAgICAgICBRICR7bWlkWH0gJHtmaXJzdEJveFl9ICR7bWlkWCArIHJhZGl1c30gJHtmaXJzdEJveFl9IFpgLFxyXG4gICAgICB7XHJcbiAgICAgICAgZmlsbDogXCIjRUFGOEZGXCIsXHJcbiAgICAgICAgc3Ryb2tlOiBcIiM2QkNBRkZcIixcclxuICAgICAgICBzdHJva2VXaWR0aDogMC4yNyxcclxuICAgICAgfSxcclxuICAgICk7XHJcblxyXG4gICAgY29uc3QgZmlyc3RCb3hUZXh0ID0gbmV3IGZhYnJpYy5UZXh0Ym94KFxyXG4gICAgICBgJHtmaXh0dXJlRGF0YT8uaGVhZGVyPy5sYWJlbCA/IGZpeHR1cmVEYXRhLmhlYWRlci5sYWJlbCA6IFwiXCJ9YCxcclxuICAgICAge1xyXG4gICAgICAgIGxlZnQ6IG1pZFggKyBtaWRXaWR0aCAvIDIsXHJcbiAgICAgICAgdG9wOiBmaXJzdEJveFkgKyBib3hIZWlnaHQgLyAyLFxyXG4gICAgICAgIGZvbnRTaXplOiA3LFxyXG4gICAgICAgIGZvbnRGYW1pbHk6IFwiSW50ZXJcIixcclxuICAgICAgICBmb250V2VpZ2h0OiBcIjYwMFwiLFxyXG4gICAgICAgIGZpbGw6IFwiIzEwMTgyOFwiLFxyXG4gICAgICAgIG9yaWdpblg6IFwiY2VudGVyXCIsXHJcbiAgICAgICAgb3JpZ2luWTogXCJjZW50ZXJcIixcclxuICAgICAgICB3aWR0aDogbWlkV2lkdGgsXHJcbiAgICAgICAgaGVpZ2h0OiBib3hIZWlnaHQsXHJcbiAgICAgICAgdGV4dEFsaWduOiBcImNlbnRlclwiLFxyXG4gICAgICB9LFxyXG4gICAgKTtcclxuXHJcbiAgICBjb25zdCBzaGVsdmVzID0gW107XHJcbiAgICBjb25zdCBzaGVsZkhlaWdodCA9IG1pZEhlaWdodCAtIDIgKiBib3hIZWlnaHQ7XHJcblxyXG4gICAgaWYgKGZpeHR1cmVEYXRhLnByb2R1Y3RSZXNvbHV0aW9uTGV2ZWwgPT09IFwiTDFcIikge1xyXG4gICAgICBjb25zdCBib3hZID0gZmlyc3RCb3hZICsgYm94SGVpZ2h0O1xyXG5cclxuICAgICAgY29uc3Qgc2hlbGYgPSBuZXcgZmFicmljLlJlY3Qoe1xyXG4gICAgICAgIGxlZnQ6IG1pZFgsXHJcbiAgICAgICAgdG9wOiBib3hZLFxyXG4gICAgICAgIHdpZHRoOiBtaWRXaWR0aCxcclxuICAgICAgICBoZWlnaHQ6IHNoZWxmSGVpZ2h0LFxyXG4gICAgICAgIHN0cm9rZVdpZHRoOiAwLjI3LFxyXG4gICAgICAgIHN0cm9rZTogZml4dHVyZURhdGEuc2hlbGZDb25maWcuc29tZSgoczogYW55KSA9PiBzLmNvbXBsaWFuY2UgPT09IFwicHJvcGVyXCIpXHJcbiAgICAgICAgICA/IFwiIzMyRDU4M1wiXHJcbiAgICAgICAgICA6IFwiI2NlY2VjZVwiLFxyXG4gICAgICAgIGZpbGw6IFwiI2ZmZmZmZlwiLFxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIGNvbnN0IHRleHQgPSBmaXh0dXJlRGF0YT8ucHJvZHVjdEJyYW5kTmFtZT8uam9pbihcIiArIFwiKSB8fCBcIlwiO1xyXG5cclxuICAgICAgLy8gV3JhcCB0ZXh0IHdpdGhpbiBmaXh0dXJlIHdpZHRoIGFuZCBzaHJpbmsgdG8gZml0IHZlcnRpY2FsIHNwYWNlXHJcbiAgICAgIGNvbnN0IG1heFRleHRXaWR0aCA9IG1pZFdpZHRoICogMC45O1xyXG4gICAgICBjb25zdCBtYXhUZXh0SGVpZ2h0ID0gc2hlbGZIZWlnaHQgKiAwLjg7XHJcbiAgICAgIGxldCBmb250U2l6ZUwxID0gNjtcclxuXHJcbiAgICAgIGNvbnN0IGNyZWF0ZVdyYXBwZWRUZXh0Ym94ID0gKGZzOiBudW1iZXIpID0+XHJcbiAgICAgICAgbmV3IGZhYnJpYy5UZXh0Ym94KHRleHQsIHtcclxuICAgICAgICAgIGxlZnQ6IG1pZFggKyBtaWRXaWR0aCAvIDIsXHJcbiAgICAgICAgICB0b3A6IGJveFkgKyBzaGVsZkhlaWdodCAvIDIsXHJcbiAgICAgICAgICBvcmlnaW5YOiBcImNlbnRlclwiLFxyXG4gICAgICAgICAgb3JpZ2luWTogXCJjZW50ZXJcIixcclxuICAgICAgICAgIHdpZHRoOiBtYXhUZXh0V2lkdGgsXHJcbiAgICAgICAgICBmb250U2l6ZTogZnMsXHJcbiAgICAgICAgICBmb250RmFtaWx5OiBcIkludGVyXCIsXHJcbiAgICAgICAgICBmb250V2VpZ2h0OiBcIjUwMFwiLFxyXG4gICAgICAgICAgdGV4dEFsaWduOiBcImNlbnRlclwiLFxyXG4gICAgICAgICAgZmlsbDogXCIjMUQyOTM5XCIsXHJcbiAgICAgICAgICBzZWxlY3RhYmxlOiBmYWxzZSxcclxuICAgICAgICAgIGV2ZW50ZWQ6IGZhbHNlLFxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgbGV0IHdyYXBwZWRUZXh0ID0gY3JlYXRlV3JhcHBlZFRleHRib3goZm9udFNpemVMMSk7XHJcbiAgICAgIHdoaWxlICh3cmFwcGVkVGV4dC5oZWlnaHQgPiBtYXhUZXh0SGVpZ2h0ICYmIGZvbnRTaXplTDEgPiAyKSB7XHJcbiAgICAgICAgZm9udFNpemVMMSAtPSAwLjU7XHJcbiAgICAgICAgd3JhcHBlZFRleHQgPSBjcmVhdGVXcmFwcGVkVGV4dGJveChmb250U2l6ZUwxKTtcclxuICAgICAgfVxyXG4gICAgICBzaGVsdmVzLnB1c2goc2hlbGYsIHdyYXBwZWRUZXh0KTtcclxuICAgIH0gZWxzZSBpZiAoZml4dHVyZURhdGEucHJvZHVjdFJlc29sdXRpb25MZXZlbCA9PT0gXCJMMlwiKSB7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2hlbGZDb3VudDsgaSsrKSB7XHJcbiAgICAgICAgY29uc3QgYm94WSA9IGZpcnN0Qm94WSArIGJveEhlaWdodCAqIChpICsgMSk7XHJcblxyXG4gICAgICAgIGNvbnN0IHNoZWxmID0gbmV3IGZhYnJpYy5SZWN0KHtcclxuICAgICAgICAgIGxlZnQ6IG1pZFgsXHJcbiAgICAgICAgICB0b3A6IGJveFksXHJcbiAgICAgICAgICB3aWR0aDogbWlkV2lkdGgsXHJcbiAgICAgICAgICBoZWlnaHQ6IGJveEhlaWdodCxcclxuICAgICAgICAgIHN0cm9rZVdpZHRoOiAwLjI3LFxyXG4gICAgICAgICAgc3Ryb2tlOlxyXG4gICAgICAgICAgICBmaXh0dXJlRGF0YS5zaGVsZkNvbmZpZz8uW2ldLmNvbXBsaWFuY2UgPT09IFwicHJvcGVyXCIgPyBcIiMzMkQ1ODNcIiA6IFwiI2NlY2VjZVwiLFxyXG4gICAgICAgICAgZmlsbDogXCIjZmZmZmZmXCIsXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHNoZWx2ZXMucHVzaChzaGVsZik7XHJcblxyXG4gICAgICAgIGNvbnN0IHRleHQgPSBmaXh0dXJlRGF0YS5zaGVsZkNvbmZpZz8uW2ldLnByb2R1Y3RCcmFuZE5hbWU/LmpvaW4oXCIgKyBcIikgfHwgXCJcIjtcclxuXHJcbiAgICAgICAgLy8gTDI6IFNpbmdsZS1saW5lIGVsbGlwc2lzIGFnYWluc3QgZnVsbCBzaGVsZiB3aWR0aFxyXG4gICAgICAgIGNvbnN0IGhvcml6b250YWxQYWRkaW5nID0gNjtcclxuICAgICAgICBjb25zdCBtYXhUZXh0V2lkdGggPSBNYXRoLm1heCgwLCBtaWRXaWR0aCAtIGhvcml6b250YWxQYWRkaW5nKTtcclxuICAgICAgICBjb25zdCBiYXNlRm9udFNpemUgPSA1O1xyXG5cclxuICAgICAgICBjb25zdCBtZWFzdXJlID0gKHQ6IHN0cmluZykgPT5cclxuICAgICAgICAgIG5ldyBmYWJyaWMuVGV4dCh0LCB7XHJcbiAgICAgICAgICAgIGZvbnRTaXplOiBiYXNlRm9udFNpemUsXHJcbiAgICAgICAgICAgIGZvbnRGYW1pbHk6IFwiSW50ZXJcIixcclxuICAgICAgICAgICAgZm9udFdlaWdodDogXCI1MDBcIixcclxuICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICBsZXQgZGlzcGxheVRleHQgPSB0ZXh0O1xyXG4gICAgICAgIGxldCBtZWFzdXJlZCA9IG1lYXN1cmUoZGlzcGxheVRleHQpO1xyXG5cclxuICAgICAgICBpZiAoKG1lYXN1cmVkLndpZHRoID8/IDApID4gbWF4VGV4dFdpZHRoKSB7XHJcbiAgICAgICAgICBjb25zdCBlbGxpcHNpcyA9IFwiLi4uXCI7XHJcbiAgICAgICAgICBsZXQgbGVmdElkeCA9IDA7XHJcbiAgICAgICAgICBsZXQgcmlnaHRJZHggPSB0ZXh0Lmxlbmd0aDtcclxuXHJcbiAgICAgICAgICB3aGlsZSAobGVmdElkeCA8IHJpZ2h0SWR4KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG1pZElkeCA9IE1hdGguZmxvb3IoKGxlZnRJZHggKyByaWdodElkeCkgLyAyKTtcclxuICAgICAgICAgICAgY29uc3QgY2FuZGlkYXRlID0gdGV4dC5zbGljZSgwLCBtaWRJZHgpICsgZWxsaXBzaXM7XHJcbiAgICAgICAgICAgIG1lYXN1cmVkID0gbWVhc3VyZShjYW5kaWRhdGUpO1xyXG4gICAgICAgICAgICBpZiAoKG1lYXN1cmVkLndpZHRoID8/IDApID4gbWF4VGV4dFdpZHRoKSB7XHJcbiAgICAgICAgICAgICAgcmlnaHRJZHggPSBtaWRJZHg7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgbGVmdElkeCA9IG1pZElkeCArIDE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGRpc3BsYXlUZXh0ID0gdGV4dC5zbGljZSgwLCBNYXRoLm1heCgwLCBsZWZ0SWR4IC0gMSkpICsgZWxsaXBzaXM7XHJcbiAgICAgICAgICBtZWFzdXJlZCA9IG1lYXN1cmUoZGlzcGxheVRleHQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgZmluYWxUZXh0ID0gbmV3IGZhYnJpYy5UZXh0KGRpc3BsYXlUZXh0LCB7XHJcbiAgICAgICAgICBsZWZ0OiBtaWRYICsgbWlkV2lkdGggLyAyLFxyXG4gICAgICAgICAgdG9wOiBib3hZICsgYm94SGVpZ2h0IC8gMixcclxuICAgICAgICAgIG9yaWdpblg6IFwiY2VudGVyXCIsXHJcbiAgICAgICAgICBvcmlnaW5ZOiBcImNlbnRlclwiLFxyXG4gICAgICAgICAgZm9udFNpemU6IGJhc2VGb250U2l6ZSxcclxuICAgICAgICAgIGZvbnRGYW1pbHk6IFwiSW50ZXJcIixcclxuICAgICAgICAgIGZvbnRXZWlnaHQ6IFwiNTAwXCIsXHJcbiAgICAgICAgICBmaWxsOiBcIiMxRDI5MzlcIixcclxuICAgICAgICAgIHNlbGVjdGFibGU6IGZhbHNlLFxyXG4gICAgICAgICAgZXZlbnRlZDogZmFsc2UsXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHNoZWx2ZXMucHVzaChmaW5hbFRleHQpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKGZpeHR1cmVEYXRhLnByb2R1Y3RSZXNvbHV0aW9uTGV2ZWwgPT09IFwiTDNcIikge1xyXG4gICAgICBjb25zdCBzZXF1ZW50aWFsR3JvdXBzOiB7IHpvbmU6IHN0cmluZzsgc2hlbHZlczogYW55W10gfVtdID0gW107XHJcblxyXG4gICAgICBsZXQgcHJldmlvdXNab25lOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgICAgIGZvciAoY29uc3Qgc2hlbGYgb2YgZml4dHVyZURhdGEuc2hlbGZDb25maWcpIHtcclxuICAgICAgICBjb25zdCB6b25lID0gc2hlbGYuem9uZSB8fCBcIlVua25vd25cIjtcclxuICAgICAgICBpZiAoem9uZSAhPT0gcHJldmlvdXNab25lKSB7XHJcbiAgICAgICAgICBzZXF1ZW50aWFsR3JvdXBzLnB1c2goeyB6b25lLCBzaGVsdmVzOiBbc2hlbGZdIH0pO1xyXG4gICAgICAgICAgcHJldmlvdXNab25lID0gem9uZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgc2VxdWVudGlhbEdyb3Vwc1tzZXF1ZW50aWFsR3JvdXBzLmxlbmd0aCAtIDFdLnNoZWx2ZXMucHVzaChzaGVsZik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBsZXQgY3VycmVudFNoZWxmSW5kZXggPSAwO1xyXG5cclxuICAgICAgZm9yIChjb25zdCBncm91cCBvZiBzZXF1ZW50aWFsR3JvdXBzKSB7XHJcbiAgICAgICAgY29uc3QgeyBzaGVsdmVzOiBzaGVsdmVzSW5Hcm91cCB9ID0gZ3JvdXA7XHJcblxyXG4gICAgICAgIGNvbnN0IGdyb3VwU3RhcnRJbmRleCA9IGN1cnJlbnRTaGVsZkluZGV4O1xyXG4gICAgICAgIGNvbnN0IGdyb3VwTGVuZ3RoID0gc2hlbHZlc0luR3JvdXAubGVuZ3RoO1xyXG5cclxuICAgICAgICBjb25zdCBncm91cFRvcFkgPSBmaXJzdEJveFkgKyBib3hIZWlnaHQgKiAoZ3JvdXBTdGFydEluZGV4ICsgMSk7XHJcbiAgICAgICAgY29uc3QgZ3JvdXBCb3R0b21ZID0gZ3JvdXBUb3BZICsgYm94SGVpZ2h0ICogZ3JvdXBMZW5ndGg7XHJcblxyXG4gICAgICAgIGNvbnN0IGhhc0ltcHJvcGVyID0gc2hlbHZlc0luR3JvdXAuc29tZShcclxuICAgICAgICAgIChzOiBhbnkpID0+IHM/LmNvbXBsaWFuY2UgPT09IFwiaW1wcm9wZXJcIixcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHNoZWx2ZXNJbkdyb3VwLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgICBjb25zdCBib3hZID0gZmlyc3RCb3hZICsgYm94SGVpZ2h0ICogKGN1cnJlbnRTaGVsZkluZGV4ICsgMSk7XHJcblxyXG4gICAgICAgICAgY29uc3QgaXNGaXJzdCA9IGogPT09IDA7XHJcbiAgICAgICAgICBjb25zdCBpc0xhc3QgPSBqID09PSBzaGVsdmVzSW5Hcm91cC5sZW5ndGggLSAxO1xyXG5cclxuICAgICAgICAgIC8vIGNvbnN0IGZpbGxDb2xvciA9IGhhc0ltcHJvcGVyID8gXCIjRkVGM0YyXCIgOiBcIiNFQ0ZERjNcIjtcclxuICAgICAgICAgIGNvbnN0IGZpbGxDb2xvciA9IFwiI2ZmZmZmZlwiO1xyXG4gICAgICAgICAgY29uc3QgYm9yZGVyQ29sb3IgPSBoYXNJbXByb3BlciA/IFwiI2NlY2VjZVwiIDogXCIjMzJENTgzXCI7XHJcblxyXG4gICAgICAgICAgY29uc3QgcGF0aERhdGEgPSBbXHJcbiAgICAgICAgICAgIGBNICR7bWlkWH0gJHtib3hZfSBMICR7bWlkWH0gJHtib3hZICsgYm94SGVpZ2h0fWAsXHJcbiAgICAgICAgICAgIGBNICR7bWlkWCArIG1pZFdpZHRofSAke2JveFl9IEwgJHttaWRYICsgbWlkV2lkdGh9ICR7XHJcbiAgICAgICAgICAgICAgYm94WSArIGJveEhlaWdodFxyXG4gICAgICAgICAgICB9YCxcclxuICAgICAgICAgICAgaXNGaXJzdCA/IGBNICR7bWlkWH0gJHtib3hZfSBMICR7bWlkWCArIG1pZFdpZHRofSAke2JveFl9YCA6IFwiXCIsXHJcbiAgICAgICAgICAgIGlzTGFzdFxyXG4gICAgICAgICAgICAgID8gYE0gJHttaWRYfSAke2JveFkgKyBib3hIZWlnaHR9IEwgJHttaWRYICsgbWlkV2lkdGh9ICR7XHJcbiAgICAgICAgICAgICAgICAgIGJveFkgKyBib3hIZWlnaHRcclxuICAgICAgICAgICAgICAgIH1gXHJcbiAgICAgICAgICAgICAgOiBcIlwiLFxyXG4gICAgICAgICAgXS5qb2luKFwiIFwiKTtcclxuXHJcbiAgICAgICAgICBjb25zdCBmaWxsUmVjdCA9IG5ldyBmYWJyaWMuUmVjdCh7XHJcbiAgICAgICAgICAgIGxlZnQ6IG1pZFgsXHJcbiAgICAgICAgICAgIHRvcDogYm94WSxcclxuICAgICAgICAgICAgd2lkdGg6IG1pZFdpZHRoLFxyXG4gICAgICAgICAgICBoZWlnaHQ6IGJveEhlaWdodCxcclxuICAgICAgICAgICAgZmlsbDogZmlsbENvbG9yLFxyXG4gICAgICAgICAgICBzZWxlY3RhYmxlOiBmYWxzZSxcclxuICAgICAgICAgICAgZXZlbnRlZDogZmFsc2UsXHJcbiAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICBjb25zdCBib3JkZXJQYXRoID0gbmV3IGZhYnJpYy5QYXRoKHBhdGhEYXRhLCB7XHJcbiAgICAgICAgICAgIHN0cm9rZTogYm9yZGVyQ29sb3IsXHJcbiAgICAgICAgICAgIHN0cm9rZVdpZHRoOiAwLjcsXHJcbiAgICAgICAgICAgIGZpbGw6IFwiXCIsXHJcbiAgICAgICAgICAgIHNlbGVjdGFibGU6IGZhbHNlLFxyXG4gICAgICAgICAgICBldmVudGVkOiBmYWxzZSxcclxuICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgIHNoZWx2ZXMucHVzaChmaWxsUmVjdCwgYm9yZGVyUGF0aCk7XHJcblxyXG4gICAgICAgICAgY3VycmVudFNoZWxmSW5kZXgrKztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IGdyb3VwQm90dG9tTGluZSA9IG5ldyBmYWJyaWMuTGluZShcclxuICAgICAgICAgIFttaWRYLCBncm91cEJvdHRvbVksIG1pZFggKyBtaWRXaWR0aCwgZ3JvdXBCb3R0b21ZXSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgc2VsZWN0YWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgIGV2ZW50ZWQ6IGZhbHNlLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICBzaGVsdmVzLnB1c2goZ3JvdXBCb3R0b21MaW5lKTtcclxuXHJcbiAgICAgICAgY29uc3QgZ3JvdXBDZW50ZXJYID0gbWlkWCArIG1pZFdpZHRoIC8gMjtcclxuICAgICAgICBjb25zdCBncm91cENlbnRlclkgPSBncm91cFRvcFkgKyAoZ3JvdXBCb3R0b21ZIC0gZ3JvdXBUb3BZKSAvIDI7XHJcblxyXG4gICAgICAgIGNvbnN0IHNlY3Rpb25CcmFuZHMgPSBuZXcgU2V0KCk7XHJcblxyXG4gICAgICAgIHNoZWx2ZXNJbkdyb3VwPy5mb3JFYWNoKChzaGVsZikgPT4ge1xyXG4gICAgICAgICAgc2hlbGYucHJvZHVjdEJyYW5kTmFtZT8uZm9yRWFjaCgoYnJhbmQ6IHN0cmluZykgPT4ge1xyXG4gICAgICAgICAgICBzZWN0aW9uQnJhbmRzLmFkZChicmFuZCk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgaWYgKFsuLi5zZWN0aW9uQnJhbmRzXS5sZW5ndGgpIHtcclxuICAgICAgICAgIGNvbnN0IHRleHQgPVxyXG4gICAgICAgICAgICBbLi4uc2VjdGlvbkJyYW5kc10uam9pbihcIiArIFwiKSArIChoYXNJbXByb3BlciA/IFwiIOKTmFwiIDogXCJcIik7XHJcbiAgICAgICAgICBjb25zdCBwYWRkaW5nID0gMjtcclxuICAgICAgICAgIGNvbnN0IG1heFRleHRXaWR0aCA9IG1pZFdpZHRoO1xyXG4gICAgICAgICAgY29uc3QgcmVjdFdpZHRoID0gbWlkV2lkdGggKiAwLjk7XHJcbiAgICAgICAgICBjb25zdCBtYXhUZXh0SGVpZ2h0ID0gMjA7XHJcblxyXG4gICAgICAgICAgbGV0IGZvbnRTaXplID0gNjtcclxuICAgICAgICAgIGxldCB3cmFwcGVkVGV4dDtcclxuXHJcbiAgICAgICAgICBjb25zdCBjcmVhdGVUZXh0Ym94ID0gKGZzOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBmYWJyaWMuVGV4dGJveCh0ZXh0LCB7XHJcbiAgICAgICAgICAgICAgZm9udFNpemU6IGZzLFxyXG4gICAgICAgICAgICAgIGZvbnRGYW1pbHk6IFwiSW50ZXJcIixcclxuICAgICAgICAgICAgICBmb250V2VpZ2h0OiBcIjQwMFwiLFxyXG4gICAgICAgICAgICAgIHdpZHRoOiBtYXhUZXh0V2lkdGgsXHJcbiAgICAgICAgICAgICAgdGV4dEFsaWduOiBcImNlbnRlclwiLFxyXG4gICAgICAgICAgICAgIG9yaWdpblg6IFwiY2VudGVyXCIsXHJcbiAgICAgICAgICAgICAgb3JpZ2luWTogXCJjZW50ZXJcIixcclxuICAgICAgICAgICAgICBmaWxsOiBcIiMxRDI5MzlcIixcclxuICAgICAgICAgICAgICBzZWxlY3RhYmxlOiBmYWxzZSxcclxuICAgICAgICAgICAgICBldmVudGVkOiBmYWxzZSxcclxuICAgICAgICAgICAgICBsZWZ0OiBncm91cENlbnRlclgsXHJcbiAgICAgICAgICAgICAgdG9wOiBncm91cENlbnRlclksXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICBkbyB7XHJcbiAgICAgICAgICAgIHdyYXBwZWRUZXh0ID0gY3JlYXRlVGV4dGJveChmb250U2l6ZSk7XHJcbiAgICAgICAgICAgIGZvbnRTaXplIC09IDAuNTtcclxuICAgICAgICAgIH0gd2hpbGUgKHdyYXBwZWRUZXh0LmhlaWdodCA+IG1heFRleHRIZWlnaHQgJiYgZm9udFNpemUgPiAyKTtcclxuXHJcbiAgICAgICAgICBjb25zdCByZWN0SGVpZ2h0ID0gd3JhcHBlZFRleHQuZ2V0U2NhbGVkSGVpZ2h0KCkgKyBwYWRkaW5nO1xyXG5cclxuICAgICAgICAgIGNvbnN0IGdyb3VwQ2VudGVyVGV4dCA9IG5ldyBmYWJyaWMuUmVjdCh7XHJcbiAgICAgICAgICAgIGxlZnQ6IGdyb3VwQ2VudGVyWCxcclxuICAgICAgICAgICAgdG9wOiBncm91cENlbnRlclksXHJcbiAgICAgICAgICAgIG9yaWdpblg6IFwiY2VudGVyXCIsXHJcbiAgICAgICAgICAgIG9yaWdpblk6IFwiY2VudGVyXCIsXHJcbiAgICAgICAgICAgIHdpZHRoOiByZWN0V2lkdGgsXHJcbiAgICAgICAgICAgIGhlaWdodDogcmVjdEhlaWdodCxcclxuICAgICAgICAgICAgZmlsbDogXCJ0cmFuc3BhcmVudFwiLFxyXG4gICAgICAgICAgICBzZWxlY3RhYmxlOiBmYWxzZSxcclxuICAgICAgICAgICAgZXZlbnRlZDogZmFsc2UsXHJcbiAgICAgICAgICAgIHJ4OiAxLFxyXG4gICAgICAgICAgICByeTogMSxcclxuICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgIHNoZWx2ZXMucHVzaChncm91cENlbnRlclRleHQsIHdyYXBwZWRUZXh0KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBsYXN0Qm94WSA9IGZpcnN0Qm94WSArIGJveEhlaWdodCAqIChzaGVsZkNvdW50ICsgMSk7XHJcbiAgICBjb25zdCBsYXN0Qm94ID0gbmV3IGZhYnJpYy5QYXRoKFxyXG4gICAgICBgTSAke21pZFh9ICR7bGFzdEJveFl9IFxyXG4gICAgICAgIEwgJHttaWRYICsgbWlkV2lkdGh9ICR7bGFzdEJveFl9IFxyXG4gICAgICAgIEwgJHttaWRYICsgbWlkV2lkdGh9ICR7bGFzdEJveFkgKyBib3hIZWlnaHQgLSByYWRpdXN9IFxyXG4gICAgICAgIFEgJHttaWRYICsgbWlkV2lkdGh9ICR7bGFzdEJveFkgKyBib3hIZWlnaHR9ICR7XHJcbiAgICAgICAgICBtaWRYICsgbWlkV2lkdGggLSByYWRpdXNcclxuICAgICAgICB9ICR7bGFzdEJveFkgKyBib3hIZWlnaHR9IFxyXG4gICAgICAgIEwgJHttaWRYICsgcmFkaXVzfSAke2xhc3RCb3hZICsgYm94SGVpZ2h0fSBcclxuICAgICAgICBRICR7bWlkWH0gJHtsYXN0Qm94WSArIGJveEhlaWdodH0gJHttaWRYfSAke1xyXG4gICAgICAgICAgbGFzdEJveFkgKyBib3hIZWlnaHQgLSByYWRpdXNcclxuICAgICAgICB9IFxyXG4gICAgICAgIEwgJHttaWRYfSAke2xhc3RCb3hZfSBaYCxcclxuICAgICAge1xyXG4gICAgICAgIGZpbGw6IFwiI0VBRjhGRlwiLFxyXG4gICAgICAgIHN0cm9rZTogXCIjNkJDQUZGXCIsXHJcbiAgICAgICAgc3Ryb2tlV2lkdGg6IDAuMjcsXHJcbiAgICAgIH0sXHJcbiAgICApO1xyXG5cclxuICAgIGNvbnN0IGxhc3RCb3hUZXh0ID0gbmV3IGZhYnJpYy5UZXh0Ym94KFxyXG4gICAgICBgJHtmaXh0dXJlRGF0YT8uZm9vdGVyPy5sYWJlbCA/IGZpeHR1cmVEYXRhLmZvb3Rlci5sYWJlbCA6IFwiXCJ9YCxcclxuICAgICAge1xyXG4gICAgICAgIGxlZnQ6IG1pZFggKyBtaWRXaWR0aCAvIDIsXHJcbiAgICAgICAgdG9wOiBsYXN0Qm94WSArIGJveEhlaWdodCAvIDIsXHJcbiAgICAgICAgZm9udFNpemU6IDUsXHJcbiAgICAgICAgZm9udEZhbWlseTogXCJJbnRlclwiLFxyXG4gICAgICAgIGZvbnRXZWlnaHQ6IFwiNjAwXCIsXHJcbiAgICAgICAgZmlsbDogXCIjMTAxODI4XCIsXHJcbiAgICAgICAgb3JpZ2luWDogXCJjZW50ZXJcIixcclxuICAgICAgICBvcmlnaW5ZOiBcImNlbnRlclwiLFxyXG4gICAgICAgIHRleHRBbGlnbjogXCJjZW50ZXJcIixcclxuICAgICAgICB3aWR0aDogbWlkV2lkdGgsXHJcbiAgICAgICAgaGVpZ3RoOiBib3hIZWlnaHQsXHJcbiAgICAgIH0sXHJcbiAgICApO1xyXG5cclxuICAgIGNvbnN0IGJvdHRvbVdpZHRoID0gd2lkdGggLyAxLjA1O1xyXG4gICAgY29uc3QgYm90dG9tSGVpZ2h0ID0gKDMgLyAxMDApICogaGVpZ2h0O1xyXG4gICAgY29uc3QgYm90dG9tWCA9IHggKyAod2lkdGggLSBib3R0b21XaWR0aCkgLyAyO1xyXG4gICAgY29uc3QgYm90dG9tWSA9IG1pZFkgKyBtaWRIZWlnaHQgKyB0aGlzLnZlcnRpY2FsTWFyZ2luO1xyXG5cclxuICAgIGNvbnN0IGJvdHRvbUNvbnRhaW5lciA9IG5ldyBmYWJyaWMuUmVjdCh7XHJcbiAgICAgIGxlZnQ6IGJvdHRvbVgsXHJcbiAgICAgIHRvcDogYm90dG9tWSxcclxuICAgICAgd2lkdGg6IGJvdHRvbVdpZHRoLFxyXG4gICAgICBoZWlnaHQ6IGJvdHRvbUhlaWdodCxcclxuICAgICAgcng6IHJhZGl1cyxcclxuICAgICAgcnk6IHJhZGl1cyxcclxuICAgICAgc3Ryb2tlOiBcInRyYW5zcGFyZW50XCIsXHJcbiAgICAgIGZpbGw6IFwidHJhbnNwYXJlbnRcIixcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IGJvdHRvbVRleHRDb250ZW50ID0gbmV3IGZhYnJpYy5UZXh0Ym94KFxyXG4gICAgICBgU2hlbHZlcyAtICR7YWN0dWFsU2hlbHZlcy5sZW5ndGh9IC4gUHJvZHVjdHMgLSAgJHtmaXh0dXJlRGF0YS5maXh0dXJlQ2FwYWNpdHl9IC4gVk0gLSAke2ZpeHR1cmVEYXRhLnZtQ29uZmlnPy5sZW5ndGh9YCxcclxuICAgICAge1xyXG4gICAgICAgIGxlZnQ6IGJvdHRvbVggKyBib3R0b21XaWR0aCAvIDIsXHJcbiAgICAgICAgdG9wOiBib3R0b21ZICsgYm90dG9tSGVpZ2h0IC8gMixcclxuICAgICAgICBmb250U2l6ZTogNSxcclxuICAgICAgICBmb250RmFtaWx5OiBcIkludGVyXCIsXHJcbiAgICAgICAgZm9udFdlaWdodDogXCI1MDBcIixcclxuICAgICAgICBmaWxsOiBcIiMzMzNcIixcclxuICAgICAgICBvcmlnaW5YOiBcImNlbnRlclwiLFxyXG4gICAgICAgIG9yaWdpblk6IFwiY2VudGVyXCIsXHJcbiAgICAgICAgdGV4dEFsaWduOiBcImNlbnRlclwiLFxyXG4gICAgICAgIHdpZHRoOiBib3R0b21XaWR0aCxcclxuICAgICAgICBoZWlnaHQ6IGJvdHRvbUhlaWdodCxcclxuICAgICAgfSxcclxuICAgICk7XHJcblxyXG4gICAgY29uc3QgZml4dHVyZUdyb3VwID0gbmV3IGZhYnJpYy5Hcm91cChcclxuICAgICAgW1xyXG4gICAgICAgIG1haW5Db250YWluZXIsXHJcbiAgICAgICAgdG9wQ29udGFpbmVyLFxyXG4gICAgICAgIGlubmVyVG9wQm94LFxyXG4gICAgICAgIHRvcFRleHQsXHJcbiAgICAgICAgaW5uZXJCb3R0b21Cb3gsXHJcbiAgICAgICAgYm90dG9tVGV4dCxcclxuICAgICAgICBtaWRDb250YWluZXIsXHJcbiAgICAgICAgZmlyc3RCb3gsXHJcbiAgICAgICAgZmlyc3RCb3hUZXh0LFxyXG4gICAgICAgIC4uLnNoZWx2ZXMsXHJcbiAgICAgICAgbGFzdEJveCxcclxuICAgICAgICBsYXN0Qm94VGV4dCxcclxuICAgICAgICBib3R0b21Db250YWluZXIsXHJcbiAgICAgICAgYm90dG9tVGV4dENvbnRlbnQsXHJcbiAgICAgIF0sXHJcbiAgICAgIHtcclxuICAgICAgICBsZWZ0OiB4LFxyXG4gICAgICAgIHRvcDogeSxcclxuICAgICAgICBldmVudGVkOiB0cnVlLFxyXG4gICAgICAgIGhvdmVyQ3Vyc29yOiBcInBvaW50ZXJcIixcclxuICAgICAgICBzZWxlY3RhYmxlOiBmYWxzZSxcclxuICAgICAgICBsb2NrU2NhbGluZ1g6IHRydWUsXHJcbiAgICAgICAgbG9ja1NjYWxpbmdZOiB0cnVlLFxyXG4gICAgICAgIHN1YlRhcmdldENoZWNrOiB0cnVlLFxyXG4gICAgICAgIGhhc0NvbnRyb2xzOiBmYWxzZSxcclxuICAgICAgICBsb2NrUm90YXRpb246IHRydWUsXHJcbiAgICAgICAgbG9ja01vdmVtZW50WDogdHJ1ZSxcclxuICAgICAgICBsb2NrTW92ZW1lbnRZOiB0cnVlLFxyXG4gICAgICAgIGFuZ2xlOiBmaXh0dXJlRGF0YS5yZWxhdGl2ZVBvc2l0aW9uPy5hbmdsZSA/PyAwLFxyXG4gICAgICB9LFxyXG4gICAgKSBhcyBmYWJyaWMuR3JvdXAgJiB7XHJcbiAgICAgIHdhbGxJbmRleDogbnVtYmVyO1xyXG4gICAgICBmaXh0dXJlSW5kZXg6IG51bWJlcjtcclxuICAgICAgZml4dHVyZUlkOiBzdHJpbmc7XHJcbiAgICAgIGZpeHR1cmVUeXBlOiBcIndhbGxcIiB8IFwiZmxvb3JcIjtcclxuICAgICAgaXNzdWU6IGJvb2xlYW47XHJcbiAgICAgIGlzc3VlRGF0YTogYW55O1xyXG4gICAgICB0YXNrVHlwZTogc3RyaW5nO1xyXG4gICAgICB2bUNvbmZpZzogW107XHJcbiAgICAgIG9ialR5cGU6IHN0cmluZztcclxuICAgIH07XHJcblxyXG4gICAgZml4dHVyZUdyb3VwLm9uKFwibW91c2Vkb3duXCIsIChldmVudDogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldDtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5yZXNpemVDYW52YXMoKTtcclxuICAgICAgICB0aGlzLmZpdENhbnZhc1RvTGF5b3V0QW5pbWF0ZWQoKTtcclxuICAgICAgfSwgMzAwKTtcclxuICAgICAgdGhpcy5oaWdobGlnaHRGaXh0dXJlKHRhcmdldCk7XHJcbiAgICAgIHRoaXMuc2VsZWN0Rml4dHVyZSh0YXJnZXQpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgZml4dHVyZUdyb3VwLmZpeHR1cmVUeXBlID0gZml4dHVyZURhdGEuZml4dHVyZVR5cGU7XHJcbiAgICBmaXh0dXJlR3JvdXAud2FsbEluZGV4ID0gZml4dHVyZURhdGEuYXNzb2NpYXRlZEVsZW1lbnROdW1iZXI7XHJcbiAgICBmaXh0dXJlR3JvdXAuZml4dHVyZUluZGV4ID0gZml4dHVyZURhdGEuYXNzb2NpYXRlZEVsZW1lbnRGaXh0dXJlTnVtYmVyO1xyXG4gICAgZml4dHVyZUdyb3VwLmZpeHR1cmVJZCA9IGZpeHR1cmVEYXRhLl9pZDtcclxuICAgIGZpeHR1cmVHcm91cC5pc3N1ZSA9IGZpeHR1cmVEYXRhLmlzc3VlO1xyXG4gICAgZml4dHVyZUdyb3VwLmlzc3VlRGF0YSA9IGZpeHR1cmVEYXRhLmlzc3VlRGF0YTtcclxuICAgIGZpeHR1cmVHcm91cC50YXNrVHlwZSA9IGZpeHR1cmVEYXRhLnRhc2tUeXBlO1xyXG4gICAgZml4dHVyZUdyb3VwLnZtQ29uZmlnID0gZml4dHVyZURhdGEudm1Db25maWc7XHJcbiAgICBmaXh0dXJlR3JvdXAub2JqVHlwZSA9IFwiZml4dHVyZVwiO1xyXG5cclxuICAgIGNhbnZhcy5hZGQoZml4dHVyZUdyb3VwKTtcclxuXHJcbiAgICByZXR1cm4gZml4dHVyZUdyb3VwO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0Rml4dHVyZSh0YXJnZXQ6IGFueSkge1xyXG4gICAgaWYgKHRhcmdldCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRml4dHVyZSA9IHtcclxuICAgICAgICBmaXh0dXJlVHlwZTogdGFyZ2V0LmZpeHR1cmVUeXBlLFxyXG4gICAgICAgIHdhbGxJbmRleDogdGFyZ2V0LndhbGxJbmRleCxcclxuICAgICAgICBmaXh0dXJlSW5kZXg6IHRhcmdldC5maXh0dXJlSW5kZXgsXHJcbiAgICAgICAgZml4dHVyZUlkOiB0YXJnZXQuZml4dHVyZUlkLFxyXG4gICAgICAgIGlzc3VlOiB0YXJnZXQuaXNzdWUsXHJcbiAgICAgICAgaXNzdWVEYXRhOiB0YXJnZXQuaXNzdWVEYXRhLFxyXG4gICAgICAgIHRhc2tUeXBlOiB0YXJnZXQudGFza1R5cGUsXHJcbiAgICAgIH07XHJcblxyXG4gICAgICBpZiAodGhpcy5zZWxlY3RlZEZpeHR1cmUuZml4dHVyZVR5cGUgPT09IFwid2FsbFwiKSB7XHJcbiAgICAgICAgY29uc3Qgd2FsbCA9IHRoaXMuZmxvb3JEYXRhLmxheW91dFBvbHlnb24uZmluZChcclxuICAgICAgICAgICh3YWxsOiBhbnkpID0+IHdhbGwuZWxlbWVudE51bWJlciA9PT0gdGhpcy5zZWxlY3RlZEZpeHR1cmUud2FsbEluZGV4LFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgY29uc3QgZml4dHVyZSA9IHdhbGwuZml4dHVyZXMuZmluZChcclxuICAgICAgICAgIChmaXh0dXJlOiBhbnkpID0+IGZpeHR1cmUuX2lkID09PSB0aGlzLnNlbGVjdGVkRml4dHVyZS5maXh0dXJlSWQsXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRml4dHVyZURhdGEgPSBmaXh0dXJlO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRGaXh0dXJlRGF0YVtcInJldmlzaW9uSWRcIl0gPSB0aGlzLmZsb29yRGF0YS5yZXZpc2lvbklkO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuc2VsZWN0ZWRGaXh0dXJlLmZpeHR1cmVUeXBlID09PSBcImZsb29yXCIpIHtcclxuICAgICAgICBjb25zdCBmaXh0dXJlID0gdGhpcy5mbG9vckRhdGEuY2VudGVyRml4dHVyZS5maW5kKFxyXG4gICAgICAgICAgKGZpeHR1cmU6IGFueSkgPT4gZml4dHVyZS5faWQgPT09IHRoaXMuc2VsZWN0ZWRGaXh0dXJlLmZpeHR1cmVJZCxcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRGaXh0dXJlRGF0YSA9IGZpeHR1cmU7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEZpeHR1cmVEYXRhW1wicmV2aXNpb25JZFwiXSA9IHRoaXMuZmxvb3JEYXRhLnJldmlzaW9uSWQ7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRGaXh0dXJlRGF0YT8uaGVhZGVyPy5sYWJlbCAhPSBcIkNMXCIpIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRml4dHVyZS5maXh0dXJlRGF0YSA9IHRoaXMuc2VsZWN0ZWRGaXh0dXJlRGF0YTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRml4dHVyZS5maXh0dXJlRGF0YSA9IG51bGw7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGRyYXdMYWJlbGVkUmVjdGFuZ2xlKFxyXG4gICAgY2FudmFzOiBmYWJyaWMuQ2FudmFzLFxyXG4gICAgeDogbnVtYmVyLFxyXG4gICAgeTogbnVtYmVyLFxyXG4gICAgd2lkdGg6IG51bWJlcixcclxuICAgIGhlaWdodDogbnVtYmVyLFxyXG4gICAgZWxlbWVudDogYW55LFxyXG4gICk6IGZhYnJpYy5Hcm91cCB7XHJcbiAgICBjb25zdCByZWN0ID0gbmV3IGZhYnJpYy5SZWN0KHtcclxuICAgICAgd2lkdGgsXHJcbiAgICAgIGhlaWdodCxcclxuICAgICAgcng6IDIsXHJcbiAgICAgIHJ5OiAyLFxyXG4gICAgICBmaWxsOiBcIiNEQUYxRkZcIixcclxuICAgICAgc3Ryb2tlOiBcIiM2QkNBRkZcIixcclxuICAgICAgc3Ryb2tlV2lkdGg6IDIsXHJcbiAgICAgIG9yaWdpblg6IFwiY2VudGVyXCIsXHJcbiAgICAgIG9yaWdpblk6IFwiY2VudGVyXCIsXHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zdCB0ZXh0ID0gbmV3IGZhYnJpYy5UZXh0Ym94KGVsZW1lbnQuZml4dHVyZU5hbWUsIHtcclxuICAgICAgd2lkdGg6IHdpZHRoIC0gOCxcclxuICAgICAgZm9udFNpemU6IDE0LFxyXG4gICAgICBmb250RmFtaWx5OiBcIkludGVyXCIsXHJcbiAgICAgIGZvbnRXZWlnaHQ6IFwiNTAwXCIsXHJcbiAgICAgIGZpbGw6IFwiIzEwMTgyOFwiLFxyXG4gICAgICBvcmlnaW5YOiBcImNlbnRlclwiLFxyXG4gICAgICBvcmlnaW5ZOiBcImNlbnRlclwiLFxyXG4gICAgICB0ZXh0QWxpZ246IFwiY2VudGVyXCIsXHJcbiAgICAgIGVkaXRhYmxlOiBmYWxzZSxcclxuICAgICAgc3BsaXRCeUdyYXBoZW1lOiB0cnVlLFxyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc3QgdGV4dEJvdW5kcyA9IHRleHQuZ2V0Qm91bmRpbmdSZWN0KCk7XHJcblxyXG4gICAgaWYgKHRleHRCb3VuZHMuaGVpZ2h0ID4gaGVpZ2h0IC0gOCkge1xyXG4gICAgICBjb25zdCBzY2FsZSA9IChoZWlnaHQgLSA4KSAvIHRleHRCb3VuZHMuaGVpZ2h0O1xyXG4gICAgICB0ZXh0LnNldChcImZvbnRTaXplXCIsIHRleHQuZm9udFNpemUhICogc2NhbGUpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGdyb3VwID0gbmV3IGZhYnJpYy5Hcm91cChbcmVjdCwgdGV4dF0sIHtcclxuICAgICAgbGVmdDogeCxcclxuICAgICAgdG9wOiB5LFxyXG4gICAgICBhbmdsZTogZWxlbWVudC5yZWxhdGl2ZVBvc2l0aW9uLmFuZ2xlLFxyXG4gICAgICBzZWxlY3RhYmxlOiBmYWxzZSxcclxuICAgICAgb3JpZ2luWDogXCJjZW50ZXJcIixcclxuICAgICAgb3JpZ2luWTogXCJjZW50ZXJcIixcclxuICAgIH0pIGFzIGZhYnJpYy5Hcm91cCAmIHtcclxuICAgICAgb2JqVHlwZTogc3RyaW5nO1xyXG4gICAgICBkYXRhOiBhbnk7XHJcbiAgICB9O1xyXG5cclxuICAgIGdyb3VwLm9ialR5cGUgPSBcIm90aGVyc1wiO1xyXG4gICAgZ3JvdXAuZGF0YSA9IGVsZW1lbnQ7XHJcblxyXG4gICAgY2FudmFzLmFkZChncm91cCk7XHJcblxyXG4gICAgcmV0dXJuIGdyb3VwO1xyXG4gIH1cclxuXHJcbiAgdG9QaXhlbHModmFsdWU6IG51bWJlciwgdW5pdDogc3RyaW5nLCBkcGkgPSAyLjgpIHtcclxuICAgIGxldCBwaXhlbHM6IG51bWJlcjtcclxuXHJcbiAgICBpZiAodW5pdCA9PT0gXCJtbVwiKSB7XHJcbiAgICAgIHBpeGVscyA9ICh2YWx1ZSAvIDI1LjQpICogZHBpO1xyXG4gICAgfSBlbHNlIGlmICh1bml0ID09PSBcImZ0XCIpIHtcclxuICAgICAgcGl4ZWxzID0gdmFsdWUgKiAxMiAqIGRwaTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlVuc3VwcG9ydGVkIHVuaXQuIFVzZSAnbW0nIG9yICdmdCcuXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBOdW1iZXIocGl4ZWxzLnRvRml4ZWQoMikpO1xyXG4gIH1cclxuXHJcbiAgY2FsY01lcmNoQ29tcGxpYW5jZVBlcmNlbnRhZ2UoKSB7XHJcbiAgICBjb25zdCBhbGxGaXh0dXJlcyA9IFtcclxuICAgICAgLi4udGhpcy5mbG9vckRhdGE/LmxheW91dFBvbHlnb24uZmxhdE1hcCgoZTogYW55KSA9PiBlLmZpeHR1cmVzKSxcclxuICAgICAgLi4udGhpcy5mbG9vckRhdGE/LmNlbnRlckZpeHR1cmUsXHJcbiAgICBdO1xyXG5cclxuICAgIGNvbnN0IGFsbFNoZWx2ZXMgPSBhbGxGaXh0dXJlcy5mbGF0TWFwKChmOiBhbnkpID0+IGYuc2hlbGZDb25maWcpO1xyXG5cclxuICAgIGNvbnN0IGNvbXBsaWFuY2VzID0gYWxsU2hlbHZlcy5tYXAoKHM6IGFueSkgPT4gcz8uY29tcGxpYW5jZSk7XHJcblxyXG4gICAgY29uc3QgdG90YWwgPSBjb21wbGlhbmNlcy5sZW5ndGg7XHJcbiAgICBjb25zdCBwcm9wZXJDb3VudCA9IGNvbXBsaWFuY2VzLmZpbHRlcigocCkgPT4gcCA9PT0gXCJwcm9wZXJcIikubGVuZ3RoO1xyXG4gICAgY29uc3Qgc3VjY2Vzc1BlcmNlbnRhZ2UgPSAocHJvcGVyQ291bnQgLyB0b3RhbCkgKiAxMDA7XHJcblxyXG4gICAgcmV0dXJuIE1hdGgucm91bmQoc3VjY2Vzc1BlcmNlbnRhZ2UpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRGdWxsTGF5b3V0Qm91bmRzKCkge1xyXG4gICAgY29uc3Qgb2JqZWN0cyA9IHRoaXMuY2FudmFzLmdldE9iamVjdHMoKTtcclxuICAgIGlmICghb2JqZWN0cy5sZW5ndGgpIHJldHVybiB7IGxlZnQ6IDAsIHRvcDogMCwgd2lkdGg6IDAsIGhlaWdodDogMCB9O1xyXG5cclxuICAgIGxldCBtaW5YID0gSW5maW5pdHksXHJcbiAgICAgIG1pblkgPSBJbmZpbml0eSxcclxuICAgICAgbWF4WCA9IC1JbmZpbml0eSxcclxuICAgICAgbWF4WSA9IC1JbmZpbml0eTtcclxuXHJcbiAgICBmb3IgKGNvbnN0IG9iaiBvZiBvYmplY3RzKSB7XHJcbiAgICAgIGNvbnN0IHJlY3QgPSBvYmouZ2V0Qm91bmRpbmdSZWN0KCk7XHJcbiAgICAgIG1pblggPSBNYXRoLm1pbihtaW5YLCByZWN0LmxlZnQpO1xyXG4gICAgICBtaW5ZID0gTWF0aC5taW4obWluWSwgcmVjdC50b3ApO1xyXG4gICAgICBtYXhYID0gTWF0aC5tYXgobWF4WCwgcmVjdC5sZWZ0ICsgcmVjdC53aWR0aCk7XHJcbiAgICAgIG1heFkgPSBNYXRoLm1heChtYXhZLCByZWN0LnRvcCArIHJlY3QuaGVpZ2h0KTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBsZWZ0OiBtaW5YLFxyXG4gICAgICB0b3A6IG1pblksXHJcbiAgICAgIHdpZHRoOiBtYXhYIC0gbWluWCxcclxuICAgICAgaGVpZ2h0OiBtYXhZIC0gbWluWSxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICByb3RhdGVDYW52YXMoY2FudmFzOiBmYWJyaWMuQ2FudmFzLCBhbmdsZURlZzogbnVtYmVyKSB7XHJcbiAgICBpZiAoIWNhbnZhcykgcmV0dXJuO1xyXG4gICAgY29uc3QgYWxsT2JqZWN0cyA9IGNhbnZhcy5nZXRPYmplY3RzKCk7XHJcbiAgICBpZiAoIWFsbE9iamVjdHMgfHwgYWxsT2JqZWN0cy5sZW5ndGggPT09IDApIHJldHVybjtcclxuXHJcbiAgICAvLyBDcmVhdGUgYW4gQWN0aXZlU2VsZWN0aW9uIGNvbnRhaW5pbmcgYWxsIG9iamVjdHMgb24gdGhlIGNhbnZhc1xyXG4gICAgY29uc3Qgc2VsZWN0aW9uID0gbmV3IGZhYnJpYy5BY3RpdmVTZWxlY3Rpb24oYWxsT2JqZWN0cyBhcyBhbnksIHsgY2FudmFzIH0pO1xyXG4gICAgY2FudmFzLnNldEFjdGl2ZU9iamVjdChzZWxlY3Rpb24pO1xyXG5cclxuICAgIC8vIFJvdGF0ZSB0aGUgQWN0aXZlU2VsZWN0aW9uIGRpcmVjdGx5ICh3b3JrcyBsaWtlIGEgdGVtcG9yYXJ5IGdyb3VwKVxyXG4gICAgY29uc3QgYWN0aXZlOiBhbnkgPSBjYW52YXMuZ2V0QWN0aXZlT2JqZWN0KCk7XHJcbiAgICBpZiAoIWFjdGl2ZSkge1xyXG4gICAgICBjYW52YXMuZGlzY2FyZEFjdGl2ZU9iamVjdCgpO1xyXG4gICAgICBjYW52YXMucmVxdWVzdFJlbmRlckFsbCgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgY3VycmVudEFuZ2xlID0gYWN0aXZlLmFuZ2xlIHx8IDA7XHJcbiAgICBhY3RpdmUucm90YXRlKGN1cnJlbnRBbmdsZSArIGFuZ2xlRGVnKTtcclxuICAgIGFjdGl2ZS5zZXRDb29yZHMoKTtcclxuXHJcbiAgICAvLyBDbGVhciBzZWxlY3Rpb24gYnV0IGtlZXAgcm90YXRlZCBwb3NpdGlvbnMgb2YgY2hpbGQgb2JqZWN0c1xyXG4gICAgY2FudmFzLmRpc2NhcmRBY3RpdmVPYmplY3QoKTtcclxuICAgIGNhbnZhcy5yZXF1ZXN0UmVuZGVyQWxsKCk7XHJcbiAgfVxyXG5cclxuICBkb3dubG9hZENhbnZhcygpIHtcclxuICAgIGlmICghdGhpcy5jYW52YXMpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBvcmlnaW5hbFZpZXdwb3J0ID0gW1xyXG4gICAgICAuLi50aGlzLmNhbnZhcy52aWV3cG9ydFRyYW5zZm9ybSEsXHJcbiAgICBdIGFzIGZhYnJpYy5UTWF0MkQ7XHJcblxyXG4gICAgdGhpcy5jYW52YXMuc2V0Vmlld3BvcnRUcmFuc2Zvcm0oWzEsIDAsIDAsIDEsIDAsIDBdKTtcclxuXHJcbiAgICBjb25zdCBib3VuZHMgPSB0aGlzLmdldEZ1bGxMYXlvdXRCb3VuZHMoKTtcclxuXHJcbiAgICBjb25zdCBkYXRhVVJMID0gdGhpcy5jYW52YXMudG9EYXRhVVJMKHtcclxuICAgICAgZm9ybWF0OiBcInBuZ1wiLFxyXG4gICAgICBsZWZ0OiBib3VuZHMubGVmdCxcclxuICAgICAgdG9wOiBib3VuZHMudG9wLFxyXG4gICAgICB3aWR0aDogYm91bmRzLndpZHRoLFxyXG4gICAgICBoZWlnaHQ6IGJvdW5kcy5oZWlnaHQsXHJcbiAgICAgIG11bHRpcGxpZXI6IDQsXHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmNhbnZhcy5zZXRWaWV3cG9ydFRyYW5zZm9ybShvcmlnaW5hbFZpZXdwb3J0KTtcclxuXHJcbiAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImFcIik7XHJcbiAgICBsaW5rLmhyZWYgPSBkYXRhVVJMO1xyXG4gICAgbGluay5kb3dubG9hZCA9IGAke3RoaXMuZmxvb3JEYXRhLnN0b3JlTmFtZX1fJHt0aGlzLmZsb29yRGF0YS5mbG9vck5hbWV9LnBuZ2A7XHJcbiAgICBsaW5rLmNsaWNrKCk7XHJcbiAgfVxyXG5cclxuICBoaWdobGlnaHRGaXh0dXJlKGdyb3VwOiBhbnksIGJsaW5rOiBib29sZWFuID0gZmFsc2UpIHtcclxuICAgIHRoaXMucmVtb3ZlSGlnaGxpZ2h0KCk7XHJcbiAgICB0aGlzLmNhbmNlbEhpZ2hsaWdodEJsaW5rID0gZmFsc2U7XHJcblxyXG4gICAgY29uc3QgY2VudGVyID0gZ3JvdXAuZ2V0Q2VudGVyUG9pbnQoKTtcclxuXHJcbiAgICBjb25zdCByZWFsV2lkdGggPSBncm91cC53aWR0aCEgKiBncm91cC5zY2FsZVghO1xyXG4gICAgY29uc3QgcmVhbEhlaWdodCA9IGdyb3VwLmhlaWdodCEgKiBncm91cC5zY2FsZVkhO1xyXG5cclxuICAgIGNvbnN0IHJlY3QgPSBuZXcgZmFicmljLlJlY3Qoe1xyXG4gICAgICBsZWZ0OiBjZW50ZXIueCxcclxuICAgICAgdG9wOiBjZW50ZXIueSxcclxuICAgICAgd2lkdGg6IHJlYWxXaWR0aCArIDgsIC8vIGNvbnNpc3RlbnQgcGFkZGluZ1xyXG4gICAgICBoZWlnaHQ6IHJlYWxIZWlnaHQgKyA4LFxyXG4gICAgICByeDogNSxcclxuICAgICAgcnk6IDUsXHJcbiAgICAgIHN0cm9rZTogXCIjMDBhYWZmXCIsXHJcbiAgICAgIHN0cm9rZVdpZHRoOiAzLFxyXG4gICAgICBmaWxsOiBcInRyYW5zcGFyZW50XCIsXHJcbiAgICAgIHNlbGVjdGFibGU6IGZhbHNlLFxyXG4gICAgICBldmVudGVkOiBmYWxzZSxcclxuICAgICAgb3JpZ2luWDogXCJjZW50ZXJcIixcclxuICAgICAgb3JpZ2luWTogXCJjZW50ZXJcIixcclxuICAgICAgYW5nbGU6IGdyb3VwLmFuZ2xlIHx8IDAsXHJcbiAgICAgIG9wYWNpdHk6IGJsaW5rID8gMCA6IDEsXHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmNhbnZhcy5hZGQocmVjdCk7XHJcbiAgICB0aGlzLmNhbnZhcy5tb3ZlT2JqZWN0VG8ocmVjdCwgdGhpcy5jYW52YXMuZ2V0T2JqZWN0cygpLmxlbmd0aCAtIDEpO1xyXG4gICAgdGhpcy5jYW52YXMucmVxdWVzdFJlbmRlckFsbCgpO1xyXG5cclxuICAgIHRoaXMuYWN0aXZlSGlnaGxpZ2h0ID0gcmVjdDtcclxuXHJcbiAgICAvLyAtLS0gTm8gYmxpbmtpbmcgbmVlZGVkIC0tLVxyXG4gICAgaWYgKCFibGluaykgcmV0dXJuO1xyXG5cclxuICAgIGxldCBjeWNsZXMgPSAwO1xyXG5cclxuICAgIGNvbnN0IGJsaW5rT25jZSA9ICgpID0+IHtcclxuICAgICAgaWYgKHRoaXMuY2FuY2VsSGlnaGxpZ2h0QmxpbmspIHtcclxuICAgICAgICB0aGlzLnJlbW92ZUhpZ2hsaWdodCgpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmVjdC5hbmltYXRlKFxyXG4gICAgICAgIHsgb3BhY2l0eTogMSB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGR1cmF0aW9uOiAyMDAsXHJcbiAgICAgICAgICBvbkNoYW5nZTogKCkgPT4gdGhpcy5jYW52YXMucmVxdWVzdFJlbmRlckFsbCgpLFxyXG4gICAgICAgICAgb25Db21wbGV0ZTogKCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5jYW5jZWxIaWdobGlnaHRCbGluaykge1xyXG4gICAgICAgICAgICAgIHRoaXMucmVtb3ZlSGlnaGxpZ2h0KCk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICByZWN0LmFuaW1hdGUoXHJcbiAgICAgICAgICAgICAgeyBvcGFjaXR5OiAwIH0sXHJcbiAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgZHVyYXRpb246IDIwMCxcclxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiAoKSA9PiB0aGlzLmNhbnZhcy5yZXF1ZXN0UmVuZGVyQWxsKCksXHJcbiAgICAgICAgICAgICAgICBvbkNvbXBsZXRlOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNhbmNlbEhpZ2hsaWdodEJsaW5rKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVIaWdobGlnaHQoKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgIGN5Y2xlcysrO1xyXG4gICAgICAgICAgICAgICAgICBpZiAoY3ljbGVzIDwgMjApIHtcclxuICAgICAgICAgICAgICAgICAgICBibGlua09uY2UoKTtcclxuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuY2FuY2VsSGlnaGxpZ2h0QmxpbmspIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHJlY3Quc2V0KHsgb3BhY2l0eTogMSB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2FudmFzLnJlcXVlc3RSZW5kZXJBbGwoKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSxcclxuICAgICAgKTtcclxuICAgIH07XHJcblxyXG4gICAgYmxpbmtPbmNlKCk7XHJcbiAgfVxyXG5cclxuICByZW1vdmVIaWdobGlnaHQoKSB7XHJcbiAgICB0aGlzLmNhbmNlbEhpZ2hsaWdodEJsaW5rID0gdHJ1ZTtcclxuICAgIGlmICh0aGlzLmFjdGl2ZUhpZ2hsaWdodCkge1xyXG4gICAgICB0aGlzLmNhbnZhcy5yZW1vdmUodGhpcy5hY3RpdmVIaWdobGlnaHQpO1xyXG4gICAgICB0aGlzLmFjdGl2ZUhpZ2hsaWdodCA9IG51bGw7XHJcbiAgICAgIHRoaXMuY2FudmFzLnJlcXVlc3RSZW5kZXJBbGwoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uQ2hhbmdlRml4dHVyZSh7XHJcbiAgICBmaXh0dXJlSWQsXHJcbiAgICBmaXh0dXJlTmFtZSxcclxuICAgIHNoZWxmSWQsXHJcbiAgICB6b25lLFxyXG4gIH06IHtcclxuICAgIGZpeHR1cmVJZDogc3RyaW5nO1xyXG4gICAgZml4dHVyZU5hbWU6IHN0cmluZztcclxuICAgIHNoZWxmSWQ6IHN0cmluZztcclxuICAgIHpvbmU6IHN0cmluZztcclxuICB9KSB7XHJcbiAgICBjb25zdCBhY3Rpb25GaXh0dXJlID0gdGhpcy5jYW52YXNcclxuICAgICAgLmdldE9iamVjdHMoKVxyXG4gICAgICAuZmluZChcclxuICAgICAgICAob2JqOiBhbnkpID0+IG9iai5vYmpUeXBlID09PSBcImZpeHR1cmVcIiAmJiBvYmouZml4dHVyZUlkID09PSBmaXh0dXJlSWQsXHJcbiAgICAgICkgYXMgZmFicmljLkdyb3VwIHwgdW5kZWZpbmVkO1xyXG5cclxuICAgIGlmICghYWN0aW9uRml4dHVyZSkgcmV0dXJuO1xyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLnJlc2l6ZUNhbnZhcygpO1xyXG4gICAgICB0aGlzLmZpdENhbnZhc1RvTGF5b3V0QW5pbWF0ZWQoKTtcclxuICAgIH0sIDMwMCk7XHJcblxyXG4gICAgdGhpcy5oaWdobGlnaHRGaXh0dXJlKGFjdGlvbkZpeHR1cmUsIHRydWUpO1xyXG4gICAgdGhpcy5zZWxlY3RGaXh0dXJlKGFjdGlvbkZpeHR1cmUpO1xyXG4gIH1cclxuXHJcbiAgb25DbGlja0Nsb3NlKCkge1xyXG4gICAgdGhpcy5zZWxlY3RlZEZpeHR1cmUgPSBudWxsO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMucmVzaXplQ2FudmFzKCk7XHJcbiAgICAgIHRoaXMuZml0Q2FudmFzVG9MYXlvdXRBbmltYXRlZCgpO1xyXG4gICAgfSwgMzAwKTtcclxuICAgIHRoaXMucmVtb3ZlSGlnaGxpZ2h0KCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxufVxyXG4iLCI8c2VjdGlvbiBpZD1cIm1lcmNoLWNvbXBsaWFuY2VcIj5cclxuICAgIDxkaXYgKm5nSWY9XCJpc1BhZ2VMb2FkaW5nXCIgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIG0tMFwiPjxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJoZWFkZXJTa2VsZXRvblwiPjwvbmctY29udGFpbmVyPjwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTJcIj48bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic2tlbGV0b25Mb2FkZXJcIj48L25nLWNvbnRhaW5lcj48L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgW25nQ2xhc3NdPVwieyAnZC1ub25lJzogaXNQYWdlTG9hZGluZyB9XCI+XHJcbiAgICAgICAgPGRpdiBpZD1cImJvZHlcIiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sIG92ZXJmbG93LWhpZGRlbiBwb3NpdGlvbi1yZWxhdGl2ZSBjb21wbGlhbmNlLWNhbnZhc1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBpZD1cImNhbnZhcy1jYXJkXCIgY2xhc3M9XCJ3LTEwMCBwb3NpdGlvbi1yZWxhdGl2ZVwiICNjYW52YXNDb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGNhbnZhcyBpZD1cImJhc2UtY2FudmFzXCIgI2Jhc2VDYW52YXM+PC9jYW52YXM+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gUm90YXRlIEJ1dHRvbiAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHN0eWxlPVwidG9wOiAyNHB4OyByaWdodDogOTRweFwiIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tb3V0bGluZSBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0zIHBvc2l0aW9uLWFic29sdXRlIGJnLXdoaXRlIHNoYWRvdy1zbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyb3RhdGVDYW52YXMoY2FudmFzLDkwKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIyXCIgaGVpZ2h0PVwiMjJcIiB2aWV3Qm94PVwiMCAwIDI2IDI2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk02LjM2MjY1IDcuMTc4ODdMNy4xNzYyNSA2LjM2Mjg3TDUuOTA0MjUgNS4wOTIwN0w1LjA4OTQ1IDUuOTA1NjdMNi4zNjI2NSA3LjE3ODg3Wk0xNS42NzEgNi4zNjQwN0wxOS42Mzc5IDEwLjMzMDlMMjAuOTA5OSA5LjA1NzY5TDE2Ljk0NDIgNS4wOTA4N0wxNS42NzEgNi4zNjQwN1pNMTkuNjM3OSAxOC44MjU3TDE4LjgyNDMgMTkuNjM5M0wyMC4wOTYzIDIwLjkxMDFMMjAuOTA5OSAyMC4wOTc3TDE5LjYzNzkgMTguODI1N1pNMTAuMzI5NSAxOS42MzkzTDYuMzYyNjUgMTUuNjcyNUw1LjA5MDY1IDE2Ljk0NTdMOS4wNTYyNiAyMC45MTEzTDEwLjMyOTUgMTkuNjM5M1pNMTguODI0MyAxOS42MzkzQzE3LjY1NDMgMjAuODA4MSAxNi44NDA3IDIxLjYxOTMgMTYuMTQ1OSAyMi4xNDk3QzE1LjQ3MTUgMjIuNjY0NSAxNS4wMTU1IDIyLjgyODkgMTQuNTc2MyAyMi44Mjg5VjI0LjYyODlDMTUuNTY3NSAyNC42Mjg5IDE2LjQwMjcgMjQuMjE3MyAxNy4yMzY3IDIzLjU4MTNDMTguMDUwMyAyMi45NjA5IDE4Ljk2MzUgMjIuMDQ1MyAyMC4wOTYzIDIwLjkxMjVMMTguODI0MyAxOS42MzkzWk05LjA1NjI2IDIwLjkxMTNDMTAuMTg5MSAyMi4wNDUzIDExLjEwMjMgMjIuOTU5NyAxMS45MTU5IDIzLjU4MTNDMTIuNzQ5OSAyNC4yMTczIDEzLjU4NTEgMjQuNjI4OSAxNC41NzYzIDI0LjYyODlWMjIuODI4OUMxNC4xMzcxIDIyLjgyODkgMTMuNjgyMyAyMi42NjQ1IDEzLjAwNjcgMjIuMTQ5N0MxMi4zMTE5IDIxLjYxOTMgMTEuNDk4MyAyMC44MDgxIDEwLjMyOTUgMTkuNjM5M0w5LjA1NjI2IDIwLjkxMTNaTTE5LjYzNzkgMTAuMzMwOUMyMC44MDY3IDExLjQ5OTcgMjEuNjE3OSAxMi4zMTMzIDIyLjE0ODMgMTMuMDA4MUMyMi42NjMxIDEzLjY4MzcgMjIuODI3NSAxNC4xMzg1IDIyLjgyNzUgMTQuNTc3N0gyNC42Mjc1QzI0LjYyNzUgMTMuNTg2NSAyNC4yMTU5IDEyLjc1MTMgMjMuNTc5OSAxMS45MTczQzIyLjk1OTUgMTEuMTAzNyAyMi4wNDI3IDEwLjE5MDUgMjAuOTA5OSA5LjA1NzY5TDE5LjYzNzkgMTAuMzMwOVpNMjAuOTA5OSAyMC4wOTc3QzIyLjA0MzkgMTguOTYzNyAyMi45NTgzIDE4LjA1MTcgMjMuNTc5OSAxNy4yMzgxQzI0LjIxNTkgMTYuNDA0MSAyNC42Mjc1IDE1LjU2ODkgMjQuNjI3NSAxNC41Nzc3SDIyLjgyNzVDMjIuODI3NSAxNS4wMTY5IDIyLjY2MzEgMTUuNDcyOSAyMi4xNDgzIDE2LjE0NzNDMjEuNjE3OSAxNi44NDIxIDIwLjgwNjcgMTcuNjU1NyAxOS42Mzc5IDE4LjgyNTdMMjAuOTA5OSAyMC4wOTc3Wk03LjE3NjI1IDYuMzYyODdDOC4zNDYyNSA1LjE5NDA3IDkuMTU5ODUgNC4zODE2NyA5Ljg1NDY1IDMuODUxMjdDMTAuNTI5IDMuMzM2NDcgMTAuOTg1IDMuMTczMjcgMTEuNDI0MiAzLjE3MzI3VjEuMzcyMDdDMTAuNDMzIDEuMzcyMDcgOS41OTc4NSAxLjc4MzY3IDguNzYzODUgMi40MTk2N0M3Ljk0OTA1IDMuMDQxMjcgNy4wMzcwNSAzLjk1NTY3IDUuOTA0MjUgNS4wODg0N0w3LjE3NjI1IDYuMzYyODdaTTE2Ljk0NDIgNS4wOTA4N0MxNS44MTE0IDMuOTU2ODcgMTQuODk4MiAzLjA0MTI3IDE0LjA4NDYgMi40MTk2N0MxMy4yNTA2IDEuNzgzNjcgMTIuNDE1NCAxLjM3MjA3IDExLjQyNDIgMS4zNzIwN1YzLjE3MzI3QzExLjg2MzQgMy4xNzMyNyAxMi4zMTgyIDMuMzM2NDcgMTIuOTkzOCAzLjg1MTI3QzEzLjY4ODYgNC4zODE2NyAxNC41MDIyIDUuMTkyODcgMTUuNjcxIDYuMzYxNjdMMTYuOTQ0MiA1LjA5MDg3Wk01LjA4OTQ1IDUuOTAzMjdDMy45NTY2NSA3LjAzNjA3IDMuMDQyMjUgNy45NDgwNyAyLjQyMDY1IDguNzYyODdDMS43ODQ2NSA5LjU5Njg3IDEuMzczMDUgMTAuNDMyMSAxLjM3MzA1IDExLjQyMzNIMy4xNzMwNUMzLjE3MzA1IDEwLjk4NDEgMy4zMzc0NSAxMC41MjgxIDMuODUyMjUgOS44NTM2N0M0LjM4MjY1IDkuMTU4ODcgNS4xOTM4NSA4LjM0NTI3IDYuMzYyNjUgNy4xNzUyN0w1LjA4OTQ1IDUuOTAzMjdaTTYuMzYyNjUgMTUuNjcxM0M1LjE5Mzg1IDE0LjUwMTMgNC4zODI2NSAxMy42ODc3IDMuODUyMjUgMTIuOTkyOUMzLjMzNzQ1IDEyLjMxODUgMy4xNzMwNSAxMS44NjI1IDMuMTczMDUgMTEuNDIzM0gxLjM3MzA1QzEuMzczMDUgMTIuNDE0NSAxLjc4NDY1IDEzLjI0OTcgMi40MjA2NSAxNC4wODM3QzMuMDQyMjUgMTQuODk3MyAzLjk1NjY1IDE1LjgxMDUgNS4wODk0NSAxNi45NDMzTDYuMzYyNjUgMTUuNjcxM1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjMUQyOTM5XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0yMy4yIDYuOTgzMkwyNSA4LjJDMjUgNC41ODIgMjIuNDA1NiAxLjU3OTYgMTkgMU0yLjggMTkuMDE2OEwxIDE3LjhDMSAyMS40MTggMy41OTQ0IDI0LjQyMDQgNyAyNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzFEMjkzOVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBEb3dubG9hZCBCdXR0b24gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBzdHlsZT1cInRvcDogMjRweDsgcmlnaHQ6IDI2cHhcIiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMyBwb3NpdGlvbi1hYnNvbHV0ZSBiZy13aGl0ZSBzaGFkb3ctc21cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZG93bmxvYWRDYW52YXMoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMjJcIiBoZWlnaHQ9XCIyMlwiIHZpZXdCb3g9XCIwIDAgMjYgMjZcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAwMDAwMFwiIHN0cm9rZS13aWR0aD1cIjAuMjQwMDAwMDAwMDAwMDAwMDVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPVwiU1ZHUmVwb19iZ0NhcnJpZXJcIiBzdHJva2Utd2lkdGg9XCIwXCI+PC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9XCJTVkdSZXBvX3RyYWNlckNhcnJpZXJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiNDQ0NDQ0NcIiBzdHJva2Utd2lkdGg9XCIwLjM4NFwiPjwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPVwiU1ZHUmVwb19pY29uQ2FycmllclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTIuNTUzNSAxNi41MDYxQzEyLjQxMTQgMTYuNjYxNSAxMi4yMTA2IDE2Ljc1IDEyIDE2Ljc1QzExLjc4OTQgMTYuNzUgMTEuNTg4NiAxNi42NjE1IDExLjQ0NjUgMTYuNTA2MUw3LjQ0NjQ4IDEyLjEzMTFDNy4xNjY5OCAxMS44MjU0IDcuMTg4MjIgMTEuMzUxIDcuNDkzOTIgMTEuMDcxNUM3Ljc5OTYzIDEwLjc5MiA4LjI3NDAyIDEwLjgxMzIgOC41NTM1MiAxMS4xMTg5TDExLjI1IDE0LjA2ODJWM0MxMS4yNSAyLjU4NTc5IDExLjU4NTggMi4yNSAxMiAyLjI1QzEyLjQxNDIgMi4yNSAxMi43NSAyLjU4NTc5IDEyLjc1IDNWMTQuMDY4MkwxNS40NDY1IDExLjExODlDMTUuNzI2IDEwLjgxMzIgMTYuMjAwNCAxMC43OTIgMTYuNTA2MSAxMS4wNzE1QzE2LjgxMTggMTEuMzUxIDE2LjgzMyAxMS44MjU0IDE2LjU1MzUgMTIuMTMxMUwxMi41NTM1IDE2LjUwNjFaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiMxRDI5MzlcIj48L3BhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0zLjc1IDE1QzMuNzUgMTQuNTg1OCAzLjQxNDIyIDE0LjI1IDMgMTQuMjVDMi41ODU3OSAxNC4yNSAyLjI1IDE0LjU4NTggMi4yNSAxNVYxNS4wNTQ5QzIuMjQ5OTggMTYuNDIyNSAyLjI0OTk2IDE3LjUyNDggMi4zNjY1MiAxOC4zOTE4QzIuNDg3NTQgMTkuMjkxOSAyLjc0NjQzIDIwLjA0OTcgMy4zNDgzNSAyMC42NTE2QzMuOTUwMjcgMjEuMjUzNiA0LjcwODE0IDIxLjUxMjUgNS42MDgyNSAyMS42MzM1QzYuNDc1MjIgMjEuNzUgNy41Nzc1NCAyMS43NSA4Ljk0NTEzIDIxLjc1SDE1LjA1NDlDMTYuNDIyNSAyMS43NSAxNy41MjQ4IDIxLjc1IDE4LjM5MTggMjEuNjMzNUMxOS4yOTE5IDIxLjUxMjUgMjAuMDQ5NyAyMS4yNTM2IDIwLjY1MTcgMjAuNjUxNkMyMS4yNTM2IDIwLjA0OTcgMjEuNTEyNSAxOS4yOTE5IDIxLjYzMzUgMTguMzkxOEMyMS43NSAxNy41MjQ4IDIxLjc1IDE2LjQyMjUgMjEuNzUgMTUuMDU0OVYxNUMyMS43NSAxNC41ODU4IDIxLjQxNDIgMTQuMjUgMjEgMTQuMjVDMjAuNTg1OCAxNC4yNSAyMC4yNSAxNC41ODU4IDIwLjI1IDE1QzIwLjI1IDE2LjQzNTQgMjAuMjQ4NCAxNy40MzY1IDIwLjE0NjkgMTguMTkxOUMyMC4wNDgyIDE4LjkyNTcgMTkuODY3OCAxOS4zMTQyIDE5LjU5MSAxOS41OTFDMTkuMzE0MiAxOS44Njc4IDE4LjkyNTcgMjAuMDQ4MiAxOC4xOTE5IDIwLjE0NjlDMTcuNDM2NSAyMC4yNDg0IDE2LjQzNTQgMjAuMjUgMTUgMjAuMjVIOUM3LjU2NDU5IDIwLjI1IDYuNTYzNDcgMjAuMjQ4NCA1LjgwODEyIDIwLjE0NjlDNS4wNzQzNSAyMC4wNDgyIDQuNjg1NzcgMTkuODY3OCA0LjQwOTAxIDE5LjU5MUM0LjEzMjI1IDE5LjMxNDIgMy45NTE4IDE4LjkyNTcgMy44NTMxNSAxOC4xOTE5QzMuNzUxNTkgMTcuNDM2NSAzLjc1IDE2LjQzNTQgMy43NSAxNVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzFEMjkzOVwiPjwvcGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cInsnZC1ub25lJzohc2VsZWN0ZWRGaXh0dXJlPy5maXh0dXJlRGF0YX1cIiBjbGFzcz1cImNvbCBiZy13aGl0ZSByb3VuZGVkIHAtMyBmaXh0dXJlLW92ZXJ2aWV3XCI+XHJcbiAgICAgICAgICAgICAgICA8Zml4dHVyZS1wcm9kdWN0cyBbZml4dHVyZURldGFpbHNdPVwic2VsZWN0ZWRGaXh0dXJlPy5maXh0dXJlRGF0YVwiIChvbkNsb3NlKT1cIm9uQ2xpY2tDbG9zZSgpXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2hhbmdlRml4dHVyZSk9XCJvbkNoYW5nZUZpeHR1cmUoJGV2ZW50KVwiIFtmbG9vckRhdGFdPVwiZmxvb3JEYXRhXCI+PC9maXh0dXJlLXByb2R1Y3RzPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L3NlY3Rpb24+XHJcblxyXG5cclxuPG5nLXRlbXBsYXRlICNoZWFkZXJTa2VsZXRvbj5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3cgbS0wIGctMCBsb2FkZXIgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIG92ZXJmbG93LWhpZGRlblwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyIHctMTAwIHAtNCByb3VuZGVkXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIG10LTAgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI3NrZWxldG9uTG9hZGVyPlxyXG4gICAgPGRpdiBjbGFzcz1cInJvdyBsb2FkZXIgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIG92ZXJmbG93LWhpZGRlblwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyIHJvdW5kZWRcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8YnIgLz5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGJyIC8+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxiciAvPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8YnIgLz5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPiJdfQ==
|
|
1150
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVyY2gtY29tcGxpYW5jZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1zdG9yZS1idWlsZGVyL3NyYy9saWIvY29tcG9uZW50cy9wbGFub2dyYW0vbWVyY2gtY29tcGxpYW5jZS9tZXJjaC1jb21wbGlhbmNlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLXN0b3JlLWJ1aWxkZXIvc3JjL2xpYi9jb21wb25lbnRzL3BsYW5vZ3JhbS9tZXJjaC1jb21wbGlhbmNlL21lcmNoLWNvbXBsaWFuY2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hELE9BQU8sRUFFTCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFJTCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHMUMsT0FBTyxLQUFLLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDakMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLHlCQUF5QixFQUFFLE1BQU0sbUNBQW1DLENBQUM7Ozs7O0FBUXJHLE1BQU0sT0FBTyx3QkFBd0I7SUFxQ3pCO0lBQ0E7SUFuQ0QsU0FBUyxDQUFNO0lBRXhCLFFBQVEsQ0FBaUM7SUFDWCxZQUFZLENBQThCO0lBR3hFLFFBQVE7UUFDTixVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3RCLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNWLENBQUM7SUFFRCxNQUFNLENBQWlCO0lBQ3ZCLFFBQVEsQ0FBUztJQUVqQixNQUFNLENBQVM7SUFFZixTQUFTLEdBQVcsQ0FBQyxDQUFDO0lBQ3RCLGFBQWEsR0FB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RSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUVaLFlBQVk7c0JBQXpDLFNBQVM7dUJBQUMsaUJBQWlCO2dCQUc1QixRQUFRO3NCQURQLFlBQVk7dUJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRpdGxlQ2FzZVBpcGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBIb3N0TGlzdGVuZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uRGVzdHJveSxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIFZpZXdDaGlsZCxcclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBHbG9iYWxTdGF0ZVNlcnZpY2UgfSBmcm9tIFwidGFuZ28tYXBwLXVpLWdsb2JhbFwiO1xyXG5cclxuaW1wb3J0ICogYXMgZmFicmljIGZyb20gXCJmYWJyaWNcIjtcclxuaW1wb3J0IHsgZ2V0Rml4dHVyZUNhbnZhc0xhYmVsLCBnZXRGaXh0dXJlUHJvZHVjdENhcGFjaXR5IH0gZnJvbSBcIi4uLy4uLy4uL2Z1bmN0aW9ucy9wbGFuby5mdW5jdGlvblwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwibWVyY2gtY29tcGxpYW5jZVwiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vbWVyY2gtY29tcGxpYW5jZS5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsOiBcIi4vbWVyY2gtY29tcGxpYW5jZS5jb21wb25lbnQuc2Nzc1wiLFxyXG4gIHByb3ZpZGVyczogW1RpdGxlQ2FzZVBpcGVdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTWVyY2hDb21wbGlhbmNlQ29tcG9uZW50XHJcbiAgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveVxyXG57XHJcbiAgQElucHV0KCkgZmxvb3JEYXRhOiBhbnk7XHJcbiAgQFZpZXdDaGlsZChcImJhc2VDYW52YXNcIiwgeyBzdGF0aWM6IGZhbHNlIH0pXHJcbiAgY2FudmFzRWwhOiBFbGVtZW50UmVmPEhUTUxDYW52YXNFbGVtZW50PjtcclxuICBAVmlld0NoaWxkKFwiY2FudmFzQ29udGFpbmVyXCIpIGNvbnRhaW5lclJlZiE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG5cclxuICBASG9zdExpc3RlbmVyKFwid2luZG93OnJlc2l6ZVwiKVxyXG4gIG9uUmVzaXplKCk6IHZvaWQge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMucmVzaXplQ2FudmFzKCk7XHJcbiAgICB9LCAzMDApO1xyXG4gIH1cclxuXHJcbiAgY2FudmFzITogZmFicmljLkNhbnZhcztcclxuICBjbGllbnRJZDogc3RyaW5nO1xyXG5cclxuICBjZG5Vcmw6IHN0cmluZztcclxuXHJcbiAgem9vbUxldmVsOiBudW1iZXIgPSAxO1xyXG4gIGZpeHR1cmVIZWlnaHQgPSB0aGlzLnRvUGl4ZWxzKDE1MjQsIFwibW1cIik7XHJcbiAgZml4dHVyZVdpZHRoID0gdGhpcy50b1BpeGVscygxMjIwLCBcIm1tXCIpO1xyXG4gIHdhbGxUaGlja25lc3MgPSAzMDtcclxuICB2ZXJ0aWNhbE1hcmdpbiA9ICgxLjI1IC8gMTAwKSAqIHRoaXMuZml4dHVyZUhlaWdodDtcclxuXHJcbiAgaXNQYWdlTG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBzZWxlY3RlZEZpeHR1cmU6IGFueTtcclxuICBzZWxlY3RlZEZpeHR1cmVEYXRhOiBhbnk7XHJcblxyXG4gIHByaXZhdGUgYWN0aXZlSGlnaGxpZ2h0OiBmYWJyaWMuUmVjdCB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgY2FuY2VsSGlnaGxpZ2h0QmxpbmsgPSBmYWxzZTtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBnczogR2xvYmFsU3RhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB0aXRsZUNhc2U6IFRpdGxlQ2FzZVBpcGUsXHJcbiAgKSB7XHJcbiAgICB0aGlzLmdzLmVudmlyb25tZW50LnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKGUpID0+IHtcclxuICAgICAgaWYgKGUpIHRoaXMuY2RuVXJsID0gZS5wbGFub2dyYW1DRE47XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmIChjaGFuZ2VzW1wiZmxvb3JEYXRhXCJdPy5jdXJyZW50VmFsdWUpIHtcclxuICAgICAgdGhpcy5mbG9vckRhdGEgPSBjaGFuZ2VzW1wiZmxvb3JEYXRhXCJdLmN1cnJlbnRWYWx1ZTtcclxuXHJcbiAgICAgIGlmICh0aGlzLmZsb29yRGF0YT8uZmxvb3JDaGFuZ2UpIHtcclxuICAgICAgICB0aGlzLm9uQ2xpY2tDbG9zZSgpO1xyXG4gICAgICAgIHRoaXMucmVuZGVyRmxvb3IoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jYW52YXMgPSBuZXcgZmFicmljLkNhbnZhcyh0aGlzLmNhbnZhc0VsPy5uYXRpdmVFbGVtZW50LCB7XHJcbiAgICAgIHNlbGVjdGlvbjogdHJ1ZSxcclxuICAgICAgc2VsZWN0aW9uRnVsbHlDb250YWluZWQ6IHRydWUsXHJcbiAgICAgIHBlclBpeGVsVGFyZ2V0RmluZDogdHJ1ZSxcclxuICAgICAgdGFyZ2V0RmluZFRvbGVyYW5jZTogNSxcclxuICAgICAgd2lkdGg6IDEwMDAsXHJcbiAgICAgIGhlaWdodDogNzAwLFxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnNldHVwWm9vbUhhbmRsZXJzKCk7XHJcblxyXG4gICAgaWYgKHRoaXMuZmxvb3JEYXRhKSB7XHJcbiAgICAgIHRoaXMucmVuZGVyRmxvb3IoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlc2l6ZUNhbnZhcygpOiB2b2lkIHtcclxuICAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXMuY29udGFpbmVyUmVmLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICB0aGlzLmNhbnZhcy5zZXREaW1lbnNpb25zKHtcclxuICAgICAgd2lkdGg6IGNvbnRhaW5lci5jbGllbnRXaWR0aCAtIDUwLFxyXG4gICAgICBoZWlnaHQ6IGNvbnRhaW5lci5jbGllbnRIZWlnaHQgLSA0MCxcclxuICAgIH0pO1xyXG4gICAgdGhpcy5jYW52YXMucmVxdWVzdFJlbmRlckFsbCgpO1xyXG4gIH1cclxuXHJcbiAgc2V0dXBab29tSGFuZGxlcnMoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNhbnZhcy5vbihcIm1vdXNlOndoZWVsXCIsIChvcHQ6IGZhYnJpYy5URXZlbnQ8V2hlZWxFdmVudD4pID0+IHtcclxuICAgICAgY29uc3QgZSA9IG9wdC5lO1xyXG5cclxuICAgICAgaWYgKGUuY3RybEtleSB8fCBlLm1ldGFLZXkpIHtcclxuICAgICAgICBjb25zdCBkZWx0YSA9IGUuZGVsdGFZO1xyXG4gICAgICAgIGxldCB6b29tID0gdGhpcy5jYW52YXMuZ2V0Wm9vbSgpO1xyXG4gICAgICAgIHpvb20gKj0gMC45OTUgKiogZGVsdGE7XHJcblxyXG4gICAgICAgIHpvb20gPSBNYXRoLm1heCgwLjA1LCBNYXRoLm1pbih6b29tLCA1KSk7XHJcblxyXG4gICAgICAgIHRoaXMuY2FudmFzLnpvb21Ub1BvaW50KFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB4OiBlLm9mZnNldFgsXHJcbiAgICAgICAgICAgIHk6IGUub2Zmc2V0WSxcclxuICAgICAgICAgIH0gYXMgZmFicmljLlBvaW50LFxyXG4gICAgICAgICAgem9vbSxcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgbGV0IGlzRHJhZ2dpbmcgPSBmYWxzZTtcclxuICAgIGxldCBsYXN0UG9zWCA9IDA7XHJcbiAgICBsZXQgbGFzdFBvc1kgPSAwO1xyXG5cclxuICAgIHRoaXMuY2FudmFzLm9uKFwibW91c2U6ZG93blwiLCAob3B0OiBhbnkpID0+IHtcclxuICAgICAgaWYgKCFvcHQudGFyZ2V0KSB7XHJcbiAgICAgICAgaXNEcmFnZ2luZyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5jYW52YXMuc2VsZWN0aW9uID0gZmFsc2U7XHJcbiAgICAgICAgY29uc3QgZSA9IG9wdC5lO1xyXG4gICAgICAgIGxhc3RQb3NYID0gZS5jbGllbnRYO1xyXG4gICAgICAgIGxhc3RQb3NZID0gZS5jbGllbnRZO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmNhbnZhcy5vbihcIm1vdXNlOm1vdmVcIiwgKG9wdDogYW55KSA9PiB7XHJcbiAgICAgIGlmIChpc0RyYWdnaW5nICYmIHRoaXMuY2FudmFzLnZpZXdwb3J0VHJhbnNmb3JtKSB7XHJcbiAgICAgICAgY29uc3QgZSA9IG9wdC5lO1xyXG4gICAgICAgIGNvbnN0IHZwdCA9IHRoaXMuY2FudmFzLnZpZXdwb3J0VHJhbnNmb3JtO1xyXG4gICAgICAgIHZwdFs0XSArPSBlLmNsaWVudFggLSBsYXN0UG9zWDtcclxuICAgICAgICB2cHRbNV0gKz0gZS5jbGllbnRZIC0gbGFzdFBvc1k7XHJcbiAgICAgICAgdGhpcy5jYW52YXMucmVxdWVzdFJlbmRlckFsbCgpO1xyXG4gICAgICAgIGxhc3RQb3NYID0gZS5jbGllbnRYO1xyXG4gICAgICAgIGxhc3RQb3NZID0gZS5jbGllbnRZO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmNhbnZhcy5vbihcIm1vdXNlOnVwXCIsICgpID0+IHtcclxuICAgICAgaXNEcmFnZ2luZyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNhbnZhcy5zZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyByZW5kZXJGbG9vcigpIHtcclxuICAgIHRoaXMuY2FudmFzPy5jbGVhcigpO1xyXG4gICAgYXdhaXQgdGhpcy5kcmF3TGF5b3V0RWxlbWVudHMoKTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLnJlc2l6ZUNhbnZhcygpO1xyXG4gICAgICB0aGlzLmZpdENhbnZhc1RvTGF5b3V0QW5pbWF0ZWQoKTtcclxuICAgIH0sIDMwMCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZpdENhbnZhc1RvTGF5b3V0QW5pbWF0ZWQoZHVyYXRpb24gPSAzMDApIHtcclxuICAgIGlmICghdGhpcy5jYW52YXMpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBib3VuZHMgPSB0aGlzLmdldEZ1bGxMYXlvdXRCb3VuZHMoKTtcclxuICAgIGlmICghYm91bmRzLndpZHRoIHx8ICFib3VuZHMuaGVpZ2h0KSByZXR1cm47XHJcblxyXG4gICAgY29uc3QgY2FudmFzVyA9IHRoaXMuY2FudmFzLmdldFdpZHRoKCk7XHJcbiAgICBjb25zdCBjYW52YXNIID0gdGhpcy5jYW52YXMuZ2V0SGVpZ2h0KCk7XHJcblxyXG4gICAgLy8gQ29tcHV0ZSB6b29tIHRvIGZpdFxyXG4gICAgY29uc3Qgc2NhbGVYID0gY2FudmFzVyAvIGJvdW5kcy53aWR0aDtcclxuICAgIGNvbnN0IHNjYWxlWSA9IGNhbnZhc0ggLyBib3VuZHMuaGVpZ2h0O1xyXG4gICAgY29uc3QgdGFyZ2V0Wm9vbSA9IE1hdGgubWluKHNjYWxlWCwgc2NhbGVZKTtcclxuXHJcbiAgICBjb25zdCB0YXJnZXRWcHQgPSBbXHJcbiAgICAgIC4uLih0aGlzLmNhbnZhcy52aWV3cG9ydFRyYW5zZm9ybSB8fCBbMSwgMCwgMCwgMSwgMCwgMF0pLFxyXG4gICAgXSBhcyBmYWJyaWMuVE1hdDJEO1xyXG5cclxuICAgIHRhcmdldFZwdFswXSA9IHRhcmdldFpvb207IC8vIHNjYWxlWFxyXG4gICAgdGFyZ2V0VnB0WzNdID0gdGFyZ2V0Wm9vbTsgLy8gc2NhbGVZXHJcblxyXG4gICAgLy8gQ2VudGVyIFhcclxuICAgIHRhcmdldFZwdFs0XSA9IGNhbnZhc1cgLyAyIC0gKGJvdW5kcy5sZWZ0ICsgYm91bmRzLndpZHRoIC8gMikgKiB0YXJnZXRab29tO1xyXG5cclxuICAgIC8vIC0tLS0tIEZJWEVEOiBrZWVwIGxheW91dCBzbGlnaHRseSB1cCB3aXRob3V0IHN0YWNraW5nIC0tLS0tXHJcbiAgICBjb25zdCBjZW50ZXJlZFkgPVxyXG4gICAgICBjYW52YXNIIC8gMiAtIChib3VuZHMudG9wICsgYm91bmRzLmhlaWdodCAvIDIpICogdGFyZ2V0Wm9vbTtcclxuXHJcbiAgICBjb25zdCBzY2FsZWRIZWlnaHQgPSBib3VuZHMuaGVpZ2h0ICogdGFyZ2V0Wm9vbTtcclxuICAgIGNvbnN0IGVtcHR5U3BhY2VZID0gY2FudmFzSCAtIHNjYWxlZEhlaWdodDtcclxuXHJcbiAgICBjb25zdCBzaGlmdFVwID0gZW1wdHlTcGFjZVkgPiAwID8gZW1wdHlTcGFjZVkgKiAwLjI1IDogMDtcclxuXHJcbiAgICB0YXJnZXRWcHRbNV0gPSBjZW50ZXJlZFkgLSBzaGlmdFVwO1xyXG5cclxuICAgIC8vIEFuaW1hdGVcclxuICAgIGNvbnN0IHN0YXJ0VnB0ID0gWy4uLnRoaXMuY2FudmFzLnZpZXdwb3J0VHJhbnNmb3JtIV0gYXMgZmFicmljLlRNYXQyRDtcclxuXHJcbiAgICBmYWJyaWMudXRpbC5hbmltYXRlKHtcclxuICAgICAgc3RhcnRWYWx1ZTogMCxcclxuICAgICAgZW5kVmFsdWU6IDEsXHJcbiAgICAgIGR1cmF0aW9uLFxyXG4gICAgICBlYXNpbmc6IGZhYnJpYy51dGlsLmVhc2UuZWFzZU91dEN1YmljLFxyXG4gICAgICBvbkNoYW5nZTogKHZhbHVlOiBudW1iZXIpID0+IHtcclxuICAgICAgICBjb25zdCB2cHQgPSB0aGlzLmNhbnZhcy52aWV3cG9ydFRyYW5zZm9ybSE7XHJcblxyXG4gICAgICAgIHZwdFswXSA9IHN0YXJ0VnB0WzBdICsgKHRhcmdldFZwdFswXSAtIHN0YXJ0VnB0WzBdKSAqIHZhbHVlO1xyXG4gICAgICAgIHZwdFszXSA9IHN0YXJ0VnB0WzNdICsgKHRhcmdldFZwdFszXSAtIHN0YXJ0VnB0WzNdKSAqIHZhbHVlO1xyXG4gICAgICAgIHZwdFs0XSA9IHN0YXJ0VnB0WzRdICsgKHRhcmdldFZwdFs0XSAtIHN0YXJ0VnB0WzRdKSAqIHZhbHVlO1xyXG4gICAgICAgIHZwdFs1XSA9IHN0YXJ0VnB0WzVdICsgKHRhcmdldFZwdFs1XSAtIHN0YXJ0VnB0WzVdKSAqIHZhbHVlO1xyXG5cclxuICAgICAgICB0aGlzLmNhbnZhcy5yZXF1ZXN0UmVuZGVyQWxsKCk7XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGRyYXdMYXlvdXRFbGVtZW50cygpIHtcclxuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLmZsb29yRGF0YS5sYXlvdXRQb2x5Z29uLmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5mbG9vckRhdGEubGF5b3V0UG9seWdvbltpbmRleF07XHJcblxyXG4gICAgICBsZXQgd2FsbDtcclxuXHJcbiAgICAgIGVsZW1lbnQucmVsYXRpdmVQb3NpdGlvbiA/Pz0ge1xyXG4gICAgICAgIHg6IDAsXHJcbiAgICAgICAgeTogMCxcclxuICAgICAgICB1bml0OiBcImZ0XCIsXHJcbiAgICAgIH07XHJcblxyXG4gICAgICBjb25zdCB4ID0gdGhpcy50b1BpeGVscyhlbGVtZW50LnJlbGF0aXZlUG9zaXRpb24ueCwgZWxlbWVudC51bml0KTtcclxuICAgICAgY29uc3QgeSA9IHRoaXMudG9QaXhlbHMoZWxlbWVudC5yZWxhdGl2ZVBvc2l0aW9uLnksIGVsZW1lbnQudW5pdCk7XHJcblxyXG4gICAgICBpZiAoZWxlbWVudC5lbGVtZW50VHlwZSA9PT0gXCJ3YWxsXCIpIHtcclxuICAgICAgICBjb25zdCBoZWlnaHQgPSB0aGlzLndhbGxUaGlja25lc3M7XHJcbiAgICAgICAgY29uc3Qgd2lkdGggPSB0aGlzLnRvUGl4ZWxzKGVsZW1lbnQuZGlzdGFuY2UsIGVsZW1lbnQudW5pdCk7XHJcbiAgICAgICAgd2FsbCA9IHRoaXMuZHJhd1dhbGwodGhpcy5jYW52YXMsIHgsIHksIGhlaWdodCwgd2lkdGgsIGVsZW1lbnQpO1xyXG4gICAgICB9IGVsc2UgaWYgKGVsZW1lbnQuZWxlbWVudFR5cGUgPT09IFwiZW50cmFuY2VcIikge1xyXG4gICAgICAgIGNvbnN0IGFycm93V2lkdGggPSA4MDtcclxuICAgICAgICBjb25zdCBhcnJvd0hlaWdodCA9IDc1O1xyXG4gICAgICAgIGNvbnN0IGFycm93QmFzZSA9IDQwO1xyXG4gICAgICAgIHRoaXMuZHJhd0VudHJhbmNlKFxyXG4gICAgICAgICAgdGhpcy5jYW52YXMsXHJcbiAgICAgICAgICB4LFxyXG4gICAgICAgICAgeSxcclxuICAgICAgICAgIGFycm93V2lkdGgsXHJcbiAgICAgICAgICBhcnJvd0hlaWdodCxcclxuICAgICAgICAgIGFycm93QmFzZSxcclxuICAgICAgICAgIGVsZW1lbnQsXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKGVsZW1lbnQuZWxlbWVudFR5cGUgPT09IFwid2FsbFwiKSB7XHJcbiAgICAgICAgY29uc3QgZml4dHVyZUdyb3VwczogZmFicmljLkdyb3VwW10gPSBbXTtcclxuXHJcbiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBlbGVtZW50Py5maXh0dXJlcz8ubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgIGNvbnN0IGZpeHR1cmUgPSBlbGVtZW50LmZpeHR1cmVzW2pdO1xyXG4gICAgICAgICAgY29uc3QgeCA9IHRoaXMudG9QaXhlbHMoXHJcbiAgICAgICAgICAgIGZpeHR1cmUucmVsYXRpdmVQb3NpdGlvbi54LFxyXG4gICAgICAgICAgICBmaXh0dXJlLnJlbGF0aXZlUG9zaXRpb24udW5pdCxcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBjb25zdCB5ID0gdGhpcy50b1BpeGVscyhcclxuICAgICAgICAgICAgZml4dHVyZS5yZWxhdGl2ZVBvc2l0aW9uLnksXHJcbiAgICAgICAgICAgIGZpeHR1cmUucmVsYXRpdmVQb3NpdGlvbi51bml0LFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGNvbnN0IGZpeHR1cmVIZWlnaHQgPSB0aGlzLnRvUGl4ZWxzKFxyXG4gICAgICAgICAgICBmaXh0dXJlLmZpeHR1cmVTdGF0aWNMZW5ndGgudmFsdWUsXHJcbiAgICAgICAgICAgIGZpeHR1cmUuZml4dHVyZVN0YXRpY0xlbmd0aC51bml0LFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGNvbnN0IGZpeHR1cmVXaWR0aCA9IHRoaXMudG9QaXhlbHMoXHJcbiAgICAgICAgICAgIGZpeHR1cmUuZml4dHVyZVN0YXRpY1dpZHRoLnZhbHVlLFxyXG4gICAgICAgICAgICBmaXh0dXJlLmZpeHR1cmVTdGF0aWNXaWR0aC51bml0LFxyXG4gICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICBjb25zdCBmaXh0dXJlT2JqID0gYXdhaXQgdGhpcy5kcmF3Rml4dHVyZShcclxuICAgICAgICAgICAgdGhpcy5jYW52YXMsXHJcbiAgICAgICAgICAgIHgsXHJcbiAgICAgICAgICAgIHksXHJcbiAgICAgICAgICAgIGZpeHR1cmVIZWlnaHQsXHJcbiAgICAgICAgICAgIGZpeHR1cmVXaWR0aCxcclxuICAgICAgICAgICAgZml4dHVyZSxcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBmaXh0dXJlR3JvdXBzLnB1c2goZml4dHVyZU9iaiBhcyBmYWJyaWMuR3JvdXApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGVsZW1lbnQuaXNMb2NrZWQgJiYgd2FsbCkge1xyXG4gICAgICAgICAgdGhpcy5jYW52YXMucmVtb3ZlKHdhbGwpO1xyXG4gICAgICAgICAgZml4dHVyZUdyb3Vwcy5mb3JFYWNoKChmKSA9PiB0aGlzLmNhbnZhcy5yZW1vdmUoZikpO1xyXG5cclxuICAgICAgICAgIGNvbnN0IGNvbWJpbmVkR3JvdXAgPSBuZXcgZmFicmljLkdyb3VwKFt3YWxsLCAuLi5maXh0dXJlR3JvdXBzXSwge1xyXG4gICAgICAgICAgICBoYXNDb250cm9sczogdHJ1ZSxcclxuICAgICAgICAgICAgc2VsZWN0YWJsZTogdHJ1ZSxcclxuICAgICAgICAgICAgc3ViVGFyZ2V0Q2hlY2s6IHRydWUsXHJcbiAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICBjb21iaW5lZEdyb3VwLnNldCh7IGlzTG9ja2VkOiB0cnVlIH0pO1xyXG4gICAgICAgICAgdGhpcy5jYW52YXMuYWRkKGNvbWJpbmVkR3JvdXApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBlbGVtZW50Py5vdGhlckVsZW1lbnRzPy5sZW5ndGg7IGorKykge1xyXG4gICAgICAgICAgY29uc3Qgb3RoZXJFbGVtZW50ID0gZWxlbWVudC5vdGhlckVsZW1lbnRzW2pdO1xyXG4gICAgICAgICAgY29uc3QgeCA9IHRoaXMudG9QaXhlbHMob3RoZXJFbGVtZW50LnJlbGF0aXZlUG9zaXRpb24ueCwgXCJmdFwiKTtcclxuICAgICAgICAgIGNvbnN0IHkgPSB0aGlzLnRvUGl4ZWxzKG90aGVyRWxlbWVudC5yZWxhdGl2ZVBvc2l0aW9uLnksIFwiZnRcIik7XHJcbiAgICAgICAgICBjb25zdCBoID0gdGhpcy50b1BpeGVscyhcclxuICAgICAgICAgICAgb3RoZXJFbGVtZW50LmZpeHR1cmVTdGF0aWNMZW5ndGgudmFsdWUsXHJcbiAgICAgICAgICAgIG90aGVyRWxlbWVudC5maXh0dXJlU3RhdGljTGVuZ3RoLnVuaXQsXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgY29uc3QgdyA9IHRoaXMudG9QaXhlbHMoXHJcbiAgICAgICAgICAgIG90aGVyRWxlbWVudC5maXh0dXJlU3RhdGljV2lkdGgudmFsdWUsXHJcbiAgICAgICAgICAgIG90aGVyRWxlbWVudC5maXh0dXJlU3RhdGljV2lkdGgudW5pdCxcclxuICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgdGhpcy5kcmF3TGFiZWxlZFJlY3RhbmdsZSh0aGlzLmNhbnZhcywgeCwgeSwgdywgaCwgb3RoZXJFbGVtZW50KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZmxvb3JEYXRhPy5jZW50ZXJGaXh0dXJlPy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBjb25zdCBmaXh0dXJlID0gdGhpcy5mbG9vckRhdGEuY2VudGVyRml4dHVyZVtpXTtcclxuICAgICAgY29uc3QgeCA9IHRoaXMudG9QaXhlbHMoXHJcbiAgICAgICAgZml4dHVyZS5yZWxhdGl2ZVBvc2l0aW9uLngsXHJcbiAgICAgICAgZml4dHVyZS5yZWxhdGl2ZVBvc2l0aW9uLnVuaXQsXHJcbiAgICAgICk7XHJcbiAgICAgIGNvbnN0IHkgPSB0aGlzLnRvUGl4ZWxzKFxyXG4gICAgICAgIGZpeHR1cmUucmVsYXRpdmVQb3NpdGlvbi55LFxyXG4gICAgICAgIGZpeHR1cmUucmVsYXRpdmVQb3NpdGlvbi51bml0LFxyXG4gICAgICApO1xyXG4gICAgICBjb25zdCBmaXh0dXJlSGVpZ2h0ID0gdGhpcy50b1BpeGVscyhcclxuICAgICAgICBmaXh0dXJlLmZpeHR1cmVTdGF0aWNMZW5ndGgudmFsdWUsXHJcbiAgICAgICAgZml4dHVyZS5maXh0dXJlU3RhdGljTGVuZ3RoLnVuaXQsXHJcbiAgICAgICk7XHJcbiAgICAgIGNvbnN0IGZpeHR1cmVXaWR0aCA9IHRoaXMudG9QaXhlbHMoXHJcbiAgICAgICAgZml4dHVyZS5maXh0dXJlU3RhdGljV2lkdGgudmFsdWUsXHJcbiAgICAgICAgZml4dHVyZS5maXh0dXJlU3RhdGljV2lkdGgudW5pdCxcclxuICAgICAgKTtcclxuICAgICAgYXdhaXQgdGhpcy5kcmF3Rml4dHVyZShcclxuICAgICAgICB0aGlzLmNhbnZhcyxcclxuICAgICAgICB4LFxyXG4gICAgICAgIHksXHJcbiAgICAgICAgZml4dHVyZUhlaWdodCxcclxuICAgICAgICBmaXh0dXJlV2lkdGgsXHJcbiAgICAgICAgZml4dHVyZSxcclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuZmxvb3JEYXRhPy5vdGhlckVsZW1lbnRzPy5sZW5ndGg7IGorKykge1xyXG4gICAgICBjb25zdCBvdGhlckVsZW1lbnQgPSB0aGlzLmZsb29yRGF0YS5vdGhlckVsZW1lbnRzW2pdO1xyXG4gICAgICBjb25zdCB4ID0gdGhpcy50b1BpeGVscyhvdGhlckVsZW1lbnQucmVsYXRpdmVQb3NpdGlvbi54LCBcImZ0XCIpO1xyXG4gICAgICBjb25zdCB5ID0gdGhpcy50b1BpeGVscyhvdGhlckVsZW1lbnQucmVsYXRpdmVQb3NpdGlvbi55LCBcImZ0XCIpO1xyXG4gICAgICBjb25zdCBoID0gdGhpcy50b1BpeGVscyhcclxuICAgICAgICBvdGhlckVsZW1lbnQuZml4dHVyZVN0YXRpY0xlbmd0aC52YWx1ZSxcclxuICAgICAgICBvdGhlckVsZW1lbnQuZml4dHVyZVN0YXRpY0xlbmd0aC51bml0LFxyXG4gICAgICApO1xyXG4gICAgICBjb25zdCB3ID0gdGhpcy50b1BpeGVscyhcclxuICAgICAgICBvdGhlckVsZW1lbnQuZml4dHVyZVN0YXRpY1dpZHRoLnZhbHVlLFxyXG4gICAgICAgIG90aGVyRWxlbWVudC5maXh0dXJlU3RhdGljV2lkdGgudW5pdCxcclxuICAgICAgKTtcclxuXHJcbiAgICAgIHRoaXMuZHJhd0xhYmVsZWRSZWN0YW5nbGUodGhpcy5jYW52YXMsIHgsIHksIHcsIGgsIG90aGVyRWxlbWVudCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkcmF3V2FsbChcclxuICAgIGNhbnZhczogZmFicmljLkNhbnZhcyxcclxuICAgIHg6IG51bWJlcixcclxuICAgIHk6IG51bWJlcixcclxuICAgIGhlaWdodDogbnVtYmVyLFxyXG4gICAgd2lkdGg6IG51bWJlcixcclxuICAgIGVsZW1lbnREYXRhOiBhbnksXHJcbiAgKSB7XHJcbiAgICBjb25zdCByYWRpdXMgPSA1O1xyXG4gICAgY29uc3QgZmlsbENvbG9yID0gXCIjRjZGQ0ZGXCI7XHJcbiAgICBjb25zdCBzdHJva2VDb2xvciA9IFwiI0QwRDVERFwiO1xyXG4gICAgY29uc3QgbGFiZWxDb2xvciA9IFwiIzAwOUJGM1wiO1xyXG4gICAgY29uc3QgdGV4dCA9IGAke3RoaXMudGl0bGVDYXNlLnRyYW5zZm9ybShlbGVtZW50RGF0YS5lbGVtZW50VHlwZSl9ICR7XHJcbiAgICAgIGVsZW1lbnREYXRhLmVsZW1lbnROdW1iZXJcclxuICAgIH1gO1xyXG5cclxuICAgIGNvbnN0IHdhbGwgPSBuZXcgZmFicmljLlJlY3Qoe1xyXG4gICAgICBsZWZ0OiAwLFxyXG4gICAgICB0b3A6IDAsXHJcbiAgICAgIHdpZHRoLFxyXG4gICAgICBoZWlnaHQsXHJcbiAgICAgIHJ4OiByYWRpdXMsXHJcbiAgICAgIHJ5OiByYWRpdXMsXHJcbiAgICAgIGZpbGw6IGZpbGxDb2xvcixcclxuICAgICAgc3Ryb2tlOiBzdHJva2VDb2xvcixcclxuICAgICAgc3Ryb2tlV2lkdGg6IDAuMjcsXHJcbiAgICAgIHNlbGVjdGFibGU6IGZhbHNlLFxyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc3QgY2VudGVyWCA9IHdpZHRoIC8gMjtcclxuICAgIGNvbnN0IGNlbnRlclkgPSBoZWlnaHQgLyAyO1xyXG4gICAgY29uc3QgaXNWZXJ0aWNhbCA9IGhlaWdodCA+IHdpZHRoO1xyXG5cclxuICAgIGNvbnN0IGxhYmVsID0gbmV3IGZhYnJpYy5GYWJyaWNUZXh0KHRleHQsIHtcclxuICAgICAgbGVmdDogY2VudGVyWCxcclxuICAgICAgdG9wOiBjZW50ZXJZLFxyXG4gICAgICBmb250U2l6ZTogMTAsXHJcbiAgICAgIGZvbnRGYW1pbHk6IFwiSW50ZXJcIixcclxuICAgICAgZm9udFdlaWdodDogXCI1MDBcIixcclxuICAgICAgZmlsbDogbGFiZWxDb2xvcixcclxuICAgICAgb3JpZ2luWDogXCJjZW50ZXJcIixcclxuICAgICAgb3JpZ2luWTogXCJjZW50ZXJcIixcclxuICAgICAgYW5nbGU6IGlzVmVydGljYWwgPyAtOTAgOiAwLFxyXG4gICAgICBzZWxlY3RhYmxlOiBmYWxzZSxcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IGFycm93SGVhZCA9IDU7XHJcbiAgICBjb25zdCBlbGVtZW50czogZmFicmljLk9iamVjdFtdID0gW3dhbGwsIGxhYmVsXTtcclxuXHJcbiAgICBpZiAoaXNWZXJ0aWNhbCkge1xyXG4gICAgICBjb25zdCB0ZXh0V2lkdGggPSBsYWJlbC53aWR0aCB8fCAwO1xyXG4gICAgICBjb25zdCB0b3BBcnJvd1kgPSA1O1xyXG4gICAgICBjb25zdCB0b3BBcnJvd0VuZFkgPSBjZW50ZXJZIC0gdGV4dFdpZHRoIC8gMiAtIDU7XHJcblxyXG4gICAgICBpZiAodG9wQXJyb3dFbmRZID4gdG9wQXJyb3dZICsgYXJyb3dIZWFkKSB7XHJcbiAgICAgICAgZWxlbWVudHMucHVzaChcclxuICAgICAgICAgIG5ldyBmYWJyaWMuTGluZShbY2VudGVyWCwgdG9wQXJyb3dZLCBjZW50ZXJYLCB0b3BBcnJvd0VuZFldLCB7XHJcbiAgICAgICAgICAgIHN0cm9rZTogbGFiZWxDb2xvcixcclxuICAgICAgICAgICAgc3Ryb2tlV2lkdGg6IDEsXHJcbiAgICAgICAgICAgIHNlbGVjdGFibGU6IGZhbHNlLFxyXG4gICAgICAgICAgfSksXHJcbiAgICAgICAgICBuZXcgZmFicmljLlRyaWFuZ2xlKHtcclxuICAgICAgICAgICAgbGVmdDogY2VudGVyWCxcclxuICAgICAgICAgICAgdG9wOiB0b3BBcnJvd1ksXHJcbiAgICAgICAgICAgIHdpZHRoOiBhcnJvd0hlYWQsXHJcbiAgICAgICAgICAgIGhlaWdodDogYXJyb3dIZWFkLFxyXG4gICAgICAgICAgICBhbmdsZTogMCxcclxuICAgICAgICAgICAgZmlsbDogbGFiZWxDb2xvcixcclxuICAgICAgICAgICAgb3JpZ2luWDogXCJjZW50ZXJcIixcclxuICAgICAgICAgICAgb3JpZ2luWTogXCJib3R0b21cIixcclxuICAgICAgICAgICAgc2VsZWN0YWJsZTogZmFsc2UsXHJcbiAgICAgICAgICB9KSxcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCBib3R0b21BcnJvd1N0YXJ0WSA9IGNlbnRlclkgKyB0ZXh0V2lkdGggLyAyICsgNTtcclxuICAgICAgY29uc3QgYm90dG9tQXJyb3dFbmRZID0gaGVpZ2h0IC0gNTtcclxuXHJcbiAgICAgIGlmIChib3R0b21BcnJvd0VuZFkgPiBib3R0b21BcnJvd1N0YXJ0WSArIGFycm93SGVhZCkge1xyXG4gICAgICAgIGVsZW1lbnRzLnB1c2goXHJcbiAgICAgICAgICBuZXcgZmFicmljLkxpbmUoXHJcbiAgICAgICAgICAgIFtjZW50ZXJYLCBib3R0b21BcnJvd1N0YXJ0WSwgY2VudGVyWCwgYm90dG9tQXJyb3dFbmRZXSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHN0cm9rZTogbGFiZWxDb2xvcixcclxuICAgICAgICAgICAgICBzdHJva2VXaWR0aDogMSxcclxuICAgICAgICAgICAgICBzZWxlY3RhYmxlOiBmYWxzZSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICksXHJcbiAgICAgICAgICBuZXcgZmFicmljLlRyaWFuZ2xlKHtcclxuICAgICAgICAgICAgbGVmdDogY2VudGVyWCxcclxuICAgICAgICAgICAgdG9wOiBib3R0b21BcnJvd0VuZFksXHJcbiAgICAgICAgICAgIHdpZHRoOiBhcnJvd0hlYWQsXHJcbiAgICAgICAgICAgIGhlaWdodDogYXJyb3dIZWFkLFxyXG4gICAgICAgICAgICBhbmdsZTogMTgwLFxyXG4gICAgICAgICAgICBmaWxsOiBsYWJlbENvbG9yLFxyXG4gICAgICAgICAgICBvcmlnaW5YOiBcImNlbnRlclwiLFxyXG4gICAgICAgICAgICBvcmlnaW5ZOiBcInRvcFwiLFxyXG4gICAgICAgICAgICBzZWxlY3RhYmxlOiBmYWxzZSxcclxuICAgICAgICAgIH0pLFxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IHRleHRXaWR0aCA9IGxhYmVsLndpZHRoIHx8IDA7XHJcbiAgICAgIGNvbnN0IGxlZnRBcnJvd1N0YXJ0WCA9IDU7XHJcbiAgICAgIGNvbnN0IGxlZnRBcnJvd0VuZFggPSBjZW50ZXJYIC0gdGV4dFdpZHRoIC8gMiAtIDU7XHJcblxyXG4gICAgICBpZiAobGVmdEFycm93RW5kWCA+IGxlZnRBcnJvd1N0YXJ0WCArIGFycm93SGVhZCkge1xyXG4gICAgICAgIGVsZW1lbnRzLnB1c2goXHJcbiAgICAgICAgICBuZXcgZmFicmljLkxpbmUoW2xlZnRBcnJvd1N0YXJ0WCwgY2VudGVyWSwgbGVmdEFycm93RW5kWCwgY2VudGVyWV0sIHtcclxuICAgICAgICAgICAgc3Ryb2tlOiBsYWJlbENvbG9yLFxyXG4gICAgICAgICAgICBzdHJva2VXaWR0aDogMSxcclxuICAgICAgICAgICAgc2VsZWN0YWJsZTogZmFsc2UsXHJcbiAgICAgICAgICB9KSxcclxuICAgICAgICAgIG5ldyBmYWJyaWMuVHJpYW5nbGUoe1xyXG4gICAgICAgICAgICBsZWZ0OiBsZWZ0QXJyb3dTdGFydFgsXHJcbiAgICAgICAgICAgIHRvcDogY2VudGVyWSxcclxuICAgICAgICAgICAgd2lkdGg6IGFycm93SGVhZCxcclxuICAgICAgICAgICAgaGVpZ2h0OiBhcnJvd0hlYWQsXHJcbiAgICAgICAgICAgIGFuZ2xlOiAtOTAsXHJcbiAgICAgICAgICAgIGZpbGw6IGxhYmVsQ29sb3IsXHJcbiAgICAgICAgICAgIG9yaWdpblg6IFwiY2VudGVyXCIsXHJcbiAgICAgICAgICAgIG9yaWdpblk6IFwiY2VudGVyXCIsXHJcbiAgICAgICAgICAgIHNlbGVjdGFibGU6IGZhbHNlLFxyXG4gICAgICAgICAgfSksXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3QgcmlnaHRBcnJvd1N0YXJ0WCA9IGNlbnRlclggKyB0ZXh0V2lkdGggLyAyICsgNTtcclxuICAgICAgY29uc3QgcmlnaHRBcnJvd0VuZFggPSB3aWR0aCAtIDU7XHJcblxyXG4gICAgICBpZiAocmlnaHRBcnJvd0VuZFggPiByaWdodEFycm93U3RhcnRYICsgYXJyb3dIZWFkKSB7XHJcbiAgICAgICAgZWxlbWVudHMucHVzaChcclxuICAgICAgICAgIG5ldyBmYWJyaWMuTGluZShcclxuICAgICAgICAgICAgW3JpZ2h0QXJyb3dTdGFydFgsIGNlbnRlclksIHJpZ2h0QXJyb3dFbmRYLCBjZW50ZXJZXSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHN0cm9rZTogbGFiZWxDb2xvcixcclxuICAgICAgICAgICAgICBzdHJva2VXaWR0aDogMSxcclxuICAgICAgICAgICAgICBzZWxlY3RhYmxlOiBmYWxzZSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICksXHJcbiAgICAgICAgICBuZXcgZmFicmljLlRyaWFuZ2xlKHtcclxuICAgICAgICAgICAgbGVmdDogcmlnaHRBcnJvd0VuZFgsXHJcbiAgICAgICAgICAgIHRvcDogY2VudGVyWSxcclxuICAgICAgICAgICAgd2lkdGg6IGFycm93SGVhZCxcclxuICAgICAgICAgICAgaGVpZ2h0OiBhcnJvd0hlYWQsXHJcbiAgICAgICAgICAgIGFuZ2xlOiA5MCxcclxuICAgICAgICAgICAgZmlsbDogbGFiZWxDb2xvcixcclxuICAgICAgICAgICAgb3JpZ2luWDogXCJjZW50ZXJcIixcclxuICAgICAgICAgICAgb3JpZ2luWTogXCJjZW50ZXJcIixcclxuICAgICAgICAgICAgc2VsZWN0YWJsZTogZmFsc2UsXHJcbiAgICAgICAgICB9KSxcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZ3JvdXAgPSBuZXcgZmFicmljLkdyb3VwKGVsZW1lbnRzLCB7XHJcbiAgICAgIGxlZnQ6IHgsXHJcbiAgICAgIHRvcDogeSxcclxuICAgICAgaGFzQ29udHJvbHM6IGZhbHNlLFxyXG4gICAgICBsb2NrU2NhbGluZ1g6IHRydWUsXHJcbiAgICAgIGxvY2tTY2FsaW5nWTogdHJ1ZSxcclxuICAgICAgbG9ja1JvdGF0aW9uOiB0cnVlLFxyXG4gICAgICBzZWxlY3RhYmxlOiBmYWxzZSxcclxuICAgICAgYW5nbGU6IGVsZW1lbnREYXRhLmFuZ2xlLFxyXG4gICAgfSkgYXMgZmFicmljLkdyb3VwICYge1xyXG4gICAgICBvYmpUeXBlOiBzdHJpbmc7XHJcbiAgICAgIGRhdGE6IGFueTtcclxuICAgIH07XHJcbiAgICBncm91cC5vYmpUeXBlID0gZWxlbWVudERhdGEuZWxlbWVudFR5cGU7XHJcbiAgICBncm91cC5kYXRhID0gZWxlbWVudERhdGE7XHJcbiAgICBjYW52YXMuYWRkKGdyb3VwKTtcclxuXHJcbiAgICByZXR1cm4gZ3JvdXA7XHJcbiAgfVxyXG5cclxuICBkcmF3RW50cmFuY2UoXHJcbiAgICBjYW52YXM6IGZhYnJpYy5DYW52YXMsXHJcbiAgICB4OiBudW1iZXIsXHJcbiAgICB5OiBudW1iZXIsXHJcbiAgICB3aWR0aDogbnVtYmVyLFxyXG4gICAgaGVpZ2h0OiBudW1iZXIsXHJcbiAgICBhcnJvd1dpZHRoOiBudW1iZXIsXHJcbiAgICBlbGVtZW50RGF0YTogYW55LFxyXG4gICkge1xyXG4gICAgY29uc3QgYm9keVdpZHRoID0gd2lkdGggLSBhcnJvd1dpZHRoO1xyXG5cclxuICAgIGNvbnN0IHBhdGhEYXRhID0gW1xyXG4gICAgICBgTSAwIDBgLFxyXG4gICAgICBgTCAke2JvZHlXaWR0aH0gMGAsXHJcbiAgICAgIGBMICR7Ym9keVdpZHRofSAkey1oZWlnaHQgLyAyfWAsXHJcbiAgICAgIGBMICR7d2lkdGh9ICR7aGVpZ2h0IC8gMn1gLFxyXG4gICAgICBgTCAke2JvZHlXaWR0aH0gJHtoZWlnaHQgKyBoZWlnaHQgLyAyfWAsXHJcbiAgICAgIGBMICR7Ym9keVdpZHRofSAke2hlaWdodH1gLFxyXG4gICAgICBgTCAwICR7aGVpZ2h0fWAsXHJcbiAgICAgIGBaYCxcclxuICAgIF0uam9pbihcIiBcIik7XHJcblxyXG4gICAgY29uc3QgYXJyb3cgPSBuZXcgZmFicmljLlBhdGgocGF0aERhdGEsIHtcclxuICAgICAgZmlsbDogXCIjMDNBOUY0XCIsXHJcbiAgICAgIHNlbGVjdGFibGU6IGZhbHNlLFxyXG4gICAgICBldmVudGVkOiBmYWxzZSxcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IG1heFRleHRIZWlnaHQgPSBoZWlnaHQgLSA2O1xyXG4gICAgY29uc3QgdGV4dCA9IG5ldyBmYWJyaWMuVGV4dChcIkVudHJhbmNlXCIsIHtcclxuICAgICAgZm9udEZhbWlseTogXCJBcmlhbFwiLFxyXG4gICAgICBmb250V2VpZ2h0OiBcImJvbGRcIixcclxuICAgICAgZmlsbDogXCJ3aGl0ZVwiLFxyXG4gICAgICBhbmdsZTogLTkwLFxyXG4gICAgICBvcmlnaW5YOiBcImNlbnRlclwiLFxyXG4gICAgICBvcmlnaW5ZOiBcImNlbnRlclwiLFxyXG4gICAgICBsZWZ0OiAxNSxcclxuICAgICAgdG9wOiBoZWlnaHQgLyAyLFxyXG4gICAgICBmb250U2l6ZTogMjAsXHJcbiAgICAgIHNlbGVjdGFibGU6IGZhbHNlLFxyXG4gICAgICBldmVudGVkOiBmYWxzZSxcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IHRleHRCb3VuZHMgPSB0ZXh0LmdldEJvdW5kaW5nUmVjdCgpO1xyXG4gICAgaWYgKHRleHRCb3VuZHMuaGVpZ2h0ID4gbWF4VGV4dEhlaWdodCkge1xyXG4gICAgICBjb25zdCBzY2FsZSA9IG1heFRleHRIZWlnaHQgLyB0ZXh0Qm91bmRzLmhlaWdodDtcclxuICAgICAgdGV4dC5zZXQoXCJmb250U2l6ZVwiLCB0ZXh0LmZvbnRTaXplISAqIHNjYWxlKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBncm91cCA9IG5ldyBmYWJyaWMuR3JvdXAoW2Fycm93LCB0ZXh0XSwge1xyXG4gICAgICBsZWZ0OiB4LFxyXG4gICAgICB0b3A6IHksXHJcbiAgICAgIHNlbGVjdGFibGU6IGZhbHNlLFxyXG4gICAgICBsb2NrU2NhbGluZ1g6IHRydWUsXHJcbiAgICAgIGxvY2tTY2FsaW5nWTogdHJ1ZSxcclxuICAgICAgbG9ja1NjYWxpbmdGbGlwOiB0cnVlLFxyXG4gICAgICBhbmdsZTogZWxlbWVudERhdGEuYW5nbGUsXHJcbiAgICB9KSBhcyBmYWJyaWMuR3JvdXAgJiB7XHJcbiAgICAgIG9ialR5cGU6IHN0cmluZztcclxuICAgICAgZGF0YTogYW55O1xyXG4gICAgfTtcclxuXHJcbiAgICBncm91cC5vYmpUeXBlID0gZWxlbWVudERhdGEuZWxlbWVudFR5cGU7XHJcbiAgICBncm91cC5kYXRhID0gZWxlbWVudERhdGE7XHJcblxyXG4gICAgY2FudmFzLmFkZChncm91cCk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBkcmF3Rml4dHVyZShcclxuICAgIGNhbnZhczogZmFicmljLkNhbnZhcyxcclxuICAgIHg6IG51bWJlcixcclxuICAgIHk6IG51bWJlcixcclxuICAgIGhlaWdodDogbnVtYmVyLFxyXG4gICAgd2lkdGg6IG51bWJlcixcclxuICAgIGZpeHR1cmVEYXRhOiBhbnksXHJcbiAgKSB7XHJcbiAgICBjb25zdCBhY3R1YWxTaGVsdmVzID1cclxuICAgICAgZml4dHVyZURhdGEuc2hlbGZDb25maWc/LmZpbHRlcigoczogYW55KSA9PiBzLnNoZWxmVHlwZSAhPSBcInZtb25seVwiKSA/P1xyXG4gICAgICBbXTtcclxuXHJcbiAgICBjb25zdCByYWRpdXMgPSA1O1xyXG4gICAgY29uc3QgbWFpbkNvbnRhaW5lciA9IG5ldyBmYWJyaWMuUmVjdCh7XHJcbiAgICAgIGxlZnQ6IHgsXHJcbiAgICAgIHRvcDogeSxcclxuICAgICAgd2lkdGg6IHdpZHRoLFxyXG4gICAgICBoZWlnaHQ6IGhlaWdodCxcclxuICAgICAgcng6IHJhZGl1cyxcclxuICAgICAgcnk6IHJhZGl1cyxcclxuICAgICAgc3Ryb2tlOiBcIiM1MUMxRkZcIixcclxuICAgICAgc3Ryb2tlV2lkdGg6IDAuMjcsXHJcbiAgICAgIGZpbGw6IFwid2hpdGVcIixcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IHRvcFdpZHRoID0gd2lkdGggLyAxLjA1O1xyXG4gICAgY29uc3QgdG9wSGVpZ2h0ID0gKDE1IC8gMTAwKSAqIGhlaWdodDtcclxuICAgIGNvbnN0IHRvcFggPSB4ICsgKHdpZHRoIC0gdG9wV2lkdGgpIC8gMjtcclxuICAgIGNvbnN0IHRvcFkgPSB5ICsgdGhpcy52ZXJ0aWNhbE1hcmdpbjtcclxuXHJcbiAgICBjb25zdCB0b3BDb250YWluZXIgPSBuZXcgZmFicmljLlJlY3Qoe1xyXG4gICAgICBsZWZ0OiB0b3BYLFxyXG4gICAgICB0b3A6IHRvcFksXHJcbiAgICAgIHdpZHRoOiB0b3BXaWR0aCxcclxuICAgICAgaGVpZ2h0OiB0b3BIZWlnaHQsXHJcbiAgICAgIHJ4OiByYWRpdXMsXHJcbiAgICAgIHJ5OiByYWRpdXMsXHJcbiAgICAgIHN0cm9rZTogXCIjNTFDMUZGXCIsXHJcbiAgICAgIHN0cm9rZVdpZHRoOiAwLjI3LFxyXG4gICAgICBmaWxsOiBcIndoaXRlXCIsXHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zdCBpbm5lckJveEhlaWdodCA9IHRvcEhlaWdodCAvIDI7XHJcbiAgICBjb25zdCBpbm5lclRvcEJveCA9IG5ldyBmYWJyaWMuUGF0aChcclxuICAgICAgYE0gJHt0b3BYICsgcmFkaXVzfSAke3RvcFl9IFxyXG4gICAgICAgIEwgJHt0b3BYICsgdG9wV2lkdGggLSByYWRpdXN9ICR7dG9wWX0gXHJcbiAgICAgICAgUSAke3RvcFggKyB0b3BXaWR0aH0gJHt0b3BZfSAke3RvcFggKyB0b3BXaWR0aH0gJHt0b3BZICsgcmFkaXVzfSBcclxuICAgICAgICBMICR7dG9wWCArIHRvcFdpZHRofSAke3RvcFkgKyBpbm5lckJveEhlaWdodH0gXHJcbiAgICAgICAgTCAke3RvcFh9ICR7dG9wWSArIGlubmVyQm94SGVpZ2h0fSBcclxuICAgICAgICBMICR7dG9wWH0gJHt0b3BZICsgcmFkaXVzfSBcclxuICAgICAgICBRICR7dG9wWH0gJHt0b3BZfSAke3RvcFggKyByYWRpdXN9ICR7dG9wWX0gWmAsXHJcbiAgICAgIHtcclxuICAgICAgICBzdHJva2U6IFwiIzUxQzFGRlwiLFxyXG4gICAgICAgIHN0cm9rZVdpZHRoOiAwLjI3LFxyXG4gICAgICAgIGZpbGw6IFwidHJhbnNwYXJlbnRcIixcclxuICAgICAgfSxcclxuICAgICk7XHJcblxyXG4gICAgY29uc3QgdG9wVGV4dCA9IG5ldyBmYWJyaWMuVGV4dGJveChcclxuICAgICAgYEZpeHR1cmUgJHtcclxuICAgICAgICBmaXh0dXJlRGF0YS5hc3NvY2lhdGVkRWxlbWVudEZpeHR1cmVOdW1iZXJcclxuICAgICAgICAgID8gZml4dHVyZURhdGEuYXNzb2NpYXRlZEVsZW1lbnRGaXh0dXJlTnVtYmVyICtcclxuICAgICAgICAgICAgKGZpeHR1cmVEYXRhPy5maXh0dXJlTnVtYmVyXHJcbiAgICAgICAgICAgICAgPyBcIiAtIEZYLVwiICsgZml4dHVyZURhdGEuZml4dHVyZU51bWJlclxyXG4gICAgICAgICAgICAgIDogXCJcIilcclxuICAgICAgICAgIDogXCJuZXdcIlxyXG4gICAgICB9YCxcclxuICAgICAge1xyXG4gICAgICAgIGxlZnQ6IHRvcFggKyB0b3BXaWR0aCAvIDIsXHJcbiAgICAgICAgdG9wOiB0b3BZICsgaW5uZXJCb3hIZWlnaHQgLyAyLFxyXG4gICAgICAgIGZvbnRTaXplOiA1LFxyXG4gICAgICAgIGZvbnRGYW1pbHk6IFwiSW50ZXJcIixcclxuICAgICAgICBmb250V2VpZ2h0OiBcIjUwMFwiLFxyXG4gICAgICAgIGZpbGw6IFwiIzEwMTgyOFwiLFxyXG4gICAgICAgIG9yaWdpblg6IFwiY2VudGVyXCIsXHJcbiAgICAgICAgb3JpZ2luWTogXCJjZW50ZXJcIixcclxuICAgICAgICB3aWR0aDogdG9wV2lkdGgsXHJcbiAgICAgICAgaGVpZ2h0OiBpbm5lckJveEhlaWdodCxcclxuICAgICAgICB0ZXh0QWxpZ246IFwiY2VudGVyXCIsXHJcbiAgICAgIH0sXHJcbiAgICApO1xyXG5cclxuICAgIGNvbnN0IHNlY29uZEJveFkgPSB0b3BZICsgaW5uZXJCb3hIZWlnaHQ7XHJcblxyXG4gICAgY29uc3QgaW5uZXJCb3R0b21Cb3ggPSBuZXcgZmFicmljLlBhdGgoXHJcbiAgICAgIGBNICR7dG9wWH0gJHtzZWNvbmRCb3hZfSBcclxuICAgIEwgJHt0b3BYICsgdG9wV2lkdGh9ICR7c2Vjb25kQm94WX0gXHJcbiAgICBMICR7dG9wWCArIHRvcFdpZHRofSAke3NlY29uZEJveFkgKyBpbm5lckJveEhlaWdodCAtIHJhZGl1c30gXHJcbiAgICBRICR7dG9wWCArIHRvcFdpZHRofSAke3NlY29uZEJveFkgKyBpbm5lckJveEhlaWdodH0gJHtcclxuICAgICAgdG9wWCArIHRvcFdpZHRoIC0gcmFkaXVzXHJcbiAgICB9ICR7c2Vjb25kQm94WSArIGlubmVyQm94SGVpZ2h0fSBcclxuICAgIEwgJHt0b3BYICsgcmFkaXVzfSAke3NlY29uZEJveFkgKyBpbm5lckJveEhlaWdodH0gXHJcbiAgICBRICR7dG9wWH0gJHtzZWNvbmRCb3hZICsgaW5uZXJCb3hIZWlnaHR9ICR7dG9wWH0gJHtcclxuICAgICAgc2Vjb25kQm94WSArIGlubmVyQm94SGVpZ2h0IC0gcmFkaXVzXHJcbiAgICB9IFxyXG4gICAgTCAke3RvcFh9ICR7c2Vjb25kQm94WX0gWmAsXHJcbiAgICAgIHtcclxuICAgICAgICBmaWxsOiBcIiMzNDQwNTRcIixcclxuICAgICAgICBzdHJva2U6IFwiIzUxQzFGRlwiLFxyXG4gICAgICAgIHN0cm9rZVdpZHRoOiAwLjI3LFxyXG4gICAgICB9LFxyXG4gICAgKTtcclxuXHJcbiAgICBsZXQgZm9udFNpemUgPSA1O1xyXG4gICAgbGV0IGJvdHRvbVRleHQ7XHJcblxyXG4gICAgY29uc3QgdGV4dENvbnRlbnQgPSBnZXRGaXh0dXJlQ2FudmFzTGFiZWwoZml4dHVyZURhdGEpO1xyXG5cclxuICAgIGNvbnN0IGNyZWF0ZUJvdHRvbVRleHQgPSAoZnM6IGFueSkgPT5cclxuICAgICAgbmV3IGZhYnJpYy5UZXh0Ym94KHRleHRDb250ZW50LCB7XHJcbiAgICAgICAgbGVmdDogdG9wWCArIHRvcFdpZHRoIC8gMixcclxuICAgICAgICB0b3A6IHNlY29uZEJveFkgKyBpbm5lckJveEhlaWdodCAvIDIsXHJcbiAgICAgICAgZm9udFNpemU6IGZzLFxyXG4gICAgICAgIGZvbnRGYW1pbHk6IFwiSW50ZXJcIixcclxuICAgICAgICBmb250V2VpZ2h0OiBcIjUwMFwiLFxyXG4gICAgICAgIGZpbGw6IFwiI0ZGRkZGRlwiLFxyXG4gICAgICAgIG9yaWdpblg6IFwiY2VudGVyXCIsXHJcbiAgICAgICAgb3JpZ2luWTogXCJjZW50ZXJcIixcclxuICAgICAgICB0ZXh0QWxpZ246IFwiY2VudGVyXCIsXHJcbiAgICAgICAgd2lkdGg6IHRvcFdpZHRoLFxyXG4gICAgICB9KTtcclxuXHJcbiAgICBkbyB7XHJcbiAgICAgIGJvdHRvbVRleHQgPSBjcmVhdGVCb3R0b21UZXh0KGZvbnRTaXplKTtcclxuICAgICAgZm9udFNpemUgLT0gMC41O1xyXG4gICAgfSB3aGlsZSAoYm90dG9tVGV4dC5oZWlnaHQgPiBpbm5lckJveEhlaWdodCAmJiBmb250U2l6ZSA+IDIpO1xyXG5cclxuICAgIGNvbnN0IG1pZFdpZHRoID0gd2lkdGggLyAxLjA1O1xyXG4gICAgY29uc3QgbWlkSGVpZ2h0ID0gKDc3IC8gMTAwKSAqIGhlaWdodDtcclxuICAgIGNvbnN0IG1pZFggPSB4ICsgKHdpZHRoIC0gbWlkV2lkdGgpIC8gMjtcclxuICAgIGNvbnN0IG1pZFkgPSB0b3BZICsgdG9wSGVpZ2h0ICsgdGhpcy52ZXJ0aWNhbE1hcmdpbjtcclxuXHJcbiAgICBjb25zdCBtaWRDb250YWluZXIgPSBuZXcgZmFicmljLlJlY3Qoe1xyXG4gICAgICBsZWZ0OiBtaWRYLFxyXG4gICAgICB0b3A6IG1pZFksXHJcbiAgICAgIHdpZHRoOiBtaWRXaWR0aCxcclxuICAgICAgaGVpZ2h0OiBtaWRIZWlnaHQsXHJcbiAgICAgIHJ4OiByYWRpdXMsXHJcbiAgICAgIHJ5OiByYWRpdXMsXHJcbiAgICAgIHN0cm9rZTogXCIjNTFDMUZGXCIsXHJcbiAgICAgIHN0cm9rZVdpZHRoOiAwLjI3LFxyXG4gICAgICBmaWxsOiBcIndoaXRlXCIsXHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zdCBzaGVsZkNvdW50ID0gZml4dHVyZURhdGEuc2hlbGZDb25maWcubGVuZ3RoO1xyXG5cclxuICAgIGNvbnN0IGJveEhlaWdodCA9IG1pZEhlaWdodCAvIChzaGVsZkNvdW50ICsgMik7XHJcbiAgICBjb25zdCBmaXJzdEJveFkgPSBtaWRZO1xyXG5cclxuICAgIGNvbnN0IGZpcnN0Qm94ID0gbmV3IGZhYnJpYy5QYXRoKFxyXG4gICAgICBgTSAke21pZFggKyByYWRpdXN9ICR7Zmlyc3RCb3hZfSBcclxuICAgICAgICBMICR7bWlkWCArIG1pZFdpZHRoIC0gcmFkaXVzfSAke2ZpcnN0Qm94WX0gXHJcbiAgICAgICAgUSAke21pZFggKyBtaWRXaWR0aH0gJHtmaXJzdEJveFl9ICR7bWlkWCArIG1pZFdpZHRofSAke1xyXG4gICAgICAgICAgZmlyc3RCb3hZICsgcmFkaXVzXHJcbiAgICAgICAgfSBcclxuICAgICAgICBMICR7bWlkWCArIG1pZFdpZHRofSAke2ZpcnN0Qm94WSArIGJveEhlaWdodH0gXHJcbiAgICAgICAgTCAke21pZFh9ICR7Zmlyc3RCb3hZICsgYm94SGVpZ2h0fSBcclxuICAgICAgICBMICR7bWlkWH0gJHtmaXJzdEJveFkgKyByYWRpdXN9IFxyXG4gICAgICAgIFEgJHttaWRYfSAke2ZpcnN0Qm94WX0gJHttaWRYICsgcmFkaXVzfSAke2ZpcnN0Qm94WX0gWmAsXHJcbiAgICAgIHtcclxuICAgICAgICBmaWxsOiBcIiNFQUY4RkZcIixcclxuICAgICAgICBzdHJva2U6IFwiIzZCQ0FGRlwiLFxyXG4gICAgICAgIHN0cm9rZVdpZHRoOiAwLjI3LFxyXG4gICAgICB9LFxyXG4gICAgKTtcclxuXHJcbiAgICBjb25zdCBmaXJzdEJveFRleHQgPSBuZXcgZmFicmljLlRleHRib3goXHJcbiAgICAgIGAke2ZpeHR1cmVEYXRhPy5oZWFkZXI/LmxhYmVsID8gZml4dHVyZURhdGEuaGVhZGVyLmxhYmVsIDogXCJcIn1gLFxyXG4gICAgICB7XHJcbiAgICAgICAgbGVmdDogbWlkWCArIG1pZFdpZHRoIC8gMixcclxuICAgICAgICB0b3A6IGZpcnN0Qm94WSArIGJveEhlaWdodCAvIDIsXHJcbiAgICAgICAgZm9udFNpemU6IDcsXHJcbiAgICAgICAgZm9udEZhbWlseTogXCJJbnRlclwiLFxyXG4gICAgICAgIGZvbnRXZWlnaHQ6IFwiNjAwXCIsXHJcbiAgICAgICAgZmlsbDogXCIjMTAxODI4XCIsXHJcbiAgICAgICAgb3JpZ2luWDogXCJjZW50ZXJcIixcclxuICAgICAgICBvcmlnaW5ZOiBcImNlbnRlclwiLFxyXG4gICAgICAgIHdpZHRoOiBtaWRXaWR0aCxcclxuICAgICAgICBoZWlnaHQ6IGJveEhlaWdodCxcclxuICAgICAgICB0ZXh0QWxpZ246IFwiY2VudGVyXCIsXHJcbiAgICAgIH0sXHJcbiAgICApO1xyXG5cclxuICAgIGNvbnN0IHNoZWx2ZXMgPSBbXTtcclxuICAgIGNvbnN0IHNoZWxmSGVpZ2h0ID0gbWlkSGVpZ2h0IC0gMiAqIGJveEhlaWdodDtcclxuXHJcbiAgICBpZiAoZml4dHVyZURhdGEucHJvZHVjdFJlc29sdXRpb25MZXZlbCA9PT0gXCJMMVwiKSB7XHJcbiAgICAgIGNvbnN0IGJveFkgPSBmaXJzdEJveFkgKyBib3hIZWlnaHQ7XHJcblxyXG4gICAgICBjb25zdCBzaGVsZiA9IG5ldyBmYWJyaWMuUmVjdCh7XHJcbiAgICAgICAgbGVmdDogbWlkWCxcclxuICAgICAgICB0b3A6IGJveFksXHJcbiAgICAgICAgd2lkdGg6IG1pZFdpZHRoLFxyXG4gICAgICAgIGhlaWdodDogc2hlbGZIZWlnaHQsXHJcbiAgICAgICAgc3Ryb2tlV2lkdGg6IDAuMjcsXHJcbiAgICAgICAgc3Ryb2tlOiBmaXh0dXJlRGF0YS5zaGVsZkNvbmZpZy5zb21lKChzOiBhbnkpID0+IHMuY29tcGxpYW5jZSA9PT0gXCJwcm9wZXJcIilcclxuICAgICAgICAgID8gXCIjMzJENTgzXCJcclxuICAgICAgICAgIDogXCIjY2VjZWNlXCIsXHJcbiAgICAgICAgZmlsbDogXCIjZmZmZmZmXCIsXHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgY29uc3QgdGV4dCA9IGZpeHR1cmVEYXRhPy5wcm9kdWN0QnJhbmROYW1lPy5qb2luKFwiICsgXCIpIHx8IFwiXCI7XHJcblxyXG4gICAgICAvLyBXcmFwIHRleHQgd2l0aGluIGZpeHR1cmUgd2lkdGggYW5kIHNocmluayB0byBmaXQgdmVydGljYWwgc3BhY2VcclxuICAgICAgY29uc3QgbWF4VGV4dFdpZHRoID0gbWlkV2lkdGggKiAwLjk7XHJcbiAgICAgIGNvbnN0IG1heFRleHRIZWlnaHQgPSBzaGVsZkhlaWdodCAqIDAuODtcclxuICAgICAgbGV0IGZvbnRTaXplTDEgPSA2O1xyXG5cclxuICAgICAgY29uc3QgY3JlYXRlV3JhcHBlZFRleHRib3ggPSAoZnM6IG51bWJlcikgPT5cclxuICAgICAgICBuZXcgZmFicmljLlRleHRib3godGV4dCwge1xyXG4gICAgICAgICAgbGVmdDogbWlkWCArIG1pZFdpZHRoIC8gMixcclxuICAgICAgICAgIHRvcDogYm94WSArIHNoZWxmSGVpZ2h0IC8gMixcclxuICAgICAgICAgIG9yaWdpblg6IFwiY2VudGVyXCIsXHJcbiAgICAgICAgICBvcmlnaW5ZOiBcImNlbnRlclwiLFxyXG4gICAgICAgICAgd2lkdGg6IG1heFRleHRXaWR0aCxcclxuICAgICAgICAgIGZvbnRTaXplOiBmcyxcclxuICAgICAgICAgIGZvbnRGYW1pbHk6IFwiSW50ZXJcIixcclxuICAgICAgICAgIGZvbnRXZWlnaHQ6IFwiNTAwXCIsXHJcbiAgICAgICAgICB0ZXh0QWxpZ246IFwiY2VudGVyXCIsXHJcbiAgICAgICAgICBmaWxsOiBcIiMxRDI5MzlcIixcclxuICAgICAgICAgIHNlbGVjdGFibGU6IGZhbHNlLFxyXG4gICAgICAgICAgZXZlbnRlZDogZmFsc2UsXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICBsZXQgd3JhcHBlZFRleHQgPSBjcmVhdGVXcmFwcGVkVGV4dGJveChmb250U2l6ZUwxKTtcclxuICAgICAgd2hpbGUgKHdyYXBwZWRUZXh0LmhlaWdodCA+IG1heFRleHRIZWlnaHQgJiYgZm9udFNpemVMMSA+IDIpIHtcclxuICAgICAgICBmb250U2l6ZUwxIC09IDAuNTtcclxuICAgICAgICB3cmFwcGVkVGV4dCA9IGNyZWF0ZVdyYXBwZWRUZXh0Ym94KGZvbnRTaXplTDEpO1xyXG4gICAgICB9XHJcbiAgICAgIHNoZWx2ZXMucHVzaChzaGVsZiwgd3JhcHBlZFRleHQpO1xyXG4gICAgfSBlbHNlIGlmIChmaXh0dXJlRGF0YS5wcm9kdWN0UmVzb2x1dGlvbkxldmVsID09PSBcIkwyXCIpIHtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzaGVsZkNvdW50OyBpKyspIHtcclxuICAgICAgICBjb25zdCBib3hZID0gZmlyc3RCb3hZICsgYm94SGVpZ2h0ICogKGkgKyAxKTtcclxuXHJcbiAgICAgICAgY29uc3Qgc2hlbGYgPSBuZXcgZmFicmljLlJlY3Qoe1xyXG4gICAgICAgICAgbGVmdDogbWlkWCxcclxuICAgICAgICAgIHRvcDogYm94WSxcclxuICAgICAgICAgIHdpZHRoOiBtaWRXaWR0aCxcclxuICAgICAgICAgIGhlaWdodDogYm94SGVpZ2h0LFxyXG4gICAgICAgICAgc3Ryb2tlV2lkdGg6IDAuMjcsXHJcbiAgICAgICAgICBzdHJva2U6XHJcbiAgICAgICAgICAgIGZpeHR1cmVEYXRhLnNoZWxmQ29uZmlnPy5baV0uY29tcGxpYW5jZSA9PT0gXCJwcm9wZXJcIiA/IFwiIzMyRDU4M1wiIDogXCIjY2VjZWNlXCIsXHJcbiAgICAgICAgICBmaWxsOiBcIiNmZmZmZmZcIixcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgc2hlbHZlcy5wdXNoKHNoZWxmKTtcclxuXHJcbiAgICAgICAgY29uc3QgdGV4dCA9IGZpeHR1cmVEYXRhLnNoZWxmQ29uZmlnPy5baV0ucHJvZHVjdEJyYW5kTmFtZT8uam9pbihcIiArIFwiKSB8fCBcIlwiO1xyXG5cclxuICAgICAgICAvLyBMMjogU2luZ2xlLWxpbmUgZWxsaXBzaXMgYWdhaW5zdCBmdWxsIHNoZWxmIHdpZHRoXHJcbiAgICAgICAgY29uc3QgaG9yaXpvbnRhbFBhZGRpbmcgPSA2O1xyXG4gICAgICAgIGNvbnN0IG1heFRleHRXaWR0aCA9IE1hdGgubWF4KDAsIG1pZFdpZHRoIC0gaG9yaXpvbnRhbFBhZGRpbmcpO1xyXG4gICAgICAgIGNvbnN0IGJhc2VGb250U2l6ZSA9IDU7XHJcblxyXG4gICAgICAgIGNvbnN0IG1lYXN1cmUgPSAodDogc3RyaW5nKSA9PlxyXG4gICAgICAgICAgbmV3IGZhYnJpYy5UZXh0KHQsIHtcclxuICAgICAgICAgICAgZm9udFNpemU6IGJhc2VGb250U2l6ZSxcclxuICAgICAgICAgICAgZm9udEZhbWlseTogXCJJbnRlclwiLFxyXG4gICAgICAgICAgICBmb250V2VpZ2h0OiBcIjUwMFwiLFxyXG4gICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGxldCBkaXNwbGF5VGV4dCA9IHRleHQ7XHJcbiAgICAgICAgbGV0IG1lYXN1cmVkID0gbWVhc3VyZShkaXNwbGF5VGV4dCk7XHJcblxyXG4gICAgICAgIGlmICgobWVhc3VyZWQud2lkdGggPz8gMCkgPiBtYXhUZXh0V2lkdGgpIHtcclxuICAgICAgICAgIGNvbnN0IGVsbGlwc2lzID0gXCIuLi5cIjtcclxuICAgICAgICAgIGxldCBsZWZ0SWR4ID0gMDtcclxuICAgICAgICAgIGxldCByaWdodElkeCA9IHRleHQubGVuZ3RoO1xyXG5cclxuICAgICAgICAgIHdoaWxlIChsZWZ0SWR4IDwgcmlnaHRJZHgpIHtcclxuICAgICAgICAgICAgY29uc3QgbWlkSWR4ID0gTWF0aC5mbG9vcigobGVmdElkeCArIHJpZ2h0SWR4KSAvIDIpO1xyXG4gICAgICAgICAgICBjb25zdCBjYW5kaWRhdGUgPSB0ZXh0LnNsaWNlKDAsIG1pZElkeCkgKyBlbGxpcHNpcztcclxuICAgICAgICAgICAgbWVhc3VyZWQgPSBtZWFzdXJlKGNhbmRpZGF0ZSk7XHJcbiAgICAgICAgICAgIGlmICgobWVhc3VyZWQud2lkdGggPz8gMCkgPiBtYXhUZXh0V2lkdGgpIHtcclxuICAgICAgICAgICAgICByaWdodElkeCA9IG1pZElkeDtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBsZWZ0SWR4ID0gbWlkSWR4ICsgMTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZGlzcGxheVRleHQgPSB0ZXh0LnNsaWNlKDAsIE1hdGgubWF4KDAsIGxlZnRJZHggLSAxKSkgKyBlbGxpcHNpcztcclxuICAgICAgICAgIG1lYXN1cmVkID0gbWVhc3VyZShkaXNwbGF5VGV4dCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBmaW5hbFRleHQgPSBuZXcgZmFicmljLlRleHQoZGlzcGxheVRleHQsIHtcclxuICAgICAgICAgIGxlZnQ6IG1pZFggKyBtaWRXaWR0aCAvIDIsXHJcbiAgICAgICAgICB0b3A6IGJveFkgKyBib3hIZWlnaHQgLyAyLFxyXG4gICAgICAgICAgb3JpZ2luWDogXCJjZW50ZXJcIixcclxuICAgICAgICAgIG9yaWdpblk6IFwiY2VudGVyXCIsXHJcbiAgICAgICAgICBmb250U2l6ZTogYmFzZUZvbnRTaXplLFxyXG4gICAgICAgICAgZm9udEZhbWlseTogXCJJbnRlclwiLFxyXG4gICAgICAgICAgZm9udFdlaWdodDogXCI1MDBcIixcclxuICAgICAgICAgIGZpbGw6IFwiIzFEMjkzOVwiLFxyXG4gICAgICAgICAgc2VsZWN0YWJsZTogZmFsc2UsXHJcbiAgICAgICAgICBldmVudGVkOiBmYWxzZSxcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgc2hlbHZlcy5wdXNoKGZpbmFsVGV4dCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAoZml4dHVyZURhdGEucHJvZHVjdFJlc29sdXRpb25MZXZlbCA9PT0gXCJMM1wiKSB7XHJcbiAgICAgIGNvbnN0IHNlcXVlbnRpYWxHcm91cHM6IHsgem9uZTogc3RyaW5nOyBzaGVsdmVzOiBhbnlbXSB9W10gPSBbXTtcclxuXHJcbiAgICAgIGxldCBwcmV2aW91c1pvbmU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG5cclxuICAgICAgZm9yIChjb25zdCBzaGVsZiBvZiBmaXh0dXJlRGF0YS5zaGVsZkNvbmZpZykge1xyXG4gICAgICAgIGNvbnN0IHpvbmUgPSBzaGVsZi56b25lIHx8IFwiVW5rbm93blwiO1xyXG4gICAgICAgIGlmICh6b25lICE9PSBwcmV2aW91c1pvbmUpIHtcclxuICAgICAgICAgIHNlcXVlbnRpYWxHcm91cHMucHVzaCh7IHpvbmUsIHNoZWx2ZXM6IFtzaGVsZl0gfSk7XHJcbiAgICAgICAgICBwcmV2aW91c1pvbmUgPSB6b25lO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBzZXF1ZW50aWFsR3JvdXBzW3NlcXVlbnRpYWxHcm91cHMubGVuZ3RoIC0gMV0uc2hlbHZlcy5wdXNoKHNoZWxmKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGxldCBjdXJyZW50U2hlbGZJbmRleCA9IDA7XHJcblxyXG4gICAgICBmb3IgKGNvbnN0IGdyb3VwIG9mIHNlcXVlbnRpYWxHcm91cHMpIHtcclxuICAgICAgICBjb25zdCB7IHNoZWx2ZXM6IHNoZWx2ZXNJbkdyb3VwIH0gPSBncm91cDtcclxuXHJcbiAgICAgICAgY29uc3QgZ3JvdXBTdGFydEluZGV4ID0gY3VycmVudFNoZWxmSW5kZXg7XHJcbiAgICAgICAgY29uc3QgZ3JvdXBMZW5ndGggPSBzaGVsdmVzSW5Hcm91cC5sZW5ndGg7XHJcblxyXG4gICAgICAgIGNvbnN0IGdyb3VwVG9wWSA9IGZpcnN0Qm94WSArIGJveEhlaWdodCAqIChncm91cFN0YXJ0SW5kZXggKyAxKTtcclxuICAgICAgICBjb25zdCBncm91cEJvdHRvbVkgPSBncm91cFRvcFkgKyBib3hIZWlnaHQgKiBncm91cExlbmd0aDtcclxuXHJcbiAgICAgICAgY29uc3QgaGFzSW1wcm9wZXIgPSBzaGVsdmVzSW5Hcm91cC5zb21lKFxyXG4gICAgICAgICAgKHM6IGFueSkgPT4gcz8uY29tcGxpYW5jZSA9PT0gXCJpbXByb3BlclwiLFxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgc2hlbHZlc0luR3JvdXAubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgIGNvbnN0IGJveFkgPSBmaXJzdEJveFkgKyBib3hIZWlnaHQgKiAoY3VycmVudFNoZWxmSW5kZXggKyAxKTtcclxuXHJcbiAgICAgICAgICBjb25zdCBpc0ZpcnN0ID0gaiA9PT0gMDtcclxuICAgICAgICAgIGNvbnN0IGlzTGFzdCA9IGogPT09IHNoZWx2ZXNJbkdyb3VwLmxlbmd0aCAtIDE7XHJcblxyXG4gICAgICAgICAgLy8gY29uc3QgZmlsbENvbG9yID0gaGFzSW1wcm9wZXIgPyBcIiNGRUYzRjJcIiA6IFwiI0VDRkRGM1wiO1xyXG4gICAgICAgICAgY29uc3QgZmlsbENvbG9yID0gXCIjZmZmZmZmXCI7XHJcbiAgICAgICAgICBjb25zdCBib3JkZXJDb2xvciA9IGhhc0ltcHJvcGVyID8gXCIjY2VjZWNlXCIgOiBcIiMzMkQ1ODNcIjtcclxuXHJcbiAgICAgICAgICBjb25zdCBwYXRoRGF0YSA9IFtcclxuICAgICAgICAgICAgYE0gJHttaWRYfSAke2JveFl9IEwgJHttaWRYfSAke2JveFkgKyBib3hIZWlnaHR9YCxcclxuICAgICAgICAgICAgYE0gJHttaWRYICsgbWlkV2lkdGh9ICR7Ym94WX0gTCAke21pZFggKyBtaWRXaWR0aH0gJHtcclxuICAgICAgICAgICAgICBib3hZICsgYm94SGVpZ2h0XHJcbiAgICAgICAgICAgIH1gLFxyXG4gICAgICAgICAgICBpc0ZpcnN0ID8gYE0gJHttaWRYfSAke2JveFl9IEwgJHttaWRYICsgbWlkV2lkdGh9ICR7Ym94WX1gIDogXCJcIixcclxuICAgICAgICAgICAgaXNMYXN0XHJcbiAgICAgICAgICAgICAgPyBgTSAke21pZFh9ICR7Ym94WSArIGJveEhlaWdodH0gTCAke21pZFggKyBtaWRXaWR0aH0gJHtcclxuICAgICAgICAgICAgICAgICAgYm94WSArIGJveEhlaWdodFxyXG4gICAgICAgICAgICAgICAgfWBcclxuICAgICAgICAgICAgICA6IFwiXCIsXHJcbiAgICAgICAgICBdLmpvaW4oXCIgXCIpO1xyXG5cclxuICAgICAgICAgIGNvbnN0IGZpbGxSZWN0ID0gbmV3IGZhYnJpYy5SZWN0KHtcclxuICAgICAgICAgICAgbGVmdDogbWlkWCxcclxuICAgICAgICAgICAgdG9wOiBib3hZLFxyXG4gICAgICAgICAgICB3aWR0aDogbWlkV2lkdGgsXHJcbiAgICAgICAgICAgIGhlaWdodDogYm94SGVpZ2h0LFxyXG4gICAgICAgICAgICBmaWxsOiBmaWxsQ29sb3IsXHJcbiAgICAgICAgICAgIHNlbGVjdGFibGU6IGZhbHNlLFxyXG4gICAgICAgICAgICBldmVudGVkOiBmYWxzZSxcclxuICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgIGNvbnN0IGJvcmRlclBhdGggPSBuZXcgZmFicmljLlBhdGgocGF0aERhdGEsIHtcclxuICAgICAgICAgICAgc3Ryb2tlOiBib3JkZXJDb2xvcixcclxuICAgICAgICAgICAgc3Ryb2tlV2lkdGg6IDAuNyxcclxuICAgICAgICAgICAgZmlsbDogXCJcIixcclxuICAgICAgICAgICAgc2VsZWN0YWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgIGV2ZW50ZWQ6IGZhbHNlLFxyXG4gICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgc2hlbHZlcy5wdXNoKGZpbGxSZWN0LCBib3JkZXJQYXRoKTtcclxuXHJcbiAgICAgICAgICBjdXJyZW50U2hlbGZJbmRleCsrO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgZ3JvdXBCb3R0b21MaW5lID0gbmV3IGZhYnJpYy5MaW5lKFxyXG4gICAgICAgICAgW21pZFgsIGdyb3VwQm90dG9tWSwgbWlkWCArIG1pZFdpZHRoLCBncm91cEJvdHRvbVldLFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBzZWxlY3RhYmxlOiBmYWxzZSxcclxuICAgICAgICAgICAgZXZlbnRlZDogZmFsc2UsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHNoZWx2ZXMucHVzaChncm91cEJvdHRvbUxpbmUpO1xyXG5cclxuICAgICAgICBjb25zdCBncm91cENlbnRlclggPSBtaWRYICsgbWlkV2lkdGggLyAyO1xyXG4gICAgICAgIGNvbnN0IGdyb3VwQ2VudGVyWSA9IGdyb3VwVG9wWSArIChncm91cEJvdHRvbVkgLSBncm91cFRvcFkpIC8gMjtcclxuXHJcbiAgICAgICAgY29uc3Qgc2VjdGlvbkJyYW5kcyA9IG5ldyBTZXQoKTtcclxuXHJcbiAgICAgICAgc2hlbHZlc0luR3JvdXA/LmZvckVhY2goKHNoZWxmKSA9PiB7XHJcbiAgICAgICAgICBzaGVsZi5wcm9kdWN0QnJhbmROYW1lPy5mb3JFYWNoKChicmFuZDogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgICAgIHNlY3Rpb25CcmFuZHMuYWRkKGJyYW5kKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBpZiAoWy4uLnNlY3Rpb25CcmFuZHNdLmxlbmd0aCkge1xyXG4gICAgICAgICAgY29uc3QgdGV4dCA9XHJcbiAgICAgICAgICAgIFsuLi5zZWN0aW9uQnJhbmRzXS5qb2luKFwiICsgXCIpICsgKGhhc0ltcHJvcGVyID8gXCIg4pOYXCIgOiBcIlwiKTtcclxuICAgICAgICAgIGNvbnN0IHBhZGRpbmcgPSAyO1xyXG4gICAgICAgICAgY29uc3QgbWF4VGV4dFdpZHRoID0gbWlkV2lkdGg7XHJcbiAgICAgICAgICBjb25zdCByZWN0V2lkdGggPSBtaWRXaWR0aCAqIDAuOTtcclxuICAgICAgICAgIGNvbnN0IG1heFRleHRIZWlnaHQgPSAyMDtcclxuXHJcbiAgICAgICAgICBsZXQgZm9udFNpemUgPSA2O1xyXG4gICAgICAgICAgbGV0IHdyYXBwZWRUZXh0O1xyXG5cclxuICAgICAgICAgIGNvbnN0IGNyZWF0ZVRleHRib3ggPSAoZnM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IGZhYnJpYy5UZXh0Ym94KHRleHQsIHtcclxuICAgICAgICAgICAgICBmb250U2l6ZTogZnMsXHJcbiAgICAgICAgICAgICAgZm9udEZhbWlseTogXCJJbnRlclwiLFxyXG4gICAgICAgICAgICAgIGZvbnRXZWlnaHQ6IFwiNDAwXCIsXHJcbiAgICAgICAgICAgICAgd2lkdGg6IG1heFRleHRXaWR0aCxcclxuICAgICAgICAgICAgICB0ZXh0QWxpZ246IFwiY2VudGVyXCIsXHJcbiAgICAgICAgICAgICAgb3JpZ2luWDogXCJjZW50ZXJcIixcclxuICAgICAgICAgICAgICBvcmlnaW5ZOiBcImNlbnRlclwiLFxyXG4gICAgICAgICAgICAgIGZpbGw6IFwiIzFEMjkzOVwiLFxyXG4gICAgICAgICAgICAgIHNlbGVjdGFibGU6IGZhbHNlLFxyXG4gICAgICAgICAgICAgIGV2ZW50ZWQ6IGZhbHNlLFxyXG4gICAgICAgICAgICAgIGxlZnQ6IGdyb3VwQ2VudGVyWCxcclxuICAgICAgICAgICAgICB0b3A6IGdyb3VwQ2VudGVyWSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgIGRvIHtcclxuICAgICAgICAgICAgd3JhcHBlZFRleHQgPSBjcmVhdGVUZXh0Ym94KGZvbnRTaXplKTtcclxuICAgICAgICAgICAgZm9udFNpemUgLT0gMC41O1xyXG4gICAgICAgICAgfSB3aGlsZSAod3JhcHBlZFRleHQuaGVpZ2h0ID4gbWF4VGV4dEhlaWdodCAmJiBmb250U2l6ZSA+IDIpO1xyXG5cclxuICAgICAgICAgIGNvbnN0IHJlY3RIZWlnaHQgPSB3cmFwcGVkVGV4dC5nZXRTY2FsZWRIZWlnaHQoKSArIHBhZGRpbmc7XHJcblxyXG4gICAgICAgICAgY29uc3QgZ3JvdXBDZW50ZXJUZXh0ID0gbmV3IGZhYnJpYy5SZWN0KHtcclxuICAgICAgICAgICAgbGVmdDogZ3JvdXBDZW50ZXJYLFxyXG4gICAgICAgICAgICB0b3A6IGdyb3VwQ2VudGVyWSxcclxuICAgICAgICAgICAgb3JpZ2luWDogXCJjZW50ZXJcIixcclxuICAgICAgICAgICAgb3JpZ2luWTogXCJjZW50ZXJcIixcclxuICAgICAgICAgICAgd2lkdGg6IHJlY3RXaWR0aCxcclxuICAgICAgICAgICAgaGVpZ2h0OiByZWN0SGVpZ2h0LFxyXG4gICAgICAgICAgICBmaWxsOiBcInRyYW5zcGFyZW50XCIsXHJcbiAgICAgICAgICAgIHNlbGVjdGFibGU6IGZhbHNlLFxyXG4gICAgICAgICAgICBldmVudGVkOiBmYWxzZSxcclxuICAgICAgICAgICAgcng6IDEsXHJcbiAgICAgICAgICAgIHJ5OiAxLFxyXG4gICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgc2hlbHZlcy5wdXNoKGdyb3VwQ2VudGVyVGV4dCwgd3JhcHBlZFRleHQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGxhc3RCb3hZID0gZmlyc3RCb3hZICsgYm94SGVpZ2h0ICogKHNoZWxmQ291bnQgKyAxKTtcclxuICAgIGNvbnN0IGxhc3RCb3ggPSBuZXcgZmFicmljLlBhdGgoXHJcbiAgICAgIGBNICR7bWlkWH0gJHtsYXN0Qm94WX0gXHJcbiAgICAgICAgTCAke21pZFggKyBtaWRXaWR0aH0gJHtsYXN0Qm94WX0gXHJcbiAgICAgICAgTCAke21pZFggKyBtaWRXaWR0aH0gJHtsYXN0Qm94WSArIGJveEhlaWdodCAtIHJhZGl1c30gXHJcbiAgICAgICAgUSAke21pZFggKyBtaWRXaWR0aH0gJHtsYXN0Qm94WSArIGJveEhlaWdodH0gJHtcclxuICAgICAgICAgIG1pZFggKyBtaWRXaWR0aCAtIHJhZGl1c1xyXG4gICAgICAgIH0gJHtsYXN0Qm94WSArIGJveEhlaWdodH0gXHJcbiAgICAgICAgTCAke21pZFggKyByYWRpdXN9ICR7bGFzdEJveFkgKyBib3hIZWlnaHR9IFxyXG4gICAgICAgIFEgJHttaWRYfSAke2xhc3RCb3hZICsgYm94SGVpZ2h0fSAke21pZFh9ICR7XHJcbiAgICAgICAgICBsYXN0Qm94WSArIGJveEhlaWdodCAtIHJhZGl1c1xyXG4gICAgICAgIH0gXHJcbiAgICAgICAgTCAke21pZFh9ICR7bGFzdEJveFl9IFpgLFxyXG4gICAgICB7XHJcbiAgICAgICAgZmlsbDogXCIjRUFGOEZGXCIsXHJcbiAgICAgICAgc3Ryb2tlOiBcIiM2QkNBRkZcIixcclxuICAgICAgICBzdHJva2VXaWR0aDogMC4yNyxcclxuICAgICAgfSxcclxuICAgICk7XHJcblxyXG4gICAgY29uc3QgbGFzdEJveFRleHQgPSBuZXcgZmFicmljLlRleHRib3goXHJcbiAgICAgIGAke2ZpeHR1cmVEYXRhPy5mb290ZXI/LmxhYmVsID8gZml4dHVyZURhdGEuZm9vdGVyLmxhYmVsIDogXCJcIn1gLFxyXG4gICAgICB7XHJcbiAgICAgICAgbGVmdDogbWlkWCArIG1pZFdpZHRoIC8gMixcclxuICAgICAgICB0b3A6IGxhc3RCb3hZICsgYm94SGVpZ2h0IC8gMixcclxuICAgICAgICBmb250U2l6ZTogNSxcclxuICAgICAgICBmb250RmFtaWx5OiBcIkludGVyXCIsXHJcbiAgICAgICAgZm9udFdlaWdodDogXCI2MDBcIixcclxuICAgICAgICBmaWxsOiBcIiMxMDE4MjhcIixcclxuICAgICAgICBvcmlnaW5YOiBcImNlbnRlclwiLFxyXG4gICAgICAgIG9yaWdpblk6IFwiY2VudGVyXCIsXHJcbiAgICAgICAgdGV4dEFsaWduOiBcImNlbnRlclwiLFxyXG4gICAgICAgIHdpZHRoOiBtaWRXaWR0aCxcclxuICAgICAgICBoZWlndGg6IGJveEhlaWdodCxcclxuICAgICAgfSxcclxuICAgICk7XHJcblxyXG4gICAgY29uc3QgYm90dG9tV2lkdGggPSB3aWR0aCAvIDEuMDU7XHJcbiAgICBjb25zdCBib3R0b21IZWlnaHQgPSAoMyAvIDEwMCkgKiBoZWlnaHQ7XHJcbiAgICBjb25zdCBib3R0b21YID0geCArICh3aWR0aCAtIGJvdHRvbVdpZHRoKSAvIDI7XHJcbiAgICBjb25zdCBib3R0b21ZID0gbWlkWSArIG1pZEhlaWdodCArIHRoaXMudmVydGljYWxNYXJnaW47XHJcblxyXG4gICAgY29uc3QgYm90dG9tQ29udGFpbmVyID0gbmV3IGZhYnJpYy5SZWN0KHtcclxuICAgICAgbGVmdDogYm90dG9tWCxcclxuICAgICAgdG9wOiBib3R0b21ZLFxyXG4gICAgICB3aWR0aDogYm90dG9tV2lkdGgsXHJcbiAgICAgIGhlaWdodDogYm90dG9tSGVpZ2h0LFxyXG4gICAgICByeDogcmFkaXVzLFxyXG4gICAgICByeTogcmFkaXVzLFxyXG4gICAgICBzdHJva2U6IFwidHJhbnNwYXJlbnRcIixcclxuICAgICAgZmlsbDogXCJ0cmFuc3BhcmVudFwiLFxyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc3QgYm90dG9tVGV4dENvbnRlbnQgPSBuZXcgZmFicmljLlRleHRib3goXHJcbiAgICAgIGBTaGVsdmVzIC0gJHthY3R1YWxTaGVsdmVzLmxlbmd0aH0gLiBQcm9kdWN0cyAtICAke2dldEZpeHR1cmVQcm9kdWN0Q2FwYWNpdHkoZml4dHVyZURhdGEuc2hlbGZDb25maWcpfSAuIFZNIC0gJHtmaXh0dXJlRGF0YS52bUNvbmZpZz8ubGVuZ3RofWAsXHJcbiAgICAgIHtcclxuICAgICAgICBsZWZ0OiBib3R0b21YICsgYm90dG9tV2lkdGggLyAyLFxyXG4gICAgICAgIHRvcDogYm90dG9tWSArIGJvdHRvbUhlaWdodCAvIDIsXHJcbiAgICAgICAgZm9udFNpemU6IDUsXHJcbiAgICAgICAgZm9udEZhbWlseTogXCJJbnRlclwiLFxyXG4gICAgICAgIGZvbnRXZWlnaHQ6IFwiNTAwXCIsXHJcbiAgICAgICAgZmlsbDogXCIjMzMzXCIsXHJcbiAgICAgICAgb3JpZ2luWDogXCJjZW50ZXJcIixcclxuICAgICAgICBvcmlnaW5ZOiBcImNlbnRlclwiLFxyXG4gICAgICAgIHRleHRBbGlnbjogXCJjZW50ZXJcIixcclxuICAgICAgICB3aWR0aDogYm90dG9tV2lkdGgsXHJcbiAgICAgICAgaGVpZ2h0OiBib3R0b21IZWlnaHQsXHJcbiAgICAgIH0sXHJcbiAgICApO1xyXG5cclxuICAgIGNvbnN0IGZpeHR1cmVHcm91cCA9IG5ldyBmYWJyaWMuR3JvdXAoXHJcbiAgICAgIFtcclxuICAgICAgICBtYWluQ29udGFpbmVyLFxyXG4gICAgICAgIHRvcENvbnRhaW5lcixcclxuICAgICAgICBpbm5lclRvcEJveCxcclxuICAgICAgICB0b3BUZXh0LFxyXG4gICAgICAgIGlubmVyQm90dG9tQm94LFxyXG4gICAgICAgIGJvdHRvbVRleHQsXHJcbiAgICAgICAgbWlkQ29udGFpbmVyLFxyXG4gICAgICAgIGZpcnN0Qm94LFxyXG4gICAgICAgIGZpcnN0Qm94VGV4dCxcclxuICAgICAgICAuLi5zaGVsdmVzLFxyXG4gICAgICAgIGxhc3RCb3gsXHJcbiAgICAgICAgbGFzdEJveFRleHQsXHJcbiAgICAgICAgYm90dG9tQ29udGFpbmVyLFxyXG4gICAgICAgIGJvdHRvbVRleHRDb250ZW50LFxyXG4gICAgICBdLFxyXG4gICAgICB7XHJcbiAgICAgICAgbGVmdDogeCxcclxuICAgICAgICB0b3A6IHksXHJcbiAgICAgICAgZXZlbnRlZDogdHJ1ZSxcclxuICAgICAgICBob3ZlckN1cnNvcjogXCJwb2ludGVyXCIsXHJcbiAgICAgICAgc2VsZWN0YWJsZTogZmFsc2UsXHJcbiAgICAgICAgbG9ja1NjYWxpbmdYOiB0cnVlLFxyXG4gICAgICAgIGxvY2tTY2FsaW5nWTogdHJ1ZSxcclxuICAgICAgICBzdWJUYXJnZXRDaGVjazogdHJ1ZSxcclxuICAgICAgICBoYXNDb250cm9sczogZmFsc2UsXHJcbiAgICAgICAgbG9ja1JvdGF0aW9uOiB0cnVlLFxyXG4gICAgICAgIGxvY2tNb3ZlbWVudFg6IHRydWUsXHJcbiAgICAgICAgbG9ja01vdmVtZW50WTogdHJ1ZSxcclxuICAgICAgICBhbmdsZTogZml4dHVyZURhdGEucmVsYXRpdmVQb3NpdGlvbj8uYW5nbGUgPz8gMCxcclxuICAgICAgfSxcclxuICAgICkgYXMgZmFicmljLkdyb3VwICYge1xyXG4gICAgICB3YWxsSW5kZXg6IG51bWJlcjtcclxuICAgICAgZml4dHVyZUluZGV4OiBudW1iZXI7XHJcbiAgICAgIGZpeHR1cmVJZDogc3RyaW5nO1xyXG4gICAgICBmaXh0dXJlVHlwZTogXCJ3YWxsXCIgfCBcImZsb29yXCI7XHJcbiAgICAgIGlzc3VlOiBib29sZWFuO1xyXG4gICAgICBpc3N1ZURhdGE6IGFueTtcclxuICAgICAgdGFza1R5cGU6IHN0cmluZztcclxuICAgICAgdm1Db25maWc6IFtdO1xyXG4gICAgICBvYmpUeXBlOiBzdHJpbmc7XHJcbiAgICB9O1xyXG5cclxuICAgIGZpeHR1cmVHcm91cC5vbihcIm1vdXNlZG93blwiLCAoZXZlbnQ6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQ7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMucmVzaXplQ2FudmFzKCk7XHJcbiAgICAgICAgdGhpcy5maXRDYW52YXNUb0xheW91dEFuaW1hdGVkKCk7XHJcbiAgICAgIH0sIDMwMCk7XHJcbiAgICAgIHRoaXMuaGlnaGxpZ2h0Rml4dHVyZSh0YXJnZXQpO1xyXG4gICAgICB0aGlzLnNlbGVjdEZpeHR1cmUodGFyZ2V0KTtcclxuICAgIH0pO1xyXG5cclxuICAgIGZpeHR1cmVHcm91cC5maXh0dXJlVHlwZSA9IGZpeHR1cmVEYXRhLmZpeHR1cmVUeXBlO1xyXG4gICAgZml4dHVyZUdyb3VwLndhbGxJbmRleCA9IGZpeHR1cmVEYXRhLmFzc29jaWF0ZWRFbGVtZW50TnVtYmVyO1xyXG4gICAgZml4dHVyZUdyb3VwLmZpeHR1cmVJbmRleCA9IGZpeHR1cmVEYXRhLmFzc29jaWF0ZWRFbGVtZW50Rml4dHVyZU51bWJlcjtcclxuICAgIGZpeHR1cmVHcm91cC5maXh0dXJlSWQgPSBmaXh0dXJlRGF0YS5faWQ7XHJcbiAgICBmaXh0dXJlR3JvdXAuaXNzdWUgPSBmaXh0dXJlRGF0YS5pc3N1ZTtcclxuICAgIGZpeHR1cmVHcm91cC5pc3N1ZURhdGEgPSBmaXh0dXJlRGF0YS5pc3N1ZURhdGE7XHJcbiAgICBmaXh0dXJlR3JvdXAudGFza1R5cGUgPSBmaXh0dXJlRGF0YS50YXNrVHlwZTtcclxuICAgIGZpeHR1cmVHcm91cC52bUNvbmZpZyA9IGZpeHR1cmVEYXRhLnZtQ29uZmlnO1xyXG4gICAgZml4dHVyZUdyb3VwLm9ialR5cGUgPSBcImZpeHR1cmVcIjtcclxuXHJcbiAgICBjYW52YXMuYWRkKGZpeHR1cmVHcm91cCk7XHJcblxyXG4gICAgcmV0dXJuIGZpeHR1cmVHcm91cDtcclxuICB9XHJcblxyXG4gIHNlbGVjdEZpeHR1cmUodGFyZ2V0OiBhbnkpIHtcclxuICAgIGlmICh0YXJnZXQpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEZpeHR1cmUgPSB7XHJcbiAgICAgICAgZml4dHVyZVR5cGU6IHRhcmdldC5maXh0dXJlVHlwZSxcclxuICAgICAgICB3YWxsSW5kZXg6IHRhcmdldC53YWxsSW5kZXgsXHJcbiAgICAgICAgZml4dHVyZUluZGV4OiB0YXJnZXQuZml4dHVyZUluZGV4LFxyXG4gICAgICAgIGZpeHR1cmVJZDogdGFyZ2V0LmZpeHR1cmVJZCxcclxuICAgICAgICBpc3N1ZTogdGFyZ2V0Lmlzc3VlLFxyXG4gICAgICAgIGlzc3VlRGF0YTogdGFyZ2V0Lmlzc3VlRGF0YSxcclxuICAgICAgICB0YXNrVHlwZTogdGFyZ2V0LnRhc2tUeXBlLFxyXG4gICAgICB9O1xyXG5cclxuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRGaXh0dXJlLmZpeHR1cmVUeXBlID09PSBcIndhbGxcIikge1xyXG4gICAgICAgIGNvbnN0IHdhbGwgPSB0aGlzLmZsb29yRGF0YS5sYXlvdXRQb2x5Z29uLmZpbmQoXHJcbiAgICAgICAgICAod2FsbDogYW55KSA9PiB3YWxsLmVsZW1lbnROdW1iZXIgPT09IHRoaXMuc2VsZWN0ZWRGaXh0dXJlLndhbGxJbmRleCxcclxuICAgICAgICApO1xyXG4gICAgICAgIGNvbnN0IGZpeHR1cmUgPSB3YWxsLmZpeHR1cmVzLmZpbmQoXHJcbiAgICAgICAgICAoZml4dHVyZTogYW55KSA9PiBmaXh0dXJlLl9pZCA9PT0gdGhpcy5zZWxlY3RlZEZpeHR1cmUuZml4dHVyZUlkLFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEZpeHR1cmVEYXRhID0gZml4dHVyZTtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRml4dHVyZURhdGFbXCJyZXZpc2lvbklkXCJdID0gdGhpcy5mbG9vckRhdGEucmV2aXNpb25JZDtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdGVkRml4dHVyZS5maXh0dXJlVHlwZSA9PT0gXCJmbG9vclwiKSB7XHJcbiAgICAgICAgY29uc3QgZml4dHVyZSA9IHRoaXMuZmxvb3JEYXRhLmNlbnRlckZpeHR1cmUuZmluZChcclxuICAgICAgICAgIChmaXh0dXJlOiBhbnkpID0+IGZpeHR1cmUuX2lkID09PSB0aGlzLnNlbGVjdGVkRml4dHVyZS5maXh0dXJlSWQsXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRml4dHVyZURhdGEgPSBmaXh0dXJlO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRGaXh0dXJlRGF0YVtcInJldmlzaW9uSWRcIl0gPSB0aGlzLmZsb29yRGF0YS5yZXZpc2lvbklkO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkRml4dHVyZURhdGE/LmhlYWRlcj8ubGFiZWwgIT0gXCJDTFwiKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEZpeHR1cmUuZml4dHVyZURhdGEgPSB0aGlzLnNlbGVjdGVkRml4dHVyZURhdGE7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEZpeHR1cmUuZml4dHVyZURhdGEgPSBudWxsO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkcmF3TGFiZWxlZFJlY3RhbmdsZShcclxuICAgIGNhbnZhczogZmFicmljLkNhbnZhcyxcclxuICAgIHg6IG51bWJlcixcclxuICAgIHk6IG51bWJlcixcclxuICAgIHdpZHRoOiBudW1iZXIsXHJcbiAgICBoZWlnaHQ6IG51bWJlcixcclxuICAgIGVsZW1lbnQ6IGFueSxcclxuICApOiBmYWJyaWMuR3JvdXAge1xyXG4gICAgY29uc3QgcmVjdCA9IG5ldyBmYWJyaWMuUmVjdCh7XHJcbiAgICAgIHdpZHRoLFxyXG4gICAgICBoZWlnaHQsXHJcbiAgICAgIHJ4OiAyLFxyXG4gICAgICByeTogMixcclxuICAgICAgZmlsbDogXCIjREFGMUZGXCIsXHJcbiAgICAgIHN0cm9rZTogXCIjNkJDQUZGXCIsXHJcbiAgICAgIHN0cm9rZVdpZHRoOiAyLFxyXG4gICAgICBvcmlnaW5YOiBcImNlbnRlclwiLFxyXG4gICAgICBvcmlnaW5ZOiBcImNlbnRlclwiLFxyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc3QgdGV4dCA9IG5ldyBmYWJyaWMuVGV4dGJveChlbGVtZW50LmZpeHR1cmVOYW1lLCB7XHJcbiAgICAgIHdpZHRoOiB3aWR0aCAtIDgsXHJcbiAgICAgIGZvbnRTaXplOiAxNCxcclxuICAgICAgZm9udEZhbWlseTogXCJJbnRlclwiLFxyXG4gICAgICBmb250V2VpZ2h0OiBcIjUwMFwiLFxyXG4gICAgICBmaWxsOiBcIiMxMDE4MjhcIixcclxuICAgICAgb3JpZ2luWDogXCJjZW50ZXJcIixcclxuICAgICAgb3JpZ2luWTogXCJjZW50ZXJcIixcclxuICAgICAgdGV4dEFsaWduOiBcImNlbnRlclwiLFxyXG4gICAgICBlZGl0YWJsZTogZmFsc2UsXHJcbiAgICAgIHNwbGl0QnlHcmFwaGVtZTogdHJ1ZSxcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IHRleHRCb3VuZHMgPSB0ZXh0LmdldEJvdW5kaW5nUmVjdCgpO1xyXG5cclxuICAgIGlmICh0ZXh0Qm91bmRzLmhlaWdodCA+IGhlaWdodCAtIDgpIHtcclxuICAgICAgY29uc3Qgc2NhbGUgPSAoaGVpZ2h0IC0gOCkgLyB0ZXh0Qm91bmRzLmhlaWdodDtcclxuICAgICAgdGV4dC5zZXQoXCJmb250U2l6ZVwiLCB0ZXh0LmZvbnRTaXplISAqIHNjYWxlKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBncm91cCA9IG5ldyBmYWJyaWMuR3JvdXAoW3JlY3QsIHRleHRdLCB7XHJcbiAgICAgIGxlZnQ6IHgsXHJcbiAgICAgIHRvcDogeSxcclxuICAgICAgYW5nbGU6IGVsZW1lbnQucmVsYXRpdmVQb3NpdGlvbi5hbmdsZSxcclxuICAgICAgc2VsZWN0YWJsZTogZmFsc2UsXHJcbiAgICAgIG9yaWdpblg6IFwiY2VudGVyXCIsXHJcbiAgICAgIG9yaWdpblk6IFwiY2VudGVyXCIsXHJcbiAgICB9KSBhcyBmYWJyaWMuR3JvdXAgJiB7XHJcbiAgICAgIG9ialR5cGU6IHN0cmluZztcclxuICAgICAgZGF0YTogYW55O1xyXG4gICAgfTtcclxuXHJcbiAgICBncm91cC5vYmpUeXBlID0gXCJvdGhlcnNcIjtcclxuICAgIGdyb3VwLmRhdGEgPSBlbGVtZW50O1xyXG5cclxuICAgIGNhbnZhcy5hZGQoZ3JvdXApO1xyXG5cclxuICAgIHJldHVybiBncm91cDtcclxuICB9XHJcblxyXG4gIHRvUGl4ZWxzKHZhbHVlOiBudW1iZXIsIHVuaXQ6IHN0cmluZywgZHBpID0gMi44KSB7XHJcbiAgICBsZXQgcGl4ZWxzOiBudW1iZXI7XHJcblxyXG4gICAgaWYgKHVuaXQgPT09IFwibW1cIikge1xyXG4gICAgICBwaXhlbHMgPSAodmFsdWUgLyAyNS40KSAqIGRwaTtcclxuICAgIH0gZWxzZSBpZiAodW5pdCA9PT0gXCJmdFwiKSB7XHJcbiAgICAgIHBpeGVscyA9IHZhbHVlICogMTIgKiBkcGk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJVbnN1cHBvcnRlZCB1bml0LiBVc2UgJ21tJyBvciAnZnQnLlwiKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gTnVtYmVyKHBpeGVscy50b0ZpeGVkKDIpKTtcclxuICB9XHJcblxyXG4gIGNhbGNNZXJjaENvbXBsaWFuY2VQZXJjZW50YWdlKCkge1xyXG4gICAgY29uc3QgYWxsRml4dHVyZXMgPSBbXHJcbiAgICAgIC4uLnRoaXMuZmxvb3JEYXRhPy5sYXlvdXRQb2x5Z29uLmZsYXRNYXAoKGU6IGFueSkgPT4gZS5maXh0dXJlcyksXHJcbiAgICAgIC4uLnRoaXMuZmxvb3JEYXRhPy5jZW50ZXJGaXh0dXJlLFxyXG4gICAgXTtcclxuXHJcbiAgICBjb25zdCBhbGxTaGVsdmVzID0gYWxsRml4dHVyZXMuZmxhdE1hcCgoZjogYW55KSA9PiBmLnNoZWxmQ29uZmlnKTtcclxuXHJcbiAgICBjb25zdCBjb21wbGlhbmNlcyA9IGFsbFNoZWx2ZXMubWFwKChzOiBhbnkpID0+IHM/LmNvbXBsaWFuY2UpO1xyXG5cclxuICAgIGNvbnN0IHRvdGFsID0gY29tcGxpYW5jZXMubGVuZ3RoO1xyXG4gICAgY29uc3QgcHJvcGVyQ291bnQgPSBjb21wbGlhbmNlcy5maWx0ZXIoKHApID0+IHAgPT09IFwicHJvcGVyXCIpLmxlbmd0aDtcclxuICAgIGNvbnN0IHN1Y2Nlc3NQZXJjZW50YWdlID0gKHByb3BlckNvdW50IC8gdG90YWwpICogMTAwO1xyXG5cclxuICAgIHJldHVybiBNYXRoLnJvdW5kKHN1Y2Nlc3NQZXJjZW50YWdlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0RnVsbExheW91dEJvdW5kcygpIHtcclxuICAgIGNvbnN0IG9iamVjdHMgPSB0aGlzLmNhbnZhcy5nZXRPYmplY3RzKCk7XHJcbiAgICBpZiAoIW9iamVjdHMubGVuZ3RoKSByZXR1cm4geyBsZWZ0OiAwLCB0b3A6IDAsIHdpZHRoOiAwLCBoZWlnaHQ6IDAgfTtcclxuXHJcbiAgICBsZXQgbWluWCA9IEluZmluaXR5LFxyXG4gICAgICBtaW5ZID0gSW5maW5pdHksXHJcbiAgICAgIG1heFggPSAtSW5maW5pdHksXHJcbiAgICAgIG1heFkgPSAtSW5maW5pdHk7XHJcblxyXG4gICAgZm9yIChjb25zdCBvYmogb2Ygb2JqZWN0cykge1xyXG4gICAgICBjb25zdCByZWN0ID0gb2JqLmdldEJvdW5kaW5nUmVjdCgpO1xyXG4gICAgICBtaW5YID0gTWF0aC5taW4obWluWCwgcmVjdC5sZWZ0KTtcclxuICAgICAgbWluWSA9IE1hdGgubWluKG1pblksIHJlY3QudG9wKTtcclxuICAgICAgbWF4WCA9IE1hdGgubWF4KG1heFgsIHJlY3QubGVmdCArIHJlY3Qud2lkdGgpO1xyXG4gICAgICBtYXhZID0gTWF0aC5tYXgobWF4WSwgcmVjdC50b3AgKyByZWN0LmhlaWdodCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgbGVmdDogbWluWCxcclxuICAgICAgdG9wOiBtaW5ZLFxyXG4gICAgICB3aWR0aDogbWF4WCAtIG1pblgsXHJcbiAgICAgIGhlaWdodDogbWF4WSAtIG1pblksXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgcm90YXRlQ2FudmFzKGNhbnZhczogZmFicmljLkNhbnZhcywgYW5nbGVEZWc6IG51bWJlcikge1xyXG4gICAgaWYgKCFjYW52YXMpIHJldHVybjtcclxuICAgIGNvbnN0IGFsbE9iamVjdHMgPSBjYW52YXMuZ2V0T2JqZWN0cygpO1xyXG4gICAgaWYgKCFhbGxPYmplY3RzIHx8IGFsbE9iamVjdHMubGVuZ3RoID09PSAwKSByZXR1cm47XHJcblxyXG4gICAgLy8gQ3JlYXRlIGFuIEFjdGl2ZVNlbGVjdGlvbiBjb250YWluaW5nIGFsbCBvYmplY3RzIG9uIHRoZSBjYW52YXNcclxuICAgIGNvbnN0IHNlbGVjdGlvbiA9IG5ldyBmYWJyaWMuQWN0aXZlU2VsZWN0aW9uKGFsbE9iamVjdHMgYXMgYW55LCB7IGNhbnZhcyB9KTtcclxuICAgIGNhbnZhcy5zZXRBY3RpdmVPYmplY3Qoc2VsZWN0aW9uKTtcclxuXHJcbiAgICAvLyBSb3RhdGUgdGhlIEFjdGl2ZVNlbGVjdGlvbiBkaXJlY3RseSAod29ya3MgbGlrZSBhIHRlbXBvcmFyeSBncm91cClcclxuICAgIGNvbnN0IGFjdGl2ZTogYW55ID0gY2FudmFzLmdldEFjdGl2ZU9iamVjdCgpO1xyXG4gICAgaWYgKCFhY3RpdmUpIHtcclxuICAgICAgY2FudmFzLmRpc2NhcmRBY3RpdmVPYmplY3QoKTtcclxuICAgICAgY2FudmFzLnJlcXVlc3RSZW5kZXJBbGwoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGN1cnJlbnRBbmdsZSA9IGFjdGl2ZS5hbmdsZSB8fCAwO1xyXG4gICAgYWN0aXZlLnJvdGF0ZShjdXJyZW50QW5nbGUgKyBhbmdsZURlZyk7XHJcbiAgICBhY3RpdmUuc2V0Q29vcmRzKCk7XHJcblxyXG4gICAgLy8gQ2xlYXIgc2VsZWN0aW9uIGJ1dCBrZWVwIHJvdGF0ZWQgcG9zaXRpb25zIG9mIGNoaWxkIG9iamVjdHNcclxuICAgIGNhbnZhcy5kaXNjYXJkQWN0aXZlT2JqZWN0KCk7XHJcbiAgICBjYW52YXMucmVxdWVzdFJlbmRlckFsbCgpO1xyXG4gIH1cclxuXHJcbiAgZG93bmxvYWRDYW52YXMoKSB7XHJcbiAgICBpZiAoIXRoaXMuY2FudmFzKSByZXR1cm47XHJcblxyXG4gICAgY29uc3Qgb3JpZ2luYWxWaWV3cG9ydCA9IFtcclxuICAgICAgLi4udGhpcy5jYW52YXMudmlld3BvcnRUcmFuc2Zvcm0hLFxyXG4gICAgXSBhcyBmYWJyaWMuVE1hdDJEO1xyXG5cclxuICAgIHRoaXMuY2FudmFzLnNldFZpZXdwb3J0VHJhbnNmb3JtKFsxLCAwLCAwLCAxLCAwLCAwXSk7XHJcblxyXG4gICAgY29uc3QgYm91bmRzID0gdGhpcy5nZXRGdWxsTGF5b3V0Qm91bmRzKCk7XHJcblxyXG4gICAgY29uc3QgZGF0YVVSTCA9IHRoaXMuY2FudmFzLnRvRGF0YVVSTCh7XHJcbiAgICAgIGZvcm1hdDogXCJwbmdcIixcclxuICAgICAgbGVmdDogYm91bmRzLmxlZnQsXHJcbiAgICAgIHRvcDogYm91bmRzLnRvcCxcclxuICAgICAgd2lkdGg6IGJvdW5kcy53aWR0aCxcclxuICAgICAgaGVpZ2h0OiBib3VuZHMuaGVpZ2h0LFxyXG4gICAgICBtdWx0aXBsaWVyOiA0LFxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5jYW52YXMuc2V0Vmlld3BvcnRUcmFuc2Zvcm0ob3JpZ2luYWxWaWV3cG9ydCk7XHJcblxyXG4gICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJhXCIpO1xyXG4gICAgbGluay5ocmVmID0gZGF0YVVSTDtcclxuICAgIGxpbmsuZG93bmxvYWQgPSBgJHt0aGlzLmZsb29yRGF0YS5zdG9yZU5hbWV9XyR7dGhpcy5mbG9vckRhdGEuZmxvb3JOYW1lfS5wbmdgO1xyXG4gICAgbGluay5jbGljaygpO1xyXG4gIH1cclxuXHJcbiAgaGlnaGxpZ2h0Rml4dHVyZShncm91cDogYW55LCBibGluazogYm9vbGVhbiA9IGZhbHNlKSB7XHJcbiAgICB0aGlzLnJlbW92ZUhpZ2hsaWdodCgpO1xyXG4gICAgdGhpcy5jYW5jZWxIaWdobGlnaHRCbGluayA9IGZhbHNlO1xyXG5cclxuICAgIGNvbnN0IGNlbnRlciA9IGdyb3VwLmdldENlbnRlclBvaW50KCk7XHJcblxyXG4gICAgY29uc3QgcmVhbFdpZHRoID0gZ3JvdXAud2lkdGghICogZ3JvdXAuc2NhbGVYITtcclxuICAgIGNvbnN0IHJlYWxIZWlnaHQgPSBncm91cC5oZWlnaHQhICogZ3JvdXAuc2NhbGVZITtcclxuXHJcbiAgICBjb25zdCByZWN0ID0gbmV3IGZhYnJpYy5SZWN0KHtcclxuICAgICAgbGVmdDogY2VudGVyLngsXHJcbiAgICAgIHRvcDogY2VudGVyLnksXHJcbiAgICAgIHdpZHRoOiByZWFsV2lkdGggKyA4LCAvLyBjb25zaXN0ZW50IHBhZGRpbmdcclxuICAgICAgaGVpZ2h0OiByZWFsSGVpZ2h0ICsgOCxcclxuICAgICAgcng6IDUsXHJcbiAgICAgIHJ5OiA1LFxyXG4gICAgICBzdHJva2U6IFwiIzAwYWFmZlwiLFxyXG4gICAgICBzdHJva2VXaWR0aDogMyxcclxuICAgICAgZmlsbDogXCJ0cmFuc3BhcmVudFwiLFxyXG4gICAgICBzZWxlY3RhYmxlOiBmYWxzZSxcclxuICAgICAgZXZlbnRlZDogZmFsc2UsXHJcbiAgICAgIG9yaWdpblg6IFwiY2VudGVyXCIsXHJcbiAgICAgIG9yaWdpblk6IFwiY2VudGVyXCIsXHJcbiAgICAgIGFuZ2xlOiBncm91cC5hbmdsZSB8fCAwLFxyXG4gICAgICBvcGFjaXR5OiBibGluayA/IDAgOiAxLFxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5jYW52YXMuYWRkKHJlY3QpO1xyXG4gICAgdGhpcy5jYW52YXMubW92ZU9iamVjdFRvKHJlY3QsIHRoaXMuY2FudmFzLmdldE9iamVjdHMoKS5sZW5ndGggLSAxKTtcclxuICAgIHRoaXMuY2FudmFzLnJlcXVlc3RSZW5kZXJBbGwoKTtcclxuXHJcbiAgICB0aGlzLmFjdGl2ZUhpZ2hsaWdodCA9IHJlY3Q7XHJcblxyXG4gICAgLy8gLS0tIE5vIGJsaW5raW5nIG5lZWRlZCAtLS1cclxuICAgIGlmICghYmxpbmspIHJldHVybjtcclxuXHJcbiAgICBsZXQgY3ljbGVzID0gMDtcclxuXHJcbiAgICBjb25zdCBibGlua09uY2UgPSAoKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLmNhbmNlbEhpZ2hsaWdodEJsaW5rKSB7XHJcbiAgICAgICAgdGhpcy5yZW1vdmVIaWdobGlnaHQoKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJlY3QuYW5pbWF0ZShcclxuICAgICAgICB7IG9wYWNpdHk6IDEgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBkdXJhdGlvbjogMjAwLFxyXG4gICAgICAgICAgb25DaGFuZ2U6ICgpID0+IHRoaXMuY2FudmFzLnJlcXVlc3RSZW5kZXJBbGwoKSxcclxuICAgICAgICAgIG9uQ29tcGxldGU6ICgpID0+IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuY2FuY2VsSGlnaGxpZ2h0QmxpbmspIHtcclxuICAgICAgICAgICAgICB0aGlzLnJlbW92ZUhpZ2hsaWdodCgpO1xyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcmVjdC5hbmltYXRlKFxyXG4gICAgICAgICAgICAgIHsgb3BhY2l0eTogMCB9LFxyXG4gICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIGR1cmF0aW9uOiAyMDAsXHJcbiAgICAgICAgICAgICAgICBvbkNoYW5nZTogKCkgPT4gdGhpcy5jYW52YXMucmVxdWVzdFJlbmRlckFsbCgpLFxyXG4gICAgICAgICAgICAgICAgb25Db21wbGV0ZTogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBpZiAodGhpcy5jYW5jZWxIaWdobGlnaHRCbGluaykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlSGlnaGxpZ2h0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICBjeWNsZXMrKztcclxuICAgICAgICAgICAgICAgICAgaWYgKGN5Y2xlcyA8IDIwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYmxpbmtPbmNlKCk7XHJcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmNhbmNlbEhpZ2hsaWdodEJsaW5rKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICByZWN0LnNldCh7IG9wYWNpdHk6IDEgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNhbnZhcy5yZXF1ZXN0UmVuZGVyQWxsKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0sXHJcbiAgICAgICk7XHJcbiAgICB9O1xyXG5cclxuICAgIGJsaW5rT25jZSgpO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlSGlnaGxpZ2h0KCkge1xyXG4gICAgdGhpcy5jYW5jZWxIaWdobGlnaHRCbGluayA9IHRydWU7XHJcbiAgICBpZiAodGhpcy5hY3RpdmVIaWdobGlnaHQpIHtcclxuICAgICAgdGhpcy5jYW52YXMucmVtb3ZlKHRoaXMuYWN0aXZlSGlnaGxpZ2h0KTtcclxuICAgICAgdGhpcy5hY3RpdmVIaWdobGlnaHQgPSBudWxsO1xyXG4gICAgICB0aGlzLmNhbnZhcy5yZXF1ZXN0UmVuZGVyQWxsKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZUZpeHR1cmUoe1xyXG4gICAgZml4dHVyZUlkLFxyXG4gICAgZml4dHVyZU5hbWUsXHJcbiAgICBzaGVsZklkLFxyXG4gICAgem9uZSxcclxuICB9OiB7XHJcbiAgICBmaXh0dXJlSWQ6IHN0cmluZztcclxuICAgIGZpeHR1cmVOYW1lOiBzdHJpbmc7XHJcbiAgICBzaGVsZklkOiBzdHJpbmc7XHJcbiAgICB6b25lOiBzdHJpbmc7XHJcbiAgfSkge1xyXG4gICAgY29uc3QgYWN0aW9uRml4dHVyZSA9IHRoaXMuY2FudmFzXHJcbiAgICAgIC5nZXRPYmplY3RzKClcclxuICAgICAgLmZpbmQoXHJcbiAgICAgICAgKG9iajogYW55KSA9PiBvYmoub2JqVHlwZSA9PT0gXCJmaXh0dXJlXCIgJiYgb2JqLmZpeHR1cmVJZCA9PT0gZml4dHVyZUlkLFxyXG4gICAgICApIGFzIGZhYnJpYy5Hcm91cCB8IHVuZGVmaW5lZDtcclxuXHJcbiAgICBpZiAoIWFjdGlvbkZpeHR1cmUpIHJldHVybjtcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5yZXNpemVDYW52YXMoKTtcclxuICAgICAgdGhpcy5maXRDYW52YXNUb0xheW91dEFuaW1hdGVkKCk7XHJcbiAgICB9LCAzMDApO1xyXG5cclxuICAgIHRoaXMuaGlnaGxpZ2h0Rml4dHVyZShhY3Rpb25GaXh0dXJlLCB0cnVlKTtcclxuICAgIHRoaXMuc2VsZWN0Rml4dHVyZShhY3Rpb25GaXh0dXJlKTtcclxuICB9XHJcblxyXG4gIG9uQ2xpY2tDbG9zZSgpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRGaXh0dXJlID0gbnVsbDtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLnJlc2l6ZUNhbnZhcygpO1xyXG4gICAgICB0aGlzLmZpdENhbnZhc1RvTGF5b3V0QW5pbWF0ZWQoKTtcclxuICAgIH0sIDMwMCk7XHJcbiAgICB0aGlzLnJlbW92ZUhpZ2hsaWdodCgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcclxuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcbn1cclxuIiwiPHNlY3Rpb24gaWQ9XCJtZXJjaC1jb21wbGlhbmNlXCI+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiaXNQYWdlTG9hZGluZ1wiIGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBtLTBcIj48bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaGVhZGVyU2tlbGV0b25cIj48L25nLWNvbnRhaW5lcj48L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCI+PG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNrZWxldG9uTG9hZGVyXCI+PC9uZy1jb250YWluZXI+PC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IFtuZ0NsYXNzXT1cInsgJ2Qtbm9uZSc6IGlzUGFnZUxvYWRpbmcgfVwiPlxyXG4gICAgICAgIDxkaXYgaWQ9XCJib2R5XCIgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbCBvdmVyZmxvdy1oaWRkZW4gcG9zaXRpb24tcmVsYXRpdmUgY29tcGxpYW5jZS1jYW52YXNcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJjYW52YXMtY2FyZFwiIGNsYXNzPVwidy0xMDAgcG9zaXRpb24tcmVsYXRpdmVcIiAjY2FudmFzQ29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxjYW52YXMgaWQ9XCJiYXNlLWNhbnZhc1wiICNiYXNlQ2FudmFzPjwvY2FudmFzPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIFJvdGF0ZSBCdXR0b24gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBzdHlsZT1cInRvcDogMjRweDsgcmlnaHQ6IDk0cHhcIiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMyBwb3NpdGlvbi1hYnNvbHV0ZSBiZy13aGl0ZSBzaGFkb3ctc21cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicm90YXRlQ2FudmFzKGNhbnZhcyw5MClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMlwiIGhlaWdodD1cIjIyXCIgdmlld0JveD1cIjAgMCAyNiAyNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNi4zNjI2NSA3LjE3ODg3TDcuMTc2MjUgNi4zNjI4N0w1LjkwNDI1IDUuMDkyMDdMNS4wODk0NSA1LjkwNTY3TDYuMzYyNjUgNy4xNzg4N1pNMTUuNjcxIDYuMzY0MDdMMTkuNjM3OSAxMC4zMzA5TDIwLjkwOTkgOS4wNTc2OUwxNi45NDQyIDUuMDkwODdMMTUuNjcxIDYuMzY0MDdaTTE5LjYzNzkgMTguODI1N0wxOC44MjQzIDE5LjYzOTNMMjAuMDk2MyAyMC45MTAxTDIwLjkwOTkgMjAuMDk3N0wxOS42Mzc5IDE4LjgyNTdaTTEwLjMyOTUgMTkuNjM5M0w2LjM2MjY1IDE1LjY3MjVMNS4wOTA2NSAxNi45NDU3TDkuMDU2MjYgMjAuOTExM0wxMC4zMjk1IDE5LjYzOTNaTTE4LjgyNDMgMTkuNjM5M0MxNy42NTQzIDIwLjgwODEgMTYuODQwNyAyMS42MTkzIDE2LjE0NTkgMjIuMTQ5N0MxNS40NzE1IDIyLjY2NDUgMTUuMDE1NSAyMi44Mjg5IDE0LjU3NjMgMjIuODI4OVYyNC42Mjg5QzE1LjU2NzUgMjQuNjI4OSAxNi40MDI3IDI0LjIxNzMgMTcuMjM2NyAyMy41ODEzQzE4LjA1MDMgMjIuOTYwOSAxOC45NjM1IDIyLjA0NTMgMjAuMDk2MyAyMC45MTI1TDE4LjgyNDMgMTkuNjM5M1pNOS4wNTYyNiAyMC45MTEzQzEwLjE4OTEgMjIuMDQ1MyAxMS4xMDIzIDIyLjk1OTcgMTEuOTE1OSAyMy41ODEzQzEyLjc0OTkgMjQuMjE3MyAxMy41ODUxIDI0LjYyODkgMTQuNTc2MyAyNC42Mjg5VjIyLjgyODlDMTQuMTM3MSAyMi44Mjg5IDEzLjY4MjMgMjIuNjY0NSAxMy4wMDY3IDIyLjE0OTdDMTIuMzExOSAyMS42MTkzIDExLjQ5ODMgMjAuODA4MSAxMC4zMjk1IDE5LjYzOTNMOS4wNTYyNiAyMC45MTEzWk0xOS42Mzc5IDEwLjMzMDlDMjAuODA2NyAxMS40OTk3IDIxLjYxNzkgMTIuMzEzMyAyMi4xNDgzIDEzLjAwODFDMjIuNjYzMSAxMy42ODM3IDIyLjgyNzUgMTQuMTM4NSAyMi44Mjc1IDE0LjU3NzdIMjQuNjI3NUMyNC42Mjc1IDEzLjU4NjUgMjQuMjE1OSAxMi43NTEzIDIzLjU3OTkgMTEuOTE3M0MyMi45NTk1IDExLjEwMzcgMjIuMDQyNyAxMC4xOTA1IDIwLjkwOTkgOS4wNTc2OUwxOS42Mzc5IDEwLjMzMDlaTTIwLjkwOTkgMjAuMDk3N0MyMi4wNDM5IDE4Ljk2MzcgMjIuOTU4MyAxOC4wNTE3IDIzLjU3OTkgMTcuMjM4MUMyNC4yMTU5IDE2LjQwNDEgMjQuNjI3NSAxNS41Njg5IDI0LjYyNzUgMTQuNTc3N0gyMi44Mjc1QzIyLjgyNzUgMTUuMDE2OSAyMi42NjMxIDE1LjQ3MjkgMjIuMTQ4MyAxNi4xNDczQzIxLjYxNzkgMTYuODQyMSAyMC44MDY3IDE3LjY1NTcgMTkuNjM3OSAxOC44MjU3TDIwLjkwOTkgMjAuMDk3N1pNNy4xNzYyNSA2LjM2Mjg3QzguMzQ2MjUgNS4xOTQwNyA5LjE1OTg1IDQuMzgxNjcgOS44NTQ2NSAzLjg1MTI3QzEwLjUyOSAzLjMzNjQ3IDEwLjk4NSAzLjE3MzI3IDExLjQyNDIgMy4xNzMyN1YxLjM3MjA3QzEwLjQzMyAxLjM3MjA3IDkuNTk3ODUgMS43ODM2NyA4Ljc2Mzg1IDIuNDE5NjdDNy45NDkwNSAzLjA0MTI3IDcuMDM3MDUgMy45NTU2NyA1LjkwNDI1IDUuMDg4NDdMNy4xNzYyNSA2LjM2Mjg3Wk0xNi45NDQyIDUuMDkwODdDMTUuODExNCAzLjk1Njg3IDE0Ljg5ODIgMy4wNDEyNyAxNC4wODQ2IDIuNDE5NjdDMTMuMjUwNiAxLjc4MzY3IDEyLjQxNTQgMS4zNzIwNyAxMS40MjQyIDEuMzcyMDdWMy4xNzMyN0MxMS44NjM0IDMuMTczMjcgMTIuMzE4MiAzLjMzNjQ3IDEyLjk5MzggMy44NTEyN0MxMy42ODg2IDQuMzgxNjcgMTQuNTAyMiA1LjE5Mjg3IDE1LjY3MSA2LjM2MTY3TDE2Ljk0NDIgNS4wOTA4N1pNNS4wODk0NSA1LjkwMzI3QzMuOTU2NjUgNy4wMzYwNyAzLjA0MjI1IDcuOTQ4MDcgMi40MjA2NSA4Ljc2Mjg3QzEuNzg0NjUgOS41OTY4NyAxLjM3MzA1IDEwLjQzMjEgMS4zNzMwNSAxMS40MjMzSDMuMTczMDVDMy4xNzMwNSAxMC45ODQxIDMuMzM3NDUgMTAuNTI4MSAzLjg1MjI1IDkuODUzNjdDNC4zODI2NSA5LjE1ODg3IDUuMTkzODUgOC4zNDUyNyA2LjM2MjY1IDcuMTc1MjdMNS4wODk0NSA1LjkwMzI3Wk02LjM2MjY1IDE1LjY3MTNDNS4xOTM4NSAxNC41MDEzIDQuMzgyNjUgMTMuNjg3NyAzLjg1MjI1IDEyLjk5MjlDMy4zMzc0NSAxMi4zMTg1IDMuMTczMDUgMTEuODYyNSAzLjE3MzA1IDExLjQyMzNIMS4zNzMwNUMxLjM3MzA1IDEyLjQxNDUgMS43ODQ2NSAxMy4yNDk3IDIuNDIwNjUgMTQuMDgzN0MzLjA0MjI1IDE0Ljg5NzMgMy45NTY2NSAxNS44MTA1IDUuMDg5NDUgMTYuOTQzM0w2LjM2MjY1IDE1LjY3MTNaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzFEMjkzOVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMjMuMiA2Ljk4MzJMMjUgOC4yQzI1IDQuNTgyIDIyLjQwNTYgMS41Nzk2IDE5IDFNMi44IDE5LjAxNjhMMSAxNy44QzEgMjEuNDE4IDMuNTk0NCAyNC40MjA0IDcgMjVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMxRDI5MzlcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gRG93bmxvYWQgQnV0dG9uIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gc3R5bGU9XCJ0b3A6IDI0cHg7IHJpZ2h0OiAyNnB4XCIgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTMgcG9zaXRpb24tYWJzb2x1dGUgYmctd2hpdGUgc2hhZG93LXNtXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRvd25sb2FkQ2FudmFzKClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjIyXCIgaGVpZ2h0PVwiMjJcIiB2aWV3Qm94PVwiMCAwIDI2IDI2XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMDAwMDBcIiBzdHJva2Utd2lkdGg9XCIwLjI0MDAwMDAwMDAwMDAwMDA1XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD1cIlNWR1JlcG9fYmdDYXJyaWVyXCIgc3Ryb2tlLXdpZHRoPVwiMFwiPjwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPVwiU1ZHUmVwb190cmFjZXJDYXJyaWVyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjQ0NDQ0NDXCIgc3Ryb2tlLXdpZHRoPVwiMC4zODRcIj48L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD1cIlNWR1JlcG9faWNvbkNhcnJpZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTEyLjU1MzUgMTYuNTA2MUMxMi40MTE0IDE2LjY2MTUgMTIuMjEwNiAxNi43NSAxMiAxNi43NUMxMS43ODk0IDE2Ljc1IDExLjU4ODYgMTYuNjYxNSAxMS40NDY1IDE2LjUwNjFMNy40NDY0OCAxMi4xMzExQzcuMTY2OTggMTEuODI1NCA3LjE4ODIyIDExLjM1MSA3LjQ5MzkyIDExLjA3MTVDNy43OTk2MyAxMC43OTIgOC4yNzQwMiAxMC44MTMyIDguNTUzNTIgMTEuMTE4OUwxMS4yNSAxNC4wNjgyVjNDMTEuMjUgMi41ODU3OSAxMS41ODU4IDIuMjUgMTIgMi4yNUMxMi40MTQyIDIuMjUgMTIuNzUgMi41ODU3OSAxMi43NSAzVjE0LjA2ODJMMTUuNDQ2NSAxMS4xMTg5QzE1LjcyNiAxMC44MTMyIDE2LjIwMDQgMTAuNzkyIDE2LjUwNjEgMTEuMDcxNUMxNi44MTE4IDExLjM1MSAxNi44MzMgMTEuODI1NCAxNi41NTM1IDEyLjEzMTFMMTIuNTUzNSAxNi41MDYxWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjMUQyOTM5XCI+PC9wYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMy43NSAxNUMzLjc1IDE0LjU4NTggMy40MTQyMiAxNC4yNSAzIDE0LjI1QzIuNTg1NzkgMTQuMjUgMi4yNSAxNC41ODU4IDIuMjUgMTVWMTUuMDU0OUMyLjI0OTk4IDE2LjQyMjUgMi4yNDk5NiAxNy41MjQ4IDIuMzY2NTIgMTguMzkxOEMyLjQ4NzU0IDE5LjI5MTkgMi43NDY0MyAyMC4wNDk3IDMuMzQ4MzUgMjAuNjUxNkMzLjk1MDI3IDIxLjI1MzYgNC43MDgxNCAyMS41MTI1IDUuNjA4MjUgMjEuNjMzNUM2LjQ3NTIyIDIxLjc1IDcuNTc3NTQgMjEuNzUgOC45NDUxMyAyMS43NUgxNS4wNTQ5QzE2LjQyMjUgMjEuNzUgMTcuNTI0OCAyMS43NSAxOC4zOTE4IDIxLjYzMzVDMTkuMjkxOSAyMS41MTI1IDIwLjA0OTcgMjEuMjUzNiAyMC42NTE3IDIwLjY1MTZDMjEuMjUzNiAyMC4wNDk3IDIxLjUxMjUgMTkuMjkxOSAyMS42MzM1IDE4LjM5MThDMjEuNzUgMTcuNTI0OCAyMS43NSAxNi40MjI1IDIxLjc1IDE1LjA1NDlWMTVDMjEuNzUgMTQuNTg1OCAyMS40MTQyIDE0LjI1IDIxIDE0LjI1QzIwLjU4NTggMTQuMjUgMjAuMjUgMTQuNTg1OCAyMC4yNSAxNUMyMC4yNSAxNi40MzU0IDIwLjI0ODQgMTcuNDM2NSAyMC4xNDY5IDE4LjE5MTlDMjAuMDQ4MiAxOC45MjU3IDE5Ljg2NzggMTkuMzE0MiAxOS41OTEgMTkuNTkxQzE5LjMxNDIgMTkuODY3OCAxOC45MjU3IDIwLjA0ODIgMTguMTkxOSAyMC4xNDY5QzE3LjQzNjUgMjAuMjQ4NCAxNi40MzU0IDIwLjI1IDE1IDIwLjI1SDlDNy41NjQ1OSAyMC4yNSA2LjU2MzQ3IDIwLjI0ODQgNS44MDgxMiAyMC4xNDY5QzUuMDc0MzUgMjAuMDQ4MiA0LjY4NTc3IDE5Ljg2NzggNC40MDkwMSAxOS41OTFDNC4xMzIyNSAxOS4zMTQyIDMuOTUxOCAxOC45MjU3IDMuODUzMTUgMTguMTkxOUMzLjc1MTU5IDE3LjQzNjUgMy43NSAxNi40MzU0IDMuNzUgMTVaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiMxRDI5MzlcIj48L3BhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiBbbmdDbGFzc109XCJ7J2Qtbm9uZSc6IXNlbGVjdGVkRml4dHVyZT8uZml4dHVyZURhdGF9XCIgY2xhc3M9XCJjb2wgYmctd2hpdGUgcm91bmRlZCBwLTMgZml4dHVyZS1vdmVydmlld1wiPlxyXG4gICAgICAgICAgICAgICAgPGZpeHR1cmUtcHJvZHVjdHMgW2ZpeHR1cmVEZXRhaWxzXT1cInNlbGVjdGVkRml4dHVyZT8uZml4dHVyZURhdGFcIiAob25DbG9zZSk9XCJvbkNsaWNrQ2xvc2UoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNoYW5nZUZpeHR1cmUpPVwib25DaGFuZ2VGaXh0dXJlKCRldmVudClcIiBbZmxvb3JEYXRhXT1cImZsb29yRGF0YVwiPjwvZml4dHVyZS1wcm9kdWN0cz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9zZWN0aW9uPlxyXG5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjaGVhZGVyU2tlbGV0b24+XHJcbiAgICA8ZGl2IGNsYXNzPVwicm93IG0tMCBnLTAgbG9hZGVyIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBvdmVyZmxvdy1oaWRkZW5cIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lciB3LTEwMCBwLTQgcm91bmRlZFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBtdC0wIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNza2VsZXRvbkxvYWRlcj5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3cgbG9hZGVyIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBvdmVyZmxvdy1oaWRkZW5cIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lciByb3VuZGVkXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGJyIC8+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxiciAvPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8YnIgLz5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGJyIC8+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT4iXX0=
|