tide-design-system 2.2.1 → 2.2.3
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/.storybook/preview.ts +0 -1
- package/dist/css/reset.css +1 -0
- package/dist/style.css +1 -1
- package/dist/tide-design-system.cjs +2 -2
- package/dist/tide-design-system.esm.js +450 -444
- package/dist/utilities/viewport.ts +21 -3
- package/package.json +1 -1
- package/src/assets/css/reset.css +1 -0
- package/src/components/TideCarousel.vue +1 -0
- package/src/components/TideDivider.vue +16 -8
- package/src/stories/TideDivider.stories.ts +3 -4
- package/src/utilities/viewport.ts +21 -3
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),Ie={HORIZONTAL:"horizontal",VERTICAL:"vertical"},t={withBreakpoint:(o,n)=>o.map(r=>`${n}-${r}`),ALIGN:{X:{CENTER:"tide-text-center",LEFT:"tide-text-left",RIGHT:"tide-text-right"},Y:{INITIAL:"tide-align-initial",MIDDLE:"tide-align-middle"}},AXIS1:{AROUND:"tide-axis1-around",BETWEEN:"tide-axis1-between",CENTER:"tide-axis1-center",END:"tide-axis1-end",START:"tide-axis1-start"},AXIS2:{AROUND:"tide-axis2-around",CENTER:"tide-axis2-center",END:"tide-axis2-end",START:"tide-axis2-start"},BG:{GLOBAL:{PRIMARY:{ERROR:"tide-bg-primary-error",INFO:"tide-bg-primary-info",SUCCESS:"tide-bg-primary-success",WARNING:"tide-bg-primary-warning"},SURFACE:{ERROR:"tide-bg-surface-error",INFO:"tide-bg-surface-info",SUCCESS:"tide-bg-surface-success",WARNING:"tide-bg-surface-warning"}},INITIAL:"tide-bg-initial",BLUR:"tide-bg-blur",PRIMARY:"tide-bg-primary",SECONDARY:"tide-bg-secondary",SURFACE:{ACCENT:"tide-bg-surface-accent",BRAND:"tide-bg-surface-brand",DEFAULT:"tide-bg-surface",FLOATING:"tide-bg-surface-floating",GRADIENT:"tide-bg-surface-gradient",VARIANT:"tide-bg-surface-variant"},TRANSPARENT:{ONE_HUNDRED:"tide-transparent-100",TWO_HUNDRED:"tide-transparent-200",THREE_HUNDRED:"tide-transparent-300",FOUR_HUNDRED:"tide-transparent-400"}},BORDER:{COLOR:{GLOBAL:{ERROR:"tide-border-error",INFO:"tide-border-info",SUCCESS:"tide-border-success",WARNING:"tide-border-warning"},INITIAL:"tide-border-color-initial",DEFAULT:"tide-border",FLOATING:"tide-border-floating",HIGH:"tide-border-high",LOW:"tide-border-low",PRIMARY:"tide-border-primary"},RADIUS:{ZERO:"tide-radius-0",QUARTER:"tide-radius-1/4",HALF:"tide-radius-1/2",ONE:"tide-radius-1",FULL:"tide-radius-full"},BOTTOM:{ZERO:"tide-border-bottom-0",ONE:"tide-border-bottom-1",TWO:"tide-border-bottom-2"},FULL:{ZERO:"tide-border-0",ONE:"tide-border-1",TWO:"tide-border-2"},LEFT:{ZERO:"tide-border-left-0",ONE:"tide-border-left-1",TWO:"tide-border-left-2"},RIGHT:{ZERO:"tide-border-right-0",ONE:"tide-border-right-1",TWO:"tide-border-right-2"},TOP:{ZERO:"tide-border-top-0",ONE:"tide-border-top-1",TWO:"tide-border-top-2"}},BOX_SIZING:{BORDER_BOX:"tide-box-border",CONTENT_BOX:"tide-box-content"},BREAK_INSIDE:{AVOID_COLUMN:"tide-break-inside-avoid-column"},BREAK_WORD:{OFF:"tide-break-initial",ON:"tide-break-word"},COLUMNS:{INITIAL:"tide-columns-initial",ONE:"tide-columns-1",TWO:"tide-columns-2",THREE:"tide-columns-3",FOUR:"tide-columns-4"},CURSOR:{NOT_ALLOWED:"tide-cursor-not-allowed",POINTER:"tide-cursor-pointer",TEXT:"tide-cursor-text"},DISPLAY:{BLOCK:"tide-display-block",CONTENTS:"tide-display-contents",FLEX:"tide-display-flex",GRID:"tide-display-grid",INITIAL:"tide-display-initial",INLINE:"tide-display-inline",INLINE_BLOCK:"tide-display-inline-block",INLINE_FLEX:"tide-display-inline-flex",NONE:"tide-display-none"},ELLIPSIS:"tide-ellipsis",FLEX:{BASIS:{AUTO:"tide-flex-basis-auto",ZERO:"tide-flex-basis-0"},DIRECTION:{COLUMN:"tide-flex-column",COLUMN_REVERSE:"tide-flex-column-reverse",ROW:"tide-flex-row",ROW_REVERSE:"tide-flex-row-reverse"},GROW:{OFF:"tide-grow-none",ON:"tide-grow"},SHRINK:{OFF:"tide-shrink-none",ON:"tide-shrink"},WRAP:"tide-flex-wrap"},FONT:{COLOR:{GLOBAL:{ERROR:"tide-font-error",INFO:"tide-font-info",SUCCESS:"tide-font-success",WARNING:"tide-font-warning"},PRIMARY:"tide-font-on-primary",SECONDARY:"tide-font-on-secondary",SURFACE:{BRAND:"tide-font-on-surface-brand",DEFAULT:"tide-font-on-surface",INVERSE:"tide-font-on-surface-inverse",VARIANT:"tide-font-on-surface-variant",VARIANT_INVERSE:"tide-font-on-surface-variant-inverse"}},ROLE:{DISPLAY_1:"tide-typography-display-1",HEADLINE_1:"tide-typography-headline-1",HEADLINE_2:"tide-typography-headline-2",HEADLINE_3:"tide-typography-headline-3",TITLE_1:"tide-typography-title-1",TITLE_2:"tide-typography-title-2",BODY_1:"tide-typography-body-1",BODY_2:"tide-typography-body-2",LABEL_1:"tide-typography-label-1",LABEL_1_SEMIBOLD:"tide-typography-label-1-semibold",LABEL_2:"tide-typography-label-2",LABEL_2_SEMIBOLD:"tide-typography-label-2-semibold",LABEL_3:"tide-typography-label-3",LINK_1:"tide-typography-link-1",LINK_2:"tide-typography-link-2",LINK_3:"tide-typography-link-3",BUTTON_1:"tide-typography-button-1",BUTTON_2:"tide-typography-button-2"},SIZE:{TWELVE:"tide-font-12",FOURTEEN:"tide-font-14",SIXTEEN:"tide-font-16",TWENTY:"tide-font-20",TWENTY_FOUR:"tide-font-24",THIRTY_TWO:"tide-font-32"},WEIGHT:{FOUR_HUNDRED:"tide-font-400",FIVE_HUNDRED:"tide-font-500",SIX_HUNDRED:"tide-font-600",SEVEN_HUNDRED:"tide-font-700"}},GAP:{ZERO:"tide-gap-0",QUARTER:"tide-gap-1/4",HALF:"tide-gap-1/2",ONE:"tide-gap-1",TWO:"tide-gap-2",FOUR:"tide-gap-4"},GRID:{END:{ONE:"tide-end-1",TWO:"tide-end-2",THREE:"tide-end-3",FOUR:"tide-end-4",FIVE:"tide-end-5",SIX:"tide-end-6",SEVEN:"tide-end-7",EIGHT:"tide-end-8",NINE:"tide-end-9",TEN:"tide-end-10",ELEVEN:"tide-end-11",TWELVE:"tide-end-12",THIRTEEN:"tide-end-13"},FLUID:"tide-fluid",ITEM:"tide-grid-item",LAYOUT:"tide-grid-layout",START:{ZERO:"tide-start-0",ONE:"tide-start-1",TWO:"tide-start-2",THREE:"tide-start-3",FOUR:"tide-start-4",FIVE:"tide-start-5",SIX:"tide-start-6",SEVEN:"tide-start-7",EIGHT:"tide-start-8",NINE:"tide-start-9",TEN:"tide-start-10",ELEVEN:"tide-start-11",TWELVE:"tide-start-12"},XL:"tide-grid-xl"},HEIGHT:{AUTO:"tide-height-auto",ZERO:"tide-height-0",FULL:"tide-height-full",MAX_FULL:"tide-max-height-full"},ISOLATION:{ISOLATE:"tide-isolate"},LIST_BULLETS:{OFF:"tide-list-none"},MARGIN:{BOTTOM:{AUTO:"tide-margin-bottom-auto",ZERO:"tide-margin-bottom-0",QUARTER:"tide-margin-bottom-1/4",HALF:"tide-margin-bottom-1/2",ONE:"tide-margin-bottom-1",TWO:"tide-margin-bottom-2",FOUR:"tide-margin-bottom-4"},FULL:{ZERO:"tide-margin-0",QUARTER:"tide-margin-1/4",HALF:"tide-margin-1/2",ONE:"tide-margin-1",TWO:"tide-margin-2",FOUR:"tide-margin-4"},LEFT:{AUTO:"tide-margin-left-auto",ZERO:"tide-margin-left-0",QUARTER:"tide-margin-left-1/4",HALF:"tide-margin-left-1/2",ONE:"tide-margin-left-1",TWO:"tide-margin-left-2",FOUR:"tide-margin-left-4"},RIGHT:{AUTO:"tide-margin-right-auto",ZERO:"tide-margin-right-0",QUARTER:"tide-margin-right-1/4",HALF:"tide-margin-right-1/2",ONE:"tide-margin-right-1",TWO:"tide-margin-right-2",FOUR:"tide-margin-right-4"},TOP:{AUTO:"tide-margin-top-auto",ZERO:"tide-margin-top-0",QUARTER:"tide-margin-top-1/4",HALF:"tide-margin-top-1/2",ONE:"tide-margin-top-1",TWO:"tide-margin-top-2",FOUR:"tide-margin-top-4"},X:{AUTO:"tide-margin-x-auto",ZERO:"tide-margin-x-0",QUARTER:"tide-margin-x-1/4",HALF:"tide-margin-x-1/2",ONE:"tide-margin-x-1",TWO:"tide-margin-x-2",FOUR:"tide-margin-x-4"},Y:{ZERO:"tide-margin-y-0",QUARTER:"tide-margin-y-1/4",HALF:"tide-margin-y-1/2",ONE:"tide-margin-y-1",TWO:"tide-margin-y-2",FOUR:"tide-margin-y-4"}},OBJECT:{CENTER:"tide-object-center",CONTAIN:"tide-object-contain",COVER:"tide-object-cover",SCALE_DOWN:"tide-object-scale-down"},OPACITY:{OFF:"tide-opacity-none",ON:"tide-opacity"},OVERFLOW:{X:{AUTO:"tide-x-auto",HIDDEN:"tide-x-hidden",SCROLL:"tide-x-scroll"},XY:{AUTO:"tide-xy-auto",HIDDEN:"tide-xy-hidden"},Y:{AUTO:"tide-y-auto",HIDDEN:"tide-y-hidden"}},PADDING:{BOTTOM:{ZERO:"tide-padding-bottom-0",QUARTER:"tide-padding-bottom-1/4",HALF:"tide-padding-bottom-1/2",ONE:"tide-padding-bottom-1",TWO:"tide-padding-bottom-2",FOUR:"tide-padding-bottom-4"},FULL:{ZERO:"tide-padding-0",QUARTER:"tide-padding-1/4",HALF:"tide-padding-1/2",ONE:"tide-padding-1",TWO:"tide-padding-2",FOUR:"tide-padding-4"},LEFT:{ZERO:"tide-padding-left-0",QUARTER:"tide-padding-left-1/4",HALF:"tide-padding-left-1/2",ONE:"tide-padding-left-1",TWO:"tide-padding-left-2",FOUR:"tide-padding-left-4"},RIGHT:{ZERO:"tide-padding-right-0",QUARTER:"tide-padding-right-1/4",HALF:"tide-padding-right-1/2",ONE:"tide-padding-right-1",TWO:"tide-padding-right-2",FOUR:"tide-padding-right-4"},TOP:{ZERO:"tide-padding-top-0",QUARTER:"tide-padding-top-1/4",HALF:"tide-padding-top-1/2",ONE:"tide-padding-top-1",TWO:"tide-padding-top-2",FOUR:"tide-padding-top-4"},X:{ZERO:"tide-padding-x-0",QUARTER:"tide-padding-x-1/4",HALF:"tide-padding-x-1/2",ONE:"tide-padding-x-1",TWO:"tide-padding-x-2",FOUR:"tide-padding-x-4"},Y:{ZERO:"tide-padding-y-0",QUARTER:"tide-padding-y-1/4",HALF:"tide-padding-y-1/2",ONE:"tide-padding-y-1",TWO:"tide-padding-y-2",FOUR:"tide-padding-y-4"}},POINTER_EVENTS:{OFF:"tide-pointer-events-none",ON:"tide-pointer-events"},POSITION:{ABSOLUTE:"tide-position-absolute",FIXED:"tide-position-fixed",RELATIVE:"tide-position-relative",STATIC:"tide-position-static",STICKY:"tide-position-sticky"},POSITIONING:{BOTTOM:"tide-bottom-0",LEFT:"tide-left-0",RIGHT:"tide-right-0",TOP:"tide-top-0"},RATIO:{ONE_TO_ONE:"tide-ratio-1/1",SIXTEEN_TO_NINE:"tide-ratio-16/9",THREE_TO_TWO:"tide-ratio-3/2"},SCROLLBAR:{OFF:"tide-scrollbar-none"},SHADOW:{INITIAL:"tide-shadow-initial",BOTTOM:"tide-shadow-bottom",TOP:"tide-shadow-top",TEXT:"tide-shadow-text"},SNAP:{ON:"tide-scroll-snap"},SNAP_ALIGN:{START:"tide-scroll-snap-start"},TEXT_TRANSFORM:{LOWER:"tide-text-transform-lower",NONE:"tide-text-transform-none",UPPER:"tide-text-transform-upper"},UNDERLINE:{HOVER:"tide-underline-hover",OFF:"tide-underline-none",ON:"tide-underline"},VISIBILITY:{OFF:"tide-visible-none",ON:"tide-visible"},WHITESPACE_WRAP:{OFF:"tide-whitespace-nowrap"},WIDTH:{AUTO:"tide-width-auto",ZERO:"tide-width-0",FULL:"tide-width-full",MAX_FULL:"tide-max-width-full"},Z_INDEX:{INITIAL:"tide-z-index-initial",ONE:"tide-z-index-1"}};t.DISPLAY.BLOCK,t.DISPLAY.CONTENTS,t.DISPLAY.FLEX,t.DISPLAY.GRID,t.DISPLAY.NONE,t.DISPLAY.INITIAL,t.DISPLAY.INLINE,t.DISPLAY.INLINE_BLOCK,t.DISPLAY.INLINE_FLEX,t.AXIS1.AROUND,t.AXIS1.BETWEEN,t.AXIS1.CENTER,t.AXIS1.END,t.AXIS1.START,t.AXIS2.AROUND,t.AXIS2.CENTER,t.AXIS2.END,t.AXIS2.START,t.FLEX.DIRECTION.COLUMN,t.FLEX.DIRECTION.COLUMN_REVERSE,t.FLEX.DIRECTION.ROW,t.FLEX.DIRECTION.ROW_REVERSE,t.GAP.ONE,t.GAP.HALF,t.GAP.QUARTER,t.GAP.TWO,t.GAP.FOUR,t.FLEX.BASIS.ZERO,t.FLEX.GROW.ON,t.FLEX.GROW.OFF,t.FLEX.SHRINK.ON,t.FLEX.SHRINK.OFF,t.FLEX.WRAP,t.POSITION.ABSOLUTE,t.POSITION.FIXED,t.POSITION.RELATIVE,t.POSITION.STICKY,t.POSITIONING.TOP,t.POSITIONING.RIGHT,t.POSITIONING.BOTTOM,t.POSITIONING.LEFT,t.BOX_SIZING.BORDER_BOX,t.BOX_SIZING.CONTENT_BOX,t.MARGIN.FULL.ZERO,t.MARGIN.FULL.ONE,t.MARGIN.FULL.HALF,t.MARGIN.FULL.QUARTER,t.MARGIN.FULL.TWO,t.MARGIN.FULL.FOUR,t.MARGIN.Y.ZERO,t.MARGIN.Y.ONE,t.MARGIN.Y.HALF,t.MARGIN.Y.QUARTER,t.MARGIN.Y.TWO,t.MARGIN.Y.FOUR,t.MARGIN.TOP.ZERO,t.MARGIN.TOP.ONE,t.MARGIN.TOP.HALF,t.MARGIN.TOP.QUARTER,t.MARGIN.TOP.TWO,t.MARGIN.TOP.FOUR,t.MARGIN.X.ZERO,t.MARGIN.X.ONE,t.MARGIN.X.HALF,t.MARGIN.X.QUARTER,t.MARGIN.X.TWO,t.MARGIN.X.FOUR,t.MARGIN.X.AUTO,t.MARGIN.RIGHT.ZERO,t.MARGIN.RIGHT.ONE,t.MARGIN.RIGHT.HALF,t.MARGIN.RIGHT.QUARTER,t.MARGIN.RIGHT.TWO,t.MARGIN.RIGHT.FOUR,t.MARGIN.RIGHT.AUTO,t.MARGIN.BOTTOM.ZERO,t.MARGIN.BOTTOM.ONE,t.MARGIN.BOTTOM.HALF,t.MARGIN.BOTTOM.QUARTER,t.MARGIN.BOTTOM.TWO,t.MARGIN.BOTTOM.FOUR,t.MARGIN.LEFT.ZERO,t.MARGIN.LEFT.ONE,t.MARGIN.LEFT.HALF,t.MARGIN.LEFT.QUARTER,t.MARGIN.LEFT.TWO,t.MARGIN.LEFT.FOUR,t.MARGIN.LEFT.AUTO,t.BORDER.FULL.ONE,t.BORDER.FULL.TWO,t.BORDER.TOP.ONE,t.BORDER.TOP.TWO,t.BORDER.RIGHT.ONE,t.BORDER.RIGHT.TWO,t.BORDER.BOTTOM.ONE,t.BORDER.BOTTOM.TWO,t.BORDER.LEFT.ONE,t.BORDER.LEFT.TWO,t.BORDER.RADIUS.ONE,t.BORDER.RADIUS.HALF,t.BORDER.RADIUS.QUARTER,t.BORDER.RADIUS.FULL,t.PADDING.FULL.ZERO,t.PADDING.FULL.ONE,t.PADDING.FULL.HALF,t.PADDING.FULL.QUARTER,t.PADDING.FULL.TWO,t.PADDING.FULL.FOUR,t.PADDING.Y.ZERO,t.PADDING.Y.ONE,t.PADDING.Y.HALF,t.PADDING.Y.QUARTER,t.PADDING.Y.TWO,t.PADDING.Y.FOUR,t.PADDING.TOP.ZERO,t.PADDING.TOP.ONE,t.PADDING.TOP.HALF,t.PADDING.TOP.QUARTER,t.PADDING.TOP.TWO,t.PADDING.TOP.FOUR,t.PADDING.X.ZERO,t.PADDING.X.ONE,t.PADDING.X.HALF,t.PADDING.X.QUARTER,t.PADDING.X.TWO,t.PADDING.X.FOUR,t.PADDING.RIGHT.ZERO,t.PADDING.RIGHT.ONE,t.PADDING.RIGHT.HALF,t.PADDING.RIGHT.QUARTER,t.PADDING.RIGHT.TWO,t.PADDING.RIGHT.FOUR,t.PADDING.BOTTOM.ZERO,t.PADDING.BOTTOM.ONE,t.PADDING.BOTTOM.HALF,t.PADDING.BOTTOM.QUARTER,t.PADDING.BOTTOM.TWO,t.PADDING.BOTTOM.FOUR,t.PADDING.LEFT.ZERO,t.PADDING.LEFT.ONE,t.PADDING.LEFT.HALF,t.PADDING.LEFT.QUARTER,t.PADDING.LEFT.TWO,t.PADDING.LEFT.FOUR,t.WIDTH.MAX_FULL,t.WIDTH.ZERO,t.WIDTH.FULL,t.HEIGHT.ZERO,t.HEIGHT.FULL,t.ALIGN.Y.MIDDLE,t.BREAK_WORD,t.CURSOR.NOT_ALLOWED,t.CURSOR.POINTER,t.CURSOR.TEXT,t.FONT.SIZE.TWELVE,t.FONT.SIZE.FOURTEEN,t.FONT.SIZE.SIXTEEN,t.FONT.SIZE.TWENTY,t.FONT.SIZE.TWENTY_FOUR,t.FONT.SIZE.THIRTY_TWO,t.FONT.WEIGHT.FOUR_HUNDRED,t.FONT.WEIGHT.FIVE_HUNDRED,t.FONT.WEIGHT.SIX_HUNDRED,t.FONT.WEIGHT.SEVEN_HUNDRED,t.LIST_BULLETS.OFF,t.OBJECT.CENTER,t.OBJECT.CONTAIN,t.OBJECT.COVER,t.OBJECT.SCALE_DOWN,t.POINTER_EVENTS.ON,t.POINTER_EVENTS.OFF,t.SCROLLBAR.OFF,t.SHADOW.BOTTOM,t.SHADOW.TOP,t.SNAP.ON,t.SNAP_ALIGN.START,t.ALIGN.X.LEFT,t.ALIGN.X.CENTER,t.ALIGN.X.RIGHT,t.TEXT_TRANSFORM.LOWER,t.TEXT_TRANSFORM.NONE,t.TEXT_TRANSFORM.UPPER,t.UNDERLINE.HOVER,t.UNDERLINE.OFF,t.UNDERLINE.ON,t.VISIBILITY.ON,t.VISIBILITY.OFF,t.WHITESPACE_WRAP.OFF,t.OVERFLOW.XY.AUTO,t.OVERFLOW.XY.HIDDEN,t.OVERFLOW.X.AUTO,t.OVERFLOW.X.HIDDEN,t.OVERFLOW.X.SCROLL,t.OVERFLOW.Y.AUTO,t.OVERFLOW.Y.HIDDEN,t.Z_INDEX.ONE;const Ae=e.defineComponent({__name:"TideDivider",props:{orientation:{default:Ie.HORIZONTAL}},setup(o){const n=o;return(r,s)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass([e.unref(t).BORDER.COLOR.LOW,n.orientation===e.unref(Ie).HORIZONTAL?[e.unref(t).MARGIN.Y.HALF,e.unref(t).BORDER.BOTTOM.ONE]:[e.unref(t).MARGIN.X.HALF,e.unref(t).BORDER.RIGHT.ONE]])},null,2))}}),Be=(o,n)=>{const r=o[n];return r?typeof r=="function"?r():Promise.resolve(r):new Promise((s,i)=>{(typeof queueMicrotask=="function"?queueMicrotask:setTimeout)(i.bind(null,new Error("Unknown variable dynamic import: "+n)))})},ze={AERO:"aero",ATV:"atv",BOATMART:"boatmart",CYCLE:"cycle",EQUIPMENT:"equipment",PWC:"pwc",RV:"rv",SNOW:"snow",TRUCK:"truck"},C={LARGE:"large",SMALL:"small"},K={LARGE:"large",SMALL:"small"},Ne=o=>{let n=o&&typeof o=="number"?new Intl.NumberFormat().format(o):String(o||""),r=n;return o&&typeof o=="string"&&(r=r.replace(/\D/g,""),Number(r)?n=new Intl.NumberFormat().format(Number(r)):n="0"),n},ft=o=>o&&typeof o=="string"?o.replace(/([a-z]{1})([A-Z]{1})/g,"$1 $2").replace(/[\s_-]/g," ").toLowerCase().split(" ").map(n=>n.slice(0,1).toUpperCase()+n.slice(1)).join(""):o,Et=o=>{let n=String(o&&typeof o=="number"?o:o||""),r=n;switch(r=r.replace(/\D/g,""),r.length){case 7:n=`${r.slice(0,3)}-${r.slice(3)}`;break;case 10:n=`${r.slice(0,3)}-${r.slice(3,6)}-${r.slice(6)}`;break;case 11:n=`${r.slice(0,1)}-${r.slice(1,4)}-${r.slice(4,7)}-${r.slice(7)}`;break;default:n=r;break}return n},mt=o=>`$${o?Ne(o):String(o||"0")}`,_=e.defineComponent({__name:"TideIcon",props:{icon:{},size:{default:C.SMALL}},setup(o){const n=o,r=e.ref();return e.watch(()=>n.icon,async()=>{const s=n.icon,i=ft(s),[c]=s.split("-"),a=ze[c==null?void 0:c.toUpperCase()],l=e.defineAsyncComponent(()=>a?Be(Object.assign({"../assets/svg/icons/realm/atv/IconAtvAtv.svg":()=>Promise.resolve().then(()=>require("./IconAtvAtv-c2e11398.cjs")),"../assets/svg/icons/realm/atv/IconAtvDuneBuggy.svg":()=>Promise.resolve().then(()=>require("./IconAtvDuneBuggy-ff1f7a23.cjs")),"../assets/svg/icons/realm/atv/IconAtvGoKart.svg":()=>Promise.resolve().then(()=>require("./IconAtvGoKart-d1ad6a03.cjs")),"../assets/svg/icons/realm/atv/IconAtvGolfCart.svg":()=>Promise.resolve().then(()=>require("./IconAtvGolfCart-9b3569bc.cjs")),"../assets/svg/icons/realm/atv/IconAtvSandRail.svg":()=>Promise.resolve().then(()=>require("./IconAtvSandRail-d71aa55b.cjs")),"../assets/svg/icons/realm/atv/IconAtvSideBySide.svg":()=>Promise.resolve().then(()=>require("./IconAtvSideBySide-f734e90f.cjs")),"../assets/svg/icons/realm/atv/IconAtvTrailer.svg":()=>Promise.resolve().then(()=>require("./IconAtvTrailer-ee1d6ec1.cjs")),"../assets/svg/icons/realm/boatmart/IconBoatmartPwc.svg":()=>Promise.resolve().then(()=>require("./IconBoatmartPwc-9de80564.cjs")),"../assets/svg/icons/realm/boatmart/IconBoatmartTrailer.svg":()=>Promise.resolve().then(()=>require("./IconBoatmartTrailer-ff1f376f.cjs")),"../assets/svg/icons/realm/rv/IconRvClassA.svg":()=>Promise.resolve().then(()=>require("./IconRvClassA-80da0dc5.cjs")),"../assets/svg/icons/realm/rv/IconRvClassB.svg":()=>Promise.resolve().then(()=>require("./IconRvClassB-2032c703.cjs")),"../assets/svg/icons/realm/rv/IconRvClassC.svg":()=>Promise.resolve().then(()=>require("./IconRvClassC-1d11671a.cjs")),"../assets/svg/icons/realm/rv/IconRvFifthWheel.svg":()=>Promise.resolve().then(()=>require("./IconRvFifthWheel-b234c67c.cjs")),"../assets/svg/icons/realm/rv/IconRvFishHouse.svg":()=>Promise.resolve().then(()=>require("./IconRvFishHouse-f6edfbbd.cjs")),"../assets/svg/icons/realm/rv/IconRvParkModel.svg":()=>Promise.resolve().then(()=>require("./IconRvParkModel-3707f77a.cjs")),"../assets/svg/icons/realm/rv/IconRvPopUpCamper.svg":()=>Promise.resolve().then(()=>require("./IconRvPopUpCamper-912c58c2.cjs")),"../assets/svg/icons/realm/rv/IconRvTravelTrailer.svg":()=>Promise.resolve().then(()=>require("./IconRvTravelTrailer-44a5f64d.cjs")),"../assets/svg/icons/realm/rv/IconRvTruckCamper.svg":()=>Promise.resolve().then(()=>require("./IconRvTruckCamper-ce2393f4.cjs"))}),`../assets/svg/icons/realm/${a}/Icon${i}.svg`):Be(Object.assign({"../assets/svg/icons/IconAccountBalance.svg":()=>Promise.resolve().then(()=>require("./IconAccountBalance-0a430d19.cjs")),"../assets/svg/icons/IconAcute.svg":()=>Promise.resolve().then(()=>require("./IconAcute-b1e43123.cjs")),"../assets/svg/icons/IconAdd.svg":()=>Promise.resolve().then(()=>require("./IconAdd-91de604b.cjs")),"../assets/svg/icons/IconAiDescription.svg":()=>Promise.resolve().then(()=>require("./IconAiDescription-674cca6d.cjs")),"../assets/svg/icons/IconAlignSpaceEven.svg":()=>Promise.resolve().then(()=>require("./IconAlignSpaceEven-7ee811f8.cjs")),"../assets/svg/icons/IconApplePay.svg":()=>Promise.resolve().then(()=>require("./IconApplePay-92395240.cjs")),"../assets/svg/icons/IconArrowBack.svg":()=>Promise.resolve().then(()=>require("./IconArrowBack-3d47d166.cjs")),"../assets/svg/icons/IconArrowCycle.svg":()=>Promise.resolve().then(()=>require("./IconArrowCycle-7b7c7325.cjs")),"../assets/svg/icons/IconArrowForward.svg":()=>Promise.resolve().then(()=>require("./IconArrowForward-613e128c.cjs")),"../assets/svg/icons/IconArrowRight.svg":()=>Promise.resolve().then(()=>require("./IconArrowRight-9f39cdbb.cjs")),"../assets/svg/icons/IconAssignment.svg":()=>Promise.resolve().then(()=>require("./IconAssignment-915702cc.cjs")),"../assets/svg/icons/IconAttachMoney.svg":()=>Promise.resolve().then(()=>require("./IconAttachMoney-6d3087ab.cjs")),"../assets/svg/icons/IconAutoRenew.svg":()=>Promise.resolve().then(()=>require("./IconAutoRenew-bcd665a4.cjs")),"../assets/svg/icons/IconAwardStar.svg":()=>Promise.resolve().then(()=>require("./IconAwardStar-447cf4fc.cjs")),"../assets/svg/icons/IconBed.svg":()=>Promise.resolve().then(()=>require("./IconBed-8bcac0c0.cjs")),"../assets/svg/icons/IconBolt.svg":()=>Promise.resolve().then(()=>require("./IconBolt-36fc8ef9.cjs")),"../assets/svg/icons/IconBookmark.svg":()=>Promise.resolve().then(()=>require("./IconBookmark-3f6454d9.cjs")),"../assets/svg/icons/IconBunkhouse.svg":()=>Promise.resolve().then(()=>require("./IconBunkhouse-348a1518.cjs")),"../assets/svg/icons/IconCalendarMonth.svg":()=>Promise.resolve().then(()=>require("./IconCalendarMonth-bb5bbb9b.cjs")),"../assets/svg/icons/IconCall.svg":()=>Promise.resolve().then(()=>require("./IconCall-08f3119f.cjs")),"../assets/svg/icons/IconCallQuality.svg":()=>Promise.resolve().then(()=>require("./IconCallQuality-56ee01fb.cjs")),"../assets/svg/icons/IconCarRental.svg":()=>Promise.resolve().then(()=>require("./IconCarRental-b0af42ff.cjs")),"../assets/svg/icons/IconCheck.svg":()=>Promise.resolve().then(()=>require("./IconCheck-910929df.cjs")),"../assets/svg/icons/IconChevronLeft.svg":()=>Promise.resolve().then(()=>require("./IconChevronLeft-6626777e.cjs")),"../assets/svg/icons/IconChevronRight.svg":()=>Promise.resolve().then(()=>require("./IconChevronRight-91bc7ad1.cjs")),"../assets/svg/icons/IconClear.svg":()=>Promise.resolve().then(()=>require("./IconClear-489c5a46.cjs")),"../assets/svg/icons/IconClose.svg":()=>Promise.resolve().then(()=>require("./IconClose-538a540f.cjs")),"../assets/svg/icons/IconContract.svg":()=>Promise.resolve().then(()=>require("./IconContract-0acea45b.cjs")),"../assets/svg/icons/IconCrash.svg":()=>Promise.resolve().then(()=>require("./IconCrash-8d91a8db.cjs")),"../assets/svg/icons/IconDashboardCustomize.svg":()=>Promise.resolve().then(()=>require("./IconDashboardCustomize-5321091b.cjs")),"../assets/svg/icons/IconDelete.svg":()=>Promise.resolve().then(()=>require("./IconDelete-5cc224a1.cjs")),"../assets/svg/icons/IconDiamond.svg":()=>Promise.resolve().then(()=>require("./IconDiamond-4e736f5f.cjs")),"../assets/svg/icons/IconDirectionsBoat.svg":()=>Promise.resolve().then(()=>require("./IconDirectionsBoat-11aaf49c.cjs")),"../assets/svg/icons/IconDomain.svg":()=>Promise.resolve().then(()=>require("./IconDomain-05540c31.cjs")),"../assets/svg/icons/IconDraft.svg":()=>Promise.resolve().then(()=>require("./IconDraft-26850369.cjs")),"../assets/svg/icons/IconEdit.svg":()=>Promise.resolve().then(()=>require("./IconEdit-b4d5f175.cjs")),"../assets/svg/icons/IconEngine.svg":()=>Promise.resolve().then(()=>require("./IconEngine-e51389f9.cjs")),"../assets/svg/icons/IconEngineering.svg":()=>Promise.resolve().then(()=>require("./IconEngineering-a74e5efe.cjs")),"../assets/svg/icons/IconError.svg":()=>Promise.resolve().then(()=>require("./IconError-4ad48be1.cjs")),"../assets/svg/icons/IconExpandContent.svg":()=>Promise.resolve().then(()=>require("./IconExpandContent-03a28bfb.cjs")),"../assets/svg/icons/IconExpandLess.svg":()=>Promise.resolve().then(()=>require("./IconExpandLess-59a80211.cjs")),"../assets/svg/icons/IconExpandMore.svg":()=>Promise.resolve().then(()=>require("./IconExpandMore-edf55cdd.cjs")),"../assets/svg/icons/IconFacebook.svg":()=>Promise.resolve().then(()=>require("./IconFacebook-9c43095a.cjs")),"../assets/svg/icons/IconFavorite.svg":()=>Promise.resolve().then(()=>require("./IconFavorite-43091cef.cjs")),"../assets/svg/icons/IconFavoriteFilled.svg":()=>Promise.resolve().then(()=>require("./IconFavoriteFilled-71277849.cjs")),"../assets/svg/icons/IconFlag.svg":()=>Promise.resolve().then(()=>require("./IconFlag-0243bbb9.cjs")),"../assets/svg/icons/IconFormatBold.svg":()=>Promise.resolve().then(()=>require("./IconFormatBold-4faa5f99.cjs")),"../assets/svg/icons/IconFormatItalic.svg":()=>Promise.resolve().then(()=>require("./IconFormatItalic-fee490fc.cjs")),"../assets/svg/icons/IconFormatListBulleted.svg":()=>Promise.resolve().then(()=>require("./IconFormatListBulleted-d0a77d0e.cjs")),"../assets/svg/icons/IconForum.svg":()=>Promise.resolve().then(()=>require("./IconForum-22217aa0.cjs")),"../assets/svg/icons/IconGas.svg":()=>Promise.resolve().then(()=>require("./IconGas-9d623313.cjs")),"../assets/svg/icons/IconGavel.svg":()=>Promise.resolve().then(()=>require("./IconGavel-aacae653.cjs")),"../assets/svg/icons/IconGears.svg":()=>Promise.resolve().then(()=>require("./IconGears-c3b1ba71.cjs")),"../assets/svg/icons/IconGlobeLocationPin.svg":()=>Promise.resolve().then(()=>require("./IconGlobeLocationPin-b869a4e7.cjs")),"../assets/svg/icons/IconGoogle.svg":()=>Promise.resolve().then(()=>require("./IconGoogle-77ec192e.cjs")),"../assets/svg/icons/IconGooglePay.svg":()=>Promise.resolve().then(()=>require("./IconGooglePay-049e93ec.cjs")),"../assets/svg/icons/IconGrid.svg":()=>Promise.resolve().then(()=>require("./IconGrid-1693599f.cjs")),"../assets/svg/icons/IconHandshake.svg":()=>Promise.resolve().then(()=>require("./IconHandshake-33b452a7.cjs")),"../assets/svg/icons/IconHandyman.svg":()=>Promise.resolve().then(()=>require("./IconHandyman-ffc0fafb.cjs")),"../assets/svg/icons/IconHeight.svg":()=>Promise.resolve().then(()=>require("./IconHeight-d8ee424f.cjs")),"../assets/svg/icons/IconHelp.svg":()=>Promise.resolve().then(()=>require("./IconHelp-43137a66.cjs")),"../assets/svg/icons/IconInfo.svg":()=>Promise.resolve().then(()=>require("./IconInfo-2d14575c.cjs")),"../assets/svg/icons/IconInformation.svg":()=>Promise.resolve().then(()=>require("./IconInformation-be043a15.cjs")),"../assets/svg/icons/IconInsertText.svg":()=>Promise.resolve().then(()=>require("./IconInsertText-14c80b9a.cjs")),"../assets/svg/icons/IconInstagram.svg":()=>Promise.resolve().then(()=>require("./IconInstagram-43bb02ea.cjs")),"../assets/svg/icons/IconIosShare.svg":()=>Promise.resolve().then(()=>require("./IconIosShare-526a016a.cjs")),"../assets/svg/icons/IconLayout.svg":()=>Promise.resolve().then(()=>require("./IconLayout-e663120e.cjs")),"../assets/svg/icons/IconLevellingJack.svg":()=>Promise.resolve().then(()=>require("./IconLevellingJack-40c63f7c.cjs")),"../assets/svg/icons/IconLinkedIn.svg":()=>Promise.resolve().then(()=>require("./IconLinkedIn-088a3792.cjs")),"../assets/svg/icons/IconLocalShipping.svg":()=>Promise.resolve().then(()=>require("./IconLocalShipping-9bca5a95.cjs")),"../assets/svg/icons/IconLock.svg":()=>Promise.resolve().then(()=>require("./IconLock-1c996287.cjs")),"../assets/svg/icons/IconMail.svg":()=>Promise.resolve().then(()=>require("./IconMail-f2b8fee4.cjs")),"../assets/svg/icons/IconMenu.svg":()=>Promise.resolve().then(()=>require("./IconMenu-c7c2b143.cjs")),"../assets/svg/icons/IconMoneyBag.svg":()=>Promise.resolve().then(()=>require("./IconMoneyBag-a3d297f5.cjs")),"../assets/svg/icons/IconMoreHoriz.svg":()=>Promise.resolve().then(()=>require("./IconMoreHoriz-2c82da62.cjs")),"../assets/svg/icons/IconNotifications.svg":()=>Promise.resolve().then(()=>require("./IconNotifications-01f7658b.cjs")),"../assets/svg/icons/IconOdometer.svg":()=>Promise.resolve().then(()=>require("./IconOdometer-a1bc108b.cjs")),"../assets/svg/icons/IconOpenInNew.svg":()=>Promise.resolve().then(()=>require("./IconOpenInNew-9032f1db.cjs")),"../assets/svg/icons/IconPalette.svg":()=>Promise.resolve().then(()=>require("./IconPalette-269c7286.cjs")),"../assets/svg/icons/IconPaypal.svg":()=>Promise.resolve().then(()=>require("./IconPaypal-427e8667.cjs")),"../assets/svg/icons/IconPerson.svg":()=>Promise.resolve().then(()=>require("./IconPerson-ee87961e.cjs")),"../assets/svg/icons/IconPersonSearch.svg":()=>Promise.resolve().then(()=>require("./IconPersonSearch-b0c1a4e5.cjs")),"../assets/svg/icons/IconPhotoCamera.svg":()=>Promise.resolve().then(()=>require("./IconPhotoCamera-56cb060d.cjs")),"../assets/svg/icons/IconPinterest.svg":()=>Promise.resolve().then(()=>require("./IconPinterest-87034fbf.cjs")),"../assets/svg/icons/IconPlayArrow.svg":()=>Promise.resolve().then(()=>require("./IconPlayArrow-80f601bf.cjs")),"../assets/svg/icons/IconPolicy.svg":()=>Promise.resolve().then(()=>require("./IconPolicy-8f5ca682.cjs")),"../assets/svg/icons/IconPower.svg":()=>Promise.resolve().then(()=>require("./IconPower-d41e067d.cjs")),"../assets/svg/icons/IconPowerOff.svg":()=>Promise.resolve().then(()=>require("./IconPowerOff-0e3118bf.cjs")),"../assets/svg/icons/IconPriorityHigh.svg":()=>Promise.resolve().then(()=>require("./IconPriorityHigh-aae28a02.cjs")),"../assets/svg/icons/IconRemove.svg":()=>Promise.resolve().then(()=>require("./IconRemove-73b05132.cjs")),"../assets/svg/icons/IconRequestQuote.svg":()=>Promise.resolve().then(()=>require("./IconRequestQuote-e24db541.cjs")),"../assets/svg/icons/IconResetWrench.svg":()=>Promise.resolve().then(()=>require("./IconResetWrench-5b5c4f74.cjs")),"../assets/svg/icons/IconRoad.svg":()=>Promise.resolve().then(()=>require("./IconRoad-3124bbd8.cjs")),"../assets/svg/icons/IconRoundedCorner.svg":()=>Promise.resolve().then(()=>require("./IconRoundedCorner-53cb2cfc.cjs")),"../assets/svg/icons/IconRuler.svg":()=>Promise.resolve().then(()=>require("./IconRuler-5feb5a83.cjs")),"../assets/svg/icons/IconSailing.svg":()=>Promise.resolve().then(()=>require("./IconSailing-fa136eea.cjs")),"../assets/svg/icons/IconSchool.svg":()=>Promise.resolve().then(()=>require("./IconSchool-0bca17f9.cjs")),"../assets/svg/icons/IconSearch.svg":()=>Promise.resolve().then(()=>require("./IconSearch-45b2c0e5.cjs")),"../assets/svg/icons/IconSeating.svg":()=>Promise.resolve().then(()=>require("./IconSeating-bc19b98f.cjs")),"../assets/svg/icons/IconSell.svg":()=>Promise.resolve().then(()=>require("./IconSell-bcede586.cjs")),"../assets/svg/icons/IconSensors.svg":()=>Promise.resolve().then(()=>require("./IconSensors-f35e7566.cjs")),"../assets/svg/icons/IconSettings.svg":()=>Promise.resolve().then(()=>require("./IconSettings-b8848783.cjs")),"../assets/svg/icons/IconShare.svg":()=>Promise.resolve().then(()=>require("./IconShare-ff50a973.cjs")),"../assets/svg/icons/IconShieldCheck.svg":()=>Promise.resolve().then(()=>require("./IconShieldCheck-b57fd628.cjs")),"../assets/svg/icons/IconShoppingCart.svg":()=>Promise.resolve().then(()=>require("./IconShoppingCart-eee95744.cjs")),"../assets/svg/icons/IconSleeps.svg":()=>Promise.resolve().then(()=>require("./IconSleeps-ffe0dd67.cjs")),"../assets/svg/icons/IconSms.svg":()=>Promise.resolve().then(()=>require("./IconSms-0575f458.cjs")),"../assets/svg/icons/IconSnowflake.svg":()=>Promise.resolve().then(()=>require("./IconSnowflake-2fccf99d.cjs")),"../assets/svg/icons/IconStar.svg":()=>Promise.resolve().then(()=>require("./IconStar-e2a88836.cjs")),"../assets/svg/icons/IconSummarize.svg":()=>Promise.resolve().then(()=>require("./IconSummarize-f73dec0e.cjs")),"../assets/svg/icons/IconSwapHoriz.svg":()=>Promise.resolve().then(()=>require("./IconSwapHoriz-4a33bd68.cjs")),"../assets/svg/icons/IconSwapVert.svg":()=>Promise.resolve().then(()=>require("./IconSwapVert-29258e96.cjs")),"../assets/svg/icons/IconThreeDRotation.svg":()=>Promise.resolve().then(()=>require("./IconThreeDRotation-7be89ff8.cjs")),"../assets/svg/icons/IconThumbUp.svg":()=>Promise.resolve().then(()=>require("./IconThumbUp-722d3c77.cjs")),"../assets/svg/icons/IconTrendingDown.svg":()=>Promise.resolve().then(()=>require("./IconTrendingDown-3da4b7d4.cjs")),"../assets/svg/icons/IconTrophy.svg":()=>Promise.resolve().then(()=>require("./IconTrophy-4d05eb75.cjs")),"../assets/svg/icons/IconTune.svg":()=>Promise.resolve().then(()=>require("./IconTune-1276696d.cjs")),"../assets/svg/icons/IconTwitter.svg":()=>Promise.resolve().then(()=>require("./IconTwitter-55b8ba63.cjs")),"../assets/svg/icons/IconUmbrella.svg":()=>Promise.resolve().then(()=>require("./IconUmbrella-81fdaa63.cjs")),"../assets/svg/icons/IconVerified.svg":()=>Promise.resolve().then(()=>require("./IconVerified-b71255f2.cjs")),"../assets/svg/icons/IconVideocam.svg":()=>Promise.resolve().then(()=>require("./IconVideocam-f5b07935.cjs")),"../assets/svg/icons/IconViewInAr.svg":()=>Promise.resolve().then(()=>require("./IconViewInAr-a583aff8.cjs")),"../assets/svg/icons/IconVisibility.svg":()=>Promise.resolve().then(()=>require("./IconVisibility-4984bcac.cjs")),"../assets/svg/icons/IconVolumeOff.svg":()=>Promise.resolve().then(()=>require("./IconVolumeOff-35d350ee.cjs")),"../assets/svg/icons/IconVolumeOn.svg":()=>Promise.resolve().then(()=>require("./IconVolumeOn-386ad18b.cjs")),"../assets/svg/icons/IconWarehouse.svg":()=>Promise.resolve().then(()=>require("./IconWarehouse-23085045.cjs")),"../assets/svg/icons/IconWarning.svg":()=>Promise.resolve().then(()=>require("./IconWarning-54f3a9ac.cjs")),"../assets/svg/icons/IconWater.svg":()=>Promise.resolve().then(()=>require("./IconWater-0b57b8cc.cjs")),"../assets/svg/icons/IconWeight.svg":()=>Promise.resolve().then(()=>require("./IconWeight-c6ddd367.cjs")),"../assets/svg/icons/IconWidth.svg":()=>Promise.resolve().then(()=>require("./IconWidth-a556befc.cjs")),"../assets/svg/icons/IconWorkspacePremium.svg":()=>Promise.resolve().then(()=>require("./IconWorkspacePremium-bc3aeb0c.cjs")),"../assets/svg/icons/IconWrench.svg":()=>Promise.resolve().then(()=>require("./IconWrench-bd1d2907.cjs")),"../assets/svg/icons/IconYoutube.svg":()=>Promise.resolve().then(()=>require("./IconYoutube-ed951c21.cjs"))}),`../assets/svg/icons/Icon${i}.svg`));r.value=e.markRaw(l)},{immediate:!0}),(s,i)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-icon",n.size])},[r.value?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(r.value),{key:0,class:e.normalizeClass([e.unref(t).DISPLAY.BLOCK]),"data-icon":s.icon,fill:"currentColor"},null,8,["class","data-icon"])):e.createCommentVNode("",!0)],2))}});const h={ACCOUNT_BALANCE:"account-balance",ACUTE:"acute",ADD:"add",AI_DESCRIPTION:"ai-description",ALIGN_SPACE_EVEN:"align-space-even",APPLE_PAY:"apple-pay",ARROW_BACK:"arrow-back",ARROW_CYCLE:"arrow-cycle",ARROW_FORWARD:"arrow-forward",ARROW_RIGHT:"arrow-right",ASSIGNMENT:"assignment",ATTACH_MONEY:"attach-money",AUTO_RENEW:"auto-renew",AWARD_STAR:"award-star",BED:"bed",BOLT:"bolt",BOOKMARK:"bookmark",BUNKHOUSE:"bunkhouse",CALENDAR_MONTH:"calendar-month",CALL:"call",CALL_QUALITY:"call-quality",CAR_RENTAL:"car-rental",CHECK:"check",CHEVRON_LEFT:"chevron-left",CHEVRON_RIGHT:"chevron-right",CLEAR:"clear",CLOSE:"close",CONTRACT:"contract",CRASH:"crash",DASHBOARD_CUSTOMIZE:"dashboard-customize",DELETE:"delete",DIAMOND:"diamond",DIRECTIONS_BOAT:"directions-boat",DOMAIN:"domain",DRAFT:"draft",EDIT:"edit",ENGINE:"engine",ENGINEERING:"engineering",ERROR:"error",EXPAND_CONTENT:"expand-content",EXPAND_LESS:"expand-less",EXPAND_MORE:"expand-more",FACEBOOK:"facebook",FAVORITE:"favorite",FAVORITE_FILLED:"favorite-filled",FLAG:"flag",FORMAT_BOLD:"format-bold",FORMAT_ITALIC:"format-italic",FORMAT_LIST_BULLETED:"format-list-bulleted",FORUM:"forum",GAS:"gas",GAVEL:"gavel",GEARS:"gears",GLOBE_LOCATION_PIN:"globe-location-pin",GOOGLE:"google",GOOGLE_PAY:"google-pay",GRID:"grid",HANDSHAKE:"handshake",HANDYMAN:"handyman",HEIGHT:"height",HELP:"help",INFO:"info",INFORMATION:"information",INSERT_TEXT:"insert-text",INSTAGRAM:"instagram",IOS_SHARE:"ios-share",LAYOUT:"layout",LEVELLING_JACK:"levelling-jack",LINKED_IN:"linked in",LOCAL_SHIPPING:"local-shipping",LOCK:"lock",MAIL:"mail",MENU:"menu",MONEY_BAG:"money-bag",MORE_HORIZ:"more-horiz",NOTIFICATIONS:"notifications",ODOMETER:"odometer",OPEN_IN_NEW:"open-in-new",PALETTE:"palette",PAYPAL:"paypal",PERSON:"person",PERSON_SEARCH:"person-search",PHOTO_CAMERA:"photo-camera",PINTEREST:"pinterest",PLAY_ARROW:"play-arrow",POLICY:"policy",POWER:"power",POWER_OFF:"power-off",PRIORITY_HIGH:"priority-high",REMOVE:"remove",REQUEST_QUOTE:"request-quote",RESET_WRENCH:"reset-wrench",ROAD:"road",ROUNDED_CORNER:"rounded-corner",RULER:"ruler",SAILING:"sailing",SCHOOL:"school",SEARCH:"search",SEATING:"seating",SELL:"sell",SENSORS:"sensors",SETTINGS:"settings",SHARE:"share",SHIELD_CHECK:"shield-check",SHOPPING_CART:"shopping-cart",SLEEPS:"sleeps",SMS:"sms",SNOWFLAKE:"snowflake",STAR:"star",SUMMARIZE:"summarize",SWAP_HORIZ:"swap-horiz",SWAP_VERT:"swap-vert",THREE_D_ROTATION:"three-d-rotation",THUMB_UP:"thumb-up",TRENDING_DOWN:"trending-down",TROPHY:"trophy",TUNE:"tune",TWITTER:"twitter",UMBRELLA:"umbrella",VERIFIED:"verified",VIDEOCAM:"videocam",VIEW_IN_AR:"view-in-ar",VISIBILITY:"visibility",VOLUME_OFF:"volume-off",VOLUME_ON:"volume-on",WAREHOUSE:"warehouse",WARNING:"warning",WATER:"water",WEIGHT:"weight",WIDTH:"width",WORKSPACE_PREMIUM:"workspace-premium",WRENCH:"wrench",YOUTUBE:"youtube"},Ot={ATV:{ATV:"atv-atv",DUNE_BUGGY:"atv-dune-buggy",GOLF_CART:"atv-golf-cart",GO_KART:"atv-go-kart",SAND_RAIL:"atv-sand-rail",SIDE_BY_SIDE:"atv-side-by-side",TRAILER:"atv-trailer"},BOATMART:{PWC:"boatmart-pwc",TRAILER:"boatmart-trailer"},RV:{CLASS_A:"rv-class-a",CLASS_B:"rv-class-b",CLASS_C:"rv-class-c",FIFTH_WHEEL:"rv-fifth-wheel",FISH_HOUSE:"rv-fish-house",PARK_MODEL:"rv-park-model",POP_UP_CAMPER:"rv-pop-up-camper",TRAVEL_TRAILER:"rv-travel-trailer",TRUCK_CAMPER:"rv-truck-camper"}},Rt={class:"tide-accordion-item"},vt=e.defineComponent({__name:"TideAccordionItem",props:{hasBottomDivider:{type:Boolean,default:!1},hasTopDivider:{type:Boolean,default:!1},isExpanded:{type:Boolean,default:!1},isOptional:{type:Boolean,default:!1},label:{default:""}},emits:["toggle"],setup(o,{emit:n}){const r=o,s=()=>{n("toggle")};return(i,c)=>(e.openBlock(),e.createElementBlock("div",Rt,[r.hasTopDivider?(e.openBlock(),e.createBlock(Ae,{key:0})):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass(["tide-accordion-head",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.BETWEEN,e.unref(t).PADDING.Y.HALF,e.unref(t).CURSOR.POINTER]),onClick:s},[e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).FONT.ROLE.LABEL_1_SEMIBOLD])},[e.createElementVNode("span",null,e.toDisplayString(r.label),1),r.isOptional?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass([e.unref(t).FONT.COLOR.SURFACE.VARIANT])}," (optional) ",2)):e.createCommentVNode("",!0)],2),e.createVNode(_,{icon:i.isExpanded?e.unref(h).EXPAND_LESS:e.unref(h).EXPAND_MORE,size:e.unref(C).LARGE},null,8,["icon","size"])],2),e.createElementVNode("div",{class:e.normalizeClass(["tide-accordion-body",r.isExpanded?"expanded":"collapsed",e.unref(t).DISPLAY.GRID])},[e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).OVERFLOW.Y.HIDDEN,e.unref(t).MARGIN.Y.ONE,e.unref(t).FONT.ROLE.BODY_1,e.unref(t).FONT.COLOR.SURFACE.DEFAULT])},[e.renderSlot(i.$slots,"default",{},void 0,!0)],2)],2),r.hasBottomDivider?(e.openBlock(),e.createBlock(Ae,{key:1})):e.createCommentVNode("",!0)]))}});const F=(o,n)=>{const r=o.__vccOpts||o;for(const[s,i]of n)r[s]=i;return r},Tt=F(vt,[["__scopeId","data-v-d5fdff3b"]]),D={BUTTON:"button",LINK:"a"},W={BUTTON:"button",DIV:"div",LINK:"a"},B={PRIMARY:"primary",SECONDARY:"secondary",TERTIARY:"tertiary",QUATERNARY:"quaternary",FLOATING:"floating"},b={BLANK:"_blank",SELF:void 0},H=e.defineComponent({__name:"TideButtonIcon",props:{disabled:{type:Boolean,default:!1},element:{default:D.BUTTON},href:{default:void 0},icon:{default:void 0},isNewTab:{type:Boolean,default:!1},priority:{default:B.PRIMARY}},setup(o){const n=o;return(r,s)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(n.element===e.unref(D).LINK?"a":"button"),{"aria-label":n.icon,class:e.normalizeClass([n.element===e.unref(D).LINK?"tide-link-as-button-icon":"tide-button-icon",n.priority&&`tide-button-${n.priority}`,[e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.CENTER,e.unref(t).AXIS2.CENTER,e.unref(t).BORDER.RADIUS.FULL,e.unref(t).PADDING.FULL.HALF],n.element===e.unref(D).LINK?[e.unref(t).UNDERLINE.OFF]:""]),disabled:n.element===e.unref(D).BUTTON&&n.disabled,href:n.element===e.unref(D).LINK&&n.href?n.href:void 0,target:n.element===e.unref(D).LINK&&n.isNewTab?e.unref(b).BLANK:e.unref(b).SELF},{default:e.withCtx(()=>[n.icon?(e.openBlock(),e.createBlock(_,{key:0,icon:n.icon,size:e.unref(C).LARGE},null,8,["icon","size"])):e.createCommentVNode("",!0)]),_:1},8,["aria-label","class","disabled","href","target"]))}}),P={ERROR:"error",INFO:"info",SUCCESS:"success",WARNING:"warning"},It=e.defineComponent({__name:"TideAlert",props:{heading:{default:void 0},isToast:{type:Boolean,default:!1},type:{default:P.INFO}},setup(o){const n=o,r=e.computed(()=>{let s=h.INFO;switch(n.type){case P.ERROR:s=h.ERROR;break;default:case P.INFO:s=h.INFO;break;case P.SUCCESS:s=h.CHECK;break;case P.WARNING:s=h.WARNING;break}return s});return(s,i)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass([n.type,"tide-alert",e.unref(t).DISPLAY.GRID,e.unref(t).AXIS2.CENTER,e.unref(t).BORDER.RADIUS.HALF,e.unref(t).PADDING.FULL.ONE,n.type===e.unref(P).ERROR&&e.unref(t).BG.GLOBAL.SURFACE.ERROR,n.type===e.unref(P).INFO&&e.unref(t).BG.GLOBAL.SURFACE.INFO,n.type===e.unref(P).SUCCESS&&e.unref(t).BG.GLOBAL.SURFACE.SUCCESS,n.type===e.unref(P).WARNING&&e.unref(t).BG.GLOBAL.SURFACE.WARNING,n.isToast?e.unref(t).SHADOW.BOTTOM:""])},[e.createElementVNode("div",{class:e.normalizeClass(["tide-alert-icon",e.unref(t).PADDING.FULL.HALF,e.unref(t).BORDER.RADIUS.FULL,e.unref(t).FONT.COLOR.SURFACE.INVERSE,n.type===e.unref(P).ERROR&&e.unref(t).BG.GLOBAL.PRIMARY.ERROR,n.type===e.unref(P).INFO&&e.unref(t).BG.GLOBAL.PRIMARY.INFO,n.type===e.unref(P).SUCCESS&&e.unref(t).BG.GLOBAL.PRIMARY.SUCCESS,n.type===e.unref(P).WARNING&&e.unref(t).BG.GLOBAL.PRIMARY.WARNING])},[e.createVNode(_,{icon:r.value},null,8,["icon"])],2),e.createElementVNode("div",{class:e.normalizeClass(["tide-alert-heading",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER])},[e.createElementVNode("h2",{class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_1_SEMIBOLD,e.unref(t).FONT.COLOR.SURFACE.DEFAULT])},e.toDisplayString(n.heading),3)],2),e.createVNode(H,{class:e.normalizeClass(["tide-alert-close",e.unref(t).AXIS2.CENTER,e.unref(t).FONT.COLOR.SURFACE.DEFAULT]),icon:e.unref(h).CLOSE,priority:e.unref(B).QUATERNARY,"aria-label":"Close alert"},null,8,["class","icon","priority"]),e.createElementVNode("div",{class:e.normalizeClass(["tide-alert-body",e.unref(t).FONT.ROLE.LABEL_1,e.unref(t).FONT.COLOR.SURFACE.VARIANT])},[e.renderSlot(s.$slots,"default",{},void 0,!0)],2)],2))}});const At=F(It,[["__scopeId","data-v-e15788b8"]]),Lt=e.defineComponent({__name:"TideBadge",props:{iconLeading:{default:void 0},isFloating:{type:Boolean,default:!1},label:{}},setup(o){const n=o;return(r,s)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-badge",n.isFloating?[e.unref(t).BG.SURFACE.FLOATING,e.unref(t).SHADOW.BOTTOM]:[e.unref(t).BG.SURFACE.VARIANT],e.unref(t).DISPLAY.INLINE_FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.QUARTER,e.unref(t).BORDER.RADIUS.QUARTER,e.unref(t).PADDING.Y.QUARTER,e.unref(t).PADDING.X.HALF,e.unref(t).FONT.ROLE.LABEL_2])},[n.iconLeading?(e.openBlock(),e.createBlock(_,{key:0,icon:n.iconLeading},null,8,["icon"])):e.createCommentVNode("",!0),e.createTextVNode(" "+e.toDisplayString(n.label),1)],2))}}),qe={YEARS_10:"10",YEARS_15:"15",YEARS_5:"5"},pt={class:e.normalizeClass([])},Nt=e.defineComponent({__name:"TideBadgeTrustedPartner",props:{years:{default:qe.YEARS_5}},setup(o){const n=o;return(r,s)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-badge-trusted-partner",e.unref(t).FONT.COLOR.SURFACE.BRAND,e.unref(t).DISPLAY.INLINE_FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.QUARTER,e.unref(t).PADDING.Y.QUARTER,e.unref(t).PADDING.X.HALF,e.unref(t).FONT.ROLE.LABEL_2])},[e.createVNode(_,{icon:e.unref(h).AWARD_STAR},null,8,["icon"]),e.createElementVNode("div",pt,[e.createElementVNode("span",null,e.toDisplayString(n.years)+" year trusted partner",1)])],2))}}),gt=["data-track","href"],ht=["data-track"],_t={key:0},St=e.defineComponent({__name:"TideBreadCrumbs",props:{breadCrumbs:{default:void 0}},setup(o){const n=o;return(r,s)=>(e.openBlock(),e.createElementBlock("ul",{class:e.normalizeClass(["tide-bread-crumbs",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.QUARTER,e.unref(t).LIST_BULLETS.OFF])},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.breadCrumbs,(i,c)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:i.label},[e.createElementVNode("li",{class:e.normalizeClass([e.unref(t).FONT.ROLE.BODY_2])},[i.url?(e.openBlock(),e.createElementBlock("a",{key:0,class:e.normalizeClass([e.unref(t).FONT.ROLE.LINK_2,e.unref(t).FONT.COLOR.SURFACE.DEFAULT]),"data-track":i.dataTrack||void 0,href:i.url},e.toDisplayString(i.label),11,gt)):(e.openBlock(),e.createElementBlock("span",{key:1,class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_2,e.unref(t).FONT.COLOR.SURFACE.VARIANT]),"data-track":i.dataTrack||void 0},e.toDisplayString(i.label),11,ht))],2),n.breadCrumbs&&c<n.breadCrumbs.length-1?(e.openBlock(),e.createElementBlock("li",_t,[e.createVNode(_,{icon:e.unref(h).ARROW_RIGHT,size:e.unref(C).SMALL},null,8,["icon","size"])])):e.createCommentVNode("",!0)],64))),128))],2))}}),Dt=e.defineComponent({__name:"TideButton",props:{disabled:{type:Boolean,default:!1},element:{default:D.BUTTON},href:{default:void 0},iconLeading:{default:void 0},iconTrailing:{default:void 0},isNewTab:{type:Boolean,default:!1},label:{default:void 0},priority:{default:B.PRIMARY},size:{default:K.LARGE}},setup(o){const n=o;return(r,s)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(n.element===e.unref(D).LINK?e.unref(D).LINK:e.unref(D).BUTTON),{class:e.normalizeClass(["tide-button",n.priority&&`tide-button-${n.priority}`,n.element===e.unref(D).LINK?[e.unref(t).DISPLAY.INLINE_FLEX]:[e.unref(t).DISPLAY.FLEX],n.element===e.unref(D).LINK?e.unref(t).UNDERLINE.OFF:"",r.size===e.unref(K).SMALL&&[e.unref(t).FONT.ROLE.BUTTON_2,e.unref(t).PADDING.X.ONE,e.unref(t).PADDING.Y.HALF],r.size===e.unref(K).LARGE&&[e.unref(t).FONT.ROLE.BUTTON_1,e.unref(t).PADDING.X.TWO,e.unref(t).PADDING.Y.ONE],e.unref(t).AXIS1.CENTER,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).BORDER.RADIUS.HALF,e.unref(t).FONT.ROLE.LABEL_1_SEMIBOLD]),disabled:n.element===e.unref(D).BUTTON&&n.disabled,href:n.element===e.unref(D).LINK&&n.href?n.href:void 0,target:n.element===e.unref(D).LINK&&n.isNewTab?e.unref(b).BLANK:e.unref(b).SELF},{default:e.withCtx(()=>[n.iconLeading?(e.openBlock(),e.createBlock(_,{key:0,icon:n.iconLeading,size:r.size===e.unref(K).LARGE?e.unref(C).LARGE:e.unref(C).SMALL},null,8,["icon","size"])):e.createCommentVNode("",!0),e.createTextVNode(" "+e.toDisplayString(n.label)+" ",1),n.iconTrailing?(e.openBlock(),e.createBlock(_,{key:1,icon:n.iconTrailing,size:r.size===e.unref(K).LARGE?e.unref(C).LARGE:e.unref(C).SMALL},null,8,["icon","size"])):e.createCommentVNode("",!0)]),_:1},8,["class","disabled","href","target"]))}}),Ft=e.defineComponent({__name:"TideButtonPagination",props:{disabled:{type:Boolean,default:!1},element:{default:W.BUTTON},href:{default:void 0},label:{default:void 0}},setup(o){const n=o;return(r,s)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(n.element===e.unref(W).LINK?"a":n.element===e.unref(W).BUTTON?"button":"div"),{class:e.normalizeClass([n.element===e.unref(W).LINK?"tide-link-as-button-icon":"tide-button-icon",[e.unref(t).DISPLAY.INLINE_BLOCK,e.unref(t).BORDER.RADIUS.FULL,e.unref(t).PADDING.FULL.HALF],n.element===e.unref(W).LINK?[e.unref(t).UNDERLINE.OFF]:"",n.element===e.unref(W).DIV?[e.unref(t).CURSOR.POINTER]:"",[e.unref(t).FONT.ROLE.HEADLINE_3]]),disabled:n.element===e.unref(W).BUTTON&&n.disabled,href:n.element===e.unref(W).LINK&&n.href?n.href:void 0},{default:e.withCtx(()=>[e.createElementVNode("span",{class:e.normalizeClass(["label",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.CENTER,e.unref(t).AXIS2.CENTER])},e.toDisplayString(n.label),3)]),_:1},8,["class","disabled","href"]))}});const $e=F(Ft,[["__scopeId","data-v-f6d8e4e9"]]),Ct=["data-track","onClick"],Pt=e.defineComponent({__name:"TideButtonSegmented",props:{activeTab:{default:0},tabs:{}},emits:["change"],setup(o,{emit:n}){const r=o,s=i=>{n("change",i)};return(i,c)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-button-segmented",e.unref(t).BG.SURFACE.VARIANT,e.unref(t).DISPLAY.FLEX,e.unref(t).GAP.QUARTER,e.unref(t).BORDER.RADIUS.FULL,e.unref(t).PADDING.FULL.QUARTER,e.unref(t).OVERFLOW.XY.HIDDEN,e.unref(t).WIDTH.FULL])},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.tabs,(a,l)=>(e.openBlock(),e.createElementBlock("button",{class:e.normalizeClass(["tide-button-segmented-tab",l===i.activeTab?[e.unref(t).BG.SURFACE.DEFAULT,e.unref(t).FONT.COLOR.SURFACE.DEFAULT,e.unref(t).SHADOW.BOTTOM]:["inactive",e.unref(t).FONT.COLOR.SURFACE.VARIANT],e.unref(t).FLEX.GROW.ON,e.unref(t).BORDER.FULL.TWO,e.unref(t).BORDER.RADIUS.FULL,e.unref(t).PADDING.Y.QUARTER,e.unref(t).WIDTH.FULL,e.unref(t).FONT.ROLE.BUTTON_1,e.unref(t).WHITESPACE_WRAP.OFF]),"data-track":a.dataTrack||void 0,key:a.label,onClick:u=>s(l)},[e.createElementVNode("span",{class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_2_SEMIBOLD])},e.toDisplayString(a.label),3),a.count&&a.count>0?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_2_SEMIBOLD])}," ("+e.toDisplayString(a.count)+") ",3)):e.createCommentVNode("",!0)],10,Ct))),128))],2))}});const Bt=F(Pt,[["__scopeId","data-v-4e385d0b"]]),se={ACTIONABLE:"action",INFORMATIONAL:"informational",SELECTABLE:"select"},yt=e.defineComponent({__name:"TideCard",props:{description:{default:void 0},heading:{},icon:{default:void 0},selected:{type:Boolean,default:void 0},type:{default:se.INFORMATIONAL},href:{default:void 0}},setup(o){return(n,r)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(n.href?"a":n.type===e.unref(se).INFORMATIONAL?"div":"button"),{class:e.normalizeClass(["tide-card",e.unref(t).BORDER.COLOR.LOW,e.unref(t).BORDER.FULL.ONE,e.unref(t).BORDER.RADIUS.HALF,e.unref(t).DISPLAY.FLEX,e.unref(t).GAP.HALF,e.unref(t).PADDING.FULL.ONE,e.unref(t).WIDTH.FULL,e.unref(t).ALIGN.X.LEFT,e.unref(t).FLEX.DIRECTION.COLUMN,n.type!==e.unref(se).INFORMATIONAL&&"hoverable",n.type===e.unref(se).SELECTABLE&&n.selected&&"selected"]),href:n.href},{default:e.withCtx(()=>[n.icon?(e.openBlock(),e.createBlock(_,{key:0,class:e.normalizeClass([e.unref(t).FLEX.GROW.OFF,e.unref(t).FLEX.SHRINK.OFF]),icon:n.icon,size:e.unref(C).SMALL},null,8,["class","icon","size"])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).AXIS2.START,e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).GAP.HALF])},[e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_1_SEMIBOLD,e.unref(t).FONT.COLOR.SURFACE.DEFAULT])},e.toDisplayString(n.heading),3),n.description?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_2,e.unref(t).FONT.COLOR.SURFACE.VARIANT])},e.toDisplayString(n.description),3)):e.createCommentVNode("",!0)],2)]),_:1},8,["class","href"]))}});const Ut=F(yt,[["__scopeId","data-v-98f24c4f"]]),bt=e.defineComponent({__name:"TideCarousel",props:{isFloating:{type:Boolean,default:!1},isHideawayButtons:{type:Boolean,default:!0},isTouchscreen:{type:Boolean,default:void 0},subtitle:{default:void 0},title:{default:void 0}},emits:["change"],setup(o,{emit:n}){const r=o,s=e.ref(),i=e.ref(),c=e.ref(),a=e.ref(),l=e.ref(0),u=e.ref(),d=e.ref(),f=e.ref(),E=e.ref(),R=e.ref(),m=()=>{const A=Array.from(s.value.children).map(p=>p.offsetLeft);if(A.length===0)return;const g=A.reduce((p,S)=>Math.abs(S-i.value.scrollLeft)<Math.abs(p-i.value.scrollLeft)?S:p);l.value=A.indexOf(g)},I=()=>{c.value=i.value.scrollLeft+i.value.clientWidth,a.value=s.value.scrollWidth,u.value=i.value.clientWidth,d.value=a.value>u.value,f.value=c.value===a.value,E.value=i.value.scrollWidth-i.value.clientWidth,R.value=d.value&&!r.isTouchscreen,m()},L=()=>{I()},O=A=>{i.value.scrollTo({behavior:"smooth",left:s.value.children[A].offsetLeft})},T=()=>{c.value>a.value?i.value.scrollTo({behavior:"smooth",left:a}):f.value||O(l.value+1)},v=()=>{l.value===0||O(l.value-1)};return e.onMounted(()=>{I(),window.addEventListener("resize",I)}),e.onUnmounted(()=>{window.removeEventListener("resize",I)}),e.onUpdated(()=>{I()}),e.watch(l,()=>{n("change",l.value)}),(A,g)=>(e.openBlock(),e.createElementBlock("section",{class:e.normalizeClass(["tide-carousel",e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).GAP.TWO,e.unref(t).WIDTH.MAX_FULL]),ref:"carouselRef"},[!r.isFloating&&(R.value||r.title)?(e.openBlock(),e.createElementBlock("section",{key:0,class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,r.title?e.unref(t).AXIS1.BETWEEN:e.unref(t).AXIS1.END,e.unref(t).AXIS2.CENTER,e.unref(t).WIDTH.FULL])},[r.title||r.subtitle?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.ONE])},[r.title?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass([e.unref(t).FONT.ROLE.DISPLAY_1])},e.toDisplayString(r.title),3)):e.createCommentVNode("",!0),r.subtitle?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_2,e.unref(t).FONT.COLOR.SURFACE.VARIANT])},e.toDisplayString(r.subtitle),3)):e.createCommentVNode("",!0)],2)):e.createCommentVNode("",!0),R.value?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.ONE])},[e.createVNode(H,{disabled:l.value===0,icon:e.unref(h).CHEVRON_LEFT,priority:e.unref(B).TERTIARY,onClick:v},null,8,["disabled","icon","priority"]),e.createVNode(H,{disabled:f.value,icon:e.unref(h).CHEVRON_RIGHT,priority:e.unref(B).TERTIARY,onClick:T},null,8,["disabled","icon","priority"])],2)):e.createCommentVNode("",!0)],2)):e.createCommentVNode("",!0),e.renderSlot(A.$slots,"misc",{},void 0,!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).POSITION.RELATIVE])},[e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).SCROLLBAR.OFF,e.unref(t).SNAP.ON,e.unref(t).OVERFLOW.X.SCROLL,e.unref(t).WIDTH.FULL]),ref_key:"frameRef",ref:i,onScroll:L},[e.createElementVNode("ul",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).GAP.ONE,e.unref(t).LIST_BULLETS.OFF]),ref_key:"contentRef",ref:s},[e.renderSlot(A.$slots,"default",{},void 0,!0)],2)],34),A.isFloating&&R.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["tide-carousel-button-overlay",e.unref(t).POSITION.ABSOLUTE,e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.BETWEEN,e.unref(t).AXIS2.CENTER,e.unref(t).WIDTH.FULL,e.unref(t).HEIGHT.FULL,e.unref(t).POINTER_EVENTS.OFF,r.isHideawayButtons?"hideaway":""])},[e.createVNode(H,{class:e.normalizeClass([e.unref(t).MARGIN.LEFT.ONE,e.unref(t).POINTER_EVENTS.ON]),disabled:l.value===0,icon:e.unref(h).CHEVRON_LEFT,priority:e.unref(B).QUATERNARY,onClick:v},null,8,["class","disabled","icon","priority"]),e.createVNode(H,{class:e.normalizeClass([e.unref(t).MARGIN.RIGHT.ONE,e.unref(t).POINTER_EVENTS.ON]),disabled:f.value,icon:e.unref(h).CHEVRON_RIGHT,priority:e.unref(B).QUATERNARY,onClick:T},null,8,["class","disabled","icon","priority"])],2)):e.createCommentVNode("",!0)],2)],2))}});const kt=F(bt,[["__scopeId","data-v-fa6ae48f"]]),Gt=["href","target"],wt=e.defineComponent({__name:"TideChipAction",props:{href:{},isNewTab:{type:Boolean,default:!1},label:{}},setup(o){const n=o;return(r,s)=>(e.openBlock(),e.createElementBlock("a",{class:e.normalizeClass(["tide-chip-action",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).BORDER.FULL.ONE,e.unref(t).BORDER.RADIUS.FULL,e.unref(t).PADDING.X.ONE,e.unref(t).PADDING.Y.HALF,e.unref(t).BG.SURFACE.DEFAULT,e.unref(t).FONT.ROLE.LINK_2,e.unref(t).FONT.COLOR.SURFACE.DEFAULT,e.unref(t).UNDERLINE.OFF]),href:n.href,target:n.isNewTab?e.unref(b).BLANK:e.unref(b).SELF},[e.createVNode(_,{icon:e.unref(h).SEARCH},null,8,["icon"]),e.createElementVNode("span",null,e.toDisplayString(n.label),1)],10,Gt))}});const Ht=F(wt,[["__scopeId","data-v-7e30d2ca"]]),Mt=e.defineComponent({__name:"TideChipFilter",props:{isActive:{type:Boolean},label:{}},setup(o){const n=o;return(r,s)=>(e.openBlock(),e.createElementBlock("button",{class:e.normalizeClass(["tide-chip-filter",n.isActive?[e.unref(t).BG.SECONDARY,e.unref(t).FONT.COLOR.SECONDARY]:[e.unref(t).BG.SURFACE.VARIANT,e.unref(t).FONT.COLOR.SURFACE.DEFAULT],e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).BORDER.FULL.ONE,e.unref(t).BORDER.RADIUS.FULL,e.unref(t).PADDING.X.ONE,e.unref(t).PADDING.Y.HALF,e.unref(t).FONT.ROLE.LABEL_2,n.isActive?"active":""])},[e.renderSlot(r.$slots,"default",{},void 0,!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.CENTER,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF])},[e.createElementVNode("span",{class:e.normalizeClass([n.isActive?"":"icon-spacing",e.unref(t).FONT.ROLE.LABEL_1,e.unref(t).WHITESPACE_WRAP.OFF])},e.toDisplayString(n.label),3)],2)],2))}});const Vt=F(Mt,[["__scopeId","data-v-6ddce1c2"]]),xt=e.defineComponent({__name:"TideChipInput",props:{label:{}},setup(o){const n=o;return(r,s)=>(e.openBlock(),e.createElementBlock("button",{class:e.normalizeClass(["tide-chip-input",e.unref(t).BG.SURFACE.VARIANT,e.unref(t).FONT.COLOR.SURFACE,e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).BORDER.FULL.ONE,e.unref(t).BORDER.RADIUS.FULL,e.unref(t).PADDING.X.ONE,e.unref(t).PADDING.Y.HALF,e.unref(t).FONT.ROLE.LABEL_2])},[e.createElementVNode("span",null,e.toDisplayString(n.label),1),e.createVNode(_,{icon:e.unref(h).CLOSE},null,8,["icon"])],2))}});const Wt=F(xt,[["__scopeId","data-v-42611a29"]]),Xt={class:"tide-columns"},Yt={class:"tide-columns-column"},zt={class:"tide-columns-column"},qt={class:"tide-columns-column"},$t={class:"tide-columns-column"},Kt=e.defineComponent({__name:"TideColumns",props:{heading:{default:""}},setup(o){const n=o;return(r,s)=>(e.openBlock(),e.createElementBlock("section",Xt,[e.createElementVNode("h2",{class:e.normalizeClass([e.unref(t).MARGIN.BOTTOM.HALF])},e.toDisplayString(n.heading),3),e.createElementVNode("ul",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.WRAP,e.unref(t).GAP.TWO,e.unref(t).LIST_BULLETS.OFF])},[e.createElementVNode("li",Yt,[e.renderSlot(r.$slots,"section1",{},void 0,!0)]),e.createElementVNode("li",zt,[e.renderSlot(r.$slots,"section2",{},void 0,!0)]),e.createElementVNode("li",qt,[e.renderSlot(r.$slots,"section3",{},void 0,!0)]),e.createElementVNode("li",$t,[e.renderSlot(r.$slots,"section4",{},void 0,!0)])],2)]))}});const Zt=F(Kt,[["__scopeId","data-v-c92a6639"]]),Qt=["media","srcset"],jt=["alt","fetchpriority","loading","src"],ve="https://cdn-static.tilabs.io/marketplace/common/image-coming-soon.svg",Ke=e.defineComponent({__name:"TideImage",props:{alt:{default:""},height:{default:void 0},isLazy:{type:Boolean,default:!0},sources:{default:()=>[]},src:{default:void 0},width:{default:void 0}},setup(o){const n=o,r=e.ref(),s=e.ref(),i=()=>{var l,u;const c=(l=s.value)==null?void 0:l.currentSrc,a=(u=r.value)==null?void 0:u.querySelector(`source[srcset="${c}"]`);c&&a?a.srcset=ve:s.value&&(s.value.src=ve)};return(c,a)=>(e.openBlock(),e.createElementBlock("picture",{class:e.normalizeClass(["tide-image",e.unref(t).DISPLAY.BLOCK]),ref_key:"picture",ref:r,style:e.normalizeStyle(c.width||c.height?{width:c.width||void 0,height:c.height||void 0}:void 0)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.sources,l=>(e.openBlock(),e.createElementBlock("source",{key:l.srcset,media:`(min-width:${l.media}px)`,srcset:l.srcset},null,8,Qt))),128)),e.createElementVNode("img",{alt:c.alt,class:e.normalizeClass([e.unref(t).WIDTH.FULL,e.unref(t).HEIGHT.FULL,e.unref(t).OBJECT.CENTER,e.unref(t).OBJECT.COVER]),fetchpriority:c.isLazy?void 0:"high",loading:n.isLazy?"lazy":"eager",ref_key:"img",ref:s,src:c.src??ve,onError:i},null,42,jt)],6))}}),Jt=e.defineComponent({__name:"TideImageBackground",props:{alt:{default:""},isLazy:{type:Boolean,default:!0},sources:{default:()=>[]},src:{default:void 0}},setup(o){const n=o;return(r,s)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass([e.unref(t).POSITION.RELATIVE,e.unref(t).OVERFLOW.XY.HIDDEN,e.unref(t).ISOLATION.ISOLATE])},[e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).POSITION.ABSOLUTE,e.unref(t).HEIGHT.FULL,e.unref(t).WIDTH.FULL,e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.CENTER,e.unref(t).AXIS2.CENTER])},[e.createVNode(Ke,{class:e.normalizeClass(["tide-image-background",e.unref(t).WIDTH.FULL,e.unref(t).HEIGHT.FULL]),"is-lazy":n.isLazy,sources:n.sources,src:n.src,alt:"props.alt"},null,8,["class","is-lazy","sources","src"])],2),e.renderSlot(r.$slots,"default",{},void 0,!0)],2))}});const en=F(Jt,[["__scopeId","data-v-5875300e"]]),tn={key:0,class:e.normalizeClass(["tide-indicator-label"])},nn=e.defineComponent({__name:"TideIndicator",props:{label:{default:void 0}},setup(o){const n=o;return(r,s)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-indicator",n.label?"":"dot",e.unref(t).DISPLAY.INLINE_BLOCK,e.unref(t).ALIGN.X.CENTER,e.unref(t).BG.GLOBAL.PRIMARY.ERROR,e.unref(t).BORDER.RADIUS.FULL,n.label&&n.label.toString().length>1?[e.unref(t).PADDING.X.HALF]:[],n.label?[e.unref(t).POSITION.RELATIVE,e.unref(t).FONT.ROLE.LABEL_3,e.unref(t).FONT.COLOR.SURFACE.INVERSE]:[e.unref(t).BORDER.FULL.ONE]])},[n.label?(e.openBlock(),e.createElementBlock("div",tn,e.toDisplayString(n.label),1)):e.createCommentVNode("",!0)],2))}});const on=F(nn,[["__scopeId","data-v-d402ac82"]]),rn=["checked","disabled","name","id"],sn=["for"],an=e.defineComponent({__name:"TideInputCheckbox",props:{checked:{type:Boolean,default:!1},dataTrack:{default:""},disabled:{type:Boolean,default:!1},indeterminate:{type:Boolean,default:!1},inputId:{default:void 0},label:{default:void 0},name:{default:void 0},number:{default:void 0}},setup(o){const n=o,r=e.computed(()=>n.checked||n.indeterminate);return(s,i)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-input-checkbox",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).FONT.ROLE.BODY_1,s.disabled?["disabled",e.unref(t).POINTER_EVENTS.OFF]:e.unref(t).CURSOR.POINTER])},[e.createElementVNode("input",{checked:r.value,class:e.normalizeClass([e.unref(t).DISPLAY.NONE]),disabled:n.disabled,name:n.name,ref:"input",onClick:i[0]||(i[0]=e.withModifiers(()=>{},["prevent"])),id:n.inputId,type:"checkbox"},null,10,rn),e.createElementVNode("div",{class:e.normalizeClass(["tide-input-checkbox-custom",e.unref(t).POSITION.RELATIVE,e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.CENTER,e.unref(t).AXIS2.CENTER,e.unref(t).FLEX.SHRINK.OFF,e.unref(t).BORDER.FULL.ONE,r.value?[e.unref(t).BORDER.COLOR.HIGH,e.unref(t).BG.SECONDARY]:[e.unref(t).BORDER.COLOR.DEFAULT,e.unref(t).BG.SURFACE.DEFAULT],e.unref(t).BORDER.RADIUS.QUARTER,r.value&&"checked",s.disabled?e.unref(t).CURSOR.NOT_ALLOWED:e.unref(t).CURSOR.POINTER])},[r.value?(e.openBlock(),e.createBlock(_,{key:0,class:e.normalizeClass([e.unref(t).FONT.COLOR.SECONDARY]),icon:n.indeterminate?e.unref(h).REMOVE:e.unref(h).CHECK,size:e.unref(C).SMALL},null,8,["class","icon","size"])):e.createCommentVNode("",!0)],2),s.label?(e.openBlock(),e.createElementBlock("label",{key:0,class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).GAP.HALF,e.unref(t).FONT.ROLE.BODY_1,s.disabled?e.unref(t).CURSOR.NOT_ALLOWED:e.unref(t).CURSOR.POINTER]),for:n.inputId,onClick:i[1]||(i[1]=e.withModifiers(()=>{},["prevent"]))},[e.createElementVNode("span",null,e.toDisplayString(s.label),1),n.number?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass([e.unref(t).FONT.COLOR.SURFACE.VARIANT])}," ("+e.toDisplayString(e.unref(Ne)(n.number))+") ",3)):e.createCommentVNode("",!0)],10,sn)):e.createCommentVNode("",!0)],2))}});const ln=F(an,[["__scopeId","data-v-4e880909"]]),cn=["checked","id"],un=["for"],dn=e.defineComponent({__name:"TideInputRadio",props:{checked:{type:Boolean,default:!1},dataTrack:{default:""},disabled:{type:Boolean,default:!1},inputId:{default:void 0},label:{default:void 0},name:{}},setup(o){const n=o,r=e.ref(n.checked);return e.watch(()=>n.checked,(s,i)=>{(s!==i||s!==r.value)&&(r.value=s)}),(s,i)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-input-radio",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).POINTER_EVENTS.OFF,n.disabled&&"disabled"])},[e.createElementVNode("input",{checked:r.value,class:e.normalizeClass([e.unref(t).DISPLAY.NONE]),id:n.inputId,name:"",type:"radio",value:""},null,10,cn),e.createElementVNode("div",{class:e.normalizeClass(["tide-input-radio-custom",e.unref(t).POSITION.RELATIVE,e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.CENTER,e.unref(t).AXIS2.CENTER,e.unref(t).BORDER.FULL.ONE,r.value?e.unref(t).BORDER.COLOR.HIGH:e.unref(t).BORDER.COLOR.DEFAULT,e.unref(t).BORDER.RADIUS.FULL,e.unref(t).BG.SURFACE.DEFAULT,e.unref(t).CURSOR.POINTER,e.unref(t).POINTER_EVENTS.ON,r.value&&"checked"])},[e.createElementVNode("div",{class:e.normalizeClass(["tide-input-radio-check",e.unref(t).BORDER.RADIUS.FULL,n.checked&&e.unref(t).BG.SECONDARY])},null,2)],2),e.createElementVNode("label",{class:e.normalizeClass([e.unref(t).FONT.ROLE.BODY_1,e.unref(t).CURSOR.POINTER,e.unref(t).POINTER_EVENTS.ON]),for:n.inputId},e.toDisplayString(n.label),11,un)],2))}});const fn=F(dn,[["__scopeId","data-v-4fd02dd8"]]),ge="Please enter a valid value.",En={message:"",valid:!0},oe=o=>n=>{let r=En;return n.trim().match(o)||(r={message:ge,valid:!1}),r},he=(o,n)=>typeof o=="string"&&o.length>0?o:typeof n=="string"&&n.length>0?n:ge,_e=(o,n)=>o!==!1||n!==!1,mn=({maxlength:o,minlength:n,required:r,value:s})=>{const i=s.length===0&&!r,c=o&&s.length>o;return!(!i&&n&&s.length<n)&&!c},Ze=({error:o,errorFromProps:n,maxlength:r,minlength:s,required:i=!1,validators:c,value:a})=>{if(o.value=n||!1,!o.value&&c){const l=Rn((a==null?void 0:a.value)||"",c);l.valid||(o.value=l.message)}if(!o.value&&(r||s)){const l=On({maxlength:r,minlength:s,required:i,value:(a==null?void 0:a.value)||""});l.valid||(o.value=l.message)}},On=({maxlength:o,minlength:n,required:r=!1,value:s})=>{const i={message:"",valid:!0};return i.valid=mn({maxlength:o,minlength:n,required:r,value:s}),i.valid||(i.message=ge,o&&n?i.message=`Please enter a value between ${n} and ${o} characters in length.`:o?i.message=`Please enter a value no more than ${o} characters in length.`:n&&(i.message=`Please enter a value no less than ${n} characters in length.`)),i};function Rn(o,n){for(const r of n){const s=r(o);if(!s.valid)return s}return{message:"",valid:!0}}const vn=["for"],Tn=["disabled","name","required","id"],In=["label"],An=["value"],Ln=["selected","value"],pn=["selected","value"],Nn=e.defineComponent({__name:"TideInputSelect",props:{inputId:{default:void 0},supportingText:{default:void 0},optgroups:{},options:{},disabled:{type:Boolean,default:!1},error:{type:[String,Boolean],default:!1},label:{default:void 0},name:{},required:{type:Boolean,default:!1},value:{default:void 0}},setup(o,{expose:n}){const r=o,s=e.ref(r.error),i=e.ref(!1),c=e.ref(null),a=e.ref(r.required),l=e.ref(r.value),u=e.computed(()=>he(r.error,s.value)),d=e.computed(()=>r.required?`${r.label} *`:r.label),f=e.computed(()=>r.required&&!l.value||_e(s.value,r.error)),E=e.computed(()=>i.value||!R.value),R=e.computed(()=>l.value===void 0),m=()=>{var T;const O=new MouseEvent("mousedown");(T=c==null?void 0:c.value)==null||T.dispatchEvent(O)},I=()=>{i.value=!0},L=()=>{i.value=!1};return e.watch(()=>r.value,(O,T)=>{(O!==T||O!==l.value)&&(l.value=O)}),n({error:s,value:l}),(O,T)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-input-select",e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).GAP.QUARTER,O.disabled&&"disabled",f.value&&"error"])},[e.createElementVNode("div",{class:e.normalizeClass(["tide-input-border",e.unref(t).POSITION.RELATIVE,e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).BORDER.RADIUS.HALF,e.unref(t).BG.SURFACE.DEFAULT,r.disabled?e.unref(t).CURSOR.NOT_ALLOWED:"",e.unref(t).OVERFLOW.XY.HIDDEN]),onClick:m},[e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).WIDTH.FULL])},[O.label?(e.openBlock(),e.createElementBlock("label",{key:0,class:e.normalizeClass([E.value?["minilabel",e.unref(t).FONT.ROLE.LABEL_3]:e.unref(t).FONT.ROLE.LABEL_1,e.unref(t).POSITION.ABSOLUTE,e.unref(t).POSITIONING.LEFT,e.unref(t).MARGIN.TOP.HALF,e.unref(t).MARGIN.LEFT.ONE,!f.value&&e.unref(t).FONT.COLOR.SURFACE.VARIANT,e.unref(t).POINTER_EVENTS.OFF]),for:r.inputId},e.toDisplayString(d.value),11,vn)):e.createCommentVNode("",!0),e.withDirectives(e.createElementVNode("select",{class:e.normalizeClass([e.unref(t).PADDING.BOTTOM.HALF,e.unref(t).PADDING.X.ONE,e.unref(t).WIDTH.FULL,O.disabled&&e.unref(t).CURSOR.NOT_ALLOWED,e.unref(t).FONT.ROLE.BODY_1]),disabled:O.disabled,name:O.name,ref_key:"input",ref:c,required:a.value,onFocus:I,onFocusout:L,id:r.inputId,"onUpdate:modelValue":T[0]||(T[0]=v=>l.value=v)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.optgroups,v=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[v.options?(e.openBlock(),e.createElementBlock("optgroup",{class:e.normalizeClass([e.unref(t).WIDTH.FULL,e.unref(t).BG.SURFACE.DEFAULT]),key:v.label,label:v.label},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(v.options,A=>(e.openBlock(),e.createElementBlock("option",{class:e.normalizeClass([e.unref(t).WIDTH.FULL,e.unref(t).BG.SURFACE.DEFAULT]),key:A.value,value:A.value},e.toDisplayString(A.label),11,An))),128))],10,In)):(e.openBlock(),e.createElementBlock("option",{class:e.normalizeClass([e.unref(t).WIDTH.FULL,e.unref(t).BG.SURFACE.DEFAULT]),key:v.value,selected:l.value===v.value?!0:void 0,value:v.value},e.toDisplayString(v.label),11,Ln))],64))),256)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(O.options,v=>(e.openBlock(),e.createElementBlock("option",{class:e.normalizeClass([e.unref(t).WIDTH.FULL,e.unref(t).BG.SURFACE.DEFAULT]),key:v.value,selected:l.value===v.value?!0:void 0,value:v.value},e.toDisplayString(v.label),11,pn))),128))],42,Tn),[[e.vModelSelect,l.value]])],2),e.createVNode(_,{class:e.normalizeClass([e.unref(t).POSITION.ABSOLUTE,e.unref(t).POSITIONING.RIGHT,e.unref(t).MARGIN.RIGHT.ONE,e.unref(t).POINTER_EVENTS.OFF]),icon:e.unref(h).EXPAND_MORE,size:e.unref(C).SMALL},null,8,["class","icon","size"])],2),r.supportingText||f.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.QUARTER])},[f.value?(e.openBlock(),e.createBlock(_,{key:0,class:e.normalizeClass([]),icon:e.unref(h).ERROR,size:e.unref(C).SMALL},null,8,["icon","size"])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_3])},e.toDisplayString(f.value?u.value:r.supportingText),3)],2)):e.createCommentVNode("",!0)],2))}});const gn=F(Nn,[["__scopeId","data-v-2da267e1"]]),Z={DATE:"date",DATETIME_LOCAL:"datetime-local",EMAIL:"email",MONTH:"month",NUMBER:"number",PASSWORD:"password",SEARCH:"search",TEL:"tel",TEXT:"text",TIME:"time",URL:"url",WEEK:"week"},hn=["for"],_n=["autocomplete","data-track","disabled","maxlength","minlength","name","required","type","id"],Sn=e.defineComponent({__name:"TideInputText",props:{autocomplete:{type:Boolean,default:!1},dataTrack:{default:""},disabled:{type:Boolean,default:!1},error:{type:[String,Boolean],default:!1},hasClear:{type:Boolean,default:!1},iconLeading:{default:void 0},inputId:{default:void 0},label:{default:void 0},maxlength:{default:void 0},minlength:{default:void 0},name:{},prefix:{default:void 0},required:{type:Boolean,default:!1},suffix:{default:void 0},supportingText:{default:void 0},transformValue:{type:Function,default:void 0},type:{default:Z.TEXT},validators:{default:void 0},value:{default:void 0}},setup(o,{expose:n}){const r=o,s=e.ref(r.error),i=e.ref(!1),c=e.ref(null),a=e.ref(!1),l=e.ref(r.value),u=e.computed(()=>he(r.error,s.value)),d=e.computed(()=>r.required&&r.label?`${r.label} *`:r.label),f=e.computed(()=>r.hasClear&&l.value),E=e.computed(()=>r.required&&l.value!==void 0&&!l.value||_e(s.value,r.error)),R=e.computed(()=>i.value||!m.value),m=e.computed(()=>l.value===""||l.value===void 0),I=e.computed(()=>r.type===Z.PASSWORD&&a.value===!0?Z.TEXT:r.type),L=()=>{var p;l.value="",(p=c.value)==null||p.focus()},O=()=>{i.value=!0},T=()=>{i.value=!1,l.value||(l.value=""),A()},v=()=>{var p,S;if(r.transformValue){const N=((S=(p=l.value)==null?void 0:p.match(/\d/g))==null?void 0:S.join(""))||void 0;l.value=N?r.transformValue(N):""}},A=()=>{Ze({error:s,errorFromProps:r.error,maxlength:r.maxlength,minlength:r.minlength,required:r.required,validators:r.validators,value:l})},g=p=>{l.value=p};return e.watch(()=>r.value,(p,S)=>{(p!==S||p!==l.value)&&(l.value=p)}),n({error:s,required:r.required,updateValue:g,value:l}),(p,S)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-input-text",e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).GAP.QUARTER,p.disabled&&"disabled",E.value&&"error"])},[e.createElementVNode("div",{class:e.normalizeClass(["tide-input-border",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).POSITION.RELATIVE,e.unref(t).BORDER.RADIUS.HALF,e.unref(t).BG.SURFACE.DEFAULT,f.value?[e.unref(t).PADDING.RIGHT.HALF,e.unref(t).PADDING.LEFT.ONE]:[e.unref(t).PADDING.X.ONE],e.unref(t).PADDING.Y.HALF,r.disabled?e.unref(t).CURSOR.NOT_ALLOWED:e.unref(t).CURSOR.TEXT])},[r.iconLeading?(e.openBlock(),e.createBlock(_,{key:0,class:e.normalizeClass([e.unref(t).FONT.COLOR.SURFACE.VARIANT]),icon:r.iconLeading,size:e.unref(C).SMALL},null,8,["class","icon","size"])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.QUARTER,e.unref(t).WIDTH.FULL])},[r.prefix?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["tide-input-text-prefix",e.unref(t).FONT.ROLE.BODY_1,,!E.value&&e.unref(t).FONT.COLOR.SURFACE.VARIANT,R.value?"":"offset"])},e.toDisplayString(r.prefix),3)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).WIDTH.FULL]),onClick:S[1]||(S[1]=e.withModifiers(N=>{var U;return(U=c.value)==null?void 0:U.focus()},["prevent"]))},[p.label?(e.openBlock(),e.createElementBlock("label",{key:0,class:e.normalizeClass([R.value?["minilabel",e.unref(t).FONT.ROLE.LABEL_3]:e.unref(t).FONT.ROLE.LABEL_1,!E.value&&e.unref(t).FONT.COLOR.SURFACE.VARIANT,e.unref(t).CURSOR.TEXT,e.unref(t).POINTER_EVENTS.OFF]),for:r.inputId},e.toDisplayString(d.value),11,hn)):e.createCommentVNode("",!0),e.withDirectives(e.createElementVNode("input",{autocomplete:p.autocomplete?"on":"off",class:e.normalizeClass([e.unref(t).WIDTH.FULL,p.disabled&&e.unref(t).CURSOR.NOT_ALLOWED,e.unref(t).FONT.ROLE.BODY_1]),"data-track":r.dataTrack,disabled:r.disabled,maxlength:r.maxlength,minlength:r.minlength,name:r.name,ref_key:"input",ref:c,required:r.required,type:I.value,onChange:A,onFocus:O,onFocusout:T,onInput:v,id:r.inputId,"onUpdate:modelValue":S[0]||(S[0]=N=>l.value=N)},null,42,_n),[[e.vModelDynamic,l.value]])],2),r.suffix?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(["tide-input-text-suffix",e.unref(t).FONT.ROLE.BODY_1,!E.value&&e.unref(t).FONT.COLOR.SURFACE.VARIANT,R.value?"":"offset"])},e.toDisplayString(r.suffix),3)):e.createCommentVNode("",!0)],2),f.value&&r.type!==e.unref(Z).PASSWORD?(e.openBlock(),e.createBlock(_,{key:1,class:e.normalizeClass([e.unref(t).PADDING.Y.HALF,e.unref(t).PADDING.FULL.HALF,e.unref(t).CURSOR.POINTER]),icon:e.unref(h).CLOSE,size:e.unref(C).SMALL,onClick:L},null,8,["class","icon","size"])):e.createCommentVNode("",!0),r.type===e.unref(Z).PASSWORD?(e.openBlock(),e.createBlock(_,{key:2,class:e.normalizeClass([e.unref(t).PADDING.Y.HALF,e.unref(t).PADDING.FULL.HALF,e.unref(t).CURSOR.POINTER]),icon:e.unref(h).VISIBILITY,size:e.unref(C).SMALL,onClick:S[2]||(S[2]=N=>a.value=!a.value)},null,8,["class","icon","size"])):e.createCommentVNode("",!0)],2),r.supportingText||E.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.QUARTER])},[E.value?(e.openBlock(),e.createBlock(_,{key:0,class:e.normalizeClass([]),icon:e.unref(h).ERROR,size:e.unref(C).SMALL},null,8,["icon","size"])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_3])},e.toDisplayString(E.value?u.value:r.supportingText),3)],2)):e.createCommentVNode("",!0)],2))}});const Dn=F(Sn,[["__scopeId","data-v-d369bda5"]]),Fn=["for"],Cn=["data-track","maxlength","minlength","name","required","rows","id"],Pn=e.defineComponent({__name:"TideInputTextarea",props:{dataTrack:{default:""},error:{type:[String,Boolean],default:!1},inputId:{default:void 0},label:{default:void 0},maxlength:{default:void 0},minlength:{default:void 0},name:{default:void 0},required:{type:Boolean,default:!1},rows:{default:8},supportingText:{default:void 0},value:{default:void 0}},setup(o,{expose:n}){const r=o,s=e.ref(r.error),i=e.ref(!1),c=e.ref(null),a=e.ref(r.value),l=e.computed(()=>he(r.error,s.value)),u=e.computed(()=>r.required?`${r.label} *`:r.label),d=e.computed(()=>r.required&&a.value!==void 0&&!a.value||_e(s.value,r.error)),f=e.computed(()=>i.value||!E.value),E=e.computed(()=>a.value===""||a.value===void 0),R=()=>{i.value=!0},m=()=>{i.value=!1,a.value||(a.value="")},I=()=>Ze({error:s,errorFromProps:r.error,maxlength:r.maxlength,minlength:r.minlength,required:r.required,value:a});return e.watch(()=>r.value,(L,O)=>{(L!==O||L!==a.value)&&(a.value=L)}),n({error:s,required:r.required,value:a}),(L,O)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-input-textarea",e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).GAP.QUARTER,d.value&&"error"])},[e.createElementVNode("div",{class:e.normalizeClass(["tide-input-textarea-field",e.unref(t).GAP.HALF,e.unref(t).POSITION.RELATIVE,e.unref(t).BORDER.RADIUS.HALF,e.unref(t).PADDING.LEFT.ONE,e.unref(t).PADDING.TOP.HALF,e.unref(t).OVERFLOW.XY.HIDDEN,e.unref(t).BG.SURFACE.DEFAULT])},[L.label?(e.openBlock(),e.createElementBlock("label",{key:0,class:e.normalizeClass([f.value?["minilabel",e.unref(t).FONT.ROLE.LABEL_3]:e.unref(t).FONT.ROLE.LABEL_1,!d.value&&e.unref(t).FONT.COLOR.SURFACE.VARIANT,e.unref(t).CURSOR.TEXT,e.unref(t).POINTER_EVENTS.OFF]),for:r.inputId,ref:"label"},e.toDisplayString(u.value),11,Fn)):e.createCommentVNode("",!0),e.withDirectives(e.createElementVNode("textarea",{class:e.normalizeClass([e.unref(t).WIDTH.FULL,e.unref(t).FONT.ROLE.BODY_1]),"data-track":r.dataTrack,maxlength:r.maxlength,minlength:r.minlength,name:r.name,ref_key:"input",ref:c,required:r.required,rows:r.rows,onChange:I,onFocus:R,onFocusout:m,id:r.inputId,"onUpdate:modelValue":O[0]||(O[0]=T=>a.value=T)},null,42,Cn),[[e.vModelText,a.value]])],2),r.supportingText||d.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.QUARTER])},[d.value?(e.openBlock(),e.createBlock(_,{key:0,icon:e.unref(h).ERROR,size:e.unref(C).SMALL},null,8,["icon","size"])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_3])},e.toDisplayString(d.value?l.value:r.supportingText),3)],2)):e.createCommentVNode("",!0)],2))}});const Bn=F(Pn,[["__scopeId","data-v-2105ab99"]]),yn=e.defineComponent({__name:"TideLink",props:{element:{default:D.LINK},href:{default:void 0},iconLeading:{default:void 0},iconTrailing:{default:void 0},isNewTab:{type:Boolean,default:!1},label:{default:void 0}},setup(o){const n=o;return(r,s)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(n.element===e.unref(D).LINK?e.unref(D).LINK:e.unref(D).BUTTON),{class:e.normalizeClass(["tide-link",e.unref(t).DISPLAY.INLINE,e.unref(t).UNDERLINE.ON,e.unref(t).ALIGN.X.LEFT]),href:n.href,target:n.isNewTab?e.unref(b).BLANK:e.unref(b).SELF},{default:e.withCtx(()=>[n.iconLeading?(e.openBlock(),e.createBlock(_,{key:0,class:e.normalizeClass([e.unref(t).DISPLAY.INLINE_BLOCK,e.unref(t).ALIGN.Y.MIDDLE,e.unref(t).MARGIN.RIGHT.QUARTER]),icon:n.iconLeading},null,8,["class","icon"])):e.createCommentVNode("",!0),e.createElementVNode("span",{class:e.normalizeClass([e.unref(t).ALIGN.Y.MIDDLE])},e.toDisplayString(n.label),3),n.iconTrailing?(e.openBlock(),e.createBlock(_,{key:1,class:e.normalizeClass([e.unref(t).DISPLAY.INLINE_BLOCK,e.unref(t).ALIGN.Y.MIDDLE,e.unref(t).MARGIN.LEFT.QUARTER]),icon:n.iconTrailing},null,8,["class","icon"])):e.createCommentVNode("",!0)]),_:1},8,["class","href","target"]))}}),Qe={SM:"sm",MD:"md",LG:"lg",XL:"xl"},Un={SM:768,MD:992,LG:1232,XL:1920},bn=async o=>{const n="body-scroll-lock",r=document.body;if(o){if(!r.dataset.scrollLockY){const s=window.scrollY;r.dataset.scrollLockY=s.toString(),r.style.setProperty("--saved-scroll-y",`${s}px`),r.classList.add(n)}}else if(await e.nextTick(),!document.querySelector("dialog[open]")){const s=parseInt(r.dataset.scrollLockY||"0");r.classList.remove(n),r.style.removeProperty("--saved-scroll-y"),window.scrollTo({behavior:"auto",top:s}),delete r.dataset.scrollLockY}},Le="tideTopLayer",kn=()=>{let o=document.getElementById(Le);o||(o=document.createElement("div"),o.id=Le,document.body.appendChild(o)),o.style.isolation="isolate"},Gn=["textContent"],wn=e.defineComponent({__name:"TideModal",props:{isBackButton:{type:Boolean,default:!1},isDismissible:{type:Boolean,default:!0},isOpen:{type:Boolean},title:{default:void 0},width:{default:void 0}},emits:["close","back"],setup(o,{emit:n}){const r=o,s=e.ref(),i=e.ref(),c=()=>{var u;(u=i.value)==null||u.showModal()},a=()=>{var u;(u=i.value)==null||u.close()},l=()=>{e.nextTick(()=>{s.value&&(s.value.scrollTop=0)})};return e.watch(()=>r.isOpen,u=>{i.value&&(u?(c(),l()):a(),bn(u))}),e.onMounted(()=>{r.isOpen&&c()}),(u,d)=>(e.openBlock(),e.createElementBlock("dialog",{class:e.normalizeClass(["tide-modal",e.unref(t).BG.INITIAL,e.unref(t).HEIGHT.FULL,e.unref(t).WIDTH.FULL,e.unref(t).OVERFLOW.XY.HIDDEN]),ref_key:"modalDialog",ref:i,style:e.normalizeStyle({"--modal-width":r.width}),onClick:d[1]||(d[1]=e.withModifiers(f=>n("close"),["self"])),onClose:d[2]||(d[2]=f=>n("close"))},[e.createElementVNode("div",{class:e.normalizeClass(["tide-modal-body",e.unref(t).BG.SURFACE.DEFAULT,e.unref(t).BORDER.RADIUS.ONE,e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).OVERFLOW.XY.HIDDEN,e.unref(t).POSITION.ABSOLUTE,e.unref(t).POSITIONING.BOTTOM,e.unref(t).SHADOW.TOP,e.unref(t).WIDTH.FULL,e.unref(t).WIDTH.MAX_FULL,e.unref(t).withBreakpoint([e.unref(t).SHADOW.BOTTOM],e.unref(Qe).SM)])},[e.createElementVNode("header",{class:e.normalizeClass(["tide-modal-header",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).PADDING.Y.ONE,e.unref(t).BORDER.BOTTOM.ONE,e.unref(t).BORDER.COLOR.LOW])},[u.isBackButton?(e.openBlock(),e.createBlock(H,{key:0,icon:e.unref(h).CHEVRON_LEFT,priority:e.unref(B).QUATERNARY,onClick:d[0]||(d[0]=f=>n("back")),title:"Back"},null,8,["icon","priority"])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).FONT.ROLE.HEADLINE_2]),textContent:e.toDisplayString(u.title)},null,10,Gn),u.isDismissible?(e.openBlock(),e.createBlock(H,{key:1,class:e.normalizeClass([e.unref(t).FLEX.GROW.OFF,e.unref(t).FLEX.SHRINK.OFF,e.unref(t).MARGIN.LEFT.AUTO]),icon:e.unref(h).CLOSE,priority:e.unref(B).QUATERNARY,onClick:a},null,8,["class","icon","priority"])):e.createCommentVNode("",!0)],2),e.createElementVNode("div",{class:e.normalizeClass(["tide-modal-content",e.unref(t).DISPLAY.GRID,e.unref(t).OVERFLOW.Y.AUTO,e.unref(t).OVERFLOW.X.HIDDEN,e.unref(t).WIDTH.FULL,e.unref(t).PADDING.Y.TWO]),ref_key:"modalContent",ref:s},[e.renderSlot(u.$slots,"default",{},void 0,!0)],2),u.$slots.footer?(e.openBlock(),e.createElementBlock("footer",{key:0,class:e.normalizeClass(["tide-modal-footer",e.unref(t).AXIS1.END,e.unref(t).DISPLAY.FLEX,e.unref(t).GAP.TWO,e.unref(t).PADDING.Y.ONE,e.unref(t).SHADOW.TOP])},[e.renderSlot(u.$slots,"footer",{},void 0,!0)],2)):e.createCommentVNode("",!0)],2)],38))}});const Hn=F(wn,[["__scopeId","data-v-b0e46dd4"]]),Mn=e.defineComponent({__name:"TidePagination",props:{pageCurrent:{default:1},pageTotal:{default:1}},emits:["change"],setup(o,{emit:n}){const r=o,s=e.ref(r.pageCurrent),i=e.computed(()=>new Array(r.pageTotal).fill("").map((a,l)=>l+1)),c=a=>{s.value=a,n("change",event,a)};return(a,l)=>(e.openBlock(),e.createElementBlock("section",{class:e.normalizeClass(["tide-pagination",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.CENTER,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.QUARTER,e.unref(t).WIDTH.FULL])},[e.createVNode(H,{disabled:s.value===1,icon:e.unref(h).CHEVRON_LEFT,priority:e.unref(B).QUATERNARY,onClick:l[0]||(l[0]=u=>c(s.value-1))},null,8,["disabled","icon","priority"]),e.createElementVNode("ul",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.QUARTER,e.unref(t).LIST_BULLETS.OFF])},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,u=>(e.openBlock(),e.createElementBlock("li",{key:u},[e.createVNode($e,{disabled:s.value===u,label:u,priority:e.unref(B).QUATERNARY,onClick:d=>c(u)},null,8,["disabled","label","priority","onClick"])]))),128))],2),e.createVNode(H,{disabled:s.value===i.value[i.value.length-1],icon:e.unref(h).CHEVRON_RIGHT,priority:e.unref(B).QUATERNARY,onClick:l[1]||(l[1]=u=>c(s.value+1))},null,8,["disabled","icon","priority"])],2))}}),Vn=["top","right","bottom","left"],ye=["start","end"],Ue=Vn.reduce((o,n)=>o.concat(n,n+"-"+ye[0],n+"-"+ye[1]),[]),ce=Math.min,z=Math.max,ue=Math.round,le=Math.floor,M=o=>({x:o,y:o}),xn={left:"right",right:"left",bottom:"top",top:"bottom"},Wn={start:"end",end:"start"};function be(o,n,r){return z(o,ce(n,r))}function fe(o,n){return typeof o=="function"?o(n):o}function ee(o){return o.split("-")[0]}function X(o){return o.split("-")[1]}function je(o){return o==="x"?"y":"x"}function Je(o){return o==="y"?"height":"width"}function Ee(o){return["top","bottom"].includes(ee(o))?"y":"x"}function et(o){return je(Ee(o))}function Xn(o,n,r){r===void 0&&(r=!1);const s=X(o),i=et(o),c=Je(i);let a=i==="x"?s===(r?"end":"start")?"right":"left":s==="start"?"bottom":"top";return n.reference[c]>n.floating[c]&&(a=ke(a)),[a,ke(a)]}function Yn(o){return o.replace(/start|end/g,n=>Wn[n])}function ke(o){return o.replace(/left|right|bottom|top/g,n=>xn[n])}function zn(o){return{top:0,right:0,bottom:0,left:0,...o}}function qn(o){return typeof o!="number"?zn(o):{top:o,right:o,bottom:o,left:o}}function de(o){const{x:n,y:r,width:s,height:i}=o;return{width:s,height:i,top:r,left:n,right:n+s,bottom:r+i,x:n,y:r}}function Ge(o,n,r){let{reference:s,floating:i}=o;const c=Ee(n),a=et(n),l=Je(a),u=ee(n),d=c==="y",f=s.x+s.width/2-i.width/2,E=s.y+s.height/2-i.height/2,R=s[l]/2-i[l]/2;let m;switch(u){case"top":m={x:f,y:s.y-i.height};break;case"bottom":m={x:f,y:s.y+s.height};break;case"right":m={x:s.x+s.width,y:E};break;case"left":m={x:s.x-i.width,y:E};break;default:m={x:s.x,y:s.y}}switch(X(n)){case"start":m[a]-=R*(r&&d?-1:1);break;case"end":m[a]+=R*(r&&d?-1:1);break}return m}const $n=async(o,n,r)=>{const{placement:s="bottom",strategy:i="absolute",middleware:c=[],platform:a}=r,l=c.filter(Boolean),u=await(a.isRTL==null?void 0:a.isRTL(n));let d=await a.getElementRects({reference:o,floating:n,strategy:i}),{x:f,y:E}=Ge(d,s,u),R=s,m={},I=0;for(let L=0;L<l.length;L++){const{name:O,fn:T}=l[L],{x:v,y:A,data:g,reset:p}=await T({x:f,y:E,initialPlacement:s,placement:R,strategy:i,middlewareData:m,rects:d,platform:a,elements:{reference:o,floating:n}});f=v??f,E=A??E,m={...m,[O]:{...m[O],...g}},p&&I<=50&&(I++,typeof p=="object"&&(p.placement&&(R=p.placement),p.rects&&(d=p.rects===!0?await a.getElementRects({reference:o,floating:n,strategy:i}):p.rects),{x:f,y:E}=Ge(d,R,u)),L=-1)}return{x:f,y:E,placement:R,strategy:i,middlewareData:m}};async function tt(o,n){var r;n===void 0&&(n={});const{x:s,y:i,platform:c,rects:a,elements:l,strategy:u}=o,{boundary:d="clippingAncestors",rootBoundary:f="viewport",elementContext:E="floating",altBoundary:R=!1,padding:m=0}=fe(n,o),I=qn(m),O=l[R?E==="floating"?"reference":"floating":E],T=de(await c.getClippingRect({element:(r=await(c.isElement==null?void 0:c.isElement(O)))==null||r?O:O.contextElement||await(c.getDocumentElement==null?void 0:c.getDocumentElement(l.floating)),boundary:d,rootBoundary:f,strategy:u})),v=E==="floating"?{x:s,y:i,width:a.floating.width,height:a.floating.height}:a.reference,A=await(c.getOffsetParent==null?void 0:c.getOffsetParent(l.floating)),g=await(c.isElement==null?void 0:c.isElement(A))?await(c.getScale==null?void 0:c.getScale(A))||{x:1,y:1}:{x:1,y:1},p=de(c.convertOffsetParentRelativeRectToViewportRelativeRect?await c.convertOffsetParentRelativeRectToViewportRelativeRect({elements:l,rect:v,offsetParent:A,strategy:u}):v);return{top:(T.top-p.top+I.top)/g.y,bottom:(p.bottom-T.bottom+I.bottom)/g.y,left:(T.left-p.left+I.left)/g.x,right:(p.right-T.right+I.right)/g.x}}function Kn(o,n,r){return(o?[...r.filter(i=>X(i)===o),...r.filter(i=>X(i)!==o)]:r.filter(i=>ee(i)===i)).filter(i=>o?X(i)===o||(n?Yn(i)!==i:!1):!0)}const Zn=function(o){return o===void 0&&(o={}),{name:"autoPlacement",options:o,async fn(n){var r,s,i;const{rects:c,middlewareData:a,placement:l,platform:u,elements:d}=n,{crossAxis:f=!1,alignment:E,allowedPlacements:R=Ue,autoAlignment:m=!0,...I}=fe(o,n),L=E!==void 0||R===Ue?Kn(E||null,m,R):R,O=await tt(n,I),T=((r=a.autoPlacement)==null?void 0:r.index)||0,v=L[T];if(v==null)return{};const A=Xn(v,c,await(u.isRTL==null?void 0:u.isRTL(d.floating)));if(l!==v)return{reset:{placement:L[0]}};const g=[O[ee(v)],O[A[0]],O[A[1]]],p=[...((s=a.autoPlacement)==null?void 0:s.overflows)||[],{placement:v,overflows:g}],S=L[T+1];if(S)return{data:{index:T+1,overflows:p},reset:{placement:S}};const N=p.map(w=>{const ne=X(w.placement);return[w.placement,ne&&f?w.overflows.slice(0,2).reduce((ut,dt)=>ut+dt,0):w.overflows[0],w.overflows]}).sort((w,ne)=>w[1]-ne[1]),te=((i=N.filter(w=>w[2].slice(0,X(w[0])?2:3).every(ne=>ne<=0))[0])==null?void 0:i[0])||N[0][0];return te!==l?{data:{index:T+1,overflows:p},reset:{placement:te}}:{}}}};async function Qn(o,n){const{placement:r,platform:s,elements:i}=o,c=await(s.isRTL==null?void 0:s.isRTL(i.floating)),a=ee(r),l=X(r),u=Ee(r)==="y",d=["left","top"].includes(a)?-1:1,f=c&&u?-1:1,E=fe(n,o);let{mainAxis:R,crossAxis:m,alignmentAxis:I}=typeof E=="number"?{mainAxis:E,crossAxis:0,alignmentAxis:null}:{mainAxis:E.mainAxis||0,crossAxis:E.crossAxis||0,alignmentAxis:E.alignmentAxis};return l&&typeof I=="number"&&(m=l==="end"?I*-1:I),u?{x:m*f,y:R*d}:{x:R*d,y:m*f}}const jn=function(o){return o===void 0&&(o=0),{name:"offset",options:o,async fn(n){var r,s;const{x:i,y:c,placement:a,middlewareData:l}=n,u=await Qn(n,o);return a===((r=l.offset)==null?void 0:r.placement)&&(s=l.arrow)!=null&&s.alignmentOffset?{}:{x:i+u.x,y:c+u.y,data:{...u,placement:a}}}}},Jn=function(o){return o===void 0&&(o={}),{name:"shift",options:o,async fn(n){const{x:r,y:s,placement:i}=n,{mainAxis:c=!0,crossAxis:a=!1,limiter:l={fn:O=>{let{x:T,y:v}=O;return{x:T,y:v}}},...u}=fe(o,n),d={x:r,y:s},f=await tt(n,u),E=Ee(ee(i)),R=je(E);let m=d[R],I=d[E];if(c){const O=R==="y"?"top":"left",T=R==="y"?"bottom":"right",v=m+f[O],A=m-f[T];m=be(v,m,A)}if(a){const O=E==="y"?"top":"left",T=E==="y"?"bottom":"right",v=I+f[O],A=I-f[T];I=be(v,I,A)}const L=l.fn({...n,[R]:m,[E]:I});return{...L,data:{x:L.x-r,y:L.y-s,enabled:{[R]:c,[E]:a}}}}}};function me(){return typeof window<"u"}function $(o){return Se(o)?(o.nodeName||"").toLowerCase():"#document"}function y(o){var n;return(o==null||(n=o.ownerDocument)==null?void 0:n.defaultView)||window}function x(o){var n;return(n=(Se(o)?o.ownerDocument:o.document)||window.document)==null?void 0:n.documentElement}function Se(o){return me()?o instanceof Node||o instanceof y(o).Node:!1}function k(o){return me()?o instanceof Element||o instanceof y(o).Element:!1}function V(o){return me()?o instanceof HTMLElement||o instanceof y(o).HTMLElement:!1}function we(o){return!me()||typeof ShadowRoot>"u"?!1:o instanceof ShadowRoot||o instanceof y(o).ShadowRoot}function ae(o){const{overflow:n,overflowX:r,overflowY:s,display:i}=G(o);return/auto|scroll|overlay|hidden|clip/.test(n+s+r)&&!["inline","contents"].includes(i)}function eo(o){return["table","td","th"].includes($(o))}function Oe(o){return[":popover-open",":modal"].some(n=>{try{return o.matches(n)}catch{return!1}})}function De(o){const n=Fe(),r=k(o)?G(o):o;return["transform","translate","scale","rotate","perspective"].some(s=>r[s]?r[s]!=="none":!1)||(r.containerType?r.containerType!=="normal":!1)||!n&&(r.backdropFilter?r.backdropFilter!=="none":!1)||!n&&(r.filter?r.filter!=="none":!1)||["transform","translate","scale","rotate","perspective","filter"].some(s=>(r.willChange||"").includes(s))||["paint","layout","strict","content"].some(s=>(r.contain||"").includes(s))}function to(o){let n=Y(o);for(;V(n)&&!J(n);){if(De(n))return n;if(Oe(n))return null;n=Y(n)}return null}function Fe(){return typeof CSS>"u"||!CSS.supports?!1:CSS.supports("-webkit-backdrop-filter","none")}function J(o){return["html","body","#document"].includes($(o))}function G(o){return y(o).getComputedStyle(o)}function Re(o){return k(o)?{scrollLeft:o.scrollLeft,scrollTop:o.scrollTop}:{scrollLeft:o.scrollX,scrollTop:o.scrollY}}function Y(o){if($(o)==="html")return o;const n=o.assignedSlot||o.parentNode||we(o)&&o.host||x(o);return we(n)?n.host:n}function nt(o){const n=Y(o);return J(n)?o.ownerDocument?o.ownerDocument.body:o.body:V(n)&&ae(n)?n:nt(n)}function ie(o,n,r){var s;n===void 0&&(n=[]),r===void 0&&(r=!0);const i=nt(o),c=i===((s=o.ownerDocument)==null?void 0:s.body),a=y(i);if(c){const l=pe(a);return n.concat(a,a.visualViewport||[],ae(i)?i:[],l&&r?ie(l):[])}return n.concat(i,ie(i,[],r))}function pe(o){return o.parent&&Object.getPrototypeOf(o.parent)?o.frameElement:null}function ot(o){const n=G(o);let r=parseFloat(n.width)||0,s=parseFloat(n.height)||0;const i=V(o),c=i?o.offsetWidth:r,a=i?o.offsetHeight:s,l=ue(r)!==c||ue(s)!==a;return l&&(r=c,s=a),{width:r,height:s,$:l}}function Ce(o){return k(o)?o:o.contextElement}function j(o){const n=Ce(o);if(!V(n))return M(1);const r=n.getBoundingClientRect(),{width:s,height:i,$:c}=ot(n);let a=(c?ue(r.width):r.width)/s,l=(c?ue(r.height):r.height)/i;return(!a||!Number.isFinite(a))&&(a=1),(!l||!Number.isFinite(l))&&(l=1),{x:a,y:l}}const no=M(0);function rt(o){const n=y(o);return!Fe()||!n.visualViewport?no:{x:n.visualViewport.offsetLeft,y:n.visualViewport.offsetTop}}function oo(o,n,r){return n===void 0&&(n=!1),!r||n&&r!==y(o)?!1:n}function q(o,n,r,s){n===void 0&&(n=!1),r===void 0&&(r=!1);const i=o.getBoundingClientRect(),c=Ce(o);let a=M(1);n&&(s?k(s)&&(a=j(s)):a=j(o));const l=oo(c,r,s)?rt(c):M(0);let u=(i.left+l.x)/a.x,d=(i.top+l.y)/a.y,f=i.width/a.x,E=i.height/a.y;if(c){const R=y(c),m=s&&k(s)?y(s):s;let I=R,L=pe(I);for(;L&&s&&m!==I;){const O=j(L),T=L.getBoundingClientRect(),v=G(L),A=T.left+(L.clientLeft+parseFloat(v.paddingLeft))*O.x,g=T.top+(L.clientTop+parseFloat(v.paddingTop))*O.y;u*=O.x,d*=O.y,f*=O.x,E*=O.y,u+=A,d+=g,I=y(L),L=pe(I)}}return de({width:f,height:E,x:u,y:d})}function Pe(o,n){const r=Re(o).scrollLeft;return n?n.left+r:q(x(o)).left+r}function st(o,n,r){r===void 0&&(r=!1);const s=o.getBoundingClientRect(),i=s.left+n.scrollLeft-(r?0:Pe(o,s)),c=s.top+n.scrollTop;return{x:i,y:c}}function ro(o){let{elements:n,rect:r,offsetParent:s,strategy:i}=o;const c=i==="fixed",a=x(s),l=n?Oe(n.floating):!1;if(s===a||l&&c)return r;let u={scrollLeft:0,scrollTop:0},d=M(1);const f=M(0),E=V(s);if((E||!E&&!c)&&(($(s)!=="body"||ae(a))&&(u=Re(s)),V(s))){const m=q(s);d=j(s),f.x=m.x+s.clientLeft,f.y=m.y+s.clientTop}const R=a&&!E&&!c?st(a,u,!0):M(0);return{width:r.width*d.x,height:r.height*d.y,x:r.x*d.x-u.scrollLeft*d.x+f.x+R.x,y:r.y*d.y-u.scrollTop*d.y+f.y+R.y}}function so(o){return Array.from(o.getClientRects())}function io(o){const n=x(o),r=Re(o),s=o.ownerDocument.body,i=z(n.scrollWidth,n.clientWidth,s.scrollWidth,s.clientWidth),c=z(n.scrollHeight,n.clientHeight,s.scrollHeight,s.clientHeight);let a=-r.scrollLeft+Pe(o);const l=-r.scrollTop;return G(s).direction==="rtl"&&(a+=z(n.clientWidth,s.clientWidth)-i),{width:i,height:c,x:a,y:l}}function ao(o,n){const r=y(o),s=x(o),i=r.visualViewport;let c=s.clientWidth,a=s.clientHeight,l=0,u=0;if(i){c=i.width,a=i.height;const d=Fe();(!d||d&&n==="fixed")&&(l=i.offsetLeft,u=i.offsetTop)}return{width:c,height:a,x:l,y:u}}function lo(o,n){const r=q(o,!0,n==="fixed"),s=r.top+o.clientTop,i=r.left+o.clientLeft,c=V(o)?j(o):M(1),a=o.clientWidth*c.x,l=o.clientHeight*c.y,u=i*c.x,d=s*c.y;return{width:a,height:l,x:u,y:d}}function He(o,n,r){let s;if(n==="viewport")s=ao(o,r);else if(n==="document")s=io(x(o));else if(k(n))s=lo(n,r);else{const i=rt(o);s={x:n.x-i.x,y:n.y-i.y,width:n.width,height:n.height}}return de(s)}function it(o,n){const r=Y(o);return r===n||!k(r)||J(r)?!1:G(r).position==="fixed"||it(r,n)}function co(o,n){const r=n.get(o);if(r)return r;let s=ie(o,[],!1).filter(l=>k(l)&&$(l)!=="body"),i=null;const c=G(o).position==="fixed";let a=c?Y(o):o;for(;k(a)&&!J(a);){const l=G(a),u=De(a);!u&&l.position==="fixed"&&(i=null),(c?!u&&!i:!u&&l.position==="static"&&!!i&&["absolute","fixed"].includes(i.position)||ae(a)&&!u&&it(o,a))?s=s.filter(f=>f!==a):i=l,a=Y(a)}return n.set(o,s),s}function uo(o){let{element:n,boundary:r,rootBoundary:s,strategy:i}=o;const a=[...r==="clippingAncestors"?Oe(n)?[]:co(n,this._c):[].concat(r),s],l=a[0],u=a.reduce((d,f)=>{const E=He(n,f,i);return d.top=z(E.top,d.top),d.right=ce(E.right,d.right),d.bottom=ce(E.bottom,d.bottom),d.left=z(E.left,d.left),d},He(n,l,i));return{width:u.right-u.left,height:u.bottom-u.top,x:u.left,y:u.top}}function fo(o){const{width:n,height:r}=ot(o);return{width:n,height:r}}function Eo(o,n,r){const s=V(n),i=x(n),c=r==="fixed",a=q(o,!0,c,n);let l={scrollLeft:0,scrollTop:0};const u=M(0);if(s||!s&&!c)if(($(n)!=="body"||ae(i))&&(l=Re(n)),s){const R=q(n,!0,c,n);u.x=R.x+n.clientLeft,u.y=R.y+n.clientTop}else i&&(u.x=Pe(i));const d=i&&!s&&!c?st(i,l):M(0),f=a.left+l.scrollLeft-u.x-d.x,E=a.top+l.scrollTop-u.y-d.y;return{x:f,y:E,width:a.width,height:a.height}}function Te(o){return G(o).position==="static"}function Me(o,n){if(!V(o)||G(o).position==="fixed")return null;if(n)return n(o);let r=o.offsetParent;return x(o)===r&&(r=r.ownerDocument.body),r}function at(o,n){const r=y(o);if(Oe(o))return r;if(!V(o)){let i=Y(o);for(;i&&!J(i);){if(k(i)&&!Te(i))return i;i=Y(i)}return r}let s=Me(o,n);for(;s&&eo(s)&&Te(s);)s=Me(s,n);return s&&J(s)&&Te(s)&&!De(s)?r:s||to(o)||r}const mo=async function(o){const n=this.getOffsetParent||at,r=this.getDimensions,s=await r(o.floating);return{reference:Eo(o.reference,await n(o.floating),o.strategy),floating:{x:0,y:0,width:s.width,height:s.height}}};function Oo(o){return G(o).direction==="rtl"}const Ro={convertOffsetParentRelativeRectToViewportRelativeRect:ro,getDocumentElement:x,getClippingRect:uo,getOffsetParent:at,getElementRects:mo,getClientRects:so,getDimensions:fo,getScale:j,isElement:k,isRTL:Oo};function lt(o,n){return o.x===n.x&&o.y===n.y&&o.width===n.width&&o.height===n.height}function vo(o,n){let r=null,s;const i=x(o);function c(){var l;clearTimeout(s),(l=r)==null||l.disconnect(),r=null}function a(l,u){l===void 0&&(l=!1),u===void 0&&(u=1),c();const d=o.getBoundingClientRect(),{left:f,top:E,width:R,height:m}=d;if(l||n(),!R||!m)return;const I=le(E),L=le(i.clientWidth-(f+R)),O=le(i.clientHeight-(E+m)),T=le(f),A={rootMargin:-I+"px "+-L+"px "+-O+"px "+-T+"px",threshold:z(0,ce(1,u))||1};let g=!0;function p(S){const N=S[0].intersectionRatio;if(N!==u){if(!g)return a();N?a(!1,N):s=setTimeout(()=>{a(!1,1e-7)},1e3)}N===1&&!lt(d,o.getBoundingClientRect())&&a(),g=!1}try{r=new IntersectionObserver(p,{...A,root:i.ownerDocument})}catch{r=new IntersectionObserver(p,A)}r.observe(o)}return a(!0),c}function To(o,n,r,s){s===void 0&&(s={});const{ancestorScroll:i=!0,ancestorResize:c=!0,elementResize:a=typeof ResizeObserver=="function",layoutShift:l=typeof IntersectionObserver=="function",animationFrame:u=!1}=s,d=Ce(o),f=i||c?[...d?ie(d):[],...ie(n)]:[];f.forEach(T=>{i&&T.addEventListener("scroll",r,{passive:!0}),c&&T.addEventListener("resize",r)});const E=d&&l?vo(d,r):null;let R=-1,m=null;a&&(m=new ResizeObserver(T=>{let[v]=T;v&&v.target===d&&m&&(m.unobserve(n),cancelAnimationFrame(R),R=requestAnimationFrame(()=>{var A;(A=m)==null||A.observe(n)})),r()}),d&&!u&&m.observe(d),m.observe(n));let I,L=u?q(o):null;u&&O();function O(){const T=q(o);L&&!lt(L,T)&&r(),L=T,I=requestAnimationFrame(O)}return r(),()=>{var T;f.forEach(v=>{i&&v.removeEventListener("scroll",r),c&&v.removeEventListener("resize",r)}),E==null||E(),(T=m)==null||T.disconnect(),m=null,u&&cancelAnimationFrame(I)}}const Ve=jn,xe=Zn,We=Jn,Io=(o,n,r)=>{const s=new Map,i={platform:Ro,...r},c={...i.platform,_c:s};return $n(o,n,{...i,platform:c})};function Ao(o){return o!=null&&typeof o=="object"&&"$el"in o}function Xe(o){if(Ao(o)){const n=o.$el;return Se(n)&&$(n)==="#comment"?null:n}return o}function re(o){return typeof o=="function"?o():e.unref(o)}function ct(o){return typeof window>"u"?1:(o.ownerDocument.defaultView||window).devicePixelRatio||1}function Ye(o,n){const r=ct(o);return Math.round(n*r)/r}function Lo(o,n,r){r===void 0&&(r={});const s=r.whileElementsMounted,i=e.computed(()=>{var N;return(N=re(r.open))!=null?N:!0}),c=e.computed(()=>re(r.middleware)),a=e.computed(()=>{var N;return(N=re(r.placement))!=null?N:"bottom"}),l=e.computed(()=>{var N;return(N=re(r.strategy))!=null?N:"absolute"}),u=e.computed(()=>{var N;return(N=re(r.transform))!=null?N:!0}),d=e.computed(()=>Xe(o.value)),f=e.computed(()=>Xe(n.value)),E=e.ref(0),R=e.ref(0),m=e.ref(l.value),I=e.ref(a.value),L=e.shallowRef({}),O=e.ref(!1),T=e.computed(()=>{const N={position:m.value,left:"0",top:"0"};if(!f.value)return N;const U=Ye(f.value,E.value),te=Ye(f.value,R.value);return u.value?{...N,transform:"translate("+U+"px, "+te+"px)",...ct(f.value)>=1.5&&{willChange:"transform"}}:{position:m.value,left:U+"px",top:te+"px"}});let v;function A(){if(d.value==null||f.value==null)return;const N=i.value;Io(d.value,f.value,{middleware:c.value,placement:a.value,strategy:l.value}).then(U=>{E.value=U.x,R.value=U.y,m.value=U.strategy,I.value=U.placement,L.value=U.middlewareData,O.value=N!==!1})}function g(){typeof v=="function"&&(v(),v=void 0)}function p(){if(g(),s===void 0){A();return}if(d.value!=null&&f.value!=null){v=s(d.value,f.value,A);return}}function S(){i.value||(O.value=!1)}return e.watch([c,a,l,i],A,{flush:"sync"}),e.watch([d,f],p,{flush:"sync"}),e.watch(i,S,{flush:"sync"}),e.getCurrentScope()&&e.onScopeDispose(g),{x:e.shallowReadonly(E),y:e.shallowReadonly(R),strategy:e.shallowReadonly(m),placement:e.shallowReadonly(I),middlewareData:e.shallowReadonly(L),isPositioned:e.shallowReadonly(O),floatingStyles:T,update:A}}const po=(o,n)=>!(Array.isArray(n)?n:[n]).some(s=>s.contains(o.target)),No=e.defineComponent({__name:"TidePopover",props:{anchorId:{},offset:{default:16}},setup(o){const n=o,r=e.ref(null),s=e.ref(null),i=e.ref(null),c=e.ref(!1),a=e.ref(!1),l=e.ref([xe(),Ve({mainAxis:n.offset}),We({padding:16})]),u=e.computed(()=>c.value||a.value),{floatingStyles:d}=Lo(r,s,{middleware:l,strategy:"fixed",whileElementsMounted:To}),f=g=>{!r.value||!s.value||po(g,[r.value,s.value])&&(g.stopImmediatePropagation(),a.value=!1)},E=()=>{c.value=!0},R=()=>{c.value=!1},m=()=>{a.value=!0},I=()=>{if(!r.value)return null;r.value.addEventListener("mouseover",E),r.value.addEventListener("mouseleave",R),r.value.addEventListener("click",m)},L=()=>{if(!r.value)return null;r.value.removeEventListener("mouseover",E),r.value.removeEventListener("mouseleave",R),r.value.removeEventListener("click",m)},O=g=>{g.key==="Escape"&&(a.value=!1)},T=()=>{i.value&&(i.value.addEventListener("click",f,!0),i.value.addEventListener("keydown",O))},v=()=>{i.value&&(i.value.removeEventListener("click",f,!0),i.value.removeEventListener("keydown",O))},A=()=>{r.value=document.getElementById(n.anchorId)};return e.watch(()=>a.value,g=>{g?T():v()}),e.watch(()=>n.anchorId,()=>{L(),A(),I()}),e.watchEffect(()=>{l.value=[xe(),Ve({mainAxis:n.offset}),We({padding:16})]}),e.onBeforeMount(()=>{kn()}),e.onMounted(()=>{A(),i.value=document.documentElement,I()}),e.onUnmounted(()=>{L()}),(g,p)=>(e.openBlock(),e.createBlock(e.Teleport,{to:`#${e.unref(Le)}`},[e.createVNode(e.Transition,null,{default:e.withCtx(()=>[e.withDirectives(e.createElementVNode("div",{class:e.normalizeClass(["tide-popover",e.unref(t).BG.SURFACE.DEFAULT,e.unref(t).BORDER.COLOR.LOW,e.unref(t).BORDER.FULL.ONE,e.unref(t).BORDER.RADIUS.HALF,e.unref(t).FONT.ROLE.BODY_2,e.unref(t).PADDING.FULL.ONE,e.unref(t).SHADOW.BOTTOM]),ref_key:"floating",ref:s,style:e.normalizeStyle({...e.unref(d),maxWidth:`calc(100% - ${n.offset*2}px)`})},[e.renderSlot(g.$slots,"default",{},void 0,!0)],6),[[e.vShow,u.value]])]),_:3})],8,["to"]))}});const go=F(No,[["__scopeId","data-v-a4dd063e"]]),ho={class:"tide-seo-links"},_o=["href","target"],So=e.defineComponent({__name:"TideSeoLinks",props:{heading:{default:""},links:{}},setup(o){const n=o;return(r,s)=>(e.openBlock(),e.createElementBlock("section",ho,[e.createElementVNode("h2",{class:e.normalizeClass([e.unref(t).MARGIN.BOTTOM.HALF])},e.toDisplayString(n.heading),3),e.createElementVNode("ul",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.WRAP,e.unref(t).GAP.TWO,e.unref(t).LIST_BULLETS.OFF])},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.links,i=>(e.openBlock(),e.createElementBlock("li",{class:e.normalizeClass(["tide-seo-link",e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).GAP.QUARTER,e.unref(t).FONT.ROLE.BODY_2]),key:i.label},[e.createElementVNode("a",{class:e.normalizeClass([e.unref(t).UNDERLINE.OFF]),href:i.url,target:i.isNewTab?e.unref(b).BLANK:e.unref(b).SELF},e.toDisplayString(i.label),11,_o)],2))),128))],2)]))}});const Do=F(So,[["__scopeId","data-v-0348487b"]]),Fo=["disabled"],Co=e.defineComponent({__name:"TideSwitch",props:{disabled:{type:Boolean,default:!1},isActive:{type:Boolean,default:!1}},emits:["change"],setup(o,{emit:n}){const r=o,s=()=>{r.disabled||n("change")};return(i,c)=>(e.openBlock(),e.createElementBlock("button",{class:e.normalizeClass(["tide-switch",r.isActive?"active":"",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).BORDER.FULL.ONE,e.unref(t).BORDER.RADIUS.FULL,r.isActive?"":e.unref(t).BORDER.COLOR.DEFAULT,e.unref(t).OVERFLOW.XY.HIDDEN,r.isActive?e.unref(t).BG.SECONDARY:e.unref(t).BG.SURFACE.DEFAULT]),disabled:r.disabled,onClick:s,"aria-label":"Switch"},[e.createElementVNode("div",{class:e.normalizeClass(["tide-switch-indicator",e.unref(t).POSITION.RELATIVE,e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.CENTER,e.unref(t).AXIS2.CENTER,e.unref(t).BORDER.RADIUS.FULL,r.isActive?e.unref(t).BG.SURFACE.DEFAULT:e.unref(t).BG.SECONDARY])},[e.createVNode(_,{icon:e.unref(h).CHECK,size:e.unref(C).LARGE},null,8,["icon","size"])],2)],10,Fo))}});const Po=F(Co,[["__scopeId","data-v-9bdb658a"]]),Bo={NUMBER:Ne,PHONE:Et,PRICE:mt},Q={alpha:/^[a-zA-Z]+$/g,alphaNumberOrEmpty:/^$|^[a-z0-9]+$/i,alphaSpace:/^[a-zA-Z ]+$/g,email:/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,numberFormatted:/^$|(?=.)^\$?(([1-9][0-9]{0,2}(,[0-9]{3})*)|0)?(\.[0-9]{1,2})?$/,phone:/^(?:\d{3}-\d{3}-\d{4}|\d{1}-\d{3}-\d{3}-\d{4})?$/,price:/(?=.)^\$?(([1-9][0-9]{0,2}(,[0-9]{3})*)|0)?(\.[0-9]{1,2})?$/},yo={IMAGE:{FLOORPLAN:"floorplan",IMAGE:"image"},VIDEO:"video",VR:"vr"},Uo={ALPHA_NUMBER_EMPTY:oe(Q.alphaNumberOrEmpty),ALPHA_SPACE:oe(Q.alphaSpace),EMAIL:oe(Q.email),NUMBER:oe(Q.numberFormatted),PHONE:oe(Q.phone)};exports.ALERT=P;exports.BADGE_TRUSTED=qe;exports.BREAKPOINT=Qe;exports.CSS=t;exports.ELEMENT=D;exports.ELEMENT_TEXT_AS_ICON=W;exports.FORMAT=Bo;exports.FORMAT_REGEX=Q;exports.ICON=h;exports.ICON_REALM=Ot;exports.MEDIA=Un;exports.MEDIA_SLIDE_TYPES=yo;exports.ORIENTATION=Ie;exports.PRIORITY=B;exports.REALM=ze;exports.SIZE=C;exports.SIZE_BUTTON=K;exports.TARGET=b;exports.TEXT_INPUT_TYPE=Z;exports.TYPE_CARD=se;exports.TideAccordionItem=Tt;exports.TideAlert=At;exports.TideBadge=Lt;exports.TideBadgeTrustedPartner=Nt;exports.TideBreadCrumbs=St;exports.TideButton=Dt;exports.TideButtonIcon=H;exports.TideButtonPagination=$e;exports.TideButtonSegmented=Bt;exports.TideCard=Ut;exports.TideCarousel=kt;exports.TideChipAction=Ht;exports.TideChipFilter=Vt;exports.TideChipInput=Wt;exports.TideColumns=Zt;exports.TideDivider=Ae;exports.TideIcon=_;exports.TideImage=Ke;exports.TideImageBackground=en;exports.TideIndicator=on;exports.TideInputCheckbox=ln;exports.TideInputRadio=fn;exports.TideInputSelect=gn;exports.TideInputText=Dn;exports.TideInputTextarea=Bn;exports.TideLink=yn;exports.TideModal=Hn;exports.TidePagination=Mn;exports.TidePopover=go;exports.TideSeoLinks=Do;exports.TideSwitch=Po;exports.VALIDATOR=Uo;
|
|
2
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlkZS1kZXNpZ24tc3lzdGVtLmNqcyIsInNvdXJjZXMiOlsiLi4vc3JjL3R5cGVzL09yaWVudGF0aW9uLnRzIiwiLi4vc3JjL3R5cGVzL1N0eWxlcy50cyIsIi4uL3NyYy90eXBlcy9SZWFsbS50cyIsIi4uL3NyYy90eXBlcy9TaXplLnRzIiwiLi4vc3JjL3V0aWxpdGllcy9mb3JtYXQudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSWNvbi52dWUiLCIuLi9zcmMvdHlwZXMvSWNvbi50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVBY2NvcmRpb25JdGVtLnZ1ZSIsIi4uL3NyYy90eXBlcy9FbGVtZW50LnRzIiwiLi4vc3JjL3R5cGVzL1ByaW9yaXR5LnRzIiwiLi4vc3JjL3R5cGVzL1RhcmdldC50cyIsIi4uL3NyYy90eXBlcy9BbGVydC50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVBbGVydC52dWUiLCIuLi9zcmMvdHlwZXMvQmFkZ2UudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQnV0dG9uU2VnbWVudGVkLnZ1ZSIsIi4uL3NyYy90eXBlcy9DYXJkLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUNhcm91c2VsLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbWFnZS52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW5wdXRDaGVja2JveC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW5wdXRSYWRpby52dWUiLCIuLi9zcmMvdXRpbGl0aWVzL3ZhbGlkYXRpb24udHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW5wdXRTZWxlY3QudnVlIiwiLi4vc3JjL3R5cGVzL1RleHRJbnB1dC50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbnB1dFRleHQudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUlucHV0VGV4dGFyZWEudnVlIiwiLi4vc3JjL3R5cGVzL0JyZWFrcG9pbnQudHMiLCIuLi9zcmMvdXRpbGl0aWVzL3ZpZXdwb3J0LnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZU1vZGFsLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVQYWdpbmF0aW9uLnZ1ZSIsIi4uL25vZGVfbW9kdWxlcy9AZmxvYXRpbmctdWkvdXRpbHMvZGlzdC9mbG9hdGluZy11aS51dGlscy5tanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsb2F0aW5nLXVpL2NvcmUvZGlzdC9mbG9hdGluZy11aS5jb3JlLm1qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmxvYXRpbmctdWkvdXRpbHMvZGlzdC9mbG9hdGluZy11aS51dGlscy5kb20ubWpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbG9hdGluZy11aS9kb20vZGlzdC9mbG9hdGluZy11aS5kb20ubWpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbG9hdGluZy11aS92dWUvZGlzdC9mbG9hdGluZy11aS52dWUubWpzIiwiLi4vc3JjL3V0aWxpdGllcy9ldmVudC50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVQb3BvdmVyLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVTd2l0Y2gudnVlIiwiLi4vc3JjL3R5cGVzL0Zvcm1hdHRlZC50cyIsIi4uL3NyYy90eXBlcy9MaXN0aW5nTWVkaWEudHMiLCIuLi9zcmMvdHlwZXMvVmFsaWRhdGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgT1JJRU5UQVRJT04gPSB7XG4gIEhPUklaT05UQUw6ICdob3Jpem9udGFsJyxcbiAgVkVSVElDQUw6ICd2ZXJ0aWNhbCcsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBPcmllbnRhdGlvbiA9ICh0eXBlb2YgT1JJRU5UQVRJT04pW2tleW9mIHR5cGVvZiBPUklFTlRBVElPTl07XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSB2dWUvc29ydC1rZXlzICovXG5cbmltcG9ydCB0eXBlIHsgQnJlYWtwb2ludCB9IGZyb20gJ0AvdHlwZXMvQnJlYWtwb2ludCc7XG5cbmV4cG9ydCBjb25zdCBDU1MgPSB7XG4gIHdpdGhCcmVha3BvaW50OiAodXRpbGl0aWVzOiBzdHJpbmdbXSwgYnJlYWtwb2ludDogQnJlYWtwb2ludCk6IHN0cmluZ1tdID0+IHtcbiAgICByZXR1cm4gdXRpbGl0aWVzLm1hcCgodXRpbGl0eSkgPT4gYCR7YnJlYWtwb2ludH0tJHt1dGlsaXR5fWApO1xuICB9LFxuICBBTElHTjoge1xuICAgIFg6IHtcbiAgICAgIENFTlRFUjogJ3RpZGUtdGV4dC1jZW50ZXInLFxuICAgICAgTEVGVDogJ3RpZGUtdGV4dC1sZWZ0JyxcbiAgICAgIFJJR0hUOiAndGlkZS10ZXh0LXJpZ2h0JyxcbiAgICB9LFxuICAgIFk6IHtcbiAgICAgIElOSVRJQUw6ICd0aWRlLWFsaWduLWluaXRpYWwnLFxuICAgICAgTUlERExFOiAndGlkZS1hbGlnbi1taWRkbGUnLFxuICAgIH0sXG4gIH0sXG4gIEFYSVMxOiB7XG4gICAgQVJPVU5EOiAndGlkZS1heGlzMS1hcm91bmQnLFxuICAgIEJFVFdFRU46ICd0aWRlLWF4aXMxLWJldHdlZW4nLFxuICAgIENFTlRFUjogJ3RpZGUtYXhpczEtY2VudGVyJyxcbiAgICBFTkQ6ICd0aWRlLWF4aXMxLWVuZCcsXG4gICAgU1RBUlQ6ICd0aWRlLWF4aXMxLXN0YXJ0JyxcbiAgfSxcbiAgQVhJUzI6IHtcbiAgICBBUk9VTkQ6ICd0aWRlLWF4aXMyLWFyb3VuZCcsXG4gICAgQ0VOVEVSOiAndGlkZS1heGlzMi1jZW50ZXInLFxuICAgIEVORDogJ3RpZGUtYXhpczItZW5kJyxcbiAgICBTVEFSVDogJ3RpZGUtYXhpczItc3RhcnQnLFxuICB9LFxuICBCRzoge1xuICAgIEdMT0JBTDoge1xuICAgICAgUFJJTUFSWToge1xuICAgICAgICBFUlJPUjogJ3RpZGUtYmctcHJpbWFyeS1lcnJvcicsXG4gICAgICAgIElORk86ICd0aWRlLWJnLXByaW1hcnktaW5mbycsXG4gICAgICAgIFNVQ0NFU1M6ICd0aWRlLWJnLXByaW1hcnktc3VjY2VzcycsXG4gICAgICAgIFdBUk5JTkc6ICd0aWRlLWJnLXByaW1hcnktd2FybmluZycsXG4gICAgICB9LFxuICAgICAgU1VSRkFDRToge1xuICAgICAgICBFUlJPUjogJ3RpZGUtYmctc3VyZmFjZS1lcnJvcicsXG4gICAgICAgIElORk86ICd0aWRlLWJnLXN1cmZhY2UtaW5mbycsXG4gICAgICAgIFNVQ0NFU1M6ICd0aWRlLWJnLXN1cmZhY2Utc3VjY2VzcycsXG4gICAgICAgIFdBUk5JTkc6ICd0aWRlLWJnLXN1cmZhY2Utd2FybmluZycsXG4gICAgICB9LFxuICAgIH0sXG4gICAgSU5JVElBTDogJ3RpZGUtYmctaW5pdGlhbCcsXG4gICAgQkxVUjogJ3RpZGUtYmctYmx1cicsXG4gICAgUFJJTUFSWTogJ3RpZGUtYmctcHJpbWFyeScsXG4gICAgU0VDT05EQVJZOiAndGlkZS1iZy1zZWNvbmRhcnknLFxuICAgIFNVUkZBQ0U6IHtcbiAgICAgIEFDQ0VOVDogJ3RpZGUtYmctc3VyZmFjZS1hY2NlbnQnLFxuICAgICAgQlJBTkQ6ICd0aWRlLWJnLXN1cmZhY2UtYnJhbmQnLFxuICAgICAgREVGQVVMVDogJ3RpZGUtYmctc3VyZmFjZScsXG4gICAgICBGTE9BVElORzogJ3RpZGUtYmctc3VyZmFjZS1mbG9hdGluZycsXG4gICAgICBHUkFESUVOVDogJ3RpZGUtYmctc3VyZmFjZS1ncmFkaWVudCcsXG4gICAgICBWQVJJQU5UOiAndGlkZS1iZy1zdXJmYWNlLXZhcmlhbnQnLFxuICAgIH0sXG4gICAgVFJBTlNQQVJFTlQ6IHtcbiAgICAgIE9ORV9IVU5EUkVEOiAndGlkZS10cmFuc3BhcmVudC0xMDAnLFxuICAgICAgVFdPX0hVTkRSRUQ6ICd0aWRlLXRyYW5zcGFyZW50LTIwMCcsXG4gICAgICBUSFJFRV9IVU5EUkVEOiAndGlkZS10cmFuc3BhcmVudC0zMDAnLFxuICAgICAgRk9VUl9IVU5EUkVEOiAndGlkZS10cmFuc3BhcmVudC00MDAnLFxuICAgIH0sXG4gIH0sXG4gIEJPUkRFUjoge1xuICAgIENPTE9SOiB7XG4gICAgICBHTE9CQUw6IHtcbiAgICAgICAgRVJST1I6ICd0aWRlLWJvcmRlci1lcnJvcicsXG4gICAgICAgIElORk86ICd0aWRlLWJvcmRlci1pbmZvJyxcbiAgICAgICAgU1VDQ0VTUzogJ3RpZGUtYm9yZGVyLXN1Y2Nlc3MnLFxuICAgICAgICBXQVJOSU5HOiAndGlkZS1ib3JkZXItd2FybmluZycsXG4gICAgICB9LFxuICAgICAgSU5JVElBTDogJ3RpZGUtYm9yZGVyLWNvbG9yLWluaXRpYWwnLFxuICAgICAgREVGQVVMVDogJ3RpZGUtYm9yZGVyJyxcbiAgICAgIEZMT0FUSU5HOiAndGlkZS1ib3JkZXItZmxvYXRpbmcnLFxuICAgICAgSElHSDogJ3RpZGUtYm9yZGVyLWhpZ2gnLFxuICAgICAgTE9XOiAndGlkZS1ib3JkZXItbG93JyxcbiAgICAgIFBSSU1BUlk6ICd0aWRlLWJvcmRlci1wcmltYXJ5JyxcbiAgICB9LFxuICAgIFJBRElVUzoge1xuICAgICAgWkVSTzogJ3RpZGUtcmFkaXVzLTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtcmFkaXVzLTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1yYWRpdXMtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtcmFkaXVzLTEnLFxuICAgICAgRlVMTDogJ3RpZGUtcmFkaXVzLWZ1bGwnLFxuICAgIH0sXG4gICAgQk9UVE9NOiB7XG4gICAgICBaRVJPOiAndGlkZS1ib3JkZXItYm90dG9tLTAnLFxuICAgICAgT05FOiAndGlkZS1ib3JkZXItYm90dG9tLTEnLFxuICAgICAgVFdPOiAndGlkZS1ib3JkZXItYm90dG9tLTInLFxuICAgIH0sXG4gICAgRlVMTDoge1xuICAgICAgWkVSTzogJ3RpZGUtYm9yZGVyLTAnLFxuICAgICAgT05FOiAndGlkZS1ib3JkZXItMScsXG4gICAgICBUV086ICd0aWRlLWJvcmRlci0yJyxcbiAgICB9LFxuICAgIExFRlQ6IHtcbiAgICAgIFpFUk86ICd0aWRlLWJvcmRlci1sZWZ0LTAnLFxuICAgICAgT05FOiAndGlkZS1ib3JkZXItbGVmdC0xJyxcbiAgICAgIFRXTzogJ3RpZGUtYm9yZGVyLWxlZnQtMicsXG4gICAgfSxcbiAgICBSSUdIVDoge1xuICAgICAgWkVSTzogJ3RpZGUtYm9yZGVyLXJpZ2h0LTAnLFxuICAgICAgT05FOiAndGlkZS1ib3JkZXItcmlnaHQtMScsXG4gICAgICBUV086ICd0aWRlLWJvcmRlci1yaWdodC0yJyxcbiAgICB9LFxuICAgIFRPUDoge1xuICAgICAgWkVSTzogJ3RpZGUtYm9yZGVyLXRvcC0wJyxcbiAgICAgIE9ORTogJ3RpZGUtYm9yZGVyLXRvcC0xJyxcbiAgICAgIFRXTzogJ3RpZGUtYm9yZGVyLXRvcC0yJyxcbiAgICB9LFxuICB9LFxuICBCT1hfU0laSU5HOiB7XG4gICAgQk9SREVSX0JPWDogJ3RpZGUtYm94LWJvcmRlcicsXG4gICAgQ09OVEVOVF9CT1g6ICd0aWRlLWJveC1jb250ZW50JyxcbiAgfSxcbiAgQlJFQUtfSU5TSURFOiB7XG4gICAgQVZPSURfQ09MVU1OOiAndGlkZS1icmVhay1pbnNpZGUtYXZvaWQtY29sdW1uJyxcbiAgfSxcbiAgQlJFQUtfV09SRDoge1xuICAgIE9GRjogJ3RpZGUtYnJlYWstaW5pdGlhbCcsXG4gICAgT046ICd0aWRlLWJyZWFrLXdvcmQnLFxuICB9LFxuICBDT0xVTU5TOiB7XG4gICAgSU5JVElBTDogJ3RpZGUtY29sdW1ucy1pbml0aWFsJyxcbiAgICBPTkU6ICd0aWRlLWNvbHVtbnMtMScsXG4gICAgVFdPOiAndGlkZS1jb2x1bW5zLTInLFxuICAgIFRIUkVFOiAndGlkZS1jb2x1bW5zLTMnLFxuICAgIEZPVVI6ICd0aWRlLWNvbHVtbnMtNCcsXG4gIH0sXG4gIENVUlNPUjoge1xuICAgIE5PVF9BTExPV0VEOiAndGlkZS1jdXJzb3Itbm90LWFsbG93ZWQnLFxuICAgIFBPSU5URVI6ICd0aWRlLWN1cnNvci1wb2ludGVyJyxcbiAgICBURVhUOiAndGlkZS1jdXJzb3ItdGV4dCcsXG4gIH0sXG4gIERJU1BMQVk6IHtcbiAgICBCTE9DSzogJ3RpZGUtZGlzcGxheS1ibG9jaycsXG4gICAgQ09OVEVOVFM6ICd0aWRlLWRpc3BsYXktY29udGVudHMnLFxuICAgIEZMRVg6ICd0aWRlLWRpc3BsYXktZmxleCcsXG4gICAgR1JJRDogJ3RpZGUtZGlzcGxheS1ncmlkJyxcbiAgICBJTklUSUFMOiAndGlkZS1kaXNwbGF5LWluaXRpYWwnLFxuICAgIElOTElORTogJ3RpZGUtZGlzcGxheS1pbmxpbmUnLFxuICAgIElOTElORV9CTE9DSzogJ3RpZGUtZGlzcGxheS1pbmxpbmUtYmxvY2snLFxuICAgIElOTElORV9GTEVYOiAndGlkZS1kaXNwbGF5LWlubGluZS1mbGV4JyxcbiAgICBOT05FOiAndGlkZS1kaXNwbGF5LW5vbmUnLFxuICB9LFxuICBFTExJUFNJUzogJ3RpZGUtZWxsaXBzaXMnLFxuICBGTEVYOiB7XG4gICAgQkFTSVM6IHtcbiAgICAgIEFVVE86ICd0aWRlLWZsZXgtYmFzaXMtYXV0bycsXG4gICAgICBaRVJPOiAndGlkZS1mbGV4LWJhc2lzLTAnLFxuICAgIH0sXG4gICAgRElSRUNUSU9OOiB7XG4gICAgICBDT0xVTU46ICd0aWRlLWZsZXgtY29sdW1uJyxcbiAgICAgIENPTFVNTl9SRVZFUlNFOiAndGlkZS1mbGV4LWNvbHVtbi1yZXZlcnNlJyxcbiAgICAgIFJPVzogJ3RpZGUtZmxleC1yb3cnLFxuICAgICAgUk9XX1JFVkVSU0U6ICd0aWRlLWZsZXgtcm93LXJldmVyc2UnLFxuICAgIH0sXG4gICAgR1JPVzoge1xuICAgICAgT0ZGOiAndGlkZS1ncm93LW5vbmUnLFxuICAgICAgT046ICd0aWRlLWdyb3cnLFxuICAgIH0sXG4gICAgU0hSSU5LOiB7XG4gICAgICBPRkY6ICd0aWRlLXNocmluay1ub25lJyxcbiAgICAgIE9OOiAndGlkZS1zaHJpbmsnLFxuICAgIH0sXG4gICAgV1JBUDogJ3RpZGUtZmxleC13cmFwJyxcbiAgfSxcbiAgRk9OVDoge1xuICAgIENPTE9SOiB7XG4gICAgICBHTE9CQUw6IHtcbiAgICAgICAgRVJST1I6ICd0aWRlLWZvbnQtZXJyb3InLFxuICAgICAgICBJTkZPOiAndGlkZS1mb250LWluZm8nLFxuICAgICAgICBTVUNDRVNTOiAndGlkZS1mb250LXN1Y2Nlc3MnLFxuICAgICAgICBXQVJOSU5HOiAndGlkZS1mb250LXdhcm5pbmcnLFxuICAgICAgfSxcbiAgICAgIFBSSU1BUlk6ICd0aWRlLWZvbnQtb24tcHJpbWFyeScsXG4gICAgICBTRUNPTkRBUlk6ICd0aWRlLWZvbnQtb24tc2Vjb25kYXJ5JyxcbiAgICAgIFNVUkZBQ0U6IHtcbiAgICAgICAgQlJBTkQ6ICd0aWRlLWZvbnQtb24tc3VyZmFjZS1icmFuZCcsXG4gICAgICAgIERFRkFVTFQ6ICd0aWRlLWZvbnQtb24tc3VyZmFjZScsXG4gICAgICAgIElOVkVSU0U6ICd0aWRlLWZvbnQtb24tc3VyZmFjZS1pbnZlcnNlJyxcbiAgICAgICAgVkFSSUFOVDogJ3RpZGUtZm9udC1vbi1zdXJmYWNlLXZhcmlhbnQnLFxuICAgICAgICBWQVJJQU5UX0lOVkVSU0U6ICd0aWRlLWZvbnQtb24tc3VyZmFjZS12YXJpYW50LWludmVyc2UnLFxuICAgICAgfSxcbiAgICB9LFxuICAgIFJPTEU6IHtcbiAgICAgIERJU1BMQVlfMTogJ3RpZGUtdHlwb2dyYXBoeS1kaXNwbGF5LTEnLFxuICAgICAgSEVBRExJTkVfMTogJ3RpZGUtdHlwb2dyYXBoeS1oZWFkbGluZS0xJyxcbiAgICAgIEhFQURMSU5FXzI6ICd0aWRlLXR5cG9ncmFwaHktaGVhZGxpbmUtMicsXG4gICAgICBIRUFETElORV8zOiAndGlkZS10eXBvZ3JhcGh5LWhlYWRsaW5lLTMnLFxuICAgICAgVElUTEVfMTogJ3RpZGUtdHlwb2dyYXBoeS10aXRsZS0xJyxcbiAgICAgIFRJVExFXzI6ICd0aWRlLXR5cG9ncmFwaHktdGl0bGUtMicsXG4gICAgICBCT0RZXzE6ICd0aWRlLXR5cG9ncmFwaHktYm9keS0xJyxcbiAgICAgIEJPRFlfMjogJ3RpZGUtdHlwb2dyYXBoeS1ib2R5LTInLFxuICAgICAgTEFCRUxfMTogJ3RpZGUtdHlwb2dyYXBoeS1sYWJlbC0xJyxcbiAgICAgIExBQkVMXzFfU0VNSUJPTEQ6ICd0aWRlLXR5cG9ncmFwaHktbGFiZWwtMS1zZW1pYm9sZCcsXG4gICAgICBMQUJFTF8yOiAndGlkZS10eXBvZ3JhcGh5LWxhYmVsLTInLFxuICAgICAgTEFCRUxfMl9TRU1JQk9MRDogJ3RpZGUtdHlwb2dyYXBoeS1sYWJlbC0yLXNlbWlib2xkJyxcbiAgICAgIExBQkVMXzM6ICd0aWRlLXR5cG9ncmFwaHktbGFiZWwtMycsXG4gICAgICBMSU5LXzE6ICd0aWRlLXR5cG9ncmFwaHktbGluay0xJyxcbiAgICAgIExJTktfMjogJ3RpZGUtdHlwb2dyYXBoeS1saW5rLTInLFxuICAgICAgTElOS18zOiAndGlkZS10eXBvZ3JhcGh5LWxpbmstMycsXG4gICAgICBCVVRUT05fMTogJ3RpZGUtdHlwb2dyYXBoeS1idXR0b24tMScsXG4gICAgICBCVVRUT05fMjogJ3RpZGUtdHlwb2dyYXBoeS1idXR0b24tMicsXG4gICAgfSxcbiAgICBTSVpFOiB7XG4gICAgICBUV0VMVkU6ICd0aWRlLWZvbnQtMTInLFxuICAgICAgRk9VUlRFRU46ICd0aWRlLWZvbnQtMTQnLFxuICAgICAgU0lYVEVFTjogJ3RpZGUtZm9udC0xNicsXG4gICAgICBUV0VOVFk6ICd0aWRlLWZvbnQtMjAnLFxuICAgICAgVFdFTlRZX0ZPVVI6ICd0aWRlLWZvbnQtMjQnLFxuICAgICAgVEhJUlRZX1RXTzogJ3RpZGUtZm9udC0zMicsXG4gICAgfSxcbiAgICBXRUlHSFQ6IHtcbiAgICAgIEZPVVJfSFVORFJFRDogJ3RpZGUtZm9udC00MDAnLFxuICAgICAgRklWRV9IVU5EUkVEOiAndGlkZS1mb250LTUwMCcsXG4gICAgICBTSVhfSFVORFJFRDogJ3RpZGUtZm9udC02MDAnLFxuICAgICAgU0VWRU5fSFVORFJFRDogJ3RpZGUtZm9udC03MDAnLFxuICAgIH0sXG4gIH0sXG4gIEdBUDoge1xuICAgIFpFUk86ICd0aWRlLWdhcC0wJyxcbiAgICBRVUFSVEVSOiAndGlkZS1nYXAtMS80JyxcbiAgICBIQUxGOiAndGlkZS1nYXAtMS8yJyxcbiAgICBPTkU6ICd0aWRlLWdhcC0xJyxcbiAgICBUV086ICd0aWRlLWdhcC0yJyxcbiAgICBGT1VSOiAndGlkZS1nYXAtNCcsXG4gIH0sXG4gIEdSSUQ6IHtcbiAgICBFTkQ6IHtcbiAgICAgIE9ORTogJ3RpZGUtZW5kLTEnLFxuICAgICAgVFdPOiAndGlkZS1lbmQtMicsXG4gICAgICBUSFJFRTogJ3RpZGUtZW5kLTMnLFxuICAgICAgRk9VUjogJ3RpZGUtZW5kLTQnLFxuICAgICAgRklWRTogJ3RpZGUtZW5kLTUnLFxuICAgICAgU0lYOiAndGlkZS1lbmQtNicsXG4gICAgICBTRVZFTjogJ3RpZGUtZW5kLTcnLFxuICAgICAgRUlHSFQ6ICd0aWRlLWVuZC04JyxcbiAgICAgIE5JTkU6ICd0aWRlLWVuZC05JyxcbiAgICAgIFRFTjogJ3RpZGUtZW5kLTEwJyxcbiAgICAgIEVMRVZFTjogJ3RpZGUtZW5kLTExJyxcbiAgICAgIFRXRUxWRTogJ3RpZGUtZW5kLTEyJyxcbiAgICAgIFRISVJURUVOOiAndGlkZS1lbmQtMTMnLFxuICAgIH0sXG4gICAgRkxVSUQ6ICd0aWRlLWZsdWlkJyxcbiAgICBJVEVNOiAndGlkZS1ncmlkLWl0ZW0nLFxuICAgIExBWU9VVDogJ3RpZGUtZ3JpZC1sYXlvdXQnLFxuICAgIFNUQVJUOiB7XG4gICAgICBaRVJPOiAndGlkZS1zdGFydC0wJyxcbiAgICAgIE9ORTogJ3RpZGUtc3RhcnQtMScsXG4gICAgICBUV086ICd0aWRlLXN0YXJ0LTInLFxuICAgICAgVEhSRUU6ICd0aWRlLXN0YXJ0LTMnLFxuICAgICAgRk9VUjogJ3RpZGUtc3RhcnQtNCcsXG4gICAgICBGSVZFOiAndGlkZS1zdGFydC01JyxcbiAgICAgIFNJWDogJ3RpZGUtc3RhcnQtNicsXG4gICAgICBTRVZFTjogJ3RpZGUtc3RhcnQtNycsXG4gICAgICBFSUdIVDogJ3RpZGUtc3RhcnQtOCcsXG4gICAgICBOSU5FOiAndGlkZS1zdGFydC05JyxcbiAgICAgIFRFTjogJ3RpZGUtc3RhcnQtMTAnLFxuICAgICAgRUxFVkVOOiAndGlkZS1zdGFydC0xMScsXG4gICAgICBUV0VMVkU6ICd0aWRlLXN0YXJ0LTEyJyxcbiAgICB9LFxuICAgIFhMOiAndGlkZS1ncmlkLXhsJyxcbiAgfSxcbiAgSEVJR0hUOiB7XG4gICAgQVVUTzogJ3RpZGUtaGVpZ2h0LWF1dG8nLFxuICAgIFpFUk86ICd0aWRlLWhlaWdodC0wJyxcbiAgICBGVUxMOiAndGlkZS1oZWlnaHQtZnVsbCcsXG4gICAgTUFYX0ZVTEw6ICd0aWRlLW1heC1oZWlnaHQtZnVsbCcsXG4gIH0sXG4gIElTT0xBVElPTjoge1xuICAgIElTT0xBVEU6ICd0aWRlLWlzb2xhdGUnLFxuICB9LFxuICBMSVNUX0JVTExFVFM6IHtcbiAgICBPRkY6ICd0aWRlLWxpc3Qtbm9uZScsXG4gIH0sXG4gIE1BUkdJTjoge1xuICAgIEJPVFRPTToge1xuICAgICAgQVVUTzogJ3RpZGUtbWFyZ2luLWJvdHRvbS1hdXRvJyxcbiAgICAgIFpFUk86ICd0aWRlLW1hcmdpbi1ib3R0b20tMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1tYXJnaW4tYm90dG9tLTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1tYXJnaW4tYm90dG9tLTEvMicsXG4gICAgICBPTkU6ICd0aWRlLW1hcmdpbi1ib3R0b20tMScsXG4gICAgICBUV086ICd0aWRlLW1hcmdpbi1ib3R0b20tMicsXG4gICAgICBGT1VSOiAndGlkZS1tYXJnaW4tYm90dG9tLTQnLFxuICAgIH0sXG4gICAgRlVMTDoge1xuICAgICAgWkVSTzogJ3RpZGUtbWFyZ2luLTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtbWFyZ2luLTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1tYXJnaW4tMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtbWFyZ2luLTEnLFxuICAgICAgVFdPOiAndGlkZS1tYXJnaW4tMicsXG4gICAgICBGT1VSOiAndGlkZS1tYXJnaW4tNCcsXG4gICAgfSxcbiAgICBMRUZUOiB7XG4gICAgICBBVVRPOiAndGlkZS1tYXJnaW4tbGVmdC1hdXRvJyxcbiAgICAgIFpFUk86ICd0aWRlLW1hcmdpbi1sZWZ0LTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtbWFyZ2luLWxlZnQtMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLW1hcmdpbi1sZWZ0LTEvMicsXG4gICAgICBPTkU6ICd0aWRlLW1hcmdpbi1sZWZ0LTEnLFxuICAgICAgVFdPOiAndGlkZS1tYXJnaW4tbGVmdC0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLW1hcmdpbi1sZWZ0LTQnLFxuICAgIH0sXG4gICAgUklHSFQ6IHtcbiAgICAgIEFVVE86ICd0aWRlLW1hcmdpbi1yaWdodC1hdXRvJyxcbiAgICAgIFpFUk86ICd0aWRlLW1hcmdpbi1yaWdodC0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLW1hcmdpbi1yaWdodC0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtbWFyZ2luLXJpZ2h0LTEvMicsXG4gICAgICBPTkU6ICd0aWRlLW1hcmdpbi1yaWdodC0xJyxcbiAgICAgIFRXTzogJ3RpZGUtbWFyZ2luLXJpZ2h0LTInLFxuICAgICAgRk9VUjogJ3RpZGUtbWFyZ2luLXJpZ2h0LTQnLFxuICAgIH0sXG4gICAgVE9QOiB7XG4gICAgICBBVVRPOiAndGlkZS1tYXJnaW4tdG9wLWF1dG8nLFxuICAgICAgWkVSTzogJ3RpZGUtbWFyZ2luLXRvcC0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLW1hcmdpbi10b3AtMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLW1hcmdpbi10b3AtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtbWFyZ2luLXRvcC0xJyxcbiAgICAgIFRXTzogJ3RpZGUtbWFyZ2luLXRvcC0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLW1hcmdpbi10b3AtNCcsXG4gICAgfSxcbiAgICBYOiB7XG4gICAgICBBVVRPOiAndGlkZS1tYXJnaW4teC1hdXRvJyxcbiAgICAgIFpFUk86ICd0aWRlLW1hcmdpbi14LTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtbWFyZ2luLXgtMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLW1hcmdpbi14LTEvMicsXG4gICAgICBPTkU6ICd0aWRlLW1hcmdpbi14LTEnLFxuICAgICAgVFdPOiAndGlkZS1tYXJnaW4teC0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLW1hcmdpbi14LTQnLFxuICAgIH0sXG4gICAgWToge1xuICAgICAgWkVSTzogJ3RpZGUtbWFyZ2luLXktMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1tYXJnaW4teS0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtbWFyZ2luLXktMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtbWFyZ2luLXktMScsXG4gICAgICBUV086ICd0aWRlLW1hcmdpbi15LTInLFxuICAgICAgRk9VUjogJ3RpZGUtbWFyZ2luLXktNCcsXG4gICAgfSxcbiAgfSxcbiAgT0JKRUNUOiB7XG4gICAgQ0VOVEVSOiAndGlkZS1vYmplY3QtY2VudGVyJyxcbiAgICBDT05UQUlOOiAndGlkZS1vYmplY3QtY29udGFpbicsXG4gICAgQ09WRVI6ICd0aWRlLW9iamVjdC1jb3ZlcicsXG4gICAgU0NBTEVfRE9XTjogJ3RpZGUtb2JqZWN0LXNjYWxlLWRvd24nLFxuICB9LFxuICBPUEFDSVRZOiB7XG4gICAgT0ZGOiAndGlkZS1vcGFjaXR5LW5vbmUnLFxuICAgIE9OOiAndGlkZS1vcGFjaXR5JyxcbiAgfSxcbiAgT1ZFUkZMT1c6IHtcbiAgICBYOiB7XG4gICAgICBBVVRPOiAndGlkZS14LWF1dG8nLFxuICAgICAgSElEREVOOiAndGlkZS14LWhpZGRlbicsXG4gICAgICBTQ1JPTEw6ICd0aWRlLXgtc2Nyb2xsJyxcbiAgICB9LFxuICAgIFhZOiB7XG4gICAgICBBVVRPOiAndGlkZS14eS1hdXRvJyxcbiAgICAgIEhJRERFTjogJ3RpZGUteHktaGlkZGVuJyxcbiAgICB9LFxuICAgIFk6IHtcbiAgICAgIEFVVE86ICd0aWRlLXktYXV0bycsXG4gICAgICBISURERU46ICd0aWRlLXktaGlkZGVuJyxcbiAgICB9LFxuICB9LFxuICBQQURESU5HOiB7XG4gICAgQk9UVE9NOiB7XG4gICAgICBaRVJPOiAndGlkZS1wYWRkaW5nLWJvdHRvbS0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLXBhZGRpbmctYm90dG9tLTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1wYWRkaW5nLWJvdHRvbS0xLzInLFxuICAgICAgT05FOiAndGlkZS1wYWRkaW5nLWJvdHRvbS0xJyxcbiAgICAgIFRXTzogJ3RpZGUtcGFkZGluZy1ib3R0b20tMicsXG4gICAgICBGT1VSOiAndGlkZS1wYWRkaW5nLWJvdHRvbS00JyxcbiAgICB9LFxuICAgIEZVTEw6IHtcbiAgICAgIFpFUk86ICd0aWRlLXBhZGRpbmctMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1wYWRkaW5nLTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1wYWRkaW5nLTEvMicsXG4gICAgICBPTkU6ICd0aWRlLXBhZGRpbmctMScsXG4gICAgICBUV086ICd0aWRlLXBhZGRpbmctMicsXG4gICAgICBGT1VSOiAndGlkZS1wYWRkaW5nLTQnLFxuICAgIH0sXG4gICAgTEVGVDoge1xuICAgICAgWkVSTzogJ3RpZGUtcGFkZGluZy1sZWZ0LTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtcGFkZGluZy1sZWZ0LTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1wYWRkaW5nLWxlZnQtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtcGFkZGluZy1sZWZ0LTEnLFxuICAgICAgVFdPOiAndGlkZS1wYWRkaW5nLWxlZnQtMicsXG4gICAgICBGT1VSOiAndGlkZS1wYWRkaW5nLWxlZnQtNCcsXG4gICAgfSxcbiAgICBSSUdIVDoge1xuICAgICAgWkVSTzogJ3RpZGUtcGFkZGluZy1yaWdodC0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLXBhZGRpbmctcmlnaHQtMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLXBhZGRpbmctcmlnaHQtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtcGFkZGluZy1yaWdodC0xJyxcbiAgICAgIFRXTzogJ3RpZGUtcGFkZGluZy1yaWdodC0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLXBhZGRpbmctcmlnaHQtNCcsXG4gICAgfSxcbiAgICBUT1A6IHtcbiAgICAgIFpFUk86ICd0aWRlLXBhZGRpbmctdG9wLTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtcGFkZGluZy10b3AtMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLXBhZGRpbmctdG9wLTEvMicsXG4gICAgICBPTkU6ICd0aWRlLXBhZGRpbmctdG9wLTEnLFxuICAgICAgVFdPOiAndGlkZS1wYWRkaW5nLXRvcC0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLXBhZGRpbmctdG9wLTQnLFxuICAgIH0sXG4gICAgWDoge1xuICAgICAgWkVSTzogJ3RpZGUtcGFkZGluZy14LTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtcGFkZGluZy14LTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1wYWRkaW5nLXgtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtcGFkZGluZy14LTEnLFxuICAgICAgVFdPOiAndGlkZS1wYWRkaW5nLXgtMicsXG4gICAgICBGT1VSOiAndGlkZS1wYWRkaW5nLXgtNCcsXG4gICAgfSxcbiAgICBZOiB7XG4gICAgICBaRVJPOiAndGlkZS1wYWRkaW5nLXktMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1wYWRkaW5nLXktMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLXBhZGRpbmcteS0xLzInLFxuICAgICAgT05FOiAndGlkZS1wYWRkaW5nLXktMScsXG4gICAgICBUV086ICd0aWRlLXBhZGRpbmcteS0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLXBhZGRpbmcteS00JyxcbiAgICB9LFxuICB9LFxuICBQT0lOVEVSX0VWRU5UUzoge1xuICAgIE9GRjogJ3RpZGUtcG9pbnRlci1ldmVudHMtbm9uZScsXG4gICAgT046ICd0aWRlLXBvaW50ZXItZXZlbnRzJyxcbiAgfSxcbiAgUE9TSVRJT046IHtcbiAgICBBQlNPTFVURTogJ3RpZGUtcG9zaXRpb24tYWJzb2x1dGUnLFxuICAgIEZJWEVEOiAndGlkZS1wb3NpdGlvbi1maXhlZCcsXG4gICAgUkVMQVRJVkU6ICd0aWRlLXBvc2l0aW9uLXJlbGF0aXZlJyxcbiAgICBTVEFUSUM6ICd0aWRlLXBvc2l0aW9uLXN0YXRpYycsXG4gICAgU1RJQ0tZOiAndGlkZS1wb3NpdGlvbi1zdGlja3knLFxuICB9LFxuICBQT1NJVElPTklORzoge1xuICAgIEJPVFRPTTogJ3RpZGUtYm90dG9tLTAnLFxuICAgIExFRlQ6ICd0aWRlLWxlZnQtMCcsXG4gICAgUklHSFQ6ICd0aWRlLXJpZ2h0LTAnLFxuICAgIFRPUDogJ3RpZGUtdG9wLTAnLFxuICB9LFxuICBSQVRJTzoge1xuICAgIE9ORV9UT19PTkU6ICd0aWRlLXJhdGlvLTEvMScsXG4gICAgU0lYVEVFTl9UT19OSU5FOiAndGlkZS1yYXRpby0xNi85JyxcbiAgICBUSFJFRV9UT19UV086ICd0aWRlLXJhdGlvLTMvMicsXG4gIH0sXG4gIFNDUk9MTEJBUjoge1xuICAgIE9GRjogJ3RpZGUtc2Nyb2xsYmFyLW5vbmUnLFxuICB9LFxuICBTSEFET1c6IHtcbiAgICBJTklUSUFMOiAndGlkZS1zaGFkb3ctaW5pdGlhbCcsXG4gICAgQk9UVE9NOiAndGlkZS1zaGFkb3ctYm90dG9tJyxcbiAgICBUT1A6ICd0aWRlLXNoYWRvdy10b3AnLFxuICAgIFRFWFQ6ICd0aWRlLXNoYWRvdy10ZXh0JyxcbiAgfSxcbiAgU05BUDoge1xuICAgIE9OOiAndGlkZS1zY3JvbGwtc25hcCcsXG4gIH0sXG4gIFNOQVBfQUxJR046IHtcbiAgICBTVEFSVDogJ3RpZGUtc2Nyb2xsLXNuYXAtc3RhcnQnLFxuICB9LFxuICBURVhUX1RSQU5TRk9STToge1xuICAgIExPV0VSOiAndGlkZS10ZXh0LXRyYW5zZm9ybS1sb3dlcicsXG4gICAgTk9ORTogJ3RpZGUtdGV4dC10cmFuc2Zvcm0tbm9uZScsXG4gICAgVVBQRVI6ICd0aWRlLXRleHQtdHJhbnNmb3JtLXVwcGVyJyxcbiAgfSxcbiAgVU5ERVJMSU5FOiB7XG4gICAgSE9WRVI6ICd0aWRlLXVuZGVybGluZS1ob3ZlcicsXG4gICAgT0ZGOiAndGlkZS11bmRlcmxpbmUtbm9uZScsXG4gICAgT046ICd0aWRlLXVuZGVybGluZScsXG4gIH0sXG4gIFZJU0lCSUxJVFk6IHtcbiAgICBPRkY6ICd0aWRlLXZpc2libGUtbm9uZScsXG4gICAgT046ICd0aWRlLXZpc2libGUnLFxuICB9LFxuICBXSElURVNQQUNFX1dSQVA6IHtcbiAgICBPRkY6ICd0aWRlLXdoaXRlc3BhY2Utbm93cmFwJyxcbiAgfSxcbiAgV0lEVEg6IHtcbiAgICBBVVRPOiAndGlkZS13aWR0aC1hdXRvJyxcbiAgICBaRVJPOiAndGlkZS13aWR0aC0wJyxcbiAgICBGVUxMOiAndGlkZS13aWR0aC1mdWxsJyxcbiAgICBNQVhfRlVMTDogJ3RpZGUtbWF4LXdpZHRoLWZ1bGwnLFxuICB9LFxuICBaX0lOREVYOiB7XG4gICAgSU5JVElBTDogJ3RpZGUtei1pbmRleC1pbml0aWFsJyxcbiAgICBPTkU6ICd0aWRlLXotaW5kZXgtMScsXG4gIH0sXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBDc3NVdGlsaXR5ID0gKHR5cGVvZiBDU1MpW2tleW9mIHR5cGVvZiBDU1NdO1xuXG5leHBvcnQgY29uc3QgY3NzU29ydE9yZGVyID0gW1xuICBDU1MuRElTUExBWS5CTE9DSyxcbiAgQ1NTLkRJU1BMQVkuQ09OVEVOVFMsXG4gIENTUy5ESVNQTEFZLkZMRVgsXG4gIENTUy5ESVNQTEFZLkdSSUQsXG4gIENTUy5ESVNQTEFZLk5PTkUsXG4gIENTUy5ESVNQTEFZLklOSVRJQUwsXG4gIENTUy5ESVNQTEFZLklOTElORSxcbiAgQ1NTLkRJU1BMQVkuSU5MSU5FX0JMT0NLLFxuICBDU1MuRElTUExBWS5JTkxJTkVfRkxFWCxcbiAgQ1NTLkFYSVMxLkFST1VORCxcbiAgQ1NTLkFYSVMxLkJFVFdFRU4sXG4gIENTUy5BWElTMS5DRU5URVIsXG4gIENTUy5BWElTMS5FTkQsXG4gIENTUy5BWElTMS5TVEFSVCxcbiAgQ1NTLkFYSVMyLkFST1VORCxcbiAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgQ1NTLkFYSVMyLkVORCxcbiAgQ1NTLkFYSVMyLlNUQVJULFxuICBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLFxuICBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OX1JFVkVSU0UsXG4gIENTUy5GTEVYLkRJUkVDVElPTi5ST1csXG4gIENTUy5GTEVYLkRJUkVDVElPTi5ST1dfUkVWRVJTRSxcbiAgQ1NTLkdBUC5PTkUsXG4gIENTUy5HQVAuSEFMRixcbiAgQ1NTLkdBUC5RVUFSVEVSLFxuICBDU1MuR0FQLlRXTyxcbiAgQ1NTLkdBUC5GT1VSLFxuICBDU1MuRkxFWC5CQVNJUy5aRVJPLFxuICBDU1MuRkxFWC5HUk9XLk9OLFxuICBDU1MuRkxFWC5HUk9XLk9GRixcbiAgQ1NTLkZMRVguU0hSSU5LLk9OLFxuICBDU1MuRkxFWC5TSFJJTksuT0ZGLFxuICBDU1MuRkxFWC5XUkFQLFxuICBDU1MuUE9TSVRJT04uQUJTT0xVVEUsXG4gIENTUy5QT1NJVElPTi5GSVhFRCxcbiAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICBDU1MuUE9TSVRJT04uU1RJQ0tZLFxuICBDU1MuUE9TSVRJT05JTkcuVE9QLFxuICBDU1MuUE9TSVRJT05JTkcuUklHSFQsXG4gIENTUy5QT1NJVElPTklORy5CT1RUT00sXG4gIENTUy5QT1NJVElPTklORy5MRUZULFxuICBDU1MuQk9YX1NJWklORy5CT1JERVJfQk9YLFxuICBDU1MuQk9YX1NJWklORy5DT05URU5UX0JPWCxcbiAgQ1NTLk1BUkdJTi5GVUxMLlpFUk8sXG4gIENTUy5NQVJHSU4uRlVMTC5PTkUsXG4gIENTUy5NQVJHSU4uRlVMTC5IQUxGLFxuICBDU1MuTUFSR0lOLkZVTEwuUVVBUlRFUixcbiAgQ1NTLk1BUkdJTi5GVUxMLlRXTyxcbiAgQ1NTLk1BUkdJTi5GVUxMLkZPVVIsXG4gIENTUy5NQVJHSU4uWS5aRVJPLFxuICBDU1MuTUFSR0lOLlkuT05FLFxuICBDU1MuTUFSR0lOLlkuSEFMRixcbiAgQ1NTLk1BUkdJTi5ZLlFVQVJURVIsXG4gIENTUy5NQVJHSU4uWS5UV08sXG4gIENTUy5NQVJHSU4uWS5GT1VSLFxuICBDU1MuTUFSR0lOLlRPUC5aRVJPLFxuICBDU1MuTUFSR0lOLlRPUC5PTkUsXG4gIENTUy5NQVJHSU4uVE9QLkhBTEYsXG4gIENTUy5NQVJHSU4uVE9QLlFVQVJURVIsXG4gIENTUy5NQVJHSU4uVE9QLlRXTyxcbiAgQ1NTLk1BUkdJTi5UT1AuRk9VUixcbiAgQ1NTLk1BUkdJTi5YLlpFUk8sXG4gIENTUy5NQVJHSU4uWC5PTkUsXG4gIENTUy5NQVJHSU4uWC5IQUxGLFxuICBDU1MuTUFSR0lOLlguUVVBUlRFUixcbiAgQ1NTLk1BUkdJTi5YLlRXTyxcbiAgQ1NTLk1BUkdJTi5YLkZPVVIsXG4gIENTUy5NQVJHSU4uWC5BVVRPLFxuICBDU1MuTUFSR0lOLlJJR0hULlpFUk8sXG4gIENTUy5NQVJHSU4uUklHSFQuT05FLFxuICBDU1MuTUFSR0lOLlJJR0hULkhBTEYsXG4gIENTUy5NQVJHSU4uUklHSFQuUVVBUlRFUixcbiAgQ1NTLk1BUkdJTi5SSUdIVC5UV08sXG4gIENTUy5NQVJHSU4uUklHSFQuRk9VUixcbiAgQ1NTLk1BUkdJTi5SSUdIVC5BVVRPLFxuICBDU1MuTUFSR0lOLkJPVFRPTS5aRVJPLFxuICBDU1MuTUFSR0lOLkJPVFRPTS5PTkUsXG4gIENTUy5NQVJHSU4uQk9UVE9NLkhBTEYsXG4gIENTUy5NQVJHSU4uQk9UVE9NLlFVQVJURVIsXG4gIENTUy5NQVJHSU4uQk9UVE9NLlRXTyxcbiAgQ1NTLk1BUkdJTi5CT1RUT00uRk9VUixcbiAgQ1NTLk1BUkdJTi5MRUZULlpFUk8sXG4gIENTUy5NQVJHSU4uTEVGVC5PTkUsXG4gIENTUy5NQVJHSU4uTEVGVC5IQUxGLFxuICBDU1MuTUFSR0lOLkxFRlQuUVVBUlRFUixcbiAgQ1NTLk1BUkdJTi5MRUZULlRXTyxcbiAgQ1NTLk1BUkdJTi5MRUZULkZPVVIsXG4gIENTUy5NQVJHSU4uTEVGVC5BVVRPLFxuICBDU1MuQk9SREVSLkZVTEwuT05FLFxuICBDU1MuQk9SREVSLkZVTEwuVFdPLFxuICBDU1MuQk9SREVSLlRPUC5PTkUsXG4gIENTUy5CT1JERVIuVE9QLlRXTyxcbiAgQ1NTLkJPUkRFUi5SSUdIVC5PTkUsXG4gIENTUy5CT1JERVIuUklHSFQuVFdPLFxuICBDU1MuQk9SREVSLkJPVFRPTS5PTkUsXG4gIENTUy5CT1JERVIuQk9UVE9NLlRXTyxcbiAgQ1NTLkJPUkRFUi5MRUZULk9ORSxcbiAgQ1NTLkJPUkRFUi5MRUZULlRXTyxcbiAgQ1NTLkJPUkRFUi5SQURJVVMuT05FLFxuICBDU1MuQk9SREVSLlJBRElVUy5IQUxGLFxuICBDU1MuQk9SREVSLlJBRElVUy5RVUFSVEVSLFxuICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICBDU1MuUEFERElORy5GVUxMLlpFUk8sXG4gIENTUy5QQURESU5HLkZVTEwuT05FLFxuICBDU1MuUEFERElORy5GVUxMLkhBTEYsXG4gIENTUy5QQURESU5HLkZVTEwuUVVBUlRFUixcbiAgQ1NTLlBBRERJTkcuRlVMTC5UV08sXG4gIENTUy5QQURESU5HLkZVTEwuRk9VUixcbiAgQ1NTLlBBRERJTkcuWS5aRVJPLFxuICBDU1MuUEFERElORy5ZLk9ORSxcbiAgQ1NTLlBBRERJTkcuWS5IQUxGLFxuICBDU1MuUEFERElORy5ZLlFVQVJURVIsXG4gIENTUy5QQURESU5HLlkuVFdPLFxuICBDU1MuUEFERElORy5ZLkZPVVIsXG4gIENTUy5QQURESU5HLlRPUC5aRVJPLFxuICBDU1MuUEFERElORy5UT1AuT05FLFxuICBDU1MuUEFERElORy5UT1AuSEFMRixcbiAgQ1NTLlBBRERJTkcuVE9QLlFVQVJURVIsXG4gIENTUy5QQURESU5HLlRPUC5UV08sXG4gIENTUy5QQURESU5HLlRPUC5GT1VSLFxuICBDU1MuUEFERElORy5YLlpFUk8sXG4gIENTUy5QQURESU5HLlguT05FLFxuICBDU1MuUEFERElORy5YLkhBTEYsXG4gIENTUy5QQURESU5HLlguUVVBUlRFUixcbiAgQ1NTLlBBRERJTkcuWC5UV08sXG4gIENTUy5QQURESU5HLlguRk9VUixcbiAgQ1NTLlBBRERJTkcuUklHSFQuWkVSTyxcbiAgQ1NTLlBBRERJTkcuUklHSFQuT05FLFxuICBDU1MuUEFERElORy5SSUdIVC5IQUxGLFxuICBDU1MuUEFERElORy5SSUdIVC5RVUFSVEVSLFxuICBDU1MuUEFERElORy5SSUdIVC5UV08sXG4gIENTUy5QQURESU5HLlJJR0hULkZPVVIsXG4gIENTUy5QQURESU5HLkJPVFRPTS5aRVJPLFxuICBDU1MuUEFERElORy5CT1RUT00uT05FLFxuICBDU1MuUEFERElORy5CT1RUT00uSEFMRixcbiAgQ1NTLlBBRERJTkcuQk9UVE9NLlFVQVJURVIsXG4gIENTUy5QQURESU5HLkJPVFRPTS5UV08sXG4gIENTUy5QQURESU5HLkJPVFRPTS5GT1VSLFxuICBDU1MuUEFERElORy5MRUZULlpFUk8sXG4gIENTUy5QQURESU5HLkxFRlQuT05FLFxuICBDU1MuUEFERElORy5MRUZULkhBTEYsXG4gIENTUy5QQURESU5HLkxFRlQuUVVBUlRFUixcbiAgQ1NTLlBBRERJTkcuTEVGVC5UV08sXG4gIENTUy5QQURESU5HLkxFRlQuRk9VUixcbiAgQ1NTLldJRFRILk1BWF9GVUxMLFxuICBDU1MuV0lEVEguWkVSTyxcbiAgQ1NTLldJRFRILkZVTEwsXG4gIENTUy5IRUlHSFQuWkVSTyxcbiAgQ1NTLkhFSUdIVC5GVUxMLFxuICBDU1MuQUxJR04uWS5NSURETEUsXG4gIENTUy5CUkVBS19XT1JELFxuICBDU1MuQ1VSU09SLk5PVF9BTExPV0VELFxuICBDU1MuQ1VSU09SLlBPSU5URVIsXG4gIENTUy5DVVJTT1IuVEVYVCxcbiAgQ1NTLkZPTlQuU0laRS5UV0VMVkUsXG4gIENTUy5GT05ULlNJWkUuRk9VUlRFRU4sXG4gIENTUy5GT05ULlNJWkUuU0lYVEVFTixcbiAgQ1NTLkZPTlQuU0laRS5UV0VOVFksXG4gIENTUy5GT05ULlNJWkUuVFdFTlRZX0ZPVVIsXG4gIENTUy5GT05ULlNJWkUuVEhJUlRZX1RXTyxcbiAgQ1NTLkZPTlQuV0VJR0hULkZPVVJfSFVORFJFRCxcbiAgQ1NTLkZPTlQuV0VJR0hULkZJVkVfSFVORFJFRCxcbiAgQ1NTLkZPTlQuV0VJR0hULlNJWF9IVU5EUkVELFxuICBDU1MuRk9OVC5XRUlHSFQuU0VWRU5fSFVORFJFRCxcbiAgQ1NTLkxJU1RfQlVMTEVUUy5PRkYsXG4gIENTUy5PQkpFQ1QuQ0VOVEVSLFxuICBDU1MuT0JKRUNULkNPTlRBSU4sXG4gIENTUy5PQkpFQ1QuQ09WRVIsXG4gIENTUy5PQkpFQ1QuU0NBTEVfRE9XTixcbiAgQ1NTLlBPSU5URVJfRVZFTlRTLk9OLFxuICBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGLFxuICBDU1MuU0NST0xMQkFSLk9GRixcbiAgQ1NTLlNIQURPVy5CT1RUT00sXG4gIENTUy5TSEFET1cuVE9QLFxuICBDU1MuU05BUC5PTixcbiAgQ1NTLlNOQVBfQUxJR04uU1RBUlQsXG4gIENTUy5BTElHTi5YLkxFRlQsXG4gIENTUy5BTElHTi5YLkNFTlRFUixcbiAgQ1NTLkFMSUdOLlguUklHSFQsXG4gIENTUy5URVhUX1RSQU5TRk9STS5MT1dFUixcbiAgQ1NTLlRFWFRfVFJBTlNGT1JNLk5PTkUsXG4gIENTUy5URVhUX1RSQU5TRk9STS5VUFBFUixcbiAgQ1NTLlVOREVSTElORS5IT1ZFUixcbiAgQ1NTLlVOREVSTElORS5PRkYsXG4gIENTUy5VTkRFUkxJTkUuT04sXG4gIENTUy5WSVNJQklMSVRZLk9OLFxuICBDU1MuVklTSUJJTElUWS5PRkYsXG4gIENTUy5XSElURVNQQUNFX1dSQVAuT0ZGLFxuICBDU1MuT1ZFUkZMT1cuWFkuQVVUTyxcbiAgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTixcbiAgQ1NTLk9WRVJGTE9XLlguQVVUTyxcbiAgQ1NTLk9WRVJGTE9XLlguSElEREVOLFxuICBDU1MuT1ZFUkZMT1cuWC5TQ1JPTEwsXG4gIENTUy5PVkVSRkxPVy5ZLkFVVE8sXG4gIENTUy5PVkVSRkxPVy5ZLkhJRERFTixcbiAgQ1NTLlpfSU5ERVguT05FLFxuXSBhcyBjb25zdDtcbiIsImV4cG9ydCBjb25zdCBSRUFMTSA9IHtcbiAgQUVSTzogJ2Flcm8nLFxuICBBVFY6ICdhdHYnLFxuICBCT0FUTUFSVDogJ2JvYXRtYXJ0JyxcbiAgQ1lDTEU6ICdjeWNsZScsXG4gIEVRVUlQTUVOVDogJ2VxdWlwbWVudCcsXG4gIFBXQzogJ3B3YycsXG4gIFJWOiAncnYnLFxuICBTTk9XOiAnc25vdycsXG4gIFRSVUNLOiAndHJ1Y2snLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgUmVhbG1LZXkgPSBrZXlvZiB0eXBlb2YgUkVBTE07XG5leHBvcnQgdHlwZSBSZWFsbSA9ICh0eXBlb2YgUkVBTE0pW1JlYWxtS2V5XTtcbiIsImV4cG9ydCBjb25zdCBTSVpFID0ge1xuICBMQVJHRTogJ2xhcmdlJyxcbiAgU01BTEw6ICdzbWFsbCcsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBTaXplID0gKHR5cGVvZiBTSVpFKVtrZXlvZiB0eXBlb2YgU0laRV07XG5cbmV4cG9ydCBjb25zdCBTSVpFX0JVVFRPTiA9IHtcbiAgTEFSR0U6ICdsYXJnZScsXG4gIFNNQUxMOiAnc21hbGwnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgU2l6ZUJ1dHRvbiA9ICh0eXBlb2YgU0laRSlba2V5b2YgdHlwZW9mIFNJWkVdO1xuIiwiY29uc3QgY2FwaXRhbGl6ZUZpcnN0ID0gKHN0cmluZzogc3RyaW5nKSA9PiB7XG4gIHJldHVybiBzdHJpbmcuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBzdHJpbmcuc2xpY2UoMSk7XG59O1xuXG5jb25zdCBmb3JtYXRDYW1lbENhc2UgPSAoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIHJldHVybiBpbnB1dCAmJiB0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnXG4gICAgPyBpbnB1dFxuICAgICAgICAucmVwbGFjZSgvXltcXHNfLV0vLCAnJylcbiAgICAgICAgLnJlcGxhY2UoLyhbYS16XXsxfSkoW0EtWl17MX0pL2csICckMSAkMicpXG4gICAgICAgIC5yZXBsYWNlKC9bXFxzXy1dL2csICcgJylcbiAgICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgICAgLnNwbGl0KCcgJylcbiAgICAgICAgLm1hcCgod29yZCwgaW5kZXgpID0+IChpbmRleCA9PT0gMCA/IHdvcmQgOiB3b3JkLnNsaWNlKDAsIDEpLnRvVXBwZXJDYXNlKCkgKyB3b3JkLnNsaWNlKDEpKSlcbiAgICAgICAgLmpvaW4oJycpXG4gICAgOiBpbnB1dDtcbn07XG5cbmNvbnN0IGZvcm1hdEtlYmFiQ2FzZSA9IChpbnB1dDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgcmV0dXJuIGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZydcbiAgICA/IGlucHV0XG4gICAgICAgIC5yZXBsYWNlKC8oW2Etel17MX0pKFtBLVpdezF9KS9nLCAnJDEgJDInKVxuICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAucmVwbGFjZSgvW1xcc18tXS9nLCAnLScpXG4gICAgOiBpbnB1dDtcbn07XG5cbmNvbnN0IGZvcm1hdExhYmVsID0gKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgY29uc3QgbGFiZWxNYXA6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7XG4gICAgZmFsc2U6ICdObycsXG4gICAgdHJ1ZTogJ1llcycsXG4gIH07XG4gIHJldHVybiBPYmplY3QuaGFzT3duKGxhYmVsTWFwLCB2YWx1ZSkgPyBsYWJlbE1hcFt2YWx1ZV0gOiB2YWx1ZTtcbn07XG5cbmNvbnN0IGZvcm1hdE51bWJlciA9IChpbnB1dDogbnVtYmVyIHwgc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgbGV0IG91dHB1dCA9IGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ251bWJlcicgPyBuZXcgSW50bC5OdW1iZXJGb3JtYXQoKS5mb3JtYXQoaW5wdXQpIDogU3RyaW5nKGlucHV0IHx8ICcnKTtcbiAgbGV0IGRpZ2l0cyA9IG91dHB1dDtcblxuICBpZiAoaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJykge1xuICAgIGRpZ2l0cyA9IGRpZ2l0cy5yZXBsYWNlKC9cXEQvZywgJycpO1xuICAgIGlmIChOdW1iZXIoZGlnaXRzKSkge1xuICAgICAgb3V0cHV0ID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KCkuZm9ybWF0KE51bWJlcihkaWdpdHMpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0cHV0ID0gJzAnO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBvdXRwdXQ7XG59O1xuXG5jb25zdCBmb3JtYXRQYXNjYWxDYXNlID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJ1xuICAgID8gaW5wdXRcbiAgICAgICAgLnJlcGxhY2UoLyhbYS16XXsxfSkoW0EtWl17MX0pL2csICckMSAkMicpXG4gICAgICAgIC5yZXBsYWNlKC9bXFxzXy1dL2csICcgJylcbiAgICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgICAgLnNwbGl0KCcgJylcbiAgICAgICAgLm1hcCgod29yZCkgPT4gd29yZC5zbGljZSgwLCAxKS50b1VwcGVyQ2FzZSgpICsgd29yZC5zbGljZSgxKSlcbiAgICAgICAgLmpvaW4oJycpXG4gICAgOiBpbnB1dDtcbn07XG5cbmNvbnN0IGZvcm1hdFBob25lID0gKGlucHV0OiBudW1iZXIgfCBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBsZXQgb3V0cHV0ID0gaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnbnVtYmVyJyA/IFN0cmluZyhpbnB1dCkgOiBTdHJpbmcoaW5wdXQgfHwgJycpO1xuICBsZXQgZGlnaXRzID0gb3V0cHV0O1xuICBkaWdpdHMgPSBkaWdpdHMucmVwbGFjZSgvXFxEL2csICcnKTtcblxuICBzd2l0Y2ggKGRpZ2l0cy5sZW5ndGgpIHtcbiAgICBjYXNlIDc6XG4gICAgICBvdXRwdXQgPSBgJHtkaWdpdHMuc2xpY2UoMCwgMyl9LSR7ZGlnaXRzLnNsaWNlKDMpfWA7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDEwOlxuICAgICAgb3V0cHV0ID0gYCR7ZGlnaXRzLnNsaWNlKDAsIDMpfS0ke2RpZ2l0cy5zbGljZSgzLCA2KX0tJHtkaWdpdHMuc2xpY2UoNil9YDtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMTE6XG4gICAgICBvdXRwdXQgPSBgJHtkaWdpdHMuc2xpY2UoMCwgMSl9LSR7ZGlnaXRzLnNsaWNlKDEsIDQpfS0ke2RpZ2l0cy5zbGljZSg0LCA3KX0tJHtkaWdpdHMuc2xpY2UoNyl9YDtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBvdXRwdXQgPSBkaWdpdHM7XG4gICAgICBicmVhaztcbiAgfVxuXG4gIHJldHVybiBvdXRwdXQ7XG59O1xuXG5jb25zdCBmb3JtYXRQcmljZSA9IChpbnB1dDogbnVtYmVyIHwgc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgY29uc3Qgb3V0cHV0ID0gaW5wdXQgPyBmb3JtYXROdW1iZXIoaW5wdXQpIDogU3RyaW5nKGlucHV0IHx8ICcwJyk7XG4gIHJldHVybiBgJCR7b3V0cHV0fWA7XG59O1xuXG5jb25zdCBmb3JtYXRRdW90ZXMgPSAodmFsdWU6IHN0cmluZykgPT4ge1xuICBpZiAodmFsdWUuc3RhcnRzV2l0aCgnXCInKSAmJiB2YWx1ZS5lbmRzV2l0aCgnXCInKSkge1xuICAgIHJldHVybiB2YWx1ZS5zbGljZSgxLCAtMSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG59O1xuXG5jb25zdCBmb3JtYXRTZW50ZW5jZUNhc2UgPSAoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGxldCBzZW50ZW5jZUNhc2UgPSBpbnB1dDtcblxuICBpZiAoaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJykge1xuICAgIGNvbnN0IGxvd2VyQ2FzZSA9IGlucHV0XG4gICAgICAucmVwbGFjZSgvKFthLXpdezF9KShbQS1aXXsxfSkvZywgJyQxICQyJylcbiAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAucmVwbGFjZSgvW1xcc18tXS9nLCAnICcpO1xuXG4gICAgc2VudGVuY2VDYXNlID0gbG93ZXJDYXNlLnNsaWNlKDAsIDEpLnRvVXBwZXJDYXNlKCkgKyBsb3dlckNhc2Uuc2xpY2UoMSk7XG4gIH1cblxuICByZXR1cm4gc2VudGVuY2VDYXNlO1xufTtcblxuY29uc3QgZm9ybWF0U25ha2VDYXNlID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJ1xuICAgID8gaW5wdXRcbiAgICAgICAgLnJlcGxhY2UoLyhbYS16XXsxfSkoW0EtWl17MX0pL2csICckMSAkMicpXG4gICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAgIC5yZXBsYWNlKC9bXFxzXy1dL2csICdfJylcbiAgICA6IGlucHV0O1xufTtcblxuY29uc3QgZm9ybWF0VGl0bGVDYXNlID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJ1xuICAgID8gaW5wdXRcbiAgICAgICAgLnJlcGxhY2UoLyhbYS16XXsxfSkoW0EtWl17MX0pL2csICckMSAkMicpXG4gICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAgIC5yZXBsYWNlKC9bXFxzXy1dL2csICcgJylcbiAgICAgICAgLnNwbGl0KCcgJylcbiAgICAgICAgLm1hcCgod29yZCkgPT4gd29yZC5zbGljZSgwLCAxKS50b1VwcGVyQ2FzZSgpICsgd29yZC5zbGljZSgxKSlcbiAgICAgICAgLmpvaW4oJyAnKVxuICAgIDogaW5wdXQ7XG59O1xuXG5jb25zdCBmb3JtYXRVcmxGcm9tUm9vdCA9ICh1cmw6IHN0cmluZykgPT4ge1xuICBjb25zdCB1cmxGb3JtYXR0ZWQgPSB1cmwuc3BsaXQoJy5jb20vJyk7XG5cbiAgcmV0dXJuIHVybEZvcm1hdHRlZC5sZW5ndGggPiAxID8gYC8ke3VybEZvcm1hdHRlZFsxXX1gIDogdXJsO1xufTtcblxuY29uc3QgZm9ybWF0V2VpZ2h0ID0gKGlucHV0OiBudW1iZXIgfCBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBvdXRwdXQgPSBpbnB1dCA/IGZvcm1hdE51bWJlcihpbnB1dCkgOiBTdHJpbmcoaW5wdXQgfHwgJzAnKTtcbiAgcmV0dXJuIGAke291dHB1dH0gbGJzYDtcbn07XG5cbmNvbnN0IGdldEFydGljbGUgPSAobm91bjogc3RyaW5nLCBpc1BsdXJhbCA9IGZhbHNlLCBpc0RlZmluaXRlID0gZmFsc2UpID0+IHtcbiAgY29uc3Qgdm93ZWxzID0gWydhJywgJ2UnLCAnaScsICdvJywgJ3UnXTtcbiAgY29uc3QgaXNWb3dlbExlYWRpbmcgPSB2b3dlbHMuaW5jbHVkZXMobm91bi5jaGFyQXQoMCkpO1xuXG4gIHJldHVybiBpc0RlZmluaXRlID8gJ3RoZScgOiBpc1BsdXJhbCA/ICdzb21lJyA6IGlzVm93ZWxMZWFkaW5nID8gJ2FuJyA6ICdhJztcbn07XG5cbmNvbnN0IHByaWNlVG9OdW1iZXIgPSAodmFsdWU6IHN0cmluZykgPT4ge1xuICBpZiAoTnVtYmVyLmlzTmFOKE51bWJlcih2YWx1ZSkpKSB7XG4gICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKCckJywgJycpO1xuICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgvLC9nLCAnJyk7XG4gIH1cbiAgcmV0dXJuIHBhcnNlSW50KHZhbHVlLCAxMCk7XG59O1xuXG5jb25zdCB1bmZvcm1hdFByaWNlID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBvdXRwdXQgPSBpbnB1dC5yZXBsYWNlKC9cXCQvZywgJycpLnJlcGxhY2UoLywvZywgJycpO1xuICByZXR1cm4gYCR7b3V0cHV0fWA7XG59O1xuXG5leHBvcnQge1xuICBjYXBpdGFsaXplRmlyc3QsXG4gIGZvcm1hdENhbWVsQ2FzZSxcbiAgZm9ybWF0S2ViYWJDYXNlLFxuICBmb3JtYXRMYWJlbCxcbiAgZm9ybWF0TnVtYmVyLFxuICBmb3JtYXRQYXNjYWxDYXNlLFxuICBmb3JtYXRQaG9uZSxcbiAgZm9ybWF0UHJpY2UsXG4gIGZvcm1hdFF1b3RlcyxcbiAgZm9ybWF0U2VudGVuY2VDYXNlLFxuICBmb3JtYXRTbmFrZUNhc2UsXG4gIGZvcm1hdFRpdGxlQ2FzZSxcbiAgZm9ybWF0VXJsRnJvbVJvb3QsXG4gIGZvcm1hdFdlaWdodCxcbiAgZ2V0QXJ0aWNsZSxcbiAgcHJpY2VUb051bWJlcixcbiAgdW5mb3JtYXRQcmljZSxcbn07XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBkZWZpbmVBc3luY0NvbXBvbmVudCwgbWFya1JhdywgcmVmLCB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IHsgUkVBTE0gfSBmcm9tICdAL3R5cGVzL1JlYWxtJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgZm9ybWF0UGFzY2FsQ2FzZSB9IGZyb20gJ0AvdXRpbGl0aWVzL2Zvcm1hdCc7XG5cbiAgaW1wb3J0IHR5cGUgeyBJY29uIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHR5cGUgeyBTaXplIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHR5cGUgeyBDb21wb25lbnQgfSBmcm9tICd2dWUnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgaWNvbjogSWNvbjtcbiAgICBzaXplPzogU2l6ZTtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIHNpemU6IFNJWkUuU01BTEwsXG4gIH0pO1xuXG4gIGNvbnN0IGlubmVyU1ZHID0gcmVmPENvbXBvbmVudD4oKTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBwcm9wcy5pY29uLFxuICAgIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGlkOiBzdHJpbmcgPSBwcm9wcy5pY29uO1xuICAgICAgY29uc3QgbmFtZSA9IGZvcm1hdFBhc2NhbENhc2UoaWQpO1xuICAgICAgY29uc3QgW3ByZWZpeF0gPSBpZC5zcGxpdCgnLScpO1xuICAgICAgY29uc3QgcmVhbG1Gb2xkZXIgPSBSRUFMTVtwcmVmaXg/LnRvVXBwZXJDYXNlKCkgYXMga2V5b2YgdHlwZW9mIFJFQUxNXTtcbiAgICAgIGNvbnN0IGNvbXBvbmVudCA9IGRlZmluZUFzeW5jQ29tcG9uZW50KCgpID0+IHtcbiAgICAgICAgaWYgKHJlYWxtRm9sZGVyKSB7XG4gICAgICAgICAgcmV0dXJuIGltcG9ydChgLi4vYXNzZXRzL3N2Zy9pY29ucy9yZWFsbS8ke3JlYWxtRm9sZGVyfS9JY29uJHtuYW1lfS5zdmc/Y29tcG9uZW50YCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaW1wb3J0KGAuLi9hc3NldHMvc3ZnL2ljb25zL0ljb24ke25hbWV9LnN2Zz9jb21wb25lbnRgKTtcbiAgICAgIH0pO1xuXG4gICAgICBpbm5lclNWRy52YWx1ZSA9IG1hcmtSYXcoY29tcG9uZW50KTtcbiAgICB9LFxuICAgIHsgaW1tZWRpYXRlOiB0cnVlIH1cbiAgKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXYgOmNsYXNzPVwiWyd0aWRlLWljb24nLCBwcm9wcy5zaXplXVwiPlxuICAgIDxDb21wb25lbnRcbiAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5CTE9DS11cIlxuICAgICAgOmRhdGEtaWNvbj1cImljb25cIlxuICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICA6aXM9XCJpbm5lclNWR1wiXG4gICAgICB2LWlmPVwiaW5uZXJTVkdcIlxuICAgIC8+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlPlxuICAudGlkZS1pY29uIHtcbiAgICB3aWR0aDogMS41cmVtO1xuICAgIGhlaWdodDogMS41cmVtO1xuICB9XG5cbiAgLnRpZGUtaWNvbi5zbWFsbCB7XG4gICAgd2lkdGg6IDEuMjVyZW07XG4gICAgaGVpZ2h0OiAxLjI1cmVtO1xuICB9XG5cbiAgLnRpZGUtaWNvbiBzdmcge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgfVxuPC9zdHlsZT5cbiIsImltcG9ydCB0eXBlIHsgUmVhbG1LZXkgfSBmcm9tICdAL3R5cGVzL1JlYWxtJztcblxuZXhwb3J0IGNvbnN0IElDT04gPSB7XG4gIEFDQ09VTlRfQkFMQU5DRTogJ2FjY291bnQtYmFsYW5jZScsXG4gIEFDVVRFOiAnYWN1dGUnLFxuICBBREQ6ICdhZGQnLFxuICBBSV9ERVNDUklQVElPTjogJ2FpLWRlc2NyaXB0aW9uJyxcbiAgQUxJR05fU1BBQ0VfRVZFTjogJ2FsaWduLXNwYWNlLWV2ZW4nLFxuICBBUFBMRV9QQVk6ICdhcHBsZS1wYXknLFxuICBBUlJPV19CQUNLOiAnYXJyb3ctYmFjaycsXG4gIEFSUk9XX0NZQ0xFOiAnYXJyb3ctY3ljbGUnLFxuICBBUlJPV19GT1JXQVJEOiAnYXJyb3ctZm9yd2FyZCcsXG4gIEFSUk9XX1JJR0hUOiAnYXJyb3ctcmlnaHQnLFxuICBBU1NJR05NRU5UOiAnYXNzaWdubWVudCcsXG4gIEFUVEFDSF9NT05FWTogJ2F0dGFjaC1tb25leScsXG4gIEFVVE9fUkVORVc6ICdhdXRvLXJlbmV3JyxcbiAgQVdBUkRfU1RBUjogJ2F3YXJkLXN0YXInLFxuICBCRUQ6ICdiZWQnLFxuICBCT0xUOiAnYm9sdCcsXG4gIEJPT0tNQVJLOiAnYm9va21hcmsnLFxuICBCVU5LSE9VU0U6ICdidW5raG91c2UnLFxuICBDQUxFTkRBUl9NT05USDogJ2NhbGVuZGFyLW1vbnRoJyxcbiAgQ0FMTDogJ2NhbGwnLFxuICBDQUxMX1FVQUxJVFk6ICdjYWxsLXF1YWxpdHknLFxuICBDQVJfUkVOVEFMOiAnY2FyLXJlbnRhbCcsXG4gIENIRUNLOiAnY2hlY2snLFxuICBDSEVWUk9OX0xFRlQ6ICdjaGV2cm9uLWxlZnQnLFxuICBDSEVWUk9OX1JJR0hUOiAnY2hldnJvbi1yaWdodCcsXG4gIENMRUFSOiAnY2xlYXInLFxuICBDTE9TRTogJ2Nsb3NlJyxcbiAgQ09OVFJBQ1Q6ICdjb250cmFjdCcsXG4gIENSQVNIOiAnY3Jhc2gnLFxuICBEQVNIQk9BUkRfQ1VTVE9NSVpFOiAnZGFzaGJvYXJkLWN1c3RvbWl6ZScsXG4gIERFTEVURTogJ2RlbGV0ZScsXG4gIERJQU1PTkQ6ICdkaWFtb25kJyxcbiAgRElSRUNUSU9OU19CT0FUOiAnZGlyZWN0aW9ucy1ib2F0JyxcbiAgRE9NQUlOOiAnZG9tYWluJyxcbiAgRFJBRlQ6ICdkcmFmdCcsXG4gIEVESVQ6ICdlZGl0JyxcbiAgRU5HSU5FOiAnZW5naW5lJyxcbiAgRU5HSU5FRVJJTkc6ICdlbmdpbmVlcmluZycsXG4gIEVSUk9SOiAnZXJyb3InLFxuICBFWFBBTkRfQ09OVEVOVDogJ2V4cGFuZC1jb250ZW50JyxcbiAgRVhQQU5EX0xFU1M6ICdleHBhbmQtbGVzcycsXG4gIEVYUEFORF9NT1JFOiAnZXhwYW5kLW1vcmUnLFxuICBGQUNFQk9PSzogJ2ZhY2Vib29rJyxcbiAgRkFWT1JJVEU6ICdmYXZvcml0ZScsXG4gIEZBVk9SSVRFX0ZJTExFRDogJ2Zhdm9yaXRlLWZpbGxlZCcsXG4gIEZMQUc6ICdmbGFnJyxcbiAgRk9STUFUX0JPTEQ6ICdmb3JtYXQtYm9sZCcsXG4gIEZPUk1BVF9JVEFMSUM6ICdmb3JtYXQtaXRhbGljJyxcbiAgRk9STUFUX0xJU1RfQlVMTEVURUQ6ICdmb3JtYXQtbGlzdC1idWxsZXRlZCcsXG4gIEZPUlVNOiAnZm9ydW0nLFxuICBHQVM6ICdnYXMnLFxuICBHQVZFTDogJ2dhdmVsJyxcbiAgR0VBUlM6ICdnZWFycycsXG4gIEdMT0JFX0xPQ0FUSU9OX1BJTjogJ2dsb2JlLWxvY2F0aW9uLXBpbicsXG4gIEdPT0dMRTogJ2dvb2dsZScsXG4gIEdPT0dMRV9QQVk6ICdnb29nbGUtcGF5JyxcbiAgR1JJRDogJ2dyaWQnLFxuICBIQU5EU0hBS0U6ICdoYW5kc2hha2UnLFxuICBIQU5EWU1BTjogJ2hhbmR5bWFuJyxcbiAgSEVJR0hUOiAnaGVpZ2h0JyxcbiAgSEVMUDogJ2hlbHAnLFxuICBJTkZPOiAnaW5mbycsXG4gIElORk9STUFUSU9OOiAnaW5mb3JtYXRpb24nLFxuICBJTlNFUlRfVEVYVDogJ2luc2VydC10ZXh0JyxcbiAgSU5TVEFHUkFNOiAnaW5zdGFncmFtJyxcbiAgSU9TX1NIQVJFOiAnaW9zLXNoYXJlJyxcbiAgTEFZT1VUOiAnbGF5b3V0JyxcbiAgTEVWRUxMSU5HX0pBQ0s6ICdsZXZlbGxpbmctamFjaycsXG4gIExJTktFRF9JTjogJ2xpbmtlZCBpbicsXG4gIExPQ0FMX1NISVBQSU5HOiAnbG9jYWwtc2hpcHBpbmcnLFxuICBMT0NLOiAnbG9jaycsXG4gIE1BSUw6ICdtYWlsJyxcbiAgTUVOVTogJ21lbnUnLFxuICBNT05FWV9CQUc6ICdtb25leS1iYWcnLFxuICBNT1JFX0hPUklaOiAnbW9yZS1ob3JpeicsXG4gIE5PVElGSUNBVElPTlM6ICdub3RpZmljYXRpb25zJyxcbiAgT0RPTUVURVI6ICdvZG9tZXRlcicsXG4gIE9QRU5fSU5fTkVXOiAnb3Blbi1pbi1uZXcnLFxuICBQQUxFVFRFOiAncGFsZXR0ZScsXG4gIFBBWVBBTDogJ3BheXBhbCcsXG4gIFBFUlNPTjogJ3BlcnNvbicsXG4gIFBFUlNPTl9TRUFSQ0g6ICdwZXJzb24tc2VhcmNoJyxcbiAgUEhPVE9fQ0FNRVJBOiAncGhvdG8tY2FtZXJhJyxcbiAgUElOVEVSRVNUOiAncGludGVyZXN0JyxcbiAgUExBWV9BUlJPVzogJ3BsYXktYXJyb3cnLFxuICBQT0xJQ1k6ICdwb2xpY3knLFxuICBQT1dFUjogJ3Bvd2VyJyxcbiAgUE9XRVJfT0ZGOiAncG93ZXItb2ZmJyxcbiAgUFJJT1JJVFlfSElHSDogJ3ByaW9yaXR5LWhpZ2gnLFxuICBSRU1PVkU6ICdyZW1vdmUnLFxuICBSRVFVRVNUX1FVT1RFOiAncmVxdWVzdC1xdW90ZScsXG4gIFJFU0VUX1dSRU5DSDogJ3Jlc2V0LXdyZW5jaCcsXG4gIFJPQUQ6ICdyb2FkJyxcbiAgUk9VTkRFRF9DT1JORVI6ICdyb3VuZGVkLWNvcm5lcicsXG4gIFJVTEVSOiAncnVsZXInLFxuICBTQUlMSU5HOiAnc2FpbGluZycsXG4gIFNDSE9PTDogJ3NjaG9vbCcsXG4gIFNFQVJDSDogJ3NlYXJjaCcsXG4gIFNFQVRJTkc6ICdzZWF0aW5nJyxcbiAgU0VMTDogJ3NlbGwnLFxuICBTRU5TT1JTOiAnc2Vuc29ycycsXG4gIFNFVFRJTkdTOiAnc2V0dGluZ3MnLFxuICBTSEFSRTogJ3NoYXJlJyxcbiAgU0hJRUxEX0NIRUNLOiAnc2hpZWxkLWNoZWNrJyxcbiAgU0hPUFBJTkdfQ0FSVDogJ3Nob3BwaW5nLWNhcnQnLFxuICBTTEVFUFM6ICdzbGVlcHMnLFxuICBTTVM6ICdzbXMnLFxuICBTTk9XRkxBS0U6ICdzbm93Zmxha2UnLFxuICBTVEFSOiAnc3RhcicsXG4gIFNVTU1BUklaRTogJ3N1bW1hcml6ZScsXG4gIFNXQVBfSE9SSVo6ICdzd2FwLWhvcml6JyxcbiAgU1dBUF9WRVJUOiAnc3dhcC12ZXJ0JyxcbiAgVEhSRUVfRF9ST1RBVElPTjogJ3RocmVlLWQtcm90YXRpb24nLFxuICBUSFVNQl9VUDogJ3RodW1iLXVwJyxcbiAgVFJFTkRJTkdfRE9XTjogJ3RyZW5kaW5nLWRvd24nLFxuICBUUk9QSFk6ICd0cm9waHknLFxuICBUVU5FOiAndHVuZScsXG4gIFRXSVRURVI6ICd0d2l0dGVyJyxcbiAgVU1CUkVMTEE6ICd1bWJyZWxsYScsXG4gIFZFUklGSUVEOiAndmVyaWZpZWQnLFxuICBWSURFT0NBTTogJ3ZpZGVvY2FtJyxcbiAgVklFV19JTl9BUjogJ3ZpZXctaW4tYXInLFxuICBWSVNJQklMSVRZOiAndmlzaWJpbGl0eScsXG4gIFZPTFVNRV9PRkY6ICd2b2x1bWUtb2ZmJyxcbiAgVk9MVU1FX09OOiAndm9sdW1lLW9uJyxcbiAgV0FSRUhPVVNFOiAnd2FyZWhvdXNlJyxcbiAgV0FSTklORzogJ3dhcm5pbmcnLFxuICBXQVRFUjogJ3dhdGVyJyxcbiAgV0VJR0hUOiAnd2VpZ2h0JyxcbiAgV0lEVEg6ICd3aWR0aCcsXG4gIFdPUktTUEFDRV9QUkVNSVVNOiAnd29ya3NwYWNlLXByZW1pdW0nLFxuICBXUkVOQ0g6ICd3cmVuY2gnLFxuICBZT1VUVUJFOiAneW91dHViZScsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgSUNPTl9SRUFMTSA9IHtcbiAgQVRWOiB7XG4gICAgQVRWOiAnYXR2LWF0dicsXG4gICAgRFVORV9CVUdHWTogJ2F0di1kdW5lLWJ1Z2d5JyxcbiAgICBHT0xGX0NBUlQ6ICdhdHYtZ29sZi1jYXJ0JyxcbiAgICBHT19LQVJUOiAnYXR2LWdvLWthcnQnLFxuICAgIFNBTkRfUkFJTDogJ2F0di1zYW5kLXJhaWwnLFxuICAgIFNJREVfQllfU0lERTogJ2F0di1zaWRlLWJ5LXNpZGUnLFxuICAgIFRSQUlMRVI6ICdhdHYtdHJhaWxlcicsXG4gIH0sXG4gIEJPQVRNQVJUOiB7XG4gICAgUFdDOiAnYm9hdG1hcnQtcHdjJyxcbiAgICBUUkFJTEVSOiAnYm9hdG1hcnQtdHJhaWxlcicsXG4gIH0sXG4gIFJWOiB7XG4gICAgQ0xBU1NfQTogJ3J2LWNsYXNzLWEnLFxuICAgIENMQVNTX0I6ICdydi1jbGFzcy1iJyxcbiAgICBDTEFTU19DOiAncnYtY2xhc3MtYycsXG4gICAgRklGVEhfV0hFRUw6ICdydi1maWZ0aC13aGVlbCcsXG4gICAgRklTSF9IT1VTRTogJ3J2LWZpc2gtaG91c2UnLFxuICAgIFBBUktfTU9ERUw6ICdydi1wYXJrLW1vZGVsJyxcbiAgICBQT1BfVVBfQ0FNUEVSOiAncnYtcG9wLXVwLWNhbXBlcicsXG4gICAgVFJBVkVMX1RSQUlMRVI6ICdydi10cmF2ZWwtdHJhaWxlcicsXG4gICAgVFJVQ0tfQ0FNUEVSOiAncnYtdHJ1Y2stY2FtcGVyJyxcbiAgfSxcbn0gYXMgY29uc3Q7XG5cbnR5cGUgUmVhbG1LZXlzV2l0aEljb25zID0gRXh0cmFjdDxSZWFsbUtleSwga2V5b2YgdHlwZW9mIElDT05fUkVBTE0+O1xudHlwZSBSZWFsbUljb24gPSB7XG4gIFtSZWFsbUtleSBpbiBSZWFsbUtleXNXaXRoSWNvbnNdOiAodHlwZW9mIElDT05fUkVBTE0pW1JlYWxtS2V5XVtrZXlvZiAodHlwZW9mIElDT05fUkVBTE0pW1JlYWxtS2V5XV07XG59W1JlYWxtS2V5c1dpdGhJY29uc107XG5cbmV4cG9ydCB0eXBlIEdsb2JhbEljb24gPSAodHlwZW9mIElDT04pW2tleW9mIHR5cGVvZiBJQ09OXTtcbmV4cG9ydCB0eXBlIEljb24gPSBHbG9iYWxJY29uIHwgUmVhbG1JY29uO1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IFRpZGVEaXZpZGVyIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlRGl2aWRlci52dWUnO1xuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIGNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0cyhbJ3RvZ2dsZSddKTtcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGhhc0JvdHRvbURpdmlkZXI/OiBib29sZWFuO1xuICAgIGhhc1RvcERpdmlkZXI/OiBib29sZWFuO1xuICAgIGlzRXhwYW5kZWQ/OiBib29sZWFuO1xuICAgIGlzT3B0aW9uYWw/OiBib29sZWFuO1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBoYXNCb3R0b21EaXZpZGVyOiBmYWxzZSxcbiAgICBoYXNUb3BEaXZpZGVyOiBmYWxzZSxcbiAgICBpc0V4cGFuZGVkOiBmYWxzZSxcbiAgICBpc09wdGlvbmFsOiBmYWxzZSxcbiAgICBsYWJlbDogJycsXG4gIH0pO1xuXG4gIGNvbnN0IGhhbmRsZVRvZ2dsZUNsaWNrID0gKCkgPT4ge1xuICAgIGVtaXQoJ3RvZ2dsZScpO1xuICB9O1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cInRpZGUtYWNjb3JkaW9uLWl0ZW1cIj5cbiAgICA8VGlkZURpdmlkZXIgdi1pZj1cInByb3BzLmhhc1RvcERpdmlkZXJcIiAvPlxuXG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiWyd0aWRlLWFjY29yZGlvbi1oZWFkJywgQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMxLkJFVFdFRU4sIENTUy5QQURESU5HLlkuSEFMRiwgQ1NTLkNVUlNPUi5QT0lOVEVSXVwiXG4gICAgICBAY2xpY2s9XCJoYW5kbGVUb2dnbGVDbGlja1wiXG4gICAgPlxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5IQUxGLCBDU1MuRk9OVC5ST0xFLkxBQkVMXzFfU0VNSUJPTERdXCI+XG4gICAgICAgIDxzcGFuPnt7IHByb3BzLmxhYmVsIH19PC9zcGFuPlxuXG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF1cIlxuICAgICAgICAgIHYtaWY9XCJwcm9wcy5pc09wdGlvbmFsXCJcbiAgICAgICAgPlxuICAgICAgICAgIChvcHRpb25hbClcbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6aWNvbj1cImlzRXhwYW5kZWQgPyBJQ09OLkVYUEFORF9MRVNTIDogSUNPTi5FWFBBTkRfTU9SRVwiXG4gICAgICAgIDpzaXplPVwiU0laRS5MQVJHRVwiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiA6Y2xhc3M9XCJbJ3RpZGUtYWNjb3JkaW9uLWJvZHknLCBwcm9wcy5pc0V4cGFuZGVkID8gJ2V4cGFuZGVkJyA6ICdjb2xsYXBzZWQnLCBDU1MuRElTUExBWS5HUklEXVwiPlxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLk9WRVJGTE9XLlkuSElEREVOLCBDU1MuTUFSR0lOLlkuT05FLCBDU1MuRk9OVC5ST0xFLkJPRFlfMSwgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5ERUZBVUxUXVwiPlxuICAgICAgICA8c2xvdCAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8VGlkZURpdmlkZXIgdi1pZj1cInByb3BzLmhhc0JvdHRvbURpdmlkZXJcIiAvPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWFjY29yZGlvbi1ib2R5IHtcbiAgICB0cmFuc2l0aW9uOiBncmlkLXRlbXBsYXRlLXJvd3MgdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIC50aWRlLWFjY29yZGlvbi1ib2R5LmV4cGFuZGVkIHtcbiAgICBncmlkLXRlbXBsYXRlLXJvd3M6IDFmcjtcbiAgfVxuXG4gIC50aWRlLWFjY29yZGlvbi1ib2R5LmNvbGxhcHNlZCB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiAwZnI7XG4gIH1cbjwvc3R5bGU+XG4iLCJleHBvcnQgY29uc3QgRUxFTUVOVCA9IHtcbiAgQlVUVE9OOiAnYnV0dG9uJyxcbiAgTElOSzogJ2EnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IEVMRU1FTlRfVEVYVF9BU19JQ09OID0ge1xuICBCVVRUT046ICdidXR0b24nLFxuICBESVY6ICdkaXYnLFxuICBMSU5LOiAnYScsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBFbGVtZW50ID0gKHR5cGVvZiBFTEVNRU5UKVtrZXlvZiB0eXBlb2YgRUxFTUVOVF07XG5leHBvcnQgdHlwZSBFbGVtZW50VGV4dEFzSWNvbiA9ICh0eXBlb2YgRUxFTUVOVF9URVhUX0FTX0lDT04pW2tleW9mIHR5cGVvZiBFTEVNRU5UX1RFWFRfQVNfSUNPTl07XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSB2dWUvc29ydC1rZXlzICovXG5cbmV4cG9ydCBjb25zdCBQUklPUklUWSA9IHtcbiAgUFJJTUFSWTogJ3ByaW1hcnknLFxuICBTRUNPTkRBUlk6ICdzZWNvbmRhcnknLFxuICBURVJUSUFSWTogJ3RlcnRpYXJ5JyxcbiAgUVVBVEVSTkFSWTogJ3F1YXRlcm5hcnknLFxuICBGTE9BVElORzogJ2Zsb2F0aW5nJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIFByaW9yaXR5ID0gKHR5cGVvZiBQUklPUklUWSlba2V5b2YgdHlwZW9mIFBSSU9SSVRZXTtcbiIsImV4cG9ydCBjb25zdCBUQVJHRVQgPSB7XG4gIEJMQU5LOiAnX2JsYW5rJyxcbiAgU0VMRjogdW5kZWZpbmVkLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgVGFyZ2V0ID0gKHR5cGVvZiBUQVJHRVQpW2tleW9mIHR5cGVvZiBUQVJHRVRdO1xuIiwiZXhwb3J0IGNvbnN0IEFMRVJUID0ge1xuICBFUlJPUjogJ2Vycm9yJyxcbiAgSU5GTzogJ2luZm8nLFxuICBTVUNDRVNTOiAnc3VjY2VzcycsXG4gIFdBUk5JTkc6ICd3YXJuaW5nJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIEFsZXJ0ID0gKHR5cGVvZiBBTEVSVClba2V5b2YgdHlwZW9mIEFMRVJUXTtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUJ1dHRvbkljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVCdXR0b25JY29uLnZ1ZSc7XG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgQUxFUlQgfSBmcm9tICdAL3R5cGVzL0FsZXJ0JztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFBSSU9SSVRZIH0gZnJvbSAnQC90eXBlcy9Qcmlvcml0eSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICBpbXBvcnQgdHlwZSB7IEFsZXJ0IH0gZnJvbSAnQC90eXBlcy9BbGVydCc7XG4gIGltcG9ydCB0eXBlIHsgSWNvbiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBoZWFkaW5nPzogc3RyaW5nO1xuICAgIGlzVG9hc3Q/OiBib29sZWFuO1xuICAgIHR5cGU/OiBBbGVydDtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGhlYWRpbmc6IHVuZGVmaW5lZCxcbiAgICBpc1RvYXN0OiBmYWxzZSxcbiAgICB0eXBlOiBBTEVSVC5JTkZPLFxuICB9KTtcblxuICBjb25zdCBpY29uID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGxldCBpY29uOiBJY29uID0gSUNPTi5JTkZPO1xuXG4gICAgc3dpdGNoIChwcm9wcy50eXBlKSB7XG4gICAgICBjYXNlIEFMRVJULkVSUk9SOlxuICAgICAgICBpY29uID0gSUNPTi5FUlJPUjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgY2FzZSBBTEVSVC5JTkZPOlxuICAgICAgICBpY29uID0gSUNPTi5JTkZPO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgQUxFUlQuU1VDQ0VTUzpcbiAgICAgICAgaWNvbiA9IElDT04uQ0hFQ0s7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBBTEVSVC5XQVJOSU5HOlxuICAgICAgICBpY29uID0gSUNPTi5XQVJOSU5HO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICByZXR1cm4gaWNvbjtcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiW1xuICAgICAgcHJvcHMudHlwZSxcbiAgICAgICd0aWRlLWFsZXJ0JyxcbiAgICAgIENTUy5ESVNQTEFZLkdSSUQsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuSEFMRixcbiAgICAgIENTUy5QQURESU5HLkZVTEwuT05FLFxuICAgICAgcHJvcHMudHlwZSA9PT0gQUxFUlQuRVJST1IgJiYgQ1NTLkJHLkdMT0JBTC5TVVJGQUNFLkVSUk9SLFxuICAgICAgcHJvcHMudHlwZSA9PT0gQUxFUlQuSU5GTyAmJiBDU1MuQkcuR0xPQkFMLlNVUkZBQ0UuSU5GTyxcbiAgICAgIHByb3BzLnR5cGUgPT09IEFMRVJULlNVQ0NFU1MgJiYgQ1NTLkJHLkdMT0JBTC5TVVJGQUNFLlNVQ0NFU1MsXG4gICAgICBwcm9wcy50eXBlID09PSBBTEVSVC5XQVJOSU5HICYmIENTUy5CRy5HTE9CQUwuU1VSRkFDRS5XQVJOSU5HLFxuICAgICAgcHJvcHMuaXNUb2FzdCA/IENTUy5TSEFET1cuQk9UVE9NIDogJycsXG4gICAgXVwiXG4gID5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWFsZXJ0LWljb24nLFxuICAgICAgICBDU1MuUEFERElORy5GVUxMLkhBTEYsXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLkZVTEwsXG4gICAgICAgIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuSU5WRVJTRSxcbiAgICAgICAgcHJvcHMudHlwZSA9PT0gQUxFUlQuRVJST1IgJiYgQ1NTLkJHLkdMT0JBTC5QUklNQVJZLkVSUk9SLFxuICAgICAgICBwcm9wcy50eXBlID09PSBBTEVSVC5JTkZPICYmIENTUy5CRy5HTE9CQUwuUFJJTUFSWS5JTkZPLFxuICAgICAgICBwcm9wcy50eXBlID09PSBBTEVSVC5TVUNDRVNTICYmIENTUy5CRy5HTE9CQUwuUFJJTUFSWS5TVUNDRVNTLFxuICAgICAgICBwcm9wcy50eXBlID09PSBBTEVSVC5XQVJOSU5HICYmIENTUy5CRy5HTE9CQUwuUFJJTUFSWS5XQVJOSU5HLFxuICAgICAgXVwiXG4gICAgPlxuICAgICAgPFRpZGVJY29uIDppY29uPVwiaWNvblwiIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IDpjbGFzcz1cIlsndGlkZS1hbGVydC1oZWFkaW5nJywgQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUl1cIj5cbiAgICAgIDxoMiA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5MQUJFTF8xX1NFTUlCT0xELCBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLkRFRkFVTFRdXCI+XG4gICAgICAgIHt7IHByb3BzLmhlYWRpbmcgfX1cbiAgICAgIDwvaDI+XG4gICAgPC9kaXY+XG5cbiAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgIDpjbGFzcz1cIlsndGlkZS1hbGVydC1jbG9zZScsIENTUy5BWElTMi5DRU5URVIsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuREVGQVVMVF1cIlxuICAgICAgOmljb249XCJJQ09OLkNMT1NFXCJcbiAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlFVQVRFUk5BUllcIlxuICAgICAgYXJpYS1sYWJlbD1cIkNsb3NlIGFsZXJ0XCJcbiAgICAvPlxuXG4gICAgPGRpdiA6Y2xhc3M9XCJbJ3RpZGUtYWxlcnQtYm9keScsIENTUy5GT05ULlJPTEUuTEFCRUxfMSwgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5UXVwiPlxuICAgICAgPHNsb3QgLz5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1hbGVydCB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1hcmVhczpcbiAgICAgICdpY29uIGhlYWRpbmcgY2xvc2UnXG4gICAgICAnLiBib2R5IC4nO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byAxZnIgYXV0bztcbiAgICBncmlkLWNvbHVtbi1nYXA6IDAuNXJlbTtcbiAgICBtYXgtd2lkdGg6IDQwcmVtO1xuICB9XG5cbiAgLnRpZGUtYWxlcnQtaWNvbiB7XG4gICAgZ3JpZC1hcmVhOiBpY29uO1xuICB9XG5cbiAgLnRpZGUtYWxlcnQtaGVhZGluZyB7XG4gICAgZ3JpZC1hcmVhOiBoZWFkaW5nO1xuICB9XG5cbiAgLnRpZGUtYWxlcnQtY2xvc2Uge1xuICAgIGdyaWQtYXJlYTogY2xvc2U7XG4gIH1cblxuICAudGlkZS1hbGVydC1ib2R5IHtcbiAgICBncmlkLWFyZWE6IGJvZHk7XG4gIH1cbjwvc3R5bGU+XG4iLCJleHBvcnQgY29uc3QgQkFER0VfVFJVU1RFRCA9IHtcbiAgWUVBUlNfMTA6ICcxMCcsXG4gIFlFQVJTXzE1OiAnMTUnLFxuICBZRUFSU181OiAnNScsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBCYWRnZVRydXN0ZWRZZWFycyA9ICh0eXBlb2YgQkFER0VfVFJVU1RFRClba2V5b2YgdHlwZW9mIEJBREdFX1RSVVNURURdO1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIGltcG9ydCB0eXBlIHsgVGFiIH0gZnJvbSAnQC90eXBlcy9UYWInO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgYWN0aXZlVGFiOiBudW1iZXI7XG4gICAgdGFiczogVGFiW107XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBhY3RpdmVUYWI6IDAsXG4gIH0pO1xuXG4gIGNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0cyhbJ2NoYW5nZSddKTtcblxuICBjb25zdCBoYW5kbGVDbGljayA9IChpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgZW1pdCgnY2hhbmdlJywgaW5kZXgpO1xuICB9O1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWJ1dHRvbi1zZWdtZW50ZWQnLFxuICAgICAgQ1NTLkJHLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuR0FQLlFVQVJURVIsXG4gICAgICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICAgICAgQ1NTLlBBRERJTkcuRlVMTC5RVUFSVEVSLFxuICAgICAgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTixcbiAgICAgIENTUy5XSURUSC5GVUxMLFxuICAgIF1cIlxuICA+XG4gICAgPGJ1dHRvblxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1idXR0b24tc2VnbWVudGVkLXRhYicsXG4gICAgICAgIGluZGV4ID09PSBhY3RpdmVUYWJcbiAgICAgICAgICA/IFtDU1MuQkcuU1VSRkFDRS5ERUZBVUxULCBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLkRFRkFVTFQsIENTUy5TSEFET1cuQk9UVE9NXVxuICAgICAgICAgIDogWydpbmFjdGl2ZScsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF0sXG4gICAgICAgIENTUy5GTEVYLkdST1cuT04sXG4gICAgICAgIENTUy5CT1JERVIuRlVMTC5UV08sXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLkZVTEwsXG4gICAgICAgIENTUy5QQURESU5HLlkuUVVBUlRFUixcbiAgICAgICAgQ1NTLldJRFRILkZVTEwsXG4gICAgICAgIENTUy5GT05ULlJPTEUuQlVUVE9OXzEsXG4gICAgICAgIENTUy5XSElURVNQQUNFX1dSQVAuT0ZGLFxuICAgICAgXVwiXG4gICAgICA6ZGF0YS10cmFjaz1cInRhYi5kYXRhVHJhY2sgfHwgdW5kZWZpbmVkXCJcbiAgICAgIDprZXk9XCJ0YWIubGFiZWxcIlxuICAgICAgQGNsaWNrPVwiaGFuZGxlQ2xpY2soaW5kZXgpXCJcbiAgICAgIHYtZm9yPVwiKHRhYiwgaW5kZXgpIGluIHByb3BzLnRhYnNcIlxuICAgID5cbiAgICAgIDxzcGFuIDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkxBQkVMXzJfU0VNSUJPTERdXCI+XG4gICAgICAgIHt7IHRhYi5sYWJlbCB9fVxuICAgICAgPC9zcGFuPlxuXG4gICAgICA8c3BhblxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5MQUJFTF8yX1NFTUlCT0xEXVwiXG4gICAgICAgIHYtaWY9XCJ0YWIuY291bnQgJiYgdGFiLmNvdW50ID4gMFwiXG4gICAgICA+XG4gICAgICAgICh7eyB0YWIuY291bnQgfX0pXG4gICAgICA8L3NwYW4+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtYnV0dG9uLXNlZ21lbnRlZCB7XG4gICAgbWF4LXdpZHRoOiAyMy4zcmVtO1xuICB9XG5cbiAgLnRpZGUtYnV0dG9uLXNlZ21lbnRlZC10YWIge1xuICAgIGZsZXg6IDE7XG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICB9XG5cbiAgLmluYWN0aXZlOm5vdCg6aG92ZXIpIHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXRpZGUtc3VyZmFjZS12YXJpYW50KTtcbiAgfVxuXG4gIC5pbmFjdGl2ZTpob3ZlciB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS10aWRlLWJvcmRlcik7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtc3VyZmFjZS1kZWZhdWx0KTtcbiAgfVxuPC9zdHlsZT5cbiIsImV4cG9ydCBjb25zdCBUWVBFX0NBUkQgPSB7XG4gIEFDVElPTkFCTEU6ICdhY3Rpb24nLFxuICBJTkZPUk1BVElPTkFMOiAnaW5mb3JtYXRpb25hbCcsXG4gIFNFTEVDVEFCTEU6ICdzZWxlY3QnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgQ2FyZFR5cGUgPSAodHlwZW9mIFRZUEVfQ0FSRClba2V5b2YgdHlwZW9mIFRZUEVfQ0FSRF07XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBvbk1vdW50ZWQsIG9uVW5tb3VudGVkLCBvblVwZGF0ZWQsIHJlZiwgd2F0Y2ggfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlQnV0dG9uSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUJ1dHRvbkljb24udnVlJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFBSSU9SSVRZIH0gZnJvbSAnQC90eXBlcy9Qcmlvcml0eSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGlzRmxvYXRpbmc/OiBib29sZWFuO1xuICAgIGlzSGlkZWF3YXlCdXR0b25zPzogYm9vbGVhbjtcbiAgICBpc1RvdWNoc2NyZWVuPzogYm9vbGVhbjtcbiAgICBzdWJ0aXRsZT86IHN0cmluZztcbiAgICB0aXRsZT86IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGlzRmxvYXRpbmc6IGZhbHNlLFxuICAgIGlzSGlkZWF3YXlCdXR0b25zOiB0cnVlLFxuICAgIGlzVG91Y2hzY3JlZW46IHVuZGVmaW5lZCxcbiAgICBzdWJ0aXRsZTogdW5kZWZpbmVkLFxuICAgIHRpdGxlOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIGNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0cyhbJ2NoYW5nZSddKTtcblxuICBjb25zdCBjb250ZW50UmVmID0gcmVmKCk7XG4gIGNvbnN0IGZyYW1lUmVmID0gcmVmKCk7XG5cbiAgY29uc3QgY29udGVudFJpZ2h0RWRnZSA9IHJlZigpO1xuICBjb25zdCBjb250ZW50V2lkdGggPSByZWYoKTtcbiAgY29uc3QgY3VycmVudFNsaWRlID0gcmVmKDApO1xuICBjb25zdCBmcmFtZVdpZHRoID0gcmVmKCk7XG4gIGNvbnN0IGhhc092ZXJmbG93ID0gcmVmKCk7XG4gIGNvbnN0IGlzTGFzdFNsaWRlID0gcmVmKCk7XG4gIGNvbnN0IGxhc3RQb3NpdGlvbiA9IHJlZigpO1xuICBjb25zdCBzaG93QnV0dG9ucyA9IHJlZigpO1xuXG4gIC8qKlxuICAgKiBNZWFzdXJlIHRoZSBjdXJyZW50IHNsaWRlIGJhc2VkIG9uIHRoZSBzY3JvbGxcbiAgICogcG9zaXRpb24gb2YgdGhlIGZyYW1lLiBUaGUgY3VycmVudCBzbGlkZSBpc1xuICAgKiB0aGUgc2xpZGUgdGhhdCBpcyBjbG9zZXN0IHRvIHRoZSBsZWZ0IGVkZ2Ugb2ZcbiAgICogdGhlIGZyYW1lLlxuICAgKi9cbiAgY29uc3QgbWVhc3VyZUN1cnJlbnRTbGlkZSA9ICgpID0+IHtcbiAgICAvLyBHZXQgbGVmdCBvZmZzZXQgb2YgZWFjaCBzbGlkZS5cbiAgICBjb25zdCBzbGlkZU9mZnNldHMgPSBBcnJheS5mcm9tKGNvbnRlbnRSZWYudmFsdWUuY2hpbGRyZW4pLm1hcCgoc2xpZGU6IGFueSkgPT4gc2xpZGUub2Zmc2V0TGVmdCk7XG5cbiAgICBpZiAoc2xpZGVPZmZzZXRzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuXG4gICAgLy8gR2V0IGNsb3Nlc3Qgb2Zmc2V0IHRvIGN1cnJlbnQgc2Nyb2xsIHBvc2l0aW9uLlxuICAgIGNvbnN0IGNsb3Nlc3RTbGlkZU9mZnNldCA9IHNsaWRlT2Zmc2V0cy5yZWR1Y2UoKHByZXYsIGN1cnIpID0+IHtcbiAgICAgIHJldHVybiBNYXRoLmFicyhjdXJyIC0gZnJhbWVSZWYudmFsdWUuc2Nyb2xsTGVmdCkgPCBNYXRoLmFicyhwcmV2IC0gZnJhbWVSZWYudmFsdWUuc2Nyb2xsTGVmdCkgPyBjdXJyIDogcHJldjtcbiAgICB9KTtcblxuICAgIGN1cnJlbnRTbGlkZS52YWx1ZSA9IHNsaWRlT2Zmc2V0cy5pbmRleE9mKGNsb3Nlc3RTbGlkZU9mZnNldCk7XG4gIH07XG5cbiAgY29uc3QgbWVhc3VyZURvbSA9ICgpID0+IHtcbiAgICBjb250ZW50UmlnaHRFZGdlLnZhbHVlID0gZnJhbWVSZWYudmFsdWUuc2Nyb2xsTGVmdCArIGZyYW1lUmVmLnZhbHVlLmNsaWVudFdpZHRoO1xuICAgIGNvbnRlbnRXaWR0aC52YWx1ZSA9IGNvbnRlbnRSZWYudmFsdWUuc2Nyb2xsV2lkdGg7XG4gICAgZnJhbWVXaWR0aC52YWx1ZSA9IGZyYW1lUmVmLnZhbHVlLmNsaWVudFdpZHRoO1xuICAgIGhhc092ZXJmbG93LnZhbHVlID0gY29udGVudFdpZHRoLnZhbHVlID4gZnJhbWVXaWR0aC52YWx1ZTtcbiAgICBpc0xhc3RTbGlkZS52YWx1ZSA9IGNvbnRlbnRSaWdodEVkZ2UudmFsdWUgPT09IGNvbnRlbnRXaWR0aC52YWx1ZTtcbiAgICBsYXN0UG9zaXRpb24udmFsdWUgPSBmcmFtZVJlZi52YWx1ZS5zY3JvbGxXaWR0aCAtIGZyYW1lUmVmLnZhbHVlLmNsaWVudFdpZHRoO1xuICAgIHNob3dCdXR0b25zLnZhbHVlID0gaGFzT3ZlcmZsb3cudmFsdWUgJiYgIXByb3BzLmlzVG91Y2hzY3JlZW47XG5cbiAgICBtZWFzdXJlQ3VycmVudFNsaWRlKCk7XG4gIH07XG5cbiAgLy8gVE9ETzogZGVib3VuY2UgdGhpc1xuICBjb25zdCBoYW5kbGVTY3JvbGwgPSAoKSA9PiB7XG4gICAgbWVhc3VyZURvbSgpO1xuICB9O1xuXG4gIGNvbnN0IHNjcm9sbFRvU2xpZGUgPSAoc2xpZGVJbmRleDogbnVtYmVyKSA9PiB7XG4gICAgZnJhbWVSZWYudmFsdWUuc2Nyb2xsVG8oe1xuICAgICAgYmVoYXZpb3I6ICdzbW9vdGgnLFxuICAgICAgbGVmdDogY29udGVudFJlZi52YWx1ZS5jaGlsZHJlbltzbGlkZUluZGV4XS5vZmZzZXRMZWZ0LFxuICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IHNob3dOZXh0U2xpZGUgPSAoKSA9PiB7XG4gICAgaWYgKGNvbnRlbnRSaWdodEVkZ2UudmFsdWUgPiBjb250ZW50V2lkdGgudmFsdWUpIHtcbiAgICAgIGZyYW1lUmVmLnZhbHVlLnNjcm9sbFRvKHtcbiAgICAgICAgYmVoYXZpb3I6ICdzbW9vdGgnLFxuICAgICAgICBsZWZ0OiBjb250ZW50V2lkdGgsXG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKCFpc0xhc3RTbGlkZS52YWx1ZSkge1xuICAgICAgc2Nyb2xsVG9TbGlkZShjdXJyZW50U2xpZGUudmFsdWUgKyAxKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3Qgc2hvd1ByZXZpb3VzU2xpZGUgPSAoKSA9PiB7XG4gICAgY29uc3QgaXNGaXJzdFNsaWRlID0gY3VycmVudFNsaWRlLnZhbHVlID09PSAwO1xuXG4gICAgaWYgKCFpc0ZpcnN0U2xpZGUpIHtcbiAgICAgIHNjcm9sbFRvU2xpZGUoY3VycmVudFNsaWRlLnZhbHVlIC0gMSk7XG4gICAgfVxuICB9O1xuXG4gIG9uTW91bnRlZCgoKSA9PiB7XG4gICAgbWVhc3VyZURvbSgpO1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBtZWFzdXJlRG9tKTtcbiAgfSk7XG5cbiAgb25Vbm1vdW50ZWQoKCkgPT4ge1xuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCBtZWFzdXJlRG9tKTtcbiAgfSk7XG5cbiAgb25VcGRhdGVkKCgpID0+IHtcbiAgICBtZWFzdXJlRG9tKCk7XG4gIH0pO1xuXG4gIHdhdGNoKGN1cnJlbnRTbGlkZSwgKCkgPT4ge1xuICAgIGVtaXQoJ2NoYW5nZScsIGN1cnJlbnRTbGlkZS52YWx1ZSk7XG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPHNlY3Rpb25cbiAgICA6Y2xhc3M9XCJbJ3RpZGUtY2Fyb3VzZWwnLCBDU1MuRElTUExBWS5GTEVYLCBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLCBDU1MuR0FQLlRXTywgQ1NTLldJRFRILk1BWF9GVUxMXVwiXG4gICAgcmVmPVwiY2Fyb3VzZWxSZWZcIlxuICA+XG4gICAgPHNlY3Rpb25cbiAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBwcm9wcy50aXRsZSA/IENTUy5BWElTMS5CRVRXRUVOIDogQ1NTLkFYSVMxLkVORCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLldJRFRILkZVTExdXCJcbiAgICAgIHYtaWY9XCIhcHJvcHMuaXNGbG9hdGluZyAmJiAoc2hvd0J1dHRvbnMgfHwgcHJvcHMudGl0bGUpXCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLk9ORV1cIlxuICAgICAgICB2LWlmPVwicHJvcHMudGl0bGUgfHwgcHJvcHMuc3VidGl0bGVcIlxuICAgICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuRElTUExBWV8xXVwiXG4gICAgICAgICAgdi1pZj1cInByb3BzLnRpdGxlXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IHByb3BzLnRpdGxlIH19XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5MQUJFTF8yLCBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlRdXCJcbiAgICAgICAgICB2LWlmPVwicHJvcHMuc3VidGl0bGVcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgcHJvcHMuc3VidGl0bGUgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdlxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5PTkVdXCJcbiAgICAgICAgdi1pZj1cInNob3dCdXR0b25zXCJcbiAgICAgID5cbiAgICAgICAgPFRpZGVCdXR0b25JY29uXG4gICAgICAgICAgOmRpc2FibGVkPVwiY3VycmVudFNsaWRlID09PSAwXCJcbiAgICAgICAgICA6aWNvbj1cIklDT04uQ0hFVlJPTl9MRUZUXCJcbiAgICAgICAgICA6cHJpb3JpdHk9XCJQUklPUklUWS5URVJUSUFSWVwiXG4gICAgICAgICAgQGNsaWNrPVwic2hvd1ByZXZpb3VzU2xpZGVcIlxuICAgICAgICAvPlxuXG4gICAgICAgIDxUaWRlQnV0dG9uSWNvblxuICAgICAgICAgIDpkaXNhYmxlZD1cImlzTGFzdFNsaWRlXCJcbiAgICAgICAgICA6aWNvbj1cIklDT04uQ0hFVlJPTl9SSUdIVFwiXG4gICAgICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuVEVSVElBUllcIlxuICAgICAgICAgIEBjbGljaz1cInNob3dOZXh0U2xpZGVcIlxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9zZWN0aW9uPlxuXG4gICAgPHNsb3QgbmFtZT1cIm1pc2NcIiAvPlxuXG4gICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLlBPU0lUSU9OLlJFTEFUSVZFXVwiPlxuICAgICAgPGRpdlxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLlNDUk9MTEJBUi5PRkYsIENTUy5TTkFQLk9OLCBDU1MuT1ZFUkZMT1cuWC5TQ1JPTEwsIENTUy5XSURUSC5GVUxMXVwiXG4gICAgICAgIHJlZj1cImZyYW1lUmVmXCJcbiAgICAgICAgQHNjcm9sbD1cImhhbmRsZVNjcm9sbFwiXG4gICAgICA+XG4gICAgICAgIDx1bFxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuR0FQLk9ORSwgQ1NTLkxJU1RfQlVMTEVUUy5PRkZdXCJcbiAgICAgICAgICByZWY9XCJjb250ZW50UmVmXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzbG90IC8+XG4gICAgICAgIDwvdWw+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdlxuICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgJ3RpZGUtY2Fyb3VzZWwtYnV0dG9uLW92ZXJsYXknLFxuICAgICAgICAgIENTUy5QT1NJVElPTi5BQlNPTFVURSxcbiAgICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICAgIENTUy5BWElTMS5CRVRXRUVOLFxuICAgICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgICAgQ1NTLldJRFRILkZVTEwsXG4gICAgICAgICAgQ1NTLkhFSUdIVC5GVUxMLFxuICAgICAgICAgIENTUy5QT0lOVEVSX0VWRU5UUy5PRkYsXG4gICAgICAgICAgcHJvcHMuaXNIaWRlYXdheUJ1dHRvbnMgPyAnaGlkZWF3YXknIDogJycsXG4gICAgICAgIF1cIlxuICAgICAgICB2LWlmPVwiaXNGbG9hdGluZyAmJiBzaG93QnV0dG9uc1wiXG4gICAgICA+XG4gICAgICAgIDxUaWRlQnV0dG9uSWNvblxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuTUFSR0lOLkxFRlQuT05FLCBDU1MuUE9JTlRFUl9FVkVOVFMuT05dXCJcbiAgICAgICAgICA6ZGlzYWJsZWQ9XCJjdXJyZW50U2xpZGUgPT09IDBcIlxuICAgICAgICAgIDppY29uPVwiSUNPTi5DSEVWUk9OX0xFRlRcIlxuICAgICAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlFVQVRFUk5BUllcIlxuICAgICAgICAgIEBjbGljaz1cInNob3dQcmV2aW91c1NsaWRlXCJcbiAgICAgICAgLz5cblxuICAgICAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLk1BUkdJTi5SSUdIVC5PTkUsIENTUy5QT0lOVEVSX0VWRU5UUy5PTl1cIlxuICAgICAgICAgIDpkaXNhYmxlZD1cImlzTGFzdFNsaWRlXCJcbiAgICAgICAgICA6aWNvbj1cIklDT04uQ0hFVlJPTl9SSUdIVFwiXG4gICAgICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuUVVBVEVSTkFSWVwiXG4gICAgICAgICAgQGNsaWNrPVwic2hvd05leHRTbGlkZVwiXG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9zZWN0aW9uPlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtY2Fyb3VzZWwtYnV0dG9uLW92ZXJsYXkuaGlkZWF3YXkge1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cblxuICAudGlkZS1jYXJvdXNlbDpob3ZlciAudGlkZS1jYXJvdXNlbC1idXR0b24tb3ZlcmxheS5oaWRlYXdheSB7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IHJlZiB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIGltcG9ydCB0eXBlIHsgU291cmNlIH0gZnJvbSAnQC90eXBlcy9Tb3VyY2UnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgYWx0OiBzdHJpbmc7XG4gICAgaGVpZ2h0Pzogc3RyaW5nO1xuICAgIGlzTGF6eT86IGJvb2xlYW47XG4gICAgc291cmNlcz86IFNvdXJjZVtdO1xuICAgIHNyYz86IHN0cmluZztcbiAgICB3aWR0aD86IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGFsdDogJycsXG4gICAgaGVpZ2h0OiB1bmRlZmluZWQsXG4gICAgaXNMYXp5OiB0cnVlLFxuICAgIHNvdXJjZXM6ICgpID0+IFtdLFxuICAgIHNyYzogdW5kZWZpbmVkLFxuICAgIHdpZHRoOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIGNvbnN0IHBpY3R1cmUgPSByZWYoKTtcbiAgY29uc3QgaW1nID0gcmVmKCk7XG5cbiAgY29uc3QgaW1hZ2VEZWZhdWx0ID0gJ2h0dHBzOi8vY2RuLXN0YXRpYy50aWxhYnMuaW8vbWFya2V0cGxhY2UvY29tbW9uL2ltYWdlLWNvbWluZy1zb29uLnN2Zyc7XG5cbiAgY29uc3Qgc2V0SW1hZ2VGcm9tRGVmYXVsdCA9ICgpID0+IHtcbiAgICBjb25zdCBjdXJyZW50U3JjID0gaW1nLnZhbHVlPy5jdXJyZW50U3JjO1xuICAgIGNvbnN0IHBpY3R1cmVTb3VyY2UgPSBwaWN0dXJlLnZhbHVlPy5xdWVyeVNlbGVjdG9yKGBzb3VyY2Vbc3Jjc2V0PVwiJHtjdXJyZW50U3JjfVwiXWApO1xuXG4gICAgaWYgKGN1cnJlbnRTcmMgJiYgcGljdHVyZVNvdXJjZSkge1xuICAgICAgcGljdHVyZVNvdXJjZS5zcmNzZXQgPSBpbWFnZURlZmF1bHQ7XG4gICAgfSBlbHNlIGlmIChpbWcudmFsdWUpIHtcbiAgICAgIGltZy52YWx1ZS5zcmMgPSBpbWFnZURlZmF1bHQ7XG4gICAgfVxuICB9O1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPHBpY3R1cmVcbiAgICA6Y2xhc3M9XCJbJ3RpZGUtaW1hZ2UnLCBDU1MuRElTUExBWS5CTE9DS11cIlxuICAgIHJlZj1cInBpY3R1cmVcIlxuICAgIDpzdHlsZT1cIlxuICAgICAgd2lkdGggfHwgaGVpZ2h0XG4gICAgICAgID8ge1xuICAgICAgICAgICAgd2lkdGg6IHdpZHRoIHx8IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGhlaWdodDogaGVpZ2h0IHx8IHVuZGVmaW5lZCxcbiAgICAgICAgICB9XG4gICAgICAgIDogdW5kZWZpbmVkXG4gICAgXCJcbiAgPlxuICAgIDxzb3VyY2VcbiAgICAgIDprZXk9XCJzb3VyY2Uuc3Jjc2V0XCJcbiAgICAgIDptZWRpYT1cImAobWluLXdpZHRoOiR7c291cmNlLm1lZGlhfXB4KWBcIlxuICAgICAgOnNyY3NldD1cInNvdXJjZS5zcmNzZXRcIlxuICAgICAgdi1mb3I9XCJzb3VyY2UgaW4gcHJvcHMuc291cmNlc1wiXG4gICAgLz5cblxuICAgIDxpbWdcbiAgICAgIDphbHQ9XCJhbHRcIlxuICAgICAgOmNsYXNzPVwiW0NTUy5XSURUSC5GVUxMLCBDU1MuSEVJR0hULkZVTEwsIENTUy5PQkpFQ1QuQ0VOVEVSLCBDU1MuT0JKRUNULkNPVkVSXVwiXG4gICAgICA6ZmV0Y2hwcmlvcml0eT1cImlzTGF6eSA/IHVuZGVmaW5lZCA6ICdoaWdoJ1wiXG4gICAgICA6bG9hZGluZz1cInByb3BzLmlzTGF6eSA/ICdsYXp5JyA6ICdlYWdlcidcIlxuICAgICAgcmVmPVwiaW1nXCJcbiAgICAgIDpzcmM9XCJzcmMgPz8gaW1hZ2VEZWZhdWx0XCJcbiAgICAgIEBlcnJvcj1cInNldEltYWdlRnJvbURlZmF1bHRcIlxuICAgIC8+XG4gIDwvcGljdHVyZT5cbjwvdGVtcGxhdGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgZm9ybWF0TnVtYmVyIH0gZnJvbSAnQC91dGlsaXRpZXMvZm9ybWF0JztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGNoZWNrZWQ/OiBib29sZWFuO1xuICAgIGRhdGFUcmFjaz86IHN0cmluZztcbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XG4gICAgaW5kZXRlcm1pbmF0ZT86IGJvb2xlYW47XG4gICAgaW5wdXRJZD86IHN0cmluZztcbiAgICBsYWJlbDogc3RyaW5nO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBudW1iZXI/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBjaGVja2VkOiBmYWxzZSxcbiAgICBkYXRhVHJhY2s6ICcnLFxuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBpbmRldGVybWluYXRlOiBmYWxzZSxcbiAgICBpbnB1dElkOiB1bmRlZmluZWQsXG4gICAgbGFiZWw6IHVuZGVmaW5lZCxcbiAgICBuYW1lOiB1bmRlZmluZWQsXG4gICAgbnVtYmVyOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIGNvbnN0IGlzQ2hlY2tlZCA9IGNvbXB1dGVkKCgpID0+IHByb3BzLmNoZWNrZWQgfHwgcHJvcHMuaW5kZXRlcm1pbmF0ZSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtaW5wdXQtY2hlY2tib3gnLFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICBDU1MuRk9OVC5ST0xFLkJPRFlfMSxcbiAgICAgIGRpc2FibGVkID8gWydkaXNhYmxlZCcsIENTUy5QT0lOVEVSX0VWRU5UUy5PRkZdIDogQ1NTLkNVUlNPUi5QT0lOVEVSLFxuICAgIF1cIlxuICA+XG4gICAgPGlucHV0XG4gICAgICA6Y2hlY2tlZD1cImlzQ2hlY2tlZFwiXG4gICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuTk9ORV1cIlxuICAgICAgOmRpc2FibGVkPVwicHJvcHMuZGlzYWJsZWRcIlxuICAgICAgOm5hbWU9XCJwcm9wcy5uYW1lXCJcbiAgICAgIHJlZj1cImlucHV0XCJcbiAgICAgIEBjbGljay5wcmV2ZW50XG4gICAgICA6aWQ9XCJwcm9wcy5pbnB1dElkXCJcbiAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgLz5cblxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtaW5wdXQtY2hlY2tib3gtY3VzdG9tJyxcbiAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuQVhJUzEuQ0VOVEVSLFxuICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICBDU1MuRkxFWC5TSFJJTksuT0ZGLFxuICAgICAgICBDU1MuQk9SREVSLkZVTEwuT05FLFxuICAgICAgICBpc0NoZWNrZWQgPyBbQ1NTLkJPUkRFUi5DT0xPUi5ISUdILCBDU1MuQkcuU0VDT05EQVJZXSA6IFtDU1MuQk9SREVSLkNPTE9SLkRFRkFVTFQsIENTUy5CRy5TVVJGQUNFLkRFRkFVTFRdLFxuICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5RVUFSVEVSLFxuICAgICAgICBpc0NoZWNrZWQgJiYgJ2NoZWNrZWQnLFxuICAgICAgICBkaXNhYmxlZCA/IENTUy5DVVJTT1IuTk9UX0FMTE9XRUQgOiBDU1MuQ1VSU09SLlBPSU5URVIsXG4gICAgICBdXCJcbiAgICA+XG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULkNPTE9SLlNFQ09OREFSWV1cIlxuICAgICAgICA6aWNvbj1cInByb3BzLmluZGV0ZXJtaW5hdGUgPyBJQ09OLlJFTU9WRSA6IElDT04uQ0hFQ0tcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICB2LWlmPVwiaXNDaGVja2VkXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8bGFiZWxcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgICBDU1MuRk9OVC5ST0xFLkJPRFlfMSxcbiAgICAgICAgZGlzYWJsZWQgPyBDU1MuQ1VSU09SLk5PVF9BTExPV0VEIDogQ1NTLkNVUlNPUi5QT0lOVEVSLFxuICAgICAgXVwiXG4gICAgICA6Zm9yPVwicHJvcHMuaW5wdXRJZFwiXG4gICAgICBAY2xpY2sucHJldmVudFxuICAgICAgdi1pZj1cImxhYmVsXCJcbiAgICA+XG4gICAgICA8c3Bhbj57eyBsYWJlbCB9fTwvc3Bhbj5cbiAgICAgIDxzcGFuXG4gICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlRdXCJcbiAgICAgICAgdi1pZj1cInByb3BzLm51bWJlclwiXG4gICAgICA+XG4gICAgICAgICh7eyBmb3JtYXROdW1iZXIocHJvcHMubnVtYmVyKSB9fSlcbiAgICAgIDwvc3Bhbj5cbiAgICA8L2xhYmVsPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWlucHV0LWNoZWNrYm94LmRpc2FibGVkIHtcbiAgICBvcGFjaXR5OiB2YXIoLS10aWRlLWRpc2FibGVkKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LWNoZWNrYm94LWN1c3RvbSB7XG4gICAgd2lkdGg6IHZhcigtLXRpZGUtZm9udC0yOCk7XG4gICAgaGVpZ2h0OiB2YXIoLS10aWRlLWZvbnQtMjgpO1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgcmVmLCB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgY2hlY2tlZD86IGJvb2xlYW47XG4gICAgZGF0YVRyYWNrPzogc3RyaW5nO1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICBpbnB1dElkPzogc3RyaW5nO1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgbmFtZTogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgY2hlY2tlZDogZmFsc2UsXG4gICAgZGF0YVRyYWNrOiAnJyxcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgaW5wdXRJZDogdW5kZWZpbmVkLFxuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIGNvbnN0IGNoZWNrZWQgPSByZWYocHJvcHMuY2hlY2tlZCk7XG5cbiAgd2F0Y2goXG4gICAgKCkgPT4gcHJvcHMuY2hlY2tlZCxcbiAgICAobmV3VmFsdWUsIG9sZFZhbHVlKSA9PiB7XG4gICAgICBpZiAobmV3VmFsdWUgIT09IG9sZFZhbHVlIHx8IG5ld1ZhbHVlICE9PSBjaGVja2VkLnZhbHVlKSB7XG4gICAgICAgIGNoZWNrZWQudmFsdWUgPSBuZXdWYWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gICk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtaW5wdXQtcmFkaW8nLFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGLFxuICAgICAgcHJvcHMuZGlzYWJsZWQgJiYgJ2Rpc2FibGVkJyxcbiAgICBdXCJcbiAgPlxuICAgIDxpbnB1dFxuICAgICAgOmNoZWNrZWQ9XCJjaGVja2VkXCJcbiAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5OT05FXVwiXG4gICAgICA6aWQ9XCJwcm9wcy5pbnB1dElkXCJcbiAgICAgIG5hbWU9XCJcIlxuICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgIHZhbHVlPVwiXCJcbiAgICAvPlxuXG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1pbnB1dC1yYWRpby1jdXN0b20nLFxuICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgIENTUy5BWElTMS5DRU5URVIsXG4gICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgIENTUy5CT1JERVIuRlVMTC5PTkUsXG4gICAgICAgIGNoZWNrZWQgPyBDU1MuQk9SREVSLkNPTE9SLkhJR0ggOiBDU1MuQk9SREVSLkNPTE9SLkRFRkFVTFQsXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLkZVTEwsXG4gICAgICAgIENTUy5CRy5TVVJGQUNFLkRFRkFVTFQsXG4gICAgICAgIENTUy5DVVJTT1IuUE9JTlRFUixcbiAgICAgICAgQ1NTLlBPSU5URVJfRVZFTlRTLk9OLFxuICAgICAgICBjaGVja2VkICYmICdjaGVja2VkJyxcbiAgICAgIF1cIlxuICAgID5cbiAgICAgIDxkaXYgOmNsYXNzPVwiWyd0aWRlLWlucHV0LXJhZGlvLWNoZWNrJywgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCwgcHJvcHMuY2hlY2tlZCAmJiBDU1MuQkcuU0VDT05EQVJZXVwiIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8bGFiZWxcbiAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkJPRFlfMSwgQ1NTLkNVUlNPUi5QT0lOVEVSLCBDU1MuUE9JTlRFUl9FVkVOVFMuT05dXCJcbiAgICAgIDpmb3I9XCJwcm9wcy5pbnB1dElkXCJcbiAgICA+XG4gICAgICB7eyBwcm9wcy5sYWJlbCB9fVxuICAgIDwvbGFiZWw+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtaW5wdXQtcmFkaW8uZGlzYWJsZWQge1xuICAgIG9wYWNpdHk6IHZhcigtLXRpZGUtZGlzYWJsZWQpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtcmFkaW8tY3VzdG9tIHtcbiAgICB3aWR0aDogdmFyKC0tdGlkZS1mb250LTI4KTtcbiAgICBoZWlnaHQ6IHZhcigtLXRpZGUtZm9udC0yOCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1yYWRpby1jaGVjayB7XG4gICAgd2lkdGg6IDFyZW07XG4gICAgaGVpZ2h0OiAxcmVtO1xuICB9XG48L3N0eWxlPlxuIiwiaW1wb3J0IHsgcHJpY2VUb051bWJlciB9IGZyb20gJ0AvdXRpbGl0aWVzL2Zvcm1hdCc7XG5cbmltcG9ydCB0eXBlIHsgUmFuZ2VEYXRhIH0gZnJvbSAnQC90eXBlcy9GYWNldFJhbmdlJztcbmltcG9ydCB0eXBlIHsgU3RyaW5nSW5wdXQgfSBmcm9tICdAL3R5cGVzL0Zvcm0nO1xuaW1wb3J0IHR5cGUgeyBTZWxlY3RPcHRpb24gfSBmcm9tICdAL3R5cGVzL1NlbGVjdCc7XG5pbXBvcnQgdHlwZSB7IFZhbGlkYXRpb25FcnJvciwgVmFsaWRhdGlvbkxlbmd0aCwgVmFsaWRhdGlvblJlc3VsdCwgVmFsaWRhdG9yIH0gZnJvbSAnQC90eXBlcy9WYWxpZGF0aW9uJztcbmltcG9ydCB0eXBlIHsgUmVmIH0gZnJvbSAndnVlJztcblxuZXhwb3J0IGNvbnN0IGVycm9yTWVzc2FnZURlZmF1bHQgPSAnUGxlYXNlIGVudGVyIGEgdmFsaWQgdmFsdWUuJztcblxuZXhwb3J0IGNvbnN0IG5vRXJyb3IgPSB7XG4gIG1lc3NhZ2U6ICcnLFxuICB2YWxpZDogdHJ1ZSxcbn0gYXMgUmVhZG9ubHk8VmFsaWRhdGlvblJlc3VsdD47XG5cbmV4cG9ydCBjb25zdCBjaGVja0Zvcm1hdCA9IChmb3JtYXQ6IFJlZ0V4cCkgPT4ge1xuICByZXR1cm4gKHZhbHVlOiBzdHJpbmcpOiBWYWxpZGF0aW9uUmVzdWx0ID0+IHtcbiAgICBsZXQgcmVzdWx0ID0gbm9FcnJvcjtcblxuICAgIGlmICghdmFsdWUudHJpbSgpLm1hdGNoKGZvcm1hdCkpIHtcbiAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgbWVzc2FnZTogZXJyb3JNZXNzYWdlRGVmYXVsdCxcbiAgICAgICAgdmFsaWQ6IGZhbHNlLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEVycm9yTWVzc2FnZSA9IChlcnJvckZyb21Qcm9wczogVmFsaWRhdGlvbkVycm9yLCBlcnJvckZyb21SZWY6IFZhbGlkYXRpb25FcnJvcikgPT4ge1xuICAvLyBlcnJvciBpbiBwcm9wcyB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgdmFsaWRhdGlvbiBlcnJvclxuICBpZiAodHlwZW9mIGVycm9yRnJvbVByb3BzID09PSAnc3RyaW5nJyAmJiBlcnJvckZyb21Qcm9wcy5sZW5ndGggPiAwKSByZXR1cm4gZXJyb3JGcm9tUHJvcHM7XG5cbiAgcmV0dXJuIHR5cGVvZiBlcnJvckZyb21SZWYgPT09ICdzdHJpbmcnICYmIGVycm9yRnJvbVJlZi5sZW5ndGggPiAwID8gZXJyb3JGcm9tUmVmIDogZXJyb3JNZXNzYWdlRGVmYXVsdDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRGaWVsZEhhc0Vycm9yID0gKGVycm9yRnJvbVByb3BzOiBWYWxpZGF0aW9uRXJyb3IsIGVycm9yRnJvbVJlZjogVmFsaWRhdGlvbkVycm9yKSA9PlxuICBlcnJvckZyb21Qcm9wcyAhPT0gZmFsc2UgfHwgZXJyb3JGcm9tUmVmICE9PSBmYWxzZTtcblxuZXhwb3J0IGNvbnN0IGdldEZpZWxkTGVuZ3RoSXNWYWxpZCA9ICh7IG1heGxlbmd0aCwgbWlubGVuZ3RoLCByZXF1aXJlZCwgdmFsdWUgfTogVmFsaWRhdGlvbkxlbmd0aCkgPT4ge1xuICBjb25zdCBpc0VtcHR5QW5kVW5yZXF1aXJlZCA9IHZhbHVlLmxlbmd0aCA9PT0gMCAmJiAhcmVxdWlyZWQ7XG4gIGNvbnN0IGlzVG9vTG9uZyA9IG1heGxlbmd0aCAmJiB2YWx1ZS5sZW5ndGggPiBtYXhsZW5ndGg7XG4gIGNvbnN0IGlzVG9vU2hvcnQgPSAhaXNFbXB0eUFuZFVucmVxdWlyZWQgJiYgbWlubGVuZ3RoICYmIHZhbHVlLmxlbmd0aCA8IG1pbmxlbmd0aDtcblxuICByZXR1cm4gIWlzVG9vU2hvcnQgJiYgIWlzVG9vTG9uZztcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRNYXhSYW5nZUlzVmFsaWQgPSAoeyBtaW4gfTogUGljazxSYW5nZURhdGEsICdtaW4nPiwgdHlwZT86ICdwcmljZScpID0+IHtcbiAgcmV0dXJuICh2YWx1ZTogc3RyaW5nKTogVmFsaWRhdGlvblJlc3VsdCA9PiB7XG4gICAgbGV0IG5ld01heDogbnVtYmVyIHwgbnVsbCA9IHR5cGUgPT09ICdwcmljZScgPyBwcmljZVRvTnVtYmVyKHZhbHVlKSA6IE51bWJlcih2YWx1ZSk7XG4gICAgbmV3TWF4ID0gIWlzTmFOKG5ld01heCkgPyBuZXdNYXggOiBudWxsO1xuICAgIGlmIChtaW4gJiYgbmV3TWF4KSB7XG4gICAgICBpZiAobmV3TWF4ID49IG1pbikge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgICAgIHZhbGlkOiB0cnVlLFxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBtZXNzYWdlOiBgTXVzdCBiZSBncmVhdGVyIHRoYW4gbWluYCxcbiAgICAgICAgICB2YWxpZDogZmFsc2UsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBub0Vycm9yO1xuICAgIH1cbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRNaW5SYW5nZUlzVmFsaWQgPSAoeyBtYXggfTogUGljazxSYW5nZURhdGEsICdtYXgnPiwgdHlwZT86ICdwcmljZScpID0+IHtcbiAgcmV0dXJuICh2YWx1ZTogc3RyaW5nKTogVmFsaWRhdGlvblJlc3VsdCA9PiB7XG4gICAgbGV0IG5ld01pbjogbnVtYmVyIHwgbnVsbCA9IHR5cGUgPT09ICdwcmljZScgPyBwcmljZVRvTnVtYmVyKHZhbHVlKSA6IE51bWJlcih2YWx1ZSk7XG4gICAgbmV3TWluID0gIWlzTmFOKG5ld01pbikgPyBuZXdNaW4gOiBudWxsO1xuICAgIGlmIChtYXggJiYgbmV3TWluKSB7XG4gICAgICBpZiAobmV3TWluIDw9IG1heCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgICAgIHZhbGlkOiB0cnVlLFxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBtZXNzYWdlOiBgTXVzdCBiZSBsZXNzIHRoYW4gbWF4YCxcbiAgICAgICAgICB2YWxpZDogZmFsc2UsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBub0Vycm9yO1xuICAgIH1cbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTZWxlY3RPcHRpb25zRnJvbVN0cmluZ3MgPSAoc3RyaW5nczogc3RyaW5nW10pID0+XG4gIHN0cmluZ3MubWFwKFxuICAgIChvcHRpb24pID0+XG4gICAgICAoe1xuICAgICAgICBsYWJlbDogb3B0aW9uLFxuICAgICAgICB2YWx1ZTogb3B0aW9uLFxuICAgICAgfSBhcyBTZWxlY3RPcHRpb24pXG4gICk7XG5cbmV4cG9ydCBjb25zdCBoYW5kbGVGaWVsZFZhbGlkYXRpb24gPSAoe1xuICBlcnJvcixcbiAgZXJyb3JGcm9tUHJvcHMsXG4gIG1heGxlbmd0aCxcbiAgbWlubGVuZ3RoLFxuICByZXF1aXJlZCA9IGZhbHNlLFxuICB2YWxpZGF0b3JzLFxuICB2YWx1ZSxcbn06IHtcbiAgZXJyb3I6IFJlZjxWYWxpZGF0aW9uRXJyb3I+O1xuICBlcnJvckZyb21Qcm9wczogVmFsaWRhdGlvbkVycm9yO1xuICBtYXhsZW5ndGg/OiBudW1iZXI7XG4gIG1pbmxlbmd0aD86IG51bWJlcjtcbiAgcmVxdWlyZWQ/OiBib29sZWFuO1xuICB2YWxpZGF0b3JzPzogVmFsaWRhdG9yW107XG4gIHZhbHVlPzogUmVmPHN0cmluZyB8IHVuZGVmaW5lZD47XG59KSA9PiB7XG4gIC8vIGVycm9yIGluIHByb3BzIHRha2VzIHByZWNlZGVuY2Ugb3ZlciB2YWxpZGF0aW9uIGVycm9yXG5cbiAgZXJyb3IudmFsdWUgPSBlcnJvckZyb21Qcm9wcyA/IGVycm9yRnJvbVByb3BzIDogZmFsc2U7XG5cbiAgaWYgKCFlcnJvci52YWx1ZSAmJiB2YWxpZGF0b3JzKSB7XG4gICAgY29uc3QgdmFsaWRhdGlvbiA9IHZhbGlkYXRlUHJvcGVydHkodmFsdWU/LnZhbHVlIHx8ICcnLCB2YWxpZGF0b3JzKTtcblxuICAgIGlmICghdmFsaWRhdGlvbi52YWxpZCkge1xuICAgICAgZXJyb3IudmFsdWUgPSB2YWxpZGF0aW9uLm1lc3NhZ2U7XG4gICAgfVxuICB9XG5cbiAgaWYgKCFlcnJvci52YWx1ZSAmJiAobWF4bGVuZ3RoIHx8IG1pbmxlbmd0aCkpIHtcbiAgICBjb25zdCBsZW5ndGhWYWxpZGF0aW9uID0gdmFsaWRhdGVMZW5ndGgoe1xuICAgICAgbWF4bGVuZ3RoLFxuICAgICAgbWlubGVuZ3RoLFxuICAgICAgcmVxdWlyZWQsXG4gICAgICB2YWx1ZTogdmFsdWU/LnZhbHVlIHx8ICcnLFxuICAgIH0pO1xuXG4gICAgaWYgKCFsZW5ndGhWYWxpZGF0aW9uLnZhbGlkKSB7XG4gICAgICBlcnJvci52YWx1ZSA9IGxlbmd0aFZhbGlkYXRpb24ubWVzc2FnZTtcbiAgICB9XG4gIH1cbn07XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUZpZWxkc0Zyb21SZWZzKGZpZWxkczogeyBba2V5OiBzdHJpbmddOiBSZWY8U3RyaW5nSW5wdXQgfCBudWxsPiB9KSB7XG4gIGxldCB2YWxpZCA9IHRydWU7XG5cbiAgZm9yIChjb25zdCBrZXkgaW4gZmllbGRzKSB7XG4gICAgaWYgKGZpZWxkc1trZXldLnZhbHVlPy5yZXF1aXJlZCkge1xuICAgICAgY29uc3QgdmFsdWUgPSBmaWVsZHNba2V5XS52YWx1ZT8udmFsdWU7XG4gICAgICB2YWxpZCA9IHZhbGlkICYmICEhdmFsdWUgJiYgdmFsdWUudHJpbSgpICE9PSAnJztcbiAgICB9XG5cbiAgICBjb25zdCBlcnJvciA9IGZpZWxkc1trZXldLnZhbHVlPy5lcnJvcjtcbiAgICB2YWxpZCA9IHZhbGlkICYmICFlcnJvcjtcbiAgfVxuXG4gIHJldHVybiB2YWxpZDtcbn1cblxuZXhwb3J0IGNvbnN0IHZhbGlkYXRlTGVuZ3RoID0gKHtcbiAgbWF4bGVuZ3RoLFxuICBtaW5sZW5ndGgsXG4gIHJlcXVpcmVkID0gZmFsc2UsXG4gIHZhbHVlLFxufTogVmFsaWRhdGlvbkxlbmd0aCk6IFZhbGlkYXRpb25SZXN1bHQgPT4ge1xuICBjb25zdCByZXNwb25zZSA9IHtcbiAgICBtZXNzYWdlOiAnJyxcbiAgICB2YWxpZDogdHJ1ZSxcbiAgfTtcblxuICByZXNwb25zZS52YWxpZCA9IGdldEZpZWxkTGVuZ3RoSXNWYWxpZCh7XG4gICAgbWF4bGVuZ3RoLFxuICAgIG1pbmxlbmd0aCxcbiAgICByZXF1aXJlZCxcbiAgICB2YWx1ZSxcbiAgfSk7XG5cbiAgaWYgKHJlc3BvbnNlLnZhbGlkKSByZXR1cm4gcmVzcG9uc2U7XG5cbiAgcmVzcG9uc2UubWVzc2FnZSA9IGVycm9yTWVzc2FnZURlZmF1bHQ7XG5cbiAgaWYgKG1heGxlbmd0aCAmJiBtaW5sZW5ndGgpIHtcbiAgICByZXNwb25zZS5tZXNzYWdlID0gYFBsZWFzZSBlbnRlciBhIHZhbHVlIGJldHdlZW4gJHttaW5sZW5ndGh9IGFuZCAke21heGxlbmd0aH0gY2hhcmFjdGVycyBpbiBsZW5ndGguYDtcbiAgfSBlbHNlIGlmIChtYXhsZW5ndGgpIHtcbiAgICByZXNwb25zZS5tZXNzYWdlID0gYFBsZWFzZSBlbnRlciBhIHZhbHVlIG5vIG1vcmUgdGhhbiAke21heGxlbmd0aH0gY2hhcmFjdGVycyBpbiBsZW5ndGguYDtcbiAgfSBlbHNlIGlmIChtaW5sZW5ndGgpIHtcbiAgICByZXNwb25zZS5tZXNzYWdlID0gYFBsZWFzZSBlbnRlciBhIHZhbHVlIG5vIGxlc3MgdGhhbiAke21pbmxlbmd0aH0gY2hhcmFjdGVycyBpbiBsZW5ndGguYDtcbiAgfVxuXG4gIHJldHVybiByZXNwb25zZTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVByb3BlcnR5KHZhbHVlOiBzdHJpbmcsIHZhbGlkYXRvcnM6ICgodmFsdWU6IHN0cmluZykgPT4gVmFsaWRhdGlvblJlc3VsdClbXSk6IFZhbGlkYXRpb25SZXN1bHQge1xuICBmb3IgKGNvbnN0IHZhbGlkYXRvciBvZiB2YWxpZGF0b3JzKSB7XG4gICAgY29uc3QgdmFsaWRhdGlvbiA9IHZhbGlkYXRvcih2YWx1ZSk7XG4gICAgaWYgKCF2YWxpZGF0aW9uLnZhbGlkKSB7XG4gICAgICByZXR1cm4gdmFsaWRhdGlvbjtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIG1lc3NhZ2U6ICcnLFxuICAgIHZhbGlkOiB0cnVlLFxuICB9O1xufVxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQsIHJlZiwgd2F0Y2ggfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IGdldEVycm9yTWVzc2FnZSwgZ2V0RmllbGRIYXNFcnJvciB9IGZyb20gJ0AvdXRpbGl0aWVzL3ZhbGlkYXRpb24nO1xuXG4gIGltcG9ydCB0eXBlIHsgU2VsZWN0RmllbGQgfSBmcm9tICdAL3R5cGVzL0ZpZWxkJztcbiAgaW1wb3J0IHR5cGUgeyBTZWxlY3RPcHRpb24sIFNlbGVjdE9wdGlvbkdyb3VwIH0gZnJvbSAnQC90eXBlcy9TZWxlY3QnO1xuXG4gIGludGVyZmFjZSBQcm9wcyBleHRlbmRzIFNlbGVjdEZpZWxkIHtcbiAgICBpbnB1dElkPzogc3RyaW5nO1xuICAgIHN1cHBvcnRpbmdUZXh0Pzogc3RyaW5nO1xuICB9XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgZXJyb3I6IGZhbHNlLFxuICAgIGlucHV0SWQ6IHVuZGVmaW5lZCxcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBzdXBwb3J0aW5nVGV4dDogdW5kZWZpbmVkLFxuICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIGNvbnN0IGVycm9yID0gcmVmKHByb3BzLmVycm9yKTtcbiAgY29uc3QgaGFzRm9jdXMgPSByZWYoZmFsc2UpO1xuICBjb25zdCBpbnB1dCA9IHJlZjxIVE1MU2VsZWN0RWxlbWVudCB8IG51bGw+KG51bGwpO1xuICBjb25zdCByZXF1aXJlZCA9IHJlZihwcm9wcy5yZXF1aXJlZCk7XG4gIGNvbnN0IHZhbHVlID0gcmVmPHN0cmluZyB8IHVuZGVmaW5lZD4ocHJvcHMudmFsdWUpO1xuXG4gIGNvbnN0IGVycm9yTWVzc2FnZSA9IGNvbXB1dGVkKCgpID0+IGdldEVycm9yTWVzc2FnZShwcm9wcy5lcnJvciwgZXJyb3IudmFsdWUpKTtcbiAgY29uc3QgZm9ybWF0dGVkTGFiZWwgPSBjb21wdXRlZCgoKSA9PiAocHJvcHMucmVxdWlyZWQgPyBgJHtwcm9wcy5sYWJlbH0gKmAgOiBwcm9wcy5sYWJlbCkpO1xuICBjb25zdCBoYXNFcnJvciA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5yZXF1aXJlZCAmJiAhdmFsdWUudmFsdWUpIHx8IGdldEZpZWxkSGFzRXJyb3IoZXJyb3IudmFsdWUsIHByb3BzLmVycm9yKSk7XG4gIGNvbnN0IGhhc01pbmlsYWJlbCA9IGNvbXB1dGVkKCgpID0+IGhhc0ZvY3VzLnZhbHVlIHx8ICFpc0VtcHR5LnZhbHVlKTtcbiAgY29uc3QgaXNFbXB0eSA9IGNvbXB1dGVkKCgpID0+IHZhbHVlLnZhbHVlID09PSB1bmRlZmluZWQpO1xuXG4gIGNvbnN0IGV4cGFuZE9wdGlvbnMgPSAoKSA9PiB7XG4gICAgY29uc3QgZXZlbnQgPSBuZXcgTW91c2VFdmVudCgnbW91c2Vkb3duJyk7XG4gICAgaW5wdXQ/LnZhbHVlPy5kaXNwYXRjaEV2ZW50KGV2ZW50KTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGb2N1cyA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IHRydWU7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRm9jdXNPdXQgPSAoKSA9PiB7XG4gICAgaGFzRm9jdXMudmFsdWUgPSBmYWxzZTtcbiAgfTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBwcm9wcy52YWx1ZSxcbiAgICAobmV3VmFsdWUsIG9sZFZhbHVlKSA9PiB7XG4gICAgICBpZiAobmV3VmFsdWUgIT09IG9sZFZhbHVlIHx8IG5ld1ZhbHVlICE9PSB2YWx1ZS52YWx1ZSkge1xuICAgICAgICB2YWx1ZS52YWx1ZSA9IG5ld1ZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgKTtcblxuICBkZWZpbmVFeHBvc2UoeyBlcnJvciwgdmFsdWUgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtaW5wdXQtc2VsZWN0JyxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLFxuICAgICAgQ1NTLkdBUC5RVUFSVEVSLFxuICAgICAgZGlzYWJsZWQgJiYgJ2Rpc2FibGVkJyxcbiAgICAgIGhhc0Vycm9yICYmICdlcnJvcicsXG4gICAgXVwiXG4gID5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWlucHV0LWJvcmRlcicsXG4gICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5IQUxGLFxuICAgICAgICBDU1MuQkcuU1VSRkFDRS5ERUZBVUxULFxuICAgICAgICBwcm9wcy5kaXNhYmxlZCA/IENTUy5DVVJTT1IuTk9UX0FMTE9XRUQgOiAnJyxcbiAgICAgICAgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTixcbiAgICAgIF1cIlxuICAgICAgQGNsaWNrPVwiZXhwYW5kT3B0aW9uc1wiXG4gICAgPlxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTiwgQ1NTLldJRFRILkZVTExdXCI+XG4gICAgICAgIDxsYWJlbFxuICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgIGhhc01pbmlsYWJlbCA/IFsnbWluaWxhYmVsJywgQ1NTLkZPTlQuUk9MRS5MQUJFTF8zXSA6IENTUy5GT05ULlJPTEUuTEFCRUxfMSxcbiAgICAgICAgICAgIENTUy5QT1NJVElPTi5BQlNPTFVURSxcbiAgICAgICAgICAgIENTUy5QT1NJVElPTklORy5MRUZULFxuICAgICAgICAgICAgQ1NTLk1BUkdJTi5UT1AuSEFMRixcbiAgICAgICAgICAgIENTUy5NQVJHSU4uTEVGVC5PTkUsXG4gICAgICAgICAgICAhaGFzRXJyb3IgJiYgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5ULFxuICAgICAgICAgICAgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRixcbiAgICAgICAgICBdXCJcbiAgICAgICAgICA6Zm9yPVwicHJvcHMuaW5wdXRJZFwiXG4gICAgICAgICAgdi1pZj1cImxhYmVsXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGZvcm1hdHRlZExhYmVsIH19XG4gICAgICAgIDwvbGFiZWw+XG5cbiAgICAgICAgPHNlbGVjdFxuICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgIENTUy5QQURESU5HLkJPVFRPTS5IQUxGLFxuICAgICAgICAgICAgQ1NTLlBBRERJTkcuWC5PTkUsXG4gICAgICAgICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICAgICAgICAgIGRpc2FibGVkICYmIENTUy5DVVJTT1IuTk9UX0FMTE9XRUQsXG4gICAgICAgICAgICBDU1MuRk9OVC5ST0xFLkJPRFlfMSxcbiAgICAgICAgICBdXCJcbiAgICAgICAgICA6ZGlzYWJsZWQ9XCJkaXNhYmxlZFwiXG4gICAgICAgICAgOm5hbWU9XCJuYW1lXCJcbiAgICAgICAgICByZWY9XCJpbnB1dFwiXG4gICAgICAgICAgOnJlcXVpcmVkPVwicmVxdWlyZWRcIlxuICAgICAgICAgIEBmb2N1cz1cImhhbmRsZUZvY3VzXCJcbiAgICAgICAgICBAZm9jdXNvdXQ9XCJoYW5kbGVGb2N1c091dFwiXG4gICAgICAgICAgOmlkPVwicHJvcHMuaW5wdXRJZFwiXG4gICAgICAgICAgdi1tb2RlbD1cInZhbHVlXCJcbiAgICAgICAgPlxuICAgICAgICAgIDx0ZW1wbGF0ZSB2LWZvcj1cIm9wdGdyb3VwIGluIHByb3BzLm9wdGdyb3Vwc1wiPlxuICAgICAgICAgICAgPG9wdGdyb3VwXG4gICAgICAgICAgICAgIDpjbGFzcz1cIltDU1MuV0lEVEguRlVMTCwgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVF1cIlxuICAgICAgICAgICAgICA6a2V5PVwiKG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbkdyb3VwKS5sYWJlbFwiXG4gICAgICAgICAgICAgIDpsYWJlbD1cIihvcHRncm91cCBhcyBTZWxlY3RPcHRpb25Hcm91cCkubGFiZWxcIlxuICAgICAgICAgICAgICB2LWlmPVwiKG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbkdyb3VwKS5vcHRpb25zXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG9wdGlvblxuICAgICAgICAgICAgICAgIDpjbGFzcz1cIltDU1MuV0lEVEguRlVMTCwgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVF1cIlxuICAgICAgICAgICAgICAgIDprZXk9XCJvcHRpb24udmFsdWVcIlxuICAgICAgICAgICAgICAgIDp2YWx1ZT1cIm9wdGlvbi52YWx1ZVwiXG4gICAgICAgICAgICAgICAgdi1mb3I9XCJvcHRpb24gaW4gKG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbkdyb3VwKS5vcHRpb25zXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IG9wdGlvbi5sYWJlbCB9fVxuICAgICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICAgIDwvb3B0Z3JvdXA+XG5cbiAgICAgICAgICAgIDxvcHRpb25cbiAgICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5XSURUSC5GVUxMLCBDU1MuQkcuU1VSRkFDRS5ERUZBVUxUXVwiXG4gICAgICAgICAgICAgIDprZXk9XCIob3B0Z3JvdXAgYXMgU2VsZWN0T3B0aW9uKS52YWx1ZVwiXG4gICAgICAgICAgICAgIDpzZWxlY3RlZD1cInZhbHVlID09PSAob3B0Z3JvdXAgYXMgU2VsZWN0T3B0aW9uKS52YWx1ZSA/IHRydWUgOiB1bmRlZmluZWRcIlxuICAgICAgICAgICAgICA6dmFsdWU9XCIob3B0Z3JvdXAgYXMgU2VsZWN0T3B0aW9uKS52YWx1ZVwiXG4gICAgICAgICAgICAgIHYtZWxzZVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyAob3B0Z3JvdXAgYXMgU2VsZWN0T3B0aW9uKS5sYWJlbCB9fVxuICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgPC90ZW1wbGF0ZT5cblxuICAgICAgICAgIDxvcHRpb25cbiAgICAgICAgICAgIDpjbGFzcz1cIltDU1MuV0lEVEguRlVMTCwgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVF1cIlxuICAgICAgICAgICAgOmtleT1cIm9wdGlvbi52YWx1ZVwiXG4gICAgICAgICAgICA6c2VsZWN0ZWQ9XCJ2YWx1ZSA9PT0gb3B0aW9uLnZhbHVlID8gdHJ1ZSA6IHVuZGVmaW5lZFwiXG4gICAgICAgICAgICA6dmFsdWU9XCJvcHRpb24udmFsdWVcIlxuICAgICAgICAgICAgdi1mb3I9XCJvcHRpb24gaW4gb3B0aW9uc1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgb3B0aW9uLmxhYmVsIH19XG4gICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgIDwvc2VsZWN0PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLlBPU0lUSU9OLkFCU09MVVRFLCBDU1MuUE9TSVRJT05JTkcuUklHSFQsIENTUy5NQVJHSU4uUklHSFQuT05FLCBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGXVwiXG4gICAgICAgIDppY29uPVwiSUNPTi5FWFBBTkRfTU9SRVwiXG4gICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMi5DRU5URVIsIENTUy5HQVAuUVVBUlRFUl1cIlxuICAgICAgdi1pZj1cInByb3BzLnN1cHBvcnRpbmdUZXh0IHx8IGhhc0Vycm9yXCJcbiAgICA+XG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmNsYXNzPVwiW11cIlxuICAgICAgICA6aWNvbj1cIklDT04uRVJST1JcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICB2LWlmPVwiaGFzRXJyb3JcIlxuICAgICAgLz5cblxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5MQUJFTF8zXVwiPlxuICAgICAgICB7eyBoYXNFcnJvciA/IGVycm9yTWVzc2FnZSA6IHByb3BzLnN1cHBvcnRpbmdUZXh0IH19XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICBzZWxlY3Qge1xuICAgIGFwcGVhcmFuY2U6IG5vbmU7XG4gIH1cblxuICBsYWJlbCB7XG4gICAgaGVpZ2h0OiAxLjE4NzVyZW07XG4gICAgdHJhbnNpdGlvbjogZm9udC1zaXplIHZhcigtLXRpZGUtYW5pbWF0ZSksIHRyYW5zZm9ybSB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICB9XG5cbiAgbGFiZWw6bm90KC5taW5pbGFiZWwpIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCBjYWxjKDkgLyAxNiAqIDFyZW0pKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXNlbGVjdC5kaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogdmFyKC0tdGlkZS1kaXNhYmxlZCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1zZWxlY3QuZXJyb3IgLnRpZGUtaW5wdXQtYm9yZGVyIHtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLWJvcmRlcik7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1zdXJmYWNlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXNlbGVjdC5lcnJvcjpmb2N1cy13aXRoaW4gLnRpZGUtaW5wdXQtYm9yZGVyIHtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLWJvcmRlcik7XG4gIH1cblxuICAudGlkZS1pbnB1dC1zZWxlY3Q6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LWJvcmRlciB7XG4gICAgLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGg6IHZhcigtLXRpZGUtYm9yZGVyLXdpZHRoLTIpO1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtc3VyZmFjZS1ib3JkZXItaGlnaCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1ib3JkZXIge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0xKTtcbiAgICBvdXRsaW5lOiB2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpIHNvbGlkIHZhcigtLXRpZGUtYm9yZGVyKTtcbiAgICBvdXRsaW5lLW9mZnNldDogY2FsYyh2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpICogLTEpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0LmVycm9yIHtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1lcnJvci1wcmltYXJ5KTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXNlbGVjdC5lcnJvciBvcHRpb24ge1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLW9uLXN1cmZhY2UpO1xuICB9XG5cbiAgc2VsZWN0IHtcbiAgICBwYWRkaW5nLXRvcDogMjdweDtcbiAgfVxuPC9zdHlsZT5cbiIsImV4cG9ydCBjb25zdCBURVhUX0lOUFVUX1RZUEUgPSB7XG4gIERBVEU6ICdkYXRlJyxcbiAgREFURVRJTUVfTE9DQUw6ICdkYXRldGltZS1sb2NhbCcsXG4gIEVNQUlMOiAnZW1haWwnLFxuICBNT05USDogJ21vbnRoJyxcbiAgTlVNQkVSOiAnbnVtYmVyJyxcbiAgUEFTU1dPUkQ6ICdwYXNzd29yZCcsXG4gIFNFQVJDSDogJ3NlYXJjaCcsXG4gIFRFTDogJ3RlbCcsXG4gIFRFWFQ6ICd0ZXh0JyxcbiAgVElNRTogJ3RpbWUnLFxuICBVUkw6ICd1cmwnLFxuICBXRUVLOiAnd2VlaycsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBUZXh0SW5wdXRUeXBlID0gKHR5cGVvZiBURVhUX0lOUFVUX1RZUEUpW2tleW9mIHR5cGVvZiBURVhUX0lOUFVUX1RZUEVdO1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQsIHJlZiwgd2F0Y2ggfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IFRFWFRfSU5QVVRfVFlQRSB9IGZyb20gJ0AvdHlwZXMvVGV4dElucHV0JztcbiAgaW1wb3J0IHsgZ2V0RXJyb3JNZXNzYWdlLCBnZXRGaWVsZEhhc0Vycm9yLCBoYW5kbGVGaWVsZFZhbGlkYXRpb24gfSBmcm9tICdAL3V0aWxpdGllcy92YWxpZGF0aW9uJztcblxuICBpbXBvcnQgdHlwZSB7IEZvcm1WYWx1ZVRyYW5zZm9ybWVyIH0gZnJvbSAnQC90eXBlcy9Gb3JtJztcbiAgaW1wb3J0IHR5cGUgeyBJY29uIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHR5cGUgeyBUZXh0SW5wdXRUeXBlIH0gZnJvbSAnQC90eXBlcy9UZXh0SW5wdXQnO1xuICBpbXBvcnQgdHlwZSB7IFZhbGlkYXRpb25FcnJvciwgVmFsaWRhdG9yIH0gZnJvbSAnQC90eXBlcy9WYWxpZGF0aW9uJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGF1dG9jb21wbGV0ZT86IGJvb2xlYW47XG4gICAgZGF0YVRyYWNrPzogc3RyaW5nO1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICBlcnJvcj86IFZhbGlkYXRpb25FcnJvcjtcbiAgICBoYXNDbGVhcj86IGJvb2xlYW47XG4gICAgaWNvbkxlYWRpbmc/OiBJY29uO1xuICAgIGlucHV0SWQ/OiBzdHJpbmc7XG4gICAgbGFiZWw6IHN0cmluZztcbiAgICBtYXhsZW5ndGg/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgbWlubGVuZ3RoPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBwcmVmaXg/OiBzdHJpbmc7XG4gICAgcmVxdWlyZWQ/OiBib29sZWFuO1xuICAgIHN1ZmZpeD86IHN0cmluZztcbiAgICBzdXBwb3J0aW5nVGV4dD86IHN0cmluZztcbiAgICB0cmFuc2Zvcm1WYWx1ZT86IEZvcm1WYWx1ZVRyYW5zZm9ybWVyO1xuICAgIHR5cGU/OiBUZXh0SW5wdXRUeXBlO1xuICAgIHZhbGlkYXRvcnM/OiBWYWxpZGF0b3JbXTtcbiAgICB2YWx1ZT86IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGF1dG9jb21wbGV0ZTogZmFsc2UsXG4gICAgZGF0YVRyYWNrOiAnJyxcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgZXJyb3I6IGZhbHNlLFxuICAgIGhhc0NsZWFyOiBmYWxzZSxcbiAgICBpY29uTGVhZGluZzogdW5kZWZpbmVkLFxuICAgIGlucHV0SWQ6IHVuZGVmaW5lZCxcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICAgIG1heGxlbmd0aDogdW5kZWZpbmVkLFxuICAgIG1pbmxlbmd0aDogdW5kZWZpbmVkLFxuICAgIHByZWZpeDogdW5kZWZpbmVkLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBzdWZmaXg6IHVuZGVmaW5lZCxcbiAgICBzdXBwb3J0aW5nVGV4dDogdW5kZWZpbmVkLFxuICAgIHRyYW5zZm9ybVZhbHVlOiB1bmRlZmluZWQsXG4gICAgdHlwZTogVEVYVF9JTlBVVF9UWVBFLlRFWFQsXG4gICAgdmFsaWRhdG9yczogdW5kZWZpbmVkLFxuICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIGNvbnN0IGVycm9yID0gcmVmKHByb3BzLmVycm9yKTtcbiAgY29uc3QgaGFzRm9jdXMgPSByZWYoZmFsc2UpO1xuICBjb25zdCBpbnB1dCA9IHJlZjxIVE1MSW5wdXRFbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IHNob3dQYXNzd29yZCA9IHJlZihmYWxzZSk7XG4gIGNvbnN0IHZhbHVlID0gcmVmKHByb3BzLnZhbHVlKTtcblxuICBjb25zdCBlcnJvck1lc3NhZ2UgPSBjb21wdXRlZCgoKSA9PiBnZXRFcnJvck1lc3NhZ2UocHJvcHMuZXJyb3IsIGVycm9yLnZhbHVlKSk7XG4gIGNvbnN0IGZvcm1hdHRlZExhYmVsID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLnJlcXVpcmVkICYmIHByb3BzLmxhYmVsID8gYCR7cHJvcHMubGFiZWx9ICpgIDogcHJvcHMubGFiZWwpKTtcbiAgY29uc3QgaGFzQ2xlYXIgPSBjb21wdXRlZCgoKSA9PiBwcm9wcy5oYXNDbGVhciAmJiB2YWx1ZS52YWx1ZSk7XG4gIGNvbnN0IGhhc0Vycm9yID0gY29tcHV0ZWQoXG4gICAgKCkgPT4gKHByb3BzLnJlcXVpcmVkICYmIHZhbHVlLnZhbHVlICE9PSB1bmRlZmluZWQgJiYgIXZhbHVlLnZhbHVlKSB8fCBnZXRGaWVsZEhhc0Vycm9yKGVycm9yLnZhbHVlLCBwcm9wcy5lcnJvcilcbiAgKTtcbiAgY29uc3QgaGFzTWluaWxhYmVsID0gY29tcHV0ZWQoKCkgPT4gaGFzRm9jdXMudmFsdWUgfHwgIWlzRW1wdHkudmFsdWUpO1xuICBjb25zdCBpc0VtcHR5ID0gY29tcHV0ZWQoKCkgPT4gdmFsdWUudmFsdWUgPT09ICcnIHx8IHZhbHVlLnZhbHVlID09PSB1bmRlZmluZWQpO1xuICBjb25zdCB0eXBlID0gY29tcHV0ZWQoKCkgPT5cbiAgICBwcm9wcy50eXBlID09PSBURVhUX0lOUFVUX1RZUEUuUEFTU1dPUkQgJiYgc2hvd1Bhc3N3b3JkLnZhbHVlID09PSB0cnVlID8gVEVYVF9JTlBVVF9UWVBFLlRFWFQgOiBwcm9wcy50eXBlXG4gICk7XG5cbiAgY29uc3QgaGFuZGxlQ2xlYXIgPSAoKSA9PiB7XG4gICAgdmFsdWUudmFsdWUgPSAnJztcbiAgICBpbnB1dC52YWx1ZT8uZm9jdXMoKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGb2N1cyA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IHRydWU7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRm9jdXNPdXQgPSAoKSA9PiB7XG4gICAgaGFzRm9jdXMudmFsdWUgPSBmYWxzZTtcblxuICAgIGlmICghdmFsdWUudmFsdWUpIHtcbiAgICAgIHZhbHVlLnZhbHVlID0gJyc7XG4gICAgfVxuXG4gICAgaGFuZGxlVmFsaWRhdGlvbigpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUlucHV0ID0gKCkgPT4ge1xuICAgIGlmIChwcm9wcy50cmFuc2Zvcm1WYWx1ZSkge1xuICAgICAgY29uc3QgZGlnaXRzID0gdmFsdWUudmFsdWU/Lm1hdGNoKC9cXGQvZyk/LmpvaW4oJycpIHx8IHVuZGVmaW5lZDtcblxuICAgICAgdmFsdWUudmFsdWUgPSBkaWdpdHMgPyBwcm9wcy50cmFuc2Zvcm1WYWx1ZShkaWdpdHMpIDogJyc7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVZhbGlkYXRpb24gPSAoKSA9PiB7XG4gICAgaGFuZGxlRmllbGRWYWxpZGF0aW9uKHtcbiAgICAgIGVycm9yLFxuICAgICAgZXJyb3JGcm9tUHJvcHM6IHByb3BzLmVycm9yLFxuICAgICAgbWF4bGVuZ3RoOiBwcm9wcy5tYXhsZW5ndGgsXG4gICAgICBtaW5sZW5ndGg6IHByb3BzLm1pbmxlbmd0aCxcbiAgICAgIHJlcXVpcmVkOiBwcm9wcy5yZXF1aXJlZCxcbiAgICAgIHZhbGlkYXRvcnM6IHByb3BzLnZhbGlkYXRvcnMsXG4gICAgICB2YWx1ZSxcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCB1cGRhdGVWYWx1ZSA9IChuZXdWYWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgdmFsdWUudmFsdWUgPSBuZXdWYWx1ZTtcbiAgfTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBwcm9wcy52YWx1ZSxcbiAgICAobmV3VmFsdWUsIG9sZFZhbHVlKSA9PiB7XG4gICAgICBpZiAobmV3VmFsdWUgIT09IG9sZFZhbHVlIHx8IG5ld1ZhbHVlICE9PSB2YWx1ZS52YWx1ZSkge1xuICAgICAgICB2YWx1ZS52YWx1ZSA9IG5ld1ZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgKTtcblxuICBkZWZpbmVFeHBvc2Uoe1xuICAgIGVycm9yLFxuICAgIHJlcXVpcmVkOiBwcm9wcy5yZXF1aXJlZCxcbiAgICB1cGRhdGVWYWx1ZSxcbiAgICB2YWx1ZSxcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtaW5wdXQtdGV4dCcsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTixcbiAgICAgIENTUy5HQVAuUVVBUlRFUixcbiAgICAgIGRpc2FibGVkICYmICdkaXNhYmxlZCcsXG4gICAgICBoYXNFcnJvciAmJiAnZXJyb3InLFxuICAgIF1cIlxuICA+XG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1pbnB1dC1ib3JkZXInLFxuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuSEFMRixcbiAgICAgICAgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgICAgaGFzQ2xlYXIgPyBbQ1NTLlBBRERJTkcuUklHSFQuSEFMRiwgQ1NTLlBBRERJTkcuTEVGVC5PTkVdIDogW0NTUy5QQURESU5HLlguT05FXSxcbiAgICAgICAgQ1NTLlBBRERJTkcuWS5IQUxGLFxuICAgICAgICBwcm9wcy5kaXNhYmxlZCA/IENTUy5DVVJTT1IuTk9UX0FMTE9XRUQgOiBDU1MuQ1VSU09SLlRFWFQsXG4gICAgICBdXCJcbiAgICA+XG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF1cIlxuICAgICAgICA6aWNvbj1cInByb3BzLmljb25MZWFkaW5nXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgICAgdi1pZj1cInByb3BzLmljb25MZWFkaW5nXCJcbiAgICAgIC8+XG5cbiAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMi5DRU5URVIsIENTUy5HQVAuUVVBUlRFUiwgQ1NTLldJRFRILkZVTExdXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICAndGlkZS1pbnB1dC10ZXh0LXByZWZpeCcsXG4gICAgICAgICAgICBDU1MuRk9OVC5ST0xFLkJPRFlfMSxcbiAgICAgICAgICAgICxcbiAgICAgICAgICAgICFoYXNFcnJvciAmJiBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlQsXG4gICAgICAgICAgICBoYXNNaW5pbGFiZWwgPyAnJyA6ICdvZmZzZXQnLFxuICAgICAgICAgIF1cIlxuICAgICAgICAgIHYtaWY9XCJwcm9wcy5wcmVmaXhcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgcHJvcHMucHJlZml4IH19XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTiwgQ1NTLldJRFRILkZVTExdXCJcbiAgICAgICAgICBAY2xpY2sucHJldmVudD1cImlucHV0Py5mb2N1cygpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgICBoYXNNaW5pbGFiZWwgPyBbJ21pbmlsYWJlbCcsIENTUy5GT05ULlJPTEUuTEFCRUxfM10gOiBDU1MuRk9OVC5ST0xFLkxBQkVMXzEsXG4gICAgICAgICAgICAgICFoYXNFcnJvciAmJiBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlQsXG4gICAgICAgICAgICAgIENTUy5DVVJTT1IuVEVYVCxcbiAgICAgICAgICAgICAgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRixcbiAgICAgICAgICAgIF1cIlxuICAgICAgICAgICAgOmZvcj1cInByb3BzLmlucHV0SWRcIlxuICAgICAgICAgICAgdi1pZj1cImxhYmVsXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBmb3JtYXR0ZWRMYWJlbCB9fVxuICAgICAgICAgIDwvbGFiZWw+XG5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIDphdXRvY29tcGxldGU9XCJhdXRvY29tcGxldGUgPyAnb24nIDogJ29mZidcIlxuICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5XSURUSC5GVUxMLCBkaXNhYmxlZCAmJiBDU1MuQ1VSU09SLk5PVF9BTExPV0VELCBDU1MuRk9OVC5ST0xFLkJPRFlfMV1cIlxuICAgICAgICAgICAgOmRhdGEtdHJhY2s9XCJwcm9wcy5kYXRhVHJhY2tcIlxuICAgICAgICAgICAgOmRpc2FibGVkPVwicHJvcHMuZGlzYWJsZWRcIlxuICAgICAgICAgICAgOm1heGxlbmd0aD1cInByb3BzLm1heGxlbmd0aFwiXG4gICAgICAgICAgICA6bWlubGVuZ3RoPVwicHJvcHMubWlubGVuZ3RoXCJcbiAgICAgICAgICAgIDpuYW1lPVwicHJvcHMubmFtZVwiXG4gICAgICAgICAgICByZWY9XCJpbnB1dFwiXG4gICAgICAgICAgICA6cmVxdWlyZWQ9XCJwcm9wcy5yZXF1aXJlZFwiXG4gICAgICAgICAgICA6dHlwZT1cInR5cGVcIlxuICAgICAgICAgICAgQGNoYW5nZT1cImhhbmRsZVZhbGlkYXRpb25cIlxuICAgICAgICAgICAgQGZvY3VzPVwiaGFuZGxlRm9jdXNcIlxuICAgICAgICAgICAgQGZvY3Vzb3V0PVwiaGFuZGxlRm9jdXNPdXRcIlxuICAgICAgICAgICAgQGlucHV0PVwiaGFuZGxlSW5wdXRcIlxuICAgICAgICAgICAgOmlkPVwicHJvcHMuaW5wdXRJZFwiXG4gICAgICAgICAgICB2LW1vZGVsPVwidmFsdWVcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICAndGlkZS1pbnB1dC10ZXh0LXN1ZmZpeCcsXG4gICAgICAgICAgICBDU1MuRk9OVC5ST0xFLkJPRFlfMSxcbiAgICAgICAgICAgICFoYXNFcnJvciAmJiBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlQsXG4gICAgICAgICAgICBoYXNNaW5pbGFiZWwgPyAnJyA6ICdvZmZzZXQnLFxuICAgICAgICAgIF1cIlxuICAgICAgICAgIHYtaWY9XCJwcm9wcy5zdWZmaXhcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgcHJvcHMuc3VmZml4IH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLlBBRERJTkcuWS5IQUxGLCBDU1MuUEFERElORy5GVUxMLkhBTEYsIENTUy5DVVJTT1IuUE9JTlRFUl1cIlxuICAgICAgICA6aWNvbj1cIklDT04uQ0xPU0VcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICBAY2xpY2s9XCJoYW5kbGVDbGVhclwiXG4gICAgICAgIHYtaWY9XCJoYXNDbGVhciAmJiBwcm9wcy50eXBlICE9PSBURVhUX0lOUFVUX1RZUEUuUEFTU1dPUkRcIlxuICAgICAgLz5cblxuICAgICAgPFRpZGVJY29uXG4gICAgICAgIDpjbGFzcz1cIltDU1MuUEFERElORy5ZLkhBTEYsIENTUy5QQURESU5HLkZVTEwuSEFMRiwgQ1NTLkNVUlNPUi5QT0lOVEVSXVwiXG4gICAgICAgIDppY29uPVwiSUNPTi5WSVNJQklMSVRZXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgICAgQGNsaWNrPVwic2hvd1Bhc3N3b3JkID0gIXNob3dQYXNzd29yZFwiXG4gICAgICAgIHYtaWY9XCJwcm9wcy50eXBlID09PSBURVhUX0lOUFVUX1RZUEUuUEFTU1dPUkRcIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLlFVQVJURVJdXCJcbiAgICAgIHYtaWY9XCJwcm9wcy5zdXBwb3J0aW5nVGV4dCB8fCBoYXNFcnJvclwiXG4gICAgPlxuICAgICAgPFRpZGVJY29uXG4gICAgICAgIDpjbGFzcz1cIltdXCJcbiAgICAgICAgOmljb249XCJJQ09OLkVSUk9SXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgICAgdi1pZj1cImhhc0Vycm9yXCJcbiAgICAgIC8+XG5cbiAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuTEFCRUxfM11cIj5cbiAgICAgICAge3sgaGFzRXJyb3IgPyBlcnJvck1lc3NhZ2UgOiBwcm9wcy5zdXBwb3J0aW5nVGV4dCB9fVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgbGFiZWwge1xuICAgIGhlaWdodDogMS4xODc1cmVtO1xuICAgIHRyYW5zaXRpb246IGZvbnQtc2l6ZSB2YXIoLS10aWRlLWFuaW1hdGUpLCB0cmFuc2Zvcm0gdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIGxhYmVsOm5vdCgubWluaWxhYmVsKSxcbiAgLnRpZGUtaW5wdXQtdGV4dC1wcmVmaXg6bm90KC5vZmZzZXQpLFxuICAudGlkZS1pbnB1dC10ZXh0LXN1ZmZpeDpub3QoLm9mZnNldCkge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIGNhbGMoOSAvIDE2ICogMXJlbSkpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dC1wcmVmaXgsXG4gIC50aWRlLWlucHV0LXRleHQtc3VmZml4IHtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQuZGlzYWJsZWQge1xuICAgIG9wYWNpdHk6IHZhcigtLXRpZGUtZGlzYWJsZWQpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dC5lcnJvciB7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItcHJpbWFyeSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0LmVycm9yIC50aWRlLWlucHV0LWJvcmRlciB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRpZGUtZXJyb3Itc3VyZmFjZSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0LmVycm9yOmZvY3VzLXdpdGhpbiAudGlkZS1pbnB1dC1ib3JkZXIge1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItYm9yZGVyKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQ6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LWJvcmRlciB7XG4gICAgLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGg6IHZhcigtLXRpZGUtYm9yZGVyLXdpZHRoLTIpO1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtc3VyZmFjZS1ib3JkZXItaGlnaCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0IGlucHV0IHtcbiAgICBvdXRsaW5lOiBub25lO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtYm9yZGVyIHtcbiAgICAtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMSk7XG4gICAgb3V0bGluZTogdmFyKC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoKSBzb2xpZCB2YXIoLS10aWRlLWJvcmRlcik7XG4gICAgb3V0bGluZS1vZmZzZXQ6IGNhbGModmFyKC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoKSAqIC0xKTtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1zdXJmYWNlLWZvcmVncm91bmQpO1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQsIHJlZiwgd2F0Y2ggfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IGdldEVycm9yTWVzc2FnZSwgZ2V0RmllbGRIYXNFcnJvciwgaGFuZGxlRmllbGRWYWxpZGF0aW9uIH0gZnJvbSAnQC91dGlsaXRpZXMvdmFsaWRhdGlvbic7XG5cbiAgaW1wb3J0IHR5cGUgeyBWYWxpZGF0aW9uRXJyb3IgfSBmcm9tICdAL3R5cGVzL1ZhbGlkYXRpb24nO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgZGF0YVRyYWNrPzogc3RyaW5nO1xuICAgIGVycm9yPzogVmFsaWRhdGlvbkVycm9yO1xuICAgIGlucHV0SWQ/OiBzdHJpbmc7XG4gICAgbGFiZWw/OiBzdHJpbmc7XG4gICAgbWF4bGVuZ3RoPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIG1pbmxlbmd0aD86IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICBuYW1lPzogc3RyaW5nO1xuICAgIHJlcXVpcmVkPzogYm9vbGVhbjtcbiAgICByb3dzPzogbnVtYmVyO1xuICAgIHN1cHBvcnRpbmdUZXh0Pzogc3RyaW5nO1xuICAgIHZhbHVlPzogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZGF0YVRyYWNrOiAnJyxcbiAgICBlcnJvcjogZmFsc2UsXG4gICAgaW5wdXRJZDogdW5kZWZpbmVkLFxuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gICAgbWF4bGVuZ3RoOiB1bmRlZmluZWQsXG4gICAgbWlubGVuZ3RoOiB1bmRlZmluZWQsXG4gICAgbmFtZTogdW5kZWZpbmVkLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICByb3dzOiA4LFxuICAgIHN1cHBvcnRpbmdUZXh0OiB1bmRlZmluZWQsXG4gICAgdmFsdWU6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgY29uc3QgZXJyb3IgPSByZWYocHJvcHMuZXJyb3IpO1xuICBjb25zdCBoYXNGb2N1cyA9IHJlZihmYWxzZSk7XG4gIGNvbnN0IGlucHV0ID0gcmVmPEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgY29uc3QgdmFsdWUgPSByZWYocHJvcHMudmFsdWUpO1xuXG4gIGNvbnN0IGVycm9yTWVzc2FnZSA9IGNvbXB1dGVkKCgpID0+IGdldEVycm9yTWVzc2FnZShwcm9wcy5lcnJvciwgZXJyb3IudmFsdWUpKTtcbiAgY29uc3QgZm9ybWF0dGVkTGFiZWwgPSBjb21wdXRlZCgoKSA9PiAocHJvcHMucmVxdWlyZWQgPyBgJHtwcm9wcy5sYWJlbH0gKmAgOiBwcm9wcy5sYWJlbCkpO1xuICBjb25zdCBoYXNFcnJvciA9IGNvbXB1dGVkKFxuICAgICgpID0+IChwcm9wcy5yZXF1aXJlZCAmJiB2YWx1ZS52YWx1ZSAhPT0gdW5kZWZpbmVkICYmICF2YWx1ZS52YWx1ZSkgfHwgZ2V0RmllbGRIYXNFcnJvcihlcnJvci52YWx1ZSwgcHJvcHMuZXJyb3IpXG4gICk7XG4gIGNvbnN0IGhhc01pbmlsYWJlbCA9IGNvbXB1dGVkKCgpID0+IGhhc0ZvY3VzLnZhbHVlIHx8ICFpc0VtcHR5LnZhbHVlKTtcbiAgY29uc3QgaXNFbXB0eSA9IGNvbXB1dGVkKCgpID0+IHZhbHVlLnZhbHVlID09PSAnJyB8fCB2YWx1ZS52YWx1ZSA9PT0gdW5kZWZpbmVkKTtcblxuICBjb25zdCBoYW5kbGVGb2N1cyA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IHRydWU7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRm9jdXNPdXQgPSAoKSA9PiB7XG4gICAgaGFzRm9jdXMudmFsdWUgPSBmYWxzZTtcblxuICAgIGlmICghdmFsdWUudmFsdWUpIHtcbiAgICAgIHZhbHVlLnZhbHVlID0gJyc7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVZhbGlkYXRpb24gPSAoKSA9PiB7XG4gICAgcmV0dXJuIGhhbmRsZUZpZWxkVmFsaWRhdGlvbih7XG4gICAgICBlcnJvcixcbiAgICAgIGVycm9yRnJvbVByb3BzOiBwcm9wcy5lcnJvcixcbiAgICAgIG1heGxlbmd0aDogcHJvcHMubWF4bGVuZ3RoLFxuICAgICAgbWlubGVuZ3RoOiBwcm9wcy5taW5sZW5ndGgsXG4gICAgICByZXF1aXJlZDogcHJvcHMucmVxdWlyZWQsXG4gICAgICB2YWx1ZSxcbiAgICB9KTtcbiAgfTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBwcm9wcy52YWx1ZSxcbiAgICAobmV3VmFsdWUsIG9sZFZhbHVlKSA9PiB7XG4gICAgICBpZiAobmV3VmFsdWUgIT09IG9sZFZhbHVlIHx8IG5ld1ZhbHVlICE9PSB2YWx1ZS52YWx1ZSkge1xuICAgICAgICB2YWx1ZS52YWx1ZSA9IG5ld1ZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgKTtcblxuICBkZWZpbmVFeHBvc2Uoe1xuICAgIGVycm9yLFxuICAgIHJlcXVpcmVkOiBwcm9wcy5yZXF1aXJlZCxcbiAgICB2YWx1ZSxcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiWyd0aWRlLWlucHV0LXRleHRhcmVhJywgQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTiwgQ1NTLkdBUC5RVUFSVEVSLCBoYXNFcnJvciAmJiAnZXJyb3InXVwiXG4gID5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWlucHV0LXRleHRhcmVhLWZpZWxkJyxcbiAgICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLkhBTEYsXG4gICAgICAgIENTUy5QQURESU5HLkxFRlQuT05FLFxuICAgICAgICBDU1MuUEFERElORy5UT1AuSEFMRixcbiAgICAgICAgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTixcbiAgICAgICAgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgIF1cIlxuICAgID5cbiAgICAgIDxsYWJlbFxuICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgaGFzTWluaWxhYmVsID8gWydtaW5pbGFiZWwnLCBDU1MuRk9OVC5ST0xFLkxBQkVMXzNdIDogQ1NTLkZPTlQuUk9MRS5MQUJFTF8xLFxuICAgICAgICAgICFoYXNFcnJvciAmJiBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlQsXG4gICAgICAgICAgQ1NTLkNVUlNPUi5URVhULFxuICAgICAgICAgIENTUy5QT0lOVEVSX0VWRU5UUy5PRkYsXG4gICAgICAgIF1cIlxuICAgICAgICA6Zm9yPVwicHJvcHMuaW5wdXRJZFwiXG4gICAgICAgIHJlZj1cImxhYmVsXCJcbiAgICAgICAgdi1pZj1cImxhYmVsXCJcbiAgICAgID5cbiAgICAgICAge3sgZm9ybWF0dGVkTGFiZWwgfX1cbiAgICAgIDwvbGFiZWw+XG5cbiAgICAgIDx0ZXh0YXJlYVxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLldJRFRILkZVTEwsIENTUy5GT05ULlJPTEUuQk9EWV8xXVwiXG4gICAgICAgIDpkYXRhLXRyYWNrPVwicHJvcHMuZGF0YVRyYWNrXCJcbiAgICAgICAgOm1heGxlbmd0aD1cInByb3BzLm1heGxlbmd0aFwiXG4gICAgICAgIDptaW5sZW5ndGg9XCJwcm9wcy5taW5sZW5ndGhcIlxuICAgICAgICA6bmFtZT1cInByb3BzLm5hbWVcIlxuICAgICAgICByZWY9XCJpbnB1dFwiXG4gICAgICAgIDpyZXF1aXJlZD1cInByb3BzLnJlcXVpcmVkXCJcbiAgICAgICAgOnJvd3M9XCJwcm9wcy5yb3dzXCJcbiAgICAgICAgQGNoYW5nZT1cImhhbmRsZVZhbGlkYXRpb25cIlxuICAgICAgICBAZm9jdXM9XCJoYW5kbGVGb2N1c1wiXG4gICAgICAgIEBmb2N1c291dD1cImhhbmRsZUZvY3VzT3V0XCJcbiAgICAgICAgOmlkPVwicHJvcHMuaW5wdXRJZFwiXG4gICAgICAgIHYtbW9kZWw9XCJ2YWx1ZVwiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMi5DRU5URVIsIENTUy5HQVAuUVVBUlRFUl1cIlxuICAgICAgdi1pZj1cInByb3BzLnN1cHBvcnRpbmdUZXh0IHx8IGhhc0Vycm9yXCJcbiAgICA+XG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmljb249XCJJQ09OLkVSUk9SXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgICAgdi1pZj1cImhhc0Vycm9yXCJcbiAgICAgIC8+XG5cbiAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuTEFCRUxfM11cIj5cbiAgICAgICAge3sgaGFzRXJyb3IgPyBlcnJvck1lc3NhZ2UgOiBwcm9wcy5zdXBwb3J0aW5nVGV4dCB9fVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgdGV4dGFyZWEge1xuICAgIHJlc2l6ZTogdmVydGljYWw7XG4gIH1cbjwvc3R5bGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIGxhYmVsIHtcbiAgICBoZWlnaHQ6IDEuMTg3NXJlbTtcbiAgICB0cmFuc2l0aW9uOiBmb250LXNpemUgdmFyKC0tdGlkZS1hbmltYXRlKSwgdHJhbnNmb3JtIHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0YXJlYS5lcnJvciB7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItcHJpbWFyeSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0YXJlYS5lcnJvciAudGlkZS1pbnB1dC10ZXh0YXJlYS1maWVsZCB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRpZGUtZXJyb3Itc3VyZmFjZSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0YXJlYS5lcnJvcjpmb2N1cy13aXRoaW4gLnRpZGUtaW5wdXQtdGV4dGFyZWEtZmllbGQge1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItYm9yZGVyKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhOmZvY3VzLXdpdGhpbiAudGlkZS1pbnB1dC10ZXh0YXJlYS1maWVsZCB7XG4gICAgLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGg6IHZhcigtLXRpZGUtYm9yZGVyLXdpZHRoLTIpO1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtc3VyZmFjZS1ib3JkZXItaGlnaCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0YXJlYSB0ZXh0YXJlYSB7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLWZpZWxkIHtcbiAgICAtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMSk7XG4gICAgb3V0bGluZTogdmFyKC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoKSBzb2xpZCB2YXIoLS10aWRlLWJvcmRlcik7XG4gICAgb3V0bGluZS1vZmZzZXQ6IGNhbGModmFyKC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoKSAqIC0xKTtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1zdXJmYWNlLWZvcmVncm91bmQpO1xuICB9XG48L3N0eWxlPlxuIiwiLyogZXNsaW50LWRpc2FibGUgdnVlL3NvcnQta2V5cyAqL1xuXG5leHBvcnQgY29uc3QgQlJFQUtQT0lOVCA9IHtcbiAgU006ICdzbScsXG4gIE1EOiAnbWQnLFxuICBMRzogJ2xnJyxcbiAgWEw6ICd4bCcsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgTUVESUEgPSB7XG4gIFNNOiA3NjgsXG4gIE1EOiA5OTIsXG4gIExHOiAxMjMyLFxuICBYTDogMTkyMCxcbn07XG5cbmV4cG9ydCB0eXBlIEJyZWFrcG9pbnQgPSAodHlwZW9mIEJSRUFLUE9JTlQpW2tleW9mIHR5cGVvZiBCUkVBS1BPSU5UXTtcbmV4cG9ydCB0eXBlIE1lZGlhID0gKHR5cGVvZiBNRURJQSlba2V5b2YgdHlwZW9mIE1FRElBXTtcbiIsImltcG9ydCB7IG5leHRUaWNrIH0gZnJvbSAndnVlJztcblxuLyoqXG4gKiBEaXJlY3RseSBtb2RpZmllcyB0aGUgYDxib2R5PmAgZWxlbWVudCB0byBhcHBseSBvciByZW1vdmUgc2Nyb2xsIGxvY2suXG4gKiBXaGVuIGBmYWxzZWAgaXMgcHJvdmlkZWQsIGl0IG9ubHkgdW5sb2NrcyBzY3JvbGwgaWYgdGhlcmUgYXJlIG5vIG9wZW5cbiAqIEhUTUwgZGlhbG9nIGVsZW1lbnRzLlxuICovXG5leHBvcnQgY29uc3Qgc2V0U2Nyb2xsTG9jayA9IGFzeW5jIChpc0xvY2tlZDogYm9vbGVhbikgPT4ge1xuICBjb25zdCBCT0RZX0xPQ0tfQ0xBU1MgPSAnYm9keS1zY3JvbGwtbG9jayc7XG4gIGNvbnN0IGJvZHkgPSBkb2N1bWVudC5ib2R5O1xuXG4gIGlmIChpc0xvY2tlZCkge1xuICAgIGlmICghYm9keS5kYXRhc2V0LnNjcm9sbExvY2tZKSB7XG4gICAgICBjb25zdCBzY3JvbGxZID0gd2luZG93LnNjcm9sbFk7XG4gICAgICBib2R5LmRhdGFzZXQuc2Nyb2xsTG9ja1kgPSBzY3JvbGxZLnRvU3RyaW5nKCk7XG4gICAgICBib2R5LnN0eWxlLnNldFByb3BlcnR5KCctLXNhdmVkLXNjcm9sbC15JywgYCR7c2Nyb2xsWX1weGApO1xuICAgICAgYm9keS5jbGFzc0xpc3QuYWRkKEJPRFlfTE9DS19DTEFTUyk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGF3YWl0IG5leHRUaWNrKCk7XG4gICAgaWYgKCFkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdkaWFsb2dbb3Blbl0nKSkge1xuICAgICAgY29uc3Qgc2F2ZWRTY3JvbGxZID0gcGFyc2VJbnQoYm9keS5kYXRhc2V0LnNjcm9sbExvY2tZIHx8ICcwJyk7XG4gICAgICBib2R5LmNsYXNzTGlzdC5yZW1vdmUoQk9EWV9MT0NLX0NMQVNTKTtcbiAgICAgIGJvZHkuc3R5bGUucmVtb3ZlUHJvcGVydHkoJy0tc2F2ZWQtc2Nyb2xsLXknKTtcbiAgICAgIHdpbmRvdy5zY3JvbGxUbyh7XG4gICAgICAgIGJlaGF2aW9yOiAnYXV0bycsXG4gICAgICAgIHRvcDogc2F2ZWRTY3JvbGxZLFxuICAgICAgfSk7XG4gICAgICBkZWxldGUgYm9keS5kYXRhc2V0LnNjcm9sbExvY2tZO1xuICAgIH1cbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IFRPUF9MQVlFUl9JRCA9ICd0aWRlVG9wTGF5ZXInO1xuXG5leHBvcnQgY29uc3QgaW5pdEZhdXhUb3BMYXllciA9ICgpID0+IHtcbiAgbGV0IHRvcExheWVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoVE9QX0xBWUVSX0lEKTtcbiAgaWYgKCF0b3BMYXllcikge1xuICAgIHRvcExheWVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgdG9wTGF5ZXIuaWQgPSBUT1BfTEFZRVJfSUQ7XG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0b3BMYXllcik7XG4gIH1cbiAgdG9wTGF5ZXIuc3R5bGUuaXNvbGF0aW9uID0gJ2lzb2xhdGUnO1xufTtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IG5leHRUaWNrLCBvbk1vdW50ZWQsIHJlZiwgd2F0Y2ggfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlQnV0dG9uSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUJ1dHRvbkljb24udnVlJztcbiAgaW1wb3J0IHsgQlJFQUtQT0lOVCB9IGZyb20gJ0AvdHlwZXMvQnJlYWtwb2ludCc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBQUklPUklUWSB9IGZyb20gJ0AvdHlwZXMvUHJpb3JpdHknO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IHNldFNjcm9sbExvY2sgfSBmcm9tICdAL3V0aWxpdGllcy92aWV3cG9ydCc7XG5cbiAgaW1wb3J0IHR5cGUgeyBSZWYgfSBmcm9tICd2dWUnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgaXNCYWNrQnV0dG9uPzogYm9vbGVhbjtcbiAgICBpc0Rpc21pc3NpYmxlPzogYm9vbGVhbjtcbiAgICBpc09wZW46IGJvb2xlYW47XG4gICAgdGl0bGU/OiBzdHJpbmc7XG4gICAgd2lkdGg/OiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBpc0JhY2tCdXR0b246IGZhbHNlLFxuICAgIGlzRGlzbWlzc2libGU6IHRydWUsXG4gICAgdGl0bGU6IHVuZGVmaW5lZCxcbiAgICB3aWR0aDogdW5kZWZpbmVkLFxuICB9KTtcblxuICB0eXBlIEVtaXRzID0ge1xuICAgIChlOiAnY2xvc2UnKTogdm9pZDtcbiAgICAoZTogJ2JhY2snKTogdm9pZDtcbiAgfTtcblxuICBjb25zdCBlbWl0ID0gZGVmaW5lRW1pdHM8RW1pdHM+KCk7XG5cbiAgY29uc3QgbW9kYWxDb250ZW50OiBSZWY8SFRNTERpdkVsZW1lbnQgfCB1bmRlZmluZWQ+ID0gcmVmKCk7XG4gIGNvbnN0IG1vZGFsRGlhbG9nOiBSZWY8SFRNTERpYWxvZ0VsZW1lbnQgfCB1bmRlZmluZWQ+ID0gcmVmKCk7XG5cbiAgY29uc3QgdHJpZ2dlck5hdGl2ZURpYWxvZ09wZW4gPSAoKSA9PiB7XG4gICAgbW9kYWxEaWFsb2cudmFsdWU/LnNob3dNb2RhbCgpO1xuICB9O1xuXG4gIGNvbnN0IHRyaWdnZXJOYXRpdmVEaWFsb2dDbG9zZSA9ICgpID0+IHtcbiAgICBtb2RhbERpYWxvZy52YWx1ZT8uY2xvc2UoKTtcbiAgfTtcblxuICBjb25zdCBzY3JvbGxDb250ZW50VG9Ub3AgPSAoKSA9PiB7XG4gICAgbmV4dFRpY2soKCkgPT4ge1xuICAgICAgaWYgKCFtb2RhbENvbnRlbnQudmFsdWUpIHJldHVybjtcbiAgICAgIG1vZGFsQ29udGVudC52YWx1ZS5zY3JvbGxUb3AgPSAwO1xuICAgIH0pO1xuICB9O1xuXG4gIHdhdGNoKFxuICAgICgpID0+IHByb3BzLmlzT3BlbixcbiAgICAobmV3VmFsdWUpID0+IHtcbiAgICAgIGlmICghbW9kYWxEaWFsb2cudmFsdWUpIHJldHVybjtcbiAgICAgIGlmIChuZXdWYWx1ZSkge1xuICAgICAgICB0cmlnZ2VyTmF0aXZlRGlhbG9nT3BlbigpO1xuICAgICAgICBzY3JvbGxDb250ZW50VG9Ub3AoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRyaWdnZXJOYXRpdmVEaWFsb2dDbG9zZSgpO1xuICAgICAgfVxuICAgICAgc2V0U2Nyb2xsTG9jayhuZXdWYWx1ZSk7XG4gICAgfVxuICApO1xuXG4gIG9uTW91bnRlZCgoKSA9PiB7XG4gICAgaWYgKHByb3BzLmlzT3Blbikge1xuICAgICAgdHJpZ2dlck5hdGl2ZURpYWxvZ09wZW4oKTtcbiAgICB9XG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpYWxvZ1xuICAgIDpjbGFzcz1cIlsndGlkZS1tb2RhbCcsIENTUy5CRy5JTklUSUFMLCBDU1MuSEVJR0hULkZVTEwsIENTUy5XSURUSC5GVUxMLCBDU1MuT1ZFUkZMT1cuWFkuSElEREVOXVwiXG4gICAgcmVmPVwibW9kYWxEaWFsb2dcIlxuICAgIDpzdHlsZT1cInsgJy0tbW9kYWwtd2lkdGgnOiBwcm9wcy53aWR0aCB9XCJcbiAgICBAY2xpY2suc2VsZj1cImVtaXQoJ2Nsb3NlJylcIlxuICAgIEBjbG9zZT1cImVtaXQoJ2Nsb3NlJylcIlxuICA+XG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1tb2RhbC1ib2R5JyxcbiAgICAgICAgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuT05FLFxuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLFxuICAgICAgICBDU1MuT1ZFUkZMT1cuWFkuSElEREVOLFxuICAgICAgICBDU1MuUE9TSVRJT04uQUJTT0xVVEUsXG4gICAgICAgIENTUy5QT1NJVElPTklORy5CT1RUT00sXG4gICAgICAgIENTUy5TSEFET1cuVE9QLFxuICAgICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICAgICAgQ1NTLldJRFRILk1BWF9GVUxMLFxuICAgICAgICBDU1Mud2l0aEJyZWFrcG9pbnQoW0NTUy5TSEFET1cuQk9UVE9NXSwgQlJFQUtQT0lOVC5TTSksXG4gICAgICBdXCJcbiAgICA+XG4gICAgICA8aGVhZGVyXG4gICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAndGlkZS1tb2RhbC1oZWFkZXInLFxuICAgICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICAgICAgQ1NTLlBBRERJTkcuWS5PTkUsXG4gICAgICAgICAgQ1NTLkJPUkRFUi5CT1RUT00uT05FLFxuICAgICAgICAgIENTUy5CT1JERVIuQ09MT1IuTE9XLFxuICAgICAgICBdXCJcbiAgICAgID5cbiAgICAgICAgPFRpZGVCdXR0b25JY29uXG4gICAgICAgICAgOmljb249XCJJQ09OLkNIRVZST05fTEVGVFwiXG4gICAgICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuUVVBVEVSTkFSWVwiXG4gICAgICAgICAgQGNsaWNrPVwiZW1pdCgnYmFjaycpXCJcbiAgICAgICAgICB0aXRsZT1cIkJhY2tcIlxuICAgICAgICAgIHYtaWY9XCJpc0JhY2tCdXR0b25cIlxuICAgICAgICAvPlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5IRUFETElORV8yXVwiXG4gICAgICAgICAgdi10ZXh0PVwidGl0bGVcIlxuICAgICAgICAvPlxuXG4gICAgICAgIDxUaWRlQnV0dG9uSWNvblxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuRkxFWC5HUk9XLk9GRiwgQ1NTLkZMRVguU0hSSU5LLk9GRiwgQ1NTLk1BUkdJTi5MRUZULkFVVE9dXCJcbiAgICAgICAgICA6aWNvbj1cIklDT04uQ0xPU0VcIlxuICAgICAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlFVQVRFUk5BUllcIlxuICAgICAgICAgIEBjbGljaz1cInRyaWdnZXJOYXRpdmVEaWFsb2dDbG9zZVwiXG4gICAgICAgICAgdi1pZj1cImlzRGlzbWlzc2libGVcIlxuICAgICAgICAvPlxuICAgICAgPC9oZWFkZXI+XG5cbiAgICAgIDxkaXZcbiAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICd0aWRlLW1vZGFsLWNvbnRlbnQnLFxuICAgICAgICAgIENTUy5ESVNQTEFZLkdSSUQsXG4gICAgICAgICAgQ1NTLk9WRVJGTE9XLlkuQVVUTyxcbiAgICAgICAgICBDU1MuT1ZFUkZMT1cuWC5ISURERU4sXG4gICAgICAgICAgQ1NTLldJRFRILkZVTEwsXG4gICAgICAgICAgQ1NTLlBBRERJTkcuWS5UV08sXG4gICAgICAgIF1cIlxuICAgICAgICByZWY9XCJtb2RhbENvbnRlbnRcIlxuICAgICAgPlxuICAgICAgICA8c2xvdCAvPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxmb290ZXJcbiAgICAgICAgOmNsYXNzPVwiWyd0aWRlLW1vZGFsLWZvb3RlcicsIENTUy5BWElTMS5FTkQsIENTUy5ESVNQTEFZLkZMRVgsIENTUy5HQVAuVFdPLCBDU1MuUEFERElORy5ZLk9ORSwgQ1NTLlNIQURPVy5UT1BdXCJcbiAgICAgICAgdi1pZj1cIiRzbG90cy5mb290ZXJcIlxuICAgICAgPlxuICAgICAgICA8c2xvdCBuYW1lPVwiZm9vdGVyXCIgLz5cbiAgICAgIDwvZm9vdGVyPlxuICAgIDwvZGl2PlxuICA8L2RpYWxvZz5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLW1vZGFsIHtcbiAgICAtLW1vZGFsLXBhZGRpbmcteDogMjBweDtcbiAgICBtYXgtd2lkdGg6IHVuc2V0O1xuICAgIG1heC1oZWlnaHQ6IHVuc2V0O1xuICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdGlkZS1hbmltYXRlKSBhbGxvdy1kaXNjcmV0ZTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSk7XG4gIH1cbiAgLnRpZGUtbW9kYWxbb3Blbl0ge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDAlKTtcbiAgfVxuICAudGlkZS1tb2RhbDo6YmFja2Ryb3Age1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS10aWRlLWFuaW1hdGUpIGFsbG93LWRpc2NyZXRlO1xuICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigwcHgpO1xuICB9XG4gIC50aWRlLW1vZGFsW29wZW5dOjpiYWNrZHJvcCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGlkZS10cmFuc3BhcmVudC00MDApO1xuICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cig0cHgpO1xuICB9XG4gIEBzdGFydGluZy1zdHlsZSB7XG4gICAgLnRpZGUtbW9kYWxbb3Blbl0ge1xuICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTtcbiAgICB9XG4gICAgLnRpZGUtbW9kYWxbb3Blbl06OmJhY2tkcm9wIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDRweCk7XG4gICAgfVxuICB9XG4gIC50aWRlLW1vZGFsLWJvZHkge1xuICAgIHdpZHRoOiB2YXIoLS1tb2RhbC13aWR0aCwgNTc2cHgpO1xuICAgIG1heC1oZWlnaHQ6IGNhbGMoMTAwJSAtIHZhcigtLXRpZGUtc3BhY2luZy0yKSk7XG4gIH1cblxuICAudGlkZS1tb2RhbC1oZWFkZXIsXG4gIC50aWRlLW1vZGFsLWZvb3RlciB7XG4gICAgcGFkZGluZy1pbmxpbmU6IHZhcigtLW1vZGFsLXBhZGRpbmcteCk7XG4gIH1cbiAgLnRpZGUtbW9kYWwtY29udGVudCB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiB2YXIoLS1tb2RhbC1wYWRkaW5nLXgpIDFmciB2YXIoLS1tb2RhbC1wYWRkaW5nLXgpO1xuICB9XG4gIDp3aGVyZSgudGlkZS1tb2RhbC1jb250ZW50KTpkZWVwKD4gOndoZXJlKCopKSB7XG4gICAgZ3JpZC1jb2x1bW46IDI7XG4gIH1cblxuICBAbWVkaWEgKG1heC13aWR0aDogNzY3cHgpIHtcbiAgICAudGlkZS1tb2RhbC1ib2R5IHtcbiAgICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7XG4gICAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDtcbiAgICB9XG4gIH1cbiAgQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gICAgLnRpZGUtbW9kYWwge1xuICAgICAgLS1tb2RhbC1wYWRkaW5nLXg6IHZhcigtLXRpZGUtc3BhY2luZy0yKTtcbiAgICB9XG4gICAgLnRpZGUtbW9kYWwtYm9keSB7XG4gICAgICBtYXgtaGVpZ2h0OiA4NSU7XG4gICAgICBib3R0b206IGluaXRpYWw7XG4gICAgfVxuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQsIHJlZiB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVCdXR0b25JY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlQnV0dG9uSWNvbi52dWUnO1xuICBpbXBvcnQgVGlkZUJ1dHRvblBhZ2luYXRpb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVCdXR0b25QYWdpbmF0aW9uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBQUklPUklUWSB9IGZyb20gJ0AvdHlwZXMvUHJpb3JpdHknO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBwYWdlQ3VycmVudD86IG51bWJlcjtcbiAgICBwYWdlVG90YWw/OiBudW1iZXI7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBwYWdlQ3VycmVudDogMSxcbiAgICBwYWdlVG90YWw6IDEsXG4gIH0pO1xuXG4gIGNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0cyhbJ2NoYW5nZSddKTtcblxuICBjb25zdCBwYWdlQ3VycmVudCA9IHJlZihwcm9wcy5wYWdlQ3VycmVudCk7XG5cbiAgY29uc3QgcGFnaW5hdGlvbkJ1dHRvbnMgPSBjb21wdXRlZCgoKSA9PiBuZXcgQXJyYXkocHJvcHMucGFnZVRvdGFsKS5maWxsKCcnKS5tYXAoKGVtcHR5LCBpbmRleCkgPT4gaW5kZXggKyAxKSk7XG5cbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSAoaW5kZXg6IG51bWJlcikgPT4ge1xuICAgIHBhZ2VDdXJyZW50LnZhbHVlID0gaW5kZXg7XG5cbiAgICBlbWl0KCdjaGFuZ2UnLCBldmVudCwgaW5kZXgpO1xuICB9O1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPHNlY3Rpb25cbiAgICA6Y2xhc3M9XCJbJ3RpZGUtcGFnaW5hdGlvbicsIENTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMS5DRU5URVIsIENTUy5BWElTMi5DRU5URVIsIENTUy5HQVAuUVVBUlRFUiwgQ1NTLldJRFRILkZVTExdXCJcbiAgPlxuICAgIDxUaWRlQnV0dG9uSWNvblxuICAgICAgOmRpc2FibGVkPVwicGFnZUN1cnJlbnQgPT09IDFcIlxuICAgICAgOmljb249XCJJQ09OLkNIRVZST05fTEVGVFwiXG4gICAgICA6cHJpb3JpdHk9XCJQUklPUklUWS5RVUFURVJOQVJZXCJcbiAgICAgIEBjbGljaz1cImhhbmRsZUNsaWNrKHBhZ2VDdXJyZW50IC0gMSlcIlxuICAgIC8+XG5cbiAgICA8dWwgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMi5DRU5URVIsIENTUy5HQVAuUVVBUlRFUiwgQ1NTLkxJU1RfQlVMTEVUUy5PRkZdXCI+XG4gICAgICA8bGlcbiAgICAgICAgOmtleT1cInBhZ2luYXRpb25CdXR0b25cIlxuICAgICAgICB2LWZvcj1cInBhZ2luYXRpb25CdXR0b24gaW4gcGFnaW5hdGlvbkJ1dHRvbnNcIlxuICAgICAgPlxuICAgICAgICA8VGlkZUJ1dHRvblBhZ2luYXRpb25cbiAgICAgICAgICA6ZGlzYWJsZWQ9XCJwYWdlQ3VycmVudCA9PT0gcGFnaW5hdGlvbkJ1dHRvblwiXG4gICAgICAgICAgOmxhYmVsPVwicGFnaW5hdGlvbkJ1dHRvblwiXG4gICAgICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuUVVBVEVSTkFSWVwiXG4gICAgICAgICAgQGNsaWNrPVwiaGFuZGxlQ2xpY2socGFnaW5hdGlvbkJ1dHRvbilcIlxuICAgICAgICAvPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuXG4gICAgPFRpZGVCdXR0b25JY29uXG4gICAgICA6ZGlzYWJsZWQ9XCJwYWdlQ3VycmVudCA9PT0gcGFnaW5hdGlvbkJ1dHRvbnNbcGFnaW5hdGlvbkJ1dHRvbnMubGVuZ3RoIC0gMV1cIlxuICAgICAgOmljb249XCJJQ09OLkNIRVZST05fUklHSFRcIlxuICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuUVVBVEVSTkFSWVwiXG4gICAgICBAY2xpY2s9XCJoYW5kbGVDbGljayhwYWdlQ3VycmVudCArIDEpXCJcbiAgICAvPlxuICA8L3NlY3Rpb24+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPjwvc3R5bGU+XG4iLCIvKipcbiAqIEN1c3RvbSBwb3NpdGlvbmluZyByZWZlcmVuY2UgZWxlbWVudC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy92aXJ0dWFsLWVsZW1lbnRzXG4gKi9cblxuY29uc3Qgc2lkZXMgPSBbJ3RvcCcsICdyaWdodCcsICdib3R0b20nLCAnbGVmdCddO1xuY29uc3QgYWxpZ25tZW50cyA9IFsnc3RhcnQnLCAnZW5kJ107XG5jb25zdCBwbGFjZW1lbnRzID0gLyojX19QVVJFX18qL3NpZGVzLnJlZHVjZSgoYWNjLCBzaWRlKSA9PiBhY2MuY29uY2F0KHNpZGUsIHNpZGUgKyBcIi1cIiArIGFsaWdubWVudHNbMF0sIHNpZGUgKyBcIi1cIiArIGFsaWdubWVudHNbMV0pLCBbXSk7XG5jb25zdCBtaW4gPSBNYXRoLm1pbjtcbmNvbnN0IG1heCA9IE1hdGgubWF4O1xuY29uc3Qgcm91bmQgPSBNYXRoLnJvdW5kO1xuY29uc3QgZmxvb3IgPSBNYXRoLmZsb29yO1xuY29uc3QgY3JlYXRlQ29vcmRzID0gdiA9PiAoe1xuICB4OiB2LFxuICB5OiB2XG59KTtcbmNvbnN0IG9wcG9zaXRlU2lkZU1hcCA9IHtcbiAgbGVmdDogJ3JpZ2h0JyxcbiAgcmlnaHQ6ICdsZWZ0JyxcbiAgYm90dG9tOiAndG9wJyxcbiAgdG9wOiAnYm90dG9tJ1xufTtcbmNvbnN0IG9wcG9zaXRlQWxpZ25tZW50TWFwID0ge1xuICBzdGFydDogJ2VuZCcsXG4gIGVuZDogJ3N0YXJ0J1xufTtcbmZ1bmN0aW9uIGNsYW1wKHN0YXJ0LCB2YWx1ZSwgZW5kKSB7XG4gIHJldHVybiBtYXgoc3RhcnQsIG1pbih2YWx1ZSwgZW5kKSk7XG59XG5mdW5jdGlvbiBldmFsdWF0ZSh2YWx1ZSwgcGFyYW0pIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJyA/IHZhbHVlKHBhcmFtKSA6IHZhbHVlO1xufVxuZnVuY3Rpb24gZ2V0U2lkZShwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIHBsYWNlbWVudC5zcGxpdCgnLScpWzBdO1xufVxuZnVuY3Rpb24gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCkge1xuICByZXR1cm4gcGxhY2VtZW50LnNwbGl0KCctJylbMV07XG59XG5mdW5jdGlvbiBnZXRPcHBvc2l0ZUF4aXMoYXhpcykge1xuICByZXR1cm4gYXhpcyA9PT0gJ3gnID8gJ3knIDogJ3gnO1xufVxuZnVuY3Rpb24gZ2V0QXhpc0xlbmd0aChheGlzKSB7XG4gIHJldHVybiBheGlzID09PSAneScgPyAnaGVpZ2h0JyA6ICd3aWR0aCc7XG59XG5mdW5jdGlvbiBnZXRTaWRlQXhpcyhwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIFsndG9wJywgJ2JvdHRvbSddLmluY2x1ZGVzKGdldFNpZGUocGxhY2VtZW50KSkgPyAneScgOiAneCc7XG59XG5mdW5jdGlvbiBnZXRBbGlnbm1lbnRBeGlzKHBsYWNlbWVudCkge1xuICByZXR1cm4gZ2V0T3Bwb3NpdGVBeGlzKGdldFNpZGVBeGlzKHBsYWNlbWVudCkpO1xufVxuZnVuY3Rpb24gZ2V0QWxpZ25tZW50U2lkZXMocGxhY2VtZW50LCByZWN0cywgcnRsKSB7XG4gIGlmIChydGwgPT09IHZvaWQgMCkge1xuICAgIHJ0bCA9IGZhbHNlO1xuICB9XG4gIGNvbnN0IGFsaWdubWVudCA9IGdldEFsaWdubWVudChwbGFjZW1lbnQpO1xuICBjb25zdCBhbGlnbm1lbnRBeGlzID0gZ2V0QWxpZ25tZW50QXhpcyhwbGFjZW1lbnQpO1xuICBjb25zdCBsZW5ndGggPSBnZXRBeGlzTGVuZ3RoKGFsaWdubWVudEF4aXMpO1xuICBsZXQgbWFpbkFsaWdubWVudFNpZGUgPSBhbGlnbm1lbnRBeGlzID09PSAneCcgPyBhbGlnbm1lbnQgPT09IChydGwgPyAnZW5kJyA6ICdzdGFydCcpID8gJ3JpZ2h0JyA6ICdsZWZ0JyA6IGFsaWdubWVudCA9PT0gJ3N0YXJ0JyA/ICdib3R0b20nIDogJ3RvcCc7XG4gIGlmIChyZWN0cy5yZWZlcmVuY2VbbGVuZ3RoXSA+IHJlY3RzLmZsb2F0aW5nW2xlbmd0aF0pIHtcbiAgICBtYWluQWxpZ25tZW50U2lkZSA9IGdldE9wcG9zaXRlUGxhY2VtZW50KG1haW5BbGlnbm1lbnRTaWRlKTtcbiAgfVxuICByZXR1cm4gW21haW5BbGlnbm1lbnRTaWRlLCBnZXRPcHBvc2l0ZVBsYWNlbWVudChtYWluQWxpZ25tZW50U2lkZSldO1xufVxuZnVuY3Rpb24gZ2V0RXhwYW5kZWRQbGFjZW1lbnRzKHBsYWNlbWVudCkge1xuICBjb25zdCBvcHBvc2l0ZVBsYWNlbWVudCA9IGdldE9wcG9zaXRlUGxhY2VtZW50KHBsYWNlbWVudCk7XG4gIHJldHVybiBbZ2V0T3Bwb3NpdGVBbGlnbm1lbnRQbGFjZW1lbnQocGxhY2VtZW50KSwgb3Bwb3NpdGVQbGFjZW1lbnQsIGdldE9wcG9zaXRlQWxpZ25tZW50UGxhY2VtZW50KG9wcG9zaXRlUGxhY2VtZW50KV07XG59XG5mdW5jdGlvbiBnZXRPcHBvc2l0ZUFsaWdubWVudFBsYWNlbWVudChwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIHBsYWNlbWVudC5yZXBsYWNlKC9zdGFydHxlbmQvZywgYWxpZ25tZW50ID0+IG9wcG9zaXRlQWxpZ25tZW50TWFwW2FsaWdubWVudF0pO1xufVxuZnVuY3Rpb24gZ2V0U2lkZUxpc3Qoc2lkZSwgaXNTdGFydCwgcnRsKSB7XG4gIGNvbnN0IGxyID0gWydsZWZ0JywgJ3JpZ2h0J107XG4gIGNvbnN0IHJsID0gWydyaWdodCcsICdsZWZ0J107XG4gIGNvbnN0IHRiID0gWyd0b3AnLCAnYm90dG9tJ107XG4gIGNvbnN0IGJ0ID0gWydib3R0b20nLCAndG9wJ107XG4gIHN3aXRjaCAoc2lkZSkge1xuICAgIGNhc2UgJ3RvcCc6XG4gICAgY2FzZSAnYm90dG9tJzpcbiAgICAgIGlmIChydGwpIHJldHVybiBpc1N0YXJ0ID8gcmwgOiBscjtcbiAgICAgIHJldHVybiBpc1N0YXJ0ID8gbHIgOiBybDtcbiAgICBjYXNlICdsZWZ0JzpcbiAgICBjYXNlICdyaWdodCc6XG4gICAgICByZXR1cm4gaXNTdGFydCA/IHRiIDogYnQ7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBbXTtcbiAgfVxufVxuZnVuY3Rpb24gZ2V0T3Bwb3NpdGVBeGlzUGxhY2VtZW50cyhwbGFjZW1lbnQsIGZsaXBBbGlnbm1lbnQsIGRpcmVjdGlvbiwgcnRsKSB7XG4gIGNvbnN0IGFsaWdubWVudCA9IGdldEFsaWdubWVudChwbGFjZW1lbnQpO1xuICBsZXQgbGlzdCA9IGdldFNpZGVMaXN0KGdldFNpZGUocGxhY2VtZW50KSwgZGlyZWN0aW9uID09PSAnc3RhcnQnLCBydGwpO1xuICBpZiAoYWxpZ25tZW50KSB7XG4gICAgbGlzdCA9IGxpc3QubWFwKHNpZGUgPT4gc2lkZSArIFwiLVwiICsgYWxpZ25tZW50KTtcbiAgICBpZiAoZmxpcEFsaWdubWVudCkge1xuICAgICAgbGlzdCA9IGxpc3QuY29uY2F0KGxpc3QubWFwKGdldE9wcG9zaXRlQWxpZ25tZW50UGxhY2VtZW50KSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBsaXN0O1xufVxuZnVuY3Rpb24gZ2V0T3Bwb3NpdGVQbGFjZW1lbnQocGxhY2VtZW50KSB7XG4gIHJldHVybiBwbGFjZW1lbnQucmVwbGFjZSgvbGVmdHxyaWdodHxib3R0b218dG9wL2csIHNpZGUgPT4gb3Bwb3NpdGVTaWRlTWFwW3NpZGVdKTtcbn1cbmZ1bmN0aW9uIGV4cGFuZFBhZGRpbmdPYmplY3QocGFkZGluZykge1xuICByZXR1cm4ge1xuICAgIHRvcDogMCxcbiAgICByaWdodDogMCxcbiAgICBib3R0b206IDAsXG4gICAgbGVmdDogMCxcbiAgICAuLi5wYWRkaW5nXG4gIH07XG59XG5mdW5jdGlvbiBnZXRQYWRkaW5nT2JqZWN0KHBhZGRpbmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBwYWRkaW5nICE9PSAnbnVtYmVyJyA/IGV4cGFuZFBhZGRpbmdPYmplY3QocGFkZGluZykgOiB7XG4gICAgdG9wOiBwYWRkaW5nLFxuICAgIHJpZ2h0OiBwYWRkaW5nLFxuICAgIGJvdHRvbTogcGFkZGluZyxcbiAgICBsZWZ0OiBwYWRkaW5nXG4gIH07XG59XG5mdW5jdGlvbiByZWN0VG9DbGllbnRSZWN0KHJlY3QpIHtcbiAgY29uc3Qge1xuICAgIHgsXG4gICAgeSxcbiAgICB3aWR0aCxcbiAgICBoZWlnaHRcbiAgfSA9IHJlY3Q7XG4gIHJldHVybiB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIHRvcDogeSxcbiAgICBsZWZ0OiB4LFxuICAgIHJpZ2h0OiB4ICsgd2lkdGgsXG4gICAgYm90dG9tOiB5ICsgaGVpZ2h0LFxuICAgIHgsXG4gICAgeVxuICB9O1xufVxuXG5leHBvcnQgeyBhbGlnbm1lbnRzLCBjbGFtcCwgY3JlYXRlQ29vcmRzLCBldmFsdWF0ZSwgZXhwYW5kUGFkZGluZ09iamVjdCwgZmxvb3IsIGdldEFsaWdubWVudCwgZ2V0QWxpZ25tZW50QXhpcywgZ2V0QWxpZ25tZW50U2lkZXMsIGdldEF4aXNMZW5ndGgsIGdldEV4cGFuZGVkUGxhY2VtZW50cywgZ2V0T3Bwb3NpdGVBbGlnbm1lbnRQbGFjZW1lbnQsIGdldE9wcG9zaXRlQXhpcywgZ2V0T3Bwb3NpdGVBeGlzUGxhY2VtZW50cywgZ2V0T3Bwb3NpdGVQbGFjZW1lbnQsIGdldFBhZGRpbmdPYmplY3QsIGdldFNpZGUsIGdldFNpZGVBeGlzLCBtYXgsIG1pbiwgcGxhY2VtZW50cywgcmVjdFRvQ2xpZW50UmVjdCwgcm91bmQsIHNpZGVzIH07XG4iLCJpbXBvcnQgeyBnZXRTaWRlQXhpcywgZ2V0QWxpZ25tZW50QXhpcywgZ2V0QXhpc0xlbmd0aCwgZ2V0U2lkZSwgZ2V0QWxpZ25tZW50LCBldmFsdWF0ZSwgZ2V0UGFkZGluZ09iamVjdCwgcmVjdFRvQ2xpZW50UmVjdCwgbWluLCBjbGFtcCwgcGxhY2VtZW50cywgZ2V0QWxpZ25tZW50U2lkZXMsIGdldE9wcG9zaXRlQWxpZ25tZW50UGxhY2VtZW50LCBnZXRPcHBvc2l0ZVBsYWNlbWVudCwgZ2V0RXhwYW5kZWRQbGFjZW1lbnRzLCBnZXRPcHBvc2l0ZUF4aXNQbGFjZW1lbnRzLCBzaWRlcywgbWF4LCBnZXRPcHBvc2l0ZUF4aXMgfSBmcm9tICdAZmxvYXRpbmctdWkvdXRpbHMnO1xuZXhwb3J0IHsgcmVjdFRvQ2xpZW50UmVjdCB9IGZyb20gJ0BmbG9hdGluZy11aS91dGlscyc7XG5cbmZ1bmN0aW9uIGNvbXB1dGVDb29yZHNGcm9tUGxhY2VtZW50KF9yZWYsIHBsYWNlbWVudCwgcnRsKSB7XG4gIGxldCB7XG4gICAgcmVmZXJlbmNlLFxuICAgIGZsb2F0aW5nXG4gIH0gPSBfcmVmO1xuICBjb25zdCBzaWRlQXhpcyA9IGdldFNpZGVBeGlzKHBsYWNlbWVudCk7XG4gIGNvbnN0IGFsaWdubWVudEF4aXMgPSBnZXRBbGlnbm1lbnRBeGlzKHBsYWNlbWVudCk7XG4gIGNvbnN0IGFsaWduTGVuZ3RoID0gZ2V0QXhpc0xlbmd0aChhbGlnbm1lbnRBeGlzKTtcbiAgY29uc3Qgc2lkZSA9IGdldFNpZGUocGxhY2VtZW50KTtcbiAgY29uc3QgaXNWZXJ0aWNhbCA9IHNpZGVBeGlzID09PSAneSc7XG4gIGNvbnN0IGNvbW1vblggPSByZWZlcmVuY2UueCArIHJlZmVyZW5jZS53aWR0aCAvIDIgLSBmbG9hdGluZy53aWR0aCAvIDI7XG4gIGNvbnN0IGNvbW1vblkgPSByZWZlcmVuY2UueSArIHJlZmVyZW5jZS5oZWlnaHQgLyAyIC0gZmxvYXRpbmcuaGVpZ2h0IC8gMjtcbiAgY29uc3QgY29tbW9uQWxpZ24gPSByZWZlcmVuY2VbYWxpZ25MZW5ndGhdIC8gMiAtIGZsb2F0aW5nW2FsaWduTGVuZ3RoXSAvIDI7XG4gIGxldCBjb29yZHM7XG4gIHN3aXRjaCAoc2lkZSkge1xuICAgIGNhc2UgJ3RvcCc6XG4gICAgICBjb29yZHMgPSB7XG4gICAgICAgIHg6IGNvbW1vblgsXG4gICAgICAgIHk6IHJlZmVyZW5jZS55IC0gZmxvYXRpbmcuaGVpZ2h0XG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnYm90dG9tJzpcbiAgICAgIGNvb3JkcyA9IHtcbiAgICAgICAgeDogY29tbW9uWCxcbiAgICAgICAgeTogcmVmZXJlbmNlLnkgKyByZWZlcmVuY2UuaGVpZ2h0XG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAncmlnaHQnOlxuICAgICAgY29vcmRzID0ge1xuICAgICAgICB4OiByZWZlcmVuY2UueCArIHJlZmVyZW5jZS53aWR0aCxcbiAgICAgICAgeTogY29tbW9uWVxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgY29vcmRzID0ge1xuICAgICAgICB4OiByZWZlcmVuY2UueCAtIGZsb2F0aW5nLndpZHRoLFxuICAgICAgICB5OiBjb21tb25ZXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIGNvb3JkcyA9IHtcbiAgICAgICAgeDogcmVmZXJlbmNlLngsXG4gICAgICAgIHk6IHJlZmVyZW5jZS55XG4gICAgICB9O1xuICB9XG4gIHN3aXRjaCAoZ2V0QWxpZ25tZW50KHBsYWNlbWVudCkpIHtcbiAgICBjYXNlICdzdGFydCc6XG4gICAgICBjb29yZHNbYWxpZ25tZW50QXhpc10gLT0gY29tbW9uQWxpZ24gKiAocnRsICYmIGlzVmVydGljYWwgPyAtMSA6IDEpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnZW5kJzpcbiAgICAgIGNvb3Jkc1thbGlnbm1lbnRBeGlzXSArPSBjb21tb25BbGlnbiAqIChydGwgJiYgaXNWZXJ0aWNhbCA/IC0xIDogMSk7XG4gICAgICBicmVhaztcbiAgfVxuICByZXR1cm4gY29vcmRzO1xufVxuXG4vKipcbiAqIENvbXB1dGVzIHRoZSBgeGAgYW5kIGB5YCBjb29yZGluYXRlcyB0aGF0IHdpbGwgcGxhY2UgdGhlIGZsb2F0aW5nIGVsZW1lbnRcbiAqIG5leHQgdG8gYSBnaXZlbiByZWZlcmVuY2UgZWxlbWVudC5cbiAqXG4gKiBUaGlzIGV4cG9ydCBkb2VzIG5vdCBoYXZlIGFueSBgcGxhdGZvcm1gIGludGVyZmFjZSBsb2dpYy4gWW91IHdpbGwgbmVlZCB0b1xuICogd3JpdGUgb25lIGZvciB0aGUgcGxhdGZvcm0geW91IGFyZSB1c2luZyBGbG9hdGluZyBVSSB3aXRoLlxuICovXG5jb25zdCBjb21wdXRlUG9zaXRpb24gPSBhc3luYyAocmVmZXJlbmNlLCBmbG9hdGluZywgY29uZmlnKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBwbGFjZW1lbnQgPSAnYm90dG9tJyxcbiAgICBzdHJhdGVneSA9ICdhYnNvbHV0ZScsXG4gICAgbWlkZGxld2FyZSA9IFtdLFxuICAgIHBsYXRmb3JtXG4gIH0gPSBjb25maWc7XG4gIGNvbnN0IHZhbGlkTWlkZGxld2FyZSA9IG1pZGRsZXdhcmUuZmlsdGVyKEJvb2xlYW4pO1xuICBjb25zdCBydGwgPSBhd2FpdCAocGxhdGZvcm0uaXNSVEwgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmlzUlRMKGZsb2F0aW5nKSk7XG4gIGxldCByZWN0cyA9IGF3YWl0IHBsYXRmb3JtLmdldEVsZW1lbnRSZWN0cyh7XG4gICAgcmVmZXJlbmNlLFxuICAgIGZsb2F0aW5nLFxuICAgIHN0cmF0ZWd5XG4gIH0pO1xuICBsZXQge1xuICAgIHgsXG4gICAgeVxuICB9ID0gY29tcHV0ZUNvb3Jkc0Zyb21QbGFjZW1lbnQocmVjdHMsIHBsYWNlbWVudCwgcnRsKTtcbiAgbGV0IHN0YXRlZnVsUGxhY2VtZW50ID0gcGxhY2VtZW50O1xuICBsZXQgbWlkZGxld2FyZURhdGEgPSB7fTtcbiAgbGV0IHJlc2V0Q291bnQgPSAwO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHZhbGlkTWlkZGxld2FyZS5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHtcbiAgICAgIG5hbWUsXG4gICAgICBmblxuICAgIH0gPSB2YWxpZE1pZGRsZXdhcmVbaV07XG4gICAgY29uc3Qge1xuICAgICAgeDogbmV4dFgsXG4gICAgICB5OiBuZXh0WSxcbiAgICAgIGRhdGEsXG4gICAgICByZXNldFxuICAgIH0gPSBhd2FpdCBmbih7XG4gICAgICB4LFxuICAgICAgeSxcbiAgICAgIGluaXRpYWxQbGFjZW1lbnQ6IHBsYWNlbWVudCxcbiAgICAgIHBsYWNlbWVudDogc3RhdGVmdWxQbGFjZW1lbnQsXG4gICAgICBzdHJhdGVneSxcbiAgICAgIG1pZGRsZXdhcmVEYXRhLFxuICAgICAgcmVjdHMsXG4gICAgICBwbGF0Zm9ybSxcbiAgICAgIGVsZW1lbnRzOiB7XG4gICAgICAgIHJlZmVyZW5jZSxcbiAgICAgICAgZmxvYXRpbmdcbiAgICAgIH1cbiAgICB9KTtcbiAgICB4ID0gbmV4dFggIT0gbnVsbCA/IG5leHRYIDogeDtcbiAgICB5ID0gbmV4dFkgIT0gbnVsbCA/IG5leHRZIDogeTtcbiAgICBtaWRkbGV3YXJlRGF0YSA9IHtcbiAgICAgIC4uLm1pZGRsZXdhcmVEYXRhLFxuICAgICAgW25hbWVdOiB7XG4gICAgICAgIC4uLm1pZGRsZXdhcmVEYXRhW25hbWVdLFxuICAgICAgICAuLi5kYXRhXG4gICAgICB9XG4gICAgfTtcbiAgICBpZiAocmVzZXQgJiYgcmVzZXRDb3VudCA8PSA1MCkge1xuICAgICAgcmVzZXRDb3VudCsrO1xuICAgICAgaWYgKHR5cGVvZiByZXNldCA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgaWYgKHJlc2V0LnBsYWNlbWVudCkge1xuICAgICAgICAgIHN0YXRlZnVsUGxhY2VtZW50ID0gcmVzZXQucGxhY2VtZW50O1xuICAgICAgICB9XG4gICAgICAgIGlmIChyZXNldC5yZWN0cykge1xuICAgICAgICAgIHJlY3RzID0gcmVzZXQucmVjdHMgPT09IHRydWUgPyBhd2FpdCBwbGF0Zm9ybS5nZXRFbGVtZW50UmVjdHMoe1xuICAgICAgICAgICAgcmVmZXJlbmNlLFxuICAgICAgICAgICAgZmxvYXRpbmcsXG4gICAgICAgICAgICBzdHJhdGVneVxuICAgICAgICAgIH0pIDogcmVzZXQucmVjdHM7XG4gICAgICAgIH1cbiAgICAgICAgKHtcbiAgICAgICAgICB4LFxuICAgICAgICAgIHlcbiAgICAgICAgfSA9IGNvbXB1dGVDb29yZHNGcm9tUGxhY2VtZW50KHJlY3RzLCBzdGF0ZWZ1bFBsYWNlbWVudCwgcnRsKSk7XG4gICAgICB9XG4gICAgICBpID0gLTE7XG4gICAgfVxuICB9XG4gIHJldHVybiB7XG4gICAgeCxcbiAgICB5LFxuICAgIHBsYWNlbWVudDogc3RhdGVmdWxQbGFjZW1lbnQsXG4gICAgc3RyYXRlZ3ksXG4gICAgbWlkZGxld2FyZURhdGFcbiAgfTtcbn07XG5cbi8qKlxuICogUmVzb2x2ZXMgd2l0aCBhbiBvYmplY3Qgb2Ygb3ZlcmZsb3cgc2lkZSBvZmZzZXRzIHRoYXQgZGV0ZXJtaW5lIGhvdyBtdWNoIHRoZVxuICogZWxlbWVudCBpcyBvdmVyZmxvd2luZyBhIGdpdmVuIGNsaXBwaW5nIGJvdW5kYXJ5IG9uIGVhY2ggc2lkZS5cbiAqIC0gcG9zaXRpdmUgPSBvdmVyZmxvd2luZyB0aGUgYm91bmRhcnkgYnkgdGhhdCBudW1iZXIgb2YgcGl4ZWxzXG4gKiAtIG5lZ2F0aXZlID0gaG93IG1hbnkgcGl4ZWxzIGxlZnQgYmVmb3JlIGl0IHdpbGwgb3ZlcmZsb3dcbiAqIC0gMCA9IGxpZXMgZmx1c2ggd2l0aCB0aGUgYm91bmRhcnlcbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9kZXRlY3RPdmVyZmxvd1xuICovXG5hc3luYyBmdW5jdGlvbiBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwgb3B0aW9ucykge1xuICB2YXIgX2F3YWl0JHBsYXRmb3JtJGlzRWxlO1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIGNvbnN0IHtcbiAgICB4LFxuICAgIHksXG4gICAgcGxhdGZvcm0sXG4gICAgcmVjdHMsXG4gICAgZWxlbWVudHMsXG4gICAgc3RyYXRlZ3lcbiAgfSA9IHN0YXRlO1xuICBjb25zdCB7XG4gICAgYm91bmRhcnkgPSAnY2xpcHBpbmdBbmNlc3RvcnMnLFxuICAgIHJvb3RCb3VuZGFyeSA9ICd2aWV3cG9ydCcsXG4gICAgZWxlbWVudENvbnRleHQgPSAnZmxvYXRpbmcnLFxuICAgIGFsdEJvdW5kYXJ5ID0gZmFsc2UsXG4gICAgcGFkZGluZyA9IDBcbiAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcbiAgY29uc3QgcGFkZGluZ09iamVjdCA9IGdldFBhZGRpbmdPYmplY3QocGFkZGluZyk7XG4gIGNvbnN0IGFsdENvbnRleHQgPSBlbGVtZW50Q29udGV4dCA9PT0gJ2Zsb2F0aW5nJyA/ICdyZWZlcmVuY2UnIDogJ2Zsb2F0aW5nJztcbiAgY29uc3QgZWxlbWVudCA9IGVsZW1lbnRzW2FsdEJvdW5kYXJ5ID8gYWx0Q29udGV4dCA6IGVsZW1lbnRDb250ZXh0XTtcbiAgY29uc3QgY2xpcHBpbmdDbGllbnRSZWN0ID0gcmVjdFRvQ2xpZW50UmVjdChhd2FpdCBwbGF0Zm9ybS5nZXRDbGlwcGluZ1JlY3Qoe1xuICAgIGVsZW1lbnQ6ICgoX2F3YWl0JHBsYXRmb3JtJGlzRWxlID0gYXdhaXQgKHBsYXRmb3JtLmlzRWxlbWVudCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uaXNFbGVtZW50KGVsZW1lbnQpKSkgIT0gbnVsbCA/IF9hd2FpdCRwbGF0Zm9ybSRpc0VsZSA6IHRydWUpID8gZWxlbWVudCA6IGVsZW1lbnQuY29udGV4dEVsZW1lbnQgfHwgKGF3YWl0IChwbGF0Zm9ybS5nZXREb2N1bWVudEVsZW1lbnQgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmdldERvY3VtZW50RWxlbWVudChlbGVtZW50cy5mbG9hdGluZykpKSxcbiAgICBib3VuZGFyeSxcbiAgICByb290Qm91bmRhcnksXG4gICAgc3RyYXRlZ3lcbiAgfSkpO1xuICBjb25zdCByZWN0ID0gZWxlbWVudENvbnRleHQgPT09ICdmbG9hdGluZycgPyB7XG4gICAgeCxcbiAgICB5LFxuICAgIHdpZHRoOiByZWN0cy5mbG9hdGluZy53aWR0aCxcbiAgICBoZWlnaHQ6IHJlY3RzLmZsb2F0aW5nLmhlaWdodFxuICB9IDogcmVjdHMucmVmZXJlbmNlO1xuICBjb25zdCBvZmZzZXRQYXJlbnQgPSBhd2FpdCAocGxhdGZvcm0uZ2V0T2Zmc2V0UGFyZW50ID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5nZXRPZmZzZXRQYXJlbnQoZWxlbWVudHMuZmxvYXRpbmcpKTtcbiAgY29uc3Qgb2Zmc2V0U2NhbGUgPSAoYXdhaXQgKHBsYXRmb3JtLmlzRWxlbWVudCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uaXNFbGVtZW50KG9mZnNldFBhcmVudCkpKSA/IChhd2FpdCAocGxhdGZvcm0uZ2V0U2NhbGUgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmdldFNjYWxlKG9mZnNldFBhcmVudCkpKSB8fCB7XG4gICAgeDogMSxcbiAgICB5OiAxXG4gIH0gOiB7XG4gICAgeDogMSxcbiAgICB5OiAxXG4gIH07XG4gIGNvbnN0IGVsZW1lbnRDbGllbnRSZWN0ID0gcmVjdFRvQ2xpZW50UmVjdChwbGF0Zm9ybS5jb252ZXJ0T2Zmc2V0UGFyZW50UmVsYXRpdmVSZWN0VG9WaWV3cG9ydFJlbGF0aXZlUmVjdCA/IGF3YWl0IHBsYXRmb3JtLmNvbnZlcnRPZmZzZXRQYXJlbnRSZWxhdGl2ZVJlY3RUb1ZpZXdwb3J0UmVsYXRpdmVSZWN0KHtcbiAgICBlbGVtZW50cyxcbiAgICByZWN0LFxuICAgIG9mZnNldFBhcmVudCxcbiAgICBzdHJhdGVneVxuICB9KSA6IHJlY3QpO1xuICByZXR1cm4ge1xuICAgIHRvcDogKGNsaXBwaW5nQ2xpZW50UmVjdC50b3AgLSBlbGVtZW50Q2xpZW50UmVjdC50b3AgKyBwYWRkaW5nT2JqZWN0LnRvcCkgLyBvZmZzZXRTY2FsZS55LFxuICAgIGJvdHRvbTogKGVsZW1lbnRDbGllbnRSZWN0LmJvdHRvbSAtIGNsaXBwaW5nQ2xpZW50UmVjdC5ib3R0b20gKyBwYWRkaW5nT2JqZWN0LmJvdHRvbSkgLyBvZmZzZXRTY2FsZS55LFxuICAgIGxlZnQ6IChjbGlwcGluZ0NsaWVudFJlY3QubGVmdCAtIGVsZW1lbnRDbGllbnRSZWN0LmxlZnQgKyBwYWRkaW5nT2JqZWN0LmxlZnQpIC8gb2Zmc2V0U2NhbGUueCxcbiAgICByaWdodDogKGVsZW1lbnRDbGllbnRSZWN0LnJpZ2h0IC0gY2xpcHBpbmdDbGllbnRSZWN0LnJpZ2h0ICsgcGFkZGluZ09iamVjdC5yaWdodCkgLyBvZmZzZXRTY2FsZS54XG4gIH07XG59XG5cbi8qKlxuICogUHJvdmlkZXMgZGF0YSB0byBwb3NpdGlvbiBhbiBpbm5lciBlbGVtZW50IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IHNvIHRoYXQgaXRcbiAqIGFwcGVhcnMgY2VudGVyZWQgdG8gdGhlIHJlZmVyZW5jZSBlbGVtZW50LlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2Fycm93XG4gKi9cbmNvbnN0IGFycm93ID0gb3B0aW9ucyA9PiAoe1xuICBuYW1lOiAnYXJyb3cnLFxuICBvcHRpb25zLFxuICBhc3luYyBmbihzdGF0ZSkge1xuICAgIGNvbnN0IHtcbiAgICAgIHgsXG4gICAgICB5LFxuICAgICAgcGxhY2VtZW50LFxuICAgICAgcmVjdHMsXG4gICAgICBwbGF0Zm9ybSxcbiAgICAgIGVsZW1lbnRzLFxuICAgICAgbWlkZGxld2FyZURhdGFcbiAgICB9ID0gc3RhdGU7XG4gICAgLy8gU2luY2UgYGVsZW1lbnRgIGlzIHJlcXVpcmVkLCB3ZSBkb24ndCBQYXJ0aWFsPD4gdGhlIHR5cGUuXG4gICAgY29uc3Qge1xuICAgICAgZWxlbWVudCxcbiAgICAgIHBhZGRpbmcgPSAwXG4gICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKSB8fCB7fTtcbiAgICBpZiAoZWxlbWVudCA9PSBudWxsKSB7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICAgIGNvbnN0IHBhZGRpbmdPYmplY3QgPSBnZXRQYWRkaW5nT2JqZWN0KHBhZGRpbmcpO1xuICAgIGNvbnN0IGNvb3JkcyA9IHtcbiAgICAgIHgsXG4gICAgICB5XG4gICAgfTtcbiAgICBjb25zdCBheGlzID0gZ2V0QWxpZ25tZW50QXhpcyhwbGFjZW1lbnQpO1xuICAgIGNvbnN0IGxlbmd0aCA9IGdldEF4aXNMZW5ndGgoYXhpcyk7XG4gICAgY29uc3QgYXJyb3dEaW1lbnNpb25zID0gYXdhaXQgcGxhdGZvcm0uZ2V0RGltZW5zaW9ucyhlbGVtZW50KTtcbiAgICBjb25zdCBpc1lBeGlzID0gYXhpcyA9PT0gJ3knO1xuICAgIGNvbnN0IG1pblByb3AgPSBpc1lBeGlzID8gJ3RvcCcgOiAnbGVmdCc7XG4gICAgY29uc3QgbWF4UHJvcCA9IGlzWUF4aXMgPyAnYm90dG9tJyA6ICdyaWdodCc7XG4gICAgY29uc3QgY2xpZW50UHJvcCA9IGlzWUF4aXMgPyAnY2xpZW50SGVpZ2h0JyA6ICdjbGllbnRXaWR0aCc7XG4gICAgY29uc3QgZW5kRGlmZiA9IHJlY3RzLnJlZmVyZW5jZVtsZW5ndGhdICsgcmVjdHMucmVmZXJlbmNlW2F4aXNdIC0gY29vcmRzW2F4aXNdIC0gcmVjdHMuZmxvYXRpbmdbbGVuZ3RoXTtcbiAgICBjb25zdCBzdGFydERpZmYgPSBjb29yZHNbYXhpc10gLSByZWN0cy5yZWZlcmVuY2VbYXhpc107XG4gICAgY29uc3QgYXJyb3dPZmZzZXRQYXJlbnQgPSBhd2FpdCAocGxhdGZvcm0uZ2V0T2Zmc2V0UGFyZW50ID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5nZXRPZmZzZXRQYXJlbnQoZWxlbWVudCkpO1xuICAgIGxldCBjbGllbnRTaXplID0gYXJyb3dPZmZzZXRQYXJlbnQgPyBhcnJvd09mZnNldFBhcmVudFtjbGllbnRQcm9wXSA6IDA7XG5cbiAgICAvLyBET00gcGxhdGZvcm0gY2FuIHJldHVybiBgd2luZG93YCBhcyB0aGUgYG9mZnNldFBhcmVudGAuXG4gICAgaWYgKCFjbGllbnRTaXplIHx8ICEoYXdhaXQgKHBsYXRmb3JtLmlzRWxlbWVudCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uaXNFbGVtZW50KGFycm93T2Zmc2V0UGFyZW50KSkpKSB7XG4gICAgICBjbGllbnRTaXplID0gZWxlbWVudHMuZmxvYXRpbmdbY2xpZW50UHJvcF0gfHwgcmVjdHMuZmxvYXRpbmdbbGVuZ3RoXTtcbiAgICB9XG4gICAgY29uc3QgY2VudGVyVG9SZWZlcmVuY2UgPSBlbmREaWZmIC8gMiAtIHN0YXJ0RGlmZiAvIDI7XG5cbiAgICAvLyBJZiB0aGUgcGFkZGluZyBpcyBsYXJnZSBlbm91Z2ggdGhhdCBpdCBjYXVzZXMgdGhlIGFycm93IHRvIG5vIGxvbmdlciBiZVxuICAgIC8vIGNlbnRlcmVkLCBtb2RpZnkgdGhlIHBhZGRpbmcgc28gdGhhdCBpdCBpcyBjZW50ZXJlZC5cbiAgICBjb25zdCBsYXJnZXN0UG9zc2libGVQYWRkaW5nID0gY2xpZW50U2l6ZSAvIDIgLSBhcnJvd0RpbWVuc2lvbnNbbGVuZ3RoXSAvIDIgLSAxO1xuICAgIGNvbnN0IG1pblBhZGRpbmcgPSBtaW4ocGFkZGluZ09iamVjdFttaW5Qcm9wXSwgbGFyZ2VzdFBvc3NpYmxlUGFkZGluZyk7XG4gICAgY29uc3QgbWF4UGFkZGluZyA9IG1pbihwYWRkaW5nT2JqZWN0W21heFByb3BdLCBsYXJnZXN0UG9zc2libGVQYWRkaW5nKTtcblxuICAgIC8vIE1ha2Ugc3VyZSB0aGUgYXJyb3cgZG9lc24ndCBvdmVyZmxvdyB0aGUgZmxvYXRpbmcgZWxlbWVudCBpZiB0aGUgY2VudGVyXG4gICAgLy8gcG9pbnQgaXMgb3V0c2lkZSB0aGUgZmxvYXRpbmcgZWxlbWVudCdzIGJvdW5kcy5cbiAgICBjb25zdCBtaW4kMSA9IG1pblBhZGRpbmc7XG4gICAgY29uc3QgbWF4ID0gY2xpZW50U2l6ZSAtIGFycm93RGltZW5zaW9uc1tsZW5ndGhdIC0gbWF4UGFkZGluZztcbiAgICBjb25zdCBjZW50ZXIgPSBjbGllbnRTaXplIC8gMiAtIGFycm93RGltZW5zaW9uc1tsZW5ndGhdIC8gMiArIGNlbnRlclRvUmVmZXJlbmNlO1xuICAgIGNvbnN0IG9mZnNldCA9IGNsYW1wKG1pbiQxLCBjZW50ZXIsIG1heCk7XG5cbiAgICAvLyBJZiB0aGUgcmVmZXJlbmNlIGlzIHNtYWxsIGVub3VnaCB0aGF0IHRoZSBhcnJvdydzIHBhZGRpbmcgY2F1c2VzIGl0IHRvXG4gICAgLy8gdG8gcG9pbnQgdG8gbm90aGluZyBmb3IgYW4gYWxpZ25lZCBwbGFjZW1lbnQsIGFkanVzdCB0aGUgb2Zmc2V0IG9mIHRoZVxuICAgIC8vIGZsb2F0aW5nIGVsZW1lbnQgaXRzZWxmLiBUbyBlbnN1cmUgYHNoaWZ0KClgIGNvbnRpbnVlcyB0byB0YWtlIGFjdGlvbixcbiAgICAvLyBhIHNpbmdsZSByZXNldCBpcyBwZXJmb3JtZWQgd2hlbiB0aGlzIGlzIHRydWUuXG4gICAgY29uc3Qgc2hvdWxkQWRkT2Zmc2V0ID0gIW1pZGRsZXdhcmVEYXRhLmFycm93ICYmIGdldEFsaWdubWVudChwbGFjZW1lbnQpICE9IG51bGwgJiYgY2VudGVyICE9PSBvZmZzZXQgJiYgcmVjdHMucmVmZXJlbmNlW2xlbmd0aF0gLyAyIC0gKGNlbnRlciA8IG1pbiQxID8gbWluUGFkZGluZyA6IG1heFBhZGRpbmcpIC0gYXJyb3dEaW1lbnNpb25zW2xlbmd0aF0gLyAyIDwgMDtcbiAgICBjb25zdCBhbGlnbm1lbnRPZmZzZXQgPSBzaG91bGRBZGRPZmZzZXQgPyBjZW50ZXIgPCBtaW4kMSA/IGNlbnRlciAtIG1pbiQxIDogY2VudGVyIC0gbWF4IDogMDtcbiAgICByZXR1cm4ge1xuICAgICAgW2F4aXNdOiBjb29yZHNbYXhpc10gKyBhbGlnbm1lbnRPZmZzZXQsXG4gICAgICBkYXRhOiB7XG4gICAgICAgIFtheGlzXTogb2Zmc2V0LFxuICAgICAgICBjZW50ZXJPZmZzZXQ6IGNlbnRlciAtIG9mZnNldCAtIGFsaWdubWVudE9mZnNldCxcbiAgICAgICAgLi4uKHNob3VsZEFkZE9mZnNldCAmJiB7XG4gICAgICAgICAgYWxpZ25tZW50T2Zmc2V0XG4gICAgICAgIH0pXG4gICAgICB9LFxuICAgICAgcmVzZXQ6IHNob3VsZEFkZE9mZnNldFxuICAgIH07XG4gIH1cbn0pO1xuXG5mdW5jdGlvbiBnZXRQbGFjZW1lbnRMaXN0KGFsaWdubWVudCwgYXV0b0FsaWdubWVudCwgYWxsb3dlZFBsYWNlbWVudHMpIHtcbiAgY29uc3QgYWxsb3dlZFBsYWNlbWVudHNTb3J0ZWRCeUFsaWdubWVudCA9IGFsaWdubWVudCA/IFsuLi5hbGxvd2VkUGxhY2VtZW50cy5maWx0ZXIocGxhY2VtZW50ID0+IGdldEFsaWdubWVudChwbGFjZW1lbnQpID09PSBhbGlnbm1lbnQpLCAuLi5hbGxvd2VkUGxhY2VtZW50cy5maWx0ZXIocGxhY2VtZW50ID0+IGdldEFsaWdubWVudChwbGFjZW1lbnQpICE9PSBhbGlnbm1lbnQpXSA6IGFsbG93ZWRQbGFjZW1lbnRzLmZpbHRlcihwbGFjZW1lbnQgPT4gZ2V0U2lkZShwbGFjZW1lbnQpID09PSBwbGFjZW1lbnQpO1xuICByZXR1cm4gYWxsb3dlZFBsYWNlbWVudHNTb3J0ZWRCeUFsaWdubWVudC5maWx0ZXIocGxhY2VtZW50ID0+IHtcbiAgICBpZiAoYWxpZ25tZW50KSB7XG4gICAgICByZXR1cm4gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCkgPT09IGFsaWdubWVudCB8fCAoYXV0b0FsaWdubWVudCA/IGdldE9wcG9zaXRlQWxpZ25tZW50UGxhY2VtZW50KHBsYWNlbWVudCkgIT09IHBsYWNlbWVudCA6IGZhbHNlKTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0pO1xufVxuLyoqXG4gKiBPcHRpbWl6ZXMgdGhlIHZpc2liaWxpdHkgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgYnkgY2hvb3NpbmcgdGhlIHBsYWNlbWVudFxuICogdGhhdCBoYXMgdGhlIG1vc3Qgc3BhY2UgYXZhaWxhYmxlIGF1dG9tYXRpY2FsbHksIHdpdGhvdXQgbmVlZGluZyB0byBzcGVjaWZ5IGFcbiAqIHByZWZlcnJlZCBwbGFjZW1lbnQuIEFsdGVybmF0aXZlIHRvIGBmbGlwYC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9hdXRvUGxhY2VtZW50XG4gKi9cbmNvbnN0IGF1dG9QbGFjZW1lbnQgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ2F1dG9QbGFjZW1lbnQnLFxuICAgIG9wdGlvbnMsXG4gICAgYXN5bmMgZm4oc3RhdGUpIHtcbiAgICAgIHZhciBfbWlkZGxld2FyZURhdGEkYXV0b1AsIF9taWRkbGV3YXJlRGF0YSRhdXRvUDIsIF9wbGFjZW1lbnRzVGhhdEZpdE9uRTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgcmVjdHMsXG4gICAgICAgIG1pZGRsZXdhcmVEYXRhLFxuICAgICAgICBwbGFjZW1lbnQsXG4gICAgICAgIHBsYXRmb3JtLFxuICAgICAgICBlbGVtZW50c1xuICAgICAgfSA9IHN0YXRlO1xuICAgICAgY29uc3Qge1xuICAgICAgICBjcm9zc0F4aXMgPSBmYWxzZSxcbiAgICAgICAgYWxpZ25tZW50LFxuICAgICAgICBhbGxvd2VkUGxhY2VtZW50cyA9IHBsYWNlbWVudHMsXG4gICAgICAgIGF1dG9BbGlnbm1lbnQgPSB0cnVlLFxuICAgICAgICAuLi5kZXRlY3RPdmVyZmxvd09wdGlvbnNcbiAgICAgIH0gPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG4gICAgICBjb25zdCBwbGFjZW1lbnRzJDEgPSBhbGlnbm1lbnQgIT09IHVuZGVmaW5lZCB8fCBhbGxvd2VkUGxhY2VtZW50cyA9PT0gcGxhY2VtZW50cyA/IGdldFBsYWNlbWVudExpc3QoYWxpZ25tZW50IHx8IG51bGwsIGF1dG9BbGlnbm1lbnQsIGFsbG93ZWRQbGFjZW1lbnRzKSA6IGFsbG93ZWRQbGFjZW1lbnRzO1xuICAgICAgY29uc3Qgb3ZlcmZsb3cgPSBhd2FpdCBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwgZGV0ZWN0T3ZlcmZsb3dPcHRpb25zKTtcbiAgICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9ICgoX21pZGRsZXdhcmVEYXRhJGF1dG9QID0gbWlkZGxld2FyZURhdGEuYXV0b1BsYWNlbWVudCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9taWRkbGV3YXJlRGF0YSRhdXRvUC5pbmRleCkgfHwgMDtcbiAgICAgIGNvbnN0IGN1cnJlbnRQbGFjZW1lbnQgPSBwbGFjZW1lbnRzJDFbY3VycmVudEluZGV4XTtcbiAgICAgIGlmIChjdXJyZW50UGxhY2VtZW50ID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgfVxuICAgICAgY29uc3QgYWxpZ25tZW50U2lkZXMgPSBnZXRBbGlnbm1lbnRTaWRlcyhjdXJyZW50UGxhY2VtZW50LCByZWN0cywgYXdhaXQgKHBsYXRmb3JtLmlzUlRMID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5pc1JUTChlbGVtZW50cy5mbG9hdGluZykpKTtcblxuICAgICAgLy8gTWFrZSBgY29tcHV0ZUNvb3Jkc2Agc3RhcnQgZnJvbSB0aGUgcmlnaHQgcGxhY2UuXG4gICAgICBpZiAocGxhY2VtZW50ICE9PSBjdXJyZW50UGxhY2VtZW50KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcmVzZXQ6IHtcbiAgICAgICAgICAgIHBsYWNlbWVudDogcGxhY2VtZW50cyQxWzBdXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgY29uc3QgY3VycmVudE92ZXJmbG93cyA9IFtvdmVyZmxvd1tnZXRTaWRlKGN1cnJlbnRQbGFjZW1lbnQpXSwgb3ZlcmZsb3dbYWxpZ25tZW50U2lkZXNbMF1dLCBvdmVyZmxvd1thbGlnbm1lbnRTaWRlc1sxXV1dO1xuICAgICAgY29uc3QgYWxsT3ZlcmZsb3dzID0gWy4uLigoKF9taWRkbGV3YXJlRGF0YSRhdXRvUDIgPSBtaWRkbGV3YXJlRGF0YS5hdXRvUGxhY2VtZW50KSA9PSBudWxsID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJGF1dG9QMi5vdmVyZmxvd3MpIHx8IFtdKSwge1xuICAgICAgICBwbGFjZW1lbnQ6IGN1cnJlbnRQbGFjZW1lbnQsXG4gICAgICAgIG92ZXJmbG93czogY3VycmVudE92ZXJmbG93c1xuICAgICAgfV07XG4gICAgICBjb25zdCBuZXh0UGxhY2VtZW50ID0gcGxhY2VtZW50cyQxW2N1cnJlbnRJbmRleCArIDFdO1xuXG4gICAgICAvLyBUaGVyZSBhcmUgbW9yZSBwbGFjZW1lbnRzIHRvIGNoZWNrLlxuICAgICAgaWYgKG5leHRQbGFjZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBpbmRleDogY3VycmVudEluZGV4ICsgMSxcbiAgICAgICAgICAgIG92ZXJmbG93czogYWxsT3ZlcmZsb3dzXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXNldDoge1xuICAgICAgICAgICAgcGxhY2VtZW50OiBuZXh0UGxhY2VtZW50XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgY29uc3QgcGxhY2VtZW50c1NvcnRlZEJ5TW9zdFNwYWNlID0gYWxsT3ZlcmZsb3dzLm1hcChkID0+IHtcbiAgICAgICAgY29uc3QgYWxpZ25tZW50ID0gZ2V0QWxpZ25tZW50KGQucGxhY2VtZW50KTtcbiAgICAgICAgcmV0dXJuIFtkLnBsYWNlbWVudCwgYWxpZ25tZW50ICYmIGNyb3NzQXhpcyA/XG4gICAgICAgIC8vIENoZWNrIGFsb25nIHRoZSBtYWluQXhpcyBhbmQgbWFpbiBjcm9zc0F4aXMgc2lkZS5cbiAgICAgICAgZC5vdmVyZmxvd3Muc2xpY2UoMCwgMikucmVkdWNlKChhY2MsIHYpID0+IGFjYyArIHYsIDApIDpcbiAgICAgICAgLy8gQ2hlY2sgb25seSB0aGUgbWFpbkF4aXMuXG4gICAgICAgIGQub3ZlcmZsb3dzWzBdLCBkLm92ZXJmbG93c107XG4gICAgICB9KS5zb3J0KChhLCBiKSA9PiBhWzFdIC0gYlsxXSk7XG4gICAgICBjb25zdCBwbGFjZW1lbnRzVGhhdEZpdE9uRWFjaFNpZGUgPSBwbGFjZW1lbnRzU29ydGVkQnlNb3N0U3BhY2UuZmlsdGVyKGQgPT4gZFsyXS5zbGljZSgwLFxuICAgICAgLy8gQWxpZ25lZCBwbGFjZW1lbnRzIHNob3VsZCBub3QgY2hlY2sgdGhlaXIgb3Bwb3NpdGUgY3Jvc3NBeGlzXG4gICAgICAvLyBzaWRlLlxuICAgICAgZ2V0QWxpZ25tZW50KGRbMF0pID8gMiA6IDMpLmV2ZXJ5KHYgPT4gdiA8PSAwKSk7XG4gICAgICBjb25zdCByZXNldFBsYWNlbWVudCA9ICgoX3BsYWNlbWVudHNUaGF0Rml0T25FID0gcGxhY2VtZW50c1RoYXRGaXRPbkVhY2hTaWRlWzBdKSA9PSBudWxsID8gdm9pZCAwIDogX3BsYWNlbWVudHNUaGF0Rml0T25FWzBdKSB8fCBwbGFjZW1lbnRzU29ydGVkQnlNb3N0U3BhY2VbMF1bMF07XG4gICAgICBpZiAocmVzZXRQbGFjZW1lbnQgIT09IHBsYWNlbWVudCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGluZGV4OiBjdXJyZW50SW5kZXggKyAxLFxuICAgICAgICAgICAgb3ZlcmZsb3dzOiBhbGxPdmVyZmxvd3NcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlc2V0OiB7XG4gICAgICAgICAgICBwbGFjZW1lbnQ6IHJlc2V0UGxhY2VtZW50XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgfTtcbn07XG5cbi8qKlxuICogT3B0aW1pemVzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IGJ5IGZsaXBwaW5nIHRoZSBgcGxhY2VtZW50YFxuICogaW4gb3JkZXIgdG8ga2VlcCBpdCBpbiB2aWV3IHdoZW4gdGhlIHByZWZlcnJlZCBwbGFjZW1lbnQocykgd2lsbCBvdmVyZmxvdyB0aGVcbiAqIGNsaXBwaW5nIGJvdW5kYXJ5LiBBbHRlcm5hdGl2ZSB0byBgYXV0b1BsYWNlbWVudGAuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvZmxpcFxuICovXG5jb25zdCBmbGlwID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdmbGlwJyxcbiAgICBvcHRpb25zLFxuICAgIGFzeW5jIGZuKHN0YXRlKSB7XG4gICAgICB2YXIgX21pZGRsZXdhcmVEYXRhJGFycm93LCBfbWlkZGxld2FyZURhdGEkZmxpcDtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgcGxhY2VtZW50LFxuICAgICAgICBtaWRkbGV3YXJlRGF0YSxcbiAgICAgICAgcmVjdHMsXG4gICAgICAgIGluaXRpYWxQbGFjZW1lbnQsXG4gICAgICAgIHBsYXRmb3JtLFxuICAgICAgICBlbGVtZW50c1xuICAgICAgfSA9IHN0YXRlO1xuICAgICAgY29uc3Qge1xuICAgICAgICBtYWluQXhpczogY2hlY2tNYWluQXhpcyA9IHRydWUsXG4gICAgICAgIGNyb3NzQXhpczogY2hlY2tDcm9zc0F4aXMgPSB0cnVlLFxuICAgICAgICBmYWxsYmFja1BsYWNlbWVudHM6IHNwZWNpZmllZEZhbGxiYWNrUGxhY2VtZW50cyxcbiAgICAgICAgZmFsbGJhY2tTdHJhdGVneSA9ICdiZXN0Rml0JyxcbiAgICAgICAgZmFsbGJhY2tBeGlzU2lkZURpcmVjdGlvbiA9ICdub25lJyxcbiAgICAgICAgZmxpcEFsaWdubWVudCA9IHRydWUsXG4gICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9uc1xuICAgICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcblxuICAgICAgLy8gSWYgYSByZXNldCBieSB0aGUgYXJyb3cgd2FzIGNhdXNlZCBkdWUgdG8gYW4gYWxpZ25tZW50IG9mZnNldCBiZWluZ1xuICAgICAgLy8gYWRkZWQsIHdlIHNob3VsZCBza2lwIGFueSBsb2dpYyBub3cgc2luY2UgYGZsaXAoKWAgaGFzIGFscmVhZHkgZG9uZSBpdHNcbiAgICAgIC8vIHdvcmsuXG4gICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmxvYXRpbmctdWkvZmxvYXRpbmctdWkvaXNzdWVzLzI1NDkjaXNzdWVjb21tZW50LTE3MTk2MDE2NDNcbiAgICAgIGlmICgoX21pZGRsZXdhcmVEYXRhJGFycm93ID0gbWlkZGxld2FyZURhdGEuYXJyb3cpICE9IG51bGwgJiYgX21pZGRsZXdhcmVEYXRhJGFycm93LmFsaWdubWVudE9mZnNldCkge1xuICAgICAgICByZXR1cm4ge307XG4gICAgICB9XG4gICAgICBjb25zdCBzaWRlID0gZ2V0U2lkZShwbGFjZW1lbnQpO1xuICAgICAgY29uc3QgaW5pdGlhbFNpZGVBeGlzID0gZ2V0U2lkZUF4aXMoaW5pdGlhbFBsYWNlbWVudCk7XG4gICAgICBjb25zdCBpc0Jhc2VQbGFjZW1lbnQgPSBnZXRTaWRlKGluaXRpYWxQbGFjZW1lbnQpID09PSBpbml0aWFsUGxhY2VtZW50O1xuICAgICAgY29uc3QgcnRsID0gYXdhaXQgKHBsYXRmb3JtLmlzUlRMID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5pc1JUTChlbGVtZW50cy5mbG9hdGluZykpO1xuICAgICAgY29uc3QgZmFsbGJhY2tQbGFjZW1lbnRzID0gc3BlY2lmaWVkRmFsbGJhY2tQbGFjZW1lbnRzIHx8IChpc0Jhc2VQbGFjZW1lbnQgfHwgIWZsaXBBbGlnbm1lbnQgPyBbZ2V0T3Bwb3NpdGVQbGFjZW1lbnQoaW5pdGlhbFBsYWNlbWVudCldIDogZ2V0RXhwYW5kZWRQbGFjZW1lbnRzKGluaXRpYWxQbGFjZW1lbnQpKTtcbiAgICAgIGNvbnN0IGhhc0ZhbGxiYWNrQXhpc1NpZGVEaXJlY3Rpb24gPSBmYWxsYmFja0F4aXNTaWRlRGlyZWN0aW9uICE9PSAnbm9uZSc7XG4gICAgICBpZiAoIXNwZWNpZmllZEZhbGxiYWNrUGxhY2VtZW50cyAmJiBoYXNGYWxsYmFja0F4aXNTaWRlRGlyZWN0aW9uKSB7XG4gICAgICAgIGZhbGxiYWNrUGxhY2VtZW50cy5wdXNoKC4uLmdldE9wcG9zaXRlQXhpc1BsYWNlbWVudHMoaW5pdGlhbFBsYWNlbWVudCwgZmxpcEFsaWdubWVudCwgZmFsbGJhY2tBeGlzU2lkZURpcmVjdGlvbiwgcnRsKSk7XG4gICAgICB9XG4gICAgICBjb25zdCBwbGFjZW1lbnRzID0gW2luaXRpYWxQbGFjZW1lbnQsIC4uLmZhbGxiYWNrUGxhY2VtZW50c107XG4gICAgICBjb25zdCBvdmVyZmxvdyA9IGF3YWl0IGRldGVjdE92ZXJmbG93KHN0YXRlLCBkZXRlY3RPdmVyZmxvd09wdGlvbnMpO1xuICAgICAgY29uc3Qgb3ZlcmZsb3dzID0gW107XG4gICAgICBsZXQgb3ZlcmZsb3dzRGF0YSA9ICgoX21pZGRsZXdhcmVEYXRhJGZsaXAgPSBtaWRkbGV3YXJlRGF0YS5mbGlwKSA9PSBudWxsID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJGZsaXAub3ZlcmZsb3dzKSB8fCBbXTtcbiAgICAgIGlmIChjaGVja01haW5BeGlzKSB7XG4gICAgICAgIG92ZXJmbG93cy5wdXNoKG92ZXJmbG93W3NpZGVdKTtcbiAgICAgIH1cbiAgICAgIGlmIChjaGVja0Nyb3NzQXhpcykge1xuICAgICAgICBjb25zdCBzaWRlcyA9IGdldEFsaWdubWVudFNpZGVzKHBsYWNlbWVudCwgcmVjdHMsIHJ0bCk7XG4gICAgICAgIG92ZXJmbG93cy5wdXNoKG92ZXJmbG93W3NpZGVzWzBdXSwgb3ZlcmZsb3dbc2lkZXNbMV1dKTtcbiAgICAgIH1cbiAgICAgIG92ZXJmbG93c0RhdGEgPSBbLi4ub3ZlcmZsb3dzRGF0YSwge1xuICAgICAgICBwbGFjZW1lbnQsXG4gICAgICAgIG92ZXJmbG93c1xuICAgICAgfV07XG5cbiAgICAgIC8vIE9uZSBvciBtb3JlIHNpZGVzIGlzIG92ZXJmbG93aW5nLlxuICAgICAgaWYgKCFvdmVyZmxvd3MuZXZlcnkoc2lkZSA9PiBzaWRlIDw9IDApKSB7XG4gICAgICAgIHZhciBfbWlkZGxld2FyZURhdGEkZmxpcDIsIF9vdmVyZmxvd3NEYXRhJGZpbHRlcjtcbiAgICAgICAgY29uc3QgbmV4dEluZGV4ID0gKCgoX21pZGRsZXdhcmVEYXRhJGZsaXAyID0gbWlkZGxld2FyZURhdGEuZmxpcCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9taWRkbGV3YXJlRGF0YSRmbGlwMi5pbmRleCkgfHwgMCkgKyAxO1xuICAgICAgICBjb25zdCBuZXh0UGxhY2VtZW50ID0gcGxhY2VtZW50c1tuZXh0SW5kZXhdO1xuICAgICAgICBpZiAobmV4dFBsYWNlbWVudCkge1xuICAgICAgICAgIC8vIFRyeSBuZXh0IHBsYWNlbWVudCBhbmQgcmUtcnVuIHRoZSBsaWZlY3ljbGUuXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgaW5kZXg6IG5leHRJbmRleCxcbiAgICAgICAgICAgICAgb3ZlcmZsb3dzOiBvdmVyZmxvd3NEYXRhXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVzZXQ6IHtcbiAgICAgICAgICAgICAgcGxhY2VtZW50OiBuZXh0UGxhY2VtZW50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEZpcnN0LCBmaW5kIHRoZSBjYW5kaWRhdGVzIHRoYXQgZml0IG9uIHRoZSBtYWluQXhpcyBzaWRlIG9mIG92ZXJmbG93LFxuICAgICAgICAvLyB0aGVuIGZpbmQgdGhlIHBsYWNlbWVudCB0aGF0IGZpdHMgdGhlIGJlc3Qgb24gdGhlIG1haW4gY3Jvc3NBeGlzIHNpZGUuXG4gICAgICAgIGxldCByZXNldFBsYWNlbWVudCA9IChfb3ZlcmZsb3dzRGF0YSRmaWx0ZXIgPSBvdmVyZmxvd3NEYXRhLmZpbHRlcihkID0+IGQub3ZlcmZsb3dzWzBdIDw9IDApLnNvcnQoKGEsIGIpID0+IGEub3ZlcmZsb3dzWzFdIC0gYi5vdmVyZmxvd3NbMV0pWzBdKSA9PSBudWxsID8gdm9pZCAwIDogX292ZXJmbG93c0RhdGEkZmlsdGVyLnBsYWNlbWVudDtcblxuICAgICAgICAvLyBPdGhlcndpc2UgZmFsbGJhY2suXG4gICAgICAgIGlmICghcmVzZXRQbGFjZW1lbnQpIHtcbiAgICAgICAgICBzd2l0Y2ggKGZhbGxiYWNrU3RyYXRlZ3kpIHtcbiAgICAgICAgICAgIGNhc2UgJ2Jlc3RGaXQnOlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdmFyIF9vdmVyZmxvd3NEYXRhJGZpbHRlcjI7XG4gICAgICAgICAgICAgICAgY29uc3QgcGxhY2VtZW50ID0gKF9vdmVyZmxvd3NEYXRhJGZpbHRlcjIgPSBvdmVyZmxvd3NEYXRhLmZpbHRlcihkID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmIChoYXNGYWxsYmFja0F4aXNTaWRlRGlyZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRTaWRlQXhpcyA9IGdldFNpZGVBeGlzKGQucGxhY2VtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRTaWRlQXhpcyA9PT0gaW5pdGlhbFNpZGVBeGlzIHx8XG4gICAgICAgICAgICAgICAgICAgIC8vIENyZWF0ZSBhIGJpYXMgdG8gdGhlIGB5YCBzaWRlIGF4aXMgZHVlIHRvIGhvcml6b250YWxcbiAgICAgICAgICAgICAgICAgICAgLy8gcmVhZGluZyBkaXJlY3Rpb25zIGZhdm9yaW5nIGdyZWF0ZXIgd2lkdGguXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTaWRlQXhpcyA9PT0gJ3knO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfSkubWFwKGQgPT4gW2QucGxhY2VtZW50LCBkLm92ZXJmbG93cy5maWx0ZXIob3ZlcmZsb3cgPT4gb3ZlcmZsb3cgPiAwKS5yZWR1Y2UoKGFjYywgb3ZlcmZsb3cpID0+IGFjYyArIG92ZXJmbG93LCAwKV0pLnNvcnQoKGEsIGIpID0+IGFbMV0gLSBiWzFdKVswXSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9vdmVyZmxvd3NEYXRhJGZpbHRlcjJbMF07XG4gICAgICAgICAgICAgICAgaWYgKHBsYWNlbWVudCkge1xuICAgICAgICAgICAgICAgICAgcmVzZXRQbGFjZW1lbnQgPSBwbGFjZW1lbnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICdpbml0aWFsUGxhY2VtZW50JzpcbiAgICAgICAgICAgICAgcmVzZXRQbGFjZW1lbnQgPSBpbml0aWFsUGxhY2VtZW50O1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBsYWNlbWVudCAhPT0gcmVzZXRQbGFjZW1lbnQpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcmVzZXQ6IHtcbiAgICAgICAgICAgICAgcGxhY2VtZW50OiByZXNldFBsYWNlbWVudFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gIH07XG59O1xuXG5mdW5jdGlvbiBnZXRTaWRlT2Zmc2V0cyhvdmVyZmxvdywgcmVjdCkge1xuICByZXR1cm4ge1xuICAgIHRvcDogb3ZlcmZsb3cudG9wIC0gcmVjdC5oZWlnaHQsXG4gICAgcmlnaHQ6IG92ZXJmbG93LnJpZ2h0IC0gcmVjdC53aWR0aCxcbiAgICBib3R0b206IG92ZXJmbG93LmJvdHRvbSAtIHJlY3QuaGVpZ2h0LFxuICAgIGxlZnQ6IG92ZXJmbG93LmxlZnQgLSByZWN0LndpZHRoXG4gIH07XG59XG5mdW5jdGlvbiBpc0FueVNpZGVGdWxseUNsaXBwZWQob3ZlcmZsb3cpIHtcbiAgcmV0dXJuIHNpZGVzLnNvbWUoc2lkZSA9PiBvdmVyZmxvd1tzaWRlXSA+PSAwKTtcbn1cbi8qKlxuICogUHJvdmlkZXMgZGF0YSB0byBoaWRlIHRoZSBmbG9hdGluZyBlbGVtZW50IGluIGFwcGxpY2FibGUgc2l0dWF0aW9ucywgc3VjaCBhc1xuICogd2hlbiBpdCBpcyBub3QgaW4gdGhlIHNhbWUgY2xpcHBpbmcgY29udGV4dCBhcyB0aGUgcmVmZXJlbmNlIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvaGlkZVxuICovXG5jb25zdCBoaWRlID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdoaWRlJyxcbiAgICBvcHRpb25zLFxuICAgIGFzeW5jIGZuKHN0YXRlKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHJlY3RzXG4gICAgICB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHN0cmF0ZWd5ID0gJ3JlZmVyZW5jZUhpZGRlbicsXG4gICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9uc1xuICAgICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcbiAgICAgIHN3aXRjaCAoc3RyYXRlZ3kpIHtcbiAgICAgICAgY2FzZSAncmVmZXJlbmNlSGlkZGVuJzpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCBvdmVyZmxvdyA9IGF3YWl0IGRldGVjdE92ZXJmbG93KHN0YXRlLCB7XG4gICAgICAgICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9ucyxcbiAgICAgICAgICAgICAgZWxlbWVudENvbnRleHQ6ICdyZWZlcmVuY2UnXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnN0IG9mZnNldHMgPSBnZXRTaWRlT2Zmc2V0cyhvdmVyZmxvdywgcmVjdHMucmVmZXJlbmNlKTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICByZWZlcmVuY2VIaWRkZW5PZmZzZXRzOiBvZmZzZXRzLFxuICAgICAgICAgICAgICAgIHJlZmVyZW5jZUhpZGRlbjogaXNBbnlTaWRlRnVsbHlDbGlwcGVkKG9mZnNldHMpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICBjYXNlICdlc2NhcGVkJzpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCBvdmVyZmxvdyA9IGF3YWl0IGRldGVjdE92ZXJmbG93KHN0YXRlLCB7XG4gICAgICAgICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9ucyxcbiAgICAgICAgICAgICAgYWx0Qm91bmRhcnk6IHRydWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3Qgb2Zmc2V0cyA9IGdldFNpZGVPZmZzZXRzKG92ZXJmbG93LCByZWN0cy5mbG9hdGluZyk7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgZXNjYXBlZE9mZnNldHM6IG9mZnNldHMsXG4gICAgICAgICAgICAgICAgZXNjYXBlZDogaXNBbnlTaWRlRnVsbHlDbGlwcGVkKG9mZnNldHMpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHJldHVybiB7fTtcbiAgICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9O1xufTtcblxuZnVuY3Rpb24gZ2V0Qm91bmRpbmdSZWN0KHJlY3RzKSB7XG4gIGNvbnN0IG1pblggPSBtaW4oLi4ucmVjdHMubWFwKHJlY3QgPT4gcmVjdC5sZWZ0KSk7XG4gIGNvbnN0IG1pblkgPSBtaW4oLi4ucmVjdHMubWFwKHJlY3QgPT4gcmVjdC50b3ApKTtcbiAgY29uc3QgbWF4WCA9IG1heCguLi5yZWN0cy5tYXAocmVjdCA9PiByZWN0LnJpZ2h0KSk7XG4gIGNvbnN0IG1heFkgPSBtYXgoLi4ucmVjdHMubWFwKHJlY3QgPT4gcmVjdC5ib3R0b20pKTtcbiAgcmV0dXJuIHtcbiAgICB4OiBtaW5YLFxuICAgIHk6IG1pblksXG4gICAgd2lkdGg6IG1heFggLSBtaW5YLFxuICAgIGhlaWdodDogbWF4WSAtIG1pbllcbiAgfTtcbn1cbmZ1bmN0aW9uIGdldFJlY3RzQnlMaW5lKHJlY3RzKSB7XG4gIGNvbnN0IHNvcnRlZFJlY3RzID0gcmVjdHMuc2xpY2UoKS5zb3J0KChhLCBiKSA9PiBhLnkgLSBiLnkpO1xuICBjb25zdCBncm91cHMgPSBbXTtcbiAgbGV0IHByZXZSZWN0ID0gbnVsbDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBzb3J0ZWRSZWN0cy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHJlY3QgPSBzb3J0ZWRSZWN0c1tpXTtcbiAgICBpZiAoIXByZXZSZWN0IHx8IHJlY3QueSAtIHByZXZSZWN0LnkgPiBwcmV2UmVjdC5oZWlnaHQgLyAyKSB7XG4gICAgICBncm91cHMucHVzaChbcmVjdF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBncm91cHNbZ3JvdXBzLmxlbmd0aCAtIDFdLnB1c2gocmVjdCk7XG4gICAgfVxuICAgIHByZXZSZWN0ID0gcmVjdDtcbiAgfVxuICByZXR1cm4gZ3JvdXBzLm1hcChyZWN0ID0+IHJlY3RUb0NsaWVudFJlY3QoZ2V0Qm91bmRpbmdSZWN0KHJlY3QpKSk7XG59XG4vKipcbiAqIFByb3ZpZGVzIGltcHJvdmVkIHBvc2l0aW9uaW5nIGZvciBpbmxpbmUgcmVmZXJlbmNlIGVsZW1lbnRzIHRoYXQgY2FuIHNwYW5cbiAqIG92ZXIgbXVsdGlwbGUgbGluZXMsIHN1Y2ggYXMgaHlwZXJsaW5rcyBvciByYW5nZSBzZWxlY3Rpb25zLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2lubGluZVxuICovXG5jb25zdCBpbmxpbmUgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ2lubGluZScsXG4gICAgb3B0aW9ucyxcbiAgICBhc3luYyBmbihzdGF0ZSkge1xuICAgICAgY29uc3Qge1xuICAgICAgICBwbGFjZW1lbnQsXG4gICAgICAgIGVsZW1lbnRzLFxuICAgICAgICByZWN0cyxcbiAgICAgICAgcGxhdGZvcm0sXG4gICAgICAgIHN0cmF0ZWd5XG4gICAgICB9ID0gc3RhdGU7XG4gICAgICAvLyBBIE1vdXNlRXZlbnQncyBjbGllbnR7WCxZfSBjb29yZHMgY2FuIGJlIHVwIHRvIDIgcGl4ZWxzIG9mZiBhXG4gICAgICAvLyBDbGllbnRSZWN0J3MgYm91bmRzLCBkZXNwaXRlIHRoZSBldmVudCBsaXN0ZW5lciBiZWluZyB0cmlnZ2VyZWQuIEFcbiAgICAgIC8vIHBhZGRpbmcgb2YgMiBzZWVtcyB0byBoYW5kbGUgdGhpcyBpc3N1ZS5cbiAgICAgIGNvbnN0IHtcbiAgICAgICAgcGFkZGluZyA9IDIsXG4gICAgICAgIHgsXG4gICAgICAgIHlcbiAgICAgIH0gPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG4gICAgICBjb25zdCBuYXRpdmVDbGllbnRSZWN0cyA9IEFycmF5LmZyb20oKGF3YWl0IChwbGF0Zm9ybS5nZXRDbGllbnRSZWN0cyA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uZ2V0Q2xpZW50UmVjdHMoZWxlbWVudHMucmVmZXJlbmNlKSkpIHx8IFtdKTtcbiAgICAgIGNvbnN0IGNsaWVudFJlY3RzID0gZ2V0UmVjdHNCeUxpbmUobmF0aXZlQ2xpZW50UmVjdHMpO1xuICAgICAgY29uc3QgZmFsbGJhY2sgPSByZWN0VG9DbGllbnRSZWN0KGdldEJvdW5kaW5nUmVjdChuYXRpdmVDbGllbnRSZWN0cykpO1xuICAgICAgY29uc3QgcGFkZGluZ09iamVjdCA9IGdldFBhZGRpbmdPYmplY3QocGFkZGluZyk7XG4gICAgICBmdW5jdGlvbiBnZXRCb3VuZGluZ0NsaWVudFJlY3QoKSB7XG4gICAgICAgIC8vIFRoZXJlIGFyZSB0d28gcmVjdHMgYW5kIHRoZXkgYXJlIGRpc2pvaW5lZC5cbiAgICAgICAgaWYgKGNsaWVudFJlY3RzLmxlbmd0aCA9PT0gMiAmJiBjbGllbnRSZWN0c1swXS5sZWZ0ID4gY2xpZW50UmVjdHNbMV0ucmlnaHQgJiYgeCAhPSBudWxsICYmIHkgIT0gbnVsbCkge1xuICAgICAgICAgIC8vIEZpbmQgdGhlIGZpcnN0IHJlY3QgaW4gd2hpY2ggdGhlIHBvaW50IGlzIGZ1bGx5IGluc2lkZS5cbiAgICAgICAgICByZXR1cm4gY2xpZW50UmVjdHMuZmluZChyZWN0ID0+IHggPiByZWN0LmxlZnQgLSBwYWRkaW5nT2JqZWN0LmxlZnQgJiYgeCA8IHJlY3QucmlnaHQgKyBwYWRkaW5nT2JqZWN0LnJpZ2h0ICYmIHkgPiByZWN0LnRvcCAtIHBhZGRpbmdPYmplY3QudG9wICYmIHkgPCByZWN0LmJvdHRvbSArIHBhZGRpbmdPYmplY3QuYm90dG9tKSB8fCBmYWxsYmFjaztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRoZXJlIGFyZSAyIG9yIG1vcmUgY29ubmVjdGVkIHJlY3RzLlxuICAgICAgICBpZiAoY2xpZW50UmVjdHMubGVuZ3RoID49IDIpIHtcbiAgICAgICAgICBpZiAoZ2V0U2lkZUF4aXMocGxhY2VtZW50KSA9PT0gJ3knKSB7XG4gICAgICAgICAgICBjb25zdCBmaXJzdFJlY3QgPSBjbGllbnRSZWN0c1swXTtcbiAgICAgICAgICAgIGNvbnN0IGxhc3RSZWN0ID0gY2xpZW50UmVjdHNbY2xpZW50UmVjdHMubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICBjb25zdCBpc1RvcCA9IGdldFNpZGUocGxhY2VtZW50KSA9PT0gJ3RvcCc7XG4gICAgICAgICAgICBjb25zdCB0b3AgPSBmaXJzdFJlY3QudG9wO1xuICAgICAgICAgICAgY29uc3QgYm90dG9tID0gbGFzdFJlY3QuYm90dG9tO1xuICAgICAgICAgICAgY29uc3QgbGVmdCA9IGlzVG9wID8gZmlyc3RSZWN0LmxlZnQgOiBsYXN0UmVjdC5sZWZ0O1xuICAgICAgICAgICAgY29uc3QgcmlnaHQgPSBpc1RvcCA/IGZpcnN0UmVjdC5yaWdodCA6IGxhc3RSZWN0LnJpZ2h0O1xuICAgICAgICAgICAgY29uc3Qgd2lkdGggPSByaWdodCAtIGxlZnQ7XG4gICAgICAgICAgICBjb25zdCBoZWlnaHQgPSBib3R0b20gLSB0b3A7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICB0b3AsXG4gICAgICAgICAgICAgIGJvdHRvbSxcbiAgICAgICAgICAgICAgbGVmdCxcbiAgICAgICAgICAgICAgcmlnaHQsXG4gICAgICAgICAgICAgIHdpZHRoLFxuICAgICAgICAgICAgICBoZWlnaHQsXG4gICAgICAgICAgICAgIHg6IGxlZnQsXG4gICAgICAgICAgICAgIHk6IHRvcFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgaXNMZWZ0U2lkZSA9IGdldFNpZGUocGxhY2VtZW50KSA9PT0gJ2xlZnQnO1xuICAgICAgICAgIGNvbnN0IG1heFJpZ2h0ID0gbWF4KC4uLmNsaWVudFJlY3RzLm1hcChyZWN0ID0+IHJlY3QucmlnaHQpKTtcbiAgICAgICAgICBjb25zdCBtaW5MZWZ0ID0gbWluKC4uLmNsaWVudFJlY3RzLm1hcChyZWN0ID0+IHJlY3QubGVmdCkpO1xuICAgICAgICAgIGNvbnN0IG1lYXN1cmVSZWN0cyA9IGNsaWVudFJlY3RzLmZpbHRlcihyZWN0ID0+IGlzTGVmdFNpZGUgPyByZWN0LmxlZnQgPT09IG1pbkxlZnQgOiByZWN0LnJpZ2h0ID09PSBtYXhSaWdodCk7XG4gICAgICAgICAgY29uc3QgdG9wID0gbWVhc3VyZVJlY3RzWzBdLnRvcDtcbiAgICAgICAgICBjb25zdCBib3R0b20gPSBtZWFzdXJlUmVjdHNbbWVhc3VyZVJlY3RzLmxlbmd0aCAtIDFdLmJvdHRvbTtcbiAgICAgICAgICBjb25zdCBsZWZ0ID0gbWluTGVmdDtcbiAgICAgICAgICBjb25zdCByaWdodCA9IG1heFJpZ2h0O1xuICAgICAgICAgIGNvbnN0IHdpZHRoID0gcmlnaHQgLSBsZWZ0O1xuICAgICAgICAgIGNvbnN0IGhlaWdodCA9IGJvdHRvbSAtIHRvcDtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdG9wLFxuICAgICAgICAgICAgYm90dG9tLFxuICAgICAgICAgICAgbGVmdCxcbiAgICAgICAgICAgIHJpZ2h0LFxuICAgICAgICAgICAgd2lkdGgsXG4gICAgICAgICAgICBoZWlnaHQsXG4gICAgICAgICAgICB4OiBsZWZ0LFxuICAgICAgICAgICAgeTogdG9wXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsbGJhY2s7XG4gICAgICB9XG4gICAgICBjb25zdCByZXNldFJlY3RzID0gYXdhaXQgcGxhdGZvcm0uZ2V0RWxlbWVudFJlY3RzKHtcbiAgICAgICAgcmVmZXJlbmNlOiB7XG4gICAgICAgICAgZ2V0Qm91bmRpbmdDbGllbnRSZWN0XG4gICAgICAgIH0sXG4gICAgICAgIGZsb2F0aW5nOiBlbGVtZW50cy5mbG9hdGluZyxcbiAgICAgICAgc3RyYXRlZ3lcbiAgICAgIH0pO1xuICAgICAgaWYgKHJlY3RzLnJlZmVyZW5jZS54ICE9PSByZXNldFJlY3RzLnJlZmVyZW5jZS54IHx8IHJlY3RzLnJlZmVyZW5jZS55ICE9PSByZXNldFJlY3RzLnJlZmVyZW5jZS55IHx8IHJlY3RzLnJlZmVyZW5jZS53aWR0aCAhPT0gcmVzZXRSZWN0cy5yZWZlcmVuY2Uud2lkdGggfHwgcmVjdHMucmVmZXJlbmNlLmhlaWdodCAhPT0gcmVzZXRSZWN0cy5yZWZlcmVuY2UuaGVpZ2h0KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcmVzZXQ6IHtcbiAgICAgICAgICAgIHJlY3RzOiByZXNldFJlY3RzXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgfTtcbn07XG5cbi8vIEZvciB0eXBlIGJhY2t3YXJkcy1jb21wYXRpYmlsaXR5LCB0aGUgYE9mZnNldE9wdGlvbnNgIHR5cGUgd2FzIGFsc29cbi8vIERlcml2YWJsZS5cblxuYXN5bmMgZnVuY3Rpb24gY29udmVydFZhbHVlVG9Db29yZHMoc3RhdGUsIG9wdGlvbnMpIHtcbiAgY29uc3Qge1xuICAgIHBsYWNlbWVudCxcbiAgICBwbGF0Zm9ybSxcbiAgICBlbGVtZW50c1xuICB9ID0gc3RhdGU7XG4gIGNvbnN0IHJ0bCA9IGF3YWl0IChwbGF0Zm9ybS5pc1JUTCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uaXNSVEwoZWxlbWVudHMuZmxvYXRpbmcpKTtcbiAgY29uc3Qgc2lkZSA9IGdldFNpZGUocGxhY2VtZW50KTtcbiAgY29uc3QgYWxpZ25tZW50ID0gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCk7XG4gIGNvbnN0IGlzVmVydGljYWwgPSBnZXRTaWRlQXhpcyhwbGFjZW1lbnQpID09PSAneSc7XG4gIGNvbnN0IG1haW5BeGlzTXVsdGkgPSBbJ2xlZnQnLCAndG9wJ10uaW5jbHVkZXMoc2lkZSkgPyAtMSA6IDE7XG4gIGNvbnN0IGNyb3NzQXhpc011bHRpID0gcnRsICYmIGlzVmVydGljYWwgPyAtMSA6IDE7XG4gIGNvbnN0IHJhd1ZhbHVlID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItY29uc3RcbiAgbGV0IHtcbiAgICBtYWluQXhpcyxcbiAgICBjcm9zc0F4aXMsXG4gICAgYWxpZ25tZW50QXhpc1xuICB9ID0gdHlwZW9mIHJhd1ZhbHVlID09PSAnbnVtYmVyJyA/IHtcbiAgICBtYWluQXhpczogcmF3VmFsdWUsXG4gICAgY3Jvc3NBeGlzOiAwLFxuICAgIGFsaWdubWVudEF4aXM6IG51bGxcbiAgfSA6IHtcbiAgICBtYWluQXhpczogcmF3VmFsdWUubWFpbkF4aXMgfHwgMCxcbiAgICBjcm9zc0F4aXM6IHJhd1ZhbHVlLmNyb3NzQXhpcyB8fCAwLFxuICAgIGFsaWdubWVudEF4aXM6IHJhd1ZhbHVlLmFsaWdubWVudEF4aXNcbiAgfTtcbiAgaWYgKGFsaWdubWVudCAmJiB0eXBlb2YgYWxpZ25tZW50QXhpcyA9PT0gJ251bWJlcicpIHtcbiAgICBjcm9zc0F4aXMgPSBhbGlnbm1lbnQgPT09ICdlbmQnID8gYWxpZ25tZW50QXhpcyAqIC0xIDogYWxpZ25tZW50QXhpcztcbiAgfVxuICByZXR1cm4gaXNWZXJ0aWNhbCA/IHtcbiAgICB4OiBjcm9zc0F4aXMgKiBjcm9zc0F4aXNNdWx0aSxcbiAgICB5OiBtYWluQXhpcyAqIG1haW5BeGlzTXVsdGlcbiAgfSA6IHtcbiAgICB4OiBtYWluQXhpcyAqIG1haW5BeGlzTXVsdGksXG4gICAgeTogY3Jvc3NBeGlzICogY3Jvc3NBeGlzTXVsdGlcbiAgfTtcbn1cblxuLyoqXG4gKiBNb2RpZmllcyB0aGUgcGxhY2VtZW50IGJ5IHRyYW5zbGF0aW5nIHRoZSBmbG9hdGluZyBlbGVtZW50IGFsb25nIHRoZVxuICogc3BlY2lmaWVkIGF4ZXMuXG4gKiBBIG51bWJlciAoc2hvcnRoYW5kIGZvciBgbWFpbkF4aXNgIG9yIGRpc3RhbmNlKSwgb3IgYW4gYXhlcyBjb25maWd1cmF0aW9uXG4gKiBvYmplY3QgbWF5IGJlIHBhc3NlZC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9vZmZzZXRcbiAqL1xuY29uc3Qgb2Zmc2V0ID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSAwO1xuICB9XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ29mZnNldCcsXG4gICAgb3B0aW9ucyxcbiAgICBhc3luYyBmbihzdGF0ZSkge1xuICAgICAgdmFyIF9taWRkbGV3YXJlRGF0YSRvZmZzZSwgX21pZGRsZXdhcmVEYXRhJGFycm93O1xuICAgICAgY29uc3Qge1xuICAgICAgICB4LFxuICAgICAgICB5LFxuICAgICAgICBwbGFjZW1lbnQsXG4gICAgICAgIG1pZGRsZXdhcmVEYXRhXG4gICAgICB9ID0gc3RhdGU7XG4gICAgICBjb25zdCBkaWZmQ29vcmRzID0gYXdhaXQgY29udmVydFZhbHVlVG9Db29yZHMoc3RhdGUsIG9wdGlvbnMpO1xuXG4gICAgICAvLyBJZiB0aGUgcGxhY2VtZW50IGlzIHRoZSBzYW1lIGFuZCB0aGUgYXJyb3cgY2F1c2VkIGFuIGFsaWdubWVudCBvZmZzZXRcbiAgICAgIC8vIHRoZW4gd2UgZG9uJ3QgbmVlZCB0byBjaGFuZ2UgdGhlIHBvc2l0aW9uaW5nIGNvb3JkaW5hdGVzLlxuICAgICAgaWYgKHBsYWNlbWVudCA9PT0gKChfbWlkZGxld2FyZURhdGEkb2Zmc2UgPSBtaWRkbGV3YXJlRGF0YS5vZmZzZXQpID09IG51bGwgPyB2b2lkIDAgOiBfbWlkZGxld2FyZURhdGEkb2Zmc2UucGxhY2VtZW50KSAmJiAoX21pZGRsZXdhcmVEYXRhJGFycm93ID0gbWlkZGxld2FyZURhdGEuYXJyb3cpICE9IG51bGwgJiYgX21pZGRsZXdhcmVEYXRhJGFycm93LmFsaWdubWVudE9mZnNldCkge1xuICAgICAgICByZXR1cm4ge307XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICB4OiB4ICsgZGlmZkNvb3Jkcy54LFxuICAgICAgICB5OiB5ICsgZGlmZkNvb3Jkcy55LFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgLi4uZGlmZkNvb3JkcyxcbiAgICAgICAgICBwbGFjZW1lbnRcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG4gIH07XG59O1xuXG4vKipcbiAqIE9wdGltaXplcyB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCBieSBzaGlmdGluZyBpdCBpbiBvcmRlciB0b1xuICoga2VlcCBpdCBpbiB2aWV3IHdoZW4gaXQgd2lsbCBvdmVyZmxvdyB0aGUgY2xpcHBpbmcgYm91bmRhcnkuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3Mvc2hpZnRcbiAqL1xuY29uc3Qgc2hpZnQgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ3NoaWZ0JyxcbiAgICBvcHRpb25zLFxuICAgIGFzeW5jIGZuKHN0YXRlKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHgsXG4gICAgICAgIHksXG4gICAgICAgIHBsYWNlbWVudFxuICAgICAgfSA9IHN0YXRlO1xuICAgICAgY29uc3Qge1xuICAgICAgICBtYWluQXhpczogY2hlY2tNYWluQXhpcyA9IHRydWUsXG4gICAgICAgIGNyb3NzQXhpczogY2hlY2tDcm9zc0F4aXMgPSBmYWxzZSxcbiAgICAgICAgbGltaXRlciA9IHtcbiAgICAgICAgICBmbjogX3JlZiA9PiB7XG4gICAgICAgICAgICBsZXQge1xuICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICB5XG4gICAgICAgICAgICB9ID0gX3JlZjtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgIHlcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICAuLi5kZXRlY3RPdmVyZmxvd09wdGlvbnNcbiAgICAgIH0gPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG4gICAgICBjb25zdCBjb29yZHMgPSB7XG4gICAgICAgIHgsXG4gICAgICAgIHlcbiAgICAgIH07XG4gICAgICBjb25zdCBvdmVyZmxvdyA9IGF3YWl0IGRldGVjdE92ZXJmbG93KHN0YXRlLCBkZXRlY3RPdmVyZmxvd09wdGlvbnMpO1xuICAgICAgY29uc3QgY3Jvc3NBeGlzID0gZ2V0U2lkZUF4aXMoZ2V0U2lkZShwbGFjZW1lbnQpKTtcbiAgICAgIGNvbnN0IG1haW5BeGlzID0gZ2V0T3Bwb3NpdGVBeGlzKGNyb3NzQXhpcyk7XG4gICAgICBsZXQgbWFpbkF4aXNDb29yZCA9IGNvb3Jkc1ttYWluQXhpc107XG4gICAgICBsZXQgY3Jvc3NBeGlzQ29vcmQgPSBjb29yZHNbY3Jvc3NBeGlzXTtcbiAgICAgIGlmIChjaGVja01haW5BeGlzKSB7XG4gICAgICAgIGNvbnN0IG1pblNpZGUgPSBtYWluQXhpcyA9PT0gJ3knID8gJ3RvcCcgOiAnbGVmdCc7XG4gICAgICAgIGNvbnN0IG1heFNpZGUgPSBtYWluQXhpcyA9PT0gJ3knID8gJ2JvdHRvbScgOiAncmlnaHQnO1xuICAgICAgICBjb25zdCBtaW4gPSBtYWluQXhpc0Nvb3JkICsgb3ZlcmZsb3dbbWluU2lkZV07XG4gICAgICAgIGNvbnN0IG1heCA9IG1haW5BeGlzQ29vcmQgLSBvdmVyZmxvd1ttYXhTaWRlXTtcbiAgICAgICAgbWFpbkF4aXNDb29yZCA9IGNsYW1wKG1pbiwgbWFpbkF4aXNDb29yZCwgbWF4KTtcbiAgICAgIH1cbiAgICAgIGlmIChjaGVja0Nyb3NzQXhpcykge1xuICAgICAgICBjb25zdCBtaW5TaWRlID0gY3Jvc3NBeGlzID09PSAneScgPyAndG9wJyA6ICdsZWZ0JztcbiAgICAgICAgY29uc3QgbWF4U2lkZSA9IGNyb3NzQXhpcyA9PT0gJ3knID8gJ2JvdHRvbScgOiAncmlnaHQnO1xuICAgICAgICBjb25zdCBtaW4gPSBjcm9zc0F4aXNDb29yZCArIG92ZXJmbG93W21pblNpZGVdO1xuICAgICAgICBjb25zdCBtYXggPSBjcm9zc0F4aXNDb29yZCAtIG92ZXJmbG93W21heFNpZGVdO1xuICAgICAgICBjcm9zc0F4aXNDb29yZCA9IGNsYW1wKG1pbiwgY3Jvc3NBeGlzQ29vcmQsIG1heCk7XG4gICAgICB9XG4gICAgICBjb25zdCBsaW1pdGVkQ29vcmRzID0gbGltaXRlci5mbih7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBbbWFpbkF4aXNdOiBtYWluQXhpc0Nvb3JkLFxuICAgICAgICBbY3Jvc3NBeGlzXTogY3Jvc3NBeGlzQ29vcmRcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ubGltaXRlZENvb3JkcyxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIHg6IGxpbWl0ZWRDb29yZHMueCAtIHgsXG4gICAgICAgICAgeTogbGltaXRlZENvb3Jkcy55IC0geSxcbiAgICAgICAgICBlbmFibGVkOiB7XG4gICAgICAgICAgICBbbWFpbkF4aXNdOiBjaGVja01haW5BeGlzLFxuICAgICAgICAgICAgW2Nyb3NzQXhpc106IGNoZWNrQ3Jvc3NBeGlzXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cbiAgfTtcbn07XG4vKipcbiAqIEJ1aWx0LWluIGBsaW1pdGVyYCB0aGF0IHdpbGwgc3RvcCBgc2hpZnQoKWAgYXQgYSBjZXJ0YWluIHBvaW50LlxuICovXG5jb25zdCBsaW1pdFNoaWZ0ID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG9wdGlvbnMsXG4gICAgZm4oc3RhdGUpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgeCxcbiAgICAgICAgeSxcbiAgICAgICAgcGxhY2VtZW50LFxuICAgICAgICByZWN0cyxcbiAgICAgICAgbWlkZGxld2FyZURhdGFcbiAgICAgIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgb2Zmc2V0ID0gMCxcbiAgICAgICAgbWFpbkF4aXM6IGNoZWNrTWFpbkF4aXMgPSB0cnVlLFxuICAgICAgICBjcm9zc0F4aXM6IGNoZWNrQ3Jvc3NBeGlzID0gdHJ1ZVxuICAgICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcbiAgICAgIGNvbnN0IGNvb3JkcyA9IHtcbiAgICAgICAgeCxcbiAgICAgICAgeVxuICAgICAgfTtcbiAgICAgIGNvbnN0IGNyb3NzQXhpcyA9IGdldFNpZGVBeGlzKHBsYWNlbWVudCk7XG4gICAgICBjb25zdCBtYWluQXhpcyA9IGdldE9wcG9zaXRlQXhpcyhjcm9zc0F4aXMpO1xuICAgICAgbGV0IG1haW5BeGlzQ29vcmQgPSBjb29yZHNbbWFpbkF4aXNdO1xuICAgICAgbGV0IGNyb3NzQXhpc0Nvb3JkID0gY29vcmRzW2Nyb3NzQXhpc107XG4gICAgICBjb25zdCByYXdPZmZzZXQgPSBldmFsdWF0ZShvZmZzZXQsIHN0YXRlKTtcbiAgICAgIGNvbnN0IGNvbXB1dGVkT2Zmc2V0ID0gdHlwZW9mIHJhd09mZnNldCA9PT0gJ251bWJlcicgPyB7XG4gICAgICAgIG1haW5BeGlzOiByYXdPZmZzZXQsXG4gICAgICAgIGNyb3NzQXhpczogMFxuICAgICAgfSA6IHtcbiAgICAgICAgbWFpbkF4aXM6IDAsXG4gICAgICAgIGNyb3NzQXhpczogMCxcbiAgICAgICAgLi4ucmF3T2Zmc2V0XG4gICAgICB9O1xuICAgICAgaWYgKGNoZWNrTWFpbkF4aXMpIHtcbiAgICAgICAgY29uc3QgbGVuID0gbWFpbkF4aXMgPT09ICd5JyA/ICdoZWlnaHQnIDogJ3dpZHRoJztcbiAgICAgICAgY29uc3QgbGltaXRNaW4gPSByZWN0cy5yZWZlcmVuY2VbbWFpbkF4aXNdIC0gcmVjdHMuZmxvYXRpbmdbbGVuXSArIGNvbXB1dGVkT2Zmc2V0Lm1haW5BeGlzO1xuICAgICAgICBjb25zdCBsaW1pdE1heCA9IHJlY3RzLnJlZmVyZW5jZVttYWluQXhpc10gKyByZWN0cy5yZWZlcmVuY2VbbGVuXSAtIGNvbXB1dGVkT2Zmc2V0Lm1haW5BeGlzO1xuICAgICAgICBpZiAobWFpbkF4aXNDb29yZCA8IGxpbWl0TWluKSB7XG4gICAgICAgICAgbWFpbkF4aXNDb29yZCA9IGxpbWl0TWluO1xuICAgICAgICB9IGVsc2UgaWYgKG1haW5BeGlzQ29vcmQgPiBsaW1pdE1heCkge1xuICAgICAgICAgIG1haW5BeGlzQ29vcmQgPSBsaW1pdE1heDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGNoZWNrQ3Jvc3NBeGlzKSB7XG4gICAgICAgIHZhciBfbWlkZGxld2FyZURhdGEkb2Zmc2UsIF9taWRkbGV3YXJlRGF0YSRvZmZzZTI7XG4gICAgICAgIGNvbnN0IGxlbiA9IG1haW5BeGlzID09PSAneScgPyAnd2lkdGgnIDogJ2hlaWdodCc7XG4gICAgICAgIGNvbnN0IGlzT3JpZ2luU2lkZSA9IFsndG9wJywgJ2xlZnQnXS5pbmNsdWRlcyhnZXRTaWRlKHBsYWNlbWVudCkpO1xuICAgICAgICBjb25zdCBsaW1pdE1pbiA9IHJlY3RzLnJlZmVyZW5jZVtjcm9zc0F4aXNdIC0gcmVjdHMuZmxvYXRpbmdbbGVuXSArIChpc09yaWdpblNpZGUgPyAoKF9taWRkbGV3YXJlRGF0YSRvZmZzZSA9IG1pZGRsZXdhcmVEYXRhLm9mZnNldCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9taWRkbGV3YXJlRGF0YSRvZmZzZVtjcm9zc0F4aXNdKSB8fCAwIDogMCkgKyAoaXNPcmlnaW5TaWRlID8gMCA6IGNvbXB1dGVkT2Zmc2V0LmNyb3NzQXhpcyk7XG4gICAgICAgIGNvbnN0IGxpbWl0TWF4ID0gcmVjdHMucmVmZXJlbmNlW2Nyb3NzQXhpc10gKyByZWN0cy5yZWZlcmVuY2VbbGVuXSArIChpc09yaWdpblNpZGUgPyAwIDogKChfbWlkZGxld2FyZURhdGEkb2Zmc2UyID0gbWlkZGxld2FyZURhdGEub2Zmc2V0KSA9PSBudWxsID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJG9mZnNlMltjcm9zc0F4aXNdKSB8fCAwKSAtIChpc09yaWdpblNpZGUgPyBjb21wdXRlZE9mZnNldC5jcm9zc0F4aXMgOiAwKTtcbiAgICAgICAgaWYgKGNyb3NzQXhpc0Nvb3JkIDwgbGltaXRNaW4pIHtcbiAgICAgICAgICBjcm9zc0F4aXNDb29yZCA9IGxpbWl0TWluO1xuICAgICAgICB9IGVsc2UgaWYgKGNyb3NzQXhpc0Nvb3JkID4gbGltaXRNYXgpIHtcbiAgICAgICAgICBjcm9zc0F4aXNDb29yZCA9IGxpbWl0TWF4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICBbbWFpbkF4aXNdOiBtYWluQXhpc0Nvb3JkLFxuICAgICAgICBbY3Jvc3NBeGlzXTogY3Jvc3NBeGlzQ29vcmRcbiAgICAgIH07XG4gICAgfVxuICB9O1xufTtcblxuLyoqXG4gKiBQcm92aWRlcyBkYXRhIHRoYXQgYWxsb3dzIHlvdSB0byBjaGFuZ2UgdGhlIHNpemUgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQg4oCUXG4gKiBmb3IgaW5zdGFuY2UsIHByZXZlbnQgaXQgZnJvbSBvdmVyZmxvd2luZyB0aGUgY2xpcHBpbmcgYm91bmRhcnkgb3IgbWF0Y2ggdGhlXG4gKiB3aWR0aCBvZiB0aGUgcmVmZXJlbmNlIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3Mvc2l6ZVxuICovXG5jb25zdCBzaXplID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdzaXplJyxcbiAgICBvcHRpb25zLFxuICAgIGFzeW5jIGZuKHN0YXRlKSB7XG4gICAgICB2YXIgX3N0YXRlJG1pZGRsZXdhcmVEYXRhLCBfc3RhdGUkbWlkZGxld2FyZURhdGEyO1xuICAgICAgY29uc3Qge1xuICAgICAgICBwbGFjZW1lbnQsXG4gICAgICAgIHJlY3RzLFxuICAgICAgICBwbGF0Zm9ybSxcbiAgICAgICAgZWxlbWVudHNcbiAgICAgIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgYXBwbHkgPSAoKSA9PiB7fSxcbiAgICAgICAgLi4uZGV0ZWN0T3ZlcmZsb3dPcHRpb25zXG4gICAgICB9ID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpO1xuICAgICAgY29uc3Qgb3ZlcmZsb3cgPSBhd2FpdCBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwgZGV0ZWN0T3ZlcmZsb3dPcHRpb25zKTtcbiAgICAgIGNvbnN0IHNpZGUgPSBnZXRTaWRlKHBsYWNlbWVudCk7XG4gICAgICBjb25zdCBhbGlnbm1lbnQgPSBnZXRBbGlnbm1lbnQocGxhY2VtZW50KTtcbiAgICAgIGNvbnN0IGlzWUF4aXMgPSBnZXRTaWRlQXhpcyhwbGFjZW1lbnQpID09PSAneSc7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHdpZHRoLFxuICAgICAgICBoZWlnaHRcbiAgICAgIH0gPSByZWN0cy5mbG9hdGluZztcbiAgICAgIGxldCBoZWlnaHRTaWRlO1xuICAgICAgbGV0IHdpZHRoU2lkZTtcbiAgICAgIGlmIChzaWRlID09PSAndG9wJyB8fCBzaWRlID09PSAnYm90dG9tJykge1xuICAgICAgICBoZWlnaHRTaWRlID0gc2lkZTtcbiAgICAgICAgd2lkdGhTaWRlID0gYWxpZ25tZW50ID09PSAoKGF3YWl0IChwbGF0Zm9ybS5pc1JUTCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uaXNSVEwoZWxlbWVudHMuZmxvYXRpbmcpKSkgPyAnc3RhcnQnIDogJ2VuZCcpID8gJ2xlZnQnIDogJ3JpZ2h0JztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHdpZHRoU2lkZSA9IHNpZGU7XG4gICAgICAgIGhlaWdodFNpZGUgPSBhbGlnbm1lbnQgPT09ICdlbmQnID8gJ3RvcCcgOiAnYm90dG9tJztcbiAgICAgIH1cbiAgICAgIGNvbnN0IG1heGltdW1DbGlwcGluZ0hlaWdodCA9IGhlaWdodCAtIG92ZXJmbG93LnRvcCAtIG92ZXJmbG93LmJvdHRvbTtcbiAgICAgIGNvbnN0IG1heGltdW1DbGlwcGluZ1dpZHRoID0gd2lkdGggLSBvdmVyZmxvdy5sZWZ0IC0gb3ZlcmZsb3cucmlnaHQ7XG4gICAgICBjb25zdCBvdmVyZmxvd0F2YWlsYWJsZUhlaWdodCA9IG1pbihoZWlnaHQgLSBvdmVyZmxvd1toZWlnaHRTaWRlXSwgbWF4aW11bUNsaXBwaW5nSGVpZ2h0KTtcbiAgICAgIGNvbnN0IG92ZXJmbG93QXZhaWxhYmxlV2lkdGggPSBtaW4od2lkdGggLSBvdmVyZmxvd1t3aWR0aFNpZGVdLCBtYXhpbXVtQ2xpcHBpbmdXaWR0aCk7XG4gICAgICBjb25zdCBub1NoaWZ0ID0gIXN0YXRlLm1pZGRsZXdhcmVEYXRhLnNoaWZ0O1xuICAgICAgbGV0IGF2YWlsYWJsZUhlaWdodCA9IG92ZXJmbG93QXZhaWxhYmxlSGVpZ2h0O1xuICAgICAgbGV0IGF2YWlsYWJsZVdpZHRoID0gb3ZlcmZsb3dBdmFpbGFibGVXaWR0aDtcbiAgICAgIGlmICgoX3N0YXRlJG1pZGRsZXdhcmVEYXRhID0gc3RhdGUubWlkZGxld2FyZURhdGEuc2hpZnQpICE9IG51bGwgJiYgX3N0YXRlJG1pZGRsZXdhcmVEYXRhLmVuYWJsZWQueCkge1xuICAgICAgICBhdmFpbGFibGVXaWR0aCA9IG1heGltdW1DbGlwcGluZ1dpZHRoO1xuICAgICAgfVxuICAgICAgaWYgKChfc3RhdGUkbWlkZGxld2FyZURhdGEyID0gc3RhdGUubWlkZGxld2FyZURhdGEuc2hpZnQpICE9IG51bGwgJiYgX3N0YXRlJG1pZGRsZXdhcmVEYXRhMi5lbmFibGVkLnkpIHtcbiAgICAgICAgYXZhaWxhYmxlSGVpZ2h0ID0gbWF4aW11bUNsaXBwaW5nSGVpZ2h0O1xuICAgICAgfVxuICAgICAgaWYgKG5vU2hpZnQgJiYgIWFsaWdubWVudCkge1xuICAgICAgICBjb25zdCB4TWluID0gbWF4KG92ZXJmbG93LmxlZnQsIDApO1xuICAgICAgICBjb25zdCB4TWF4ID0gbWF4KG92ZXJmbG93LnJpZ2h0LCAwKTtcbiAgICAgICAgY29uc3QgeU1pbiA9IG1heChvdmVyZmxvdy50b3AsIDApO1xuICAgICAgICBjb25zdCB5TWF4ID0gbWF4KG92ZXJmbG93LmJvdHRvbSwgMCk7XG4gICAgICAgIGlmIChpc1lBeGlzKSB7XG4gICAgICAgICAgYXZhaWxhYmxlV2lkdGggPSB3aWR0aCAtIDIgKiAoeE1pbiAhPT0gMCB8fCB4TWF4ICE9PSAwID8geE1pbiArIHhNYXggOiBtYXgob3ZlcmZsb3cubGVmdCwgb3ZlcmZsb3cucmlnaHQpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhdmFpbGFibGVIZWlnaHQgPSBoZWlnaHQgLSAyICogKHlNaW4gIT09IDAgfHwgeU1heCAhPT0gMCA/IHlNaW4gKyB5TWF4IDogbWF4KG92ZXJmbG93LnRvcCwgb3ZlcmZsb3cuYm90dG9tKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGF3YWl0IGFwcGx5KHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGF2YWlsYWJsZVdpZHRoLFxuICAgICAgICBhdmFpbGFibGVIZWlnaHRcbiAgICAgIH0pO1xuICAgICAgY29uc3QgbmV4dERpbWVuc2lvbnMgPSBhd2FpdCBwbGF0Zm9ybS5nZXREaW1lbnNpb25zKGVsZW1lbnRzLmZsb2F0aW5nKTtcbiAgICAgIGlmICh3aWR0aCAhPT0gbmV4dERpbWVuc2lvbnMud2lkdGggfHwgaGVpZ2h0ICE9PSBuZXh0RGltZW5zaW9ucy5oZWlnaHQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICByZXNldDoge1xuICAgICAgICAgICAgcmVjdHM6IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IHsgYXJyb3csIGF1dG9QbGFjZW1lbnQsIGNvbXB1dGVQb3NpdGlvbiwgZGV0ZWN0T3ZlcmZsb3csIGZsaXAsIGhpZGUsIGlubGluZSwgbGltaXRTaGlmdCwgb2Zmc2V0LCBzaGlmdCwgc2l6ZSB9O1xuIiwiZnVuY3Rpb24gaGFzV2luZG93KCkge1xuICByZXR1cm4gdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCc7XG59XG5mdW5jdGlvbiBnZXROb2RlTmFtZShub2RlKSB7XG4gIGlmIChpc05vZGUobm9kZSkpIHtcbiAgICByZXR1cm4gKG5vZGUubm9kZU5hbWUgfHwgJycpLnRvTG93ZXJDYXNlKCk7XG4gIH1cbiAgLy8gTW9ja2VkIG5vZGVzIGluIHRlc3RpbmcgZW52aXJvbm1lbnRzIG1heSBub3QgYmUgaW5zdGFuY2VzIG9mIE5vZGUuIEJ5XG4gIC8vIHJldHVybmluZyBgI2RvY3VtZW50YCBhbiBpbmZpbml0ZSBsb29wIHdvbid0IG9jY3VyLlxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmxvYXRpbmctdWkvZmxvYXRpbmctdWkvaXNzdWVzLzIzMTdcbiAgcmV0dXJuICcjZG9jdW1lbnQnO1xufVxuZnVuY3Rpb24gZ2V0V2luZG93KG5vZGUpIHtcbiAgdmFyIF9ub2RlJG93bmVyRG9jdW1lbnQ7XG4gIHJldHVybiAobm9kZSA9PSBudWxsIHx8IChfbm9kZSRvd25lckRvY3VtZW50ID0gbm9kZS5vd25lckRvY3VtZW50KSA9PSBudWxsID8gdm9pZCAwIDogX25vZGUkb3duZXJEb2N1bWVudC5kZWZhdWx0VmlldykgfHwgd2luZG93O1xufVxuZnVuY3Rpb24gZ2V0RG9jdW1lbnRFbGVtZW50KG5vZGUpIHtcbiAgdmFyIF9yZWY7XG4gIHJldHVybiAoX3JlZiA9IChpc05vZGUobm9kZSkgPyBub2RlLm93bmVyRG9jdW1lbnQgOiBub2RlLmRvY3VtZW50KSB8fCB3aW5kb3cuZG9jdW1lbnQpID09IG51bGwgPyB2b2lkIDAgOiBfcmVmLmRvY3VtZW50RWxlbWVudDtcbn1cbmZ1bmN0aW9uIGlzTm9kZSh2YWx1ZSkge1xuICBpZiAoIWhhc1dpbmRvdygpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIE5vZGUgfHwgdmFsdWUgaW5zdGFuY2VvZiBnZXRXaW5kb3codmFsdWUpLk5vZGU7XG59XG5mdW5jdGlvbiBpc0VsZW1lbnQodmFsdWUpIHtcbiAgaWYgKCFoYXNXaW5kb3coKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBFbGVtZW50IHx8IHZhbHVlIGluc3RhbmNlb2YgZ2V0V2luZG93KHZhbHVlKS5FbGVtZW50O1xufVxuZnVuY3Rpb24gaXNIVE1MRWxlbWVudCh2YWx1ZSkge1xuICBpZiAoIWhhc1dpbmRvdygpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50IHx8IHZhbHVlIGluc3RhbmNlb2YgZ2V0V2luZG93KHZhbHVlKS5IVE1MRWxlbWVudDtcbn1cbmZ1bmN0aW9uIGlzU2hhZG93Um9vdCh2YWx1ZSkge1xuICBpZiAoIWhhc1dpbmRvdygpIHx8IHR5cGVvZiBTaGFkb3dSb290ID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBTaGFkb3dSb290IHx8IHZhbHVlIGluc3RhbmNlb2YgZ2V0V2luZG93KHZhbHVlKS5TaGFkb3dSb290O1xufVxuZnVuY3Rpb24gaXNPdmVyZmxvd0VsZW1lbnQoZWxlbWVudCkge1xuICBjb25zdCB7XG4gICAgb3ZlcmZsb3csXG4gICAgb3ZlcmZsb3dYLFxuICAgIG92ZXJmbG93WSxcbiAgICBkaXNwbGF5XG4gIH0gPSBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpO1xuICByZXR1cm4gL2F1dG98c2Nyb2xsfG92ZXJsYXl8aGlkZGVufGNsaXAvLnRlc3Qob3ZlcmZsb3cgKyBvdmVyZmxvd1kgKyBvdmVyZmxvd1gpICYmICFbJ2lubGluZScsICdjb250ZW50cyddLmluY2x1ZGVzKGRpc3BsYXkpO1xufVxuZnVuY3Rpb24gaXNUYWJsZUVsZW1lbnQoZWxlbWVudCkge1xuICByZXR1cm4gWyd0YWJsZScsICd0ZCcsICd0aCddLmluY2x1ZGVzKGdldE5vZGVOYW1lKGVsZW1lbnQpKTtcbn1cbmZ1bmN0aW9uIGlzVG9wTGF5ZXIoZWxlbWVudCkge1xuICByZXR1cm4gWyc6cG9wb3Zlci1vcGVuJywgJzptb2RhbCddLnNvbWUoc2VsZWN0b3IgPT4ge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gZWxlbWVudC5tYXRjaGVzKHNlbGVjdG9yKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9KTtcbn1cbmZ1bmN0aW9uIGlzQ29udGFpbmluZ0Jsb2NrKGVsZW1lbnRPckNzcykge1xuICBjb25zdCB3ZWJraXQgPSBpc1dlYktpdCgpO1xuICBjb25zdCBjc3MgPSBpc0VsZW1lbnQoZWxlbWVudE9yQ3NzKSA/IGdldENvbXB1dGVkU3R5bGUoZWxlbWVudE9yQ3NzKSA6IGVsZW1lbnRPckNzcztcblxuICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvQ29udGFpbmluZ19ibG9jayNpZGVudGlmeWluZ190aGVfY29udGFpbmluZ19ibG9ja1xuICAvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLXRyYW5zZm9ybXMtMi8jaW5kaXZpZHVhbC10cmFuc2Zvcm1zXG4gIHJldHVybiBbJ3RyYW5zZm9ybScsICd0cmFuc2xhdGUnLCAnc2NhbGUnLCAncm90YXRlJywgJ3BlcnNwZWN0aXZlJ10uc29tZSh2YWx1ZSA9PiBjc3NbdmFsdWVdID8gY3NzW3ZhbHVlXSAhPT0gJ25vbmUnIDogZmFsc2UpIHx8IChjc3MuY29udGFpbmVyVHlwZSA/IGNzcy5jb250YWluZXJUeXBlICE9PSAnbm9ybWFsJyA6IGZhbHNlKSB8fCAhd2Via2l0ICYmIChjc3MuYmFja2Ryb3BGaWx0ZXIgPyBjc3MuYmFja2Ryb3BGaWx0ZXIgIT09ICdub25lJyA6IGZhbHNlKSB8fCAhd2Via2l0ICYmIChjc3MuZmlsdGVyID8gY3NzLmZpbHRlciAhPT0gJ25vbmUnIDogZmFsc2UpIHx8IFsndHJhbnNmb3JtJywgJ3RyYW5zbGF0ZScsICdzY2FsZScsICdyb3RhdGUnLCAncGVyc3BlY3RpdmUnLCAnZmlsdGVyJ10uc29tZSh2YWx1ZSA9PiAoY3NzLndpbGxDaGFuZ2UgfHwgJycpLmluY2x1ZGVzKHZhbHVlKSkgfHwgWydwYWludCcsICdsYXlvdXQnLCAnc3RyaWN0JywgJ2NvbnRlbnQnXS5zb21lKHZhbHVlID0+IChjc3MuY29udGFpbiB8fCAnJykuaW5jbHVkZXModmFsdWUpKTtcbn1cbmZ1bmN0aW9uIGdldENvbnRhaW5pbmdCbG9jayhlbGVtZW50KSB7XG4gIGxldCBjdXJyZW50Tm9kZSA9IGdldFBhcmVudE5vZGUoZWxlbWVudCk7XG4gIHdoaWxlIChpc0hUTUxFbGVtZW50KGN1cnJlbnROb2RlKSAmJiAhaXNMYXN0VHJhdmVyc2FibGVOb2RlKGN1cnJlbnROb2RlKSkge1xuICAgIGlmIChpc0NvbnRhaW5pbmdCbG9jayhjdXJyZW50Tm9kZSkpIHtcbiAgICAgIHJldHVybiBjdXJyZW50Tm9kZTtcbiAgICB9IGVsc2UgaWYgKGlzVG9wTGF5ZXIoY3VycmVudE5vZGUpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY3VycmVudE5vZGUgPSBnZXRQYXJlbnROb2RlKGN1cnJlbnROb2RlKTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cbmZ1bmN0aW9uIGlzV2ViS2l0KCkge1xuICBpZiAodHlwZW9mIENTUyA9PT0gJ3VuZGVmaW5lZCcgfHwgIUNTUy5zdXBwb3J0cykgcmV0dXJuIGZhbHNlO1xuICByZXR1cm4gQ1NTLnN1cHBvcnRzKCctd2Via2l0LWJhY2tkcm9wLWZpbHRlcicsICdub25lJyk7XG59XG5mdW5jdGlvbiBpc0xhc3RUcmF2ZXJzYWJsZU5vZGUobm9kZSkge1xuICByZXR1cm4gWydodG1sJywgJ2JvZHknLCAnI2RvY3VtZW50J10uaW5jbHVkZXMoZ2V0Tm9kZU5hbWUobm9kZSkpO1xufVxuZnVuY3Rpb24gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KSB7XG4gIHJldHVybiBnZXRXaW5kb3coZWxlbWVudCkuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KTtcbn1cbmZ1bmN0aW9uIGdldE5vZGVTY3JvbGwoZWxlbWVudCkge1xuICBpZiAoaXNFbGVtZW50KGVsZW1lbnQpKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNjcm9sbExlZnQ6IGVsZW1lbnQuc2Nyb2xsTGVmdCxcbiAgICAgIHNjcm9sbFRvcDogZWxlbWVudC5zY3JvbGxUb3BcbiAgICB9O1xuICB9XG4gIHJldHVybiB7XG4gICAgc2Nyb2xsTGVmdDogZWxlbWVudC5zY3JvbGxYLFxuICAgIHNjcm9sbFRvcDogZWxlbWVudC5zY3JvbGxZXG4gIH07XG59XG5mdW5jdGlvbiBnZXRQYXJlbnROb2RlKG5vZGUpIHtcbiAgaWYgKGdldE5vZGVOYW1lKG5vZGUpID09PSAnaHRtbCcpIHtcbiAgICByZXR1cm4gbm9kZTtcbiAgfVxuICBjb25zdCByZXN1bHQgPVxuICAvLyBTdGVwIGludG8gdGhlIHNoYWRvdyBET00gb2YgdGhlIHBhcmVudCBvZiBhIHNsb3R0ZWQgbm9kZS5cbiAgbm9kZS5hc3NpZ25lZFNsb3QgfHxcbiAgLy8gRE9NIEVsZW1lbnQgZGV0ZWN0ZWQuXG4gIG5vZGUucGFyZW50Tm9kZSB8fFxuICAvLyBTaGFkb3dSb290IGRldGVjdGVkLlxuICBpc1NoYWRvd1Jvb3Qobm9kZSkgJiYgbm9kZS5ob3N0IHx8XG4gIC8vIEZhbGxiYWNrLlxuICBnZXREb2N1bWVudEVsZW1lbnQobm9kZSk7XG4gIHJldHVybiBpc1NoYWRvd1Jvb3QocmVzdWx0KSA/IHJlc3VsdC5ob3N0IDogcmVzdWx0O1xufVxuZnVuY3Rpb24gZ2V0TmVhcmVzdE92ZXJmbG93QW5jZXN0b3Iobm9kZSkge1xuICBjb25zdCBwYXJlbnROb2RlID0gZ2V0UGFyZW50Tm9kZShub2RlKTtcbiAgaWYgKGlzTGFzdFRyYXZlcnNhYmxlTm9kZShwYXJlbnROb2RlKSkge1xuICAgIHJldHVybiBub2RlLm93bmVyRG9jdW1lbnQgPyBub2RlLm93bmVyRG9jdW1lbnQuYm9keSA6IG5vZGUuYm9keTtcbiAgfVxuICBpZiAoaXNIVE1MRWxlbWVudChwYXJlbnROb2RlKSAmJiBpc092ZXJmbG93RWxlbWVudChwYXJlbnROb2RlKSkge1xuICAgIHJldHVybiBwYXJlbnROb2RlO1xuICB9XG4gIHJldHVybiBnZXROZWFyZXN0T3ZlcmZsb3dBbmNlc3RvcihwYXJlbnROb2RlKTtcbn1cbmZ1bmN0aW9uIGdldE92ZXJmbG93QW5jZXN0b3JzKG5vZGUsIGxpc3QsIHRyYXZlcnNlSWZyYW1lcykge1xuICB2YXIgX25vZGUkb3duZXJEb2N1bWVudDI7XG4gIGlmIChsaXN0ID09PSB2b2lkIDApIHtcbiAgICBsaXN0ID0gW107XG4gIH1cbiAgaWYgKHRyYXZlcnNlSWZyYW1lcyA9PT0gdm9pZCAwKSB7XG4gICAgdHJhdmVyc2VJZnJhbWVzID0gdHJ1ZTtcbiAgfVxuICBjb25zdCBzY3JvbGxhYmxlQW5jZXN0b3IgPSBnZXROZWFyZXN0T3ZlcmZsb3dBbmNlc3Rvcihub2RlKTtcbiAgY29uc3QgaXNCb2R5ID0gc2Nyb2xsYWJsZUFuY2VzdG9yID09PSAoKF9ub2RlJG93bmVyRG9jdW1lbnQyID0gbm9kZS5vd25lckRvY3VtZW50KSA9PSBudWxsID8gdm9pZCAwIDogX25vZGUkb3duZXJEb2N1bWVudDIuYm9keSk7XG4gIGNvbnN0IHdpbiA9IGdldFdpbmRvdyhzY3JvbGxhYmxlQW5jZXN0b3IpO1xuICBpZiAoaXNCb2R5KSB7XG4gICAgY29uc3QgZnJhbWVFbGVtZW50ID0gZ2V0RnJhbWVFbGVtZW50KHdpbik7XG4gICAgcmV0dXJuIGxpc3QuY29uY2F0KHdpbiwgd2luLnZpc3VhbFZpZXdwb3J0IHx8IFtdLCBpc092ZXJmbG93RWxlbWVudChzY3JvbGxhYmxlQW5jZXN0b3IpID8gc2Nyb2xsYWJsZUFuY2VzdG9yIDogW10sIGZyYW1lRWxlbWVudCAmJiB0cmF2ZXJzZUlmcmFtZXMgPyBnZXRPdmVyZmxvd0FuY2VzdG9ycyhmcmFtZUVsZW1lbnQpIDogW10pO1xuICB9XG4gIHJldHVybiBsaXN0LmNvbmNhdChzY3JvbGxhYmxlQW5jZXN0b3IsIGdldE92ZXJmbG93QW5jZXN0b3JzKHNjcm9sbGFibGVBbmNlc3RvciwgW10sIHRyYXZlcnNlSWZyYW1lcykpO1xufVxuZnVuY3Rpb24gZ2V0RnJhbWVFbGVtZW50KHdpbikge1xuICByZXR1cm4gd2luLnBhcmVudCAmJiBPYmplY3QuZ2V0UHJvdG90eXBlT2Yod2luLnBhcmVudCkgPyB3aW4uZnJhbWVFbGVtZW50IDogbnVsbDtcbn1cblxuZXhwb3J0IHsgZ2V0Q29tcHV0ZWRTdHlsZSwgZ2V0Q29udGFpbmluZ0Jsb2NrLCBnZXREb2N1bWVudEVsZW1lbnQsIGdldEZyYW1lRWxlbWVudCwgZ2V0TmVhcmVzdE92ZXJmbG93QW5jZXN0b3IsIGdldE5vZGVOYW1lLCBnZXROb2RlU2Nyb2xsLCBnZXRPdmVyZmxvd0FuY2VzdG9ycywgZ2V0UGFyZW50Tm9kZSwgZ2V0V2luZG93LCBpc0NvbnRhaW5pbmdCbG9jaywgaXNFbGVtZW50LCBpc0hUTUxFbGVtZW50LCBpc0xhc3RUcmF2ZXJzYWJsZU5vZGUsIGlzTm9kZSwgaXNPdmVyZmxvd0VsZW1lbnQsIGlzU2hhZG93Um9vdCwgaXNUYWJsZUVsZW1lbnQsIGlzVG9wTGF5ZXIsIGlzV2ViS2l0IH07XG4iLCJpbXBvcnQgeyByZWN0VG9DbGllbnRSZWN0LCBkZXRlY3RPdmVyZmxvdyBhcyBkZXRlY3RPdmVyZmxvdyQxLCBvZmZzZXQgYXMgb2Zmc2V0JDEsIGF1dG9QbGFjZW1lbnQgYXMgYXV0b1BsYWNlbWVudCQxLCBzaGlmdCBhcyBzaGlmdCQxLCBmbGlwIGFzIGZsaXAkMSwgc2l6ZSBhcyBzaXplJDEsIGhpZGUgYXMgaGlkZSQxLCBhcnJvdyBhcyBhcnJvdyQxLCBpbmxpbmUgYXMgaW5saW5lJDEsIGxpbWl0U2hpZnQgYXMgbGltaXRTaGlmdCQxLCBjb21wdXRlUG9zaXRpb24gYXMgY29tcHV0ZVBvc2l0aW9uJDEgfSBmcm9tICdAZmxvYXRpbmctdWkvY29yZSc7XG5pbXBvcnQgeyByb3VuZCwgY3JlYXRlQ29vcmRzLCBtYXgsIG1pbiwgZmxvb3IgfSBmcm9tICdAZmxvYXRpbmctdWkvdXRpbHMnO1xuaW1wb3J0IHsgZ2V0Q29tcHV0ZWRTdHlsZSwgaXNIVE1MRWxlbWVudCwgaXNFbGVtZW50LCBnZXRXaW5kb3csIGlzV2ViS2l0LCBnZXRGcmFtZUVsZW1lbnQsIGdldE5vZGVTY3JvbGwsIGdldERvY3VtZW50RWxlbWVudCwgaXNUb3BMYXllciwgZ2V0Tm9kZU5hbWUsIGlzT3ZlcmZsb3dFbGVtZW50LCBnZXRPdmVyZmxvd0FuY2VzdG9ycywgZ2V0UGFyZW50Tm9kZSwgaXNMYXN0VHJhdmVyc2FibGVOb2RlLCBpc0NvbnRhaW5pbmdCbG9jaywgaXNUYWJsZUVsZW1lbnQsIGdldENvbnRhaW5pbmdCbG9jayB9IGZyb20gJ0BmbG9hdGluZy11aS91dGlscy9kb20nO1xuZXhwb3J0IHsgZ2V0T3ZlcmZsb3dBbmNlc3RvcnMgfSBmcm9tICdAZmxvYXRpbmctdWkvdXRpbHMvZG9tJztcblxuZnVuY3Rpb24gZ2V0Q3NzRGltZW5zaW9ucyhlbGVtZW50KSB7XG4gIGNvbnN0IGNzcyA9IGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCk7XG4gIC8vIEluIHRlc3RpbmcgZW52aXJvbm1lbnRzLCB0aGUgYHdpZHRoYCBhbmQgYGhlaWdodGAgcHJvcGVydGllcyBhcmUgZW1wdHlcbiAgLy8gc3RyaW5ncyBmb3IgU1ZHIGVsZW1lbnRzLCByZXR1cm5pbmcgTmFOLiBGYWxsYmFjayB0byBgMGAgaW4gdGhpcyBjYXNlLlxuICBsZXQgd2lkdGggPSBwYXJzZUZsb2F0KGNzcy53aWR0aCkgfHwgMDtcbiAgbGV0IGhlaWdodCA9IHBhcnNlRmxvYXQoY3NzLmhlaWdodCkgfHwgMDtcbiAgY29uc3QgaGFzT2Zmc2V0ID0gaXNIVE1MRWxlbWVudChlbGVtZW50KTtcbiAgY29uc3Qgb2Zmc2V0V2lkdGggPSBoYXNPZmZzZXQgPyBlbGVtZW50Lm9mZnNldFdpZHRoIDogd2lkdGg7XG4gIGNvbnN0IG9mZnNldEhlaWdodCA9IGhhc09mZnNldCA/IGVsZW1lbnQub2Zmc2V0SGVpZ2h0IDogaGVpZ2h0O1xuICBjb25zdCBzaG91bGRGYWxsYmFjayA9IHJvdW5kKHdpZHRoKSAhPT0gb2Zmc2V0V2lkdGggfHwgcm91bmQoaGVpZ2h0KSAhPT0gb2Zmc2V0SGVpZ2h0O1xuICBpZiAoc2hvdWxkRmFsbGJhY2spIHtcbiAgICB3aWR0aCA9IG9mZnNldFdpZHRoO1xuICAgIGhlaWdodCA9IG9mZnNldEhlaWdodDtcbiAgfVxuICByZXR1cm4ge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICAkOiBzaG91bGRGYWxsYmFja1xuICB9O1xufVxuXG5mdW5jdGlvbiB1bndyYXBFbGVtZW50KGVsZW1lbnQpIHtcbiAgcmV0dXJuICFpc0VsZW1lbnQoZWxlbWVudCkgPyBlbGVtZW50LmNvbnRleHRFbGVtZW50IDogZWxlbWVudDtcbn1cblxuZnVuY3Rpb24gZ2V0U2NhbGUoZWxlbWVudCkge1xuICBjb25zdCBkb21FbGVtZW50ID0gdW53cmFwRWxlbWVudChlbGVtZW50KTtcbiAgaWYgKCFpc0hUTUxFbGVtZW50KGRvbUVsZW1lbnQpKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUNvb3JkcygxKTtcbiAgfVxuICBjb25zdCByZWN0ID0gZG9tRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgY29uc3Qge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICAkXG4gIH0gPSBnZXRDc3NEaW1lbnNpb25zKGRvbUVsZW1lbnQpO1xuICBsZXQgeCA9ICgkID8gcm91bmQocmVjdC53aWR0aCkgOiByZWN0LndpZHRoKSAvIHdpZHRoO1xuICBsZXQgeSA9ICgkID8gcm91bmQocmVjdC5oZWlnaHQpIDogcmVjdC5oZWlnaHQpIC8gaGVpZ2h0O1xuXG4gIC8vIDAsIE5hTiwgb3IgSW5maW5pdHkgc2hvdWxkIGFsd2F5cyBmYWxsYmFjayB0byAxLlxuXG4gIGlmICgheCB8fCAhTnVtYmVyLmlzRmluaXRlKHgpKSB7XG4gICAgeCA9IDE7XG4gIH1cbiAgaWYgKCF5IHx8ICFOdW1iZXIuaXNGaW5pdGUoeSkpIHtcbiAgICB5ID0gMTtcbiAgfVxuICByZXR1cm4ge1xuICAgIHgsXG4gICAgeVxuICB9O1xufVxuXG5jb25zdCBub09mZnNldHMgPSAvKiNfX1BVUkVfXyovY3JlYXRlQ29vcmRzKDApO1xuZnVuY3Rpb24gZ2V0VmlzdWFsT2Zmc2V0cyhlbGVtZW50KSB7XG4gIGNvbnN0IHdpbiA9IGdldFdpbmRvdyhlbGVtZW50KTtcbiAgaWYgKCFpc1dlYktpdCgpIHx8ICF3aW4udmlzdWFsVmlld3BvcnQpIHtcbiAgICByZXR1cm4gbm9PZmZzZXRzO1xuICB9XG4gIHJldHVybiB7XG4gICAgeDogd2luLnZpc3VhbFZpZXdwb3J0Lm9mZnNldExlZnQsXG4gICAgeTogd2luLnZpc3VhbFZpZXdwb3J0Lm9mZnNldFRvcFxuICB9O1xufVxuZnVuY3Rpb24gc2hvdWxkQWRkVmlzdWFsT2Zmc2V0cyhlbGVtZW50LCBpc0ZpeGVkLCBmbG9hdGluZ09mZnNldFBhcmVudCkge1xuICBpZiAoaXNGaXhlZCA9PT0gdm9pZCAwKSB7XG4gICAgaXNGaXhlZCA9IGZhbHNlO1xuICB9XG4gIGlmICghZmxvYXRpbmdPZmZzZXRQYXJlbnQgfHwgaXNGaXhlZCAmJiBmbG9hdGluZ09mZnNldFBhcmVudCAhPT0gZ2V0V2luZG93KGVsZW1lbnQpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiBpc0ZpeGVkO1xufVxuXG5mdW5jdGlvbiBnZXRCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCwgaW5jbHVkZVNjYWxlLCBpc0ZpeGVkU3RyYXRlZ3ksIG9mZnNldFBhcmVudCkge1xuICBpZiAoaW5jbHVkZVNjYWxlID09PSB2b2lkIDApIHtcbiAgICBpbmNsdWRlU2NhbGUgPSBmYWxzZTtcbiAgfVxuICBpZiAoaXNGaXhlZFN0cmF0ZWd5ID09PSB2b2lkIDApIHtcbiAgICBpc0ZpeGVkU3RyYXRlZ3kgPSBmYWxzZTtcbiAgfVxuICBjb25zdCBjbGllbnRSZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgY29uc3QgZG9tRWxlbWVudCA9IHVud3JhcEVsZW1lbnQoZWxlbWVudCk7XG4gIGxldCBzY2FsZSA9IGNyZWF0ZUNvb3JkcygxKTtcbiAgaWYgKGluY2x1ZGVTY2FsZSkge1xuICAgIGlmIChvZmZzZXRQYXJlbnQpIHtcbiAgICAgIGlmIChpc0VsZW1lbnQob2Zmc2V0UGFyZW50KSkge1xuICAgICAgICBzY2FsZSA9IGdldFNjYWxlKG9mZnNldFBhcmVudCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHNjYWxlID0gZ2V0U2NhbGUoZWxlbWVudCk7XG4gICAgfVxuICB9XG4gIGNvbnN0IHZpc3VhbE9mZnNldHMgPSBzaG91bGRBZGRWaXN1YWxPZmZzZXRzKGRvbUVsZW1lbnQsIGlzRml4ZWRTdHJhdGVneSwgb2Zmc2V0UGFyZW50KSA/IGdldFZpc3VhbE9mZnNldHMoZG9tRWxlbWVudCkgOiBjcmVhdGVDb29yZHMoMCk7XG4gIGxldCB4ID0gKGNsaWVudFJlY3QubGVmdCArIHZpc3VhbE9mZnNldHMueCkgLyBzY2FsZS54O1xuICBsZXQgeSA9IChjbGllbnRSZWN0LnRvcCArIHZpc3VhbE9mZnNldHMueSkgLyBzY2FsZS55O1xuICBsZXQgd2lkdGggPSBjbGllbnRSZWN0LndpZHRoIC8gc2NhbGUueDtcbiAgbGV0IGhlaWdodCA9IGNsaWVudFJlY3QuaGVpZ2h0IC8gc2NhbGUueTtcbiAgaWYgKGRvbUVsZW1lbnQpIHtcbiAgICBjb25zdCB3aW4gPSBnZXRXaW5kb3coZG9tRWxlbWVudCk7XG4gICAgY29uc3Qgb2Zmc2V0V2luID0gb2Zmc2V0UGFyZW50ICYmIGlzRWxlbWVudChvZmZzZXRQYXJlbnQpID8gZ2V0V2luZG93KG9mZnNldFBhcmVudCkgOiBvZmZzZXRQYXJlbnQ7XG4gICAgbGV0IGN1cnJlbnRXaW4gPSB3aW47XG4gICAgbGV0IGN1cnJlbnRJRnJhbWUgPSBnZXRGcmFtZUVsZW1lbnQoY3VycmVudFdpbik7XG4gICAgd2hpbGUgKGN1cnJlbnRJRnJhbWUgJiYgb2Zmc2V0UGFyZW50ICYmIG9mZnNldFdpbiAhPT0gY3VycmVudFdpbikge1xuICAgICAgY29uc3QgaWZyYW1lU2NhbGUgPSBnZXRTY2FsZShjdXJyZW50SUZyYW1lKTtcbiAgICAgIGNvbnN0IGlmcmFtZVJlY3QgPSBjdXJyZW50SUZyYW1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgY29uc3QgY3NzID0gZ2V0Q29tcHV0ZWRTdHlsZShjdXJyZW50SUZyYW1lKTtcbiAgICAgIGNvbnN0IGxlZnQgPSBpZnJhbWVSZWN0LmxlZnQgKyAoY3VycmVudElGcmFtZS5jbGllbnRMZWZ0ICsgcGFyc2VGbG9hdChjc3MucGFkZGluZ0xlZnQpKSAqIGlmcmFtZVNjYWxlLng7XG4gICAgICBjb25zdCB0b3AgPSBpZnJhbWVSZWN0LnRvcCArIChjdXJyZW50SUZyYW1lLmNsaWVudFRvcCArIHBhcnNlRmxvYXQoY3NzLnBhZGRpbmdUb3ApKSAqIGlmcmFtZVNjYWxlLnk7XG4gICAgICB4ICo9IGlmcmFtZVNjYWxlLng7XG4gICAgICB5ICo9IGlmcmFtZVNjYWxlLnk7XG4gICAgICB3aWR0aCAqPSBpZnJhbWVTY2FsZS54O1xuICAgICAgaGVpZ2h0ICo9IGlmcmFtZVNjYWxlLnk7XG4gICAgICB4ICs9IGxlZnQ7XG4gICAgICB5ICs9IHRvcDtcbiAgICAgIGN1cnJlbnRXaW4gPSBnZXRXaW5kb3coY3VycmVudElGcmFtZSk7XG4gICAgICBjdXJyZW50SUZyYW1lID0gZ2V0RnJhbWVFbGVtZW50KGN1cnJlbnRXaW4pO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVjdFRvQ2xpZW50UmVjdCh7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIHgsXG4gICAgeVxuICB9KTtcbn1cblxuLy8gSWYgPGh0bWw+IGhhcyBhIENTUyB3aWR0aCBncmVhdGVyIHRoYW4gdGhlIHZpZXdwb3J0LCB0aGVuIHRoaXMgd2lsbCBiZVxuLy8gaW5jb3JyZWN0IGZvciBSVEwuXG5mdW5jdGlvbiBnZXRXaW5kb3dTY3JvbGxCYXJYKGVsZW1lbnQsIHJlY3QpIHtcbiAgY29uc3QgbGVmdFNjcm9sbCA9IGdldE5vZGVTY3JvbGwoZWxlbWVudCkuc2Nyb2xsTGVmdDtcbiAgaWYgKCFyZWN0KSB7XG4gICAgcmV0dXJuIGdldEJvdW5kaW5nQ2xpZW50UmVjdChnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCkpLmxlZnQgKyBsZWZ0U2Nyb2xsO1xuICB9XG4gIHJldHVybiByZWN0LmxlZnQgKyBsZWZ0U2Nyb2xsO1xufVxuXG5mdW5jdGlvbiBnZXRIVE1MT2Zmc2V0KGRvY3VtZW50RWxlbWVudCwgc2Nyb2xsLCBpZ25vcmVTY3JvbGxiYXJYKSB7XG4gIGlmIChpZ25vcmVTY3JvbGxiYXJYID09PSB2b2lkIDApIHtcbiAgICBpZ25vcmVTY3JvbGxiYXJYID0gZmFsc2U7XG4gIH1cbiAgY29uc3QgaHRtbFJlY3QgPSBkb2N1bWVudEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIGNvbnN0IHggPSBodG1sUmVjdC5sZWZ0ICsgc2Nyb2xsLnNjcm9sbExlZnQgLSAoaWdub3JlU2Nyb2xsYmFyWCA/IDAgOlxuICAvLyBSVEwgPGJvZHk+IHNjcm9sbGJhci5cbiAgZ2V0V2luZG93U2Nyb2xsQmFyWChkb2N1bWVudEVsZW1lbnQsIGh0bWxSZWN0KSk7XG4gIGNvbnN0IHkgPSBodG1sUmVjdC50b3AgKyBzY3JvbGwuc2Nyb2xsVG9wO1xuICByZXR1cm4ge1xuICAgIHgsXG4gICAgeVxuICB9O1xufVxuXG5mdW5jdGlvbiBjb252ZXJ0T2Zmc2V0UGFyZW50UmVsYXRpdmVSZWN0VG9WaWV3cG9ydFJlbGF0aXZlUmVjdChfcmVmKSB7XG4gIGxldCB7XG4gICAgZWxlbWVudHMsXG4gICAgcmVjdCxcbiAgICBvZmZzZXRQYXJlbnQsXG4gICAgc3RyYXRlZ3lcbiAgfSA9IF9yZWY7XG4gIGNvbnN0IGlzRml4ZWQgPSBzdHJhdGVneSA9PT0gJ2ZpeGVkJztcbiAgY29uc3QgZG9jdW1lbnRFbGVtZW50ID0gZ2V0RG9jdW1lbnRFbGVtZW50KG9mZnNldFBhcmVudCk7XG4gIGNvbnN0IHRvcExheWVyID0gZWxlbWVudHMgPyBpc1RvcExheWVyKGVsZW1lbnRzLmZsb2F0aW5nKSA6IGZhbHNlO1xuICBpZiAob2Zmc2V0UGFyZW50ID09PSBkb2N1bWVudEVsZW1lbnQgfHwgdG9wTGF5ZXIgJiYgaXNGaXhlZCkge1xuICAgIHJldHVybiByZWN0O1xuICB9XG4gIGxldCBzY3JvbGwgPSB7XG4gICAgc2Nyb2xsTGVmdDogMCxcbiAgICBzY3JvbGxUb3A6IDBcbiAgfTtcbiAgbGV0IHNjYWxlID0gY3JlYXRlQ29vcmRzKDEpO1xuICBjb25zdCBvZmZzZXRzID0gY3JlYXRlQ29vcmRzKDApO1xuICBjb25zdCBpc09mZnNldFBhcmVudEFuRWxlbWVudCA9IGlzSFRNTEVsZW1lbnQob2Zmc2V0UGFyZW50KTtcbiAgaWYgKGlzT2Zmc2V0UGFyZW50QW5FbGVtZW50IHx8ICFpc09mZnNldFBhcmVudEFuRWxlbWVudCAmJiAhaXNGaXhlZCkge1xuICAgIGlmIChnZXROb2RlTmFtZShvZmZzZXRQYXJlbnQpICE9PSAnYm9keScgfHwgaXNPdmVyZmxvd0VsZW1lbnQoZG9jdW1lbnRFbGVtZW50KSkge1xuICAgICAgc2Nyb2xsID0gZ2V0Tm9kZVNjcm9sbChvZmZzZXRQYXJlbnQpO1xuICAgIH1cbiAgICBpZiAoaXNIVE1MRWxlbWVudChvZmZzZXRQYXJlbnQpKSB7XG4gICAgICBjb25zdCBvZmZzZXRSZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KG9mZnNldFBhcmVudCk7XG4gICAgICBzY2FsZSA9IGdldFNjYWxlKG9mZnNldFBhcmVudCk7XG4gICAgICBvZmZzZXRzLnggPSBvZmZzZXRSZWN0LnggKyBvZmZzZXRQYXJlbnQuY2xpZW50TGVmdDtcbiAgICAgIG9mZnNldHMueSA9IG9mZnNldFJlY3QueSArIG9mZnNldFBhcmVudC5jbGllbnRUb3A7XG4gICAgfVxuICB9XG4gIGNvbnN0IGh0bWxPZmZzZXQgPSBkb2N1bWVudEVsZW1lbnQgJiYgIWlzT2Zmc2V0UGFyZW50QW5FbGVtZW50ICYmICFpc0ZpeGVkID8gZ2V0SFRNTE9mZnNldChkb2N1bWVudEVsZW1lbnQsIHNjcm9sbCwgdHJ1ZSkgOiBjcmVhdGVDb29yZHMoMCk7XG4gIHJldHVybiB7XG4gICAgd2lkdGg6IHJlY3Qud2lkdGggKiBzY2FsZS54LFxuICAgIGhlaWdodDogcmVjdC5oZWlnaHQgKiBzY2FsZS55LFxuICAgIHg6IHJlY3QueCAqIHNjYWxlLnggLSBzY3JvbGwuc2Nyb2xsTGVmdCAqIHNjYWxlLnggKyBvZmZzZXRzLnggKyBodG1sT2Zmc2V0LngsXG4gICAgeTogcmVjdC55ICogc2NhbGUueSAtIHNjcm9sbC5zY3JvbGxUb3AgKiBzY2FsZS55ICsgb2Zmc2V0cy55ICsgaHRtbE9mZnNldC55XG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldENsaWVudFJlY3RzKGVsZW1lbnQpIHtcbiAgcmV0dXJuIEFycmF5LmZyb20oZWxlbWVudC5nZXRDbGllbnRSZWN0cygpKTtcbn1cblxuLy8gR2V0cyB0aGUgZW50aXJlIHNpemUgb2YgdGhlIHNjcm9sbGFibGUgZG9jdW1lbnQgYXJlYSwgZXZlbiBleHRlbmRpbmcgb3V0c2lkZVxuLy8gb2YgdGhlIGA8aHRtbD5gIGFuZCBgPGJvZHk+YCByZWN0IGJvdW5kcyBpZiBob3Jpem9udGFsbHkgc2Nyb2xsYWJsZS5cbmZ1bmN0aW9uIGdldERvY3VtZW50UmVjdChlbGVtZW50KSB7XG4gIGNvbnN0IGh0bWwgPSBnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCk7XG4gIGNvbnN0IHNjcm9sbCA9IGdldE5vZGVTY3JvbGwoZWxlbWVudCk7XG4gIGNvbnN0IGJvZHkgPSBlbGVtZW50Lm93bmVyRG9jdW1lbnQuYm9keTtcbiAgY29uc3Qgd2lkdGggPSBtYXgoaHRtbC5zY3JvbGxXaWR0aCwgaHRtbC5jbGllbnRXaWR0aCwgYm9keS5zY3JvbGxXaWR0aCwgYm9keS5jbGllbnRXaWR0aCk7XG4gIGNvbnN0IGhlaWdodCA9IG1heChodG1sLnNjcm9sbEhlaWdodCwgaHRtbC5jbGllbnRIZWlnaHQsIGJvZHkuc2Nyb2xsSGVpZ2h0LCBib2R5LmNsaWVudEhlaWdodCk7XG4gIGxldCB4ID0gLXNjcm9sbC5zY3JvbGxMZWZ0ICsgZ2V0V2luZG93U2Nyb2xsQmFyWChlbGVtZW50KTtcbiAgY29uc3QgeSA9IC1zY3JvbGwuc2Nyb2xsVG9wO1xuICBpZiAoZ2V0Q29tcHV0ZWRTdHlsZShib2R5KS5kaXJlY3Rpb24gPT09ICdydGwnKSB7XG4gICAgeCArPSBtYXgoaHRtbC5jbGllbnRXaWR0aCwgYm9keS5jbGllbnRXaWR0aCkgLSB3aWR0aDtcbiAgfVxuICByZXR1cm4ge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICB4LFxuICAgIHlcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0Vmlld3BvcnRSZWN0KGVsZW1lbnQsIHN0cmF0ZWd5KSB7XG4gIGNvbnN0IHdpbiA9IGdldFdpbmRvdyhlbGVtZW50KTtcbiAgY29uc3QgaHRtbCA9IGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KTtcbiAgY29uc3QgdmlzdWFsVmlld3BvcnQgPSB3aW4udmlzdWFsVmlld3BvcnQ7XG4gIGxldCB3aWR0aCA9IGh0bWwuY2xpZW50V2lkdGg7XG4gIGxldCBoZWlnaHQgPSBodG1sLmNsaWVudEhlaWdodDtcbiAgbGV0IHggPSAwO1xuICBsZXQgeSA9IDA7XG4gIGlmICh2aXN1YWxWaWV3cG9ydCkge1xuICAgIHdpZHRoID0gdmlzdWFsVmlld3BvcnQud2lkdGg7XG4gICAgaGVpZ2h0ID0gdmlzdWFsVmlld3BvcnQuaGVpZ2h0O1xuICAgIGNvbnN0IHZpc3VhbFZpZXdwb3J0QmFzZWQgPSBpc1dlYktpdCgpO1xuICAgIGlmICghdmlzdWFsVmlld3BvcnRCYXNlZCB8fCB2aXN1YWxWaWV3cG9ydEJhc2VkICYmIHN0cmF0ZWd5ID09PSAnZml4ZWQnKSB7XG4gICAgICB4ID0gdmlzdWFsVmlld3BvcnQub2Zmc2V0TGVmdDtcbiAgICAgIHkgPSB2aXN1YWxWaWV3cG9ydC5vZmZzZXRUb3A7XG4gICAgfVxuICB9XG4gIHJldHVybiB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIHgsXG4gICAgeVxuICB9O1xufVxuXG4vLyBSZXR1cm5zIHRoZSBpbm5lciBjbGllbnQgcmVjdCwgc3VidHJhY3Rpbmcgc2Nyb2xsYmFycyBpZiBwcmVzZW50LlxuZnVuY3Rpb24gZ2V0SW5uZXJCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCwgc3RyYXRlZ3kpIHtcbiAgY29uc3QgY2xpZW50UmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50LCB0cnVlLCBzdHJhdGVneSA9PT0gJ2ZpeGVkJyk7XG4gIGNvbnN0IHRvcCA9IGNsaWVudFJlY3QudG9wICsgZWxlbWVudC5jbGllbnRUb3A7XG4gIGNvbnN0IGxlZnQgPSBjbGllbnRSZWN0LmxlZnQgKyBlbGVtZW50LmNsaWVudExlZnQ7XG4gIGNvbnN0IHNjYWxlID0gaXNIVE1MRWxlbWVudChlbGVtZW50KSA/IGdldFNjYWxlKGVsZW1lbnQpIDogY3JlYXRlQ29vcmRzKDEpO1xuICBjb25zdCB3aWR0aCA9IGVsZW1lbnQuY2xpZW50V2lkdGggKiBzY2FsZS54O1xuICBjb25zdCBoZWlnaHQgPSBlbGVtZW50LmNsaWVudEhlaWdodCAqIHNjYWxlLnk7XG4gIGNvbnN0IHggPSBsZWZ0ICogc2NhbGUueDtcbiAgY29uc3QgeSA9IHRvcCAqIHNjYWxlLnk7XG4gIHJldHVybiB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIHgsXG4gICAgeVxuICB9O1xufVxuZnVuY3Rpb24gZ2V0Q2xpZW50UmVjdEZyb21DbGlwcGluZ0FuY2VzdG9yKGVsZW1lbnQsIGNsaXBwaW5nQW5jZXN0b3IsIHN0cmF0ZWd5KSB7XG4gIGxldCByZWN0O1xuICBpZiAoY2xpcHBpbmdBbmNlc3RvciA9PT0gJ3ZpZXdwb3J0Jykge1xuICAgIHJlY3QgPSBnZXRWaWV3cG9ydFJlY3QoZWxlbWVudCwgc3RyYXRlZ3kpO1xuICB9IGVsc2UgaWYgKGNsaXBwaW5nQW5jZXN0b3IgPT09ICdkb2N1bWVudCcpIHtcbiAgICByZWN0ID0gZ2V0RG9jdW1lbnRSZWN0KGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KSk7XG4gIH0gZWxzZSBpZiAoaXNFbGVtZW50KGNsaXBwaW5nQW5jZXN0b3IpKSB7XG4gICAgcmVjdCA9IGdldElubmVyQm91bmRpbmdDbGllbnRSZWN0KGNsaXBwaW5nQW5jZXN0b3IsIHN0cmF0ZWd5KTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCB2aXN1YWxPZmZzZXRzID0gZ2V0VmlzdWFsT2Zmc2V0cyhlbGVtZW50KTtcbiAgICByZWN0ID0ge1xuICAgICAgeDogY2xpcHBpbmdBbmNlc3Rvci54IC0gdmlzdWFsT2Zmc2V0cy54LFxuICAgICAgeTogY2xpcHBpbmdBbmNlc3Rvci55IC0gdmlzdWFsT2Zmc2V0cy55LFxuICAgICAgd2lkdGg6IGNsaXBwaW5nQW5jZXN0b3Iud2lkdGgsXG4gICAgICBoZWlnaHQ6IGNsaXBwaW5nQW5jZXN0b3IuaGVpZ2h0XG4gICAgfTtcbiAgfVxuICByZXR1cm4gcmVjdFRvQ2xpZW50UmVjdChyZWN0KTtcbn1cbmZ1bmN0aW9uIGhhc0ZpeGVkUG9zaXRpb25BbmNlc3RvcihlbGVtZW50LCBzdG9wTm9kZSkge1xuICBjb25zdCBwYXJlbnROb2RlID0gZ2V0UGFyZW50Tm9kZShlbGVtZW50KTtcbiAgaWYgKHBhcmVudE5vZGUgPT09IHN0b3BOb2RlIHx8ICFpc0VsZW1lbnQocGFyZW50Tm9kZSkgfHwgaXNMYXN0VHJhdmVyc2FibGVOb2RlKHBhcmVudE5vZGUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiBnZXRDb21wdXRlZFN0eWxlKHBhcmVudE5vZGUpLnBvc2l0aW9uID09PSAnZml4ZWQnIHx8IGhhc0ZpeGVkUG9zaXRpb25BbmNlc3RvcihwYXJlbnROb2RlLCBzdG9wTm9kZSk7XG59XG5cbi8vIEEgXCJjbGlwcGluZyBhbmNlc3RvclwiIGlzIGFuIGBvdmVyZmxvd2AgZWxlbWVudCB3aXRoIHRoZSBjaGFyYWN0ZXJpc3RpYyBvZlxuLy8gY2xpcHBpbmcgKG9yIGhpZGluZykgY2hpbGQgZWxlbWVudHMuIFRoaXMgcmV0dXJucyBhbGwgY2xpcHBpbmcgYW5jZXN0b3JzXG4vLyBvZiB0aGUgZ2l2ZW4gZWxlbWVudCB1cCB0aGUgdHJlZS5cbmZ1bmN0aW9uIGdldENsaXBwaW5nRWxlbWVudEFuY2VzdG9ycyhlbGVtZW50LCBjYWNoZSkge1xuICBjb25zdCBjYWNoZWRSZXN1bHQgPSBjYWNoZS5nZXQoZWxlbWVudCk7XG4gIGlmIChjYWNoZWRSZXN1bHQpIHtcbiAgICByZXR1cm4gY2FjaGVkUmVzdWx0O1xuICB9XG4gIGxldCByZXN1bHQgPSBnZXRPdmVyZmxvd0FuY2VzdG9ycyhlbGVtZW50LCBbXSwgZmFsc2UpLmZpbHRlcihlbCA9PiBpc0VsZW1lbnQoZWwpICYmIGdldE5vZGVOYW1lKGVsKSAhPT0gJ2JvZHknKTtcbiAgbGV0IGN1cnJlbnRDb250YWluaW5nQmxvY2tDb21wdXRlZFN0eWxlID0gbnVsbDtcbiAgY29uc3QgZWxlbWVudElzRml4ZWQgPSBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLnBvc2l0aW9uID09PSAnZml4ZWQnO1xuICBsZXQgY3VycmVudE5vZGUgPSBlbGVtZW50SXNGaXhlZCA/IGdldFBhcmVudE5vZGUoZWxlbWVudCkgOiBlbGVtZW50O1xuXG4gIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9Db250YWluaW5nX2Jsb2NrI2lkZW50aWZ5aW5nX3RoZV9jb250YWluaW5nX2Jsb2NrXG4gIHdoaWxlIChpc0VsZW1lbnQoY3VycmVudE5vZGUpICYmICFpc0xhc3RUcmF2ZXJzYWJsZU5vZGUoY3VycmVudE5vZGUpKSB7XG4gICAgY29uc3QgY29tcHV0ZWRTdHlsZSA9IGdldENvbXB1dGVkU3R5bGUoY3VycmVudE5vZGUpO1xuICAgIGNvbnN0IGN1cnJlbnROb2RlSXNDb250YWluaW5nID0gaXNDb250YWluaW5nQmxvY2soY3VycmVudE5vZGUpO1xuICAgIGlmICghY3VycmVudE5vZGVJc0NvbnRhaW5pbmcgJiYgY29tcHV0ZWRTdHlsZS5wb3NpdGlvbiA9PT0gJ2ZpeGVkJykge1xuICAgICAgY3VycmVudENvbnRhaW5pbmdCbG9ja0NvbXB1dGVkU3R5bGUgPSBudWxsO1xuICAgIH1cbiAgICBjb25zdCBzaG91bGREcm9wQ3VycmVudE5vZGUgPSBlbGVtZW50SXNGaXhlZCA/ICFjdXJyZW50Tm9kZUlzQ29udGFpbmluZyAmJiAhY3VycmVudENvbnRhaW5pbmdCbG9ja0NvbXB1dGVkU3R5bGUgOiAhY3VycmVudE5vZGVJc0NvbnRhaW5pbmcgJiYgY29tcHV0ZWRTdHlsZS5wb3NpdGlvbiA9PT0gJ3N0YXRpYycgJiYgISFjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZSAmJiBbJ2Fic29sdXRlJywgJ2ZpeGVkJ10uaW5jbHVkZXMoY3VycmVudENvbnRhaW5pbmdCbG9ja0NvbXB1dGVkU3R5bGUucG9zaXRpb24pIHx8IGlzT3ZlcmZsb3dFbGVtZW50KGN1cnJlbnROb2RlKSAmJiAhY3VycmVudE5vZGVJc0NvbnRhaW5pbmcgJiYgaGFzRml4ZWRQb3NpdGlvbkFuY2VzdG9yKGVsZW1lbnQsIGN1cnJlbnROb2RlKTtcbiAgICBpZiAoc2hvdWxkRHJvcEN1cnJlbnROb2RlKSB7XG4gICAgICAvLyBEcm9wIG5vbi1jb250YWluaW5nIGJsb2Nrcy5cbiAgICAgIHJlc3VsdCA9IHJlc3VsdC5maWx0ZXIoYW5jZXN0b3IgPT4gYW5jZXN0b3IgIT09IGN1cnJlbnROb2RlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gUmVjb3JkIGxhc3QgY29udGFpbmluZyBibG9jayBmb3IgbmV4dCBpdGVyYXRpb24uXG4gICAgICBjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZSA9IGNvbXB1dGVkU3R5bGU7XG4gICAgfVxuICAgIGN1cnJlbnROb2RlID0gZ2V0UGFyZW50Tm9kZShjdXJyZW50Tm9kZSk7XG4gIH1cbiAgY2FjaGUuc2V0KGVsZW1lbnQsIHJlc3VsdCk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8vIEdldHMgdGhlIG1heGltdW0gYXJlYSB0aGF0IHRoZSBlbGVtZW50IGlzIHZpc2libGUgaW4gZHVlIHRvIGFueSBudW1iZXIgb2Zcbi8vIGNsaXBwaW5nIGFuY2VzdG9ycy5cbmZ1bmN0aW9uIGdldENsaXBwaW5nUmVjdChfcmVmKSB7XG4gIGxldCB7XG4gICAgZWxlbWVudCxcbiAgICBib3VuZGFyeSxcbiAgICByb290Qm91bmRhcnksXG4gICAgc3RyYXRlZ3lcbiAgfSA9IF9yZWY7XG4gIGNvbnN0IGVsZW1lbnRDbGlwcGluZ0FuY2VzdG9ycyA9IGJvdW5kYXJ5ID09PSAnY2xpcHBpbmdBbmNlc3RvcnMnID8gaXNUb3BMYXllcihlbGVtZW50KSA/IFtdIDogZ2V0Q2xpcHBpbmdFbGVtZW50QW5jZXN0b3JzKGVsZW1lbnQsIHRoaXMuX2MpIDogW10uY29uY2F0KGJvdW5kYXJ5KTtcbiAgY29uc3QgY2xpcHBpbmdBbmNlc3RvcnMgPSBbLi4uZWxlbWVudENsaXBwaW5nQW5jZXN0b3JzLCByb290Qm91bmRhcnldO1xuICBjb25zdCBmaXJzdENsaXBwaW5nQW5jZXN0b3IgPSBjbGlwcGluZ0FuY2VzdG9yc1swXTtcbiAgY29uc3QgY2xpcHBpbmdSZWN0ID0gY2xpcHBpbmdBbmNlc3RvcnMucmVkdWNlKChhY2NSZWN0LCBjbGlwcGluZ0FuY2VzdG9yKSA9PiB7XG4gICAgY29uc3QgcmVjdCA9IGdldENsaWVudFJlY3RGcm9tQ2xpcHBpbmdBbmNlc3RvcihlbGVtZW50LCBjbGlwcGluZ0FuY2VzdG9yLCBzdHJhdGVneSk7XG4gICAgYWNjUmVjdC50b3AgPSBtYXgocmVjdC50b3AsIGFjY1JlY3QudG9wKTtcbiAgICBhY2NSZWN0LnJpZ2h0ID0gbWluKHJlY3QucmlnaHQsIGFjY1JlY3QucmlnaHQpO1xuICAgIGFjY1JlY3QuYm90dG9tID0gbWluKHJlY3QuYm90dG9tLCBhY2NSZWN0LmJvdHRvbSk7XG4gICAgYWNjUmVjdC5sZWZ0ID0gbWF4KHJlY3QubGVmdCwgYWNjUmVjdC5sZWZ0KTtcbiAgICByZXR1cm4gYWNjUmVjdDtcbiAgfSwgZ2V0Q2xpZW50UmVjdEZyb21DbGlwcGluZ0FuY2VzdG9yKGVsZW1lbnQsIGZpcnN0Q2xpcHBpbmdBbmNlc3Rvciwgc3RyYXRlZ3kpKTtcbiAgcmV0dXJuIHtcbiAgICB3aWR0aDogY2xpcHBpbmdSZWN0LnJpZ2h0IC0gY2xpcHBpbmdSZWN0LmxlZnQsXG4gICAgaGVpZ2h0OiBjbGlwcGluZ1JlY3QuYm90dG9tIC0gY2xpcHBpbmdSZWN0LnRvcCxcbiAgICB4OiBjbGlwcGluZ1JlY3QubGVmdCxcbiAgICB5OiBjbGlwcGluZ1JlY3QudG9wXG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldERpbWVuc2lvbnMoZWxlbWVudCkge1xuICBjb25zdCB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0XG4gIH0gPSBnZXRDc3NEaW1lbnNpb25zKGVsZW1lbnQpO1xuICByZXR1cm4ge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodFxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRSZWN0UmVsYXRpdmVUb09mZnNldFBhcmVudChlbGVtZW50LCBvZmZzZXRQYXJlbnQsIHN0cmF0ZWd5KSB7XG4gIGNvbnN0IGlzT2Zmc2V0UGFyZW50QW5FbGVtZW50ID0gaXNIVE1MRWxlbWVudChvZmZzZXRQYXJlbnQpO1xuICBjb25zdCBkb2N1bWVudEVsZW1lbnQgPSBnZXREb2N1bWVudEVsZW1lbnQob2Zmc2V0UGFyZW50KTtcbiAgY29uc3QgaXNGaXhlZCA9IHN0cmF0ZWd5ID09PSAnZml4ZWQnO1xuICBjb25zdCByZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KGVsZW1lbnQsIHRydWUsIGlzRml4ZWQsIG9mZnNldFBhcmVudCk7XG4gIGxldCBzY3JvbGwgPSB7XG4gICAgc2Nyb2xsTGVmdDogMCxcbiAgICBzY3JvbGxUb3A6IDBcbiAgfTtcbiAgY29uc3Qgb2Zmc2V0cyA9IGNyZWF0ZUNvb3JkcygwKTtcbiAgaWYgKGlzT2Zmc2V0UGFyZW50QW5FbGVtZW50IHx8ICFpc09mZnNldFBhcmVudEFuRWxlbWVudCAmJiAhaXNGaXhlZCkge1xuICAgIGlmIChnZXROb2RlTmFtZShvZmZzZXRQYXJlbnQpICE9PSAnYm9keScgfHwgaXNPdmVyZmxvd0VsZW1lbnQoZG9jdW1lbnRFbGVtZW50KSkge1xuICAgICAgc2Nyb2xsID0gZ2V0Tm9kZVNjcm9sbChvZmZzZXRQYXJlbnQpO1xuICAgIH1cbiAgICBpZiAoaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQpIHtcbiAgICAgIGNvbnN0IG9mZnNldFJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3Qob2Zmc2V0UGFyZW50LCB0cnVlLCBpc0ZpeGVkLCBvZmZzZXRQYXJlbnQpO1xuICAgICAgb2Zmc2V0cy54ID0gb2Zmc2V0UmVjdC54ICsgb2Zmc2V0UGFyZW50LmNsaWVudExlZnQ7XG4gICAgICBvZmZzZXRzLnkgPSBvZmZzZXRSZWN0LnkgKyBvZmZzZXRQYXJlbnQuY2xpZW50VG9wO1xuICAgIH0gZWxzZSBpZiAoZG9jdW1lbnRFbGVtZW50KSB7XG4gICAgICAvLyBJZiB0aGUgPGJvZHk+IHNjcm9sbGJhciBhcHBlYXJzIG9uIHRoZSBsZWZ0IChlLmcuIFJUTCBzeXN0ZW1zKS4gVXNlXG4gICAgICAvLyBGaXJlZm94IHdpdGggbGF5b3V0LnNjcm9sbGJhci5zaWRlID0gMyBpbiBhYm91dDpjb25maWcgdG8gdGVzdCB0aGlzLlxuICAgICAgb2Zmc2V0cy54ID0gZ2V0V2luZG93U2Nyb2xsQmFyWChkb2N1bWVudEVsZW1lbnQpO1xuICAgIH1cbiAgfVxuICBjb25zdCBodG1sT2Zmc2V0ID0gZG9jdW1lbnRFbGVtZW50ICYmICFpc09mZnNldFBhcmVudEFuRWxlbWVudCAmJiAhaXNGaXhlZCA/IGdldEhUTUxPZmZzZXQoZG9jdW1lbnRFbGVtZW50LCBzY3JvbGwpIDogY3JlYXRlQ29vcmRzKDApO1xuICBjb25zdCB4ID0gcmVjdC5sZWZ0ICsgc2Nyb2xsLnNjcm9sbExlZnQgLSBvZmZzZXRzLnggLSBodG1sT2Zmc2V0Lng7XG4gIGNvbnN0IHkgPSByZWN0LnRvcCArIHNjcm9sbC5zY3JvbGxUb3AgLSBvZmZzZXRzLnkgLSBodG1sT2Zmc2V0Lnk7XG4gIHJldHVybiB7XG4gICAgeCxcbiAgICB5LFxuICAgIHdpZHRoOiByZWN0LndpZHRoLFxuICAgIGhlaWdodDogcmVjdC5oZWlnaHRcbiAgfTtcbn1cblxuZnVuY3Rpb24gaXNTdGF0aWNQb3NpdGlvbmVkKGVsZW1lbnQpIHtcbiAgcmV0dXJuIGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkucG9zaXRpb24gPT09ICdzdGF0aWMnO1xufVxuXG5mdW5jdGlvbiBnZXRUcnVlT2Zmc2V0UGFyZW50KGVsZW1lbnQsIHBvbHlmaWxsKSB7XG4gIGlmICghaXNIVE1MRWxlbWVudChlbGVtZW50KSB8fCBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLnBvc2l0aW9uID09PSAnZml4ZWQnKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgaWYgKHBvbHlmaWxsKSB7XG4gICAgcmV0dXJuIHBvbHlmaWxsKGVsZW1lbnQpO1xuICB9XG4gIGxldCByYXdPZmZzZXRQYXJlbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDtcblxuICAvLyBGaXJlZm94IHJldHVybnMgdGhlIDxodG1sPiBlbGVtZW50IGFzIHRoZSBvZmZzZXRQYXJlbnQgaWYgaXQncyBub24tc3RhdGljLFxuICAvLyB3aGlsZSBDaHJvbWUgYW5kIFNhZmFyaSByZXR1cm4gdGhlIDxib2R5PiBlbGVtZW50LiBUaGUgPGJvZHk+IGVsZW1lbnQgbXVzdFxuICAvLyBiZSB1c2VkIHRvIHBlcmZvcm0gdGhlIGNvcnJlY3QgY2FsY3VsYXRpb25zIGV2ZW4gaWYgdGhlIDxodG1sPiBlbGVtZW50IGlzXG4gIC8vIG5vbi1zdGF0aWMuXG4gIGlmIChnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCkgPT09IHJhd09mZnNldFBhcmVudCkge1xuICAgIHJhd09mZnNldFBhcmVudCA9IHJhd09mZnNldFBhcmVudC5vd25lckRvY3VtZW50LmJvZHk7XG4gIH1cbiAgcmV0dXJuIHJhd09mZnNldFBhcmVudDtcbn1cblxuLy8gR2V0cyB0aGUgY2xvc2VzdCBhbmNlc3RvciBwb3NpdGlvbmVkIGVsZW1lbnQuIEhhbmRsZXMgc29tZSBlZGdlIGNhc2VzLFxuLy8gc3VjaCBhcyB0YWJsZSBhbmNlc3RvcnMgYW5kIGNyb3NzIGJyb3dzZXIgYnVncy5cbmZ1bmN0aW9uIGdldE9mZnNldFBhcmVudChlbGVtZW50LCBwb2x5ZmlsbCkge1xuICBjb25zdCB3aW4gPSBnZXRXaW5kb3coZWxlbWVudCk7XG4gIGlmIChpc1RvcExheWVyKGVsZW1lbnQpKSB7XG4gICAgcmV0dXJuIHdpbjtcbiAgfVxuICBpZiAoIWlzSFRNTEVsZW1lbnQoZWxlbWVudCkpIHtcbiAgICBsZXQgc3ZnT2Zmc2V0UGFyZW50ID0gZ2V0UGFyZW50Tm9kZShlbGVtZW50KTtcbiAgICB3aGlsZSAoc3ZnT2Zmc2V0UGFyZW50ICYmICFpc0xhc3RUcmF2ZXJzYWJsZU5vZGUoc3ZnT2Zmc2V0UGFyZW50KSkge1xuICAgICAgaWYgKGlzRWxlbWVudChzdmdPZmZzZXRQYXJlbnQpICYmICFpc1N0YXRpY1Bvc2l0aW9uZWQoc3ZnT2Zmc2V0UGFyZW50KSkge1xuICAgICAgICByZXR1cm4gc3ZnT2Zmc2V0UGFyZW50O1xuICAgICAgfVxuICAgICAgc3ZnT2Zmc2V0UGFyZW50ID0gZ2V0UGFyZW50Tm9kZShzdmdPZmZzZXRQYXJlbnQpO1xuICAgIH1cbiAgICByZXR1cm4gd2luO1xuICB9XG4gIGxldCBvZmZzZXRQYXJlbnQgPSBnZXRUcnVlT2Zmc2V0UGFyZW50KGVsZW1lbnQsIHBvbHlmaWxsKTtcbiAgd2hpbGUgKG9mZnNldFBhcmVudCAmJiBpc1RhYmxlRWxlbWVudChvZmZzZXRQYXJlbnQpICYmIGlzU3RhdGljUG9zaXRpb25lZChvZmZzZXRQYXJlbnQpKSB7XG4gICAgb2Zmc2V0UGFyZW50ID0gZ2V0VHJ1ZU9mZnNldFBhcmVudChvZmZzZXRQYXJlbnQsIHBvbHlmaWxsKTtcbiAgfVxuICBpZiAob2Zmc2V0UGFyZW50ICYmIGlzTGFzdFRyYXZlcnNhYmxlTm9kZShvZmZzZXRQYXJlbnQpICYmIGlzU3RhdGljUG9zaXRpb25lZChvZmZzZXRQYXJlbnQpICYmICFpc0NvbnRhaW5pbmdCbG9jayhvZmZzZXRQYXJlbnQpKSB7XG4gICAgcmV0dXJuIHdpbjtcbiAgfVxuICByZXR1cm4gb2Zmc2V0UGFyZW50IHx8IGdldENvbnRhaW5pbmdCbG9jayhlbGVtZW50KSB8fCB3aW47XG59XG5cbmNvbnN0IGdldEVsZW1lbnRSZWN0cyA9IGFzeW5jIGZ1bmN0aW9uIChkYXRhKSB7XG4gIGNvbnN0IGdldE9mZnNldFBhcmVudEZuID0gdGhpcy5nZXRPZmZzZXRQYXJlbnQgfHwgZ2V0T2Zmc2V0UGFyZW50O1xuICBjb25zdCBnZXREaW1lbnNpb25zRm4gPSB0aGlzLmdldERpbWVuc2lvbnM7XG4gIGNvbnN0IGZsb2F0aW5nRGltZW5zaW9ucyA9IGF3YWl0IGdldERpbWVuc2lvbnNGbihkYXRhLmZsb2F0aW5nKTtcbiAgcmV0dXJuIHtcbiAgICByZWZlcmVuY2U6IGdldFJlY3RSZWxhdGl2ZVRvT2Zmc2V0UGFyZW50KGRhdGEucmVmZXJlbmNlLCBhd2FpdCBnZXRPZmZzZXRQYXJlbnRGbihkYXRhLmZsb2F0aW5nKSwgZGF0YS5zdHJhdGVneSksXG4gICAgZmxvYXRpbmc6IHtcbiAgICAgIHg6IDAsXG4gICAgICB5OiAwLFxuICAgICAgd2lkdGg6IGZsb2F0aW5nRGltZW5zaW9ucy53aWR0aCxcbiAgICAgIGhlaWdodDogZmxvYXRpbmdEaW1lbnNpb25zLmhlaWdodFxuICAgIH1cbiAgfTtcbn07XG5cbmZ1bmN0aW9uIGlzUlRMKGVsZW1lbnQpIHtcbiAgcmV0dXJuIGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkuZGlyZWN0aW9uID09PSAncnRsJztcbn1cblxuY29uc3QgcGxhdGZvcm0gPSB7XG4gIGNvbnZlcnRPZmZzZXRQYXJlbnRSZWxhdGl2ZVJlY3RUb1ZpZXdwb3J0UmVsYXRpdmVSZWN0LFxuICBnZXREb2N1bWVudEVsZW1lbnQsXG4gIGdldENsaXBwaW5nUmVjdCxcbiAgZ2V0T2Zmc2V0UGFyZW50LFxuICBnZXRFbGVtZW50UmVjdHMsXG4gIGdldENsaWVudFJlY3RzLFxuICBnZXREaW1lbnNpb25zLFxuICBnZXRTY2FsZSxcbiAgaXNFbGVtZW50LFxuICBpc1JUTFxufTtcblxuZnVuY3Rpb24gcmVjdHNBcmVFcXVhbChhLCBiKSB7XG4gIHJldHVybiBhLnggPT09IGIueCAmJiBhLnkgPT09IGIueSAmJiBhLndpZHRoID09PSBiLndpZHRoICYmIGEuaGVpZ2h0ID09PSBiLmhlaWdodDtcbn1cblxuLy8gaHR0cHM6Ly9zYW10aG9yLmF1LzIwMjEvb2JzZXJ2aW5nLWRvbS9cbmZ1bmN0aW9uIG9ic2VydmVNb3ZlKGVsZW1lbnQsIG9uTW92ZSkge1xuICBsZXQgaW8gPSBudWxsO1xuICBsZXQgdGltZW91dElkO1xuICBjb25zdCByb290ID0gZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpO1xuICBmdW5jdGlvbiBjbGVhbnVwKCkge1xuICAgIHZhciBfaW87XG4gICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCk7XG4gICAgKF9pbyA9IGlvKSA9PSBudWxsIHx8IF9pby5kaXNjb25uZWN0KCk7XG4gICAgaW8gPSBudWxsO1xuICB9XG4gIGZ1bmN0aW9uIHJlZnJlc2goc2tpcCwgdGhyZXNob2xkKSB7XG4gICAgaWYgKHNraXAgPT09IHZvaWQgMCkge1xuICAgICAgc2tpcCA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAodGhyZXNob2xkID09PSB2b2lkIDApIHtcbiAgICAgIHRocmVzaG9sZCA9IDE7XG4gICAgfVxuICAgIGNsZWFudXAoKTtcbiAgICBjb25zdCBlbGVtZW50UmVjdEZvclJvb3RNYXJnaW4gPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IHtcbiAgICAgIGxlZnQsXG4gICAgICB0b3AsXG4gICAgICB3aWR0aCxcbiAgICAgIGhlaWdodFxuICAgIH0gPSBlbGVtZW50UmVjdEZvclJvb3RNYXJnaW47XG4gICAgaWYgKCFza2lwKSB7XG4gICAgICBvbk1vdmUoKTtcbiAgICB9XG4gICAgaWYgKCF3aWR0aCB8fCAhaGVpZ2h0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGluc2V0VG9wID0gZmxvb3IodG9wKTtcbiAgICBjb25zdCBpbnNldFJpZ2h0ID0gZmxvb3Iocm9vdC5jbGllbnRXaWR0aCAtIChsZWZ0ICsgd2lkdGgpKTtcbiAgICBjb25zdCBpbnNldEJvdHRvbSA9IGZsb29yKHJvb3QuY2xpZW50SGVpZ2h0IC0gKHRvcCArIGhlaWdodCkpO1xuICAgIGNvbnN0IGluc2V0TGVmdCA9IGZsb29yKGxlZnQpO1xuICAgIGNvbnN0IHJvb3RNYXJnaW4gPSAtaW5zZXRUb3AgKyBcInB4IFwiICsgLWluc2V0UmlnaHQgKyBcInB4IFwiICsgLWluc2V0Qm90dG9tICsgXCJweCBcIiArIC1pbnNldExlZnQgKyBcInB4XCI7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgIHJvb3RNYXJnaW4sXG4gICAgICB0aHJlc2hvbGQ6IG1heCgwLCBtaW4oMSwgdGhyZXNob2xkKSkgfHwgMVxuICAgIH07XG4gICAgbGV0IGlzRmlyc3RVcGRhdGUgPSB0cnVlO1xuICAgIGZ1bmN0aW9uIGhhbmRsZU9ic2VydmUoZW50cmllcykge1xuICAgICAgY29uc3QgcmF0aW8gPSBlbnRyaWVzWzBdLmludGVyc2VjdGlvblJhdGlvO1xuICAgICAgaWYgKHJhdGlvICE9PSB0aHJlc2hvbGQpIHtcbiAgICAgICAgaWYgKCFpc0ZpcnN0VXBkYXRlKSB7XG4gICAgICAgICAgcmV0dXJuIHJlZnJlc2goKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXJhdGlvKSB7XG4gICAgICAgICAgLy8gSWYgdGhlIHJlZmVyZW5jZSBpcyBjbGlwcGVkLCB0aGUgcmF0aW8gaXMgMC4gVGhyb3R0bGUgdGhlIHJlZnJlc2hcbiAgICAgICAgICAvLyB0byBwcmV2ZW50IGFuIGluZmluaXRlIGxvb3Agb2YgdXBkYXRlcy5cbiAgICAgICAgICB0aW1lb3V0SWQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHJlZnJlc2goZmFsc2UsIDFlLTcpO1xuICAgICAgICAgIH0sIDEwMDApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlZnJlc2goZmFsc2UsIHJhdGlvKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHJhdGlvID09PSAxICYmICFyZWN0c0FyZUVxdWFsKGVsZW1lbnRSZWN0Rm9yUm9vdE1hcmdpbiwgZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSkpIHtcbiAgICAgICAgLy8gSXQncyBwb3NzaWJsZSB0aGF0IGV2ZW4gdGhvdWdoIHRoZSByYXRpbyBpcyByZXBvcnRlZCBhcyAxLCB0aGVcbiAgICAgICAgLy8gZWxlbWVudCBpcyBub3QgYWN0dWFsbHkgZnVsbHkgd2l0aGluIHRoZSBJbnRlcnNlY3Rpb25PYnNlcnZlcidzIHJvb3RcbiAgICAgICAgLy8gYXJlYSBhbnltb3JlLiBUaGlzIGNhbiBoYXBwZW4gdW5kZXIgcGVyZm9ybWFuY2UgY29uc3RyYWludHMuIFRoaXMgbWF5XG4gICAgICAgIC8vIGJlIGEgYnVnIGluIHRoZSBicm93c2VyJ3MgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgaW1wbGVtZW50YXRpb24uIFRvXG4gICAgICAgIC8vIHdvcmsgYXJvdW5kIHRoaXMsIHdlIGNvbXBhcmUgdGhlIGVsZW1lbnQncyBib3VuZGluZyByZWN0IG5vdyB3aXRoXG4gICAgICAgIC8vIHdoYXQgaXQgd2FzIGF0IHRoZSB0aW1lIHdlIGNyZWF0ZWQgdGhlIEludGVyc2VjdGlvbk9ic2VydmVyLiBJZiB0aGV5XG4gICAgICAgIC8vIGFyZSBub3QgZXF1YWwgdGhlbiB0aGUgZWxlbWVudCBtb3ZlZCwgc28gd2UgcmVmcmVzaC5cbiAgICAgICAgcmVmcmVzaCgpO1xuICAgICAgfVxuICAgICAgaXNGaXJzdFVwZGF0ZSA9IGZhbHNlO1xuICAgIH1cblxuICAgIC8vIE9sZGVyIGJyb3dzZXJzIGRvbid0IHN1cHBvcnQgYSBgZG9jdW1lbnRgIGFzIHRoZSByb290IGFuZCB3aWxsIHRocm93IGFuXG4gICAgLy8gZXJyb3IuXG4gICAgdHJ5IHtcbiAgICAgIGlvID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKGhhbmRsZU9ic2VydmUsIHtcbiAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgLy8gSGFuZGxlIDxpZnJhbWU+c1xuICAgICAgICByb290OiByb290Lm93bmVyRG9jdW1lbnRcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGlvID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKGhhbmRsZU9ic2VydmUsIG9wdGlvbnMpO1xuICAgIH1cbiAgICBpby5vYnNlcnZlKGVsZW1lbnQpO1xuICB9XG4gIHJlZnJlc2godHJ1ZSk7XG4gIHJldHVybiBjbGVhbnVwO1xufVxuXG4vKipcbiAqIEF1dG9tYXRpY2FsbHkgdXBkYXRlcyB0aGUgcG9zaXRpb24gb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgd2hlbiBuZWNlc3NhcnkuXG4gKiBTaG91bGQgb25seSBiZSBjYWxsZWQgd2hlbiB0aGUgZmxvYXRpbmcgZWxlbWVudCBpcyBtb3VudGVkIG9uIHRoZSBET00gb3JcbiAqIHZpc2libGUgb24gdGhlIHNjcmVlbi5cbiAqIEByZXR1cm5zIGNsZWFudXAgZnVuY3Rpb24gdGhhdCBzaG91bGQgYmUgaW52b2tlZCB3aGVuIHRoZSBmbG9hdGluZyBlbGVtZW50IGlzXG4gKiByZW1vdmVkIGZyb20gdGhlIERPTSBvciBoaWRkZW4gZnJvbSB0aGUgc2NyZWVuLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2F1dG9VcGRhdGVcbiAqL1xuZnVuY3Rpb24gYXV0b1VwZGF0ZShyZWZlcmVuY2UsIGZsb2F0aW5nLCB1cGRhdGUsIG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICBjb25zdCB7XG4gICAgYW5jZXN0b3JTY3JvbGwgPSB0cnVlLFxuICAgIGFuY2VzdG9yUmVzaXplID0gdHJ1ZSxcbiAgICBlbGVtZW50UmVzaXplID0gdHlwZW9mIFJlc2l6ZU9ic2VydmVyID09PSAnZnVuY3Rpb24nLFxuICAgIGxheW91dFNoaWZ0ID0gdHlwZW9mIEludGVyc2VjdGlvbk9ic2VydmVyID09PSAnZnVuY3Rpb24nLFxuICAgIGFuaW1hdGlvbkZyYW1lID0gZmFsc2VcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IHJlZmVyZW5jZUVsID0gdW53cmFwRWxlbWVudChyZWZlcmVuY2UpO1xuICBjb25zdCBhbmNlc3RvcnMgPSBhbmNlc3RvclNjcm9sbCB8fCBhbmNlc3RvclJlc2l6ZSA/IFsuLi4ocmVmZXJlbmNlRWwgPyBnZXRPdmVyZmxvd0FuY2VzdG9ycyhyZWZlcmVuY2VFbCkgOiBbXSksIC4uLmdldE92ZXJmbG93QW5jZXN0b3JzKGZsb2F0aW5nKV0gOiBbXTtcbiAgYW5jZXN0b3JzLmZvckVhY2goYW5jZXN0b3IgPT4ge1xuICAgIGFuY2VzdG9yU2Nyb2xsICYmIGFuY2VzdG9yLmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHVwZGF0ZSwge1xuICAgICAgcGFzc2l2ZTogdHJ1ZVxuICAgIH0pO1xuICAgIGFuY2VzdG9yUmVzaXplICYmIGFuY2VzdG9yLmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHVwZGF0ZSk7XG4gIH0pO1xuICBjb25zdCBjbGVhbnVwSW8gPSByZWZlcmVuY2VFbCAmJiBsYXlvdXRTaGlmdCA/IG9ic2VydmVNb3ZlKHJlZmVyZW5jZUVsLCB1cGRhdGUpIDogbnVsbDtcbiAgbGV0IHJlb2JzZXJ2ZUZyYW1lID0gLTE7XG4gIGxldCByZXNpemVPYnNlcnZlciA9IG51bGw7XG4gIGlmIChlbGVtZW50UmVzaXplKSB7XG4gICAgcmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoX3JlZiA9PiB7XG4gICAgICBsZXQgW2ZpcnN0RW50cnldID0gX3JlZjtcbiAgICAgIGlmIChmaXJzdEVudHJ5ICYmIGZpcnN0RW50cnkudGFyZ2V0ID09PSByZWZlcmVuY2VFbCAmJiByZXNpemVPYnNlcnZlcikge1xuICAgICAgICAvLyBQcmV2ZW50IHVwZGF0ZSBsb29wcyB3aGVuIHVzaW5nIHRoZSBgc2l6ZWAgbWlkZGxld2FyZS5cbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2Zsb2F0aW5nLXVpL2Zsb2F0aW5nLXVpL2lzc3Vlcy8xNzQwXG4gICAgICAgIHJlc2l6ZU9ic2VydmVyLnVub2JzZXJ2ZShmbG9hdGluZyk7XG4gICAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHJlb2JzZXJ2ZUZyYW1lKTtcbiAgICAgICAgcmVvYnNlcnZlRnJhbWUgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgIHZhciBfcmVzaXplT2JzZXJ2ZXI7XG4gICAgICAgICAgKF9yZXNpemVPYnNlcnZlciA9IHJlc2l6ZU9ic2VydmVyKSA9PSBudWxsIHx8IF9yZXNpemVPYnNlcnZlci5vYnNlcnZlKGZsb2F0aW5nKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICB1cGRhdGUoKTtcbiAgICB9KTtcbiAgICBpZiAocmVmZXJlbmNlRWwgJiYgIWFuaW1hdGlvbkZyYW1lKSB7XG4gICAgICByZXNpemVPYnNlcnZlci5vYnNlcnZlKHJlZmVyZW5jZUVsKTtcbiAgICB9XG4gICAgcmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZShmbG9hdGluZyk7XG4gIH1cbiAgbGV0IGZyYW1lSWQ7XG4gIGxldCBwcmV2UmVmUmVjdCA9IGFuaW1hdGlvbkZyYW1lID8gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KHJlZmVyZW5jZSkgOiBudWxsO1xuICBpZiAoYW5pbWF0aW9uRnJhbWUpIHtcbiAgICBmcmFtZUxvb3AoKTtcbiAgfVxuICBmdW5jdGlvbiBmcmFtZUxvb3AoKSB7XG4gICAgY29uc3QgbmV4dFJlZlJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3QocmVmZXJlbmNlKTtcbiAgICBpZiAocHJldlJlZlJlY3QgJiYgIXJlY3RzQXJlRXF1YWwocHJldlJlZlJlY3QsIG5leHRSZWZSZWN0KSkge1xuICAgICAgdXBkYXRlKCk7XG4gICAgfVxuICAgIHByZXZSZWZSZWN0ID0gbmV4dFJlZlJlY3Q7XG4gICAgZnJhbWVJZCA9IHJlcXVlc3RBbmltYXRpb25GcmFtZShmcmFtZUxvb3ApO1xuICB9XG4gIHVwZGF0ZSgpO1xuICByZXR1cm4gKCkgPT4ge1xuICAgIHZhciBfcmVzaXplT2JzZXJ2ZXIyO1xuICAgIGFuY2VzdG9ycy5mb3JFYWNoKGFuY2VzdG9yID0+IHtcbiAgICAgIGFuY2VzdG9yU2Nyb2xsICYmIGFuY2VzdG9yLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHVwZGF0ZSk7XG4gICAgICBhbmNlc3RvclJlc2l6ZSAmJiBhbmNlc3Rvci5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCB1cGRhdGUpO1xuICAgIH0pO1xuICAgIGNsZWFudXBJbyA9PSBudWxsIHx8IGNsZWFudXBJbygpO1xuICAgIChfcmVzaXplT2JzZXJ2ZXIyID0gcmVzaXplT2JzZXJ2ZXIpID09IG51bGwgfHwgX3Jlc2l6ZU9ic2VydmVyMi5kaXNjb25uZWN0KCk7XG4gICAgcmVzaXplT2JzZXJ2ZXIgPSBudWxsO1xuICAgIGlmIChhbmltYXRpb25GcmFtZSkge1xuICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUoZnJhbWVJZCk7XG4gICAgfVxuICB9O1xufVxuXG4vKipcbiAqIFJlc29sdmVzIHdpdGggYW4gb2JqZWN0IG9mIG92ZXJmbG93IHNpZGUgb2Zmc2V0cyB0aGF0IGRldGVybWluZSBob3cgbXVjaCB0aGVcbiAqIGVsZW1lbnQgaXMgb3ZlcmZsb3dpbmcgYSBnaXZlbiBjbGlwcGluZyBib3VuZGFyeSBvbiBlYWNoIHNpZGUuXG4gKiAtIHBvc2l0aXZlID0gb3ZlcmZsb3dpbmcgdGhlIGJvdW5kYXJ5IGJ5IHRoYXQgbnVtYmVyIG9mIHBpeGVsc1xuICogLSBuZWdhdGl2ZSA9IGhvdyBtYW55IHBpeGVscyBsZWZ0IGJlZm9yZSBpdCB3aWxsIG92ZXJmbG93XG4gKiAtIDAgPSBsaWVzIGZsdXNoIHdpdGggdGhlIGJvdW5kYXJ5XG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvZGV0ZWN0T3ZlcmZsb3dcbiAqL1xuY29uc3QgZGV0ZWN0T3ZlcmZsb3cgPSBkZXRlY3RPdmVyZmxvdyQxO1xuXG4vKipcbiAqIE1vZGlmaWVzIHRoZSBwbGFjZW1lbnQgYnkgdHJhbnNsYXRpbmcgdGhlIGZsb2F0aW5nIGVsZW1lbnQgYWxvbmcgdGhlXG4gKiBzcGVjaWZpZWQgYXhlcy5cbiAqIEEgbnVtYmVyIChzaG9ydGhhbmQgZm9yIGBtYWluQXhpc2Agb3IgZGlzdGFuY2UpLCBvciBhbiBheGVzIGNvbmZpZ3VyYXRpb25cbiAqIG9iamVjdCBtYXkgYmUgcGFzc2VkLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL29mZnNldFxuICovXG5jb25zdCBvZmZzZXQgPSBvZmZzZXQkMTtcblxuLyoqXG4gKiBPcHRpbWl6ZXMgdGhlIHZpc2liaWxpdHkgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgYnkgY2hvb3NpbmcgdGhlIHBsYWNlbWVudFxuICogdGhhdCBoYXMgdGhlIG1vc3Qgc3BhY2UgYXZhaWxhYmxlIGF1dG9tYXRpY2FsbHksIHdpdGhvdXQgbmVlZGluZyB0byBzcGVjaWZ5IGFcbiAqIHByZWZlcnJlZCBwbGFjZW1lbnQuIEFsdGVybmF0aXZlIHRvIGBmbGlwYC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9hdXRvUGxhY2VtZW50XG4gKi9cbmNvbnN0IGF1dG9QbGFjZW1lbnQgPSBhdXRvUGxhY2VtZW50JDE7XG5cbi8qKlxuICogT3B0aW1pemVzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IGJ5IHNoaWZ0aW5nIGl0IGluIG9yZGVyIHRvXG4gKiBrZWVwIGl0IGluIHZpZXcgd2hlbiBpdCB3aWxsIG92ZXJmbG93IHRoZSBjbGlwcGluZyBib3VuZGFyeS5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9zaGlmdFxuICovXG5jb25zdCBzaGlmdCA9IHNoaWZ0JDE7XG5cbi8qKlxuICogT3B0aW1pemVzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IGJ5IGZsaXBwaW5nIHRoZSBgcGxhY2VtZW50YFxuICogaW4gb3JkZXIgdG8ga2VlcCBpdCBpbiB2aWV3IHdoZW4gdGhlIHByZWZlcnJlZCBwbGFjZW1lbnQocykgd2lsbCBvdmVyZmxvdyB0aGVcbiAqIGNsaXBwaW5nIGJvdW5kYXJ5LiBBbHRlcm5hdGl2ZSB0byBgYXV0b1BsYWNlbWVudGAuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvZmxpcFxuICovXG5jb25zdCBmbGlwID0gZmxpcCQxO1xuXG4vKipcbiAqIFByb3ZpZGVzIGRhdGEgdGhhdCBhbGxvd3MgeW91IHRvIGNoYW5nZSB0aGUgc2l6ZSBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCDigJRcbiAqIGZvciBpbnN0YW5jZSwgcHJldmVudCBpdCBmcm9tIG92ZXJmbG93aW5nIHRoZSBjbGlwcGluZyBib3VuZGFyeSBvciBtYXRjaCB0aGVcbiAqIHdpZHRoIG9mIHRoZSByZWZlcmVuY2UgZWxlbWVudC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9zaXplXG4gKi9cbmNvbnN0IHNpemUgPSBzaXplJDE7XG5cbi8qKlxuICogUHJvdmlkZXMgZGF0YSB0byBoaWRlIHRoZSBmbG9hdGluZyBlbGVtZW50IGluIGFwcGxpY2FibGUgc2l0dWF0aW9ucywgc3VjaCBhc1xuICogd2hlbiBpdCBpcyBub3QgaW4gdGhlIHNhbWUgY2xpcHBpbmcgY29udGV4dCBhcyB0aGUgcmVmZXJlbmNlIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvaGlkZVxuICovXG5jb25zdCBoaWRlID0gaGlkZSQxO1xuXG4vKipcbiAqIFByb3ZpZGVzIGRhdGEgdG8gcG9zaXRpb24gYW4gaW5uZXIgZWxlbWVudCBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCBzbyB0aGF0IGl0XG4gKiBhcHBlYXJzIGNlbnRlcmVkIHRvIHRoZSByZWZlcmVuY2UgZWxlbWVudC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9hcnJvd1xuICovXG5jb25zdCBhcnJvdyA9IGFycm93JDE7XG5cbi8qKlxuICogUHJvdmlkZXMgaW1wcm92ZWQgcG9zaXRpb25pbmcgZm9yIGlubGluZSByZWZlcmVuY2UgZWxlbWVudHMgdGhhdCBjYW4gc3BhblxuICogb3ZlciBtdWx0aXBsZSBsaW5lcywgc3VjaCBhcyBoeXBlcmxpbmtzIG9yIHJhbmdlIHNlbGVjdGlvbnMuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvaW5saW5lXG4gKi9cbmNvbnN0IGlubGluZSA9IGlubGluZSQxO1xuXG4vKipcbiAqIEJ1aWx0LWluIGBsaW1pdGVyYCB0aGF0IHdpbGwgc3RvcCBgc2hpZnQoKWAgYXQgYSBjZXJ0YWluIHBvaW50LlxuICovXG5jb25zdCBsaW1pdFNoaWZ0ID0gbGltaXRTaGlmdCQxO1xuXG4vKipcbiAqIENvbXB1dGVzIHRoZSBgeGAgYW5kIGB5YCBjb29yZGluYXRlcyB0aGF0IHdpbGwgcGxhY2UgdGhlIGZsb2F0aW5nIGVsZW1lbnRcbiAqIG5leHQgdG8gYSBnaXZlbiByZWZlcmVuY2UgZWxlbWVudC5cbiAqL1xuY29uc3QgY29tcHV0ZVBvc2l0aW9uID0gKHJlZmVyZW5jZSwgZmxvYXRpbmcsIG9wdGlvbnMpID0+IHtcbiAgLy8gVGhpcyBjYWNoZXMgdGhlIGV4cGVuc2l2ZSBgZ2V0Q2xpcHBpbmdFbGVtZW50QW5jZXN0b3JzYCBmdW5jdGlvbiBzbyB0aGF0XG4gIC8vIG11bHRpcGxlIGxpZmVjeWNsZSByZXNldHMgcmUtdXNlIHRoZSBzYW1lIHJlc3VsdC4gSXQgb25seSBsaXZlcyBmb3IgYVxuICAvLyBzaW5nbGUgY2FsbC4gSWYgb3RoZXIgZnVuY3Rpb25zIGJlY29tZSBleHBlbnNpdmUsIHdlIGNhbiBhZGQgdGhlbSBhcyB3ZWxsLlxuICBjb25zdCBjYWNoZSA9IG5ldyBNYXAoKTtcbiAgY29uc3QgbWVyZ2VkT3B0aW9ucyA9IHtcbiAgICBwbGF0Zm9ybSxcbiAgICAuLi5vcHRpb25zXG4gIH07XG4gIGNvbnN0IHBsYXRmb3JtV2l0aENhY2hlID0ge1xuICAgIC4uLm1lcmdlZE9wdGlvbnMucGxhdGZvcm0sXG4gICAgX2M6IGNhY2hlXG4gIH07XG4gIHJldHVybiBjb21wdXRlUG9zaXRpb24kMShyZWZlcmVuY2UsIGZsb2F0aW5nLCB7XG4gICAgLi4ubWVyZ2VkT3B0aW9ucyxcbiAgICBwbGF0Zm9ybTogcGxhdGZvcm1XaXRoQ2FjaGVcbiAgfSk7XG59O1xuXG5leHBvcnQgeyBhcnJvdywgYXV0b1BsYWNlbWVudCwgYXV0b1VwZGF0ZSwgY29tcHV0ZVBvc2l0aW9uLCBkZXRlY3RPdmVyZmxvdywgZmxpcCwgaGlkZSwgaW5saW5lLCBsaW1pdFNoaWZ0LCBvZmZzZXQsIHBsYXRmb3JtLCBzaGlmdCwgc2l6ZSB9O1xuIiwiaW1wb3J0IHsgYXJyb3cgYXMgYXJyb3ckMSwgY29tcHV0ZVBvc2l0aW9uIH0gZnJvbSAnQGZsb2F0aW5nLXVpL2RvbSc7XG5leHBvcnQgeyBhdXRvUGxhY2VtZW50LCBhdXRvVXBkYXRlLCBjb21wdXRlUG9zaXRpb24sIGRldGVjdE92ZXJmbG93LCBmbGlwLCBnZXRPdmVyZmxvd0FuY2VzdG9ycywgaGlkZSwgaW5saW5lLCBsaW1pdFNoaWZ0LCBvZmZzZXQsIHBsYXRmb3JtLCBzaGlmdCwgc2l6ZSB9IGZyb20gJ0BmbG9hdGluZy11aS9kb20nO1xuaW1wb3J0IHsgaXNOb2RlLCBnZXROb2RlTmFtZSB9IGZyb20gJ0BmbG9hdGluZy11aS91dGlscy9kb20nO1xuaW1wb3J0IHsgdW5yZWYsIGNvbXB1dGVkLCByZWYsIHNoYWxsb3dSZWYsIHdhdGNoLCBnZXRDdXJyZW50U2NvcGUsIG9uU2NvcGVEaXNwb3NlLCBzaGFsbG93UmVhZG9ubHkgfSBmcm9tICd2dWUtZGVtaSc7XG5cbmZ1bmN0aW9uIGlzQ29tcG9uZW50UHVibGljSW5zdGFuY2UodGFyZ2V0KSB7XG4gIHJldHVybiB0YXJnZXQgIT0gbnVsbCAmJiB0eXBlb2YgdGFyZ2V0ID09PSAnb2JqZWN0JyAmJiAnJGVsJyBpbiB0YXJnZXQ7XG59XG5mdW5jdGlvbiB1bndyYXBFbGVtZW50KHRhcmdldCkge1xuICBpZiAoaXNDb21wb25lbnRQdWJsaWNJbnN0YW5jZSh0YXJnZXQpKSB7XG4gICAgY29uc3QgZWxlbWVudCA9IHRhcmdldC4kZWw7XG4gICAgcmV0dXJuIGlzTm9kZShlbGVtZW50KSAmJiBnZXROb2RlTmFtZShlbGVtZW50KSA9PT0gJyNjb21tZW50JyA/IG51bGwgOiBlbGVtZW50O1xuICB9XG4gIHJldHVybiB0YXJnZXQ7XG59XG5cbmZ1bmN0aW9uIHRvVmFsdWUoc291cmNlKSB7XG4gIHJldHVybiB0eXBlb2Ygc291cmNlID09PSAnZnVuY3Rpb24nID8gc291cmNlKCkgOiB1bnJlZihzb3VyY2UpO1xufVxuXG4vKipcbiAqIFBvc2l0aW9ucyBhbiBpbm5lciBlbGVtZW50IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IHN1Y2ggdGhhdCBpdCBpcyBjZW50ZXJlZCB0byB0aGUgcmVmZXJlbmNlIGVsZW1lbnQuXG4gKiBAcGFyYW0gb3B0aW9ucyBUaGUgYXJyb3cgb3B0aW9ucy5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9hcnJvd1xuICovXG5mdW5jdGlvbiBhcnJvdyhvcHRpb25zKSB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ2Fycm93JyxcbiAgICBvcHRpb25zLFxuICAgIGZuKGFyZ3MpIHtcbiAgICAgIGNvbnN0IGVsZW1lbnQgPSB1bndyYXBFbGVtZW50KHRvVmFsdWUob3B0aW9ucy5lbGVtZW50KSk7XG4gICAgICBpZiAoZWxlbWVudCA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhcnJvdyQxKHtcbiAgICAgICAgZWxlbWVudCxcbiAgICAgICAgcGFkZGluZzogb3B0aW9ucy5wYWRkaW5nXG4gICAgICB9KS5mbihhcmdzKTtcbiAgICB9XG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldERQUihlbGVtZW50KSB7XG4gIGlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiAxO1xuICB9XG4gIGNvbnN0IHdpbiA9IGVsZW1lbnQub3duZXJEb2N1bWVudC5kZWZhdWx0VmlldyB8fCB3aW5kb3c7XG4gIHJldHVybiB3aW4uZGV2aWNlUGl4ZWxSYXRpbyB8fCAxO1xufVxuXG5mdW5jdGlvbiByb3VuZEJ5RFBSKGVsZW1lbnQsIHZhbHVlKSB7XG4gIGNvbnN0IGRwciA9IGdldERQUihlbGVtZW50KTtcbiAgcmV0dXJuIE1hdGgucm91bmQodmFsdWUgKiBkcHIpIC8gZHByO1xufVxuXG4vKipcbiAqIENvbXB1dGVzIHRoZSBgeGAgYW5kIGB5YCBjb29yZGluYXRlcyB0aGF0IHdpbGwgcGxhY2UgdGhlIGZsb2F0aW5nIGVsZW1lbnQgbmV4dCB0byBhIHJlZmVyZW5jZSBlbGVtZW50IHdoZW4gaXQgaXMgZ2l2ZW4gYSBjZXJ0YWluIENTUyBwb3NpdGlvbmluZyBzdHJhdGVneS5cbiAqIEBwYXJhbSByZWZlcmVuY2UgVGhlIHJlZmVyZW5jZSB0ZW1wbGF0ZSByZWYuXG4gKiBAcGFyYW0gZmxvYXRpbmcgVGhlIGZsb2F0aW5nIHRlbXBsYXRlIHJlZi5cbiAqIEBwYXJhbSBvcHRpb25zIFRoZSBmbG9hdGluZyBvcHRpb25zLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL3Z1ZVxuICovXG5mdW5jdGlvbiB1c2VGbG9hdGluZyhyZWZlcmVuY2UsIGZsb2F0aW5nLCBvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cbiAgY29uc3Qgd2hpbGVFbGVtZW50c01vdW50ZWRPcHRpb24gPSBvcHRpb25zLndoaWxlRWxlbWVudHNNb3VudGVkO1xuICBjb25zdCBvcGVuT3B0aW9uID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHZhciBfdG9WYWx1ZTtcbiAgICByZXR1cm4gKF90b1ZhbHVlID0gdG9WYWx1ZShvcHRpb25zLm9wZW4pKSAhPSBudWxsID8gX3RvVmFsdWUgOiB0cnVlO1xuICB9KTtcbiAgY29uc3QgbWlkZGxld2FyZU9wdGlvbiA9IGNvbXB1dGVkKCgpID0+IHRvVmFsdWUob3B0aW9ucy5taWRkbGV3YXJlKSk7XG4gIGNvbnN0IHBsYWNlbWVudE9wdGlvbiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICB2YXIgX3RvVmFsdWUyO1xuICAgIHJldHVybiAoX3RvVmFsdWUyID0gdG9WYWx1ZShvcHRpb25zLnBsYWNlbWVudCkpICE9IG51bGwgPyBfdG9WYWx1ZTIgOiAnYm90dG9tJztcbiAgfSk7XG4gIGNvbnN0IHN0cmF0ZWd5T3B0aW9uID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHZhciBfdG9WYWx1ZTM7XG4gICAgcmV0dXJuIChfdG9WYWx1ZTMgPSB0b1ZhbHVlKG9wdGlvbnMuc3RyYXRlZ3kpKSAhPSBudWxsID8gX3RvVmFsdWUzIDogJ2Fic29sdXRlJztcbiAgfSk7XG4gIGNvbnN0IHRyYW5zZm9ybU9wdGlvbiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICB2YXIgX3RvVmFsdWU0O1xuICAgIHJldHVybiAoX3RvVmFsdWU0ID0gdG9WYWx1ZShvcHRpb25zLnRyYW5zZm9ybSkpICE9IG51bGwgPyBfdG9WYWx1ZTQgOiB0cnVlO1xuICB9KTtcbiAgY29uc3QgcmVmZXJlbmNlRWxlbWVudCA9IGNvbXB1dGVkKCgpID0+IHVud3JhcEVsZW1lbnQocmVmZXJlbmNlLnZhbHVlKSk7XG4gIGNvbnN0IGZsb2F0aW5nRWxlbWVudCA9IGNvbXB1dGVkKCgpID0+IHVud3JhcEVsZW1lbnQoZmxvYXRpbmcudmFsdWUpKTtcbiAgY29uc3QgeCA9IHJlZigwKTtcbiAgY29uc3QgeSA9IHJlZigwKTtcbiAgY29uc3Qgc3RyYXRlZ3kgPSByZWYoc3RyYXRlZ3lPcHRpb24udmFsdWUpO1xuICBjb25zdCBwbGFjZW1lbnQgPSByZWYocGxhY2VtZW50T3B0aW9uLnZhbHVlKTtcbiAgY29uc3QgbWlkZGxld2FyZURhdGEgPSBzaGFsbG93UmVmKHt9KTtcbiAgY29uc3QgaXNQb3NpdGlvbmVkID0gcmVmKGZhbHNlKTtcbiAgY29uc3QgZmxvYXRpbmdTdHlsZXMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgaW5pdGlhbFN0eWxlcyA9IHtcbiAgICAgIHBvc2l0aW9uOiBzdHJhdGVneS52YWx1ZSxcbiAgICAgIGxlZnQ6ICcwJyxcbiAgICAgIHRvcDogJzAnXG4gICAgfTtcbiAgICBpZiAoIWZsb2F0aW5nRWxlbWVudC52YWx1ZSkge1xuICAgICAgcmV0dXJuIGluaXRpYWxTdHlsZXM7XG4gICAgfVxuICAgIGNvbnN0IHhWYWwgPSByb3VuZEJ5RFBSKGZsb2F0aW5nRWxlbWVudC52YWx1ZSwgeC52YWx1ZSk7XG4gICAgY29uc3QgeVZhbCA9IHJvdW5kQnlEUFIoZmxvYXRpbmdFbGVtZW50LnZhbHVlLCB5LnZhbHVlKTtcbiAgICBpZiAodHJhbnNmb3JtT3B0aW9uLnZhbHVlKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5pbml0aWFsU3R5bGVzLFxuICAgICAgICB0cmFuc2Zvcm06IFwidHJhbnNsYXRlKFwiICsgeFZhbCArIFwicHgsIFwiICsgeVZhbCArIFwicHgpXCIsXG4gICAgICAgIC4uLihnZXREUFIoZmxvYXRpbmdFbGVtZW50LnZhbHVlKSA+PSAxLjUgJiYge1xuICAgICAgICAgIHdpbGxDaGFuZ2U6ICd0cmFuc2Zvcm0nXG4gICAgICAgIH0pXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgcG9zaXRpb246IHN0cmF0ZWd5LnZhbHVlLFxuICAgICAgbGVmdDogeFZhbCArIFwicHhcIixcbiAgICAgIHRvcDogeVZhbCArIFwicHhcIlxuICAgIH07XG4gIH0pO1xuICBsZXQgd2hpbGVFbGVtZW50c01vdW50ZWRDbGVhbnVwO1xuICBmdW5jdGlvbiB1cGRhdGUoKSB7XG4gICAgaWYgKHJlZmVyZW5jZUVsZW1lbnQudmFsdWUgPT0gbnVsbCB8fCBmbG9hdGluZ0VsZW1lbnQudmFsdWUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBvcGVuID0gb3Blbk9wdGlvbi52YWx1ZTtcbiAgICBjb21wdXRlUG9zaXRpb24ocmVmZXJlbmNlRWxlbWVudC52YWx1ZSwgZmxvYXRpbmdFbGVtZW50LnZhbHVlLCB7XG4gICAgICBtaWRkbGV3YXJlOiBtaWRkbGV3YXJlT3B0aW9uLnZhbHVlLFxuICAgICAgcGxhY2VtZW50OiBwbGFjZW1lbnRPcHRpb24udmFsdWUsXG4gICAgICBzdHJhdGVneTogc3RyYXRlZ3lPcHRpb24udmFsdWVcbiAgICB9KS50aGVuKHBvc2l0aW9uID0+IHtcbiAgICAgIHgudmFsdWUgPSBwb3NpdGlvbi54O1xuICAgICAgeS52YWx1ZSA9IHBvc2l0aW9uLnk7XG4gICAgICBzdHJhdGVneS52YWx1ZSA9IHBvc2l0aW9uLnN0cmF0ZWd5O1xuICAgICAgcGxhY2VtZW50LnZhbHVlID0gcG9zaXRpb24ucGxhY2VtZW50O1xuICAgICAgbWlkZGxld2FyZURhdGEudmFsdWUgPSBwb3NpdGlvbi5taWRkbGV3YXJlRGF0YTtcbiAgICAgIC8qKlxuICAgICAgICogVGhlIGZsb2F0aW5nIGVsZW1lbnQncyBwb3NpdGlvbiBtYXkgYmUgcmVjb21wdXRlZCB3aGlsZSBpdCdzIGNsb3NlZFxuICAgICAgICogYnV0IHN0aWxsIG1vdW50ZWQgKHN1Y2ggYXMgd2hlbiB0cmFuc2l0aW9uaW5nIG91dCkuIFRvIGVuc3VyZVxuICAgICAgICogYGlzUG9zaXRpb25lZGAgd2lsbCBiZSBgZmFsc2VgIGluaXRpYWxseSBvbiB0aGUgbmV4dCBvcGVuLCBhdm9pZFxuICAgICAgICogc2V0dGluZyBpdCB0byBgdHJ1ZWAgd2hlbiBgb3BlbiA9PT0gZmFsc2VgIChtdXN0IGJlIHNwZWNpZmllZCkuXG4gICAgICAgKi9cbiAgICAgIGlzUG9zaXRpb25lZC52YWx1ZSA9IG9wZW4gIT09IGZhbHNlO1xuICAgIH0pO1xuICB9XG4gIGZ1bmN0aW9uIGNsZWFudXAoKSB7XG4gICAgaWYgKHR5cGVvZiB3aGlsZUVsZW1lbnRzTW91bnRlZENsZWFudXAgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHdoaWxlRWxlbWVudHNNb3VudGVkQ2xlYW51cCgpO1xuICAgICAgd2hpbGVFbGVtZW50c01vdW50ZWRDbGVhbnVwID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuICBmdW5jdGlvbiBhdHRhY2goKSB7XG4gICAgY2xlYW51cCgpO1xuICAgIGlmICh3aGlsZUVsZW1lbnRzTW91bnRlZE9wdGlvbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB1cGRhdGUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHJlZmVyZW5jZUVsZW1lbnQudmFsdWUgIT0gbnVsbCAmJiBmbG9hdGluZ0VsZW1lbnQudmFsdWUgIT0gbnVsbCkge1xuICAgICAgd2hpbGVFbGVtZW50c01vdW50ZWRDbGVhbnVwID0gd2hpbGVFbGVtZW50c01vdW50ZWRPcHRpb24ocmVmZXJlbmNlRWxlbWVudC52YWx1ZSwgZmxvYXRpbmdFbGVtZW50LnZhbHVlLCB1cGRhdGUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuICBmdW5jdGlvbiByZXNldCgpIHtcbiAgICBpZiAoIW9wZW5PcHRpb24udmFsdWUpIHtcbiAgICAgIGlzUG9zaXRpb25lZC52YWx1ZSA9IGZhbHNlO1xuICAgIH1cbiAgfVxuICB3YXRjaChbbWlkZGxld2FyZU9wdGlvbiwgcGxhY2VtZW50T3B0aW9uLCBzdHJhdGVneU9wdGlvbiwgb3Blbk9wdGlvbl0sIHVwZGF0ZSwge1xuICAgIGZsdXNoOiAnc3luYydcbiAgfSk7XG4gIHdhdGNoKFtyZWZlcmVuY2VFbGVtZW50LCBmbG9hdGluZ0VsZW1lbnRdLCBhdHRhY2gsIHtcbiAgICBmbHVzaDogJ3N5bmMnXG4gIH0pO1xuICB3YXRjaChvcGVuT3B0aW9uLCByZXNldCwge1xuICAgIGZsdXNoOiAnc3luYydcbiAgfSk7XG4gIGlmIChnZXRDdXJyZW50U2NvcGUoKSkge1xuICAgIG9uU2NvcGVEaXNwb3NlKGNsZWFudXApO1xuICB9XG4gIHJldHVybiB7XG4gICAgeDogc2hhbGxvd1JlYWRvbmx5KHgpLFxuICAgIHk6IHNoYWxsb3dSZWFkb25seSh5KSxcbiAgICBzdHJhdGVneTogc2hhbGxvd1JlYWRvbmx5KHN0cmF0ZWd5KSxcbiAgICBwbGFjZW1lbnQ6IHNoYWxsb3dSZWFkb25seShwbGFjZW1lbnQpLFxuICAgIG1pZGRsZXdhcmVEYXRhOiBzaGFsbG93UmVhZG9ubHkobWlkZGxld2FyZURhdGEpLFxuICAgIGlzUG9zaXRpb25lZDogc2hhbGxvd1JlYWRvbmx5KGlzUG9zaXRpb25lZCksXG4gICAgZmxvYXRpbmdTdHlsZXMsXG4gICAgdXBkYXRlXG4gIH07XG59XG5cbmV4cG9ydCB7IGFycm93LCB1c2VGbG9hdGluZyB9O1xuIiwiZXhwb3J0IGNvbnN0IGlzQ2xpY2tPdXRzaWRlID0gKGV2ZW50OiBNb3VzZUV2ZW50LCBlbGVtZW50czogSFRNTEVsZW1lbnQgfCBIVE1MRWxlbWVudFtdKTogYm9vbGVhbiA9PiB7XG4gIGNvbnN0IHRhcmdldHMgPSBBcnJheS5pc0FycmF5KGVsZW1lbnRzKSA/IGVsZW1lbnRzIDogW2VsZW1lbnRzXTtcbiAgcmV0dXJuICF0YXJnZXRzLnNvbWUoKGVsKSA9PiBlbC5jb250YWlucyhldmVudC50YXJnZXQgYXMgTm9kZSkpO1xufTtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGF1dG9QbGFjZW1lbnQsIGF1dG9VcGRhdGUsIG9mZnNldCBhcyBvZmZzZXRNaWRkbGV3YXJlLCBzaGlmdCwgdXNlRmxvYXRpbmcgfSBmcm9tICdAZmxvYXRpbmctdWkvdnVlJztcbiAgaW1wb3J0IHsgY29tcHV0ZWQsIG9uQmVmb3JlTW91bnQsIG9uTW91bnRlZCwgb25Vbm1vdW50ZWQsIHJlZiwgd2F0Y2gsIHdhdGNoRWZmZWN0IH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IGlzQ2xpY2tPdXRzaWRlIH0gZnJvbSAnQC91dGlsaXRpZXMvZXZlbnQnO1xuICBpbXBvcnQgeyBUT1BfTEFZRVJfSUQsIGluaXRGYXV4VG9wTGF5ZXIgfSBmcm9tICdAL3V0aWxpdGllcy92aWV3cG9ydCc7XG5cbiAgaW1wb3J0IHR5cGUgeyBSZWYgfSBmcm9tICd2dWUnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgYW5jaG9ySWQ6IHN0cmluZztcbiAgICBvZmZzZXQ/OiBudW1iZXI7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBvZmZzZXQ6IDE2LFxuICB9KTtcblxuICBjb25zdCBhbmNob3I6IFJlZjxIVE1MRWxlbWVudCB8IG51bGw+ID0gcmVmKG51bGwpO1xuICBjb25zdCBmbG9hdGluZzogUmVmPEhUTUxFbGVtZW50IHwgbnVsbD4gPSByZWYobnVsbCk7XG4gIGNvbnN0IHJvb3Q6IFJlZjxIVE1MRWxlbWVudCB8IG51bGw+ID0gcmVmKG51bGwpO1xuICBjb25zdCBpc0hvdmVyZWQgPSByZWYoZmFsc2UpO1xuICBjb25zdCBpc1RvZ2dsZWRPcGVuID0gcmVmKGZhbHNlKTtcbiAgY29uc3QgbWlkZGxld2FyZSA9IHJlZihbYXV0b1BsYWNlbWVudCgpLCBvZmZzZXRNaWRkbGV3YXJlKHsgbWFpbkF4aXM6IHByb3BzLm9mZnNldCB9KSwgc2hpZnQoeyBwYWRkaW5nOiAxNiB9KV0pO1xuXG4gIGNvbnN0IGlzU2hvd1BvcG92ZXIgPSBjb21wdXRlZCgoKSA9PiBpc0hvdmVyZWQudmFsdWUgfHwgaXNUb2dnbGVkT3Blbi52YWx1ZSk7XG5cbiAgY29uc3QgeyBmbG9hdGluZ1N0eWxlcyB9ID0gdXNlRmxvYXRpbmcoYW5jaG9yLCBmbG9hdGluZywge1xuICAgIG1pZGRsZXdhcmUsXG4gICAgc3RyYXRlZ3k6ICdmaXhlZCcsXG4gICAgd2hpbGVFbGVtZW50c01vdW50ZWQ6IGF1dG9VcGRhdGUsXG4gIH0pO1xuXG4gIGNvbnN0IGhhbmRsZVBlcm1hbmVudE9wZW5Cb2R5Q2xpY2sgPSAoZTogTW91c2VFdmVudCkgPT4ge1xuICAgIGlmICghYW5jaG9yLnZhbHVlIHx8ICFmbG9hdGluZy52YWx1ZSkgcmV0dXJuO1xuICAgIGlmIChpc0NsaWNrT3V0c2lkZShlLCBbYW5jaG9yLnZhbHVlLCBmbG9hdGluZy52YWx1ZV0pKSB7XG4gICAgICBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgICAgaXNUb2dnbGVkT3Blbi52YWx1ZSA9IGZhbHNlO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBoYW5kbGVBbmNob3JFbGVtZW50TW91c2VPdmVyID0gKCkgPT4ge1xuICAgIGlzSG92ZXJlZC52YWx1ZSA9IHRydWU7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQW5jaG9yRWxlbWVudE1vdXNlTGVhdmUgPSAoKSA9PiB7XG4gICAgaXNIb3ZlcmVkLnZhbHVlID0gZmFsc2U7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQW5jaG9yRWxlbWVudENsaWNrID0gKCkgPT4ge1xuICAgIGlzVG9nZ2xlZE9wZW4udmFsdWUgPSB0cnVlO1xuICB9O1xuXG4gIGNvbnN0IGFkZExpc3RlbmVyc1RvQW5jaG9yRWxlbWVudCA9ICgpID0+IHtcbiAgICBpZiAoIWFuY2hvci52YWx1ZSkgcmV0dXJuIG51bGw7XG4gICAgYW5jaG9yLnZhbHVlLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlb3ZlcicsIGhhbmRsZUFuY2hvckVsZW1lbnRNb3VzZU92ZXIpO1xuICAgIGFuY2hvci52YWx1ZS5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJywgaGFuZGxlQW5jaG9yRWxlbWVudE1vdXNlTGVhdmUpO1xuICAgIGFuY2hvci52YWx1ZS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGhhbmRsZUFuY2hvckVsZW1lbnRDbGljayk7XG4gIH07XG5cbiAgY29uc3QgcmVtb3ZlTGlzdGVuZXJzRnJvbUFuY2hvckVsZW1lbnQgPSAoKSA9PiB7XG4gICAgaWYgKCFhbmNob3IudmFsdWUpIHJldHVybiBudWxsO1xuICAgIGFuY2hvci52YWx1ZS5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW92ZXInLCBoYW5kbGVBbmNob3JFbGVtZW50TW91c2VPdmVyKTtcbiAgICBhbmNob3IudmFsdWUucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2VsZWF2ZScsIGhhbmRsZUFuY2hvckVsZW1lbnRNb3VzZUxlYXZlKTtcbiAgICBhbmNob3IudmFsdWUucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCBoYW5kbGVBbmNob3JFbGVtZW50Q2xpY2spO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVBlcm1hbmVudE9wZW5Cb2R5S2V5ZG93biA9IChlOiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgaWYgKGUua2V5ID09PSAnRXNjYXBlJykge1xuICAgICAgaXNUb2dnbGVkT3Blbi52YWx1ZSA9IGZhbHNlO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBhZGRPcGVuTGlzdGVuZXJzVG9Sb290ID0gKCkgPT4ge1xuICAgIGlmICghcm9vdC52YWx1ZSkgcmV0dXJuO1xuICAgIHJvb3QudmFsdWUuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBoYW5kbGVQZXJtYW5lbnRPcGVuQm9keUNsaWNrLCB0cnVlKTtcbiAgICByb290LnZhbHVlLmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBoYW5kbGVQZXJtYW5lbnRPcGVuQm9keUtleWRvd24pO1xuICB9O1xuXG4gIGNvbnN0IHJlbW92ZU9wZW5MaXN0ZW5lcnNGcm9tUm9vdCA9ICgpID0+IHtcbiAgICBpZiAoIXJvb3QudmFsdWUpIHJldHVybjtcbiAgICByb290LnZhbHVlLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlUGVybWFuZW50T3BlbkJvZHlDbGljaywgdHJ1ZSk7XG4gICAgcm9vdC52YWx1ZS5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXlkb3duJywgaGFuZGxlUGVybWFuZW50T3BlbkJvZHlLZXlkb3duKTtcbiAgfTtcblxuICBjb25zdCB1cGRhdGVBbmNob3JFbGVtZW50ID0gKCkgPT4ge1xuICAgIGFuY2hvci52YWx1ZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHByb3BzLmFuY2hvcklkKTtcbiAgfTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBpc1RvZ2dsZWRPcGVuLnZhbHVlLFxuICAgIChuZXdWYWx1ZSkgPT4ge1xuICAgICAgaWYgKG5ld1ZhbHVlKSB7XG4gICAgICAgIGFkZE9wZW5MaXN0ZW5lcnNUb1Jvb3QoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlbW92ZU9wZW5MaXN0ZW5lcnNGcm9tUm9vdCgpO1xuICAgICAgfVxuICAgIH1cbiAgKTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBwcm9wcy5hbmNob3JJZCxcbiAgICAoKSA9PiB7XG4gICAgICByZW1vdmVMaXN0ZW5lcnNGcm9tQW5jaG9yRWxlbWVudCgpO1xuICAgICAgdXBkYXRlQW5jaG9yRWxlbWVudCgpO1xuICAgICAgYWRkTGlzdGVuZXJzVG9BbmNob3JFbGVtZW50KCk7XG4gICAgfVxuICApO1xuXG4gIHdhdGNoRWZmZWN0KCgpID0+IHtcbiAgICBtaWRkbGV3YXJlLnZhbHVlID0gW2F1dG9QbGFjZW1lbnQoKSwgb2Zmc2V0TWlkZGxld2FyZSh7IG1haW5BeGlzOiBwcm9wcy5vZmZzZXQgfSksIHNoaWZ0KHsgcGFkZGluZzogMTYgfSldO1xuICB9KTtcblxuICBvbkJlZm9yZU1vdW50KCgpID0+IHtcbiAgICBpbml0RmF1eFRvcExheWVyKCk7XG4gIH0pO1xuXG4gIG9uTW91bnRlZCgoKSA9PiB7XG4gICAgdXBkYXRlQW5jaG9yRWxlbWVudCgpO1xuICAgIHJvb3QudmFsdWUgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4gICAgYWRkTGlzdGVuZXJzVG9BbmNob3JFbGVtZW50KCk7XG4gIH0pO1xuXG4gIG9uVW5tb3VudGVkKCgpID0+IHtcbiAgICByZW1vdmVMaXN0ZW5lcnNGcm9tQW5jaG9yRWxlbWVudCgpO1xuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxUZWxlcG9ydCA6dG89XCJgIyR7VE9QX0xBWUVSX0lEfWBcIj5cbiAgICA8VHJhbnNpdGlvbj5cbiAgICAgIDxkaXZcbiAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICd0aWRlLXBvcG92ZXInLFxuICAgICAgICAgIENTUy5CRy5TVVJGQUNFLkRFRkFVTFQsXG4gICAgICAgICAgQ1NTLkJPUkRFUi5DT0xPUi5MT1csXG4gICAgICAgICAgQ1NTLkJPUkRFUi5GVUxMLk9ORSxcbiAgICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5IQUxGLFxuICAgICAgICAgIENTUy5GT05ULlJPTEUuQk9EWV8yLFxuICAgICAgICAgIENTUy5QQURESU5HLkZVTEwuT05FLFxuICAgICAgICAgIENTUy5TSEFET1cuQk9UVE9NLFxuICAgICAgICBdXCJcbiAgICAgICAgcmVmPVwiZmxvYXRpbmdcIlxuICAgICAgICA6c3R5bGU9XCJ7IC4uLmZsb2F0aW5nU3R5bGVzLCBtYXhXaWR0aDogYGNhbGMoMTAwJSAtICR7cHJvcHMub2Zmc2V0ICogMn1weClgIH1cIlxuICAgICAgICB2LXNob3c9XCJpc1Nob3dQb3BvdmVyXCJcbiAgICAgID5cbiAgICAgICAgPHNsb3QgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvVHJhbnNpdGlvbj5cbiAgPC9UZWxlcG9ydD5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC52LWVudGVyLWZyb20sXG4gIC52LWxlYXZlLXRvIHtcbiAgICBvcGFjaXR5OiAwO1xuICB9XG4gIC52LWVudGVyLWFjdGl2ZSxcbiAgLnYtbGVhdmUtYWN0aXZlIHtcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gIH1cbiAgLnYtZW50ZXItdG8sXG4gIC52LWxlYXZlLWZyb20ge1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAgIGlzQWN0aXZlPzogYm9vbGVhbjtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBpc0FjdGl2ZTogZmFsc2UsXG4gIH0pO1xuXG4gIGNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0cyhbJ2NoYW5nZSddKTtcblxuICBjb25zdCBoYW5kbGVDbGljayA9ICgpID0+IHtcbiAgICBpZiAoIXByb3BzLmRpc2FibGVkKSB7XG4gICAgICBlbWl0KCdjaGFuZ2UnKTtcbiAgICB9XG4gIH07XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8YnV0dG9uXG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtc3dpdGNoJyxcbiAgICAgIHByb3BzLmlzQWN0aXZlID8gJ2FjdGl2ZScgOiAnJyxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkJPUkRFUi5GVUxMLk9ORSxcbiAgICAgIENTUy5CT1JERVIuUkFESVVTLkZVTEwsXG4gICAgICBwcm9wcy5pc0FjdGl2ZSA/ICcnIDogQ1NTLkJPUkRFUi5DT0xPUi5ERUZBVUxULFxuICAgICAgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTixcbiAgICAgIHByb3BzLmlzQWN0aXZlID8gQ1NTLkJHLlNFQ09OREFSWSA6IENTUy5CRy5TVVJGQUNFLkRFRkFVTFQsXG4gICAgXVwiXG4gICAgOmRpc2FibGVkPVwicHJvcHMuZGlzYWJsZWRcIlxuICAgIEBjbGljaz1cImhhbmRsZUNsaWNrXCJcbiAgICBhcmlhLWxhYmVsPVwiU3dpdGNoXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtc3dpdGNoLWluZGljYXRvcicsXG4gICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkFYSVMxLkNFTlRFUixcbiAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCxcbiAgICAgICAgcHJvcHMuaXNBY3RpdmUgPyBDU1MuQkcuU1VSRkFDRS5ERUZBVUxUIDogQ1NTLkJHLlNFQ09OREFSWSxcbiAgICAgIF1cIlxuICAgID5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6aWNvbj1cIklDT04uQ0hFQ0tcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuTEFSR0VcIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cbiAgPC9idXR0b24+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1zd2l0Y2gge1xuICAgIHdpZHRoOiA2NHB4O1xuICAgIGhlaWdodDogMzJweDtcbiAgICB0cmFuc2l0aW9uOiB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IGJhY2tncm91bmQtY29sb3I7XG4gIH1cblxuICAudGlkZS1zd2l0Y2g6ZGlzYWJsZWQge1xuICAgIG9wYWNpdHk6IDAuMzI7XG4gIH1cblxuICAudGlkZS1zd2l0Y2guYWN0aXZlIHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXRpZGUtc2Vjb25kYXJ5KTtcbiAgfVxuXG4gIC50aWRlLXN3aXRjaC5hY3RpdmUgLnRpZGUtc3dpdGNoLWluZGljYXRvciB7XG4gICAgbGVmdDogMzZweDtcbiAgfVxuXG4gIC50aWRlLXN3aXRjaC1pbmRpY2F0b3Ige1xuICAgIGxlZnQ6IDRweDtcbiAgICB0cmFuc2l0aW9uOiB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IGxlZnQsIGJvcmRlci1jb2xvciwgYmFja2dyb3VuZC1jb2xvcjtcbiAgfVxuPC9zdHlsZT5cbiIsImltcG9ydCB7IGZvcm1hdE51bWJlciwgZm9ybWF0UGhvbmUsIGZvcm1hdFByaWNlIH0gZnJvbSAnQC91dGlsaXRpZXMvZm9ybWF0JztcblxuZXhwb3J0IHR5cGUgRm9ybWF0dGVkID0ge1xuICBba2V5OiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXSB8IG51bWJlcjtcbn07XG5cbmV4cG9ydCBjb25zdCBGT1JNQVQgPSB7XG4gIE5VTUJFUjogZm9ybWF0TnVtYmVyLFxuICBQSE9ORTogZm9ybWF0UGhvbmUsXG4gIFBSSUNFOiBmb3JtYXRQcmljZSxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBGT1JNQVRfUkVHRVggPSB7XG4gIGFscGhhOiAvXlthLXpBLVpdKyQvZyxcbiAgYWxwaGFOdW1iZXJPckVtcHR5OiAvXiR8XlthLXowLTldKyQvaSxcbiAgYWxwaGFTcGFjZTogL15bYS16QS1aIF0rJC9nLFxuICBlbWFpbDpcbiAgICAvXigoW148PigpW1xcXVxcXFwuLDs6XFxzQFwiXSsoXFwuW148PigpW1xcXVxcXFwuLDs6XFxzQFwiXSspKil8KFwiLitcIikpQCgoXFxbWzAtOV17MSwzfVxcLlswLTldezEsM31cXC5bMC05XXsxLDN9XFwuWzAtOV17MSwzfVxcXSl8KChbYS16QS1aXFwtMC05XStcXC4pK1thLXpBLVpdezIsfSkpJC8sXG4gIG51bWJlckZvcm1hdHRlZDogL14kfCg/PS4pXlxcJD8oKFsxLTldWzAtOV17MCwyfSgsWzAtOV17M30pKil8MCk/KFxcLlswLTldezEsMn0pPyQvLFxuICBwaG9uZTogL14oPzpcXGR7M30tXFxkezN9LVxcZHs0fXxcXGR7MX0tXFxkezN9LVxcZHszfS1cXGR7NH0pPyQvLFxuICBwcmljZTogLyg/PS4pXlxcJD8oKFsxLTldWzAtOV17MCwyfSgsWzAtOV17M30pKil8MCk/KFxcLlswLTldezEsMn0pPyQvLFxufTtcbiIsIi8qKlxuICogVGhlc2Ugc2xpZGVzIGFyZSB1c2VkIGluIGJvdGggdGhlIGlubGluZSBkZXRhaWwgcGFnZSBwaG90byBzbGlkZXJcbiAqIGFuZCB0aGUgZnVsbHNjcmVlbiBtZWRpYSBnYWxsZXJ5LlxuICovXG5cbmV4cG9ydCBjb25zdCBNRURJQV9TTElERV9UWVBFUyA9IHtcbiAgSU1BR0U6IHtcbiAgICBGTE9PUlBMQU46ICdmbG9vcnBsYW4nLFxuICAgIElNQUdFOiAnaW1hZ2UnLFxuICB9LFxuICBWSURFTzogJ3ZpZGVvJyxcbiAgVlI6ICd2cicsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBNZWRpYVNsaWRlVHlwZSA9XG4gIHwgKHR5cGVvZiBNRURJQV9TTElERV9UWVBFUy5JTUFHRSlba2V5b2YgdHlwZW9mIE1FRElBX1NMSURFX1RZUEVTLklNQUdFXVxuICB8IHR5cGVvZiBNRURJQV9TTElERV9UWVBFUy5WSURFT1xuICB8IHR5cGVvZiBNRURJQV9TTElERV9UWVBFUy5WUjtcblxuZXhwb3J0IHR5cGUgSW1hZ2VTbGlkZVR5cGUgPSAodHlwZW9mIE1FRElBX1NMSURFX1RZUEVTLklNQUdFKVtrZXlvZiB0eXBlb2YgTUVESUFfU0xJREVfVFlQRVMuSU1BR0VdO1xuXG50eXBlIEltYWdlU2xpZGUgPSB7XG4gIGltYWdlVXJsOiBzdHJpbmc7XG4gIHR5cGU6IEltYWdlU2xpZGVUeXBlO1xufTtcblxuZXhwb3J0IHR5cGUgVmlkZW9TbGlkZVR5cGUgPSB0eXBlb2YgTUVESUFfU0xJREVfVFlQRVMuVklERU87XG5cbnR5cGUgVmlkZW9TbGlkZSA9IHtcbiAgaW1hZ2VVcmw6IHN0cmluZztcbiAgdHlwZTogVmlkZW9TbGlkZVR5cGU7XG4gIHZpZGVvVXJsOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBWclNsaWRlVHlwZSA9IHR5cGVvZiBNRURJQV9TTElERV9UWVBFUy5WUjtcblxudHlwZSBWclNsaWRlID0ge1xuICBpbWFnZVVybDogc3RyaW5nO1xuICB0eXBlOiBWclNsaWRlVHlwZTtcbiAgdnJVcmw6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIExpc3RpbmdNZWRpYSA9IEltYWdlU2xpZGUgfCBWaWRlb1NsaWRlIHwgVnJTbGlkZTtcbiIsImltcG9ydCB7IEZPUk1BVF9SRUdFWCB9IGZyb20gJ0AvdHlwZXMvRm9ybWF0dGVkJztcbmltcG9ydCB7IGNoZWNrRm9ybWF0IH0gZnJvbSAnQC91dGlsaXRpZXMvdmFsaWRhdGlvbic7XG5cbmV4cG9ydCBjb25zdCBWQUxJREFUT1IgPSB7XG4gIEFMUEhBX05VTUJFUl9FTVBUWTogY2hlY2tGb3JtYXQoRk9STUFUX1JFR0VYLmFscGhhTnVtYmVyT3JFbXB0eSksXG4gIEFMUEhBX1NQQUNFOiBjaGVja0Zvcm1hdChGT1JNQVRfUkVHRVguYWxwaGFTcGFjZSksXG4gIEVNQUlMOiBjaGVja0Zvcm1hdChGT1JNQVRfUkVHRVguZW1haWwpLFxuICBOVU1CRVI6IGNoZWNrRm9ybWF0KEZPUk1BVF9SRUdFWC5udW1iZXJGb3JtYXR0ZWQpLFxuICBQSE9ORTogY2hlY2tGb3JtYXQoRk9STUFUX1JFR0VYLnBob25lKSxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIFZhbGlkYXRpb25FcnJvciA9IHN0cmluZyB8IGJvb2xlYW47XG5leHBvcnQgdHlwZSBWYWxpZGF0aW9uUmVzdWx0ID0ge1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIHZhbGlkOiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgVmFsaWRhdGlvbkxlbmd0aCA9IHtcbiAgbWF4bGVuZ3RoPzogbnVtYmVyO1xuICBtaW5sZW5ndGg/OiBudW1iZXI7XG4gIHJlcXVpcmVkPzogYm9vbGVhbjtcbiAgdmFsdWU6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIFZhbGlkYXRvciA9ICh2YWx1ZTogc3RyaW5nKSA9PiBWYWxpZGF0aW9uUmVzdWx0O1xuIl0sIm5hbWVzIjpbIk9SSUVOVEFUSU9OIiwiQ1NTIiwidXRpbGl0aWVzIiwiYnJlYWtwb2ludCIsInV0aWxpdHkiLCJSRUFMTSIsIlNJWkUiLCJTSVpFX0JVVFRPTiIsImZvcm1hdE51bWJlciIsImlucHV0Iiwib3V0cHV0IiwiZGlnaXRzIiwiZm9ybWF0UGFzY2FsQ2FzZSIsIndvcmQiLCJmb3JtYXRQaG9uZSIsImZvcm1hdFByaWNlIiwiaW5uZXJTVkciLCJyZWYiLCJ3YXRjaCIsInByb3BzIiwiaWQiLCJuYW1lIiwicHJlZml4IiwicmVhbG1Gb2xkZXIiLCJjb21wb25lbnQiLCJkZWZpbmVBc3luY0NvbXBvbmVudCIsIl9fdmFyaWFibGVEeW5hbWljSW1wb3J0UnVudGltZUhlbHBlciIsIm1hcmtSYXciLCJJQ09OIiwiSUNPTl9SRUFMTSIsImhhbmRsZVRvZ2dsZUNsaWNrIiwiZW1pdCIsIkVMRU1FTlQiLCJFTEVNRU5UX1RFWFRfQVNfSUNPTiIsIlBSSU9SSVRZIiwiVEFSR0VUIiwiQUxFUlQiLCJpY29uIiwiY29tcHV0ZWQiLCJCQURHRV9UUlVTVEVEIiwiaGFuZGxlQ2xpY2siLCJpbmRleCIsIlRZUEVfQ0FSRCIsImNvbnRlbnRSZWYiLCJmcmFtZVJlZiIsImNvbnRlbnRSaWdodEVkZ2UiLCJjb250ZW50V2lkdGgiLCJjdXJyZW50U2xpZGUiLCJmcmFtZVdpZHRoIiwiaGFzT3ZlcmZsb3ciLCJpc0xhc3RTbGlkZSIsImxhc3RQb3NpdGlvbiIsInNob3dCdXR0b25zIiwibWVhc3VyZUN1cnJlbnRTbGlkZSIsInNsaWRlT2Zmc2V0cyIsInNsaWRlIiwiY2xvc2VzdFNsaWRlT2Zmc2V0IiwicHJldiIsImN1cnIiLCJtZWFzdXJlRG9tIiwiaGFuZGxlU2Nyb2xsIiwic2Nyb2xsVG9TbGlkZSIsInNsaWRlSW5kZXgiLCJzaG93TmV4dFNsaWRlIiwic2hvd1ByZXZpb3VzU2xpZGUiLCJvbk1vdW50ZWQiLCJvblVubW91bnRlZCIsIm9uVXBkYXRlZCIsImltYWdlRGVmYXVsdCIsInBpY3R1cmUiLCJpbWciLCJzZXRJbWFnZUZyb21EZWZhdWx0IiwiY3VycmVudFNyYyIsIl9hIiwicGljdHVyZVNvdXJjZSIsIl9iIiwiaXNDaGVja2VkIiwiY2hlY2tlZCIsIm5ld1ZhbHVlIiwib2xkVmFsdWUiLCJlcnJvck1lc3NhZ2VEZWZhdWx0Iiwibm9FcnJvciIsImNoZWNrRm9ybWF0IiwiZm9ybWF0IiwidmFsdWUiLCJyZXN1bHQiLCJnZXRFcnJvck1lc3NhZ2UiLCJlcnJvckZyb21Qcm9wcyIsImVycm9yRnJvbVJlZiIsImdldEZpZWxkSGFzRXJyb3IiLCJnZXRGaWVsZExlbmd0aElzVmFsaWQiLCJtYXhsZW5ndGgiLCJtaW5sZW5ndGgiLCJyZXF1aXJlZCIsImlzRW1wdHlBbmRVbnJlcXVpcmVkIiwiaXNUb29Mb25nIiwiaGFuZGxlRmllbGRWYWxpZGF0aW9uIiwiZXJyb3IiLCJ2YWxpZGF0b3JzIiwidmFsaWRhdGlvbiIsInZhbGlkYXRlUHJvcGVydHkiLCJsZW5ndGhWYWxpZGF0aW9uIiwidmFsaWRhdGVMZW5ndGgiLCJyZXNwb25zZSIsInZhbGlkYXRvciIsImhhc0ZvY3VzIiwiZXJyb3JNZXNzYWdlIiwiZm9ybWF0dGVkTGFiZWwiLCJoYXNFcnJvciIsImhhc01pbmlsYWJlbCIsImlzRW1wdHkiLCJleHBhbmRPcHRpb25zIiwiZXZlbnQiLCJoYW5kbGVGb2N1cyIsImhhbmRsZUZvY3VzT3V0IiwiX19leHBvc2UiLCJURVhUX0lOUFVUX1RZUEUiLCJzaG93UGFzc3dvcmQiLCJoYXNDbGVhciIsInR5cGUiLCJoYW5kbGVDbGVhciIsImhhbmRsZVZhbGlkYXRpb24iLCJoYW5kbGVJbnB1dCIsInVwZGF0ZVZhbHVlIiwiQlJFQUtQT0lOVCIsIk1FRElBIiwic2V0U2Nyb2xsTG9jayIsImlzTG9ja2VkIiwiQk9EWV9MT0NLX0NMQVNTIiwiYm9keSIsInNjcm9sbFkiLCJuZXh0VGljayIsInNhdmVkU2Nyb2xsWSIsIlRPUF9MQVlFUl9JRCIsImluaXRGYXV4VG9wTGF5ZXIiLCJ0b3BMYXllciIsIm1vZGFsQ29udGVudCIsIm1vZGFsRGlhbG9nIiwidHJpZ2dlck5hdGl2ZURpYWxvZ09wZW4iLCJ0cmlnZ2VyTmF0aXZlRGlhbG9nQ2xvc2UiLCJzY3JvbGxDb250ZW50VG9Ub3AiLCJwYWdlQ3VycmVudCIsInBhZ2luYXRpb25CdXR0b25zIiwiZW1wdHkiLCJzaWRlcyIsImFsaWdubWVudHMiLCJwbGFjZW1lbnRzIiwiYWNjIiwic2lkZSIsIm1pbiIsIm1heCIsInJvdW5kIiwiZmxvb3IiLCJjcmVhdGVDb29yZHMiLCJ2Iiwib3Bwb3NpdGVTaWRlTWFwIiwib3Bwb3NpdGVBbGlnbm1lbnRNYXAiLCJjbGFtcCIsInN0YXJ0IiwiZW5kIiwiZXZhbHVhdGUiLCJwYXJhbSIsImdldFNpZGUiLCJwbGFjZW1lbnQiLCJnZXRBbGlnbm1lbnQiLCJnZXRPcHBvc2l0ZUF4aXMiLCJheGlzIiwiZ2V0QXhpc0xlbmd0aCIsImdldFNpZGVBeGlzIiwiZ2V0QWxpZ25tZW50QXhpcyIsImdldEFsaWdubWVudFNpZGVzIiwicmVjdHMiLCJydGwiLCJhbGlnbm1lbnQiLCJhbGlnbm1lbnRBeGlzIiwibGVuZ3RoIiwibWFpbkFsaWdubWVudFNpZGUiLCJnZXRPcHBvc2l0ZVBsYWNlbWVudCIsImdldE9wcG9zaXRlQWxpZ25tZW50UGxhY2VtZW50IiwiZXhwYW5kUGFkZGluZ09iamVjdCIsInBhZGRpbmciLCJnZXRQYWRkaW5nT2JqZWN0IiwicmVjdFRvQ2xpZW50UmVjdCIsInJlY3QiLCJ4IiwieSIsIndpZHRoIiwiaGVpZ2h0IiwiY29tcHV0ZUNvb3Jkc0Zyb21QbGFjZW1lbnQiLCJfcmVmIiwicmVmZXJlbmNlIiwiZmxvYXRpbmciLCJzaWRlQXhpcyIsImFsaWduTGVuZ3RoIiwiaXNWZXJ0aWNhbCIsImNvbW1vblgiLCJjb21tb25ZIiwiY29tbW9uQWxpZ24iLCJjb29yZHMiLCJjb21wdXRlUG9zaXRpb24iLCJjb25maWciLCJzdHJhdGVneSIsIm1pZGRsZXdhcmUiLCJwbGF0Zm9ybSIsInZhbGlkTWlkZGxld2FyZSIsInN0YXRlZnVsUGxhY2VtZW50IiwibWlkZGxld2FyZURhdGEiLCJyZXNldENvdW50IiwiaSIsImZuIiwibmV4dFgiLCJuZXh0WSIsImRhdGEiLCJyZXNldCIsImRldGVjdE92ZXJmbG93Iiwic3RhdGUiLCJvcHRpb25zIiwiX2F3YWl0JHBsYXRmb3JtJGlzRWxlIiwiZWxlbWVudHMiLCJib3VuZGFyeSIsInJvb3RCb3VuZGFyeSIsImVsZW1lbnRDb250ZXh0IiwiYWx0Qm91bmRhcnkiLCJwYWRkaW5nT2JqZWN0IiwiZWxlbWVudCIsImNsaXBwaW5nQ2xpZW50UmVjdCIsIm9mZnNldFBhcmVudCIsIm9mZnNldFNjYWxlIiwiZWxlbWVudENsaWVudFJlY3QiLCJnZXRQbGFjZW1lbnRMaXN0IiwiYXV0b0FsaWdubWVudCIsImFsbG93ZWRQbGFjZW1lbnRzIiwiYXV0b1BsYWNlbWVudCIsIl9taWRkbGV3YXJlRGF0YSRhdXRvUCIsIl9taWRkbGV3YXJlRGF0YSRhdXRvUDIiLCJfcGxhY2VtZW50c1RoYXRGaXRPbkUiLCJjcm9zc0F4aXMiLCJkZXRlY3RPdmVyZmxvd09wdGlvbnMiLCJwbGFjZW1lbnRzJDEiLCJvdmVyZmxvdyIsImN1cnJlbnRJbmRleCIsImN1cnJlbnRQbGFjZW1lbnQiLCJhbGlnbm1lbnRTaWRlcyIsImN1cnJlbnRPdmVyZmxvd3MiLCJhbGxPdmVyZmxvd3MiLCJuZXh0UGxhY2VtZW50IiwicGxhY2VtZW50c1NvcnRlZEJ5TW9zdFNwYWNlIiwiZCIsImEiLCJiIiwicmVzZXRQbGFjZW1lbnQiLCJjb252ZXJ0VmFsdWVUb0Nvb3JkcyIsIm1haW5BeGlzTXVsdGkiLCJjcm9zc0F4aXNNdWx0aSIsInJhd1ZhbHVlIiwibWFpbkF4aXMiLCJvZmZzZXQiLCJfbWlkZGxld2FyZURhdGEkb2Zmc2UiLCJfbWlkZGxld2FyZURhdGEkYXJyb3ciLCJkaWZmQ29vcmRzIiwic2hpZnQiLCJjaGVja01haW5BeGlzIiwiY2hlY2tDcm9zc0F4aXMiLCJsaW1pdGVyIiwibWFpbkF4aXNDb29yZCIsImNyb3NzQXhpc0Nvb3JkIiwibWluU2lkZSIsIm1heFNpZGUiLCJsaW1pdGVkQ29vcmRzIiwiaGFzV2luZG93IiwiZ2V0Tm9kZU5hbWUiLCJub2RlIiwiaXNOb2RlIiwiZ2V0V2luZG93IiwiX25vZGUkb3duZXJEb2N1bWVudCIsImdldERvY3VtZW50RWxlbWVudCIsImlzRWxlbWVudCIsImlzSFRNTEVsZW1lbnQiLCJpc1NoYWRvd1Jvb3QiLCJpc092ZXJmbG93RWxlbWVudCIsIm92ZXJmbG93WCIsIm92ZXJmbG93WSIsImRpc3BsYXkiLCJnZXRDb21wdXRlZFN0eWxlIiwiaXNUYWJsZUVsZW1lbnQiLCJpc1RvcExheWVyIiwic2VsZWN0b3IiLCJpc0NvbnRhaW5pbmdCbG9jayIsImVsZW1lbnRPckNzcyIsIndlYmtpdCIsImlzV2ViS2l0IiwiY3NzIiwiZ2V0Q29udGFpbmluZ0Jsb2NrIiwiY3VycmVudE5vZGUiLCJnZXRQYXJlbnROb2RlIiwiaXNMYXN0VHJhdmVyc2FibGVOb2RlIiwiZ2V0Tm9kZVNjcm9sbCIsImdldE5lYXJlc3RPdmVyZmxvd0FuY2VzdG9yIiwicGFyZW50Tm9kZSIsImdldE92ZXJmbG93QW5jZXN0b3JzIiwibGlzdCIsInRyYXZlcnNlSWZyYW1lcyIsIl9ub2RlJG93bmVyRG9jdW1lbnQyIiwic2Nyb2xsYWJsZUFuY2VzdG9yIiwiaXNCb2R5Iiwid2luIiwiZnJhbWVFbGVtZW50IiwiZ2V0RnJhbWVFbGVtZW50IiwiZ2V0Q3NzRGltZW5zaW9ucyIsImhhc09mZnNldCIsIm9mZnNldFdpZHRoIiwib2Zmc2V0SGVpZ2h0Iiwic2hvdWxkRmFsbGJhY2siLCJ1bndyYXBFbGVtZW50IiwiZ2V0U2NhbGUiLCJkb21FbGVtZW50IiwiJCIsIm5vT2Zmc2V0cyIsImdldFZpc3VhbE9mZnNldHMiLCJzaG91bGRBZGRWaXN1YWxPZmZzZXRzIiwiaXNGaXhlZCIsImZsb2F0aW5nT2Zmc2V0UGFyZW50IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwiaW5jbHVkZVNjYWxlIiwiaXNGaXhlZFN0cmF0ZWd5IiwiY2xpZW50UmVjdCIsInNjYWxlIiwidmlzdWFsT2Zmc2V0cyIsIm9mZnNldFdpbiIsImN1cnJlbnRXaW4iLCJjdXJyZW50SUZyYW1lIiwiaWZyYW1lU2NhbGUiLCJpZnJhbWVSZWN0IiwibGVmdCIsInRvcCIsImdldFdpbmRvd1Njcm9sbEJhclgiLCJsZWZ0U2Nyb2xsIiwiZ2V0SFRNTE9mZnNldCIsImRvY3VtZW50RWxlbWVudCIsInNjcm9sbCIsImlnbm9yZVNjcm9sbGJhclgiLCJodG1sUmVjdCIsImNvbnZlcnRPZmZzZXRQYXJlbnRSZWxhdGl2ZVJlY3RUb1ZpZXdwb3J0UmVsYXRpdmVSZWN0Iiwib2Zmc2V0cyIsImlzT2Zmc2V0UGFyZW50QW5FbGVtZW50Iiwib2Zmc2V0UmVjdCIsImh0bWxPZmZzZXQiLCJnZXRDbGllbnRSZWN0cyIsImdldERvY3VtZW50UmVjdCIsImh0bWwiLCJnZXRWaWV3cG9ydFJlY3QiLCJ2aXN1YWxWaWV3cG9ydCIsInZpc3VhbFZpZXdwb3J0QmFzZWQiLCJnZXRJbm5lckJvdW5kaW5nQ2xpZW50UmVjdCIsImdldENsaWVudFJlY3RGcm9tQ2xpcHBpbmdBbmNlc3RvciIsImNsaXBwaW5nQW5jZXN0b3IiLCJoYXNGaXhlZFBvc2l0aW9uQW5jZXN0b3IiLCJzdG9wTm9kZSIsImdldENsaXBwaW5nRWxlbWVudEFuY2VzdG9ycyIsImNhY2hlIiwiY2FjaGVkUmVzdWx0IiwiZWwiLCJjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZSIsImVsZW1lbnRJc0ZpeGVkIiwiY29tcHV0ZWRTdHlsZSIsImN1cnJlbnROb2RlSXNDb250YWluaW5nIiwiYW5jZXN0b3IiLCJnZXRDbGlwcGluZ1JlY3QiLCJjbGlwcGluZ0FuY2VzdG9ycyIsImZpcnN0Q2xpcHBpbmdBbmNlc3RvciIsImNsaXBwaW5nUmVjdCIsImFjY1JlY3QiLCJnZXREaW1lbnNpb25zIiwiZ2V0UmVjdFJlbGF0aXZlVG9PZmZzZXRQYXJlbnQiLCJpc1N0YXRpY1Bvc2l0aW9uZWQiLCJnZXRUcnVlT2Zmc2V0UGFyZW50IiwicG9seWZpbGwiLCJyYXdPZmZzZXRQYXJlbnQiLCJnZXRPZmZzZXRQYXJlbnQiLCJzdmdPZmZzZXRQYXJlbnQiLCJnZXRFbGVtZW50UmVjdHMiLCJnZXRPZmZzZXRQYXJlbnRGbiIsImdldERpbWVuc2lvbnNGbiIsImZsb2F0aW5nRGltZW5zaW9ucyIsImlzUlRMIiwicmVjdHNBcmVFcXVhbCIsIm9ic2VydmVNb3ZlIiwib25Nb3ZlIiwiaW8iLCJ0aW1lb3V0SWQiLCJyb290IiwiY2xlYW51cCIsIl9pbyIsInJlZnJlc2giLCJza2lwIiwidGhyZXNob2xkIiwiZWxlbWVudFJlY3RGb3JSb290TWFyZ2luIiwiaW5zZXRUb3AiLCJpbnNldFJpZ2h0IiwiaW5zZXRCb3R0b20iLCJpbnNldExlZnQiLCJpc0ZpcnN0VXBkYXRlIiwiaGFuZGxlT2JzZXJ2ZSIsImVudHJpZXMiLCJyYXRpbyIsImF1dG9VcGRhdGUiLCJ1cGRhdGUiLCJhbmNlc3RvclNjcm9sbCIsImFuY2VzdG9yUmVzaXplIiwiZWxlbWVudFJlc2l6ZSIsImxheW91dFNoaWZ0IiwiYW5pbWF0aW9uRnJhbWUiLCJyZWZlcmVuY2VFbCIsImFuY2VzdG9ycyIsImNsZWFudXBJbyIsInJlb2JzZXJ2ZUZyYW1lIiwicmVzaXplT2JzZXJ2ZXIiLCJmaXJzdEVudHJ5IiwiX3Jlc2l6ZU9ic2VydmVyIiwiZnJhbWVJZCIsInByZXZSZWZSZWN0IiwiZnJhbWVMb29wIiwibmV4dFJlZlJlY3QiLCJfcmVzaXplT2JzZXJ2ZXIyIiwib2Zmc2V0JDEiLCJhdXRvUGxhY2VtZW50JDEiLCJzaGlmdCQxIiwibWVyZ2VkT3B0aW9ucyIsInBsYXRmb3JtV2l0aENhY2hlIiwiY29tcHV0ZVBvc2l0aW9uJDEiLCJpc0NvbXBvbmVudFB1YmxpY0luc3RhbmNlIiwidGFyZ2V0IiwidG9WYWx1ZSIsInNvdXJjZSIsInVucmVmIiwiZ2V0RFBSIiwicm91bmRCeURQUiIsImRwciIsInVzZUZsb2F0aW5nIiwid2hpbGVFbGVtZW50c01vdW50ZWRPcHRpb24iLCJvcGVuT3B0aW9uIiwiX3RvVmFsdWUiLCJtaWRkbGV3YXJlT3B0aW9uIiwicGxhY2VtZW50T3B0aW9uIiwiX3RvVmFsdWUyIiwic3RyYXRlZ3lPcHRpb24iLCJfdG9WYWx1ZTMiLCJ0cmFuc2Zvcm1PcHRpb24iLCJfdG9WYWx1ZTQiLCJyZWZlcmVuY2VFbGVtZW50IiwiZmxvYXRpbmdFbGVtZW50Iiwic2hhbGxvd1JlZiIsImlzUG9zaXRpb25lZCIsImZsb2F0aW5nU3R5bGVzIiwiaW5pdGlhbFN0eWxlcyIsInhWYWwiLCJ5VmFsIiwid2hpbGVFbGVtZW50c01vdW50ZWRDbGVhbnVwIiwib3BlbiIsInBvc2l0aW9uIiwiYXR0YWNoIiwiZ2V0Q3VycmVudFNjb3BlIiwib25TY29wZURpc3Bvc2UiLCJzaGFsbG93UmVhZG9ubHkiLCJpc0NsaWNrT3V0c2lkZSIsImFuY2hvciIsImlzSG92ZXJlZCIsImlzVG9nZ2xlZE9wZW4iLCJvZmZzZXRNaWRkbGV3YXJlIiwiaXNTaG93UG9wb3ZlciIsImhhbmRsZVBlcm1hbmVudE9wZW5Cb2R5Q2xpY2siLCJlIiwiaGFuZGxlQW5jaG9yRWxlbWVudE1vdXNlT3ZlciIsImhhbmRsZUFuY2hvckVsZW1lbnRNb3VzZUxlYXZlIiwiaGFuZGxlQW5jaG9yRWxlbWVudENsaWNrIiwiYWRkTGlzdGVuZXJzVG9BbmNob3JFbGVtZW50IiwicmVtb3ZlTGlzdGVuZXJzRnJvbUFuY2hvckVsZW1lbnQiLCJoYW5kbGVQZXJtYW5lbnRPcGVuQm9keUtleWRvd24iLCJhZGRPcGVuTGlzdGVuZXJzVG9Sb290IiwicmVtb3ZlT3Blbkxpc3RlbmVyc0Zyb21Sb290IiwidXBkYXRlQW5jaG9yRWxlbWVudCIsIndhdGNoRWZmZWN0Iiwib25CZWZvcmVNb3VudCIsIkZPUk1BVCIsIkZPUk1BVF9SRUdFWCIsIk1FRElBX1NMSURFX1RZUEVTIiwiVkFMSURBVE9SIl0sIm1hcHBpbmdzIjoidUdBQWFBLEdBQWMsQ0FDekIsV0FBWSxhQUNaLFNBQVUsVUFDWixFQ0NhQyxFQUFNLENBQ2pCLGVBQWdCLENBQUNDLEVBQXFCQyxJQUM3QkQsRUFBVSxJQUFLRSxHQUFZLEdBQUdELENBQVUsSUFBSUMsQ0FBTyxFQUFFLEVBRTlELE1BQU8sQ0FDTCxFQUFHLENBQ0QsT0FBUSxtQkFDUixLQUFNLGlCQUNOLE1BQU8saUJBQ1QsRUFDQSxFQUFHLENBQ0QsUUFBUyxxQkFDVCxPQUFRLG1CQUNWLENBQ0YsRUFDQSxNQUFPLENBQ0wsT0FBUSxvQkFDUixRQUFTLHFCQUNULE9BQVEsb0JBQ1IsSUFBSyxpQkFDTCxNQUFPLGtCQUNU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QUNoQkEsRUFBSSxPQUFPLEVBQUUsS0FDYkEsRUFBSSxPQUFPLEVBQUUsSUFDYkEsRUFBSSxPQUFPLEVBQUUsS0FDYkEsRUFBSSxPQUFPLEVBQUUsUUFDYkEsRUFBSSxPQUFPLEVBQUUsSUFDYkEsRUFBSSxPQUFPLEVBQUUsS0FDYkEsRUFBSSxPQUFPLElBQUksS0FDZkEsRUFBSSxPQUFPLElBQUksSUFDZkEsRUFBSSxPQUFPLElBQUksS0FDZkEsRUFBSSxPQUFPLElBQUksUUFDZkEsRUFBSSxPQUFPLElBQUksSUFDZkEsRUFBSSxPQUFPLElBQUksS0FDZkEsRUFBSSxPQUFPLEVBQUUsS0FDYkEsRUFBSSxPQUFPLEVBQUUsSUFDYkEsRUFBSSxPQUFPLEVBQUUsS0FDYkEsRUFBSSxPQUFPLEVBQUUsUUFDYkEsRUFBSSxPQUFPLEVBQUUsSUFDYkEsRUFBSSxPQUFPLEVBQUUsS0FDYkEsRUFBSSxPQUFPLEVBQUUsS0FDYkEsRUFBSSxPQUFPLE1BQU0sS0FDakJBLEVBQUksT0FBTyxNQUFNLElBQ2pCQSxFQUFJLE9BQU8sTUFBTSxLQUNqQkEsRUFBSSxPQUFPLE1BQU0sUUFDakJBLEVBQUksT0FBTyxNQUFNLElBQ2pCQSxFQUFJLE9BQU8sTUFBTSxLQUNqQkEsRUFBSSxPQUFPLE1BQU0sS0FDakJBLEVBQUksT0FBTyxPQUFPLEtBQ2xCQSxFQUFJLE9BQU8sT0FBTyxJQUNsQkEsRUFBSSxPQUFPLE9BQU8sS0FDbEJBLEVBQUksT0FBTyxPQUFPLFFBQ2xCQSxFQUFJLE9BQU8sT0FBTyxJQUNsQkEsRUFBSSxPQUFPLE9BQU8sS0FDbEJBLEVBQUksT0FBTyxLQUFLLEtBQ2hCQSxFQUFJLE9BQU8sS0FBSyxJQUNoQkEsRUFBSSxPQUFPLEtBQUssS0FDaEJBLEVBQUksT0FBTyxLQUFLLFFBQ2hCQSxFQUFJLE9BQU8sS0FBSyxJQUNoQkEsRUFBSSxPQUFPLEtBQUssS0FDaEJBLEVBQUksT0FBTyxLQUFLLEtBQ2hCQSxFQUFJLE9BQU8sS0FBSyxJQUNoQkEsRUFBSSxPQUFPLEtBQUssSUFDaEJBLEVBQUksT0FBTyxJQUFJLElBQ2ZBLEVBQUksT0FBTyxJQUFJLElBQ2ZBLEVBQUksT0FBTyxNQUFNLElBQ2pCQSxFQUFJLE9BQU8sTUFBTSxJQUNqQkEsRUFBSSxPQUFPLE9BQU8sSUFDbEJBLEVBQUksT0FBTyxPQUFPLElBQ2xCQSxFQUFJLE9BQU8sS0FBSyxJQUNoQkEsRUFBSSxPQUFPLEtBQUssSUFDaEJBLEVBQUksT0FBTyxPQUFPLElBQ2xCQSxFQUFJLE9BQU8sT0FBTyxLQUNsQkEsRUFBSSxPQUFPLE9BQU8sUUFDbEJBLEVBQUksT0FBTyxPQUFPLEtBQ2xCQSxFQUFJLFFBQVEsS0FBSyxLQUNqQkEsRUFBSSxRQUFRLEtBQUssSUFDakJBLEVBQUksUUFBUSxLQUFLLEtBQ2pCQSxFQUFJLFFBQVEsS0FBSyxRQUNqQkEsRUFBSSxRQUFRLEtBQUssSUFDakJBLEVBQUksUUFBUSxLQUFLLEtBQ2pCQSxFQUFJLFFBQVEsRUFBRSxLQUNkQSxFQUFJLFFBQVEsRUFBRSxJQUNkQSxFQUFJLFFBQVEsRUFBRSxLQUNkQSxFQUFJLFFBQVEsRUFBRSxRQUNkQSxFQUFJLFFBQVEsRUFBRSxJQUNkQSxFQUFJLFFBQVEsRUFBRSxLQUNkQSxFQUFJLFFBQVEsSUFBSSxLQUNoQkEsRUFBSSxRQUFRLElBQUksSUFDaEJBLEVBQUksUUFBUSxJQUFJLEtBQ2hCQSxFQUFJLFFBQVEsSUFBSSxRQUNoQkEsRUFBSSxRQUFRLElBQUksSUFDaEJBLEVBQUksUUFBUSxJQUFJLEtBQ2hCQSxFQUFJLFFBQVEsRUFBRSxLQUNkQSxFQUFJLFFBQVEsRUFBRSxJQUNkQSxFQUFJLFFBQVEsRUFBRSxLQUNkQSxFQUFJLFFBQVEsRUFBRSxRQUNkQSxFQUFJLFFBQVEsRUFBRSxJQUNkQSxFQUFJLFFBQVEsRUFBRSxLQUNkQSxFQUFJLFFBQVEsTUFBTSxLQUNsQkEsRUFBSSxRQUFRLE1BQU0sSUFDbEJBLEVBQUksUUFBUSxNQUFNLEtBQ2xCQSxFQUFJLFFBQVEsTUFBTSxRQUNsQkEsRUFBSSxRQUFRLE1BQU0sSUFDbEJBLEVBQUksUUFBUSxNQUFNLEtBQ2xCQSxF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Q2pDRixFQUNLRyw4eEVBR0ZBLEdBQUEsT0FBQSxPQUFBLENBQUEsNkNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSxtQ0FBQSxDQUFBLEVBQUEsb0NBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSwwQkFBQSxDQUFBLEVBQUEsa0NBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSx3QkFBQSxHQUFBLDRDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsa0NBQUEsQ0FBQSxFQUFBLDZDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsbUNBQUEsQ0FBQSxFQUFBLHVDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsNkJBQUEsQ0FBQSxFQUFBLHdDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsOEJBQUEsQ0FBQSxFQUFBLHlDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsK0JBQUEsQ0FBQSxFQUFBLDJDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsaUNBQUEsQ0FBQSxFQUFBLHlDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsK0JBQUEsQ0FBQSxFQUFBLHlDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsK0JBQUEsQ0FBQSxFQUFBLDBDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsZ0NBQUEsQ0FBQSxFQUFBLHdDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsOEJBQUEsQ0FBQSxFQUFBLHdDQUFBLElBQUEsbUNBQUEsOEJBQUEsQ0FBQSxFQUFBLGtDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsd0JBQUEsQ0FBQSxFQUFBLG1DQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEseUJBQUEsQ0FBQSxFQUFBLHVDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsNkJBQUEsQ0FBQSxFQUFBLHdDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsOEJBQUEsQ0FBQSxFQUFBLDRDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsa0NBQUEsQ0FBQSxFQUFBLG1DQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEseUJBQUEsR0FBQSwwQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLGdDQUFBLENBQUEsRUFBQSx3Q0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDhCQUFBLENBQUEsRUFBQSxvQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDBCQUFBLENBQUEsRUFBQSwwQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLGdDQUFBLENBQUEsRUFBQSwyQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLGlDQUFBLENBQUEsRUFBQSxvQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDBCQUFBLENBQUEsRUFBQSxvQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDBCQUFBLENBQUEsRUFBQSx1Q0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDZCQUFBLENBQUEsRUFBQSxvQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDBCQUFBLENBQUEsRUFBQSxpREFBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLHVDQUFBLENBQUEsRUFBQSxxQ0FBQSxJQUFBLG1DQUFBLDJCQUFBLENBQUEsRUFBQSxzQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDRCQUFBLENBQUEsRUFBQSw2Q0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLG1DQUFBLENBQUEsRUFBQSxxQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDJCQUFBLENBQUEsRUFBQSxvQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDBCQUFBLENBQUEsRUFBQSxtQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLHlCQUFBLENBQUEsRUFBQSxxQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDJCQUFBLEdBQUEsMENBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSxnQ0FBQSxDQUFBLEVBQUEsb0NBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSwwQkFBQSxDQUFBLEVBQUEsNENBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSxrQ0FBQSxDQUFBLEVBQUEseUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSwrQkFBQSxDQUFBLEVBQUEseUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSwrQkFBQSxDQUFBLEVBQUEsdUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSw2QkFBQSxDQUFBLEVBQUEsdUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSw2QkFBQSxDQUFBLEVBQUEsNkNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSxtQ0FBQSxDQUFBLEVBQUEsbUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSx5QkFBQSxDQUFBLEVBQUEseUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSwrQkFBQSxDQUFBLEVBQUEsMkNBQUEsSUFBQSxtQ0FBQSxpQ0FBQSxDQUFBLEVBQUEsaURBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSx1Q0FBQSxDQUFBLEVBQUEsb0NBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSwwQkFBQSxDQUFBLEVBQUEsa0NBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSx3QkFBQSxDQUFBLEVBQUEsb0NBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSwwQkFBQSxDQUFBLEVBQUEsb0NBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSwwQkFBQSxDQUFBLEVBQUEsK0NBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSxxQ0FBQSxHQUFBLHFDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsMkJBQUEsQ0FBQSxFQUFBLHdDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsOEJBQUEsQ0FBQSxFQUFBLG1DQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEseUJBQUEsQ0FBQSxFQUFBLHdDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsOEJBQUEsQ0FBQSxFQUFBLHVDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsNkJBQUEsQ0FBQSxFQUFBLHFDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsMkJBQUEsQ0FBQSxFQUFBLG1DQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEseUJBQUEsQ0FBQSxFQUFBLG1DQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEseUJBQUEsQ0FBQSxFQUFBLDBDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsZ0NBQUEsQ0FBQSxFQUFBLHlDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsK0JBQUEsQ0FBQSxFQUFBLHdDQUFBLElBQUEsbUNBQUEsOEJBQUEsQ0FBQSxFQUFBLHVDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsNkJBQUEsQ0FBQSxFQUFBLHFDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsMkJBQUEsQ0FBQSxFQUFBLDRDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsa0NBQUEsQ0FBQSxFQUFBLHVDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsNkJBQUEsQ0FBQSxFQUFBLDRDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsa0NBQUEsQ0FBQSxFQUFBLG1DQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEseUJBQUEsR0FBQSxtQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLHlCQUFBLENBQUEsRUFBQSxtQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLHlCQUFBLENBQUEsRUFBQSx1Q0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDZCQUFBLENBQUEsRUFBQSx3Q0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDhCQUFBLENBQUEsRUFBQSw0Q0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLGtDQUFBLENBQUEsRUFBQSx1Q0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDZCQUFBLENBQUEsRUFBQSx3Q0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDhCQUFBLENBQUEsRUFBQSxzQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDRCQUFBLENBQUEsRUFBQSxxQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDJCQUFBLENBQUEsRUFBQSxxQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDJCQUFBLENBQUEsRUFBQSwyQ0FBQSxJQUFBLG1DQUFBLGlDQUFBLENBQUEsRUFBQSwwQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLGdDQUFBLENBQUEsRUFBQSx3Q0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDhCQUFBLENBQUEsRUFBQSx3Q0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDhCQUFBLENBQUEsRUFBQSxxQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDJCQUFBLENBQUEsRUFBQSxvQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDBCQUFBLENBQUEsRUFBQSx1Q0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDZCQUFBLEdBQUEsMkNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSxpQ0FBQSxDQUFBLEVBQUEscUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSwyQkFBQSxDQUFBLEVBQUEsMkNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSxpQ0FBQSxDQUFBLEVBQUEsMENBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSxnQ0FBQSxDQUFBLEVBQUEsbUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSx5QkFBQSxDQUFBLEVBQUEsNENBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSxrQ0FBQSxDQUFBLEVBQUEsb0NBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSwwQkFBQSxDQUFBLEVBQUEsc0NBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSw0QkFBQSxDQUFBLEVBQUEscUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSwyQkFBQSxDQUFBLEVBQUEscUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSwyQkFBQSxDQUFBLEVBQUEsc0NBQUEsSUFBQSxtQ0FBQSw0QkFBQSxDQUFBLEVBQUEsbUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSx5QkFBQSxDQUFBLEVBQUEsc0NBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSw0QkFBQSxDQUFBLEVBQUEsdUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSw2QkFBQSxDQUFBLEVBQUEsb0NBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSwwQkFBQSxDQUFBLEVBQUEsMENBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSxnQ0FBQSxDQUFBLEVBQUEsMkNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSxpQ0FBQSxHQUFBLHFDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsMkJBQUEsQ0FBQSxFQUFBLGtDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsd0JBQUEsQ0FBQSxFQUFBLHdDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsOEJBQUEsQ0FBQSxFQUFBLG1DQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEseUJBQUEsQ0FBQSxFQUFBLHdDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsOEJBQUEsQ0FBQSxFQUFBLHdDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsOEJBQUEsQ0FBQSxFQUFBLHVDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsNkJBQUEsQ0FBQSxFQUFBLDZDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsbUNBQUEsQ0FBQSxFQUFBLHNDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsNEJBQUEsQ0FBQSxFQUFBLDJDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsaUNBQUEsQ0FBQSxFQUFBLHFDQUFBLElBQUEsbUNBQUEsMkJBQUEsQ0FBQSxFQUFBLG1DQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEseUJBQUEsQ0FBQSxFQUFBLHNDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsNEJBQUEsQ0FBQSxFQUFBLHVDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsNkJBQUEsQ0FBQSxFQUFBLHVDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsNkJBQUEsR0FBQSx1Q0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDZCQUFBLENBQUEsRUFBQSx1Q0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDZCQUFBLENBQUEsRUFBQSx5Q0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLCtCQUFBLENBQUEsRUFBQSx3Q0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDhCQUFBLENBQUEsRUFBQSx1Q0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDZCQUFBLENBQUEsRUFBQSx3Q0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDhCQUFBLENBQUEsRUFBQSxzQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDRCQUFBLENBQUEsRUFBQSxvQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDBCQUFBLENBQUEsRUFBQSxxQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDJCQUFBLENBQUEsRUFBQSxvQ0FBQSxJQUFBLFFBQUEs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
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),Ie={HORIZONTAL:"horizontal",VERTICAL:"vertical"},t={withBreakpoint:(o,n)=>o.map(r=>`${n}-${r}`),ALIGN:{X:{CENTER:"tide-text-center",LEFT:"tide-text-left",RIGHT:"tide-text-right"},Y:{INITIAL:"tide-align-initial",MIDDLE:"tide-align-middle"}},AXIS1:{AROUND:"tide-axis1-around",BETWEEN:"tide-axis1-between",CENTER:"tide-axis1-center",END:"tide-axis1-end",START:"tide-axis1-start"},AXIS2:{AROUND:"tide-axis2-around",CENTER:"tide-axis2-center",END:"tide-axis2-end",START:"tide-axis2-start"},BG:{GLOBAL:{PRIMARY:{ERROR:"tide-bg-primary-error",INFO:"tide-bg-primary-info",SUCCESS:"tide-bg-primary-success",WARNING:"tide-bg-primary-warning"},SURFACE:{ERROR:"tide-bg-surface-error",INFO:"tide-bg-surface-info",SUCCESS:"tide-bg-surface-success",WARNING:"tide-bg-surface-warning"}},INITIAL:"tide-bg-initial",BLUR:"tide-bg-blur",PRIMARY:"tide-bg-primary",SECONDARY:"tide-bg-secondary",SURFACE:{ACCENT:"tide-bg-surface-accent",BRAND:"tide-bg-surface-brand",DEFAULT:"tide-bg-surface",FLOATING:"tide-bg-surface-floating",GRADIENT:"tide-bg-surface-gradient",VARIANT:"tide-bg-surface-variant"},TRANSPARENT:{ONE_HUNDRED:"tide-transparent-100",TWO_HUNDRED:"tide-transparent-200",THREE_HUNDRED:"tide-transparent-300",FOUR_HUNDRED:"tide-transparent-400"}},BORDER:{COLOR:{GLOBAL:{ERROR:"tide-border-error",INFO:"tide-border-info",SUCCESS:"tide-border-success",WARNING:"tide-border-warning"},INITIAL:"tide-border-color-initial",DEFAULT:"tide-border",FLOATING:"tide-border-floating",HIGH:"tide-border-high",LOW:"tide-border-low",PRIMARY:"tide-border-primary"},RADIUS:{ZERO:"tide-radius-0",QUARTER:"tide-radius-1/4",HALF:"tide-radius-1/2",ONE:"tide-radius-1",FULL:"tide-radius-full"},BOTTOM:{ZERO:"tide-border-bottom-0",ONE:"tide-border-bottom-1",TWO:"tide-border-bottom-2"},FULL:{ZERO:"tide-border-0",ONE:"tide-border-1",TWO:"tide-border-2"},LEFT:{ZERO:"tide-border-left-0",ONE:"tide-border-left-1",TWO:"tide-border-left-2"},RIGHT:{ZERO:"tide-border-right-0",ONE:"tide-border-right-1",TWO:"tide-border-right-2"},TOP:{ZERO:"tide-border-top-0",ONE:"tide-border-top-1",TWO:"tide-border-top-2"}},BOX_SIZING:{BORDER_BOX:"tide-box-border",CONTENT_BOX:"tide-box-content"},BREAK_INSIDE:{AVOID_COLUMN:"tide-break-inside-avoid-column"},BREAK_WORD:{OFF:"tide-break-initial",ON:"tide-break-word"},COLUMNS:{INITIAL:"tide-columns-initial",ONE:"tide-columns-1",TWO:"tide-columns-2",THREE:"tide-columns-3",FOUR:"tide-columns-4"},CURSOR:{NOT_ALLOWED:"tide-cursor-not-allowed",POINTER:"tide-cursor-pointer",TEXT:"tide-cursor-text"},DISPLAY:{BLOCK:"tide-display-block",CONTENTS:"tide-display-contents",FLEX:"tide-display-flex",GRID:"tide-display-grid",INITIAL:"tide-display-initial",INLINE:"tide-display-inline",INLINE_BLOCK:"tide-display-inline-block",INLINE_FLEX:"tide-display-inline-flex",NONE:"tide-display-none"},ELLIPSIS:"tide-ellipsis",FLEX:{BASIS:{AUTO:"tide-flex-basis-auto",ZERO:"tide-flex-basis-0"},DIRECTION:{COLUMN:"tide-flex-column",COLUMN_REVERSE:"tide-flex-column-reverse",ROW:"tide-flex-row",ROW_REVERSE:"tide-flex-row-reverse"},GROW:{OFF:"tide-grow-none",ON:"tide-grow"},SHRINK:{OFF:"tide-shrink-none",ON:"tide-shrink"},WRAP:"tide-flex-wrap"},FONT:{COLOR:{GLOBAL:{ERROR:"tide-font-error",INFO:"tide-font-info",SUCCESS:"tide-font-success",WARNING:"tide-font-warning"},PRIMARY:"tide-font-on-primary",SECONDARY:"tide-font-on-secondary",SURFACE:{BRAND:"tide-font-on-surface-brand",DEFAULT:"tide-font-on-surface",INVERSE:"tide-font-on-surface-inverse",VARIANT:"tide-font-on-surface-variant",VARIANT_INVERSE:"tide-font-on-surface-variant-inverse"}},ROLE:{DISPLAY_1:"tide-typography-display-1",HEADLINE_1:"tide-typography-headline-1",HEADLINE_2:"tide-typography-headline-2",HEADLINE_3:"tide-typography-headline-3",TITLE_1:"tide-typography-title-1",TITLE_2:"tide-typography-title-2",BODY_1:"tide-typography-body-1",BODY_2:"tide-typography-body-2",LABEL_1:"tide-typography-label-1",LABEL_1_SEMIBOLD:"tide-typography-label-1-semibold",LABEL_2:"tide-typography-label-2",LABEL_2_SEMIBOLD:"tide-typography-label-2-semibold",LABEL_3:"tide-typography-label-3",LINK_1:"tide-typography-link-1",LINK_2:"tide-typography-link-2",LINK_3:"tide-typography-link-3",BUTTON_1:"tide-typography-button-1",BUTTON_2:"tide-typography-button-2"},SIZE:{TWELVE:"tide-font-12",FOURTEEN:"tide-font-14",SIXTEEN:"tide-font-16",TWENTY:"tide-font-20",TWENTY_FOUR:"tide-font-24",THIRTY_TWO:"tide-font-32"},WEIGHT:{FOUR_HUNDRED:"tide-font-400",FIVE_HUNDRED:"tide-font-500",SIX_HUNDRED:"tide-font-600",SEVEN_HUNDRED:"tide-font-700"}},GAP:{ZERO:"tide-gap-0",QUARTER:"tide-gap-1/4",HALF:"tide-gap-1/2",ONE:"tide-gap-1",TWO:"tide-gap-2",FOUR:"tide-gap-4"},GRID:{END:{ONE:"tide-end-1",TWO:"tide-end-2",THREE:"tide-end-3",FOUR:"tide-end-4",FIVE:"tide-end-5",SIX:"tide-end-6",SEVEN:"tide-end-7",EIGHT:"tide-end-8",NINE:"tide-end-9",TEN:"tide-end-10",ELEVEN:"tide-end-11",TWELVE:"tide-end-12",THIRTEEN:"tide-end-13"},FLUID:"tide-fluid",ITEM:"tide-grid-item",LAYOUT:"tide-grid-layout",START:{ZERO:"tide-start-0",ONE:"tide-start-1",TWO:"tide-start-2",THREE:"tide-start-3",FOUR:"tide-start-4",FIVE:"tide-start-5",SIX:"tide-start-6",SEVEN:"tide-start-7",EIGHT:"tide-start-8",NINE:"tide-start-9",TEN:"tide-start-10",ELEVEN:"tide-start-11",TWELVE:"tide-start-12"},XL:"tide-grid-xl"},HEIGHT:{AUTO:"tide-height-auto",ZERO:"tide-height-0",FULL:"tide-height-full",MAX_FULL:"tide-max-height-full"},ISOLATION:{ISOLATE:"tide-isolate"},LIST_BULLETS:{OFF:"tide-list-none"},MARGIN:{BOTTOM:{AUTO:"tide-margin-bottom-auto",ZERO:"tide-margin-bottom-0",QUARTER:"tide-margin-bottom-1/4",HALF:"tide-margin-bottom-1/2",ONE:"tide-margin-bottom-1",TWO:"tide-margin-bottom-2",FOUR:"tide-margin-bottom-4"},FULL:{ZERO:"tide-margin-0",QUARTER:"tide-margin-1/4",HALF:"tide-margin-1/2",ONE:"tide-margin-1",TWO:"tide-margin-2",FOUR:"tide-margin-4"},LEFT:{AUTO:"tide-margin-left-auto",ZERO:"tide-margin-left-0",QUARTER:"tide-margin-left-1/4",HALF:"tide-margin-left-1/2",ONE:"tide-margin-left-1",TWO:"tide-margin-left-2",FOUR:"tide-margin-left-4"},RIGHT:{AUTO:"tide-margin-right-auto",ZERO:"tide-margin-right-0",QUARTER:"tide-margin-right-1/4",HALF:"tide-margin-right-1/2",ONE:"tide-margin-right-1",TWO:"tide-margin-right-2",FOUR:"tide-margin-right-4"},TOP:{AUTO:"tide-margin-top-auto",ZERO:"tide-margin-top-0",QUARTER:"tide-margin-top-1/4",HALF:"tide-margin-top-1/2",ONE:"tide-margin-top-1",TWO:"tide-margin-top-2",FOUR:"tide-margin-top-4"},X:{AUTO:"tide-margin-x-auto",ZERO:"tide-margin-x-0",QUARTER:"tide-margin-x-1/4",HALF:"tide-margin-x-1/2",ONE:"tide-margin-x-1",TWO:"tide-margin-x-2",FOUR:"tide-margin-x-4"},Y:{ZERO:"tide-margin-y-0",QUARTER:"tide-margin-y-1/4",HALF:"tide-margin-y-1/2",ONE:"tide-margin-y-1",TWO:"tide-margin-y-2",FOUR:"tide-margin-y-4"}},OBJECT:{CENTER:"tide-object-center",CONTAIN:"tide-object-contain",COVER:"tide-object-cover",SCALE_DOWN:"tide-object-scale-down"},OPACITY:{OFF:"tide-opacity-none",ON:"tide-opacity"},OVERFLOW:{X:{AUTO:"tide-x-auto",HIDDEN:"tide-x-hidden",SCROLL:"tide-x-scroll"},XY:{AUTO:"tide-xy-auto",HIDDEN:"tide-xy-hidden"},Y:{AUTO:"tide-y-auto",HIDDEN:"tide-y-hidden"}},PADDING:{BOTTOM:{ZERO:"tide-padding-bottom-0",QUARTER:"tide-padding-bottom-1/4",HALF:"tide-padding-bottom-1/2",ONE:"tide-padding-bottom-1",TWO:"tide-padding-bottom-2",FOUR:"tide-padding-bottom-4"},FULL:{ZERO:"tide-padding-0",QUARTER:"tide-padding-1/4",HALF:"tide-padding-1/2",ONE:"tide-padding-1",TWO:"tide-padding-2",FOUR:"tide-padding-4"},LEFT:{ZERO:"tide-padding-left-0",QUARTER:"tide-padding-left-1/4",HALF:"tide-padding-left-1/2",ONE:"tide-padding-left-1",TWO:"tide-padding-left-2",FOUR:"tide-padding-left-4"},RIGHT:{ZERO:"tide-padding-right-0",QUARTER:"tide-padding-right-1/4",HALF:"tide-padding-right-1/2",ONE:"tide-padding-right-1",TWO:"tide-padding-right-2",FOUR:"tide-padding-right-4"},TOP:{ZERO:"tide-padding-top-0",QUARTER:"tide-padding-top-1/4",HALF:"tide-padding-top-1/2",ONE:"tide-padding-top-1",TWO:"tide-padding-top-2",FOUR:"tide-padding-top-4"},X:{ZERO:"tide-padding-x-0",QUARTER:"tide-padding-x-1/4",HALF:"tide-padding-x-1/2",ONE:"tide-padding-x-1",TWO:"tide-padding-x-2",FOUR:"tide-padding-x-4"},Y:{ZERO:"tide-padding-y-0",QUARTER:"tide-padding-y-1/4",HALF:"tide-padding-y-1/2",ONE:"tide-padding-y-1",TWO:"tide-padding-y-2",FOUR:"tide-padding-y-4"}},POINTER_EVENTS:{OFF:"tide-pointer-events-none",ON:"tide-pointer-events"},POSITION:{ABSOLUTE:"tide-position-absolute",FIXED:"tide-position-fixed",RELATIVE:"tide-position-relative",STATIC:"tide-position-static",STICKY:"tide-position-sticky"},POSITIONING:{BOTTOM:"tide-bottom-0",LEFT:"tide-left-0",RIGHT:"tide-right-0",TOP:"tide-top-0"},RATIO:{ONE_TO_ONE:"tide-ratio-1/1",SIXTEEN_TO_NINE:"tide-ratio-16/9",THREE_TO_TWO:"tide-ratio-3/2"},SCROLLBAR:{OFF:"tide-scrollbar-none"},SHADOW:{INITIAL:"tide-shadow-initial",BOTTOM:"tide-shadow-bottom",TOP:"tide-shadow-top",TEXT:"tide-shadow-text"},SNAP:{ON:"tide-scroll-snap"},SNAP_ALIGN:{START:"tide-scroll-snap-start"},TEXT_TRANSFORM:{LOWER:"tide-text-transform-lower",NONE:"tide-text-transform-none",UPPER:"tide-text-transform-upper"},UNDERLINE:{HOVER:"tide-underline-hover",OFF:"tide-underline-none",ON:"tide-underline"},VISIBILITY:{OFF:"tide-visible-none",ON:"tide-visible"},WHITESPACE_WRAP:{OFF:"tide-whitespace-nowrap"},WIDTH:{AUTO:"tide-width-auto",ZERO:"tide-width-0",FULL:"tide-width-full",MAX_FULL:"tide-max-width-full"},Z_INDEX:{INITIAL:"tide-z-index-initial",ONE:"tide-z-index-1"}};t.DISPLAY.BLOCK,t.DISPLAY.CONTENTS,t.DISPLAY.FLEX,t.DISPLAY.GRID,t.DISPLAY.NONE,t.DISPLAY.INITIAL,t.DISPLAY.INLINE,t.DISPLAY.INLINE_BLOCK,t.DISPLAY.INLINE_FLEX,t.AXIS1.AROUND,t.AXIS1.BETWEEN,t.AXIS1.CENTER,t.AXIS1.END,t.AXIS1.START,t.AXIS2.AROUND,t.AXIS2.CENTER,t.AXIS2.END,t.AXIS2.START,t.FLEX.DIRECTION.COLUMN,t.FLEX.DIRECTION.COLUMN_REVERSE,t.FLEX.DIRECTION.ROW,t.FLEX.DIRECTION.ROW_REVERSE,t.GAP.ONE,t.GAP.HALF,t.GAP.QUARTER,t.GAP.TWO,t.GAP.FOUR,t.FLEX.BASIS.ZERO,t.FLEX.GROW.ON,t.FLEX.GROW.OFF,t.FLEX.SHRINK.ON,t.FLEX.SHRINK.OFF,t.FLEX.WRAP,t.POSITION.ABSOLUTE,t.POSITION.FIXED,t.POSITION.RELATIVE,t.POSITION.STICKY,t.POSITIONING.TOP,t.POSITIONING.RIGHT,t.POSITIONING.BOTTOM,t.POSITIONING.LEFT,t.BOX_SIZING.BORDER_BOX,t.BOX_SIZING.CONTENT_BOX,t.MARGIN.FULL.ZERO,t.MARGIN.FULL.ONE,t.MARGIN.FULL.HALF,t.MARGIN.FULL.QUARTER,t.MARGIN.FULL.TWO,t.MARGIN.FULL.FOUR,t.MARGIN.Y.ZERO,t.MARGIN.Y.ONE,t.MARGIN.Y.HALF,t.MARGIN.Y.QUARTER,t.MARGIN.Y.TWO,t.MARGIN.Y.FOUR,t.MARGIN.TOP.ZERO,t.MARGIN.TOP.ONE,t.MARGIN.TOP.HALF,t.MARGIN.TOP.QUARTER,t.MARGIN.TOP.TWO,t.MARGIN.TOP.FOUR,t.MARGIN.X.ZERO,t.MARGIN.X.ONE,t.MARGIN.X.HALF,t.MARGIN.X.QUARTER,t.MARGIN.X.TWO,t.MARGIN.X.FOUR,t.MARGIN.X.AUTO,t.MARGIN.RIGHT.ZERO,t.MARGIN.RIGHT.ONE,t.MARGIN.RIGHT.HALF,t.MARGIN.RIGHT.QUARTER,t.MARGIN.RIGHT.TWO,t.MARGIN.RIGHT.FOUR,t.MARGIN.RIGHT.AUTO,t.MARGIN.BOTTOM.ZERO,t.MARGIN.BOTTOM.ONE,t.MARGIN.BOTTOM.HALF,t.MARGIN.BOTTOM.QUARTER,t.MARGIN.BOTTOM.TWO,t.MARGIN.BOTTOM.FOUR,t.MARGIN.LEFT.ZERO,t.MARGIN.LEFT.ONE,t.MARGIN.LEFT.HALF,t.MARGIN.LEFT.QUARTER,t.MARGIN.LEFT.TWO,t.MARGIN.LEFT.FOUR,t.MARGIN.LEFT.AUTO,t.BORDER.FULL.ONE,t.BORDER.FULL.TWO,t.BORDER.TOP.ONE,t.BORDER.TOP.TWO,t.BORDER.RIGHT.ONE,t.BORDER.RIGHT.TWO,t.BORDER.BOTTOM.ONE,t.BORDER.BOTTOM.TWO,t.BORDER.LEFT.ONE,t.BORDER.LEFT.TWO,t.BORDER.RADIUS.ONE,t.BORDER.RADIUS.HALF,t.BORDER.RADIUS.QUARTER,t.BORDER.RADIUS.FULL,t.PADDING.FULL.ZERO,t.PADDING.FULL.ONE,t.PADDING.FULL.HALF,t.PADDING.FULL.QUARTER,t.PADDING.FULL.TWO,t.PADDING.FULL.FOUR,t.PADDING.Y.ZERO,t.PADDING.Y.ONE,t.PADDING.Y.HALF,t.PADDING.Y.QUARTER,t.PADDING.Y.TWO,t.PADDING.Y.FOUR,t.PADDING.TOP.ZERO,t.PADDING.TOP.ONE,t.PADDING.TOP.HALF,t.PADDING.TOP.QUARTER,t.PADDING.TOP.TWO,t.PADDING.TOP.FOUR,t.PADDING.X.ZERO,t.PADDING.X.ONE,t.PADDING.X.HALF,t.PADDING.X.QUARTER,t.PADDING.X.TWO,t.PADDING.X.FOUR,t.PADDING.RIGHT.ZERO,t.PADDING.RIGHT.ONE,t.PADDING.RIGHT.HALF,t.PADDING.RIGHT.QUARTER,t.PADDING.RIGHT.TWO,t.PADDING.RIGHT.FOUR,t.PADDING.BOTTOM.ZERO,t.PADDING.BOTTOM.ONE,t.PADDING.BOTTOM.HALF,t.PADDING.BOTTOM.QUARTER,t.PADDING.BOTTOM.TWO,t.PADDING.BOTTOM.FOUR,t.PADDING.LEFT.ZERO,t.PADDING.LEFT.ONE,t.PADDING.LEFT.HALF,t.PADDING.LEFT.QUARTER,t.PADDING.LEFT.TWO,t.PADDING.LEFT.FOUR,t.WIDTH.MAX_FULL,t.WIDTH.ZERO,t.WIDTH.FULL,t.HEIGHT.ZERO,t.HEIGHT.FULL,t.ALIGN.Y.MIDDLE,t.BREAK_WORD,t.CURSOR.NOT_ALLOWED,t.CURSOR.POINTER,t.CURSOR.TEXT,t.FONT.SIZE.TWELVE,t.FONT.SIZE.FOURTEEN,t.FONT.SIZE.SIXTEEN,t.FONT.SIZE.TWENTY,t.FONT.SIZE.TWENTY_FOUR,t.FONT.SIZE.THIRTY_TWO,t.FONT.WEIGHT.FOUR_HUNDRED,t.FONT.WEIGHT.FIVE_HUNDRED,t.FONT.WEIGHT.SIX_HUNDRED,t.FONT.WEIGHT.SEVEN_HUNDRED,t.LIST_BULLETS.OFF,t.OBJECT.CENTER,t.OBJECT.CONTAIN,t.OBJECT.COVER,t.OBJECT.SCALE_DOWN,t.POINTER_EVENTS.ON,t.POINTER_EVENTS.OFF,t.SCROLLBAR.OFF,t.SHADOW.BOTTOM,t.SHADOW.TOP,t.SNAP.ON,t.SNAP_ALIGN.START,t.ALIGN.X.LEFT,t.ALIGN.X.CENTER,t.ALIGN.X.RIGHT,t.TEXT_TRANSFORM.LOWER,t.TEXT_TRANSFORM.NONE,t.TEXT_TRANSFORM.UPPER,t.UNDERLINE.HOVER,t.UNDERLINE.OFF,t.UNDERLINE.ON,t.VISIBILITY.ON,t.VISIBILITY.OFF,t.WHITESPACE_WRAP.OFF,t.OVERFLOW.XY.AUTO,t.OVERFLOW.XY.HIDDEN,t.OVERFLOW.X.AUTO,t.OVERFLOW.X.HIDDEN,t.OVERFLOW.X.SCROLL,t.OVERFLOW.Y.AUTO,t.OVERFLOW.Y.HIDDEN,t.Z_INDEX.ONE;const ft={class:e.normalizeClass(["tide-divider"])},Et=e.defineComponent({__name:"TideDivider",props:{orientation:{default:Ie.HORIZONTAL}},setup(o){const n=o;return(r,s)=>(e.openBlock(),e.createElementBlock("div",ft,[e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).BORDER.COLOR.LOW,n.orientation===e.unref(Ie).HORIZONTAL?[e.unref(t).MARGIN.Y.HALF,e.unref(t).BORDER.BOTTOM.ONE,e.unref(t).WIDTH.FULL]:[e.unref(t).MARGIN.X.HALF,e.unref(t).BORDER.RIGHT.ONE,e.unref(t).HEIGHT.FULL]])},null,2)]))}});const F=(o,n)=>{const r=o.__vccOpts||o;for(const[s,i]of n)r[s]=i;return r},Ae=F(Et,[["__scopeId","data-v-c2dc7d09"]]),ye=(o,n)=>{const r=o[n];return r?typeof r=="function"?r():Promise.resolve(r):new Promise((s,i)=>{(typeof queueMicrotask=="function"?queueMicrotask:setTimeout)(i.bind(null,new Error("Unknown variable dynamic import: "+n)))})},ze={AERO:"aero",ATV:"atv",BOATMART:"boatmart",CYCLE:"cycle",EQUIPMENT:"equipment",PWC:"pwc",RV:"rv",SNOW:"snow",TRUCK:"truck"},C={LARGE:"large",SMALL:"small"},K={LARGE:"large",SMALL:"small"},Ne=o=>{let n=o&&typeof o=="number"?new Intl.NumberFormat().format(o):String(o||""),r=n;return o&&typeof o=="string"&&(r=r.replace(/\D/g,""),Number(r)?n=new Intl.NumberFormat().format(Number(r)):n="0"),n},mt=o=>o&&typeof o=="string"?o.replace(/([a-z]{1})([A-Z]{1})/g,"$1 $2").replace(/[\s_-]/g," ").toLowerCase().split(" ").map(n=>n.slice(0,1).toUpperCase()+n.slice(1)).join(""):o,Ot=o=>{let n=String(o&&typeof o=="number"?o:o||""),r=n;switch(r=r.replace(/\D/g,""),r.length){case 7:n=`${r.slice(0,3)}-${r.slice(3)}`;break;case 10:n=`${r.slice(0,3)}-${r.slice(3,6)}-${r.slice(6)}`;break;case 11:n=`${r.slice(0,1)}-${r.slice(1,4)}-${r.slice(4,7)}-${r.slice(7)}`;break;default:n=r;break}return n},Rt=o=>`$${o?Ne(o):String(o||"0")}`,_=e.defineComponent({__name:"TideIcon",props:{icon:{},size:{default:C.SMALL}},setup(o){const n=o,r=e.ref();return e.watch(()=>n.icon,async()=>{const s=n.icon,i=mt(s),[c]=s.split("-"),a=ze[c==null?void 0:c.toUpperCase()],l=e.defineAsyncComponent(()=>a?ye(Object.assign({"../assets/svg/icons/realm/atv/IconAtvAtv.svg":()=>Promise.resolve().then(()=>require("./IconAtvAtv-c2e11398.cjs")),"../assets/svg/icons/realm/atv/IconAtvDuneBuggy.svg":()=>Promise.resolve().then(()=>require("./IconAtvDuneBuggy-ff1f7a23.cjs")),"../assets/svg/icons/realm/atv/IconAtvGoKart.svg":()=>Promise.resolve().then(()=>require("./IconAtvGoKart-d1ad6a03.cjs")),"../assets/svg/icons/realm/atv/IconAtvGolfCart.svg":()=>Promise.resolve().then(()=>require("./IconAtvGolfCart-9b3569bc.cjs")),"../assets/svg/icons/realm/atv/IconAtvSandRail.svg":()=>Promise.resolve().then(()=>require("./IconAtvSandRail-d71aa55b.cjs")),"../assets/svg/icons/realm/atv/IconAtvSideBySide.svg":()=>Promise.resolve().then(()=>require("./IconAtvSideBySide-f734e90f.cjs")),"../assets/svg/icons/realm/atv/IconAtvTrailer.svg":()=>Promise.resolve().then(()=>require("./IconAtvTrailer-ee1d6ec1.cjs")),"../assets/svg/icons/realm/boatmart/IconBoatmartPwc.svg":()=>Promise.resolve().then(()=>require("./IconBoatmartPwc-9de80564.cjs")),"../assets/svg/icons/realm/boatmart/IconBoatmartTrailer.svg":()=>Promise.resolve().then(()=>require("./IconBoatmartTrailer-ff1f376f.cjs")),"../assets/svg/icons/realm/rv/IconRvClassA.svg":()=>Promise.resolve().then(()=>require("./IconRvClassA-80da0dc5.cjs")),"../assets/svg/icons/realm/rv/IconRvClassB.svg":()=>Promise.resolve().then(()=>require("./IconRvClassB-2032c703.cjs")),"../assets/svg/icons/realm/rv/IconRvClassC.svg":()=>Promise.resolve().then(()=>require("./IconRvClassC-1d11671a.cjs")),"../assets/svg/icons/realm/rv/IconRvFifthWheel.svg":()=>Promise.resolve().then(()=>require("./IconRvFifthWheel-b234c67c.cjs")),"../assets/svg/icons/realm/rv/IconRvFishHouse.svg":()=>Promise.resolve().then(()=>require("./IconRvFishHouse-f6edfbbd.cjs")),"../assets/svg/icons/realm/rv/IconRvParkModel.svg":()=>Promise.resolve().then(()=>require("./IconRvParkModel-3707f77a.cjs")),"../assets/svg/icons/realm/rv/IconRvPopUpCamper.svg":()=>Promise.resolve().then(()=>require("./IconRvPopUpCamper-912c58c2.cjs")),"../assets/svg/icons/realm/rv/IconRvTravelTrailer.svg":()=>Promise.resolve().then(()=>require("./IconRvTravelTrailer-44a5f64d.cjs")),"../assets/svg/icons/realm/rv/IconRvTruckCamper.svg":()=>Promise.resolve().then(()=>require("./IconRvTruckCamper-ce2393f4.cjs"))}),`../assets/svg/icons/realm/${a}/Icon${i}.svg`):ye(Object.assign({"../assets/svg/icons/IconAccountBalance.svg":()=>Promise.resolve().then(()=>require("./IconAccountBalance-0a430d19.cjs")),"../assets/svg/icons/IconAcute.svg":()=>Promise.resolve().then(()=>require("./IconAcute-b1e43123.cjs")),"../assets/svg/icons/IconAdd.svg":()=>Promise.resolve().then(()=>require("./IconAdd-91de604b.cjs")),"../assets/svg/icons/IconAiDescription.svg":()=>Promise.resolve().then(()=>require("./IconAiDescription-674cca6d.cjs")),"../assets/svg/icons/IconAlignSpaceEven.svg":()=>Promise.resolve().then(()=>require("./IconAlignSpaceEven-7ee811f8.cjs")),"../assets/svg/icons/IconApplePay.svg":()=>Promise.resolve().then(()=>require("./IconApplePay-92395240.cjs")),"../assets/svg/icons/IconArrowBack.svg":()=>Promise.resolve().then(()=>require("./IconArrowBack-3d47d166.cjs")),"../assets/svg/icons/IconArrowCycle.svg":()=>Promise.resolve().then(()=>require("./IconArrowCycle-7b7c7325.cjs")),"../assets/svg/icons/IconArrowForward.svg":()=>Promise.resolve().then(()=>require("./IconArrowForward-613e128c.cjs")),"../assets/svg/icons/IconArrowRight.svg":()=>Promise.resolve().then(()=>require("./IconArrowRight-9f39cdbb.cjs")),"../assets/svg/icons/IconAssignment.svg":()=>Promise.resolve().then(()=>require("./IconAssignment-915702cc.cjs")),"../assets/svg/icons/IconAttachMoney.svg":()=>Promise.resolve().then(()=>require("./IconAttachMoney-6d3087ab.cjs")),"../assets/svg/icons/IconAutoRenew.svg":()=>Promise.resolve().then(()=>require("./IconAutoRenew-bcd665a4.cjs")),"../assets/svg/icons/IconAwardStar.svg":()=>Promise.resolve().then(()=>require("./IconAwardStar-447cf4fc.cjs")),"../assets/svg/icons/IconBed.svg":()=>Promise.resolve().then(()=>require("./IconBed-8bcac0c0.cjs")),"../assets/svg/icons/IconBolt.svg":()=>Promise.resolve().then(()=>require("./IconBolt-36fc8ef9.cjs")),"../assets/svg/icons/IconBookmark.svg":()=>Promise.resolve().then(()=>require("./IconBookmark-3f6454d9.cjs")),"../assets/svg/icons/IconBunkhouse.svg":()=>Promise.resolve().then(()=>require("./IconBunkhouse-348a1518.cjs")),"../assets/svg/icons/IconCalendarMonth.svg":()=>Promise.resolve().then(()=>require("./IconCalendarMonth-bb5bbb9b.cjs")),"../assets/svg/icons/IconCall.svg":()=>Promise.resolve().then(()=>require("./IconCall-08f3119f.cjs")),"../assets/svg/icons/IconCallQuality.svg":()=>Promise.resolve().then(()=>require("./IconCallQuality-56ee01fb.cjs")),"../assets/svg/icons/IconCarRental.svg":()=>Promise.resolve().then(()=>require("./IconCarRental-b0af42ff.cjs")),"../assets/svg/icons/IconCheck.svg":()=>Promise.resolve().then(()=>require("./IconCheck-910929df.cjs")),"../assets/svg/icons/IconChevronLeft.svg":()=>Promise.resolve().then(()=>require("./IconChevronLeft-6626777e.cjs")),"../assets/svg/icons/IconChevronRight.svg":()=>Promise.resolve().then(()=>require("./IconChevronRight-91bc7ad1.cjs")),"../assets/svg/icons/IconClear.svg":()=>Promise.resolve().then(()=>require("./IconClear-489c5a46.cjs")),"../assets/svg/icons/IconClose.svg":()=>Promise.resolve().then(()=>require("./IconClose-538a540f.cjs")),"../assets/svg/icons/IconContract.svg":()=>Promise.resolve().then(()=>require("./IconContract-0acea45b.cjs")),"../assets/svg/icons/IconCrash.svg":()=>Promise.resolve().then(()=>require("./IconCrash-8d91a8db.cjs")),"../assets/svg/icons/IconDashboardCustomize.svg":()=>Promise.resolve().then(()=>require("./IconDashboardCustomize-5321091b.cjs")),"../assets/svg/icons/IconDelete.svg":()=>Promise.resolve().then(()=>require("./IconDelete-5cc224a1.cjs")),"../assets/svg/icons/IconDiamond.svg":()=>Promise.resolve().then(()=>require("./IconDiamond-4e736f5f.cjs")),"../assets/svg/icons/IconDirectionsBoat.svg":()=>Promise.resolve().then(()=>require("./IconDirectionsBoat-11aaf49c.cjs")),"../assets/svg/icons/IconDomain.svg":()=>Promise.resolve().then(()=>require("./IconDomain-05540c31.cjs")),"../assets/svg/icons/IconDraft.svg":()=>Promise.resolve().then(()=>require("./IconDraft-26850369.cjs")),"../assets/svg/icons/IconEdit.svg":()=>Promise.resolve().then(()=>require("./IconEdit-b4d5f175.cjs")),"../assets/svg/icons/IconEngine.svg":()=>Promise.resolve().then(()=>require("./IconEngine-e51389f9.cjs")),"../assets/svg/icons/IconEngineering.svg":()=>Promise.resolve().then(()=>require("./IconEngineering-a74e5efe.cjs")),"../assets/svg/icons/IconError.svg":()=>Promise.resolve().then(()=>require("./IconError-4ad48be1.cjs")),"../assets/svg/icons/IconExpandContent.svg":()=>Promise.resolve().then(()=>require("./IconExpandContent-03a28bfb.cjs")),"../assets/svg/icons/IconExpandLess.svg":()=>Promise.resolve().then(()=>require("./IconExpandLess-59a80211.cjs")),"../assets/svg/icons/IconExpandMore.svg":()=>Promise.resolve().then(()=>require("./IconExpandMore-edf55cdd.cjs")),"../assets/svg/icons/IconFacebook.svg":()=>Promise.resolve().then(()=>require("./IconFacebook-9c43095a.cjs")),"../assets/svg/icons/IconFavorite.svg":()=>Promise.resolve().then(()=>require("./IconFavorite-43091cef.cjs")),"../assets/svg/icons/IconFavoriteFilled.svg":()=>Promise.resolve().then(()=>require("./IconFavoriteFilled-71277849.cjs")),"../assets/svg/icons/IconFlag.svg":()=>Promise.resolve().then(()=>require("./IconFlag-0243bbb9.cjs")),"../assets/svg/icons/IconFormatBold.svg":()=>Promise.resolve().then(()=>require("./IconFormatBold-4faa5f99.cjs")),"../assets/svg/icons/IconFormatItalic.svg":()=>Promise.resolve().then(()=>require("./IconFormatItalic-fee490fc.cjs")),"../assets/svg/icons/IconFormatListBulleted.svg":()=>Promise.resolve().then(()=>require("./IconFormatListBulleted-d0a77d0e.cjs")),"../assets/svg/icons/IconForum.svg":()=>Promise.resolve().then(()=>require("./IconForum-22217aa0.cjs")),"../assets/svg/icons/IconGas.svg":()=>Promise.resolve().then(()=>require("./IconGas-9d623313.cjs")),"../assets/svg/icons/IconGavel.svg":()=>Promise.resolve().then(()=>require("./IconGavel-aacae653.cjs")),"../assets/svg/icons/IconGears.svg":()=>Promise.resolve().then(()=>require("./IconGears-c3b1ba71.cjs")),"../assets/svg/icons/IconGlobeLocationPin.svg":()=>Promise.resolve().then(()=>require("./IconGlobeLocationPin-b869a4e7.cjs")),"../assets/svg/icons/IconGoogle.svg":()=>Promise.resolve().then(()=>require("./IconGoogle-77ec192e.cjs")),"../assets/svg/icons/IconGooglePay.svg":()=>Promise.resolve().then(()=>require("./IconGooglePay-049e93ec.cjs")),"../assets/svg/icons/IconGrid.svg":()=>Promise.resolve().then(()=>require("./IconGrid-1693599f.cjs")),"../assets/svg/icons/IconHandshake.svg":()=>Promise.resolve().then(()=>require("./IconHandshake-33b452a7.cjs")),"../assets/svg/icons/IconHandyman.svg":()=>Promise.resolve().then(()=>require("./IconHandyman-ffc0fafb.cjs")),"../assets/svg/icons/IconHeight.svg":()=>Promise.resolve().then(()=>require("./IconHeight-d8ee424f.cjs")),"../assets/svg/icons/IconHelp.svg":()=>Promise.resolve().then(()=>require("./IconHelp-43137a66.cjs")),"../assets/svg/icons/IconInfo.svg":()=>Promise.resolve().then(()=>require("./IconInfo-2d14575c.cjs")),"../assets/svg/icons/IconInformation.svg":()=>Promise.resolve().then(()=>require("./IconInformation-be043a15.cjs")),"../assets/svg/icons/IconInsertText.svg":()=>Promise.resolve().then(()=>require("./IconInsertText-14c80b9a.cjs")),"../assets/svg/icons/IconInstagram.svg":()=>Promise.resolve().then(()=>require("./IconInstagram-43bb02ea.cjs")),"../assets/svg/icons/IconIosShare.svg":()=>Promise.resolve().then(()=>require("./IconIosShare-526a016a.cjs")),"../assets/svg/icons/IconLayout.svg":()=>Promise.resolve().then(()=>require("./IconLayout-e663120e.cjs")),"../assets/svg/icons/IconLevellingJack.svg":()=>Promise.resolve().then(()=>require("./IconLevellingJack-40c63f7c.cjs")),"../assets/svg/icons/IconLinkedIn.svg":()=>Promise.resolve().then(()=>require("./IconLinkedIn-088a3792.cjs")),"../assets/svg/icons/IconLocalShipping.svg":()=>Promise.resolve().then(()=>require("./IconLocalShipping-9bca5a95.cjs")),"../assets/svg/icons/IconLock.svg":()=>Promise.resolve().then(()=>require("./IconLock-1c996287.cjs")),"../assets/svg/icons/IconMail.svg":()=>Promise.resolve().then(()=>require("./IconMail-f2b8fee4.cjs")),"../assets/svg/icons/IconMenu.svg":()=>Promise.resolve().then(()=>require("./IconMenu-c7c2b143.cjs")),"../assets/svg/icons/IconMoneyBag.svg":()=>Promise.resolve().then(()=>require("./IconMoneyBag-a3d297f5.cjs")),"../assets/svg/icons/IconMoreHoriz.svg":()=>Promise.resolve().then(()=>require("./IconMoreHoriz-2c82da62.cjs")),"../assets/svg/icons/IconNotifications.svg":()=>Promise.resolve().then(()=>require("./IconNotifications-01f7658b.cjs")),"../assets/svg/icons/IconOdometer.svg":()=>Promise.resolve().then(()=>require("./IconOdometer-a1bc108b.cjs")),"../assets/svg/icons/IconOpenInNew.svg":()=>Promise.resolve().then(()=>require("./IconOpenInNew-9032f1db.cjs")),"../assets/svg/icons/IconPalette.svg":()=>Promise.resolve().then(()=>require("./IconPalette-269c7286.cjs")),"../assets/svg/icons/IconPaypal.svg":()=>Promise.resolve().then(()=>require("./IconPaypal-427e8667.cjs")),"../assets/svg/icons/IconPerson.svg":()=>Promise.resolve().then(()=>require("./IconPerson-ee87961e.cjs")),"../assets/svg/icons/IconPersonSearch.svg":()=>Promise.resolve().then(()=>require("./IconPersonSearch-b0c1a4e5.cjs")),"../assets/svg/icons/IconPhotoCamera.svg":()=>Promise.resolve().then(()=>require("./IconPhotoCamera-56cb060d.cjs")),"../assets/svg/icons/IconPinterest.svg":()=>Promise.resolve().then(()=>require("./IconPinterest-87034fbf.cjs")),"../assets/svg/icons/IconPlayArrow.svg":()=>Promise.resolve().then(()=>require("./IconPlayArrow-80f601bf.cjs")),"../assets/svg/icons/IconPolicy.svg":()=>Promise.resolve().then(()=>require("./IconPolicy-8f5ca682.cjs")),"../assets/svg/icons/IconPower.svg":()=>Promise.resolve().then(()=>require("./IconPower-d41e067d.cjs")),"../assets/svg/icons/IconPowerOff.svg":()=>Promise.resolve().then(()=>require("./IconPowerOff-0e3118bf.cjs")),"../assets/svg/icons/IconPriorityHigh.svg":()=>Promise.resolve().then(()=>require("./IconPriorityHigh-aae28a02.cjs")),"../assets/svg/icons/IconRemove.svg":()=>Promise.resolve().then(()=>require("./IconRemove-73b05132.cjs")),"../assets/svg/icons/IconRequestQuote.svg":()=>Promise.resolve().then(()=>require("./IconRequestQuote-e24db541.cjs")),"../assets/svg/icons/IconResetWrench.svg":()=>Promise.resolve().then(()=>require("./IconResetWrench-5b5c4f74.cjs")),"../assets/svg/icons/IconRoad.svg":()=>Promise.resolve().then(()=>require("./IconRoad-3124bbd8.cjs")),"../assets/svg/icons/IconRoundedCorner.svg":()=>Promise.resolve().then(()=>require("./IconRoundedCorner-53cb2cfc.cjs")),"../assets/svg/icons/IconRuler.svg":()=>Promise.resolve().then(()=>require("./IconRuler-5feb5a83.cjs")),"../assets/svg/icons/IconSailing.svg":()=>Promise.resolve().then(()=>require("./IconSailing-fa136eea.cjs")),"../assets/svg/icons/IconSchool.svg":()=>Promise.resolve().then(()=>require("./IconSchool-0bca17f9.cjs")),"../assets/svg/icons/IconSearch.svg":()=>Promise.resolve().then(()=>require("./IconSearch-45b2c0e5.cjs")),"../assets/svg/icons/IconSeating.svg":()=>Promise.resolve().then(()=>require("./IconSeating-bc19b98f.cjs")),"../assets/svg/icons/IconSell.svg":()=>Promise.resolve().then(()=>require("./IconSell-bcede586.cjs")),"../assets/svg/icons/IconSensors.svg":()=>Promise.resolve().then(()=>require("./IconSensors-f35e7566.cjs")),"../assets/svg/icons/IconSettings.svg":()=>Promise.resolve().then(()=>require("./IconSettings-b8848783.cjs")),"../assets/svg/icons/IconShare.svg":()=>Promise.resolve().then(()=>require("./IconShare-ff50a973.cjs")),"../assets/svg/icons/IconShieldCheck.svg":()=>Promise.resolve().then(()=>require("./IconShieldCheck-b57fd628.cjs")),"../assets/svg/icons/IconShoppingCart.svg":()=>Promise.resolve().then(()=>require("./IconShoppingCart-eee95744.cjs")),"../assets/svg/icons/IconSleeps.svg":()=>Promise.resolve().then(()=>require("./IconSleeps-ffe0dd67.cjs")),"../assets/svg/icons/IconSms.svg":()=>Promise.resolve().then(()=>require("./IconSms-0575f458.cjs")),"../assets/svg/icons/IconSnowflake.svg":()=>Promise.resolve().then(()=>require("./IconSnowflake-2fccf99d.cjs")),"../assets/svg/icons/IconStar.svg":()=>Promise.resolve().then(()=>require("./IconStar-e2a88836.cjs")),"../assets/svg/icons/IconSummarize.svg":()=>Promise.resolve().then(()=>require("./IconSummarize-f73dec0e.cjs")),"../assets/svg/icons/IconSwapHoriz.svg":()=>Promise.resolve().then(()=>require("./IconSwapHoriz-4a33bd68.cjs")),"../assets/svg/icons/IconSwapVert.svg":()=>Promise.resolve().then(()=>require("./IconSwapVert-29258e96.cjs")),"../assets/svg/icons/IconThreeDRotation.svg":()=>Promise.resolve().then(()=>require("./IconThreeDRotation-7be89ff8.cjs")),"../assets/svg/icons/IconThumbUp.svg":()=>Promise.resolve().then(()=>require("./IconThumbUp-722d3c77.cjs")),"../assets/svg/icons/IconTrendingDown.svg":()=>Promise.resolve().then(()=>require("./IconTrendingDown-3da4b7d4.cjs")),"../assets/svg/icons/IconTrophy.svg":()=>Promise.resolve().then(()=>require("./IconTrophy-4d05eb75.cjs")),"../assets/svg/icons/IconTune.svg":()=>Promise.resolve().then(()=>require("./IconTune-1276696d.cjs")),"../assets/svg/icons/IconTwitter.svg":()=>Promise.resolve().then(()=>require("./IconTwitter-55b8ba63.cjs")),"../assets/svg/icons/IconUmbrella.svg":()=>Promise.resolve().then(()=>require("./IconUmbrella-81fdaa63.cjs")),"../assets/svg/icons/IconVerified.svg":()=>Promise.resolve().then(()=>require("./IconVerified-b71255f2.cjs")),"../assets/svg/icons/IconVideocam.svg":()=>Promise.resolve().then(()=>require("./IconVideocam-f5b07935.cjs")),"../assets/svg/icons/IconViewInAr.svg":()=>Promise.resolve().then(()=>require("./IconViewInAr-a583aff8.cjs")),"../assets/svg/icons/IconVisibility.svg":()=>Promise.resolve().then(()=>require("./IconVisibility-4984bcac.cjs")),"../assets/svg/icons/IconVolumeOff.svg":()=>Promise.resolve().then(()=>require("./IconVolumeOff-35d350ee.cjs")),"../assets/svg/icons/IconVolumeOn.svg":()=>Promise.resolve().then(()=>require("./IconVolumeOn-386ad18b.cjs")),"../assets/svg/icons/IconWarehouse.svg":()=>Promise.resolve().then(()=>require("./IconWarehouse-23085045.cjs")),"../assets/svg/icons/IconWarning.svg":()=>Promise.resolve().then(()=>require("./IconWarning-54f3a9ac.cjs")),"../assets/svg/icons/IconWater.svg":()=>Promise.resolve().then(()=>require("./IconWater-0b57b8cc.cjs")),"../assets/svg/icons/IconWeight.svg":()=>Promise.resolve().then(()=>require("./IconWeight-c6ddd367.cjs")),"../assets/svg/icons/IconWidth.svg":()=>Promise.resolve().then(()=>require("./IconWidth-a556befc.cjs")),"../assets/svg/icons/IconWorkspacePremium.svg":()=>Promise.resolve().then(()=>require("./IconWorkspacePremium-bc3aeb0c.cjs")),"../assets/svg/icons/IconWrench.svg":()=>Promise.resolve().then(()=>require("./IconWrench-bd1d2907.cjs")),"../assets/svg/icons/IconYoutube.svg":()=>Promise.resolve().then(()=>require("./IconYoutube-ed951c21.cjs"))}),`../assets/svg/icons/Icon${i}.svg`));r.value=e.markRaw(l)},{immediate:!0}),(s,i)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-icon",n.size])},[r.value?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(r.value),{key:0,class:e.normalizeClass([e.unref(t).DISPLAY.BLOCK]),"data-icon":s.icon,fill:"currentColor"},null,8,["class","data-icon"])):e.createCommentVNode("",!0)],2))}});const h={ACCOUNT_BALANCE:"account-balance",ACUTE:"acute",ADD:"add",AI_DESCRIPTION:"ai-description",ALIGN_SPACE_EVEN:"align-space-even",APPLE_PAY:"apple-pay",ARROW_BACK:"arrow-back",ARROW_CYCLE:"arrow-cycle",ARROW_FORWARD:"arrow-forward",ARROW_RIGHT:"arrow-right",ASSIGNMENT:"assignment",ATTACH_MONEY:"attach-money",AUTO_RENEW:"auto-renew",AWARD_STAR:"award-star",BED:"bed",BOLT:"bolt",BOOKMARK:"bookmark",BUNKHOUSE:"bunkhouse",CALENDAR_MONTH:"calendar-month",CALL:"call",CALL_QUALITY:"call-quality",CAR_RENTAL:"car-rental",CHECK:"check",CHEVRON_LEFT:"chevron-left",CHEVRON_RIGHT:"chevron-right",CLEAR:"clear",CLOSE:"close",CONTRACT:"contract",CRASH:"crash",DASHBOARD_CUSTOMIZE:"dashboard-customize",DELETE:"delete",DIAMOND:"diamond",DIRECTIONS_BOAT:"directions-boat",DOMAIN:"domain",DRAFT:"draft",EDIT:"edit",ENGINE:"engine",ENGINEERING:"engineering",ERROR:"error",EXPAND_CONTENT:"expand-content",EXPAND_LESS:"expand-less",EXPAND_MORE:"expand-more",FACEBOOK:"facebook",FAVORITE:"favorite",FAVORITE_FILLED:"favorite-filled",FLAG:"flag",FORMAT_BOLD:"format-bold",FORMAT_ITALIC:"format-italic",FORMAT_LIST_BULLETED:"format-list-bulleted",FORUM:"forum",GAS:"gas",GAVEL:"gavel",GEARS:"gears",GLOBE_LOCATION_PIN:"globe-location-pin",GOOGLE:"google",GOOGLE_PAY:"google-pay",GRID:"grid",HANDSHAKE:"handshake",HANDYMAN:"handyman",HEIGHT:"height",HELP:"help",INFO:"info",INFORMATION:"information",INSERT_TEXT:"insert-text",INSTAGRAM:"instagram",IOS_SHARE:"ios-share",LAYOUT:"layout",LEVELLING_JACK:"levelling-jack",LINKED_IN:"linked in",LOCAL_SHIPPING:"local-shipping",LOCK:"lock",MAIL:"mail",MENU:"menu",MONEY_BAG:"money-bag",MORE_HORIZ:"more-horiz",NOTIFICATIONS:"notifications",ODOMETER:"odometer",OPEN_IN_NEW:"open-in-new",PALETTE:"palette",PAYPAL:"paypal",PERSON:"person",PERSON_SEARCH:"person-search",PHOTO_CAMERA:"photo-camera",PINTEREST:"pinterest",PLAY_ARROW:"play-arrow",POLICY:"policy",POWER:"power",POWER_OFF:"power-off",PRIORITY_HIGH:"priority-high",REMOVE:"remove",REQUEST_QUOTE:"request-quote",RESET_WRENCH:"reset-wrench",ROAD:"road",ROUNDED_CORNER:"rounded-corner",RULER:"ruler",SAILING:"sailing",SCHOOL:"school",SEARCH:"search",SEATING:"seating",SELL:"sell",SENSORS:"sensors",SETTINGS:"settings",SHARE:"share",SHIELD_CHECK:"shield-check",SHOPPING_CART:"shopping-cart",SLEEPS:"sleeps",SMS:"sms",SNOWFLAKE:"snowflake",STAR:"star",SUMMARIZE:"summarize",SWAP_HORIZ:"swap-horiz",SWAP_VERT:"swap-vert",THREE_D_ROTATION:"three-d-rotation",THUMB_UP:"thumb-up",TRENDING_DOWN:"trending-down",TROPHY:"trophy",TUNE:"tune",TWITTER:"twitter",UMBRELLA:"umbrella",VERIFIED:"verified",VIDEOCAM:"videocam",VIEW_IN_AR:"view-in-ar",VISIBILITY:"visibility",VOLUME_OFF:"volume-off",VOLUME_ON:"volume-on",WAREHOUSE:"warehouse",WARNING:"warning",WATER:"water",WEIGHT:"weight",WIDTH:"width",WORKSPACE_PREMIUM:"workspace-premium",WRENCH:"wrench",YOUTUBE:"youtube"},vt={ATV:{ATV:"atv-atv",DUNE_BUGGY:"atv-dune-buggy",GOLF_CART:"atv-golf-cart",GO_KART:"atv-go-kart",SAND_RAIL:"atv-sand-rail",SIDE_BY_SIDE:"atv-side-by-side",TRAILER:"atv-trailer"},BOATMART:{PWC:"boatmart-pwc",TRAILER:"boatmart-trailer"},RV:{CLASS_A:"rv-class-a",CLASS_B:"rv-class-b",CLASS_C:"rv-class-c",FIFTH_WHEEL:"rv-fifth-wheel",FISH_HOUSE:"rv-fish-house",PARK_MODEL:"rv-park-model",POP_UP_CAMPER:"rv-pop-up-camper",TRAVEL_TRAILER:"rv-travel-trailer",TRUCK_CAMPER:"rv-truck-camper"}},Tt={class:"tide-accordion-item"},It=e.defineComponent({__name:"TideAccordionItem",props:{hasBottomDivider:{type:Boolean,default:!1},hasTopDivider:{type:Boolean,default:!1},isExpanded:{type:Boolean,default:!1},isOptional:{type:Boolean,default:!1},label:{default:""}},emits:["toggle"],setup(o,{emit:n}){const r=o,s=()=>{n("toggle")};return(i,c)=>(e.openBlock(),e.createElementBlock("div",Tt,[r.hasTopDivider?(e.openBlock(),e.createBlock(Ae,{key:0})):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass(["tide-accordion-head",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.BETWEEN,e.unref(t).PADDING.Y.HALF,e.unref(t).CURSOR.POINTER]),onClick:s},[e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).FONT.ROLE.LABEL_1_SEMIBOLD])},[e.createElementVNode("span",null,e.toDisplayString(r.label),1),r.isOptional?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass([e.unref(t).FONT.COLOR.SURFACE.VARIANT])}," (optional) ",2)):e.createCommentVNode("",!0)],2),e.createVNode(_,{icon:i.isExpanded?e.unref(h).EXPAND_LESS:e.unref(h).EXPAND_MORE,size:e.unref(C).LARGE},null,8,["icon","size"])],2),e.createElementVNode("div",{class:e.normalizeClass(["tide-accordion-body",r.isExpanded?"expanded":"collapsed",e.unref(t).DISPLAY.GRID])},[e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).OVERFLOW.Y.HIDDEN,e.unref(t).MARGIN.Y.ONE,e.unref(t).FONT.ROLE.BODY_1,e.unref(t).FONT.COLOR.SURFACE.DEFAULT])},[e.renderSlot(i.$slots,"default",{},void 0,!0)],2)],2),r.hasBottomDivider?(e.openBlock(),e.createBlock(Ae,{key:1})):e.createCommentVNode("",!0)]))}});const At=F(It,[["__scopeId","data-v-d5fdff3b"]]),S={BUTTON:"button",LINK:"a"},W={BUTTON:"button",DIV:"div",LINK:"a"},y={PRIMARY:"primary",SECONDARY:"secondary",TERTIARY:"tertiary",QUATERNARY:"quaternary",FLOATING:"floating"},b={BLANK:"_blank",SELF:void 0},H=e.defineComponent({__name:"TideButtonIcon",props:{disabled:{type:Boolean,default:!1},element:{default:S.BUTTON},href:{default:void 0},icon:{default:void 0},isNewTab:{type:Boolean,default:!1},priority:{default:y.PRIMARY}},setup(o){const n=o;return(r,s)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(n.element===e.unref(S).LINK?"a":"button"),{"aria-label":n.icon,class:e.normalizeClass([n.element===e.unref(S).LINK?"tide-link-as-button-icon":"tide-button-icon",n.priority&&`tide-button-${n.priority}`,[e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.CENTER,e.unref(t).AXIS2.CENTER,e.unref(t).BORDER.RADIUS.FULL,e.unref(t).PADDING.FULL.HALF],n.element===e.unref(S).LINK?[e.unref(t).UNDERLINE.OFF]:""]),disabled:n.element===e.unref(S).BUTTON&&n.disabled,href:n.element===e.unref(S).LINK&&n.href?n.href:void 0,target:n.element===e.unref(S).LINK&&n.isNewTab?e.unref(b).BLANK:e.unref(b).SELF},{default:e.withCtx(()=>[n.icon?(e.openBlock(),e.createBlock(_,{key:0,icon:n.icon,size:e.unref(C).LARGE},null,8,["icon","size"])):e.createCommentVNode("",!0)]),_:1},8,["aria-label","class","disabled","href","target"]))}}),P={ERROR:"error",INFO:"info",SUCCESS:"success",WARNING:"warning"},Lt=e.defineComponent({__name:"TideAlert",props:{heading:{default:void 0},isToast:{type:Boolean,default:!1},type:{default:P.INFO}},setup(o){const n=o,r=e.computed(()=>{let s=h.INFO;switch(n.type){case P.ERROR:s=h.ERROR;break;default:case P.INFO:s=h.INFO;break;case P.SUCCESS:s=h.CHECK;break;case P.WARNING:s=h.WARNING;break}return s});return(s,i)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass([n.type,"tide-alert",e.unref(t).DISPLAY.GRID,e.unref(t).AXIS2.CENTER,e.unref(t).BORDER.RADIUS.HALF,e.unref(t).PADDING.FULL.ONE,n.type===e.unref(P).ERROR&&e.unref(t).BG.GLOBAL.SURFACE.ERROR,n.type===e.unref(P).INFO&&e.unref(t).BG.GLOBAL.SURFACE.INFO,n.type===e.unref(P).SUCCESS&&e.unref(t).BG.GLOBAL.SURFACE.SUCCESS,n.type===e.unref(P).WARNING&&e.unref(t).BG.GLOBAL.SURFACE.WARNING,n.isToast?e.unref(t).SHADOW.BOTTOM:""])},[e.createElementVNode("div",{class:e.normalizeClass(["tide-alert-icon",e.unref(t).PADDING.FULL.HALF,e.unref(t).BORDER.RADIUS.FULL,e.unref(t).FONT.COLOR.SURFACE.INVERSE,n.type===e.unref(P).ERROR&&e.unref(t).BG.GLOBAL.PRIMARY.ERROR,n.type===e.unref(P).INFO&&e.unref(t).BG.GLOBAL.PRIMARY.INFO,n.type===e.unref(P).SUCCESS&&e.unref(t).BG.GLOBAL.PRIMARY.SUCCESS,n.type===e.unref(P).WARNING&&e.unref(t).BG.GLOBAL.PRIMARY.WARNING])},[e.createVNode(_,{icon:r.value},null,8,["icon"])],2),e.createElementVNode("div",{class:e.normalizeClass(["tide-alert-heading",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER])},[e.createElementVNode("h2",{class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_1_SEMIBOLD,e.unref(t).FONT.COLOR.SURFACE.DEFAULT])},e.toDisplayString(n.heading),3)],2),e.createVNode(H,{class:e.normalizeClass(["tide-alert-close",e.unref(t).AXIS2.CENTER,e.unref(t).FONT.COLOR.SURFACE.DEFAULT]),icon:e.unref(h).CLOSE,priority:e.unref(y).QUATERNARY,"aria-label":"Close alert"},null,8,["class","icon","priority"]),e.createElementVNode("div",{class:e.normalizeClass(["tide-alert-body",e.unref(t).FONT.ROLE.LABEL_1,e.unref(t).FONT.COLOR.SURFACE.VARIANT])},[e.renderSlot(s.$slots,"default",{},void 0,!0)],2)],2))}});const pt=F(Lt,[["__scopeId","data-v-e15788b8"]]),Nt=e.defineComponent({__name:"TideBadge",props:{iconLeading:{default:void 0},isFloating:{type:Boolean,default:!1},label:{}},setup(o){const n=o;return(r,s)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-badge",n.isFloating?[e.unref(t).BG.SURFACE.FLOATING,e.unref(t).SHADOW.BOTTOM]:[e.unref(t).BG.SURFACE.VARIANT],e.unref(t).DISPLAY.INLINE_FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.QUARTER,e.unref(t).BORDER.RADIUS.QUARTER,e.unref(t).PADDING.Y.QUARTER,e.unref(t).PADDING.X.HALF,e.unref(t).FONT.ROLE.LABEL_2])},[n.iconLeading?(e.openBlock(),e.createBlock(_,{key:0,icon:n.iconLeading},null,8,["icon"])):e.createCommentVNode("",!0),e.createTextVNode(" "+e.toDisplayString(n.label),1)],2))}}),qe={YEARS_10:"10",YEARS_15:"15",YEARS_5:"5"},gt={class:e.normalizeClass([])},ht=e.defineComponent({__name:"TideBadgeTrustedPartner",props:{years:{default:qe.YEARS_5}},setup(o){const n=o;return(r,s)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-badge-trusted-partner",e.unref(t).FONT.COLOR.SURFACE.BRAND,e.unref(t).DISPLAY.INLINE_FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.QUARTER,e.unref(t).PADDING.Y.QUARTER,e.unref(t).PADDING.X.HALF,e.unref(t).FONT.ROLE.LABEL_2])},[e.createVNode(_,{icon:e.unref(h).AWARD_STAR},null,8,["icon"]),e.createElementVNode("div",gt,[e.createElementVNode("span",null,e.toDisplayString(n.years)+" year trusted partner",1)])],2))}}),_t=["data-track","href"],Dt=["data-track"],Ft={key:0},St=e.defineComponent({__name:"TideBreadCrumbs",props:{breadCrumbs:{default:void 0}},setup(o){const n=o;return(r,s)=>(e.openBlock(),e.createElementBlock("ul",{class:e.normalizeClass(["tide-bread-crumbs",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.QUARTER,e.unref(t).LIST_BULLETS.OFF])},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.breadCrumbs,(i,c)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:i.label},[e.createElementVNode("li",{class:e.normalizeClass([e.unref(t).FONT.ROLE.BODY_2])},[i.url?(e.openBlock(),e.createElementBlock("a",{key:0,class:e.normalizeClass([e.unref(t).FONT.ROLE.LINK_2,e.unref(t).FONT.COLOR.SURFACE.DEFAULT]),"data-track":i.dataTrack||void 0,href:i.url},e.toDisplayString(i.label),11,_t)):(e.openBlock(),e.createElementBlock("span",{key:1,class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_2,e.unref(t).FONT.COLOR.SURFACE.VARIANT]),"data-track":i.dataTrack||void 0},e.toDisplayString(i.label),11,Dt))],2),n.breadCrumbs&&c<n.breadCrumbs.length-1?(e.openBlock(),e.createElementBlock("li",Ft,[e.createVNode(_,{icon:e.unref(h).ARROW_RIGHT,size:e.unref(C).SMALL},null,8,["icon","size"])])):e.createCommentVNode("",!0)],64))),128))],2))}}),Ct=e.defineComponent({__name:"TideButton",props:{disabled:{type:Boolean,default:!1},element:{default:S.BUTTON},href:{default:void 0},iconLeading:{default:void 0},iconTrailing:{default:void 0},isNewTab:{type:Boolean,default:!1},label:{default:void 0},priority:{default:y.PRIMARY},size:{default:K.LARGE}},setup(o){const n=o;return(r,s)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(n.element===e.unref(S).LINK?e.unref(S).LINK:e.unref(S).BUTTON),{class:e.normalizeClass(["tide-button",n.priority&&`tide-button-${n.priority}`,n.element===e.unref(S).LINK?[e.unref(t).DISPLAY.INLINE_FLEX]:[e.unref(t).DISPLAY.FLEX],n.element===e.unref(S).LINK?e.unref(t).UNDERLINE.OFF:"",r.size===e.unref(K).SMALL&&[e.unref(t).FONT.ROLE.BUTTON_2,e.unref(t).PADDING.X.ONE,e.unref(t).PADDING.Y.HALF],r.size===e.unref(K).LARGE&&[e.unref(t).FONT.ROLE.BUTTON_1,e.unref(t).PADDING.X.TWO,e.unref(t).PADDING.Y.ONE],e.unref(t).AXIS1.CENTER,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).BORDER.RADIUS.HALF,e.unref(t).FONT.ROLE.LABEL_1_SEMIBOLD]),disabled:n.element===e.unref(S).BUTTON&&n.disabled,href:n.element===e.unref(S).LINK&&n.href?n.href:void 0,target:n.element===e.unref(S).LINK&&n.isNewTab?e.unref(b).BLANK:e.unref(b).SELF},{default:e.withCtx(()=>[n.iconLeading?(e.openBlock(),e.createBlock(_,{key:0,icon:n.iconLeading,size:r.size===e.unref(K).LARGE?e.unref(C).LARGE:e.unref(C).SMALL},null,8,["icon","size"])):e.createCommentVNode("",!0),e.createTextVNode(" "+e.toDisplayString(n.label)+" ",1),n.iconTrailing?(e.openBlock(),e.createBlock(_,{key:1,icon:n.iconTrailing,size:r.size===e.unref(K).LARGE?e.unref(C).LARGE:e.unref(C).SMALL},null,8,["icon","size"])):e.createCommentVNode("",!0)]),_:1},8,["class","disabled","href","target"]))}}),Pt=e.defineComponent({__name:"TideButtonPagination",props:{disabled:{type:Boolean,default:!1},element:{default:W.BUTTON},href:{default:void 0},label:{default:void 0}},setup(o){const n=o;return(r,s)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(n.element===e.unref(W).LINK?"a":n.element===e.unref(W).BUTTON?"button":"div"),{class:e.normalizeClass([n.element===e.unref(W).LINK?"tide-link-as-button-icon":"tide-button-icon",[e.unref(t).DISPLAY.INLINE_BLOCK,e.unref(t).BORDER.RADIUS.FULL,e.unref(t).PADDING.FULL.HALF],n.element===e.unref(W).LINK?[e.unref(t).UNDERLINE.OFF]:"",n.element===e.unref(W).DIV?[e.unref(t).CURSOR.POINTER]:"",[e.unref(t).FONT.ROLE.HEADLINE_3]]),disabled:n.element===e.unref(W).BUTTON&&n.disabled,href:n.element===e.unref(W).LINK&&n.href?n.href:void 0},{default:e.withCtx(()=>[e.createElementVNode("span",{class:e.normalizeClass(["label",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.CENTER,e.unref(t).AXIS2.CENTER])},e.toDisplayString(n.label),3)]),_:1},8,["class","disabled","href"]))}});const $e=F(Pt,[["__scopeId","data-v-f6d8e4e9"]]),yt=["data-track","onClick"],Bt=e.defineComponent({__name:"TideButtonSegmented",props:{activeTab:{default:0},tabs:{}},emits:["change"],setup(o,{emit:n}){const r=o,s=i=>{n("change",i)};return(i,c)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-button-segmented",e.unref(t).BG.SURFACE.VARIANT,e.unref(t).DISPLAY.FLEX,e.unref(t).GAP.QUARTER,e.unref(t).BORDER.RADIUS.FULL,e.unref(t).PADDING.FULL.QUARTER,e.unref(t).OVERFLOW.XY.HIDDEN,e.unref(t).WIDTH.FULL])},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.tabs,(a,l)=>(e.openBlock(),e.createElementBlock("button",{class:e.normalizeClass(["tide-button-segmented-tab",l===i.activeTab?[e.unref(t).BG.SURFACE.DEFAULT,e.unref(t).FONT.COLOR.SURFACE.DEFAULT,e.unref(t).SHADOW.BOTTOM]:["inactive",e.unref(t).FONT.COLOR.SURFACE.VARIANT],e.unref(t).FLEX.GROW.ON,e.unref(t).BORDER.FULL.TWO,e.unref(t).BORDER.RADIUS.FULL,e.unref(t).PADDING.Y.QUARTER,e.unref(t).WIDTH.FULL,e.unref(t).FONT.ROLE.BUTTON_1,e.unref(t).WHITESPACE_WRAP.OFF]),"data-track":a.dataTrack||void 0,key:a.label,onClick:u=>s(l)},[e.createElementVNode("span",{class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_2_SEMIBOLD])},e.toDisplayString(a.label),3),a.count&&a.count>0?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_2_SEMIBOLD])}," ("+e.toDisplayString(a.count)+") ",3)):e.createCommentVNode("",!0)],10,yt))),128))],2))}});const Ut=F(Bt,[["__scopeId","data-v-4e385d0b"]]),se={ACTIONABLE:"action",INFORMATIONAL:"informational",SELECTABLE:"select"},bt=e.defineComponent({__name:"TideCard",props:{description:{default:void 0},heading:{},icon:{default:void 0},selected:{type:Boolean,default:void 0},type:{default:se.INFORMATIONAL},href:{default:void 0}},setup(o){return(n,r)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(n.href?"a":n.type===e.unref(se).INFORMATIONAL?"div":"button"),{class:e.normalizeClass(["tide-card",e.unref(t).BORDER.COLOR.LOW,e.unref(t).BORDER.FULL.ONE,e.unref(t).BORDER.RADIUS.HALF,e.unref(t).DISPLAY.FLEX,e.unref(t).GAP.HALF,e.unref(t).PADDING.FULL.ONE,e.unref(t).WIDTH.FULL,e.unref(t).ALIGN.X.LEFT,e.unref(t).FLEX.DIRECTION.COLUMN,n.type!==e.unref(se).INFORMATIONAL&&"hoverable",n.type===e.unref(se).SELECTABLE&&n.selected&&"selected"]),href:n.href},{default:e.withCtx(()=>[n.icon?(e.openBlock(),e.createBlock(_,{key:0,class:e.normalizeClass([e.unref(t).FLEX.GROW.OFF,e.unref(t).FLEX.SHRINK.OFF]),icon:n.icon,size:e.unref(C).SMALL},null,8,["class","icon","size"])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).AXIS2.START,e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).GAP.HALF])},[e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_1_SEMIBOLD,e.unref(t).FONT.COLOR.SURFACE.DEFAULT])},e.toDisplayString(n.heading),3),n.description?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_2,e.unref(t).FONT.COLOR.SURFACE.VARIANT])},e.toDisplayString(n.description),3)):e.createCommentVNode("",!0)],2)]),_:1},8,["class","href"]))}});const kt=F(bt,[["__scopeId","data-v-98f24c4f"]]),Gt=e.defineComponent({__name:"TideCarousel",props:{isFloating:{type:Boolean,default:!1},isHideawayButtons:{type:Boolean,default:!0},isTouchscreen:{type:Boolean,default:void 0},subtitle:{default:void 0},title:{default:void 0}},emits:["change"],setup(o,{emit:n}){const r=o,s=e.ref(),i=e.ref(),c=e.ref(),a=e.ref(),l=e.ref(0),u=e.ref(),d=e.ref(),f=e.ref(),E=e.ref(),R=e.ref(),m=()=>{const A=Array.from(s.value.children).map(p=>p.offsetLeft);if(A.length===0)return;const g=A.reduce((p,D)=>Math.abs(D-i.value.scrollLeft)<Math.abs(p-i.value.scrollLeft)?D:p);l.value=A.indexOf(g)},I=()=>{c.value=i.value.scrollLeft+i.value.clientWidth,a.value=s.value.scrollWidth,u.value=i.value.clientWidth,d.value=a.value>u.value,f.value=c.value===a.value,E.value=i.value.scrollWidth-i.value.clientWidth,R.value=d.value&&!r.isTouchscreen,m()},L=()=>{I()},O=A=>{i.value.scrollTo({behavior:"smooth",left:s.value.children[A].offsetLeft})},T=()=>{c.value>a.value?i.value.scrollTo({behavior:"smooth",left:a}):f.value||O(l.value+1)},v=()=>{l.value===0||O(l.value-1)};return e.onMounted(()=>{I(),window.addEventListener("resize",I)}),e.onUnmounted(()=>{window.removeEventListener("resize",I)}),e.onUpdated(()=>{I()}),e.watch(l,()=>{n("change",l.value)}),(A,g)=>(e.openBlock(),e.createElementBlock("section",{class:e.normalizeClass(["tide-carousel",e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).GAP.TWO,e.unref(t).WIDTH.MAX_FULL]),ref:"carouselRef"},[!r.isFloating&&(R.value||r.title)?(e.openBlock(),e.createElementBlock("section",{key:0,class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,r.title?e.unref(t).AXIS1.BETWEEN:e.unref(t).AXIS1.END,e.unref(t).AXIS2.CENTER,e.unref(t).WIDTH.FULL])},[r.title||r.subtitle?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.ONE])},[r.title?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass([e.unref(t).FONT.ROLE.DISPLAY_1])},e.toDisplayString(r.title),3)):e.createCommentVNode("",!0),r.subtitle?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_2,e.unref(t).FONT.COLOR.SURFACE.VARIANT])},e.toDisplayString(r.subtitle),3)):e.createCommentVNode("",!0)],2)):e.createCommentVNode("",!0),R.value?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.ONE])},[e.createVNode(H,{disabled:l.value===0,icon:e.unref(h).CHEVRON_LEFT,priority:e.unref(y).TERTIARY,onClick:v},null,8,["disabled","icon","priority"]),e.createVNode(H,{disabled:f.value,icon:e.unref(h).CHEVRON_RIGHT,priority:e.unref(y).TERTIARY,onClick:T},null,8,["disabled","icon","priority"])],2)):e.createCommentVNode("",!0)],2)):e.createCommentVNode("",!0),e.renderSlot(A.$slots,"misc",{},void 0,!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).POSITION.RELATIVE])},[e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).SCROLLBAR.OFF,e.unref(t).SNAP.ON,e.unref(t).OVERFLOW.X.SCROLL,e.unref(t).WIDTH.FULL]),ref_key:"frameRef",ref:i,onScroll:L},[e.createElementVNode("ul",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).GAP.ONE,e.unref(t).LIST_BULLETS.OFF]),ref_key:"contentRef",ref:s},[e.renderSlot(A.$slots,"default",{},void 0,!0)],2)],34),A.isFloating&&R.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["tide-carousel-button-overlay",e.unref(t).POSITION.ABSOLUTE,e.unref(t).POSITIONING.TOP,e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.BETWEEN,e.unref(t).AXIS2.CENTER,e.unref(t).WIDTH.FULL,e.unref(t).HEIGHT.FULL,e.unref(t).POINTER_EVENTS.OFF,r.isHideawayButtons?"hideaway":""])},[e.createVNode(H,{class:e.normalizeClass([e.unref(t).MARGIN.LEFT.ONE,e.unref(t).POINTER_EVENTS.ON]),disabled:l.value===0,icon:e.unref(h).CHEVRON_LEFT,priority:e.unref(y).QUATERNARY,onClick:v},null,8,["class","disabled","icon","priority"]),e.createVNode(H,{class:e.normalizeClass([e.unref(t).MARGIN.RIGHT.ONE,e.unref(t).POINTER_EVENTS.ON]),disabled:f.value,icon:e.unref(h).CHEVRON_RIGHT,priority:e.unref(y).QUATERNARY,onClick:T},null,8,["class","disabled","icon","priority"])],2)):e.createCommentVNode("",!0)],2)],2))}});const wt=F(Gt,[["__scopeId","data-v-b803c6b8"]]),Ht=["href","target"],Mt=e.defineComponent({__name:"TideChipAction",props:{href:{},isNewTab:{type:Boolean,default:!1},label:{}},setup(o){const n=o;return(r,s)=>(e.openBlock(),e.createElementBlock("a",{class:e.normalizeClass(["tide-chip-action",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).BORDER.FULL.ONE,e.unref(t).BORDER.RADIUS.FULL,e.unref(t).PADDING.X.ONE,e.unref(t).PADDING.Y.HALF,e.unref(t).BG.SURFACE.DEFAULT,e.unref(t).FONT.ROLE.LINK_2,e.unref(t).FONT.COLOR.SURFACE.DEFAULT,e.unref(t).UNDERLINE.OFF]),href:n.href,target:n.isNewTab?e.unref(b).BLANK:e.unref(b).SELF},[e.createVNode(_,{icon:e.unref(h).SEARCH},null,8,["icon"]),e.createElementVNode("span",null,e.toDisplayString(n.label),1)],10,Ht))}});const Vt=F(Mt,[["__scopeId","data-v-7e30d2ca"]]),xt=e.defineComponent({__name:"TideChipFilter",props:{isActive:{type:Boolean},label:{}},setup(o){const n=o;return(r,s)=>(e.openBlock(),e.createElementBlock("button",{class:e.normalizeClass(["tide-chip-filter",n.isActive?[e.unref(t).BG.SECONDARY,e.unref(t).FONT.COLOR.SECONDARY]:[e.unref(t).BG.SURFACE.VARIANT,e.unref(t).FONT.COLOR.SURFACE.DEFAULT],e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).BORDER.FULL.ONE,e.unref(t).BORDER.RADIUS.FULL,e.unref(t).PADDING.X.ONE,e.unref(t).PADDING.Y.HALF,e.unref(t).FONT.ROLE.LABEL_2,n.isActive?"active":""])},[e.renderSlot(r.$slots,"default",{},void 0,!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.CENTER,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF])},[e.createElementVNode("span",{class:e.normalizeClass([n.isActive?"":"icon-spacing",e.unref(t).FONT.ROLE.LABEL_1,e.unref(t).WHITESPACE_WRAP.OFF])},e.toDisplayString(n.label),3)],2)],2))}});const Wt=F(xt,[["__scopeId","data-v-6ddce1c2"]]),Xt=e.defineComponent({__name:"TideChipInput",props:{label:{}},setup(o){const n=o;return(r,s)=>(e.openBlock(),e.createElementBlock("button",{class:e.normalizeClass(["tide-chip-input",e.unref(t).BG.SURFACE.VARIANT,e.unref(t).FONT.COLOR.SURFACE,e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).BORDER.FULL.ONE,e.unref(t).BORDER.RADIUS.FULL,e.unref(t).PADDING.X.ONE,e.unref(t).PADDING.Y.HALF,e.unref(t).FONT.ROLE.LABEL_2])},[e.createElementVNode("span",null,e.toDisplayString(n.label),1),e.createVNode(_,{icon:e.unref(h).CLOSE},null,8,["icon"])],2))}});const Yt=F(Xt,[["__scopeId","data-v-42611a29"]]),zt={class:"tide-columns"},qt={class:"tide-columns-column"},$t={class:"tide-columns-column"},Kt={class:"tide-columns-column"},Zt={class:"tide-columns-column"},Qt=e.defineComponent({__name:"TideColumns",props:{heading:{default:""}},setup(o){const n=o;return(r,s)=>(e.openBlock(),e.createElementBlock("section",zt,[e.createElementVNode("h2",{class:e.normalizeClass([e.unref(t).MARGIN.BOTTOM.HALF])},e.toDisplayString(n.heading),3),e.createElementVNode("ul",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.WRAP,e.unref(t).GAP.TWO,e.unref(t).LIST_BULLETS.OFF])},[e.createElementVNode("li",qt,[e.renderSlot(r.$slots,"section1",{},void 0,!0)]),e.createElementVNode("li",$t,[e.renderSlot(r.$slots,"section2",{},void 0,!0)]),e.createElementVNode("li",Kt,[e.renderSlot(r.$slots,"section3",{},void 0,!0)]),e.createElementVNode("li",Zt,[e.renderSlot(r.$slots,"section4",{},void 0,!0)])],2)]))}});const jt=F(Qt,[["__scopeId","data-v-c92a6639"]]),Jt=["media","srcset"],en=["alt","fetchpriority","loading","src"],ve="https://cdn-static.tilabs.io/marketplace/common/image-coming-soon.svg",Ke=e.defineComponent({__name:"TideImage",props:{alt:{default:""},height:{default:void 0},isLazy:{type:Boolean,default:!0},sources:{default:()=>[]},src:{default:void 0},width:{default:void 0}},setup(o){const n=o,r=e.ref(),s=e.ref(),i=()=>{var l,u;const c=(l=s.value)==null?void 0:l.currentSrc,a=(u=r.value)==null?void 0:u.querySelector(`source[srcset="${c}"]`);c&&a?a.srcset=ve:s.value&&(s.value.src=ve)};return(c,a)=>(e.openBlock(),e.createElementBlock("picture",{class:e.normalizeClass(["tide-image",e.unref(t).DISPLAY.BLOCK]),ref_key:"picture",ref:r,style:e.normalizeStyle(c.width||c.height?{width:c.width||void 0,height:c.height||void 0}:void 0)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.sources,l=>(e.openBlock(),e.createElementBlock("source",{key:l.srcset,media:`(min-width:${l.media}px)`,srcset:l.srcset},null,8,Jt))),128)),e.createElementVNode("img",{alt:c.alt,class:e.normalizeClass([e.unref(t).WIDTH.FULL,e.unref(t).HEIGHT.FULL,e.unref(t).OBJECT.CENTER,e.unref(t).OBJECT.COVER]),fetchpriority:c.isLazy?void 0:"high",loading:n.isLazy?"lazy":"eager",ref_key:"img",ref:s,src:c.src??ve,onError:i},null,42,en)],6))}}),tn=e.defineComponent({__name:"TideImageBackground",props:{alt:{default:""},isLazy:{type:Boolean,default:!0},sources:{default:()=>[]},src:{default:void 0}},setup(o){const n=o;return(r,s)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass([e.unref(t).POSITION.RELATIVE,e.unref(t).OVERFLOW.XY.HIDDEN,e.unref(t).ISOLATION.ISOLATE])},[e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).POSITION.ABSOLUTE,e.unref(t).HEIGHT.FULL,e.unref(t).WIDTH.FULL,e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.CENTER,e.unref(t).AXIS2.CENTER])},[e.createVNode(Ke,{class:e.normalizeClass(["tide-image-background",e.unref(t).WIDTH.FULL,e.unref(t).HEIGHT.FULL]),"is-lazy":n.isLazy,sources:n.sources,src:n.src,alt:"props.alt"},null,8,["class","is-lazy","sources","src"])],2),e.renderSlot(r.$slots,"default",{},void 0,!0)],2))}});const nn=F(tn,[["__scopeId","data-v-5875300e"]]),on={key:0,class:e.normalizeClass(["tide-indicator-label"])},rn=e.defineComponent({__name:"TideIndicator",props:{label:{default:void 0}},setup(o){const n=o;return(r,s)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-indicator",n.label?"":"dot",e.unref(t).DISPLAY.INLINE_BLOCK,e.unref(t).ALIGN.X.CENTER,e.unref(t).BG.GLOBAL.PRIMARY.ERROR,e.unref(t).BORDER.RADIUS.FULL,n.label&&n.label.toString().length>1?[e.unref(t).PADDING.X.HALF]:[],n.label?[e.unref(t).POSITION.RELATIVE,e.unref(t).FONT.ROLE.LABEL_3,e.unref(t).FONT.COLOR.SURFACE.INVERSE]:[e.unref(t).BORDER.FULL.ONE]])},[n.label?(e.openBlock(),e.createElementBlock("div",on,e.toDisplayString(n.label),1)):e.createCommentVNode("",!0)],2))}});const sn=F(rn,[["__scopeId","data-v-d402ac82"]]),an=["checked","disabled","name","id"],ln=["for"],cn=e.defineComponent({__name:"TideInputCheckbox",props:{checked:{type:Boolean,default:!1},dataTrack:{default:""},disabled:{type:Boolean,default:!1},indeterminate:{type:Boolean,default:!1},inputId:{default:void 0},label:{default:void 0},name:{default:void 0},number:{default:void 0}},setup(o){const n=o,r=e.computed(()=>n.checked||n.indeterminate);return(s,i)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-input-checkbox",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).FONT.ROLE.BODY_1,s.disabled?["disabled",e.unref(t).POINTER_EVENTS.OFF]:e.unref(t).CURSOR.POINTER])},[e.createElementVNode("input",{checked:r.value,class:e.normalizeClass([e.unref(t).DISPLAY.NONE]),disabled:n.disabled,name:n.name,ref:"input",onClick:i[0]||(i[0]=e.withModifiers(()=>{},["prevent"])),id:n.inputId,type:"checkbox"},null,10,an),e.createElementVNode("div",{class:e.normalizeClass(["tide-input-checkbox-custom",e.unref(t).POSITION.RELATIVE,e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.CENTER,e.unref(t).AXIS2.CENTER,e.unref(t).FLEX.SHRINK.OFF,e.unref(t).BORDER.FULL.ONE,r.value?[e.unref(t).BORDER.COLOR.HIGH,e.unref(t).BG.SECONDARY]:[e.unref(t).BORDER.COLOR.DEFAULT,e.unref(t).BG.SURFACE.DEFAULT],e.unref(t).BORDER.RADIUS.QUARTER,r.value&&"checked",s.disabled?e.unref(t).CURSOR.NOT_ALLOWED:e.unref(t).CURSOR.POINTER])},[r.value?(e.openBlock(),e.createBlock(_,{key:0,class:e.normalizeClass([e.unref(t).FONT.COLOR.SECONDARY]),icon:n.indeterminate?e.unref(h).REMOVE:e.unref(h).CHECK,size:e.unref(C).SMALL},null,8,["class","icon","size"])):e.createCommentVNode("",!0)],2),s.label?(e.openBlock(),e.createElementBlock("label",{key:0,class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).GAP.HALF,e.unref(t).FONT.ROLE.BODY_1,s.disabled?e.unref(t).CURSOR.NOT_ALLOWED:e.unref(t).CURSOR.POINTER]),for:n.inputId,onClick:i[1]||(i[1]=e.withModifiers(()=>{},["prevent"]))},[e.createElementVNode("span",null,e.toDisplayString(s.label),1),n.number?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass([e.unref(t).FONT.COLOR.SURFACE.VARIANT])}," ("+e.toDisplayString(e.unref(Ne)(n.number))+") ",3)):e.createCommentVNode("",!0)],10,ln)):e.createCommentVNode("",!0)],2))}});const un=F(cn,[["__scopeId","data-v-4e880909"]]),dn=["checked","id"],fn=["for"],En=e.defineComponent({__name:"TideInputRadio",props:{checked:{type:Boolean,default:!1},dataTrack:{default:""},disabled:{type:Boolean,default:!1},inputId:{default:void 0},label:{default:void 0},name:{}},setup(o){const n=o,r=e.ref(n.checked);return e.watch(()=>n.checked,(s,i)=>{(s!==i||s!==r.value)&&(r.value=s)}),(s,i)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-input-radio",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).POINTER_EVENTS.OFF,n.disabled&&"disabled"])},[e.createElementVNode("input",{checked:r.value,class:e.normalizeClass([e.unref(t).DISPLAY.NONE]),id:n.inputId,name:"",type:"radio",value:""},null,10,dn),e.createElementVNode("div",{class:e.normalizeClass(["tide-input-radio-custom",e.unref(t).POSITION.RELATIVE,e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.CENTER,e.unref(t).AXIS2.CENTER,e.unref(t).BORDER.FULL.ONE,r.value?e.unref(t).BORDER.COLOR.HIGH:e.unref(t).BORDER.COLOR.DEFAULT,e.unref(t).BORDER.RADIUS.FULL,e.unref(t).BG.SURFACE.DEFAULT,e.unref(t).CURSOR.POINTER,e.unref(t).POINTER_EVENTS.ON,r.value&&"checked"])},[e.createElementVNode("div",{class:e.normalizeClass(["tide-input-radio-check",e.unref(t).BORDER.RADIUS.FULL,n.checked&&e.unref(t).BG.SECONDARY])},null,2)],2),e.createElementVNode("label",{class:e.normalizeClass([e.unref(t).FONT.ROLE.BODY_1,e.unref(t).CURSOR.POINTER,e.unref(t).POINTER_EVENTS.ON]),for:n.inputId},e.toDisplayString(n.label),11,fn)],2))}});const mn=F(En,[["__scopeId","data-v-4fd02dd8"]]),ge="Please enter a valid value.",On={message:"",valid:!0},oe=o=>n=>{let r=On;return n.trim().match(o)||(r={message:ge,valid:!1}),r},he=(o,n)=>typeof o=="string"&&o.length>0?o:typeof n=="string"&&n.length>0?n:ge,_e=(o,n)=>o!==!1||n!==!1,Rn=({maxlength:o,minlength:n,required:r,value:s})=>{const i=s.length===0&&!r,c=o&&s.length>o;return!(!i&&n&&s.length<n)&&!c},Ze=({error:o,errorFromProps:n,maxlength:r,minlength:s,required:i=!1,validators:c,value:a})=>{if(o.value=n||!1,!o.value&&c){const l=Tn((a==null?void 0:a.value)||"",c);l.valid||(o.value=l.message)}if(!o.value&&(r||s)){const l=vn({maxlength:r,minlength:s,required:i,value:(a==null?void 0:a.value)||""});l.valid||(o.value=l.message)}},vn=({maxlength:o,minlength:n,required:r=!1,value:s})=>{const i={message:"",valid:!0};return i.valid=Rn({maxlength:o,minlength:n,required:r,value:s}),i.valid||(i.message=ge,o&&n?i.message=`Please enter a value between ${n} and ${o} characters in length.`:o?i.message=`Please enter a value no more than ${o} characters in length.`:n&&(i.message=`Please enter a value no less than ${n} characters in length.`)),i};function Tn(o,n){for(const r of n){const s=r(o);if(!s.valid)return s}return{message:"",valid:!0}}const In=["for"],An=["disabled","name","required","id"],Ln=["label"],pn=["value"],Nn=["selected","value"],gn=["selected","value"],hn=e.defineComponent({__name:"TideInputSelect",props:{inputId:{default:void 0},supportingText:{default:void 0},optgroups:{},options:{},disabled:{type:Boolean,default:!1},error:{type:[String,Boolean],default:!1},label:{default:void 0},name:{},required:{type:Boolean,default:!1},value:{default:void 0}},setup(o,{expose:n}){const r=o,s=e.ref(r.error),i=e.ref(!1),c=e.ref(null),a=e.ref(r.required),l=e.ref(r.value),u=e.computed(()=>he(r.error,s.value)),d=e.computed(()=>r.required?`${r.label} *`:r.label),f=e.computed(()=>r.required&&!l.value||_e(s.value,r.error)),E=e.computed(()=>i.value||!R.value),R=e.computed(()=>l.value===void 0),m=()=>{var T;const O=new MouseEvent("mousedown");(T=c==null?void 0:c.value)==null||T.dispatchEvent(O)},I=()=>{i.value=!0},L=()=>{i.value=!1};return e.watch(()=>r.value,(O,T)=>{(O!==T||O!==l.value)&&(l.value=O)}),n({error:s,value:l}),(O,T)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-input-select",e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).GAP.QUARTER,O.disabled&&"disabled",f.value&&"error"])},[e.createElementVNode("div",{class:e.normalizeClass(["tide-input-border",e.unref(t).POSITION.RELATIVE,e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).BORDER.RADIUS.HALF,e.unref(t).BG.SURFACE.DEFAULT,r.disabled?e.unref(t).CURSOR.NOT_ALLOWED:"",e.unref(t).OVERFLOW.XY.HIDDEN]),onClick:m},[e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).WIDTH.FULL])},[O.label?(e.openBlock(),e.createElementBlock("label",{key:0,class:e.normalizeClass([E.value?["minilabel",e.unref(t).FONT.ROLE.LABEL_3]:e.unref(t).FONT.ROLE.LABEL_1,e.unref(t).POSITION.ABSOLUTE,e.unref(t).POSITIONING.LEFT,e.unref(t).MARGIN.TOP.HALF,e.unref(t).MARGIN.LEFT.ONE,!f.value&&e.unref(t).FONT.COLOR.SURFACE.VARIANT,e.unref(t).POINTER_EVENTS.OFF]),for:r.inputId},e.toDisplayString(d.value),11,In)):e.createCommentVNode("",!0),e.withDirectives(e.createElementVNode("select",{class:e.normalizeClass([e.unref(t).PADDING.BOTTOM.HALF,e.unref(t).PADDING.X.ONE,e.unref(t).WIDTH.FULL,O.disabled&&e.unref(t).CURSOR.NOT_ALLOWED,e.unref(t).FONT.ROLE.BODY_1]),disabled:O.disabled,name:O.name,ref_key:"input",ref:c,required:a.value,onFocus:I,onFocusout:L,id:r.inputId,"onUpdate:modelValue":T[0]||(T[0]=v=>l.value=v)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.optgroups,v=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[v.options?(e.openBlock(),e.createElementBlock("optgroup",{class:e.normalizeClass([e.unref(t).WIDTH.FULL,e.unref(t).BG.SURFACE.DEFAULT]),key:v.label,label:v.label},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(v.options,A=>(e.openBlock(),e.createElementBlock("option",{class:e.normalizeClass([e.unref(t).WIDTH.FULL,e.unref(t).BG.SURFACE.DEFAULT]),key:A.value,value:A.value},e.toDisplayString(A.label),11,pn))),128))],10,Ln)):(e.openBlock(),e.createElementBlock("option",{class:e.normalizeClass([e.unref(t).WIDTH.FULL,e.unref(t).BG.SURFACE.DEFAULT]),key:v.value,selected:l.value===v.value?!0:void 0,value:v.value},e.toDisplayString(v.label),11,Nn))],64))),256)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(O.options,v=>(e.openBlock(),e.createElementBlock("option",{class:e.normalizeClass([e.unref(t).WIDTH.FULL,e.unref(t).BG.SURFACE.DEFAULT]),key:v.value,selected:l.value===v.value?!0:void 0,value:v.value},e.toDisplayString(v.label),11,gn))),128))],42,An),[[e.vModelSelect,l.value]])],2),e.createVNode(_,{class:e.normalizeClass([e.unref(t).POSITION.ABSOLUTE,e.unref(t).POSITIONING.RIGHT,e.unref(t).MARGIN.RIGHT.ONE,e.unref(t).POINTER_EVENTS.OFF]),icon:e.unref(h).EXPAND_MORE,size:e.unref(C).SMALL},null,8,["class","icon","size"])],2),r.supportingText||f.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.QUARTER])},[f.value?(e.openBlock(),e.createBlock(_,{key:0,class:e.normalizeClass([]),icon:e.unref(h).ERROR,size:e.unref(C).SMALL},null,8,["icon","size"])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_3])},e.toDisplayString(f.value?u.value:r.supportingText),3)],2)):e.createCommentVNode("",!0)],2))}});const _n=F(hn,[["__scopeId","data-v-2da267e1"]]),Z={DATE:"date",DATETIME_LOCAL:"datetime-local",EMAIL:"email",MONTH:"month",NUMBER:"number",PASSWORD:"password",SEARCH:"search",TEL:"tel",TEXT:"text",TIME:"time",URL:"url",WEEK:"week"},Dn=["for"],Fn=["autocomplete","data-track","disabled","maxlength","minlength","name","required","type","id"],Sn=e.defineComponent({__name:"TideInputText",props:{autocomplete:{type:Boolean,default:!1},dataTrack:{default:""},disabled:{type:Boolean,default:!1},error:{type:[String,Boolean],default:!1},hasClear:{type:Boolean,default:!1},iconLeading:{default:void 0},inputId:{default:void 0},label:{default:void 0},maxlength:{default:void 0},minlength:{default:void 0},name:{},prefix:{default:void 0},required:{type:Boolean,default:!1},suffix:{default:void 0},supportingText:{default:void 0},transformValue:{type:Function,default:void 0},type:{default:Z.TEXT},validators:{default:void 0},value:{default:void 0}},setup(o,{expose:n}){const r=o,s=e.ref(r.error),i=e.ref(!1),c=e.ref(null),a=e.ref(!1),l=e.ref(r.value),u=e.computed(()=>he(r.error,s.value)),d=e.computed(()=>r.required&&r.label?`${r.label} *`:r.label),f=e.computed(()=>r.hasClear&&l.value),E=e.computed(()=>r.required&&l.value!==void 0&&!l.value||_e(s.value,r.error)),R=e.computed(()=>i.value||!m.value),m=e.computed(()=>l.value===""||l.value===void 0),I=e.computed(()=>r.type===Z.PASSWORD&&a.value===!0?Z.TEXT:r.type),L=()=>{var p;l.value="",(p=c.value)==null||p.focus()},O=()=>{i.value=!0},T=()=>{i.value=!1,l.value||(l.value=""),A()},v=()=>{var p,D;if(r.transformValue){const N=((D=(p=l.value)==null?void 0:p.match(/\d/g))==null?void 0:D.join(""))||void 0;l.value=N?r.transformValue(N):""}},A=()=>{Ze({error:s,errorFromProps:r.error,maxlength:r.maxlength,minlength:r.minlength,required:r.required,validators:r.validators,value:l})},g=p=>{l.value=p};return e.watch(()=>r.value,(p,D)=>{(p!==D||p!==l.value)&&(l.value=p)}),n({error:s,required:r.required,updateValue:g,value:l}),(p,D)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-input-text",e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).GAP.QUARTER,p.disabled&&"disabled",E.value&&"error"])},[e.createElementVNode("div",{class:e.normalizeClass(["tide-input-border",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).POSITION.RELATIVE,e.unref(t).BORDER.RADIUS.HALF,e.unref(t).BG.SURFACE.DEFAULT,f.value?[e.unref(t).PADDING.RIGHT.HALF,e.unref(t).PADDING.LEFT.ONE]:[e.unref(t).PADDING.X.ONE],e.unref(t).PADDING.Y.HALF,r.disabled?e.unref(t).CURSOR.NOT_ALLOWED:e.unref(t).CURSOR.TEXT])},[r.iconLeading?(e.openBlock(),e.createBlock(_,{key:0,class:e.normalizeClass([e.unref(t).FONT.COLOR.SURFACE.VARIANT]),icon:r.iconLeading,size:e.unref(C).SMALL},null,8,["class","icon","size"])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.QUARTER,e.unref(t).WIDTH.FULL])},[r.prefix?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["tide-input-text-prefix",e.unref(t).FONT.ROLE.BODY_1,,!E.value&&e.unref(t).FONT.COLOR.SURFACE.VARIANT,R.value?"":"offset"])},e.toDisplayString(r.prefix),3)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).WIDTH.FULL]),onClick:D[1]||(D[1]=e.withModifiers(N=>{var U;return(U=c.value)==null?void 0:U.focus()},["prevent"]))},[p.label?(e.openBlock(),e.createElementBlock("label",{key:0,class:e.normalizeClass([R.value?["minilabel",e.unref(t).FONT.ROLE.LABEL_3]:e.unref(t).FONT.ROLE.LABEL_1,!E.value&&e.unref(t).FONT.COLOR.SURFACE.VARIANT,e.unref(t).CURSOR.TEXT,e.unref(t).POINTER_EVENTS.OFF]),for:r.inputId},e.toDisplayString(d.value),11,Dn)):e.createCommentVNode("",!0),e.withDirectives(e.createElementVNode("input",{autocomplete:p.autocomplete?"on":"off",class:e.normalizeClass([e.unref(t).WIDTH.FULL,p.disabled&&e.unref(t).CURSOR.NOT_ALLOWED,e.unref(t).FONT.ROLE.BODY_1]),"data-track":r.dataTrack,disabled:r.disabled,maxlength:r.maxlength,minlength:r.minlength,name:r.name,ref_key:"input",ref:c,required:r.required,type:I.value,onChange:A,onFocus:O,onFocusout:T,onInput:v,id:r.inputId,"onUpdate:modelValue":D[0]||(D[0]=N=>l.value=N)},null,42,Fn),[[e.vModelDynamic,l.value]])],2),r.suffix?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(["tide-input-text-suffix",e.unref(t).FONT.ROLE.BODY_1,!E.value&&e.unref(t).FONT.COLOR.SURFACE.VARIANT,R.value?"":"offset"])},e.toDisplayString(r.suffix),3)):e.createCommentVNode("",!0)],2),f.value&&r.type!==e.unref(Z).PASSWORD?(e.openBlock(),e.createBlock(_,{key:1,class:e.normalizeClass([e.unref(t).PADDING.Y.HALF,e.unref(t).PADDING.FULL.HALF,e.unref(t).CURSOR.POINTER]),icon:e.unref(h).CLOSE,size:e.unref(C).SMALL,onClick:L},null,8,["class","icon","size"])):e.createCommentVNode("",!0),r.type===e.unref(Z).PASSWORD?(e.openBlock(),e.createBlock(_,{key:2,class:e.normalizeClass([e.unref(t).PADDING.Y.HALF,e.unref(t).PADDING.FULL.HALF,e.unref(t).CURSOR.POINTER]),icon:e.unref(h).VISIBILITY,size:e.unref(C).SMALL,onClick:D[2]||(D[2]=N=>a.value=!a.value)},null,8,["class","icon","size"])):e.createCommentVNode("",!0)],2),r.supportingText||E.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.QUARTER])},[E.value?(e.openBlock(),e.createBlock(_,{key:0,class:e.normalizeClass([]),icon:e.unref(h).ERROR,size:e.unref(C).SMALL},null,8,["icon","size"])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_3])},e.toDisplayString(E.value?u.value:r.supportingText),3)],2)):e.createCommentVNode("",!0)],2))}});const Cn=F(Sn,[["__scopeId","data-v-d369bda5"]]),Pn=["for"],yn=["data-track","maxlength","minlength","name","required","rows","id"],Bn=e.defineComponent({__name:"TideInputTextarea",props:{dataTrack:{default:""},error:{type:[String,Boolean],default:!1},inputId:{default:void 0},label:{default:void 0},maxlength:{default:void 0},minlength:{default:void 0},name:{default:void 0},required:{type:Boolean,default:!1},rows:{default:8},supportingText:{default:void 0},value:{default:void 0}},setup(o,{expose:n}){const r=o,s=e.ref(r.error),i=e.ref(!1),c=e.ref(null),a=e.ref(r.value),l=e.computed(()=>he(r.error,s.value)),u=e.computed(()=>r.required?`${r.label} *`:r.label),d=e.computed(()=>r.required&&a.value!==void 0&&!a.value||_e(s.value,r.error)),f=e.computed(()=>i.value||!E.value),E=e.computed(()=>a.value===""||a.value===void 0),R=()=>{i.value=!0},m=()=>{i.value=!1,a.value||(a.value="")},I=()=>Ze({error:s,errorFromProps:r.error,maxlength:r.maxlength,minlength:r.minlength,required:r.required,value:a});return e.watch(()=>r.value,(L,O)=>{(L!==O||L!==a.value)&&(a.value=L)}),n({error:s,required:r.required,value:a}),(L,O)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["tide-input-textarea",e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).GAP.QUARTER,d.value&&"error"])},[e.createElementVNode("div",{class:e.normalizeClass(["tide-input-textarea-field",e.unref(t).GAP.HALF,e.unref(t).POSITION.RELATIVE,e.unref(t).BORDER.RADIUS.HALF,e.unref(t).PADDING.LEFT.ONE,e.unref(t).PADDING.TOP.HALF,e.unref(t).OVERFLOW.XY.HIDDEN,e.unref(t).BG.SURFACE.DEFAULT])},[L.label?(e.openBlock(),e.createElementBlock("label",{key:0,class:e.normalizeClass([f.value?["minilabel",e.unref(t).FONT.ROLE.LABEL_3]:e.unref(t).FONT.ROLE.LABEL_1,!d.value&&e.unref(t).FONT.COLOR.SURFACE.VARIANT,e.unref(t).CURSOR.TEXT,e.unref(t).POINTER_EVENTS.OFF]),for:r.inputId,ref:"label"},e.toDisplayString(u.value),11,Pn)):e.createCommentVNode("",!0),e.withDirectives(e.createElementVNode("textarea",{class:e.normalizeClass([e.unref(t).WIDTH.FULL,e.unref(t).FONT.ROLE.BODY_1]),"data-track":r.dataTrack,maxlength:r.maxlength,minlength:r.minlength,name:r.name,ref_key:"input",ref:c,required:r.required,rows:r.rows,onChange:I,onFocus:R,onFocusout:m,id:r.inputId,"onUpdate:modelValue":O[0]||(O[0]=T=>a.value=T)},null,42,yn),[[e.vModelText,a.value]])],2),r.supportingText||d.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.QUARTER])},[d.value?(e.openBlock(),e.createBlock(_,{key:0,icon:e.unref(h).ERROR,size:e.unref(C).SMALL},null,8,["icon","size"])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).FONT.ROLE.LABEL_3])},e.toDisplayString(d.value?l.value:r.supportingText),3)],2)):e.createCommentVNode("",!0)],2))}});const Un=F(Bn,[["__scopeId","data-v-2105ab99"]]),bn=e.defineComponent({__name:"TideLink",props:{element:{default:S.LINK},href:{default:void 0},iconLeading:{default:void 0},iconTrailing:{default:void 0},isNewTab:{type:Boolean,default:!1},label:{default:void 0}},setup(o){const n=o;return(r,s)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(n.element===e.unref(S).LINK?e.unref(S).LINK:e.unref(S).BUTTON),{class:e.normalizeClass(["tide-link",e.unref(t).DISPLAY.INLINE,e.unref(t).UNDERLINE.ON,e.unref(t).ALIGN.X.LEFT]),href:n.href,target:n.isNewTab?e.unref(b).BLANK:e.unref(b).SELF},{default:e.withCtx(()=>[n.iconLeading?(e.openBlock(),e.createBlock(_,{key:0,class:e.normalizeClass([e.unref(t).DISPLAY.INLINE_BLOCK,e.unref(t).ALIGN.Y.MIDDLE,e.unref(t).MARGIN.RIGHT.QUARTER]),icon:n.iconLeading},null,8,["class","icon"])):e.createCommentVNode("",!0),e.createElementVNode("span",{class:e.normalizeClass([e.unref(t).ALIGN.Y.MIDDLE])},e.toDisplayString(n.label),3),n.iconTrailing?(e.openBlock(),e.createBlock(_,{key:1,class:e.normalizeClass([e.unref(t).DISPLAY.INLINE_BLOCK,e.unref(t).ALIGN.Y.MIDDLE,e.unref(t).MARGIN.LEFT.QUARTER]),icon:n.iconTrailing},null,8,["class","icon"])):e.createCommentVNode("",!0)]),_:1},8,["class","href","target"]))}}),Qe={SM:"sm",MD:"md",LG:"lg",XL:"xl"},kn={SM:768,MD:992,LG:1232,XL:1920},Gn=async o=>{const n=document.body;if(o){if(!n.dataset.scrollLockY){const r=window.scrollY;n.dataset.scrollLockY=r.toString(),n.style.setProperty("--saved-scroll-y",`${r}px`),n.style.setProperty("inset","0"),n.style.setProperty("margin-top","calc(0px - var(--saved-scroll-y, 0px))"),n.style.setProperty("overflow-y","scroll"),n.style.setProperty("position","fixed")}}else if(await e.nextTick(),!document.querySelector("dialog[open]")){const r=parseInt(n.dataset.scrollLockY||"0");n.style.removeProperty("inset"),n.style.removeProperty("marginTop"),n.style.removeProperty("overflowY"),n.style.removeProperty("position"),n.style.removeProperty("--saved-scroll-y"),window.scrollTo({behavior:"auto",top:r}),delete n.dataset.scrollLockY}},Le="tideTopLayer",wn=()=>{let o=document.getElementById(Le);o||(o=document.createElement("div"),o.id=Le,document.body.appendChild(o)),o.style.isolation="isolate"},Hn=["textContent"],Mn=e.defineComponent({__name:"TideModal",props:{isBackButton:{type:Boolean,default:!1},isDismissible:{type:Boolean,default:!0},isOpen:{type:Boolean},title:{default:void 0},width:{default:void 0}},emits:["close","back"],setup(o,{emit:n}){const r=o,s=e.ref(),i=e.ref(),c=()=>{var u;(u=i.value)==null||u.showModal()},a=()=>{var u;(u=i.value)==null||u.close()},l=()=>{e.nextTick(()=>{s.value&&(s.value.scrollTop=0)})};return e.watch(()=>r.isOpen,u=>{i.value&&(u?(c(),l()):a(),Gn(u))}),e.onMounted(()=>{r.isOpen&&c()}),(u,d)=>(e.openBlock(),e.createElementBlock("dialog",{class:e.normalizeClass(["tide-modal",e.unref(t).BG.INITIAL,e.unref(t).HEIGHT.FULL,e.unref(t).WIDTH.FULL,e.unref(t).OVERFLOW.XY.HIDDEN]),ref_key:"modalDialog",ref:i,style:e.normalizeStyle({"--modal-width":r.width}),onClick:d[1]||(d[1]=e.withModifiers(f=>n("close"),["self"])),onClose:d[2]||(d[2]=f=>n("close"))},[e.createElementVNode("div",{class:e.normalizeClass(["tide-modal-body",e.unref(t).BG.SURFACE.DEFAULT,e.unref(t).BORDER.RADIUS.ONE,e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).OVERFLOW.XY.HIDDEN,e.unref(t).POSITION.ABSOLUTE,e.unref(t).POSITIONING.BOTTOM,e.unref(t).SHADOW.TOP,e.unref(t).WIDTH.FULL,e.unref(t).WIDTH.MAX_FULL,e.unref(t).withBreakpoint([e.unref(t).SHADOW.BOTTOM],e.unref(Qe).SM)])},[e.createElementVNode("header",{class:e.normalizeClass(["tide-modal-header",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.HALF,e.unref(t).PADDING.Y.ONE,e.unref(t).BORDER.BOTTOM.ONE,e.unref(t).BORDER.COLOR.LOW])},[u.isBackButton?(e.openBlock(),e.createBlock(H,{key:0,icon:e.unref(h).CHEVRON_LEFT,priority:e.unref(y).QUATERNARY,onClick:d[0]||(d[0]=f=>n("back")),title:"Back"},null,8,["icon","priority"])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(t).FONT.ROLE.HEADLINE_2]),textContent:e.toDisplayString(u.title)},null,10,Hn),u.isDismissible?(e.openBlock(),e.createBlock(H,{key:1,class:e.normalizeClass([e.unref(t).FLEX.GROW.OFF,e.unref(t).FLEX.SHRINK.OFF,e.unref(t).MARGIN.LEFT.AUTO]),icon:e.unref(h).CLOSE,priority:e.unref(y).QUATERNARY,onClick:a},null,8,["class","icon","priority"])):e.createCommentVNode("",!0)],2),e.createElementVNode("div",{class:e.normalizeClass(["tide-modal-content",e.unref(t).DISPLAY.GRID,e.unref(t).OVERFLOW.Y.AUTO,e.unref(t).OVERFLOW.X.HIDDEN,e.unref(t).WIDTH.FULL,e.unref(t).PADDING.Y.TWO]),ref_key:"modalContent",ref:s},[e.renderSlot(u.$slots,"default",{},void 0,!0)],2),u.$slots.footer?(e.openBlock(),e.createElementBlock("footer",{key:0,class:e.normalizeClass(["tide-modal-footer",e.unref(t).AXIS1.END,e.unref(t).DISPLAY.FLEX,e.unref(t).GAP.TWO,e.unref(t).PADDING.Y.ONE,e.unref(t).SHADOW.TOP])},[e.renderSlot(u.$slots,"footer",{},void 0,!0)],2)):e.createCommentVNode("",!0)],2)],38))}});const Vn=F(Mn,[["__scopeId","data-v-b0e46dd4"]]),xn=e.defineComponent({__name:"TidePagination",props:{pageCurrent:{default:1},pageTotal:{default:1}},emits:["change"],setup(o,{emit:n}){const r=o,s=e.ref(r.pageCurrent),i=e.computed(()=>new Array(r.pageTotal).fill("").map((a,l)=>l+1)),c=a=>{s.value=a,n("change",event,a)};return(a,l)=>(e.openBlock(),e.createElementBlock("section",{class:e.normalizeClass(["tide-pagination",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.CENTER,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.QUARTER,e.unref(t).WIDTH.FULL])},[e.createVNode(H,{disabled:s.value===1,icon:e.unref(h).CHEVRON_LEFT,priority:e.unref(y).QUATERNARY,onClick:l[0]||(l[0]=u=>c(s.value-1))},null,8,["disabled","icon","priority"]),e.createElementVNode("ul",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).GAP.QUARTER,e.unref(t).LIST_BULLETS.OFF])},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,u=>(e.openBlock(),e.createElementBlock("li",{key:u},[e.createVNode($e,{disabled:s.value===u,label:u,priority:e.unref(y).QUATERNARY,onClick:d=>c(u)},null,8,["disabled","label","priority","onClick"])]))),128))],2),e.createVNode(H,{disabled:s.value===i.value[i.value.length-1],icon:e.unref(h).CHEVRON_RIGHT,priority:e.unref(y).QUATERNARY,onClick:l[1]||(l[1]=u=>c(s.value+1))},null,8,["disabled","icon","priority"])],2))}}),Wn=["top","right","bottom","left"],Be=["start","end"],Ue=Wn.reduce((o,n)=>o.concat(n,n+"-"+Be[0],n+"-"+Be[1]),[]),ce=Math.min,z=Math.max,ue=Math.round,le=Math.floor,M=o=>({x:o,y:o}),Xn={left:"right",right:"left",bottom:"top",top:"bottom"},Yn={start:"end",end:"start"};function be(o,n,r){return z(o,ce(n,r))}function fe(o,n){return typeof o=="function"?o(n):o}function ee(o){return o.split("-")[0]}function X(o){return o.split("-")[1]}function je(o){return o==="x"?"y":"x"}function Je(o){return o==="y"?"height":"width"}function Ee(o){return["top","bottom"].includes(ee(o))?"y":"x"}function et(o){return je(Ee(o))}function zn(o,n,r){r===void 0&&(r=!1);const s=X(o),i=et(o),c=Je(i);let a=i==="x"?s===(r?"end":"start")?"right":"left":s==="start"?"bottom":"top";return n.reference[c]>n.floating[c]&&(a=ke(a)),[a,ke(a)]}function qn(o){return o.replace(/start|end/g,n=>Yn[n])}function ke(o){return o.replace(/left|right|bottom|top/g,n=>Xn[n])}function $n(o){return{top:0,right:0,bottom:0,left:0,...o}}function Kn(o){return typeof o!="number"?$n(o):{top:o,right:o,bottom:o,left:o}}function de(o){const{x:n,y:r,width:s,height:i}=o;return{width:s,height:i,top:r,left:n,right:n+s,bottom:r+i,x:n,y:r}}function Ge(o,n,r){let{reference:s,floating:i}=o;const c=Ee(n),a=et(n),l=Je(a),u=ee(n),d=c==="y",f=s.x+s.width/2-i.width/2,E=s.y+s.height/2-i.height/2,R=s[l]/2-i[l]/2;let m;switch(u){case"top":m={x:f,y:s.y-i.height};break;case"bottom":m={x:f,y:s.y+s.height};break;case"right":m={x:s.x+s.width,y:E};break;case"left":m={x:s.x-i.width,y:E};break;default:m={x:s.x,y:s.y}}switch(X(n)){case"start":m[a]-=R*(r&&d?-1:1);break;case"end":m[a]+=R*(r&&d?-1:1);break}return m}const Zn=async(o,n,r)=>{const{placement:s="bottom",strategy:i="absolute",middleware:c=[],platform:a}=r,l=c.filter(Boolean),u=await(a.isRTL==null?void 0:a.isRTL(n));let d=await a.getElementRects({reference:o,floating:n,strategy:i}),{x:f,y:E}=Ge(d,s,u),R=s,m={},I=0;for(let L=0;L<l.length;L++){const{name:O,fn:T}=l[L],{x:v,y:A,data:g,reset:p}=await T({x:f,y:E,initialPlacement:s,placement:R,strategy:i,middlewareData:m,rects:d,platform:a,elements:{reference:o,floating:n}});f=v??f,E=A??E,m={...m,[O]:{...m[O],...g}},p&&I<=50&&(I++,typeof p=="object"&&(p.placement&&(R=p.placement),p.rects&&(d=p.rects===!0?await a.getElementRects({reference:o,floating:n,strategy:i}):p.rects),{x:f,y:E}=Ge(d,R,u)),L=-1)}return{x:f,y:E,placement:R,strategy:i,middlewareData:m}};async function tt(o,n){var r;n===void 0&&(n={});const{x:s,y:i,platform:c,rects:a,elements:l,strategy:u}=o,{boundary:d="clippingAncestors",rootBoundary:f="viewport",elementContext:E="floating",altBoundary:R=!1,padding:m=0}=fe(n,o),I=Kn(m),O=l[R?E==="floating"?"reference":"floating":E],T=de(await c.getClippingRect({element:(r=await(c.isElement==null?void 0:c.isElement(O)))==null||r?O:O.contextElement||await(c.getDocumentElement==null?void 0:c.getDocumentElement(l.floating)),boundary:d,rootBoundary:f,strategy:u})),v=E==="floating"?{x:s,y:i,width:a.floating.width,height:a.floating.height}:a.reference,A=await(c.getOffsetParent==null?void 0:c.getOffsetParent(l.floating)),g=await(c.isElement==null?void 0:c.isElement(A))?await(c.getScale==null?void 0:c.getScale(A))||{x:1,y:1}:{x:1,y:1},p=de(c.convertOffsetParentRelativeRectToViewportRelativeRect?await c.convertOffsetParentRelativeRectToViewportRelativeRect({elements:l,rect:v,offsetParent:A,strategy:u}):v);return{top:(T.top-p.top+I.top)/g.y,bottom:(p.bottom-T.bottom+I.bottom)/g.y,left:(T.left-p.left+I.left)/g.x,right:(p.right-T.right+I.right)/g.x}}function Qn(o,n,r){return(o?[...r.filter(i=>X(i)===o),...r.filter(i=>X(i)!==o)]:r.filter(i=>ee(i)===i)).filter(i=>o?X(i)===o||(n?qn(i)!==i:!1):!0)}const jn=function(o){return o===void 0&&(o={}),{name:"autoPlacement",options:o,async fn(n){var r,s,i;const{rects:c,middlewareData:a,placement:l,platform:u,elements:d}=n,{crossAxis:f=!1,alignment:E,allowedPlacements:R=Ue,autoAlignment:m=!0,...I}=fe(o,n),L=E!==void 0||R===Ue?Qn(E||null,m,R):R,O=await tt(n,I),T=((r=a.autoPlacement)==null?void 0:r.index)||0,v=L[T];if(v==null)return{};const A=zn(v,c,await(u.isRTL==null?void 0:u.isRTL(d.floating)));if(l!==v)return{reset:{placement:L[0]}};const g=[O[ee(v)],O[A[0]],O[A[1]]],p=[...((s=a.autoPlacement)==null?void 0:s.overflows)||[],{placement:v,overflows:g}],D=L[T+1];if(D)return{data:{index:T+1,overflows:p},reset:{placement:D}};const N=p.map(w=>{const ne=X(w.placement);return[w.placement,ne&&f?w.overflows.slice(0,2).reduce((ut,dt)=>ut+dt,0):w.overflows[0],w.overflows]}).sort((w,ne)=>w[1]-ne[1]),te=((i=N.filter(w=>w[2].slice(0,X(w[0])?2:3).every(ne=>ne<=0))[0])==null?void 0:i[0])||N[0][0];return te!==l?{data:{index:T+1,overflows:p},reset:{placement:te}}:{}}}};async function Jn(o,n){const{placement:r,platform:s,elements:i}=o,c=await(s.isRTL==null?void 0:s.isRTL(i.floating)),a=ee(r),l=X(r),u=Ee(r)==="y",d=["left","top"].includes(a)?-1:1,f=c&&u?-1:1,E=fe(n,o);let{mainAxis:R,crossAxis:m,alignmentAxis:I}=typeof E=="number"?{mainAxis:E,crossAxis:0,alignmentAxis:null}:{mainAxis:E.mainAxis||0,crossAxis:E.crossAxis||0,alignmentAxis:E.alignmentAxis};return l&&typeof I=="number"&&(m=l==="end"?I*-1:I),u?{x:m*f,y:R*d}:{x:R*d,y:m*f}}const eo=function(o){return o===void 0&&(o=0),{name:"offset",options:o,async fn(n){var r,s;const{x:i,y:c,placement:a,middlewareData:l}=n,u=await Jn(n,o);return a===((r=l.offset)==null?void 0:r.placement)&&(s=l.arrow)!=null&&s.alignmentOffset?{}:{x:i+u.x,y:c+u.y,data:{...u,placement:a}}}}},to=function(o){return o===void 0&&(o={}),{name:"shift",options:o,async fn(n){const{x:r,y:s,placement:i}=n,{mainAxis:c=!0,crossAxis:a=!1,limiter:l={fn:O=>{let{x:T,y:v}=O;return{x:T,y:v}}},...u}=fe(o,n),d={x:r,y:s},f=await tt(n,u),E=Ee(ee(i)),R=je(E);let m=d[R],I=d[E];if(c){const O=R==="y"?"top":"left",T=R==="y"?"bottom":"right",v=m+f[O],A=m-f[T];m=be(v,m,A)}if(a){const O=E==="y"?"top":"left",T=E==="y"?"bottom":"right",v=I+f[O],A=I-f[T];I=be(v,I,A)}const L=l.fn({...n,[R]:m,[E]:I});return{...L,data:{x:L.x-r,y:L.y-s,enabled:{[R]:c,[E]:a}}}}}};function me(){return typeof window<"u"}function $(o){return De(o)?(o.nodeName||"").toLowerCase():"#document"}function B(o){var n;return(o==null||(n=o.ownerDocument)==null?void 0:n.defaultView)||window}function x(o){var n;return(n=(De(o)?o.ownerDocument:o.document)||window.document)==null?void 0:n.documentElement}function De(o){return me()?o instanceof Node||o instanceof B(o).Node:!1}function k(o){return me()?o instanceof Element||o instanceof B(o).Element:!1}function V(o){return me()?o instanceof HTMLElement||o instanceof B(o).HTMLElement:!1}function we(o){return!me()||typeof ShadowRoot>"u"?!1:o instanceof ShadowRoot||o instanceof B(o).ShadowRoot}function ae(o){const{overflow:n,overflowX:r,overflowY:s,display:i}=G(o);return/auto|scroll|overlay|hidden|clip/.test(n+s+r)&&!["inline","contents"].includes(i)}function no(o){return["table","td","th"].includes($(o))}function Oe(o){return[":popover-open",":modal"].some(n=>{try{return o.matches(n)}catch{return!1}})}function Fe(o){const n=Se(),r=k(o)?G(o):o;return["transform","translate","scale","rotate","perspective"].some(s=>r[s]?r[s]!=="none":!1)||(r.containerType?r.containerType!=="normal":!1)||!n&&(r.backdropFilter?r.backdropFilter!=="none":!1)||!n&&(r.filter?r.filter!=="none":!1)||["transform","translate","scale","rotate","perspective","filter"].some(s=>(r.willChange||"").includes(s))||["paint","layout","strict","content"].some(s=>(r.contain||"").includes(s))}function oo(o){let n=Y(o);for(;V(n)&&!J(n);){if(Fe(n))return n;if(Oe(n))return null;n=Y(n)}return null}function Se(){return typeof CSS>"u"||!CSS.supports?!1:CSS.supports("-webkit-backdrop-filter","none")}function J(o){return["html","body","#document"].includes($(o))}function G(o){return B(o).getComputedStyle(o)}function Re(o){return k(o)?{scrollLeft:o.scrollLeft,scrollTop:o.scrollTop}:{scrollLeft:o.scrollX,scrollTop:o.scrollY}}function Y(o){if($(o)==="html")return o;const n=o.assignedSlot||o.parentNode||we(o)&&o.host||x(o);return we(n)?n.host:n}function nt(o){const n=Y(o);return J(n)?o.ownerDocument?o.ownerDocument.body:o.body:V(n)&&ae(n)?n:nt(n)}function ie(o,n,r){var s;n===void 0&&(n=[]),r===void 0&&(r=!0);const i=nt(o),c=i===((s=o.ownerDocument)==null?void 0:s.body),a=B(i);if(c){const l=pe(a);return n.concat(a,a.visualViewport||[],ae(i)?i:[],l&&r?ie(l):[])}return n.concat(i,ie(i,[],r))}function pe(o){return o.parent&&Object.getPrototypeOf(o.parent)?o.frameElement:null}function ot(o){const n=G(o);let r=parseFloat(n.width)||0,s=parseFloat(n.height)||0;const i=V(o),c=i?o.offsetWidth:r,a=i?o.offsetHeight:s,l=ue(r)!==c||ue(s)!==a;return l&&(r=c,s=a),{width:r,height:s,$:l}}function Ce(o){return k(o)?o:o.contextElement}function j(o){const n=Ce(o);if(!V(n))return M(1);const r=n.getBoundingClientRect(),{width:s,height:i,$:c}=ot(n);let a=(c?ue(r.width):r.width)/s,l=(c?ue(r.height):r.height)/i;return(!a||!Number.isFinite(a))&&(a=1),(!l||!Number.isFinite(l))&&(l=1),{x:a,y:l}}const ro=M(0);function rt(o){const n=B(o);return!Se()||!n.visualViewport?ro:{x:n.visualViewport.offsetLeft,y:n.visualViewport.offsetTop}}function so(o,n,r){return n===void 0&&(n=!1),!r||n&&r!==B(o)?!1:n}function q(o,n,r,s){n===void 0&&(n=!1),r===void 0&&(r=!1);const i=o.getBoundingClientRect(),c=Ce(o);let a=M(1);n&&(s?k(s)&&(a=j(s)):a=j(o));const l=so(c,r,s)?rt(c):M(0);let u=(i.left+l.x)/a.x,d=(i.top+l.y)/a.y,f=i.width/a.x,E=i.height/a.y;if(c){const R=B(c),m=s&&k(s)?B(s):s;let I=R,L=pe(I);for(;L&&s&&m!==I;){const O=j(L),T=L.getBoundingClientRect(),v=G(L),A=T.left+(L.clientLeft+parseFloat(v.paddingLeft))*O.x,g=T.top+(L.clientTop+parseFloat(v.paddingTop))*O.y;u*=O.x,d*=O.y,f*=O.x,E*=O.y,u+=A,d+=g,I=B(L),L=pe(I)}}return de({width:f,height:E,x:u,y:d})}function Pe(o,n){const r=Re(o).scrollLeft;return n?n.left+r:q(x(o)).left+r}function st(o,n,r){r===void 0&&(r=!1);const s=o.getBoundingClientRect(),i=s.left+n.scrollLeft-(r?0:Pe(o,s)),c=s.top+n.scrollTop;return{x:i,y:c}}function io(o){let{elements:n,rect:r,offsetParent:s,strategy:i}=o;const c=i==="fixed",a=x(s),l=n?Oe(n.floating):!1;if(s===a||l&&c)return r;let u={scrollLeft:0,scrollTop:0},d=M(1);const f=M(0),E=V(s);if((E||!E&&!c)&&(($(s)!=="body"||ae(a))&&(u=Re(s)),V(s))){const m=q(s);d=j(s),f.x=m.x+s.clientLeft,f.y=m.y+s.clientTop}const R=a&&!E&&!c?st(a,u,!0):M(0);return{width:r.width*d.x,height:r.height*d.y,x:r.x*d.x-u.scrollLeft*d.x+f.x+R.x,y:r.y*d.y-u.scrollTop*d.y+f.y+R.y}}function ao(o){return Array.from(o.getClientRects())}function lo(o){const n=x(o),r=Re(o),s=o.ownerDocument.body,i=z(n.scrollWidth,n.clientWidth,s.scrollWidth,s.clientWidth),c=z(n.scrollHeight,n.clientHeight,s.scrollHeight,s.clientHeight);let a=-r.scrollLeft+Pe(o);const l=-r.scrollTop;return G(s).direction==="rtl"&&(a+=z(n.clientWidth,s.clientWidth)-i),{width:i,height:c,x:a,y:l}}function co(o,n){const r=B(o),s=x(o),i=r.visualViewport;let c=s.clientWidth,a=s.clientHeight,l=0,u=0;if(i){c=i.width,a=i.height;const d=Se();(!d||d&&n==="fixed")&&(l=i.offsetLeft,u=i.offsetTop)}return{width:c,height:a,x:l,y:u}}function uo(o,n){const r=q(o,!0,n==="fixed"),s=r.top+o.clientTop,i=r.left+o.clientLeft,c=V(o)?j(o):M(1),a=o.clientWidth*c.x,l=o.clientHeight*c.y,u=i*c.x,d=s*c.y;return{width:a,height:l,x:u,y:d}}function He(o,n,r){let s;if(n==="viewport")s=co(o,r);else if(n==="document")s=lo(x(o));else if(k(n))s=uo(n,r);else{const i=rt(o);s={x:n.x-i.x,y:n.y-i.y,width:n.width,height:n.height}}return de(s)}function it(o,n){const r=Y(o);return r===n||!k(r)||J(r)?!1:G(r).position==="fixed"||it(r,n)}function fo(o,n){const r=n.get(o);if(r)return r;let s=ie(o,[],!1).filter(l=>k(l)&&$(l)!=="body"),i=null;const c=G(o).position==="fixed";let a=c?Y(o):o;for(;k(a)&&!J(a);){const l=G(a),u=Fe(a);!u&&l.position==="fixed"&&(i=null),(c?!u&&!i:!u&&l.position==="static"&&!!i&&["absolute","fixed"].includes(i.position)||ae(a)&&!u&&it(o,a))?s=s.filter(f=>f!==a):i=l,a=Y(a)}return n.set(o,s),s}function Eo(o){let{element:n,boundary:r,rootBoundary:s,strategy:i}=o;const a=[...r==="clippingAncestors"?Oe(n)?[]:fo(n,this._c):[].concat(r),s],l=a[0],u=a.reduce((d,f)=>{const E=He(n,f,i);return d.top=z(E.top,d.top),d.right=ce(E.right,d.right),d.bottom=ce(E.bottom,d.bottom),d.left=z(E.left,d.left),d},He(n,l,i));return{width:u.right-u.left,height:u.bottom-u.top,x:u.left,y:u.top}}function mo(o){const{width:n,height:r}=ot(o);return{width:n,height:r}}function Oo(o,n,r){const s=V(n),i=x(n),c=r==="fixed",a=q(o,!0,c,n);let l={scrollLeft:0,scrollTop:0};const u=M(0);if(s||!s&&!c)if(($(n)!=="body"||ae(i))&&(l=Re(n)),s){const R=q(n,!0,c,n);u.x=R.x+n.clientLeft,u.y=R.y+n.clientTop}else i&&(u.x=Pe(i));const d=i&&!s&&!c?st(i,l):M(0),f=a.left+l.scrollLeft-u.x-d.x,E=a.top+l.scrollTop-u.y-d.y;return{x:f,y:E,width:a.width,height:a.height}}function Te(o){return G(o).position==="static"}function Me(o,n){if(!V(o)||G(o).position==="fixed")return null;if(n)return n(o);let r=o.offsetParent;return x(o)===r&&(r=r.ownerDocument.body),r}function at(o,n){const r=B(o);if(Oe(o))return r;if(!V(o)){let i=Y(o);for(;i&&!J(i);){if(k(i)&&!Te(i))return i;i=Y(i)}return r}let s=Me(o,n);for(;s&&no(s)&&Te(s);)s=Me(s,n);return s&&J(s)&&Te(s)&&!Fe(s)?r:s||oo(o)||r}const Ro=async function(o){const n=this.getOffsetParent||at,r=this.getDimensions,s=await r(o.floating);return{reference:Oo(o.reference,await n(o.floating),o.strategy),floating:{x:0,y:0,width:s.width,height:s.height}}};function vo(o){return G(o).direction==="rtl"}const To={convertOffsetParentRelativeRectToViewportRelativeRect:io,getDocumentElement:x,getClippingRect:Eo,getOffsetParent:at,getElementRects:Ro,getClientRects:ao,getDimensions:mo,getScale:j,isElement:k,isRTL:vo};function lt(o,n){return o.x===n.x&&o.y===n.y&&o.width===n.width&&o.height===n.height}function Io(o,n){let r=null,s;const i=x(o);function c(){var l;clearTimeout(s),(l=r)==null||l.disconnect(),r=null}function a(l,u){l===void 0&&(l=!1),u===void 0&&(u=1),c();const d=o.getBoundingClientRect(),{left:f,top:E,width:R,height:m}=d;if(l||n(),!R||!m)return;const I=le(E),L=le(i.clientWidth-(f+R)),O=le(i.clientHeight-(E+m)),T=le(f),A={rootMargin:-I+"px "+-L+"px "+-O+"px "+-T+"px",threshold:z(0,ce(1,u))||1};let g=!0;function p(D){const N=D[0].intersectionRatio;if(N!==u){if(!g)return a();N?a(!1,N):s=setTimeout(()=>{a(!1,1e-7)},1e3)}N===1&&!lt(d,o.getBoundingClientRect())&&a(),g=!1}try{r=new IntersectionObserver(p,{...A,root:i.ownerDocument})}catch{r=new IntersectionObserver(p,A)}r.observe(o)}return a(!0),c}function Ao(o,n,r,s){s===void 0&&(s={});const{ancestorScroll:i=!0,ancestorResize:c=!0,elementResize:a=typeof ResizeObserver=="function",layoutShift:l=typeof IntersectionObserver=="function",animationFrame:u=!1}=s,d=Ce(o),f=i||c?[...d?ie(d):[],...ie(n)]:[];f.forEach(T=>{i&&T.addEventListener("scroll",r,{passive:!0}),c&&T.addEventListener("resize",r)});const E=d&&l?Io(d,r):null;let R=-1,m=null;a&&(m=new ResizeObserver(T=>{let[v]=T;v&&v.target===d&&m&&(m.unobserve(n),cancelAnimationFrame(R),R=requestAnimationFrame(()=>{var A;(A=m)==null||A.observe(n)})),r()}),d&&!u&&m.observe(d),m.observe(n));let I,L=u?q(o):null;u&&O();function O(){const T=q(o);L&&!lt(L,T)&&r(),L=T,I=requestAnimationFrame(O)}return r(),()=>{var T;f.forEach(v=>{i&&v.removeEventListener("scroll",r),c&&v.removeEventListener("resize",r)}),E==null||E(),(T=m)==null||T.disconnect(),m=null,u&&cancelAnimationFrame(I)}}const Ve=eo,xe=jn,We=to,Lo=(o,n,r)=>{const s=new Map,i={platform:To,...r},c={...i.platform,_c:s};return Zn(o,n,{...i,platform:c})};function po(o){return o!=null&&typeof o=="object"&&"$el"in o}function Xe(o){if(po(o)){const n=o.$el;return De(n)&&$(n)==="#comment"?null:n}return o}function re(o){return typeof o=="function"?o():e.unref(o)}function ct(o){return typeof window>"u"?1:(o.ownerDocument.defaultView||window).devicePixelRatio||1}function Ye(o,n){const r=ct(o);return Math.round(n*r)/r}function No(o,n,r){r===void 0&&(r={});const s=r.whileElementsMounted,i=e.computed(()=>{var N;return(N=re(r.open))!=null?N:!0}),c=e.computed(()=>re(r.middleware)),a=e.computed(()=>{var N;return(N=re(r.placement))!=null?N:"bottom"}),l=e.computed(()=>{var N;return(N=re(r.strategy))!=null?N:"absolute"}),u=e.computed(()=>{var N;return(N=re(r.transform))!=null?N:!0}),d=e.computed(()=>Xe(o.value)),f=e.computed(()=>Xe(n.value)),E=e.ref(0),R=e.ref(0),m=e.ref(l.value),I=e.ref(a.value),L=e.shallowRef({}),O=e.ref(!1),T=e.computed(()=>{const N={position:m.value,left:"0",top:"0"};if(!f.value)return N;const U=Ye(f.value,E.value),te=Ye(f.value,R.value);return u.value?{...N,transform:"translate("+U+"px, "+te+"px)",...ct(f.value)>=1.5&&{willChange:"transform"}}:{position:m.value,left:U+"px",top:te+"px"}});let v;function A(){if(d.value==null||f.value==null)return;const N=i.value;Lo(d.value,f.value,{middleware:c.value,placement:a.value,strategy:l.value}).then(U=>{E.value=U.x,R.value=U.y,m.value=U.strategy,I.value=U.placement,L.value=U.middlewareData,O.value=N!==!1})}function g(){typeof v=="function"&&(v(),v=void 0)}function p(){if(g(),s===void 0){A();return}if(d.value!=null&&f.value!=null){v=s(d.value,f.value,A);return}}function D(){i.value||(O.value=!1)}return e.watch([c,a,l,i],A,{flush:"sync"}),e.watch([d,f],p,{flush:"sync"}),e.watch(i,D,{flush:"sync"}),e.getCurrentScope()&&e.onScopeDispose(g),{x:e.shallowReadonly(E),y:e.shallowReadonly(R),strategy:e.shallowReadonly(m),placement:e.shallowReadonly(I),middlewareData:e.shallowReadonly(L),isPositioned:e.shallowReadonly(O),floatingStyles:T,update:A}}const go=(o,n)=>!(Array.isArray(n)?n:[n]).some(s=>s.contains(o.target)),ho=e.defineComponent({__name:"TidePopover",props:{anchorId:{},offset:{default:16}},setup(o){const n=o,r=e.ref(null),s=e.ref(null),i=e.ref(null),c=e.ref(!1),a=e.ref(!1),l=e.ref([xe(),Ve({mainAxis:n.offset}),We({padding:16})]),u=e.computed(()=>c.value||a.value),{floatingStyles:d}=No(r,s,{middleware:l,strategy:"fixed",whileElementsMounted:Ao}),f=g=>{!r.value||!s.value||go(g,[r.value,s.value])&&(g.stopImmediatePropagation(),a.value=!1)},E=()=>{c.value=!0},R=()=>{c.value=!1},m=()=>{a.value=!0},I=()=>{if(!r.value)return null;r.value.addEventListener("mouseover",E),r.value.addEventListener("mouseleave",R),r.value.addEventListener("click",m)},L=()=>{if(!r.value)return null;r.value.removeEventListener("mouseover",E),r.value.removeEventListener("mouseleave",R),r.value.removeEventListener("click",m)},O=g=>{g.key==="Escape"&&(a.value=!1)},T=()=>{i.value&&(i.value.addEventListener("click",f,!0),i.value.addEventListener("keydown",O))},v=()=>{i.value&&(i.value.removeEventListener("click",f,!0),i.value.removeEventListener("keydown",O))},A=()=>{r.value=document.getElementById(n.anchorId)};return e.watch(()=>a.value,g=>{g?T():v()}),e.watch(()=>n.anchorId,()=>{L(),A(),I()}),e.watchEffect(()=>{l.value=[xe(),Ve({mainAxis:n.offset}),We({padding:16})]}),e.onBeforeMount(()=>{wn()}),e.onMounted(()=>{A(),i.value=document.documentElement,I()}),e.onUnmounted(()=>{L()}),(g,p)=>(e.openBlock(),e.createBlock(e.Teleport,{to:`#${e.unref(Le)}`},[e.createVNode(e.Transition,null,{default:e.withCtx(()=>[e.withDirectives(e.createElementVNode("div",{class:e.normalizeClass(["tide-popover",e.unref(t).BG.SURFACE.DEFAULT,e.unref(t).BORDER.COLOR.LOW,e.unref(t).BORDER.FULL.ONE,e.unref(t).BORDER.RADIUS.HALF,e.unref(t).FONT.ROLE.BODY_2,e.unref(t).PADDING.FULL.ONE,e.unref(t).SHADOW.BOTTOM]),ref_key:"floating",ref:s,style:e.normalizeStyle({...e.unref(d),maxWidth:`calc(100% - ${n.offset*2}px)`})},[e.renderSlot(g.$slots,"default",{},void 0,!0)],6),[[e.vShow,u.value]])]),_:3})],8,["to"]))}});const _o=F(ho,[["__scopeId","data-v-a4dd063e"]]),Do={class:"tide-seo-links"},Fo=["href","target"],So=e.defineComponent({__name:"TideSeoLinks",props:{heading:{default:""},links:{}},setup(o){const n=o;return(r,s)=>(e.openBlock(),e.createElementBlock("section",Do,[e.createElementVNode("h2",{class:e.normalizeClass([e.unref(t).MARGIN.BOTTOM.HALF])},e.toDisplayString(n.heading),3),e.createElementVNode("ul",{class:e.normalizeClass([e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.WRAP,e.unref(t).GAP.TWO,e.unref(t).LIST_BULLETS.OFF])},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.links,i=>(e.openBlock(),e.createElementBlock("li",{class:e.normalizeClass(["tide-seo-link",e.unref(t).DISPLAY.FLEX,e.unref(t).FLEX.DIRECTION.COLUMN,e.unref(t).GAP.QUARTER,e.unref(t).FONT.ROLE.BODY_2]),key:i.label},[e.createElementVNode("a",{class:e.normalizeClass([e.unref(t).UNDERLINE.OFF]),href:i.url,target:i.isNewTab?e.unref(b).BLANK:e.unref(b).SELF},e.toDisplayString(i.label),11,Fo)],2))),128))],2)]))}});const Co=F(So,[["__scopeId","data-v-0348487b"]]),Po=["disabled"],yo=e.defineComponent({__name:"TideSwitch",props:{disabled:{type:Boolean,default:!1},isActive:{type:Boolean,default:!1}},emits:["change"],setup(o,{emit:n}){const r=o,s=()=>{r.disabled||n("change")};return(i,c)=>(e.openBlock(),e.createElementBlock("button",{class:e.normalizeClass(["tide-switch",r.isActive?"active":"",e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS2.CENTER,e.unref(t).BORDER.FULL.ONE,e.unref(t).BORDER.RADIUS.FULL,r.isActive?"":e.unref(t).BORDER.COLOR.DEFAULT,e.unref(t).OVERFLOW.XY.HIDDEN,r.isActive?e.unref(t).BG.SECONDARY:e.unref(t).BG.SURFACE.DEFAULT]),disabled:r.disabled,onClick:s,"aria-label":"Switch"},[e.createElementVNode("div",{class:e.normalizeClass(["tide-switch-indicator",e.unref(t).POSITION.RELATIVE,e.unref(t).DISPLAY.FLEX,e.unref(t).AXIS1.CENTER,e.unref(t).AXIS2.CENTER,e.unref(t).BORDER.RADIUS.FULL,r.isActive?e.unref(t).BG.SURFACE.DEFAULT:e.unref(t).BG.SECONDARY])},[e.createVNode(_,{icon:e.unref(h).CHECK,size:e.unref(C).LARGE},null,8,["icon","size"])],2)],10,Po))}});const Bo=F(yo,[["__scopeId","data-v-9bdb658a"]]),Uo={NUMBER:Ne,PHONE:Ot,PRICE:Rt},Q={alpha:/^[a-zA-Z]+$/g,alphaNumberOrEmpty:/^$|^[a-z0-9]+$/i,alphaSpace:/^[a-zA-Z ]+$/g,email:/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,numberFormatted:/^$|(?=.)^\$?(([1-9][0-9]{0,2}(,[0-9]{3})*)|0)?(\.[0-9]{1,2})?$/,phone:/^(?:\d{3}-\d{3}-\d{4}|\d{1}-\d{3}-\d{3}-\d{4})?$/,price:/(?=.)^\$?(([1-9][0-9]{0,2}(,[0-9]{3})*)|0)?(\.[0-9]{1,2})?$/},bo={IMAGE:{FLOORPLAN:"floorplan",IMAGE:"image"},VIDEO:"video",VR:"vr"},ko={ALPHA_NUMBER_EMPTY:oe(Q.alphaNumberOrEmpty),ALPHA_SPACE:oe(Q.alphaSpace),EMAIL:oe(Q.email),NUMBER:oe(Q.numberFormatted),PHONE:oe(Q.phone)};exports.ALERT=P;exports.BADGE_TRUSTED=qe;exports.BREAKPOINT=Qe;exports.CSS=t;exports.ELEMENT=S;exports.ELEMENT_TEXT_AS_ICON=W;exports.FORMAT=Uo;exports.FORMAT_REGEX=Q;exports.ICON=h;exports.ICON_REALM=vt;exports.MEDIA=kn;exports.MEDIA_SLIDE_TYPES=bo;exports.ORIENTATION=Ie;exports.PRIORITY=y;exports.REALM=ze;exports.SIZE=C;exports.SIZE_BUTTON=K;exports.TARGET=b;exports.TEXT_INPUT_TYPE=Z;exports.TYPE_CARD=se;exports.TideAccordionItem=At;exports.TideAlert=pt;exports.TideBadge=Nt;exports.TideBadgeTrustedPartner=ht;exports.TideBreadCrumbs=St;exports.TideButton=Ct;exports.TideButtonIcon=H;exports.TideButtonPagination=$e;exports.TideButtonSegmented=Ut;exports.TideCard=kt;exports.TideCarousel=wt;exports.TideChipAction=Vt;exports.TideChipFilter=Wt;exports.TideChipInput=Yt;exports.TideColumns=jt;exports.TideDivider=Ae;exports.TideIcon=_;exports.TideImage=Ke;exports.TideImageBackground=nn;exports.TideIndicator=sn;exports.TideInputCheckbox=un;exports.TideInputRadio=mn;exports.TideInputSelect=_n;exports.TideInputText=Cn;exports.TideInputTextarea=Un;exports.TideLink=bn;exports.TideModal=Vn;exports.TidePagination=xn;exports.TidePopover=_o;exports.TideSeoLinks=Co;exports.TideSwitch=Bo;exports.VALIDATOR=ko;
|
|
2
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlkZS1kZXNpZ24tc3lzdGVtLmNqcyIsInNvdXJjZXMiOlsiLi4vc3JjL3R5cGVzL09yaWVudGF0aW9uLnRzIiwiLi4vc3JjL3R5cGVzL1N0eWxlcy50cyIsIi4uL3NyYy90eXBlcy9SZWFsbS50cyIsIi4uL3NyYy90eXBlcy9TaXplLnRzIiwiLi4vc3JjL3V0aWxpdGllcy9mb3JtYXQudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSWNvbi52dWUiLCIuLi9zcmMvdHlwZXMvSWNvbi50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVBY2NvcmRpb25JdGVtLnZ1ZSIsIi4uL3NyYy90eXBlcy9FbGVtZW50LnRzIiwiLi4vc3JjL3R5cGVzL1ByaW9yaXR5LnRzIiwiLi4vc3JjL3R5cGVzL1RhcmdldC50cyIsIi4uL3NyYy90eXBlcy9BbGVydC50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVBbGVydC52dWUiLCIuLi9zcmMvdHlwZXMvQmFkZ2UudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQnV0dG9uU2VnbWVudGVkLnZ1ZSIsIi4uL3NyYy90eXBlcy9DYXJkLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUNhcm91c2VsLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbWFnZS52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW5wdXRDaGVja2JveC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW5wdXRSYWRpby52dWUiLCIuLi9zcmMvdXRpbGl0aWVzL3ZhbGlkYXRpb24udHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW5wdXRTZWxlY3QudnVlIiwiLi4vc3JjL3R5cGVzL1RleHRJbnB1dC50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbnB1dFRleHQudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUlucHV0VGV4dGFyZWEudnVlIiwiLi4vc3JjL3R5cGVzL0JyZWFrcG9pbnQudHMiLCIuLi9zcmMvdXRpbGl0aWVzL3ZpZXdwb3J0LnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZU1vZGFsLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVQYWdpbmF0aW9uLnZ1ZSIsIi4uL25vZGVfbW9kdWxlcy9AZmxvYXRpbmctdWkvdXRpbHMvZGlzdC9mbG9hdGluZy11aS51dGlscy5tanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsb2F0aW5nLXVpL2NvcmUvZGlzdC9mbG9hdGluZy11aS5jb3JlLm1qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmxvYXRpbmctdWkvdXRpbHMvZGlzdC9mbG9hdGluZy11aS51dGlscy5kb20ubWpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbG9hdGluZy11aS9kb20vZGlzdC9mbG9hdGluZy11aS5kb20ubWpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbG9hdGluZy11aS92dWUvZGlzdC9mbG9hdGluZy11aS52dWUubWpzIiwiLi4vc3JjL3V0aWxpdGllcy9ldmVudC50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVQb3BvdmVyLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVTd2l0Y2gudnVlIiwiLi4vc3JjL3R5cGVzL0Zvcm1hdHRlZC50cyIsIi4uL3NyYy90eXBlcy9MaXN0aW5nTWVkaWEudHMiLCIuLi9zcmMvdHlwZXMvVmFsaWRhdGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgT1JJRU5UQVRJT04gPSB7XG4gIEhPUklaT05UQUw6ICdob3Jpem9udGFsJyxcbiAgVkVSVElDQUw6ICd2ZXJ0aWNhbCcsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBPcmllbnRhdGlvbiA9ICh0eXBlb2YgT1JJRU5UQVRJT04pW2tleW9mIHR5cGVvZiBPUklFTlRBVElPTl07XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSB2dWUvc29ydC1rZXlzICovXG5cbmltcG9ydCB0eXBlIHsgQnJlYWtwb2ludCB9IGZyb20gJ0AvdHlwZXMvQnJlYWtwb2ludCc7XG5cbmV4cG9ydCBjb25zdCBDU1MgPSB7XG4gIHdpdGhCcmVha3BvaW50OiAodXRpbGl0aWVzOiBzdHJpbmdbXSwgYnJlYWtwb2ludDogQnJlYWtwb2ludCk6IHN0cmluZ1tdID0+IHtcbiAgICByZXR1cm4gdXRpbGl0aWVzLm1hcCgodXRpbGl0eSkgPT4gYCR7YnJlYWtwb2ludH0tJHt1dGlsaXR5fWApO1xuICB9LFxuICBBTElHTjoge1xuICAgIFg6IHtcbiAgICAgIENFTlRFUjogJ3RpZGUtdGV4dC1jZW50ZXInLFxuICAgICAgTEVGVDogJ3RpZGUtdGV4dC1sZWZ0JyxcbiAgICAgIFJJR0hUOiAndGlkZS10ZXh0LXJpZ2h0JyxcbiAgICB9LFxuICAgIFk6IHtcbiAgICAgIElOSVRJQUw6ICd0aWRlLWFsaWduLWluaXRpYWwnLFxuICAgICAgTUlERExFOiAndGlkZS1hbGlnbi1taWRkbGUnLFxuICAgIH0sXG4gIH0sXG4gIEFYSVMxOiB7XG4gICAgQVJPVU5EOiAndGlkZS1heGlzMS1hcm91bmQnLFxuICAgIEJFVFdFRU46ICd0aWRlLWF4aXMxLWJldHdlZW4nLFxuICAgIENFTlRFUjogJ3RpZGUtYXhpczEtY2VudGVyJyxcbiAgICBFTkQ6ICd0aWRlLWF4aXMxLWVuZCcsXG4gICAgU1RBUlQ6ICd0aWRlLWF4aXMxLXN0YXJ0JyxcbiAgfSxcbiAgQVhJUzI6IHtcbiAgICBBUk9VTkQ6ICd0aWRlLWF4aXMyLWFyb3VuZCcsXG4gICAgQ0VOVEVSOiAndGlkZS1heGlzMi1jZW50ZXInLFxuICAgIEVORDogJ3RpZGUtYXhpczItZW5kJyxcbiAgICBTVEFSVDogJ3RpZGUtYXhpczItc3RhcnQnLFxuICB9LFxuICBCRzoge1xuICAgIEdMT0JBTDoge1xuICAgICAgUFJJTUFSWToge1xuICAgICAgICBFUlJPUjogJ3RpZGUtYmctcHJpbWFyeS1lcnJvcicsXG4gICAgICAgIElORk86ICd0aWRlLWJnLXByaW1hcnktaW5mbycsXG4gICAgICAgIFNVQ0NFU1M6ICd0aWRlLWJnLXByaW1hcnktc3VjY2VzcycsXG4gICAgICAgIFdBUk5JTkc6ICd0aWRlLWJnLXByaW1hcnktd2FybmluZycsXG4gICAgICB9LFxuICAgICAgU1VSRkFDRToge1xuICAgICAgICBFUlJPUjogJ3RpZGUtYmctc3VyZmFjZS1lcnJvcicsXG4gICAgICAgIElORk86ICd0aWRlLWJnLXN1cmZhY2UtaW5mbycsXG4gICAgICAgIFNVQ0NFU1M6ICd0aWRlLWJnLXN1cmZhY2Utc3VjY2VzcycsXG4gICAgICAgIFdBUk5JTkc6ICd0aWRlLWJnLXN1cmZhY2Utd2FybmluZycsXG4gICAgICB9LFxuICAgIH0sXG4gICAgSU5JVElBTDogJ3RpZGUtYmctaW5pdGlhbCcsXG4gICAgQkxVUjogJ3RpZGUtYmctYmx1cicsXG4gICAgUFJJTUFSWTogJ3RpZGUtYmctcHJpbWFyeScsXG4gICAgU0VDT05EQVJZOiAndGlkZS1iZy1zZWNvbmRhcnknLFxuICAgIFNVUkZBQ0U6IHtcbiAgICAgIEFDQ0VOVDogJ3RpZGUtYmctc3VyZmFjZS1hY2NlbnQnLFxuICAgICAgQlJBTkQ6ICd0aWRlLWJnLXN1cmZhY2UtYnJhbmQnLFxuICAgICAgREVGQVVMVDogJ3RpZGUtYmctc3VyZmFjZScsXG4gICAgICBGTE9BVElORzogJ3RpZGUtYmctc3VyZmFjZS1mbG9hdGluZycsXG4gICAgICBHUkFESUVOVDogJ3RpZGUtYmctc3VyZmFjZS1ncmFkaWVudCcsXG4gICAgICBWQVJJQU5UOiAndGlkZS1iZy1zdXJmYWNlLXZhcmlhbnQnLFxuICAgIH0sXG4gICAgVFJBTlNQQVJFTlQ6IHtcbiAgICAgIE9ORV9IVU5EUkVEOiAndGlkZS10cmFuc3BhcmVudC0xMDAnLFxuICAgICAgVFdPX0hVTkRSRUQ6ICd0aWRlLXRyYW5zcGFyZW50LTIwMCcsXG4gICAgICBUSFJFRV9IVU5EUkVEOiAndGlkZS10cmFuc3BhcmVudC0zMDAnLFxuICAgICAgRk9VUl9IVU5EUkVEOiAndGlkZS10cmFuc3BhcmVudC00MDAnLFxuICAgIH0sXG4gIH0sXG4gIEJPUkRFUjoge1xuICAgIENPTE9SOiB7XG4gICAgICBHTE9CQUw6IHtcbiAgICAgICAgRVJST1I6ICd0aWRlLWJvcmRlci1lcnJvcicsXG4gICAgICAgIElORk86ICd0aWRlLWJvcmRlci1pbmZvJyxcbiAgICAgICAgU1VDQ0VTUzogJ3RpZGUtYm9yZGVyLXN1Y2Nlc3MnLFxuICAgICAgICBXQVJOSU5HOiAndGlkZS1ib3JkZXItd2FybmluZycsXG4gICAgICB9LFxuICAgICAgSU5JVElBTDogJ3RpZGUtYm9yZGVyLWNvbG9yLWluaXRpYWwnLFxuICAgICAgREVGQVVMVDogJ3RpZGUtYm9yZGVyJyxcbiAgICAgIEZMT0FUSU5HOiAndGlkZS1ib3JkZXItZmxvYXRpbmcnLFxuICAgICAgSElHSDogJ3RpZGUtYm9yZGVyLWhpZ2gnLFxuICAgICAgTE9XOiAndGlkZS1ib3JkZXItbG93JyxcbiAgICAgIFBSSU1BUlk6ICd0aWRlLWJvcmRlci1wcmltYXJ5JyxcbiAgICB9LFxuICAgIFJBRElVUzoge1xuICAgICAgWkVSTzogJ3RpZGUtcmFkaXVzLTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtcmFkaXVzLTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1yYWRpdXMtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtcmFkaXVzLTEnLFxuICAgICAgRlVMTDogJ3RpZGUtcmFkaXVzLWZ1bGwnLFxuICAgIH0sXG4gICAgQk9UVE9NOiB7XG4gICAgICBaRVJPOiAndGlkZS1ib3JkZXItYm90dG9tLTAnLFxuICAgICAgT05FOiAndGlkZS1ib3JkZXItYm90dG9tLTEnLFxuICAgICAgVFdPOiAndGlkZS1ib3JkZXItYm90dG9tLTInLFxuICAgIH0sXG4gICAgRlVMTDoge1xuICAgICAgWkVSTzogJ3RpZGUtYm9yZGVyLTAnLFxuICAgICAgT05FOiAndGlkZS1ib3JkZXItMScsXG4gICAgICBUV086ICd0aWRlLWJvcmRlci0yJyxcbiAgICB9LFxuICAgIExFRlQ6IHtcbiAgICAgIFpFUk86ICd0aWRlLWJvcmRlci1sZWZ0LTAnLFxuICAgICAgT05FOiAndGlkZS1ib3JkZXItbGVmdC0xJyxcbiAgICAgIFRXTzogJ3RpZGUtYm9yZGVyLWxlZnQtMicsXG4gICAgfSxcbiAgICBSSUdIVDoge1xuICAgICAgWkVSTzogJ3RpZGUtYm9yZGVyLXJpZ2h0LTAnLFxuICAgICAgT05FOiAndGlkZS1ib3JkZXItcmlnaHQtMScsXG4gICAgICBUV086ICd0aWRlLWJvcmRlci1yaWdodC0yJyxcbiAgICB9LFxuICAgIFRPUDoge1xuICAgICAgWkVSTzogJ3RpZGUtYm9yZGVyLXRvcC0wJyxcbiAgICAgIE9ORTogJ3RpZGUtYm9yZGVyLXRvcC0xJyxcbiAgICAgIFRXTzogJ3RpZGUtYm9yZGVyLXRvcC0yJyxcbiAgICB9LFxuICB9LFxuICBCT1hfU0laSU5HOiB7XG4gICAgQk9SREVSX0JPWDogJ3RpZGUtYm94LWJvcmRlcicsXG4gICAgQ09OVEVOVF9CT1g6ICd0aWRlLWJveC1jb250ZW50JyxcbiAgfSxcbiAgQlJFQUtfSU5TSURFOiB7XG4gICAgQVZPSURfQ09MVU1OOiAndGlkZS1icmVhay1pbnNpZGUtYXZvaWQtY29sdW1uJyxcbiAgfSxcbiAgQlJFQUtfV09SRDoge1xuICAgIE9GRjogJ3RpZGUtYnJlYWstaW5pdGlhbCcsXG4gICAgT046ICd0aWRlLWJyZWFrLXdvcmQnLFxuICB9LFxuICBDT0xVTU5TOiB7XG4gICAgSU5JVElBTDogJ3RpZGUtY29sdW1ucy1pbml0aWFsJyxcbiAgICBPTkU6ICd0aWRlLWNvbHVtbnMtMScsXG4gICAgVFdPOiAndGlkZS1jb2x1bW5zLTInLFxuICAgIFRIUkVFOiAndGlkZS1jb2x1bW5zLTMnLFxuICAgIEZPVVI6ICd0aWRlLWNvbHVtbnMtNCcsXG4gIH0sXG4gIENVUlNPUjoge1xuICAgIE5PVF9BTExPV0VEOiAndGlkZS1jdXJzb3Itbm90LWFsbG93ZWQnLFxuICAgIFBPSU5URVI6ICd0aWRlLWN1cnNvci1wb2ludGVyJyxcbiAgICBURVhUOiAndGlkZS1jdXJzb3ItdGV4dCcsXG4gIH0sXG4gIERJU1BMQVk6IHtcbiAgICBCTE9DSzogJ3RpZGUtZGlzcGxheS1ibG9jaycsXG4gICAgQ09OVEVOVFM6ICd0aWRlLWRpc3BsYXktY29udGVudHMnLFxuICAgIEZMRVg6ICd0aWRlLWRpc3BsYXktZmxleCcsXG4gICAgR1JJRDogJ3RpZGUtZGlzcGxheS1ncmlkJyxcbiAgICBJTklUSUFMOiAndGlkZS1kaXNwbGF5LWluaXRpYWwnLFxuICAgIElOTElORTogJ3RpZGUtZGlzcGxheS1pbmxpbmUnLFxuICAgIElOTElORV9CTE9DSzogJ3RpZGUtZGlzcGxheS1pbmxpbmUtYmxvY2snLFxuICAgIElOTElORV9GTEVYOiAndGlkZS1kaXNwbGF5LWlubGluZS1mbGV4JyxcbiAgICBOT05FOiAndGlkZS1kaXNwbGF5LW5vbmUnLFxuICB9LFxuICBFTExJUFNJUzogJ3RpZGUtZWxsaXBzaXMnLFxuICBGTEVYOiB7XG4gICAgQkFTSVM6IHtcbiAgICAgIEFVVE86ICd0aWRlLWZsZXgtYmFzaXMtYXV0bycsXG4gICAgICBaRVJPOiAndGlkZS1mbGV4LWJhc2lzLTAnLFxuICAgIH0sXG4gICAgRElSRUNUSU9OOiB7XG4gICAgICBDT0xVTU46ICd0aWRlLWZsZXgtY29sdW1uJyxcbiAgICAgIENPTFVNTl9SRVZFUlNFOiAndGlkZS1mbGV4LWNvbHVtbi1yZXZlcnNlJyxcbiAgICAgIFJPVzogJ3RpZGUtZmxleC1yb3cnLFxuICAgICAgUk9XX1JFVkVSU0U6ICd0aWRlLWZsZXgtcm93LXJldmVyc2UnLFxuICAgIH0sXG4gICAgR1JPVzoge1xuICAgICAgT0ZGOiAndGlkZS1ncm93LW5vbmUnLFxuICAgICAgT046ICd0aWRlLWdyb3cnLFxuICAgIH0sXG4gICAgU0hSSU5LOiB7XG4gICAgICBPRkY6ICd0aWRlLXNocmluay1ub25lJyxcbiAgICAgIE9OOiAndGlkZS1zaHJpbmsnLFxuICAgIH0sXG4gICAgV1JBUDogJ3RpZGUtZmxleC13cmFwJyxcbiAgfSxcbiAgRk9OVDoge1xuICAgIENPTE9SOiB7XG4gICAgICBHTE9CQUw6IHtcbiAgICAgICAgRVJST1I6ICd0aWRlLWZvbnQtZXJyb3InLFxuICAgICAgICBJTkZPOiAndGlkZS1mb250LWluZm8nLFxuICAgICAgICBTVUNDRVNTOiAndGlkZS1mb250LXN1Y2Nlc3MnLFxuICAgICAgICBXQVJOSU5HOiAndGlkZS1mb250LXdhcm5pbmcnLFxuICAgICAgfSxcbiAgICAgIFBSSU1BUlk6ICd0aWRlLWZvbnQtb24tcHJpbWFyeScsXG4gICAgICBTRUNPTkRBUlk6ICd0aWRlLWZvbnQtb24tc2Vjb25kYXJ5JyxcbiAgICAgIFNVUkZBQ0U6IHtcbiAgICAgICAgQlJBTkQ6ICd0aWRlLWZvbnQtb24tc3VyZmFjZS1icmFuZCcsXG4gICAgICAgIERFRkFVTFQ6ICd0aWRlLWZvbnQtb24tc3VyZmFjZScsXG4gICAgICAgIElOVkVSU0U6ICd0aWRlLWZvbnQtb24tc3VyZmFjZS1pbnZlcnNlJyxcbiAgICAgICAgVkFSSUFOVDogJ3RpZGUtZm9udC1vbi1zdXJmYWNlLXZhcmlhbnQnLFxuICAgICAgICBWQVJJQU5UX0lOVkVSU0U6ICd0aWRlLWZvbnQtb24tc3VyZmFjZS12YXJpYW50LWludmVyc2UnLFxuICAgICAgfSxcbiAgICB9LFxuICAgIFJPTEU6IHtcbiAgICAgIERJU1BMQVlfMTogJ3RpZGUtdHlwb2dyYXBoeS1kaXNwbGF5LTEnLFxuICAgICAgSEVBRExJTkVfMTogJ3RpZGUtdHlwb2dyYXBoeS1oZWFkbGluZS0xJyxcbiAgICAgIEhFQURMSU5FXzI6ICd0aWRlLXR5cG9ncmFwaHktaGVhZGxpbmUtMicsXG4gICAgICBIRUFETElORV8zOiAndGlkZS10eXBvZ3JhcGh5LWhlYWRsaW5lLTMnLFxuICAgICAgVElUTEVfMTogJ3RpZGUtdHlwb2dyYXBoeS10aXRsZS0xJyxcbiAgICAgIFRJVExFXzI6ICd0aWRlLXR5cG9ncmFwaHktdGl0bGUtMicsXG4gICAgICBCT0RZXzE6ICd0aWRlLXR5cG9ncmFwaHktYm9keS0xJyxcbiAgICAgIEJPRFlfMjogJ3RpZGUtdHlwb2dyYXBoeS1ib2R5LTInLFxuICAgICAgTEFCRUxfMTogJ3RpZGUtdHlwb2dyYXBoeS1sYWJlbC0xJyxcbiAgICAgIExBQkVMXzFfU0VNSUJPTEQ6ICd0aWRlLXR5cG9ncmFwaHktbGFiZWwtMS1zZW1pYm9sZCcsXG4gICAgICBMQUJFTF8yOiAndGlkZS10eXBvZ3JhcGh5LWxhYmVsLTInLFxuICAgICAgTEFCRUxfMl9TRU1JQk9MRDogJ3RpZGUtdHlwb2dyYXBoeS1sYWJlbC0yLXNlbWlib2xkJyxcbiAgICAgIExBQkVMXzM6ICd0aWRlLXR5cG9ncmFwaHktbGFiZWwtMycsXG4gICAgICBMSU5LXzE6ICd0aWRlLXR5cG9ncmFwaHktbGluay0xJyxcbiAgICAgIExJTktfMjogJ3RpZGUtdHlwb2dyYXBoeS1saW5rLTInLFxuICAgICAgTElOS18zOiAndGlkZS10eXBvZ3JhcGh5LWxpbmstMycsXG4gICAgICBCVVRUT05fMTogJ3RpZGUtdHlwb2dyYXBoeS1idXR0b24tMScsXG4gICAgICBCVVRUT05fMjogJ3RpZGUtdHlwb2dyYXBoeS1idXR0b24tMicsXG4gICAgfSxcbiAgICBTSVpFOiB7XG4gICAgICBUV0VMVkU6ICd0aWRlLWZvbnQtMTInLFxuICAgICAgRk9VUlRFRU46ICd0aWRlLWZvbnQtMTQnLFxuICAgICAgU0lYVEVFTjogJ3RpZGUtZm9udC0xNicsXG4gICAgICBUV0VOVFk6ICd0aWRlLWZvbnQtMjAnLFxuICAgICAgVFdFTlRZX0ZPVVI6ICd0aWRlLWZvbnQtMjQnLFxuICAgICAgVEhJUlRZX1RXTzogJ3RpZGUtZm9udC0zMicsXG4gICAgfSxcbiAgICBXRUlHSFQ6IHtcbiAgICAgIEZPVVJfSFVORFJFRDogJ3RpZGUtZm9udC00MDAnLFxuICAgICAgRklWRV9IVU5EUkVEOiAndGlkZS1mb250LTUwMCcsXG4gICAgICBTSVhfSFVORFJFRDogJ3RpZGUtZm9udC02MDAnLFxuICAgICAgU0VWRU5fSFVORFJFRDogJ3RpZGUtZm9udC03MDAnLFxuICAgIH0sXG4gIH0sXG4gIEdBUDoge1xuICAgIFpFUk86ICd0aWRlLWdhcC0wJyxcbiAgICBRVUFSVEVSOiAndGlkZS1nYXAtMS80JyxcbiAgICBIQUxGOiAndGlkZS1nYXAtMS8yJyxcbiAgICBPTkU6ICd0aWRlLWdhcC0xJyxcbiAgICBUV086ICd0aWRlLWdhcC0yJyxcbiAgICBGT1VSOiAndGlkZS1nYXAtNCcsXG4gIH0sXG4gIEdSSUQ6IHtcbiAgICBFTkQ6IHtcbiAgICAgIE9ORTogJ3RpZGUtZW5kLTEnLFxuICAgICAgVFdPOiAndGlkZS1lbmQtMicsXG4gICAgICBUSFJFRTogJ3RpZGUtZW5kLTMnLFxuICAgICAgRk9VUjogJ3RpZGUtZW5kLTQnLFxuICAgICAgRklWRTogJ3RpZGUtZW5kLTUnLFxuICAgICAgU0lYOiAndGlkZS1lbmQtNicsXG4gICAgICBTRVZFTjogJ3RpZGUtZW5kLTcnLFxuICAgICAgRUlHSFQ6ICd0aWRlLWVuZC04JyxcbiAgICAgIE5JTkU6ICd0aWRlLWVuZC05JyxcbiAgICAgIFRFTjogJ3RpZGUtZW5kLTEwJyxcbiAgICAgIEVMRVZFTjogJ3RpZGUtZW5kLTExJyxcbiAgICAgIFRXRUxWRTogJ3RpZGUtZW5kLTEyJyxcbiAgICAgIFRISVJURUVOOiAndGlkZS1lbmQtMTMnLFxuICAgIH0sXG4gICAgRkxVSUQ6ICd0aWRlLWZsdWlkJyxcbiAgICBJVEVNOiAndGlkZS1ncmlkLWl0ZW0nLFxuICAgIExBWU9VVDogJ3RpZGUtZ3JpZC1sYXlvdXQnLFxuICAgIFNUQVJUOiB7XG4gICAgICBaRVJPOiAndGlkZS1zdGFydC0wJyxcbiAgICAgIE9ORTogJ3RpZGUtc3RhcnQtMScsXG4gICAgICBUV086ICd0aWRlLXN0YXJ0LTInLFxuICAgICAgVEhSRUU6ICd0aWRlLXN0YXJ0LTMnLFxuICAgICAgRk9VUjogJ3RpZGUtc3RhcnQtNCcsXG4gICAgICBGSVZFOiAndGlkZS1zdGFydC01JyxcbiAgICAgIFNJWDogJ3RpZGUtc3RhcnQtNicsXG4gICAgICBTRVZFTjogJ3RpZGUtc3RhcnQtNycsXG4gICAgICBFSUdIVDogJ3RpZGUtc3RhcnQtOCcsXG4gICAgICBOSU5FOiAndGlkZS1zdGFydC05JyxcbiAgICAgIFRFTjogJ3RpZGUtc3RhcnQtMTAnLFxuICAgICAgRUxFVkVOOiAndGlkZS1zdGFydC0xMScsXG4gICAgICBUV0VMVkU6ICd0aWRlLXN0YXJ0LTEyJyxcbiAgICB9LFxuICAgIFhMOiAndGlkZS1ncmlkLXhsJyxcbiAgfSxcbiAgSEVJR0hUOiB7XG4gICAgQVVUTzogJ3RpZGUtaGVpZ2h0LWF1dG8nLFxuICAgIFpFUk86ICd0aWRlLWhlaWdodC0wJyxcbiAgICBGVUxMOiAndGlkZS1oZWlnaHQtZnVsbCcsXG4gICAgTUFYX0ZVTEw6ICd0aWRlLW1heC1oZWlnaHQtZnVsbCcsXG4gIH0sXG4gIElTT0xBVElPTjoge1xuICAgIElTT0xBVEU6ICd0aWRlLWlzb2xhdGUnLFxuICB9LFxuICBMSVNUX0JVTExFVFM6IHtcbiAgICBPRkY6ICd0aWRlLWxpc3Qtbm9uZScsXG4gIH0sXG4gIE1BUkdJTjoge1xuICAgIEJPVFRPTToge1xuICAgICAgQVVUTzogJ3RpZGUtbWFyZ2luLWJvdHRvbS1hdXRvJyxcbiAgICAgIFpFUk86ICd0aWRlLW1hcmdpbi1ib3R0b20tMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1tYXJnaW4tYm90dG9tLTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1tYXJnaW4tYm90dG9tLTEvMicsXG4gICAgICBPTkU6ICd0aWRlLW1hcmdpbi1ib3R0b20tMScsXG4gICAgICBUV086ICd0aWRlLW1hcmdpbi1ib3R0b20tMicsXG4gICAgICBGT1VSOiAndGlkZS1tYXJnaW4tYm90dG9tLTQnLFxuICAgIH0sXG4gICAgRlVMTDoge1xuICAgICAgWkVSTzogJ3RpZGUtbWFyZ2luLTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtbWFyZ2luLTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1tYXJnaW4tMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtbWFyZ2luLTEnLFxuICAgICAgVFdPOiAndGlkZS1tYXJnaW4tMicsXG4gICAgICBGT1VSOiAndGlkZS1tYXJnaW4tNCcsXG4gICAgfSxcbiAgICBMRUZUOiB7XG4gICAgICBBVVRPOiAndGlkZS1tYXJnaW4tbGVmdC1hdXRvJyxcbiAgICAgIFpFUk86ICd0aWRlLW1hcmdpbi1sZWZ0LTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtbWFyZ2luLWxlZnQtMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLW1hcmdpbi1sZWZ0LTEvMicsXG4gICAgICBPTkU6ICd0aWRlLW1hcmdpbi1sZWZ0LTEnLFxuICAgICAgVFdPOiAndGlkZS1tYXJnaW4tbGVmdC0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLW1hcmdpbi1sZWZ0LTQnLFxuICAgIH0sXG4gICAgUklHSFQ6IHtcbiAgICAgIEFVVE86ICd0aWRlLW1hcmdpbi1yaWdodC1hdXRvJyxcbiAgICAgIFpFUk86ICd0aWRlLW1hcmdpbi1yaWdodC0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLW1hcmdpbi1yaWdodC0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtbWFyZ2luLXJpZ2h0LTEvMicsXG4gICAgICBPTkU6ICd0aWRlLW1hcmdpbi1yaWdodC0xJyxcbiAgICAgIFRXTzogJ3RpZGUtbWFyZ2luLXJpZ2h0LTInLFxuICAgICAgRk9VUjogJ3RpZGUtbWFyZ2luLXJpZ2h0LTQnLFxuICAgIH0sXG4gICAgVE9QOiB7XG4gICAgICBBVVRPOiAndGlkZS1tYXJnaW4tdG9wLWF1dG8nLFxuICAgICAgWkVSTzogJ3RpZGUtbWFyZ2luLXRvcC0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLW1hcmdpbi10b3AtMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLW1hcmdpbi10b3AtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtbWFyZ2luLXRvcC0xJyxcbiAgICAgIFRXTzogJ3RpZGUtbWFyZ2luLXRvcC0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLW1hcmdpbi10b3AtNCcsXG4gICAgfSxcbiAgICBYOiB7XG4gICAgICBBVVRPOiAndGlkZS1tYXJnaW4teC1hdXRvJyxcbiAgICAgIFpFUk86ICd0aWRlLW1hcmdpbi14LTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtbWFyZ2luLXgtMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLW1hcmdpbi14LTEvMicsXG4gICAgICBPTkU6ICd0aWRlLW1hcmdpbi14LTEnLFxuICAgICAgVFdPOiAndGlkZS1tYXJnaW4teC0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLW1hcmdpbi14LTQnLFxuICAgIH0sXG4gICAgWToge1xuICAgICAgWkVSTzogJ3RpZGUtbWFyZ2luLXktMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1tYXJnaW4teS0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtbWFyZ2luLXktMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtbWFyZ2luLXktMScsXG4gICAgICBUV086ICd0aWRlLW1hcmdpbi15LTInLFxuICAgICAgRk9VUjogJ3RpZGUtbWFyZ2luLXktNCcsXG4gICAgfSxcbiAgfSxcbiAgT0JKRUNUOiB7XG4gICAgQ0VOVEVSOiAndGlkZS1vYmplY3QtY2VudGVyJyxcbiAgICBDT05UQUlOOiAndGlkZS1vYmplY3QtY29udGFpbicsXG4gICAgQ09WRVI6ICd0aWRlLW9iamVjdC1jb3ZlcicsXG4gICAgU0NBTEVfRE9XTjogJ3RpZGUtb2JqZWN0LXNjYWxlLWRvd24nLFxuICB9LFxuICBPUEFDSVRZOiB7XG4gICAgT0ZGOiAndGlkZS1vcGFjaXR5LW5vbmUnLFxuICAgIE9OOiAndGlkZS1vcGFjaXR5JyxcbiAgfSxcbiAgT1ZFUkZMT1c6IHtcbiAgICBYOiB7XG4gICAgICBBVVRPOiAndGlkZS14LWF1dG8nLFxuICAgICAgSElEREVOOiAndGlkZS14LWhpZGRlbicsXG4gICAgICBTQ1JPTEw6ICd0aWRlLXgtc2Nyb2xsJyxcbiAgICB9LFxuICAgIFhZOiB7XG4gICAgICBBVVRPOiAndGlkZS14eS1hdXRvJyxcbiAgICAgIEhJRERFTjogJ3RpZGUteHktaGlkZGVuJyxcbiAgICB9LFxuICAgIFk6IHtcbiAgICAgIEFVVE86ICd0aWRlLXktYXV0bycsXG4gICAgICBISURERU46ICd0aWRlLXktaGlkZGVuJyxcbiAgICB9LFxuICB9LFxuICBQQURESU5HOiB7XG4gICAgQk9UVE9NOiB7XG4gICAgICBaRVJPOiAndGlkZS1wYWRkaW5nLWJvdHRvbS0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLXBhZGRpbmctYm90dG9tLTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1wYWRkaW5nLWJvdHRvbS0xLzInLFxuICAgICAgT05FOiAndGlkZS1wYWRkaW5nLWJvdHRvbS0xJyxcbiAgICAgIFRXTzogJ3RpZGUtcGFkZGluZy1ib3R0b20tMicsXG4gICAgICBGT1VSOiAndGlkZS1wYWRkaW5nLWJvdHRvbS00JyxcbiAgICB9LFxuICAgIEZVTEw6IHtcbiAgICAgIFpFUk86ICd0aWRlLXBhZGRpbmctMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1wYWRkaW5nLTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1wYWRkaW5nLTEvMicsXG4gICAgICBPTkU6ICd0aWRlLXBhZGRpbmctMScsXG4gICAgICBUV086ICd0aWRlLXBhZGRpbmctMicsXG4gICAgICBGT1VSOiAndGlkZS1wYWRkaW5nLTQnLFxuICAgIH0sXG4gICAgTEVGVDoge1xuICAgICAgWkVSTzogJ3RpZGUtcGFkZGluZy1sZWZ0LTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtcGFkZGluZy1sZWZ0LTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1wYWRkaW5nLWxlZnQtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtcGFkZGluZy1sZWZ0LTEnLFxuICAgICAgVFdPOiAndGlkZS1wYWRkaW5nLWxlZnQtMicsXG4gICAgICBGT1VSOiAndGlkZS1wYWRkaW5nLWxlZnQtNCcsXG4gICAgfSxcbiAgICBSSUdIVDoge1xuICAgICAgWkVSTzogJ3RpZGUtcGFkZGluZy1yaWdodC0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLXBhZGRpbmctcmlnaHQtMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLXBhZGRpbmctcmlnaHQtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtcGFkZGluZy1yaWdodC0xJyxcbiAgICAgIFRXTzogJ3RpZGUtcGFkZGluZy1yaWdodC0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLXBhZGRpbmctcmlnaHQtNCcsXG4gICAgfSxcbiAgICBUT1A6IHtcbiAgICAgIFpFUk86ICd0aWRlLXBhZGRpbmctdG9wLTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtcGFkZGluZy10b3AtMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLXBhZGRpbmctdG9wLTEvMicsXG4gICAgICBPTkU6ICd0aWRlLXBhZGRpbmctdG9wLTEnLFxuICAgICAgVFdPOiAndGlkZS1wYWRkaW5nLXRvcC0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLXBhZGRpbmctdG9wLTQnLFxuICAgIH0sXG4gICAgWDoge1xuICAgICAgWkVSTzogJ3RpZGUtcGFkZGluZy14LTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtcGFkZGluZy14LTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1wYWRkaW5nLXgtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtcGFkZGluZy14LTEnLFxuICAgICAgVFdPOiAndGlkZS1wYWRkaW5nLXgtMicsXG4gICAgICBGT1VSOiAndGlkZS1wYWRkaW5nLXgtNCcsXG4gICAgfSxcbiAgICBZOiB7XG4gICAgICBaRVJPOiAndGlkZS1wYWRkaW5nLXktMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1wYWRkaW5nLXktMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLXBhZGRpbmcteS0xLzInLFxuICAgICAgT05FOiAndGlkZS1wYWRkaW5nLXktMScsXG4gICAgICBUV086ICd0aWRlLXBhZGRpbmcteS0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLXBhZGRpbmcteS00JyxcbiAgICB9LFxuICB9LFxuICBQT0lOVEVSX0VWRU5UUzoge1xuICAgIE9GRjogJ3RpZGUtcG9pbnRlci1ldmVudHMtbm9uZScsXG4gICAgT046ICd0aWRlLXBvaW50ZXItZXZlbnRzJyxcbiAgfSxcbiAgUE9TSVRJT046IHtcbiAgICBBQlNPTFVURTogJ3RpZGUtcG9zaXRpb24tYWJzb2x1dGUnLFxuICAgIEZJWEVEOiAndGlkZS1wb3NpdGlvbi1maXhlZCcsXG4gICAgUkVMQVRJVkU6ICd0aWRlLXBvc2l0aW9uLXJlbGF0aXZlJyxcbiAgICBTVEFUSUM6ICd0aWRlLXBvc2l0aW9uLXN0YXRpYycsXG4gICAgU1RJQ0tZOiAndGlkZS1wb3NpdGlvbi1zdGlja3knLFxuICB9LFxuICBQT1NJVElPTklORzoge1xuICAgIEJPVFRPTTogJ3RpZGUtYm90dG9tLTAnLFxuICAgIExFRlQ6ICd0aWRlLWxlZnQtMCcsXG4gICAgUklHSFQ6ICd0aWRlLXJpZ2h0LTAnLFxuICAgIFRPUDogJ3RpZGUtdG9wLTAnLFxuICB9LFxuICBSQVRJTzoge1xuICAgIE9ORV9UT19PTkU6ICd0aWRlLXJhdGlvLTEvMScsXG4gICAgU0lYVEVFTl9UT19OSU5FOiAndGlkZS1yYXRpby0xNi85JyxcbiAgICBUSFJFRV9UT19UV086ICd0aWRlLXJhdGlvLTMvMicsXG4gIH0sXG4gIFNDUk9MTEJBUjoge1xuICAgIE9GRjogJ3RpZGUtc2Nyb2xsYmFyLW5vbmUnLFxuICB9LFxuICBTSEFET1c6IHtcbiAgICBJTklUSUFMOiAndGlkZS1zaGFkb3ctaW5pdGlhbCcsXG4gICAgQk9UVE9NOiAndGlkZS1zaGFkb3ctYm90dG9tJyxcbiAgICBUT1A6ICd0aWRlLXNoYWRvdy10b3AnLFxuICAgIFRFWFQ6ICd0aWRlLXNoYWRvdy10ZXh0JyxcbiAgfSxcbiAgU05BUDoge1xuICAgIE9OOiAndGlkZS1zY3JvbGwtc25hcCcsXG4gIH0sXG4gIFNOQVBfQUxJR046IHtcbiAgICBTVEFSVDogJ3RpZGUtc2Nyb2xsLXNuYXAtc3RhcnQnLFxuICB9LFxuICBURVhUX1RSQU5TRk9STToge1xuICAgIExPV0VSOiAndGlkZS10ZXh0LXRyYW5zZm9ybS1sb3dlcicsXG4gICAgTk9ORTogJ3RpZGUtdGV4dC10cmFuc2Zvcm0tbm9uZScsXG4gICAgVVBQRVI6ICd0aWRlLXRleHQtdHJhbnNmb3JtLXVwcGVyJyxcbiAgfSxcbiAgVU5ERVJMSU5FOiB7XG4gICAgSE9WRVI6ICd0aWRlLXVuZGVybGluZS1ob3ZlcicsXG4gICAgT0ZGOiAndGlkZS11bmRlcmxpbmUtbm9uZScsXG4gICAgT046ICd0aWRlLXVuZGVybGluZScsXG4gIH0sXG4gIFZJU0lCSUxJVFk6IHtcbiAgICBPRkY6ICd0aWRlLXZpc2libGUtbm9uZScsXG4gICAgT046ICd0aWRlLXZpc2libGUnLFxuICB9LFxuICBXSElURVNQQUNFX1dSQVA6IHtcbiAgICBPRkY6ICd0aWRlLXdoaXRlc3BhY2Utbm93cmFwJyxcbiAgfSxcbiAgV0lEVEg6IHtcbiAgICBBVVRPOiAndGlkZS13aWR0aC1hdXRvJyxcbiAgICBaRVJPOiAndGlkZS13aWR0aC0wJyxcbiAgICBGVUxMOiAndGlkZS13aWR0aC1mdWxsJyxcbiAgICBNQVhfRlVMTDogJ3RpZGUtbWF4LXdpZHRoLWZ1bGwnLFxuICB9LFxuICBaX0lOREVYOiB7XG4gICAgSU5JVElBTDogJ3RpZGUtei1pbmRleC1pbml0aWFsJyxcbiAgICBPTkU6ICd0aWRlLXotaW5kZXgtMScsXG4gIH0sXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBDc3NVdGlsaXR5ID0gKHR5cGVvZiBDU1MpW2tleW9mIHR5cGVvZiBDU1NdO1xuXG5leHBvcnQgY29uc3QgY3NzU29ydE9yZGVyID0gW1xuICBDU1MuRElTUExBWS5CTE9DSyxcbiAgQ1NTLkRJU1BMQVkuQ09OVEVOVFMsXG4gIENTUy5ESVNQTEFZLkZMRVgsXG4gIENTUy5ESVNQTEFZLkdSSUQsXG4gIENTUy5ESVNQTEFZLk5PTkUsXG4gIENTUy5ESVNQTEFZLklOSVRJQUwsXG4gIENTUy5ESVNQTEFZLklOTElORSxcbiAgQ1NTLkRJU1BMQVkuSU5MSU5FX0JMT0NLLFxuICBDU1MuRElTUExBWS5JTkxJTkVfRkxFWCxcbiAgQ1NTLkFYSVMxLkFST1VORCxcbiAgQ1NTLkFYSVMxLkJFVFdFRU4sXG4gIENTUy5BWElTMS5DRU5URVIsXG4gIENTUy5BWElTMS5FTkQsXG4gIENTUy5BWElTMS5TVEFSVCxcbiAgQ1NTLkFYSVMyLkFST1VORCxcbiAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgQ1NTLkFYSVMyLkVORCxcbiAgQ1NTLkFYSVMyLlNUQVJULFxuICBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLFxuICBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OX1JFVkVSU0UsXG4gIENTUy5GTEVYLkRJUkVDVElPTi5ST1csXG4gIENTUy5GTEVYLkRJUkVDVElPTi5ST1dfUkVWRVJTRSxcbiAgQ1NTLkdBUC5PTkUsXG4gIENTUy5HQVAuSEFMRixcbiAgQ1NTLkdBUC5RVUFSVEVSLFxuICBDU1MuR0FQLlRXTyxcbiAgQ1NTLkdBUC5GT1VSLFxuICBDU1MuRkxFWC5CQVNJUy5aRVJPLFxuICBDU1MuRkxFWC5HUk9XLk9OLFxuICBDU1MuRkxFWC5HUk9XLk9GRixcbiAgQ1NTLkZMRVguU0hSSU5LLk9OLFxuICBDU1MuRkxFWC5TSFJJTksuT0ZGLFxuICBDU1MuRkxFWC5XUkFQLFxuICBDU1MuUE9TSVRJT04uQUJTT0xVVEUsXG4gIENTUy5QT1NJVElPTi5GSVhFRCxcbiAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICBDU1MuUE9TSVRJT04uU1RJQ0tZLFxuICBDU1MuUE9TSVRJT05JTkcuVE9QLFxuICBDU1MuUE9TSVRJT05JTkcuUklHSFQsXG4gIENTUy5QT1NJVElPTklORy5CT1RUT00sXG4gIENTUy5QT1NJVElPTklORy5MRUZULFxuICBDU1MuQk9YX1NJWklORy5CT1JERVJfQk9YLFxuICBDU1MuQk9YX1NJWklORy5DT05URU5UX0JPWCxcbiAgQ1NTLk1BUkdJTi5GVUxMLlpFUk8sXG4gIENTUy5NQVJHSU4uRlVMTC5PTkUsXG4gIENTUy5NQVJHSU4uRlVMTC5IQUxGLFxuICBDU1MuTUFSR0lOLkZVTEwuUVVBUlRFUixcbiAgQ1NTLk1BUkdJTi5GVUxMLlRXTyxcbiAgQ1NTLk1BUkdJTi5GVUxMLkZPVVIsXG4gIENTUy5NQVJHSU4uWS5aRVJPLFxuICBDU1MuTUFSR0lOLlkuT05FLFxuICBDU1MuTUFSR0lOLlkuSEFMRixcbiAgQ1NTLk1BUkdJTi5ZLlFVQVJURVIsXG4gIENTUy5NQVJHSU4uWS5UV08sXG4gIENTUy5NQVJHSU4uWS5GT1VSLFxuICBDU1MuTUFSR0lOLlRPUC5aRVJPLFxuICBDU1MuTUFSR0lOLlRPUC5PTkUsXG4gIENTUy5NQVJHSU4uVE9QLkhBTEYsXG4gIENTUy5NQVJHSU4uVE9QLlFVQVJURVIsXG4gIENTUy5NQVJHSU4uVE9QLlRXTyxcbiAgQ1NTLk1BUkdJTi5UT1AuRk9VUixcbiAgQ1NTLk1BUkdJTi5YLlpFUk8sXG4gIENTUy5NQVJHSU4uWC5PTkUsXG4gIENTUy5NQVJHSU4uWC5IQUxGLFxuICBDU1MuTUFSR0lOLlguUVVBUlRFUixcbiAgQ1NTLk1BUkdJTi5YLlRXTyxcbiAgQ1NTLk1BUkdJTi5YLkZPVVIsXG4gIENTUy5NQVJHSU4uWC5BVVRPLFxuICBDU1MuTUFSR0lOLlJJR0hULlpFUk8sXG4gIENTUy5NQVJHSU4uUklHSFQuT05FLFxuICBDU1MuTUFSR0lOLlJJR0hULkhBTEYsXG4gIENTUy5NQVJHSU4uUklHSFQuUVVBUlRFUixcbiAgQ1NTLk1BUkdJTi5SSUdIVC5UV08sXG4gIENTUy5NQVJHSU4uUklHSFQuRk9VUixcbiAgQ1NTLk1BUkdJTi5SSUdIVC5BVVRPLFxuICBDU1MuTUFSR0lOLkJPVFRPTS5aRVJPLFxuICBDU1MuTUFSR0lOLkJPVFRPTS5PTkUsXG4gIENTUy5NQVJHSU4uQk9UVE9NLkhBTEYsXG4gIENTUy5NQVJHSU4uQk9UVE9NLlFVQVJURVIsXG4gIENTUy5NQVJHSU4uQk9UVE9NLlRXTyxcbiAgQ1NTLk1BUkdJTi5CT1RUT00uRk9VUixcbiAgQ1NTLk1BUkdJTi5MRUZULlpFUk8sXG4gIENTUy5NQVJHSU4uTEVGVC5PTkUsXG4gIENTUy5NQVJHSU4uTEVGVC5IQUxGLFxuICBDU1MuTUFSR0lOLkxFRlQuUVVBUlRFUixcbiAgQ1NTLk1BUkdJTi5MRUZULlRXTyxcbiAgQ1NTLk1BUkdJTi5MRUZULkZPVVIsXG4gIENTUy5NQVJHSU4uTEVGVC5BVVRPLFxuICBDU1MuQk9SREVSLkZVTEwuT05FLFxuICBDU1MuQk9SREVSLkZVTEwuVFdPLFxuICBDU1MuQk9SREVSLlRPUC5PTkUsXG4gIENTUy5CT1JERVIuVE9QLlRXTyxcbiAgQ1NTLkJPUkRFUi5SSUdIVC5PTkUsXG4gIENTUy5CT1JERVIuUklHSFQuVFdPLFxuICBDU1MuQk9SREVSLkJPVFRPTS5PTkUsXG4gIENTUy5CT1JERVIuQk9UVE9NLlRXTyxcbiAgQ1NTLkJPUkRFUi5MRUZULk9ORSxcbiAgQ1NTLkJPUkRFUi5MRUZULlRXTyxcbiAgQ1NTLkJPUkRFUi5SQURJVVMuT05FLFxuICBDU1MuQk9SREVSLlJBRElVUy5IQUxGLFxuICBDU1MuQk9SREVSLlJBRElVUy5RVUFSVEVSLFxuICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICBDU1MuUEFERElORy5GVUxMLlpFUk8sXG4gIENTUy5QQURESU5HLkZVTEwuT05FLFxuICBDU1MuUEFERElORy5GVUxMLkhBTEYsXG4gIENTUy5QQURESU5HLkZVTEwuUVVBUlRFUixcbiAgQ1NTLlBBRERJTkcuRlVMTC5UV08sXG4gIENTUy5QQURESU5HLkZVTEwuRk9VUixcbiAgQ1NTLlBBRERJTkcuWS5aRVJPLFxuICBDU1MuUEFERElORy5ZLk9ORSxcbiAgQ1NTLlBBRERJTkcuWS5IQUxGLFxuICBDU1MuUEFERElORy5ZLlFVQVJURVIsXG4gIENTUy5QQURESU5HLlkuVFdPLFxuICBDU1MuUEFERElORy5ZLkZPVVIsXG4gIENTUy5QQURESU5HLlRPUC5aRVJPLFxuICBDU1MuUEFERElORy5UT1AuT05FLFxuICBDU1MuUEFERElORy5UT1AuSEFMRixcbiAgQ1NTLlBBRERJTkcuVE9QLlFVQVJURVIsXG4gIENTUy5QQURESU5HLlRPUC5UV08sXG4gIENTUy5QQURESU5HLlRPUC5GT1VSLFxuICBDU1MuUEFERElORy5YLlpFUk8sXG4gIENTUy5QQURESU5HLlguT05FLFxuICBDU1MuUEFERElORy5YLkhBTEYsXG4gIENTUy5QQURESU5HLlguUVVBUlRFUixcbiAgQ1NTLlBBRERJTkcuWC5UV08sXG4gIENTUy5QQURESU5HLlguRk9VUixcbiAgQ1NTLlBBRERJTkcuUklHSFQuWkVSTyxcbiAgQ1NTLlBBRERJTkcuUklHSFQuT05FLFxuICBDU1MuUEFERElORy5SSUdIVC5IQUxGLFxuICBDU1MuUEFERElORy5SSUdIVC5RVUFSVEVSLFxuICBDU1MuUEFERElORy5SSUdIVC5UV08sXG4gIENTUy5QQURESU5HLlJJR0hULkZPVVIsXG4gIENTUy5QQURESU5HLkJPVFRPTS5aRVJPLFxuICBDU1MuUEFERElORy5CT1RUT00uT05FLFxuICBDU1MuUEFERElORy5CT1RUT00uSEFMRixcbiAgQ1NTLlBBRERJTkcuQk9UVE9NLlFVQVJURVIsXG4gIENTUy5QQURESU5HLkJPVFRPTS5UV08sXG4gIENTUy5QQURESU5HLkJPVFRPTS5GT1VSLFxuICBDU1MuUEFERElORy5MRUZULlpFUk8sXG4gIENTUy5QQURESU5HLkxFRlQuT05FLFxuICBDU1MuUEFERElORy5MRUZULkhBTEYsXG4gIENTUy5QQURESU5HLkxFRlQuUVVBUlRFUixcbiAgQ1NTLlBBRERJTkcuTEVGVC5UV08sXG4gIENTUy5QQURESU5HLkxFRlQuRk9VUixcbiAgQ1NTLldJRFRILk1BWF9GVUxMLFxuICBDU1MuV0lEVEguWkVSTyxcbiAgQ1NTLldJRFRILkZVTEwsXG4gIENTUy5IRUlHSFQuWkVSTyxcbiAgQ1NTLkhFSUdIVC5GVUxMLFxuICBDU1MuQUxJR04uWS5NSURETEUsXG4gIENTUy5CUkVBS19XT1JELFxuICBDU1MuQ1VSU09SLk5PVF9BTExPV0VELFxuICBDU1MuQ1VSU09SLlBPSU5URVIsXG4gIENTUy5DVVJTT1IuVEVYVCxcbiAgQ1NTLkZPTlQuU0laRS5UV0VMVkUsXG4gIENTUy5GT05ULlNJWkUuRk9VUlRFRU4sXG4gIENTUy5GT05ULlNJWkUuU0lYVEVFTixcbiAgQ1NTLkZPTlQuU0laRS5UV0VOVFksXG4gIENTUy5GT05ULlNJWkUuVFdFTlRZX0ZPVVIsXG4gIENTUy5GT05ULlNJWkUuVEhJUlRZX1RXTyxcbiAgQ1NTLkZPTlQuV0VJR0hULkZPVVJfSFVORFJFRCxcbiAgQ1NTLkZPTlQuV0VJR0hULkZJVkVfSFVORFJFRCxcbiAgQ1NTLkZPTlQuV0VJR0hULlNJWF9IVU5EUkVELFxuICBDU1MuRk9OVC5XRUlHSFQuU0VWRU5fSFVORFJFRCxcbiAgQ1NTLkxJU1RfQlVMTEVUUy5PRkYsXG4gIENTUy5PQkpFQ1QuQ0VOVEVSLFxuICBDU1MuT0JKRUNULkNPTlRBSU4sXG4gIENTUy5PQkpFQ1QuQ09WRVIsXG4gIENTUy5PQkpFQ1QuU0NBTEVfRE9XTixcbiAgQ1NTLlBPSU5URVJfRVZFTlRTLk9OLFxuICBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGLFxuICBDU1MuU0NST0xMQkFSLk9GRixcbiAgQ1NTLlNIQURPVy5CT1RUT00sXG4gIENTUy5TSEFET1cuVE9QLFxuICBDU1MuU05BUC5PTixcbiAgQ1NTLlNOQVBfQUxJR04uU1RBUlQsXG4gIENTUy5BTElHTi5YLkxFRlQsXG4gIENTUy5BTElHTi5YLkNFTlRFUixcbiAgQ1NTLkFMSUdOLlguUklHSFQsXG4gIENTUy5URVhUX1RSQU5TRk9STS5MT1dFUixcbiAgQ1NTLlRFWFRfVFJBTlNGT1JNLk5PTkUsXG4gIENTUy5URVhUX1RSQU5TRk9STS5VUFBFUixcbiAgQ1NTLlVOREVSTElORS5IT1ZFUixcbiAgQ1NTLlVOREVSTElORS5PRkYsXG4gIENTUy5VTkRFUkxJTkUuT04sXG4gIENTUy5WSVNJQklMSVRZLk9OLFxuICBDU1MuVklTSUJJTElUWS5PRkYsXG4gIENTUy5XSElURVNQQUNFX1dSQVAuT0ZGLFxuICBDU1MuT1ZFUkZMT1cuWFkuQVVUTyxcbiAgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTixcbiAgQ1NTLk9WRVJGTE9XLlguQVVUTyxcbiAgQ1NTLk9WRVJGTE9XLlguSElEREVOLFxuICBDU1MuT1ZFUkZMT1cuWC5TQ1JPTEwsXG4gIENTUy5PVkVSRkxPVy5ZLkFVVE8sXG4gIENTUy5PVkVSRkxPVy5ZLkhJRERFTixcbiAgQ1NTLlpfSU5ERVguT05FLFxuXSBhcyBjb25zdDtcbiIsImV4cG9ydCBjb25zdCBSRUFMTSA9IHtcbiAgQUVSTzogJ2Flcm8nLFxuICBBVFY6ICdhdHYnLFxuICBCT0FUTUFSVDogJ2JvYXRtYXJ0JyxcbiAgQ1lDTEU6ICdjeWNsZScsXG4gIEVRVUlQTUVOVDogJ2VxdWlwbWVudCcsXG4gIFBXQzogJ3B3YycsXG4gIFJWOiAncnYnLFxuICBTTk9XOiAnc25vdycsXG4gIFRSVUNLOiAndHJ1Y2snLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgUmVhbG1LZXkgPSBrZXlvZiB0eXBlb2YgUkVBTE07XG5leHBvcnQgdHlwZSBSZWFsbSA9ICh0eXBlb2YgUkVBTE0pW1JlYWxtS2V5XTtcbiIsImV4cG9ydCBjb25zdCBTSVpFID0ge1xuICBMQVJHRTogJ2xhcmdlJyxcbiAgU01BTEw6ICdzbWFsbCcsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBTaXplID0gKHR5cGVvZiBTSVpFKVtrZXlvZiB0eXBlb2YgU0laRV07XG5cbmV4cG9ydCBjb25zdCBTSVpFX0JVVFRPTiA9IHtcbiAgTEFSR0U6ICdsYXJnZScsXG4gIFNNQUxMOiAnc21hbGwnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgU2l6ZUJ1dHRvbiA9ICh0eXBlb2YgU0laRSlba2V5b2YgdHlwZW9mIFNJWkVdO1xuIiwiY29uc3QgY2FwaXRhbGl6ZUZpcnN0ID0gKHN0cmluZzogc3RyaW5nKSA9PiB7XG4gIHJldHVybiBzdHJpbmcuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBzdHJpbmcuc2xpY2UoMSk7XG59O1xuXG5jb25zdCBmb3JtYXRDYW1lbENhc2UgPSAoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIHJldHVybiBpbnB1dCAmJiB0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnXG4gICAgPyBpbnB1dFxuICAgICAgICAucmVwbGFjZSgvXltcXHNfLV0vLCAnJylcbiAgICAgICAgLnJlcGxhY2UoLyhbYS16XXsxfSkoW0EtWl17MX0pL2csICckMSAkMicpXG4gICAgICAgIC5yZXBsYWNlKC9bXFxzXy1dL2csICcgJylcbiAgICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgICAgLnNwbGl0KCcgJylcbiAgICAgICAgLm1hcCgod29yZCwgaW5kZXgpID0+IChpbmRleCA9PT0gMCA/IHdvcmQgOiB3b3JkLnNsaWNlKDAsIDEpLnRvVXBwZXJDYXNlKCkgKyB3b3JkLnNsaWNlKDEpKSlcbiAgICAgICAgLmpvaW4oJycpXG4gICAgOiBpbnB1dDtcbn07XG5cbmNvbnN0IGZvcm1hdEtlYmFiQ2FzZSA9IChpbnB1dDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgcmV0dXJuIGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZydcbiAgICA/IGlucHV0XG4gICAgICAgIC5yZXBsYWNlKC8oW2Etel17MX0pKFtBLVpdezF9KS9nLCAnJDEgJDInKVxuICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAucmVwbGFjZSgvW1xcc18tXS9nLCAnLScpXG4gICAgOiBpbnB1dDtcbn07XG5cbmNvbnN0IGZvcm1hdExhYmVsID0gKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgY29uc3QgbGFiZWxNYXA6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7XG4gICAgZmFsc2U6ICdObycsXG4gICAgdHJ1ZTogJ1llcycsXG4gIH07XG4gIHJldHVybiBPYmplY3QuaGFzT3duKGxhYmVsTWFwLCB2YWx1ZSkgPyBsYWJlbE1hcFt2YWx1ZV0gOiB2YWx1ZTtcbn07XG5cbmNvbnN0IGZvcm1hdE51bWJlciA9IChpbnB1dDogbnVtYmVyIHwgc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgbGV0IG91dHB1dCA9IGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ251bWJlcicgPyBuZXcgSW50bC5OdW1iZXJGb3JtYXQoKS5mb3JtYXQoaW5wdXQpIDogU3RyaW5nKGlucHV0IHx8ICcnKTtcbiAgbGV0IGRpZ2l0cyA9IG91dHB1dDtcblxuICBpZiAoaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJykge1xuICAgIGRpZ2l0cyA9IGRpZ2l0cy5yZXBsYWNlKC9cXEQvZywgJycpO1xuICAgIGlmIChOdW1iZXIoZGlnaXRzKSkge1xuICAgICAgb3V0cHV0ID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KCkuZm9ybWF0KE51bWJlcihkaWdpdHMpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0cHV0ID0gJzAnO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBvdXRwdXQ7XG59O1xuXG5jb25zdCBmb3JtYXRQYXNjYWxDYXNlID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJ1xuICAgID8gaW5wdXRcbiAgICAgICAgLnJlcGxhY2UoLyhbYS16XXsxfSkoW0EtWl17MX0pL2csICckMSAkMicpXG4gICAgICAgIC5yZXBsYWNlKC9bXFxzXy1dL2csICcgJylcbiAgICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgICAgLnNwbGl0KCcgJylcbiAgICAgICAgLm1hcCgod29yZCkgPT4gd29yZC5zbGljZSgwLCAxKS50b1VwcGVyQ2FzZSgpICsgd29yZC5zbGljZSgxKSlcbiAgICAgICAgLmpvaW4oJycpXG4gICAgOiBpbnB1dDtcbn07XG5cbmNvbnN0IGZvcm1hdFBob25lID0gKGlucHV0OiBudW1iZXIgfCBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBsZXQgb3V0cHV0ID0gaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnbnVtYmVyJyA/IFN0cmluZyhpbnB1dCkgOiBTdHJpbmcoaW5wdXQgfHwgJycpO1xuICBsZXQgZGlnaXRzID0gb3V0cHV0O1xuICBkaWdpdHMgPSBkaWdpdHMucmVwbGFjZSgvXFxEL2csICcnKTtcblxuICBzd2l0Y2ggKGRpZ2l0cy5sZW5ndGgpIHtcbiAgICBjYXNlIDc6XG4gICAgICBvdXRwdXQgPSBgJHtkaWdpdHMuc2xpY2UoMCwgMyl9LSR7ZGlnaXRzLnNsaWNlKDMpfWA7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDEwOlxuICAgICAgb3V0cHV0ID0gYCR7ZGlnaXRzLnNsaWNlKDAsIDMpfS0ke2RpZ2l0cy5zbGljZSgzLCA2KX0tJHtkaWdpdHMuc2xpY2UoNil9YDtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMTE6XG4gICAgICBvdXRwdXQgPSBgJHtkaWdpdHMuc2xpY2UoMCwgMSl9LSR7ZGlnaXRzLnNsaWNlKDEsIDQpfS0ke2RpZ2l0cy5zbGljZSg0LCA3KX0tJHtkaWdpdHMuc2xpY2UoNyl9YDtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBvdXRwdXQgPSBkaWdpdHM7XG4gICAgICBicmVhaztcbiAgfVxuXG4gIHJldHVybiBvdXRwdXQ7XG59O1xuXG5jb25zdCBmb3JtYXRQcmljZSA9IChpbnB1dDogbnVtYmVyIHwgc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgY29uc3Qgb3V0cHV0ID0gaW5wdXQgPyBmb3JtYXROdW1iZXIoaW5wdXQpIDogU3RyaW5nKGlucHV0IHx8ICcwJyk7XG4gIHJldHVybiBgJCR7b3V0cHV0fWA7XG59O1xuXG5jb25zdCBmb3JtYXRRdW90ZXMgPSAodmFsdWU6IHN0cmluZykgPT4ge1xuICBpZiAodmFsdWUuc3RhcnRzV2l0aCgnXCInKSAmJiB2YWx1ZS5lbmRzV2l0aCgnXCInKSkge1xuICAgIHJldHVybiB2YWx1ZS5zbGljZSgxLCAtMSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG59O1xuXG5jb25zdCBmb3JtYXRTZW50ZW5jZUNhc2UgPSAoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGxldCBzZW50ZW5jZUNhc2UgPSBpbnB1dDtcblxuICBpZiAoaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJykge1xuICAgIGNvbnN0IGxvd2VyQ2FzZSA9IGlucHV0XG4gICAgICAucmVwbGFjZSgvKFthLXpdezF9KShbQS1aXXsxfSkvZywgJyQxICQyJylcbiAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAucmVwbGFjZSgvW1xcc18tXS9nLCAnICcpO1xuXG4gICAgc2VudGVuY2VDYXNlID0gbG93ZXJDYXNlLnNsaWNlKDAsIDEpLnRvVXBwZXJDYXNlKCkgKyBsb3dlckNhc2Uuc2xpY2UoMSk7XG4gIH1cblxuICByZXR1cm4gc2VudGVuY2VDYXNlO1xufTtcblxuY29uc3QgZm9ybWF0U25ha2VDYXNlID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJ1xuICAgID8gaW5wdXRcbiAgICAgICAgLnJlcGxhY2UoLyhbYS16XXsxfSkoW0EtWl17MX0pL2csICckMSAkMicpXG4gICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAgIC5yZXBsYWNlKC9bXFxzXy1dL2csICdfJylcbiAgICA6IGlucHV0O1xufTtcblxuY29uc3QgZm9ybWF0VGl0bGVDYXNlID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJ1xuICAgID8gaW5wdXRcbiAgICAgICAgLnJlcGxhY2UoLyhbYS16XXsxfSkoW0EtWl17MX0pL2csICckMSAkMicpXG4gICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAgIC5yZXBsYWNlKC9bXFxzXy1dL2csICcgJylcbiAgICAgICAgLnNwbGl0KCcgJylcbiAgICAgICAgLm1hcCgod29yZCkgPT4gd29yZC5zbGljZSgwLCAxKS50b1VwcGVyQ2FzZSgpICsgd29yZC5zbGljZSgxKSlcbiAgICAgICAgLmpvaW4oJyAnKVxuICAgIDogaW5wdXQ7XG59O1xuXG5jb25zdCBmb3JtYXRVcmxGcm9tUm9vdCA9ICh1cmw6IHN0cmluZykgPT4ge1xuICBjb25zdCB1cmxGb3JtYXR0ZWQgPSB1cmwuc3BsaXQoJy5jb20vJyk7XG5cbiAgcmV0dXJuIHVybEZvcm1hdHRlZC5sZW5ndGggPiAxID8gYC8ke3VybEZvcm1hdHRlZFsxXX1gIDogdXJsO1xufTtcblxuY29uc3QgZm9ybWF0V2VpZ2h0ID0gKGlucHV0OiBudW1iZXIgfCBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBvdXRwdXQgPSBpbnB1dCA/IGZvcm1hdE51bWJlcihpbnB1dCkgOiBTdHJpbmcoaW5wdXQgfHwgJzAnKTtcbiAgcmV0dXJuIGAke291dHB1dH0gbGJzYDtcbn07XG5cbmNvbnN0IGdldEFydGljbGUgPSAobm91bjogc3RyaW5nLCBpc1BsdXJhbCA9IGZhbHNlLCBpc0RlZmluaXRlID0gZmFsc2UpID0+IHtcbiAgY29uc3Qgdm93ZWxzID0gWydhJywgJ2UnLCAnaScsICdvJywgJ3UnXTtcbiAgY29uc3QgaXNWb3dlbExlYWRpbmcgPSB2b3dlbHMuaW5jbHVkZXMobm91bi5jaGFyQXQoMCkpO1xuXG4gIHJldHVybiBpc0RlZmluaXRlID8gJ3RoZScgOiBpc1BsdXJhbCA/ICdzb21lJyA6IGlzVm93ZWxMZWFkaW5nID8gJ2FuJyA6ICdhJztcbn07XG5cbmNvbnN0IHByaWNlVG9OdW1iZXIgPSAodmFsdWU6IHN0cmluZykgPT4ge1xuICBpZiAoTnVtYmVyLmlzTmFOKE51bWJlcih2YWx1ZSkpKSB7XG4gICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKCckJywgJycpO1xuICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgvLC9nLCAnJyk7XG4gIH1cbiAgcmV0dXJuIHBhcnNlSW50KHZhbHVlLCAxMCk7XG59O1xuXG5jb25zdCB1bmZvcm1hdFByaWNlID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBvdXRwdXQgPSBpbnB1dC5yZXBsYWNlKC9cXCQvZywgJycpLnJlcGxhY2UoLywvZywgJycpO1xuICByZXR1cm4gYCR7b3V0cHV0fWA7XG59O1xuXG5leHBvcnQge1xuICBjYXBpdGFsaXplRmlyc3QsXG4gIGZvcm1hdENhbWVsQ2FzZSxcbiAgZm9ybWF0S2ViYWJDYXNlLFxuICBmb3JtYXRMYWJlbCxcbiAgZm9ybWF0TnVtYmVyLFxuICBmb3JtYXRQYXNjYWxDYXNlLFxuICBmb3JtYXRQaG9uZSxcbiAgZm9ybWF0UHJpY2UsXG4gIGZvcm1hdFF1b3RlcyxcbiAgZm9ybWF0U2VudGVuY2VDYXNlLFxuICBmb3JtYXRTbmFrZUNhc2UsXG4gIGZvcm1hdFRpdGxlQ2FzZSxcbiAgZm9ybWF0VXJsRnJvbVJvb3QsXG4gIGZvcm1hdFdlaWdodCxcbiAgZ2V0QXJ0aWNsZSxcbiAgcHJpY2VUb051bWJlcixcbiAgdW5mb3JtYXRQcmljZSxcbn07XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBkZWZpbmVBc3luY0NvbXBvbmVudCwgbWFya1JhdywgcmVmLCB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IHsgUkVBTE0gfSBmcm9tICdAL3R5cGVzL1JlYWxtJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgZm9ybWF0UGFzY2FsQ2FzZSB9IGZyb20gJ0AvdXRpbGl0aWVzL2Zvcm1hdCc7XG5cbiAgaW1wb3J0IHR5cGUgeyBJY29uIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHR5cGUgeyBTaXplIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHR5cGUgeyBDb21wb25lbnQgfSBmcm9tICd2dWUnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgaWNvbjogSWNvbjtcbiAgICBzaXplPzogU2l6ZTtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIHNpemU6IFNJWkUuU01BTEwsXG4gIH0pO1xuXG4gIGNvbnN0IGlubmVyU1ZHID0gcmVmPENvbXBvbmVudD4oKTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBwcm9wcy5pY29uLFxuICAgIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGlkOiBzdHJpbmcgPSBwcm9wcy5pY29uO1xuICAgICAgY29uc3QgbmFtZSA9IGZvcm1hdFBhc2NhbENhc2UoaWQpO1xuICAgICAgY29uc3QgW3ByZWZpeF0gPSBpZC5zcGxpdCgnLScpO1xuICAgICAgY29uc3QgcmVhbG1Gb2xkZXIgPSBSRUFMTVtwcmVmaXg/LnRvVXBwZXJDYXNlKCkgYXMga2V5b2YgdHlwZW9mIFJFQUxNXTtcbiAgICAgIGNvbnN0IGNvbXBvbmVudCA9IGRlZmluZUFzeW5jQ29tcG9uZW50KCgpID0+IHtcbiAgICAgICAgaWYgKHJlYWxtRm9sZGVyKSB7XG4gICAgICAgICAgcmV0dXJuIGltcG9ydChgLi4vYXNzZXRzL3N2Zy9pY29ucy9yZWFsbS8ke3JlYWxtRm9sZGVyfS9JY29uJHtuYW1lfS5zdmc/Y29tcG9uZW50YCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaW1wb3J0KGAuLi9hc3NldHMvc3ZnL2ljb25zL0ljb24ke25hbWV9LnN2Zz9jb21wb25lbnRgKTtcbiAgICAgIH0pO1xuXG4gICAgICBpbm5lclNWRy52YWx1ZSA9IG1hcmtSYXcoY29tcG9uZW50KTtcbiAgICB9LFxuICAgIHsgaW1tZWRpYXRlOiB0cnVlIH1cbiAgKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXYgOmNsYXNzPVwiWyd0aWRlLWljb24nLCBwcm9wcy5zaXplXVwiPlxuICAgIDxDb21wb25lbnRcbiAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5CTE9DS11cIlxuICAgICAgOmRhdGEtaWNvbj1cImljb25cIlxuICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICA6aXM9XCJpbm5lclNWR1wiXG4gICAgICB2LWlmPVwiaW5uZXJTVkdcIlxuICAgIC8+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlPlxuICAudGlkZS1pY29uIHtcbiAgICB3aWR0aDogMS41cmVtO1xuICAgIGhlaWdodDogMS41cmVtO1xuICB9XG5cbiAgLnRpZGUtaWNvbi5zbWFsbCB7XG4gICAgd2lkdGg6IDEuMjVyZW07XG4gICAgaGVpZ2h0OiAxLjI1cmVtO1xuICB9XG5cbiAgLnRpZGUtaWNvbiBzdmcge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgfVxuPC9zdHlsZT5cbiIsImltcG9ydCB0eXBlIHsgUmVhbG1LZXkgfSBmcm9tICdAL3R5cGVzL1JlYWxtJztcblxuZXhwb3J0IGNvbnN0IElDT04gPSB7XG4gIEFDQ09VTlRfQkFMQU5DRTogJ2FjY291bnQtYmFsYW5jZScsXG4gIEFDVVRFOiAnYWN1dGUnLFxuICBBREQ6ICdhZGQnLFxuICBBSV9ERVNDUklQVElPTjogJ2FpLWRlc2NyaXB0aW9uJyxcbiAgQUxJR05fU1BBQ0VfRVZFTjogJ2FsaWduLXNwYWNlLWV2ZW4nLFxuICBBUFBMRV9QQVk6ICdhcHBsZS1wYXknLFxuICBBUlJPV19CQUNLOiAnYXJyb3ctYmFjaycsXG4gIEFSUk9XX0NZQ0xFOiAnYXJyb3ctY3ljbGUnLFxuICBBUlJPV19GT1JXQVJEOiAnYXJyb3ctZm9yd2FyZCcsXG4gIEFSUk9XX1JJR0hUOiAnYXJyb3ctcmlnaHQnLFxuICBBU1NJR05NRU5UOiAnYXNzaWdubWVudCcsXG4gIEFUVEFDSF9NT05FWTogJ2F0dGFjaC1tb25leScsXG4gIEFVVE9fUkVORVc6ICdhdXRvLXJlbmV3JyxcbiAgQVdBUkRfU1RBUjogJ2F3YXJkLXN0YXInLFxuICBCRUQ6ICdiZWQnLFxuICBCT0xUOiAnYm9sdCcsXG4gIEJPT0tNQVJLOiAnYm9va21hcmsnLFxuICBCVU5LSE9VU0U6ICdidW5raG91c2UnLFxuICBDQUxFTkRBUl9NT05USDogJ2NhbGVuZGFyLW1vbnRoJyxcbiAgQ0FMTDogJ2NhbGwnLFxuICBDQUxMX1FVQUxJVFk6ICdjYWxsLXF1YWxpdHknLFxuICBDQVJfUkVOVEFMOiAnY2FyLXJlbnRhbCcsXG4gIENIRUNLOiAnY2hlY2snLFxuICBDSEVWUk9OX0xFRlQ6ICdjaGV2cm9uLWxlZnQnLFxuICBDSEVWUk9OX1JJR0hUOiAnY2hldnJvbi1yaWdodCcsXG4gIENMRUFSOiAnY2xlYXInLFxuICBDTE9TRTogJ2Nsb3NlJyxcbiAgQ09OVFJBQ1Q6ICdjb250cmFjdCcsXG4gIENSQVNIOiAnY3Jhc2gnLFxuICBEQVNIQk9BUkRfQ1VTVE9NSVpFOiAnZGFzaGJvYXJkLWN1c3RvbWl6ZScsXG4gIERFTEVURTogJ2RlbGV0ZScsXG4gIERJQU1PTkQ6ICdkaWFtb25kJyxcbiAgRElSRUNUSU9OU19CT0FUOiAnZGlyZWN0aW9ucy1ib2F0JyxcbiAgRE9NQUlOOiAnZG9tYWluJyxcbiAgRFJBRlQ6ICdkcmFmdCcsXG4gIEVESVQ6ICdlZGl0JyxcbiAgRU5HSU5FOiAnZW5naW5lJyxcbiAgRU5HSU5FRVJJTkc6ICdlbmdpbmVlcmluZycsXG4gIEVSUk9SOiAnZXJyb3InLFxuICBFWFBBTkRfQ09OVEVOVDogJ2V4cGFuZC1jb250ZW50JyxcbiAgRVhQQU5EX0xFU1M6ICdleHBhbmQtbGVzcycsXG4gIEVYUEFORF9NT1JFOiAnZXhwYW5kLW1vcmUnLFxuICBGQUNFQk9PSzogJ2ZhY2Vib29rJyxcbiAgRkFWT1JJVEU6ICdmYXZvcml0ZScsXG4gIEZBVk9SSVRFX0ZJTExFRDogJ2Zhdm9yaXRlLWZpbGxlZCcsXG4gIEZMQUc6ICdmbGFnJyxcbiAgRk9STUFUX0JPTEQ6ICdmb3JtYXQtYm9sZCcsXG4gIEZPUk1BVF9JVEFMSUM6ICdmb3JtYXQtaXRhbGljJyxcbiAgRk9STUFUX0xJU1RfQlVMTEVURUQ6ICdmb3JtYXQtbGlzdC1idWxsZXRlZCcsXG4gIEZPUlVNOiAnZm9ydW0nLFxuICBHQVM6ICdnYXMnLFxuICBHQVZFTDogJ2dhdmVsJyxcbiAgR0VBUlM6ICdnZWFycycsXG4gIEdMT0JFX0xPQ0FUSU9OX1BJTjogJ2dsb2JlLWxvY2F0aW9uLXBpbicsXG4gIEdPT0dMRTogJ2dvb2dsZScsXG4gIEdPT0dMRV9QQVk6ICdnb29nbGUtcGF5JyxcbiAgR1JJRDogJ2dyaWQnLFxuICBIQU5EU0hBS0U6ICdoYW5kc2hha2UnLFxuICBIQU5EWU1BTjogJ2hhbmR5bWFuJyxcbiAgSEVJR0hUOiAnaGVpZ2h0JyxcbiAgSEVMUDogJ2hlbHAnLFxuICBJTkZPOiAnaW5mbycsXG4gIElORk9STUFUSU9OOiAnaW5mb3JtYXRpb24nLFxuICBJTlNFUlRfVEVYVDogJ2luc2VydC10ZXh0JyxcbiAgSU5TVEFHUkFNOiAnaW5zdGFncmFtJyxcbiAgSU9TX1NIQVJFOiAnaW9zLXNoYXJlJyxcbiAgTEFZT1VUOiAnbGF5b3V0JyxcbiAgTEVWRUxMSU5HX0pBQ0s6ICdsZXZlbGxpbmctamFjaycsXG4gIExJTktFRF9JTjogJ2xpbmtlZCBpbicsXG4gIExPQ0FMX1NISVBQSU5HOiAnbG9jYWwtc2hpcHBpbmcnLFxuICBMT0NLOiAnbG9jaycsXG4gIE1BSUw6ICdtYWlsJyxcbiAgTUVOVTogJ21lbnUnLFxuICBNT05FWV9CQUc6ICdtb25leS1iYWcnLFxuICBNT1JFX0hPUklaOiAnbW9yZS1ob3JpeicsXG4gIE5PVElGSUNBVElPTlM6ICdub3RpZmljYXRpb25zJyxcbiAgT0RPTUVURVI6ICdvZG9tZXRlcicsXG4gIE9QRU5fSU5fTkVXOiAnb3Blbi1pbi1uZXcnLFxuICBQQUxFVFRFOiAncGFsZXR0ZScsXG4gIFBBWVBBTDogJ3BheXBhbCcsXG4gIFBFUlNPTjogJ3BlcnNvbicsXG4gIFBFUlNPTl9TRUFSQ0g6ICdwZXJzb24tc2VhcmNoJyxcbiAgUEhPVE9fQ0FNRVJBOiAncGhvdG8tY2FtZXJhJyxcbiAgUElOVEVSRVNUOiAncGludGVyZXN0JyxcbiAgUExBWV9BUlJPVzogJ3BsYXktYXJyb3cnLFxuICBQT0xJQ1k6ICdwb2xpY3knLFxuICBQT1dFUjogJ3Bvd2VyJyxcbiAgUE9XRVJfT0ZGOiAncG93ZXItb2ZmJyxcbiAgUFJJT1JJVFlfSElHSDogJ3ByaW9yaXR5LWhpZ2gnLFxuICBSRU1PVkU6ICdyZW1vdmUnLFxuICBSRVFVRVNUX1FVT1RFOiAncmVxdWVzdC1xdW90ZScsXG4gIFJFU0VUX1dSRU5DSDogJ3Jlc2V0LXdyZW5jaCcsXG4gIFJPQUQ6ICdyb2FkJyxcbiAgUk9VTkRFRF9DT1JORVI6ICdyb3VuZGVkLWNvcm5lcicsXG4gIFJVTEVSOiAncnVsZXInLFxuICBTQUlMSU5HOiAnc2FpbGluZycsXG4gIFNDSE9PTDogJ3NjaG9vbCcsXG4gIFNFQVJDSDogJ3NlYXJjaCcsXG4gIFNFQVRJTkc6ICdzZWF0aW5nJyxcbiAgU0VMTDogJ3NlbGwnLFxuICBTRU5TT1JTOiAnc2Vuc29ycycsXG4gIFNFVFRJTkdTOiAnc2V0dGluZ3MnLFxuICBTSEFSRTogJ3NoYXJlJyxcbiAgU0hJRUxEX0NIRUNLOiAnc2hpZWxkLWNoZWNrJyxcbiAgU0hPUFBJTkdfQ0FSVDogJ3Nob3BwaW5nLWNhcnQnLFxuICBTTEVFUFM6ICdzbGVlcHMnLFxuICBTTVM6ICdzbXMnLFxuICBTTk9XRkxBS0U6ICdzbm93Zmxha2UnLFxuICBTVEFSOiAnc3RhcicsXG4gIFNVTU1BUklaRTogJ3N1bW1hcml6ZScsXG4gIFNXQVBfSE9SSVo6ICdzd2FwLWhvcml6JyxcbiAgU1dBUF9WRVJUOiAnc3dhcC12ZXJ0JyxcbiAgVEhSRUVfRF9ST1RBVElPTjogJ3RocmVlLWQtcm90YXRpb24nLFxuICBUSFVNQl9VUDogJ3RodW1iLXVwJyxcbiAgVFJFTkRJTkdfRE9XTjogJ3RyZW5kaW5nLWRvd24nLFxuICBUUk9QSFk6ICd0cm9waHknLFxuICBUVU5FOiAndHVuZScsXG4gIFRXSVRURVI6ICd0d2l0dGVyJyxcbiAgVU1CUkVMTEE6ICd1bWJyZWxsYScsXG4gIFZFUklGSUVEOiAndmVyaWZpZWQnLFxuICBWSURFT0NBTTogJ3ZpZGVvY2FtJyxcbiAgVklFV19JTl9BUjogJ3ZpZXctaW4tYXInLFxuICBWSVNJQklMSVRZOiAndmlzaWJpbGl0eScsXG4gIFZPTFVNRV9PRkY6ICd2b2x1bWUtb2ZmJyxcbiAgVk9MVU1FX09OOiAndm9sdW1lLW9uJyxcbiAgV0FSRUhPVVNFOiAnd2FyZWhvdXNlJyxcbiAgV0FSTklORzogJ3dhcm5pbmcnLFxuICBXQVRFUjogJ3dhdGVyJyxcbiAgV0VJR0hUOiAnd2VpZ2h0JyxcbiAgV0lEVEg6ICd3aWR0aCcsXG4gIFdPUktTUEFDRV9QUkVNSVVNOiAnd29ya3NwYWNlLXByZW1pdW0nLFxuICBXUkVOQ0g6ICd3cmVuY2gnLFxuICBZT1VUVUJFOiAneW91dHViZScsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgSUNPTl9SRUFMTSA9IHtcbiAgQVRWOiB7XG4gICAgQVRWOiAnYXR2LWF0dicsXG4gICAgRFVORV9CVUdHWTogJ2F0di1kdW5lLWJ1Z2d5JyxcbiAgICBHT0xGX0NBUlQ6ICdhdHYtZ29sZi1jYXJ0JyxcbiAgICBHT19LQVJUOiAnYXR2LWdvLWthcnQnLFxuICAgIFNBTkRfUkFJTDogJ2F0di1zYW5kLXJhaWwnLFxuICAgIFNJREVfQllfU0lERTogJ2F0di1zaWRlLWJ5LXNpZGUnLFxuICAgIFRSQUlMRVI6ICdhdHYtdHJhaWxlcicsXG4gIH0sXG4gIEJPQVRNQVJUOiB7XG4gICAgUFdDOiAnYm9hdG1hcnQtcHdjJyxcbiAgICBUUkFJTEVSOiAnYm9hdG1hcnQtdHJhaWxlcicsXG4gIH0sXG4gIFJWOiB7XG4gICAgQ0xBU1NfQTogJ3J2LWNsYXNzLWEnLFxuICAgIENMQVNTX0I6ICdydi1jbGFzcy1iJyxcbiAgICBDTEFTU19DOiAncnYtY2xhc3MtYycsXG4gICAgRklGVEhfV0hFRUw6ICdydi1maWZ0aC13aGVlbCcsXG4gICAgRklTSF9IT1VTRTogJ3J2LWZpc2gtaG91c2UnLFxuICAgIFBBUktfTU9ERUw6ICdydi1wYXJrLW1vZGVsJyxcbiAgICBQT1BfVVBfQ0FNUEVSOiAncnYtcG9wLXVwLWNhbXBlcicsXG4gICAgVFJBVkVMX1RSQUlMRVI6ICdydi10cmF2ZWwtdHJhaWxlcicsXG4gICAgVFJVQ0tfQ0FNUEVSOiAncnYtdHJ1Y2stY2FtcGVyJyxcbiAgfSxcbn0gYXMgY29uc3Q7XG5cbnR5cGUgUmVhbG1LZXlzV2l0aEljb25zID0gRXh0cmFjdDxSZWFsbUtleSwga2V5b2YgdHlwZW9mIElDT05fUkVBTE0+O1xudHlwZSBSZWFsbUljb24gPSB7XG4gIFtSZWFsbUtleSBpbiBSZWFsbUtleXNXaXRoSWNvbnNdOiAodHlwZW9mIElDT05fUkVBTE0pW1JlYWxtS2V5XVtrZXlvZiAodHlwZW9mIElDT05fUkVBTE0pW1JlYWxtS2V5XV07XG59W1JlYWxtS2V5c1dpdGhJY29uc107XG5cbmV4cG9ydCB0eXBlIEdsb2JhbEljb24gPSAodHlwZW9mIElDT04pW2tleW9mIHR5cGVvZiBJQ09OXTtcbmV4cG9ydCB0eXBlIEljb24gPSBHbG9iYWxJY29uIHwgUmVhbG1JY29uO1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IFRpZGVEaXZpZGVyIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlRGl2aWRlci52dWUnO1xuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIGNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0cyhbJ3RvZ2dsZSddKTtcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGhhc0JvdHRvbURpdmlkZXI/OiBib29sZWFuO1xuICAgIGhhc1RvcERpdmlkZXI/OiBib29sZWFuO1xuICAgIGlzRXhwYW5kZWQ/OiBib29sZWFuO1xuICAgIGlzT3B0aW9uYWw/OiBib29sZWFuO1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBoYXNCb3R0b21EaXZpZGVyOiBmYWxzZSxcbiAgICBoYXNUb3BEaXZpZGVyOiBmYWxzZSxcbiAgICBpc0V4cGFuZGVkOiBmYWxzZSxcbiAgICBpc09wdGlvbmFsOiBmYWxzZSxcbiAgICBsYWJlbDogJycsXG4gIH0pO1xuXG4gIGNvbnN0IGhhbmRsZVRvZ2dsZUNsaWNrID0gKCkgPT4ge1xuICAgIGVtaXQoJ3RvZ2dsZScpO1xuICB9O1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cInRpZGUtYWNjb3JkaW9uLWl0ZW1cIj5cbiAgICA8VGlkZURpdmlkZXIgdi1pZj1cInByb3BzLmhhc1RvcERpdmlkZXJcIiAvPlxuXG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiWyd0aWRlLWFjY29yZGlvbi1oZWFkJywgQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMxLkJFVFdFRU4sIENTUy5QQURESU5HLlkuSEFMRiwgQ1NTLkNVUlNPUi5QT0lOVEVSXVwiXG4gICAgICBAY2xpY2s9XCJoYW5kbGVUb2dnbGVDbGlja1wiXG4gICAgPlxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5IQUxGLCBDU1MuRk9OVC5ST0xFLkxBQkVMXzFfU0VNSUJPTERdXCI+XG4gICAgICAgIDxzcGFuPnt7IHByb3BzLmxhYmVsIH19PC9zcGFuPlxuXG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF1cIlxuICAgICAgICAgIHYtaWY9XCJwcm9wcy5pc09wdGlvbmFsXCJcbiAgICAgICAgPlxuICAgICAgICAgIChvcHRpb25hbClcbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6aWNvbj1cImlzRXhwYW5kZWQgPyBJQ09OLkVYUEFORF9MRVNTIDogSUNPTi5FWFBBTkRfTU9SRVwiXG4gICAgICAgIDpzaXplPVwiU0laRS5MQVJHRVwiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiA6Y2xhc3M9XCJbJ3RpZGUtYWNjb3JkaW9uLWJvZHknLCBwcm9wcy5pc0V4cGFuZGVkID8gJ2V4cGFuZGVkJyA6ICdjb2xsYXBzZWQnLCBDU1MuRElTUExBWS5HUklEXVwiPlxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLk9WRVJGTE9XLlkuSElEREVOLCBDU1MuTUFSR0lOLlkuT05FLCBDU1MuRk9OVC5ST0xFLkJPRFlfMSwgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5ERUZBVUxUXVwiPlxuICAgICAgICA8c2xvdCAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8VGlkZURpdmlkZXIgdi1pZj1cInByb3BzLmhhc0JvdHRvbURpdmlkZXJcIiAvPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWFjY29yZGlvbi1ib2R5IHtcbiAgICB0cmFuc2l0aW9uOiBncmlkLXRlbXBsYXRlLXJvd3MgdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIC50aWRlLWFjY29yZGlvbi1ib2R5LmV4cGFuZGVkIHtcbiAgICBncmlkLXRlbXBsYXRlLXJvd3M6IDFmcjtcbiAgfVxuXG4gIC50aWRlLWFjY29yZGlvbi1ib2R5LmNvbGxhcHNlZCB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiAwZnI7XG4gIH1cbjwvc3R5bGU+XG4iLCJleHBvcnQgY29uc3QgRUxFTUVOVCA9IHtcbiAgQlVUVE9OOiAnYnV0dG9uJyxcbiAgTElOSzogJ2EnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IEVMRU1FTlRfVEVYVF9BU19JQ09OID0ge1xuICBCVVRUT046ICdidXR0b24nLFxuICBESVY6ICdkaXYnLFxuICBMSU5LOiAnYScsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBFbGVtZW50ID0gKHR5cGVvZiBFTEVNRU5UKVtrZXlvZiB0eXBlb2YgRUxFTUVOVF07XG5leHBvcnQgdHlwZSBFbGVtZW50VGV4dEFzSWNvbiA9ICh0eXBlb2YgRUxFTUVOVF9URVhUX0FTX0lDT04pW2tleW9mIHR5cGVvZiBFTEVNRU5UX1RFWFRfQVNfSUNPTl07XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSB2dWUvc29ydC1rZXlzICovXG5cbmV4cG9ydCBjb25zdCBQUklPUklUWSA9IHtcbiAgUFJJTUFSWTogJ3ByaW1hcnknLFxuICBTRUNPTkRBUlk6ICdzZWNvbmRhcnknLFxuICBURVJUSUFSWTogJ3RlcnRpYXJ5JyxcbiAgUVVBVEVSTkFSWTogJ3F1YXRlcm5hcnknLFxuICBGTE9BVElORzogJ2Zsb2F0aW5nJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIFByaW9yaXR5ID0gKHR5cGVvZiBQUklPUklUWSlba2V5b2YgdHlwZW9mIFBSSU9SSVRZXTtcbiIsImV4cG9ydCBjb25zdCBUQVJHRVQgPSB7XG4gIEJMQU5LOiAnX2JsYW5rJyxcbiAgU0VMRjogdW5kZWZpbmVkLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgVGFyZ2V0ID0gKHR5cGVvZiBUQVJHRVQpW2tleW9mIHR5cGVvZiBUQVJHRVRdO1xuIiwiZXhwb3J0IGNvbnN0IEFMRVJUID0ge1xuICBFUlJPUjogJ2Vycm9yJyxcbiAgSU5GTzogJ2luZm8nLFxuICBTVUNDRVNTOiAnc3VjY2VzcycsXG4gIFdBUk5JTkc6ICd3YXJuaW5nJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIEFsZXJ0ID0gKHR5cGVvZiBBTEVSVClba2V5b2YgdHlwZW9mIEFMRVJUXTtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUJ1dHRvbkljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVCdXR0b25JY29uLnZ1ZSc7XG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgQUxFUlQgfSBmcm9tICdAL3R5cGVzL0FsZXJ0JztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFBSSU9SSVRZIH0gZnJvbSAnQC90eXBlcy9Qcmlvcml0eSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICBpbXBvcnQgdHlwZSB7IEFsZXJ0IH0gZnJvbSAnQC90eXBlcy9BbGVydCc7XG4gIGltcG9ydCB0eXBlIHsgSWNvbiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBoZWFkaW5nPzogc3RyaW5nO1xuICAgIGlzVG9hc3Q/OiBib29sZWFuO1xuICAgIHR5cGU/OiBBbGVydDtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGhlYWRpbmc6IHVuZGVmaW5lZCxcbiAgICBpc1RvYXN0OiBmYWxzZSxcbiAgICB0eXBlOiBBTEVSVC5JTkZPLFxuICB9KTtcblxuICBjb25zdCBpY29uID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGxldCBpY29uOiBJY29uID0gSUNPTi5JTkZPO1xuXG4gICAgc3dpdGNoIChwcm9wcy50eXBlKSB7XG4gICAgICBjYXNlIEFMRVJULkVSUk9SOlxuICAgICAgICBpY29uID0gSUNPTi5FUlJPUjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgY2FzZSBBTEVSVC5JTkZPOlxuICAgICAgICBpY29uID0gSUNPTi5JTkZPO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgQUxFUlQuU1VDQ0VTUzpcbiAgICAgICAgaWNvbiA9IElDT04uQ0hFQ0s7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBBTEVSVC5XQVJOSU5HOlxuICAgICAgICBpY29uID0gSUNPTi5XQVJOSU5HO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICByZXR1cm4gaWNvbjtcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiW1xuICAgICAgcHJvcHMudHlwZSxcbiAgICAgICd0aWRlLWFsZXJ0JyxcbiAgICAgIENTUy5ESVNQTEFZLkdSSUQsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuSEFMRixcbiAgICAgIENTUy5QQURESU5HLkZVTEwuT05FLFxuICAgICAgcHJvcHMudHlwZSA9PT0gQUxFUlQuRVJST1IgJiYgQ1NTLkJHLkdMT0JBTC5TVVJGQUNFLkVSUk9SLFxuICAgICAgcHJvcHMudHlwZSA9PT0gQUxFUlQuSU5GTyAmJiBDU1MuQkcuR0xPQkFMLlNVUkZBQ0UuSU5GTyxcbiAgICAgIHByb3BzLnR5cGUgPT09IEFMRVJULlNVQ0NFU1MgJiYgQ1NTLkJHLkdMT0JBTC5TVVJGQUNFLlNVQ0NFU1MsXG4gICAgICBwcm9wcy50eXBlID09PSBBTEVSVC5XQVJOSU5HICYmIENTUy5CRy5HTE9CQUwuU1VSRkFDRS5XQVJOSU5HLFxuICAgICAgcHJvcHMuaXNUb2FzdCA/IENTUy5TSEFET1cuQk9UVE9NIDogJycsXG4gICAgXVwiXG4gID5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWFsZXJ0LWljb24nLFxuICAgICAgICBDU1MuUEFERElORy5GVUxMLkhBTEYsXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLkZVTEwsXG4gICAgICAgIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuSU5WRVJTRSxcbiAgICAgICAgcHJvcHMudHlwZSA9PT0gQUxFUlQuRVJST1IgJiYgQ1NTLkJHLkdMT0JBTC5QUklNQVJZLkVSUk9SLFxuICAgICAgICBwcm9wcy50eXBlID09PSBBTEVSVC5JTkZPICYmIENTUy5CRy5HTE9CQUwuUFJJTUFSWS5JTkZPLFxuICAgICAgICBwcm9wcy50eXBlID09PSBBTEVSVC5TVUNDRVNTICYmIENTUy5CRy5HTE9CQUwuUFJJTUFSWS5TVUNDRVNTLFxuICAgICAgICBwcm9wcy50eXBlID09PSBBTEVSVC5XQVJOSU5HICYmIENTUy5CRy5HTE9CQUwuUFJJTUFSWS5XQVJOSU5HLFxuICAgICAgXVwiXG4gICAgPlxuICAgICAgPFRpZGVJY29uIDppY29uPVwiaWNvblwiIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IDpjbGFzcz1cIlsndGlkZS1hbGVydC1oZWFkaW5nJywgQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUl1cIj5cbiAgICAgIDxoMiA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5MQUJFTF8xX1NFTUlCT0xELCBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLkRFRkFVTFRdXCI+XG4gICAgICAgIHt7IHByb3BzLmhlYWRpbmcgfX1cbiAgICAgIDwvaDI+XG4gICAgPC9kaXY+XG5cbiAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgIDpjbGFzcz1cIlsndGlkZS1hbGVydC1jbG9zZScsIENTUy5BWElTMi5DRU5URVIsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuREVGQVVMVF1cIlxuICAgICAgOmljb249XCJJQ09OLkNMT1NFXCJcbiAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlFVQVRFUk5BUllcIlxuICAgICAgYXJpYS1sYWJlbD1cIkNsb3NlIGFsZXJ0XCJcbiAgICAvPlxuXG4gICAgPGRpdiA6Y2xhc3M9XCJbJ3RpZGUtYWxlcnQtYm9keScsIENTUy5GT05ULlJPTEUuTEFCRUxfMSwgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5UXVwiPlxuICAgICAgPHNsb3QgLz5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1hbGVydCB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1hcmVhczpcbiAgICAgICdpY29uIGhlYWRpbmcgY2xvc2UnXG4gICAgICAnLiBib2R5IC4nO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byAxZnIgYXV0bztcbiAgICBncmlkLWNvbHVtbi1nYXA6IDAuNXJlbTtcbiAgICBtYXgtd2lkdGg6IDQwcmVtO1xuICB9XG5cbiAgLnRpZGUtYWxlcnQtaWNvbiB7XG4gICAgZ3JpZC1hcmVhOiBpY29uO1xuICB9XG5cbiAgLnRpZGUtYWxlcnQtaGVhZGluZyB7XG4gICAgZ3JpZC1hcmVhOiBoZWFkaW5nO1xuICB9XG5cbiAgLnRpZGUtYWxlcnQtY2xvc2Uge1xuICAgIGdyaWQtYXJlYTogY2xvc2U7XG4gIH1cblxuICAudGlkZS1hbGVydC1ib2R5IHtcbiAgICBncmlkLWFyZWE6IGJvZHk7XG4gIH1cbjwvc3R5bGU+XG4iLCJleHBvcnQgY29uc3QgQkFER0VfVFJVU1RFRCA9IHtcbiAgWUVBUlNfMTA6ICcxMCcsXG4gIFlFQVJTXzE1OiAnMTUnLFxuICBZRUFSU181OiAnNScsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBCYWRnZVRydXN0ZWRZZWFycyA9ICh0eXBlb2YgQkFER0VfVFJVU1RFRClba2V5b2YgdHlwZW9mIEJBREdFX1RSVVNURURdO1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIGltcG9ydCB0eXBlIHsgVGFiIH0gZnJvbSAnQC90eXBlcy9UYWInO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgYWN0aXZlVGFiOiBudW1iZXI7XG4gICAgdGFiczogVGFiW107XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBhY3RpdmVUYWI6IDAsXG4gIH0pO1xuXG4gIGNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0cyhbJ2NoYW5nZSddKTtcblxuICBjb25zdCBoYW5kbGVDbGljayA9IChpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgZW1pdCgnY2hhbmdlJywgaW5kZXgpO1xuICB9O1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWJ1dHRvbi1zZWdtZW50ZWQnLFxuICAgICAgQ1NTLkJHLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuR0FQLlFVQVJURVIsXG4gICAgICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICAgICAgQ1NTLlBBRERJTkcuRlVMTC5RVUFSVEVSLFxuICAgICAgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTixcbiAgICAgIENTUy5XSURUSC5GVUxMLFxuICAgIF1cIlxuICA+XG4gICAgPGJ1dHRvblxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1idXR0b24tc2VnbWVudGVkLXRhYicsXG4gICAgICAgIGluZGV4ID09PSBhY3RpdmVUYWJcbiAgICAgICAgICA/IFtDU1MuQkcuU1VSRkFDRS5ERUZBVUxULCBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLkRFRkFVTFQsIENTUy5TSEFET1cuQk9UVE9NXVxuICAgICAgICAgIDogWydpbmFjdGl2ZScsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF0sXG4gICAgICAgIENTUy5GTEVYLkdST1cuT04sXG4gICAgICAgIENTUy5CT1JERVIuRlVMTC5UV08sXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLkZVTEwsXG4gICAgICAgIENTUy5QQURESU5HLlkuUVVBUlRFUixcbiAgICAgICAgQ1NTLldJRFRILkZVTEwsXG4gICAgICAgIENTUy5GT05ULlJPTEUuQlVUVE9OXzEsXG4gICAgICAgIENTUy5XSElURVNQQUNFX1dSQVAuT0ZGLFxuICAgICAgXVwiXG4gICAgICA6ZGF0YS10cmFjaz1cInRhYi5kYXRhVHJhY2sgfHwgdW5kZWZpbmVkXCJcbiAgICAgIDprZXk9XCJ0YWIubGFiZWxcIlxuICAgICAgQGNsaWNrPVwiaGFuZGxlQ2xpY2soaW5kZXgpXCJcbiAgICAgIHYtZm9yPVwiKHRhYiwgaW5kZXgpIGluIHByb3BzLnRhYnNcIlxuICAgID5cbiAgICAgIDxzcGFuIDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkxBQkVMXzJfU0VNSUJPTERdXCI+XG4gICAgICAgIHt7IHRhYi5sYWJlbCB9fVxuICAgICAgPC9zcGFuPlxuXG4gICAgICA8c3BhblxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5MQUJFTF8yX1NFTUlCT0xEXVwiXG4gICAgICAgIHYtaWY9XCJ0YWIuY291bnQgJiYgdGFiLmNvdW50ID4gMFwiXG4gICAgICA+XG4gICAgICAgICh7eyB0YWIuY291bnQgfX0pXG4gICAgICA8L3NwYW4+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtYnV0dG9uLXNlZ21lbnRlZCB7XG4gICAgbWF4LXdpZHRoOiAyMy4zcmVtO1xuICB9XG5cbiAgLnRpZGUtYnV0dG9uLXNlZ21lbnRlZC10YWIge1xuICAgIGZsZXg6IDE7XG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICB9XG5cbiAgLmluYWN0aXZlOm5vdCg6aG92ZXIpIHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXRpZGUtc3VyZmFjZS12YXJpYW50KTtcbiAgfVxuXG4gIC5pbmFjdGl2ZTpob3ZlciB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS10aWRlLWJvcmRlcik7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtc3VyZmFjZS1kZWZhdWx0KTtcbiAgfVxuPC9zdHlsZT5cbiIsImV4cG9ydCBjb25zdCBUWVBFX0NBUkQgPSB7XG4gIEFDVElPTkFCTEU6ICdhY3Rpb24nLFxuICBJTkZPUk1BVElPTkFMOiAnaW5mb3JtYXRpb25hbCcsXG4gIFNFTEVDVEFCTEU6ICdzZWxlY3QnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgQ2FyZFR5cGUgPSAodHlwZW9mIFRZUEVfQ0FSRClba2V5b2YgdHlwZW9mIFRZUEVfQ0FSRF07XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBvbk1vdW50ZWQsIG9uVW5tb3VudGVkLCBvblVwZGF0ZWQsIHJlZiwgd2F0Y2ggfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlQnV0dG9uSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUJ1dHRvbkljb24udnVlJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFBSSU9SSVRZIH0gZnJvbSAnQC90eXBlcy9Qcmlvcml0eSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGlzRmxvYXRpbmc/OiBib29sZWFuO1xuICAgIGlzSGlkZWF3YXlCdXR0b25zPzogYm9vbGVhbjtcbiAgICBpc1RvdWNoc2NyZWVuPzogYm9vbGVhbjtcbiAgICBzdWJ0aXRsZT86IHN0cmluZztcbiAgICB0aXRsZT86IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGlzRmxvYXRpbmc6IGZhbHNlLFxuICAgIGlzSGlkZWF3YXlCdXR0b25zOiB0cnVlLFxuICAgIGlzVG91Y2hzY3JlZW46IHVuZGVmaW5lZCxcbiAgICBzdWJ0aXRsZTogdW5kZWZpbmVkLFxuICAgIHRpdGxlOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIGNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0cyhbJ2NoYW5nZSddKTtcblxuICBjb25zdCBjb250ZW50UmVmID0gcmVmKCk7XG4gIGNvbnN0IGZyYW1lUmVmID0gcmVmKCk7XG5cbiAgY29uc3QgY29udGVudFJpZ2h0RWRnZSA9IHJlZigpO1xuICBjb25zdCBjb250ZW50V2lkdGggPSByZWYoKTtcbiAgY29uc3QgY3VycmVudFNsaWRlID0gcmVmKDApO1xuICBjb25zdCBmcmFtZVdpZHRoID0gcmVmKCk7XG4gIGNvbnN0IGhhc092ZXJmbG93ID0gcmVmKCk7XG4gIGNvbnN0IGlzTGFzdFNsaWRlID0gcmVmKCk7XG4gIGNvbnN0IGxhc3RQb3NpdGlvbiA9IHJlZigpO1xuICBjb25zdCBzaG93QnV0dG9ucyA9IHJlZigpO1xuXG4gIC8qKlxuICAgKiBNZWFzdXJlIHRoZSBjdXJyZW50IHNsaWRlIGJhc2VkIG9uIHRoZSBzY3JvbGxcbiAgICogcG9zaXRpb24gb2YgdGhlIGZyYW1lLiBUaGUgY3VycmVudCBzbGlkZSBpc1xuICAgKiB0aGUgc2xpZGUgdGhhdCBpcyBjbG9zZXN0IHRvIHRoZSBsZWZ0IGVkZ2Ugb2ZcbiAgICogdGhlIGZyYW1lLlxuICAgKi9cbiAgY29uc3QgbWVhc3VyZUN1cnJlbnRTbGlkZSA9ICgpID0+IHtcbiAgICAvLyBHZXQgbGVmdCBvZmZzZXQgb2YgZWFjaCBzbGlkZS5cbiAgICBjb25zdCBzbGlkZU9mZnNldHMgPSBBcnJheS5mcm9tKGNvbnRlbnRSZWYudmFsdWUuY2hpbGRyZW4pLm1hcCgoc2xpZGU6IGFueSkgPT4gc2xpZGUub2Zmc2V0TGVmdCk7XG5cbiAgICBpZiAoc2xpZGVPZmZzZXRzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuXG4gICAgLy8gR2V0IGNsb3Nlc3Qgb2Zmc2V0IHRvIGN1cnJlbnQgc2Nyb2xsIHBvc2l0aW9uLlxuICAgIGNvbnN0IGNsb3Nlc3RTbGlkZU9mZnNldCA9IHNsaWRlT2Zmc2V0cy5yZWR1Y2UoKHByZXYsIGN1cnIpID0+IHtcbiAgICAgIHJldHVybiBNYXRoLmFicyhjdXJyIC0gZnJhbWVSZWYudmFsdWUuc2Nyb2xsTGVmdCkgPCBNYXRoLmFicyhwcmV2IC0gZnJhbWVSZWYudmFsdWUuc2Nyb2xsTGVmdCkgPyBjdXJyIDogcHJldjtcbiAgICB9KTtcblxuICAgIGN1cnJlbnRTbGlkZS52YWx1ZSA9IHNsaWRlT2Zmc2V0cy5pbmRleE9mKGNsb3Nlc3RTbGlkZU9mZnNldCk7XG4gIH07XG5cbiAgY29uc3QgbWVhc3VyZURvbSA9ICgpID0+IHtcbiAgICBjb250ZW50UmlnaHRFZGdlLnZhbHVlID0gZnJhbWVSZWYudmFsdWUuc2Nyb2xsTGVmdCArIGZyYW1lUmVmLnZhbHVlLmNsaWVudFdpZHRoO1xuICAgIGNvbnRlbnRXaWR0aC52YWx1ZSA9IGNvbnRlbnRSZWYudmFsdWUuc2Nyb2xsV2lkdGg7XG4gICAgZnJhbWVXaWR0aC52YWx1ZSA9IGZyYW1lUmVmLnZhbHVlLmNsaWVudFdpZHRoO1xuICAgIGhhc092ZXJmbG93LnZhbHVlID0gY29udGVudFdpZHRoLnZhbHVlID4gZnJhbWVXaWR0aC52YWx1ZTtcbiAgICBpc0xhc3RTbGlkZS52YWx1ZSA9IGNvbnRlbnRSaWdodEVkZ2UudmFsdWUgPT09IGNvbnRlbnRXaWR0aC52YWx1ZTtcbiAgICBsYXN0UG9zaXRpb24udmFsdWUgPSBmcmFtZVJlZi52YWx1ZS5zY3JvbGxXaWR0aCAtIGZyYW1lUmVmLnZhbHVlLmNsaWVudFdpZHRoO1xuICAgIHNob3dCdXR0b25zLnZhbHVlID0gaGFzT3ZlcmZsb3cudmFsdWUgJiYgIXByb3BzLmlzVG91Y2hzY3JlZW47XG5cbiAgICBtZWFzdXJlQ3VycmVudFNsaWRlKCk7XG4gIH07XG5cbiAgLy8gVE9ETzogZGVib3VuY2UgdGhpc1xuICBjb25zdCBoYW5kbGVTY3JvbGwgPSAoKSA9PiB7XG4gICAgbWVhc3VyZURvbSgpO1xuICB9O1xuXG4gIGNvbnN0IHNjcm9sbFRvU2xpZGUgPSAoc2xpZGVJbmRleDogbnVtYmVyKSA9PiB7XG4gICAgZnJhbWVSZWYudmFsdWUuc2Nyb2xsVG8oe1xuICAgICAgYmVoYXZpb3I6ICdzbW9vdGgnLFxuICAgICAgbGVmdDogY29udGVudFJlZi52YWx1ZS5jaGlsZHJlbltzbGlkZUluZGV4XS5vZmZzZXRMZWZ0LFxuICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IHNob3dOZXh0U2xpZGUgPSAoKSA9PiB7XG4gICAgaWYgKGNvbnRlbnRSaWdodEVkZ2UudmFsdWUgPiBjb250ZW50V2lkdGgudmFsdWUpIHtcbiAgICAgIGZyYW1lUmVmLnZhbHVlLnNjcm9sbFRvKHtcbiAgICAgICAgYmVoYXZpb3I6ICdzbW9vdGgnLFxuICAgICAgICBsZWZ0OiBjb250ZW50V2lkdGgsXG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKCFpc0xhc3RTbGlkZS52YWx1ZSkge1xuICAgICAgc2Nyb2xsVG9TbGlkZShjdXJyZW50U2xpZGUudmFsdWUgKyAxKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3Qgc2hvd1ByZXZpb3VzU2xpZGUgPSAoKSA9PiB7XG4gICAgY29uc3QgaXNGaXJzdFNsaWRlID0gY3VycmVudFNsaWRlLnZhbHVlID09PSAwO1xuXG4gICAgaWYgKCFpc0ZpcnN0U2xpZGUpIHtcbiAgICAgIHNjcm9sbFRvU2xpZGUoY3VycmVudFNsaWRlLnZhbHVlIC0gMSk7XG4gICAgfVxuICB9O1xuXG4gIG9uTW91bnRlZCgoKSA9PiB7XG4gICAgbWVhc3VyZURvbSgpO1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBtZWFzdXJlRG9tKTtcbiAgfSk7XG5cbiAgb25Vbm1vdW50ZWQoKCkgPT4ge1xuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCBtZWFzdXJlRG9tKTtcbiAgfSk7XG5cbiAgb25VcGRhdGVkKCgpID0+IHtcbiAgICBtZWFzdXJlRG9tKCk7XG4gIH0pO1xuXG4gIHdhdGNoKGN1cnJlbnRTbGlkZSwgKCkgPT4ge1xuICAgIGVtaXQoJ2NoYW5nZScsIGN1cnJlbnRTbGlkZS52YWx1ZSk7XG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPHNlY3Rpb25cbiAgICA6Y2xhc3M9XCJbJ3RpZGUtY2Fyb3VzZWwnLCBDU1MuRElTUExBWS5GTEVYLCBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLCBDU1MuR0FQLlRXTywgQ1NTLldJRFRILk1BWF9GVUxMXVwiXG4gICAgcmVmPVwiY2Fyb3VzZWxSZWZcIlxuICA+XG4gICAgPHNlY3Rpb25cbiAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBwcm9wcy50aXRsZSA/IENTUy5BWElTMS5CRVRXRUVOIDogQ1NTLkFYSVMxLkVORCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLldJRFRILkZVTExdXCJcbiAgICAgIHYtaWY9XCIhcHJvcHMuaXNGbG9hdGluZyAmJiAoc2hvd0J1dHRvbnMgfHwgcHJvcHMudGl0bGUpXCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLk9ORV1cIlxuICAgICAgICB2LWlmPVwicHJvcHMudGl0bGUgfHwgcHJvcHMuc3VidGl0bGVcIlxuICAgICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuRElTUExBWV8xXVwiXG4gICAgICAgICAgdi1pZj1cInByb3BzLnRpdGxlXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IHByb3BzLnRpdGxlIH19XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5MQUJFTF8yLCBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlRdXCJcbiAgICAgICAgICB2LWlmPVwicHJvcHMuc3VidGl0bGVcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgcHJvcHMuc3VidGl0bGUgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdlxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5PTkVdXCJcbiAgICAgICAgdi1pZj1cInNob3dCdXR0b25zXCJcbiAgICAgID5cbiAgICAgICAgPFRpZGVCdXR0b25JY29uXG4gICAgICAgICAgOmRpc2FibGVkPVwiY3VycmVudFNsaWRlID09PSAwXCJcbiAgICAgICAgICA6aWNvbj1cIklDT04uQ0hFVlJPTl9MRUZUXCJcbiAgICAgICAgICA6cHJpb3JpdHk9XCJQUklPUklUWS5URVJUSUFSWVwiXG4gICAgICAgICAgQGNsaWNrPVwic2hvd1ByZXZpb3VzU2xpZGVcIlxuICAgICAgICAvPlxuXG4gICAgICAgIDxUaWRlQnV0dG9uSWNvblxuICAgICAgICAgIDpkaXNhYmxlZD1cImlzTGFzdFNsaWRlXCJcbiAgICAgICAgICA6aWNvbj1cIklDT04uQ0hFVlJPTl9SSUdIVFwiXG4gICAgICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuVEVSVElBUllcIlxuICAgICAgICAgIEBjbGljaz1cInNob3dOZXh0U2xpZGVcIlxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9zZWN0aW9uPlxuXG4gICAgPHNsb3QgbmFtZT1cIm1pc2NcIiAvPlxuXG4gICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLlBPU0lUSU9OLlJFTEFUSVZFXVwiPlxuICAgICAgPGRpdlxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLlNDUk9MTEJBUi5PRkYsIENTUy5TTkFQLk9OLCBDU1MuT1ZFUkZMT1cuWC5TQ1JPTEwsIENTUy5XSURUSC5GVUxMXVwiXG4gICAgICAgIHJlZj1cImZyYW1lUmVmXCJcbiAgICAgICAgQHNjcm9sbD1cImhhbmRsZVNjcm9sbFwiXG4gICAgICA+XG4gICAgICAgIDx1bFxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuR0FQLk9ORSwgQ1NTLkxJU1RfQlVMTEVUUy5PRkZdXCJcbiAgICAgICAgICByZWY9XCJjb250ZW50UmVmXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzbG90IC8+XG4gICAgICAgIDwvdWw+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdlxuICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgJ3RpZGUtY2Fyb3VzZWwtYnV0dG9uLW92ZXJsYXknLFxuICAgICAgICAgIENTUy5QT1NJVElPTi5BQlNPTFVURSxcbiAgICAgICAgICBDU1MuUE9TSVRJT05JTkcuVE9QLFxuICAgICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgICAgQ1NTLkFYSVMxLkJFVFdFRU4sXG4gICAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICAgICAgICBDU1MuSEVJR0hULkZVTEwsXG4gICAgICAgICAgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRixcbiAgICAgICAgICBwcm9wcy5pc0hpZGVhd2F5QnV0dG9ucyA/ICdoaWRlYXdheScgOiAnJyxcbiAgICAgICAgXVwiXG4gICAgICAgIHYtaWY9XCJpc0Zsb2F0aW5nICYmIHNob3dCdXR0b25zXCJcbiAgICAgID5cbiAgICAgICAgPFRpZGVCdXR0b25JY29uXG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5NQVJHSU4uTEVGVC5PTkUsIENTUy5QT0lOVEVSX0VWRU5UUy5PTl1cIlxuICAgICAgICAgIDpkaXNhYmxlZD1cImN1cnJlbnRTbGlkZSA9PT0gMFwiXG4gICAgICAgICAgOmljb249XCJJQ09OLkNIRVZST05fTEVGVFwiXG4gICAgICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuUVVBVEVSTkFSWVwiXG4gICAgICAgICAgQGNsaWNrPVwic2hvd1ByZXZpb3VzU2xpZGVcIlxuICAgICAgICAvPlxuXG4gICAgICAgIDxUaWRlQnV0dG9uSWNvblxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuTUFSR0lOLlJJR0hULk9ORSwgQ1NTLlBPSU5URVJfRVZFTlRTLk9OXVwiXG4gICAgICAgICAgOmRpc2FibGVkPVwiaXNMYXN0U2xpZGVcIlxuICAgICAgICAgIDppY29uPVwiSUNPTi5DSEVWUk9OX1JJR0hUXCJcbiAgICAgICAgICA6cHJpb3JpdHk9XCJQUklPUklUWS5RVUFURVJOQVJZXCJcbiAgICAgICAgICBAY2xpY2s9XCJzaG93TmV4dFNsaWRlXCJcbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L3NlY3Rpb24+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1jYXJvdXNlbC1idXR0b24tb3ZlcmxheS5oaWRlYXdheSB7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxuXG4gIC50aWRlLWNhcm91c2VsOmhvdmVyIC50aWRlLWNhcm91c2VsLWJ1dHRvbi1vdmVybGF5LmhpZGVhd2F5IHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgcmVmIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgaW1wb3J0IHR5cGUgeyBTb3VyY2UgfSBmcm9tICdAL3R5cGVzL1NvdXJjZSc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBhbHQ6IHN0cmluZztcbiAgICBoZWlnaHQ/OiBzdHJpbmc7XG4gICAgaXNMYXp5PzogYm9vbGVhbjtcbiAgICBzb3VyY2VzPzogU291cmNlW107XG4gICAgc3JjPzogc3RyaW5nO1xuICAgIHdpZHRoPzogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgYWx0OiAnJyxcbiAgICBoZWlnaHQ6IHVuZGVmaW5lZCxcbiAgICBpc0xhenk6IHRydWUsXG4gICAgc291cmNlczogKCkgPT4gW10sXG4gICAgc3JjOiB1bmRlZmluZWQsXG4gICAgd2lkdGg6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgY29uc3QgcGljdHVyZSA9IHJlZigpO1xuICBjb25zdCBpbWcgPSByZWYoKTtcblxuICBjb25zdCBpbWFnZURlZmF1bHQgPSAnaHR0cHM6Ly9jZG4tc3RhdGljLnRpbGFicy5pby9tYXJrZXRwbGFjZS9jb21tb24vaW1hZ2UtY29taW5nLXNvb24uc3ZnJztcblxuICBjb25zdCBzZXRJbWFnZUZyb21EZWZhdWx0ID0gKCkgPT4ge1xuICAgIGNvbnN0IGN1cnJlbnRTcmMgPSBpbWcudmFsdWU/LmN1cnJlbnRTcmM7XG4gICAgY29uc3QgcGljdHVyZVNvdXJjZSA9IHBpY3R1cmUudmFsdWU/LnF1ZXJ5U2VsZWN0b3IoYHNvdXJjZVtzcmNzZXQ9XCIke2N1cnJlbnRTcmN9XCJdYCk7XG5cbiAgICBpZiAoY3VycmVudFNyYyAmJiBwaWN0dXJlU291cmNlKSB7XG4gICAgICBwaWN0dXJlU291cmNlLnNyY3NldCA9IGltYWdlRGVmYXVsdDtcbiAgICB9IGVsc2UgaWYgKGltZy52YWx1ZSkge1xuICAgICAgaW1nLnZhbHVlLnNyYyA9IGltYWdlRGVmYXVsdDtcbiAgICB9XG4gIH07XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8cGljdHVyZVxuICAgIDpjbGFzcz1cIlsndGlkZS1pbWFnZScsIENTUy5ESVNQTEFZLkJMT0NLXVwiXG4gICAgcmVmPVwicGljdHVyZVwiXG4gICAgOnN0eWxlPVwiXG4gICAgICB3aWR0aCB8fCBoZWlnaHRcbiAgICAgICAgPyB7XG4gICAgICAgICAgICB3aWR0aDogd2lkdGggfHwgdW5kZWZpbmVkLFxuICAgICAgICAgICAgaGVpZ2h0OiBoZWlnaHQgfHwgdW5kZWZpbmVkLFxuICAgICAgICAgIH1cbiAgICAgICAgOiB1bmRlZmluZWRcbiAgICBcIlxuICA+XG4gICAgPHNvdXJjZVxuICAgICAgOmtleT1cInNvdXJjZS5zcmNzZXRcIlxuICAgICAgOm1lZGlhPVwiYChtaW4td2lkdGg6JHtzb3VyY2UubWVkaWF9cHgpYFwiXG4gICAgICA6c3Jjc2V0PVwic291cmNlLnNyY3NldFwiXG4gICAgICB2LWZvcj1cInNvdXJjZSBpbiBwcm9wcy5zb3VyY2VzXCJcbiAgICAvPlxuXG4gICAgPGltZ1xuICAgICAgOmFsdD1cImFsdFwiXG4gICAgICA6Y2xhc3M9XCJbQ1NTLldJRFRILkZVTEwsIENTUy5IRUlHSFQuRlVMTCwgQ1NTLk9CSkVDVC5DRU5URVIsIENTUy5PQkpFQ1QuQ09WRVJdXCJcbiAgICAgIDpmZXRjaHByaW9yaXR5PVwiaXNMYXp5ID8gdW5kZWZpbmVkIDogJ2hpZ2gnXCJcbiAgICAgIDpsb2FkaW5nPVwicHJvcHMuaXNMYXp5ID8gJ2xhenknIDogJ2VhZ2VyJ1wiXG4gICAgICByZWY9XCJpbWdcIlxuICAgICAgOnNyYz1cInNyYyA/PyBpbWFnZURlZmF1bHRcIlxuICAgICAgQGVycm9yPVwic2V0SW1hZ2VGcm9tRGVmYXVsdFwiXG4gICAgLz5cbiAgPC9waWN0dXJlPlxuPC90ZW1wbGF0ZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBmb3JtYXROdW1iZXIgfSBmcm9tICdAL3V0aWxpdGllcy9mb3JtYXQnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgY2hlY2tlZD86IGJvb2xlYW47XG4gICAgZGF0YVRyYWNrPzogc3RyaW5nO1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICBpbmRldGVybWluYXRlPzogYm9vbGVhbjtcbiAgICBpbnB1dElkPzogc3RyaW5nO1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIG51bWJlcj86IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgIGRhdGFUcmFjazogJycsXG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIGluZGV0ZXJtaW5hdGU6IGZhbHNlLFxuICAgIGlucHV0SWQ6IHVuZGVmaW5lZCxcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICAgIG5hbWU6IHVuZGVmaW5lZCxcbiAgICBudW1iZXI6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgY29uc3QgaXNDaGVja2VkID0gY29tcHV0ZWQoKCkgPT4gcHJvcHMuY2hlY2tlZCB8fCBwcm9wcy5pbmRldGVybWluYXRlKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1pbnB1dC1jaGVja2JveCcsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgIENTUy5GT05ULlJPTEUuQk9EWV8xLFxuICAgICAgZGlzYWJsZWQgPyBbJ2Rpc2FibGVkJywgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRl0gOiBDU1MuQ1VSU09SLlBPSU5URVIsXG4gICAgXVwiXG4gID5cbiAgICA8aW5wdXRcbiAgICAgIDpjaGVja2VkPVwiaXNDaGVja2VkXCJcbiAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5OT05FXVwiXG4gICAgICA6ZGlzYWJsZWQ9XCJwcm9wcy5kaXNhYmxlZFwiXG4gICAgICA6bmFtZT1cInByb3BzLm5hbWVcIlxuICAgICAgcmVmPVwiaW5wdXRcIlxuICAgICAgQGNsaWNrLnByZXZlbnRcbiAgICAgIDppZD1cInByb3BzLmlucHV0SWRcIlxuICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAvPlxuXG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1pbnB1dC1jaGVja2JveC1jdXN0b20nLFxuICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgIENTUy5BWElTMS5DRU5URVIsXG4gICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgIENTUy5GTEVYLlNIUklOSy5PRkYsXG4gICAgICAgIENTUy5CT1JERVIuRlVMTC5PTkUsXG4gICAgICAgIGlzQ2hlY2tlZCA/IFtDU1MuQk9SREVSLkNPTE9SLkhJR0gsIENTUy5CRy5TRUNPTkRBUlldIDogW0NTUy5CT1JERVIuQ09MT1IuREVGQVVMVCwgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVF0sXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLlFVQVJURVIsXG4gICAgICAgIGlzQ2hlY2tlZCAmJiAnY2hlY2tlZCcsXG4gICAgICAgIGRpc2FibGVkID8gQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRCA6IENTUy5DVVJTT1IuUE9JTlRFUixcbiAgICAgIF1cIlxuICAgID5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuQ09MT1IuU0VDT05EQVJZXVwiXG4gICAgICAgIDppY29uPVwicHJvcHMuaW5kZXRlcm1pbmF0ZSA/IElDT04uUkVNT1ZFIDogSUNPTi5DSEVDS1wiXG4gICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgIHYtaWY9XCJpc0NoZWNrZWRcIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cblxuICAgIDxsYWJlbFxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICAgIENTUy5GT05ULlJPTEUuQk9EWV8xLFxuICAgICAgICBkaXNhYmxlZCA/IENTUy5DVVJTT1IuTk9UX0FMTE9XRUQgOiBDU1MuQ1VSU09SLlBPSU5URVIsXG4gICAgICBdXCJcbiAgICAgIDpmb3I9XCJwcm9wcy5pbnB1dElkXCJcbiAgICAgIEBjbGljay5wcmV2ZW50XG4gICAgICB2LWlmPVwibGFiZWxcIlxuICAgID5cbiAgICAgIDxzcGFuPnt7IGxhYmVsIH19PC9zcGFuPlxuICAgICAgPHNwYW5cbiAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF1cIlxuICAgICAgICB2LWlmPVwicHJvcHMubnVtYmVyXCJcbiAgICAgID5cbiAgICAgICAgKHt7IGZvcm1hdE51bWJlcihwcm9wcy5udW1iZXIpIH19KVxuICAgICAgPC9zcGFuPlxuICAgIDwvbGFiZWw+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtaW5wdXQtY2hlY2tib3guZGlzYWJsZWQge1xuICAgIG9wYWNpdHk6IHZhcigtLXRpZGUtZGlzYWJsZWQpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtY2hlY2tib3gtY3VzdG9tIHtcbiAgICB3aWR0aDogdmFyKC0tdGlkZS1mb250LTI4KTtcbiAgICBoZWlnaHQ6IHZhcigtLXRpZGUtZm9udC0yOCk7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyByZWYsIHdhdGNoIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBjaGVja2VkPzogYm9vbGVhbjtcbiAgICBkYXRhVHJhY2s/OiBzdHJpbmc7XG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAgIGlucHV0SWQ/OiBzdHJpbmc7XG4gICAgbGFiZWw6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBjaGVja2VkOiBmYWxzZSxcbiAgICBkYXRhVHJhY2s6ICcnLFxuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBpbnB1dElkOiB1bmRlZmluZWQsXG4gICAgbGFiZWw6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgY29uc3QgY2hlY2tlZCA9IHJlZihwcm9wcy5jaGVja2VkKTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBwcm9wcy5jaGVja2VkLFxuICAgIChuZXdWYWx1ZSwgb2xkVmFsdWUpID0+IHtcbiAgICAgIGlmIChuZXdWYWx1ZSAhPT0gb2xkVmFsdWUgfHwgbmV3VmFsdWUgIT09IGNoZWNrZWQudmFsdWUpIHtcbiAgICAgICAgY2hlY2tlZC52YWx1ZSA9IG5ld1ZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1pbnB1dC1yYWRpbycsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgIENTUy5QT0lOVEVSX0VWRU5UUy5PRkYsXG4gICAgICBwcm9wcy5kaXNhYmxlZCAmJiAnZGlzYWJsZWQnLFxuICAgIF1cIlxuICA+XG4gICAgPGlucHV0XG4gICAgICA6Y2hlY2tlZD1cImNoZWNrZWRcIlxuICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLk5PTkVdXCJcbiAgICAgIDppZD1cInByb3BzLmlucHV0SWRcIlxuICAgICAgbmFtZT1cIlwiXG4gICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgdmFsdWU9XCJcIlxuICAgIC8+XG5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWlucHV0LXJhZGlvLWN1c3RvbScsXG4gICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkFYSVMxLkNFTlRFUixcbiAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgQ1NTLkJPUkRFUi5GVUxMLk9ORSxcbiAgICAgICAgY2hlY2tlZCA/IENTUy5CT1JERVIuQ09MT1IuSElHSCA6IENTUy5CT1JERVIuQ09MT1IuREVGQVVMVCxcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCxcbiAgICAgICAgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgICAgQ1NTLkNVUlNPUi5QT0lOVEVSLFxuICAgICAgICBDU1MuUE9JTlRFUl9FVkVOVFMuT04sXG4gICAgICAgIGNoZWNrZWQgJiYgJ2NoZWNrZWQnLFxuICAgICAgXVwiXG4gICAgPlxuICAgICAgPGRpdiA6Y2xhc3M9XCJbJ3RpZGUtaW5wdXQtcmFkaW8tY2hlY2snLCBDU1MuQk9SREVSLlJBRElVUy5GVUxMLCBwcm9wcy5jaGVja2VkICYmIENTUy5CRy5TRUNPTkRBUlldXCIgLz5cbiAgICA8L2Rpdj5cblxuICAgIDxsYWJlbFxuICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuQk9EWV8xLCBDU1MuQ1VSU09SLlBPSU5URVIsIENTUy5QT0lOVEVSX0VWRU5UUy5PTl1cIlxuICAgICAgOmZvcj1cInByb3BzLmlucHV0SWRcIlxuICAgID5cbiAgICAgIHt7IHByb3BzLmxhYmVsIH19XG4gICAgPC9sYWJlbD5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1pbnB1dC1yYWRpby5kaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogdmFyKC0tdGlkZS1kaXNhYmxlZCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1yYWRpby1jdXN0b20ge1xuICAgIHdpZHRoOiB2YXIoLS10aWRlLWZvbnQtMjgpO1xuICAgIGhlaWdodDogdmFyKC0tdGlkZS1mb250LTI4KTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXJhZGlvLWNoZWNrIHtcbiAgICB3aWR0aDogMXJlbTtcbiAgICBoZWlnaHQ6IDFyZW07XG4gIH1cbjwvc3R5bGU+XG4iLCJpbXBvcnQgeyBwcmljZVRvTnVtYmVyIH0gZnJvbSAnQC91dGlsaXRpZXMvZm9ybWF0JztcblxuaW1wb3J0IHR5cGUgeyBSYW5nZURhdGEgfSBmcm9tICdAL3R5cGVzL0ZhY2V0UmFuZ2UnO1xuaW1wb3J0IHR5cGUgeyBTdHJpbmdJbnB1dCB9IGZyb20gJ0AvdHlwZXMvRm9ybSc7XG5pbXBvcnQgdHlwZSB7IFNlbGVjdE9wdGlvbiB9IGZyb20gJ0AvdHlwZXMvU2VsZWN0JztcbmltcG9ydCB0eXBlIHsgVmFsaWRhdGlvbkVycm9yLCBWYWxpZGF0aW9uTGVuZ3RoLCBWYWxpZGF0aW9uUmVzdWx0LCBWYWxpZGF0b3IgfSBmcm9tICdAL3R5cGVzL1ZhbGlkYXRpb24nO1xuaW1wb3J0IHR5cGUgeyBSZWYgfSBmcm9tICd2dWUnO1xuXG5leHBvcnQgY29uc3QgZXJyb3JNZXNzYWdlRGVmYXVsdCA9ICdQbGVhc2UgZW50ZXIgYSB2YWxpZCB2YWx1ZS4nO1xuXG5leHBvcnQgY29uc3Qgbm9FcnJvciA9IHtcbiAgbWVzc2FnZTogJycsXG4gIHZhbGlkOiB0cnVlLFxufSBhcyBSZWFkb25seTxWYWxpZGF0aW9uUmVzdWx0PjtcblxuZXhwb3J0IGNvbnN0IGNoZWNrRm9ybWF0ID0gKGZvcm1hdDogUmVnRXhwKSA9PiB7XG4gIHJldHVybiAodmFsdWU6IHN0cmluZyk6IFZhbGlkYXRpb25SZXN1bHQgPT4ge1xuICAgIGxldCByZXN1bHQgPSBub0Vycm9yO1xuXG4gICAgaWYgKCF2YWx1ZS50cmltKCkubWF0Y2goZm9ybWF0KSkge1xuICAgICAgcmVzdWx0ID0ge1xuICAgICAgICBtZXNzYWdlOiBlcnJvck1lc3NhZ2VEZWZhdWx0LFxuICAgICAgICB2YWxpZDogZmFsc2UsXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RXJyb3JNZXNzYWdlID0gKGVycm9yRnJvbVByb3BzOiBWYWxpZGF0aW9uRXJyb3IsIGVycm9yRnJvbVJlZjogVmFsaWRhdGlvbkVycm9yKSA9PiB7XG4gIC8vIGVycm9yIGluIHByb3BzIHRha2VzIHByZWNlZGVuY2Ugb3ZlciB2YWxpZGF0aW9uIGVycm9yXG4gIGlmICh0eXBlb2YgZXJyb3JGcm9tUHJvcHMgPT09ICdzdHJpbmcnICYmIGVycm9yRnJvbVByb3BzLmxlbmd0aCA+IDApIHJldHVybiBlcnJvckZyb21Qcm9wcztcblxuICByZXR1cm4gdHlwZW9mIGVycm9yRnJvbVJlZiA9PT0gJ3N0cmluZycgJiYgZXJyb3JGcm9tUmVmLmxlbmd0aCA+IDAgPyBlcnJvckZyb21SZWYgOiBlcnJvck1lc3NhZ2VEZWZhdWx0O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEZpZWxkSGFzRXJyb3IgPSAoZXJyb3JGcm9tUHJvcHM6IFZhbGlkYXRpb25FcnJvciwgZXJyb3JGcm9tUmVmOiBWYWxpZGF0aW9uRXJyb3IpID0+XG4gIGVycm9yRnJvbVByb3BzICE9PSBmYWxzZSB8fCBlcnJvckZyb21SZWYgIT09IGZhbHNlO1xuXG5leHBvcnQgY29uc3QgZ2V0RmllbGRMZW5ndGhJc1ZhbGlkID0gKHsgbWF4bGVuZ3RoLCBtaW5sZW5ndGgsIHJlcXVpcmVkLCB2YWx1ZSB9OiBWYWxpZGF0aW9uTGVuZ3RoKSA9PiB7XG4gIGNvbnN0IGlzRW1wdHlBbmRVbnJlcXVpcmVkID0gdmFsdWUubGVuZ3RoID09PSAwICYmICFyZXF1aXJlZDtcbiAgY29uc3QgaXNUb29Mb25nID0gbWF4bGVuZ3RoICYmIHZhbHVlLmxlbmd0aCA+IG1heGxlbmd0aDtcbiAgY29uc3QgaXNUb29TaG9ydCA9ICFpc0VtcHR5QW5kVW5yZXF1aXJlZCAmJiBtaW5sZW5ndGggJiYgdmFsdWUubGVuZ3RoIDwgbWlubGVuZ3RoO1xuXG4gIHJldHVybiAhaXNUb29TaG9ydCAmJiAhaXNUb29Mb25nO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldE1heFJhbmdlSXNWYWxpZCA9ICh7IG1pbiB9OiBQaWNrPFJhbmdlRGF0YSwgJ21pbic+LCB0eXBlPzogJ3ByaWNlJykgPT4ge1xuICByZXR1cm4gKHZhbHVlOiBzdHJpbmcpOiBWYWxpZGF0aW9uUmVzdWx0ID0+IHtcbiAgICBsZXQgbmV3TWF4OiBudW1iZXIgfCBudWxsID0gdHlwZSA9PT0gJ3ByaWNlJyA/IHByaWNlVG9OdW1iZXIodmFsdWUpIDogTnVtYmVyKHZhbHVlKTtcbiAgICBuZXdNYXggPSAhaXNOYU4obmV3TWF4KSA/IG5ld01heCA6IG51bGw7XG4gICAgaWYgKG1pbiAmJiBuZXdNYXgpIHtcbiAgICAgIGlmIChuZXdNYXggPj0gbWluKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgICAgdmFsaWQ6IHRydWUsXG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG1lc3NhZ2U6IGBNdXN0IGJlIGdyZWF0ZXIgdGhhbiBtaW5gLFxuICAgICAgICAgIHZhbGlkOiBmYWxzZSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5vRXJyb3I7XG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldE1pblJhbmdlSXNWYWxpZCA9ICh7IG1heCB9OiBQaWNrPFJhbmdlRGF0YSwgJ21heCc+LCB0eXBlPzogJ3ByaWNlJykgPT4ge1xuICByZXR1cm4gKHZhbHVlOiBzdHJpbmcpOiBWYWxpZGF0aW9uUmVzdWx0ID0+IHtcbiAgICBsZXQgbmV3TWluOiBudW1iZXIgfCBudWxsID0gdHlwZSA9PT0gJ3ByaWNlJyA/IHByaWNlVG9OdW1iZXIodmFsdWUpIDogTnVtYmVyKHZhbHVlKTtcbiAgICBuZXdNaW4gPSAhaXNOYU4obmV3TWluKSA/IG5ld01pbiA6IG51bGw7XG4gICAgaWYgKG1heCAmJiBuZXdNaW4pIHtcbiAgICAgIGlmIChuZXdNaW4gPD0gbWF4KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgICAgdmFsaWQ6IHRydWUsXG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG1lc3NhZ2U6IGBNdXN0IGJlIGxlc3MgdGhhbiBtYXhgLFxuICAgICAgICAgIHZhbGlkOiBmYWxzZSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5vRXJyb3I7XG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFNlbGVjdE9wdGlvbnNGcm9tU3RyaW5ncyA9IChzdHJpbmdzOiBzdHJpbmdbXSkgPT5cbiAgc3RyaW5ncy5tYXAoXG4gICAgKG9wdGlvbikgPT5cbiAgICAgICh7XG4gICAgICAgIGxhYmVsOiBvcHRpb24sXG4gICAgICAgIHZhbHVlOiBvcHRpb24sXG4gICAgICB9IGFzIFNlbGVjdE9wdGlvbilcbiAgKTtcblxuZXhwb3J0IGNvbnN0IGhhbmRsZUZpZWxkVmFsaWRhdGlvbiA9ICh7XG4gIGVycm9yLFxuICBlcnJvckZyb21Qcm9wcyxcbiAgbWF4bGVuZ3RoLFxuICBtaW5sZW5ndGgsXG4gIHJlcXVpcmVkID0gZmFsc2UsXG4gIHZhbGlkYXRvcnMsXG4gIHZhbHVlLFxufToge1xuICBlcnJvcjogUmVmPFZhbGlkYXRpb25FcnJvcj47XG4gIGVycm9yRnJvbVByb3BzOiBWYWxpZGF0aW9uRXJyb3I7XG4gIG1heGxlbmd0aD86IG51bWJlcjtcbiAgbWlubGVuZ3RoPzogbnVtYmVyO1xuICByZXF1aXJlZD86IGJvb2xlYW47XG4gIHZhbGlkYXRvcnM/OiBWYWxpZGF0b3JbXTtcbiAgdmFsdWU/OiBSZWY8c3RyaW5nIHwgdW5kZWZpbmVkPjtcbn0pID0+IHtcbiAgLy8gZXJyb3IgaW4gcHJvcHMgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIHZhbGlkYXRpb24gZXJyb3JcblxuICBlcnJvci52YWx1ZSA9IGVycm9yRnJvbVByb3BzID8gZXJyb3JGcm9tUHJvcHMgOiBmYWxzZTtcblxuICBpZiAoIWVycm9yLnZhbHVlICYmIHZhbGlkYXRvcnMpIHtcbiAgICBjb25zdCB2YWxpZGF0aW9uID0gdmFsaWRhdGVQcm9wZXJ0eSh2YWx1ZT8udmFsdWUgfHwgJycsIHZhbGlkYXRvcnMpO1xuXG4gICAgaWYgKCF2YWxpZGF0aW9uLnZhbGlkKSB7XG4gICAgICBlcnJvci52YWx1ZSA9IHZhbGlkYXRpb24ubWVzc2FnZTtcbiAgICB9XG4gIH1cblxuICBpZiAoIWVycm9yLnZhbHVlICYmIChtYXhsZW5ndGggfHwgbWlubGVuZ3RoKSkge1xuICAgIGNvbnN0IGxlbmd0aFZhbGlkYXRpb24gPSB2YWxpZGF0ZUxlbmd0aCh7XG4gICAgICBtYXhsZW5ndGgsXG4gICAgICBtaW5sZW5ndGgsXG4gICAgICByZXF1aXJlZCxcbiAgICAgIHZhbHVlOiB2YWx1ZT8udmFsdWUgfHwgJycsXG4gICAgfSk7XG5cbiAgICBpZiAoIWxlbmd0aFZhbGlkYXRpb24udmFsaWQpIHtcbiAgICAgIGVycm9yLnZhbHVlID0gbGVuZ3RoVmFsaWRhdGlvbi5tZXNzYWdlO1xuICAgIH1cbiAgfVxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlRmllbGRzRnJvbVJlZnMoZmllbGRzOiB7IFtrZXk6IHN0cmluZ106IFJlZjxTdHJpbmdJbnB1dCB8IG51bGw+IH0pIHtcbiAgbGV0IHZhbGlkID0gdHJ1ZTtcblxuICBmb3IgKGNvbnN0IGtleSBpbiBmaWVsZHMpIHtcbiAgICBpZiAoZmllbGRzW2tleV0udmFsdWU/LnJlcXVpcmVkKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IGZpZWxkc1trZXldLnZhbHVlPy52YWx1ZTtcbiAgICAgIHZhbGlkID0gdmFsaWQgJiYgISF2YWx1ZSAmJiB2YWx1ZS50cmltKCkgIT09ICcnO1xuICAgIH1cblxuICAgIGNvbnN0IGVycm9yID0gZmllbGRzW2tleV0udmFsdWU/LmVycm9yO1xuICAgIHZhbGlkID0gdmFsaWQgJiYgIWVycm9yO1xuICB9XG5cbiAgcmV0dXJuIHZhbGlkO1xufVxuXG5leHBvcnQgY29uc3QgdmFsaWRhdGVMZW5ndGggPSAoe1xuICBtYXhsZW5ndGgsXG4gIG1pbmxlbmd0aCxcbiAgcmVxdWlyZWQgPSBmYWxzZSxcbiAgdmFsdWUsXG59OiBWYWxpZGF0aW9uTGVuZ3RoKTogVmFsaWRhdGlvblJlc3VsdCA9PiB7XG4gIGNvbnN0IHJlc3BvbnNlID0ge1xuICAgIG1lc3NhZ2U6ICcnLFxuICAgIHZhbGlkOiB0cnVlLFxuICB9O1xuXG4gIHJlc3BvbnNlLnZhbGlkID0gZ2V0RmllbGRMZW5ndGhJc1ZhbGlkKHtcbiAgICBtYXhsZW5ndGgsXG4gICAgbWlubGVuZ3RoLFxuICAgIHJlcXVpcmVkLFxuICAgIHZhbHVlLFxuICB9KTtcblxuICBpZiAocmVzcG9uc2UudmFsaWQpIHJldHVybiByZXNwb25zZTtcblxuICByZXNwb25zZS5tZXNzYWdlID0gZXJyb3JNZXNzYWdlRGVmYXVsdDtcblxuICBpZiAobWF4bGVuZ3RoICYmIG1pbmxlbmd0aCkge1xuICAgIHJlc3BvbnNlLm1lc3NhZ2UgPSBgUGxlYXNlIGVudGVyIGEgdmFsdWUgYmV0d2VlbiAke21pbmxlbmd0aH0gYW5kICR7bWF4bGVuZ3RofSBjaGFyYWN0ZXJzIGluIGxlbmd0aC5gO1xuICB9IGVsc2UgaWYgKG1heGxlbmd0aCkge1xuICAgIHJlc3BvbnNlLm1lc3NhZ2UgPSBgUGxlYXNlIGVudGVyIGEgdmFsdWUgbm8gbW9yZSB0aGFuICR7bWF4bGVuZ3RofSBjaGFyYWN0ZXJzIGluIGxlbmd0aC5gO1xuICB9IGVsc2UgaWYgKG1pbmxlbmd0aCkge1xuICAgIHJlc3BvbnNlLm1lc3NhZ2UgPSBgUGxlYXNlIGVudGVyIGEgdmFsdWUgbm8gbGVzcyB0aGFuICR7bWlubGVuZ3RofSBjaGFyYWN0ZXJzIGluIGxlbmd0aC5gO1xuICB9XG5cbiAgcmV0dXJuIHJlc3BvbnNlO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlUHJvcGVydHkodmFsdWU6IHN0cmluZywgdmFsaWRhdG9yczogKCh2YWx1ZTogc3RyaW5nKSA9PiBWYWxpZGF0aW9uUmVzdWx0KVtdKTogVmFsaWRhdGlvblJlc3VsdCB7XG4gIGZvciAoY29uc3QgdmFsaWRhdG9yIG9mIHZhbGlkYXRvcnMpIHtcbiAgICBjb25zdCB2YWxpZGF0aW9uID0gdmFsaWRhdG9yKHZhbHVlKTtcbiAgICBpZiAoIXZhbGlkYXRpb24udmFsaWQpIHtcbiAgICAgIHJldHVybiB2YWxpZGF0aW9uO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbWVzc2FnZTogJycsXG4gICAgdmFsaWQ6IHRydWUsXG4gIH07XG59XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCwgcmVmLCB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgZ2V0RXJyb3JNZXNzYWdlLCBnZXRGaWVsZEhhc0Vycm9yIH0gZnJvbSAnQC91dGlsaXRpZXMvdmFsaWRhdGlvbic7XG5cbiAgaW1wb3J0IHR5cGUgeyBTZWxlY3RGaWVsZCB9IGZyb20gJ0AvdHlwZXMvRmllbGQnO1xuICBpbXBvcnQgdHlwZSB7IFNlbGVjdE9wdGlvbiwgU2VsZWN0T3B0aW9uR3JvdXAgfSBmcm9tICdAL3R5cGVzL1NlbGVjdCc7XG5cbiAgaW50ZXJmYWNlIFByb3BzIGV4dGVuZHMgU2VsZWN0RmllbGQge1xuICAgIGlucHV0SWQ/OiBzdHJpbmc7XG4gICAgc3VwcG9ydGluZ1RleHQ/OiBzdHJpbmc7XG4gIH1cblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBlcnJvcjogZmFsc2UsXG4gICAgaW5wdXRJZDogdW5kZWZpbmVkLFxuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIHN1cHBvcnRpbmdUZXh0OiB1bmRlZmluZWQsXG4gICAgdmFsdWU6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgY29uc3QgZXJyb3IgPSByZWYocHJvcHMuZXJyb3IpO1xuICBjb25zdCBoYXNGb2N1cyA9IHJlZihmYWxzZSk7XG4gIGNvbnN0IGlucHV0ID0gcmVmPEhUTUxTZWxlY3RFbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IHJlcXVpcmVkID0gcmVmKHByb3BzLnJlcXVpcmVkKTtcbiAgY29uc3QgdmFsdWUgPSByZWY8c3RyaW5nIHwgdW5kZWZpbmVkPihwcm9wcy52YWx1ZSk7XG5cbiAgY29uc3QgZXJyb3JNZXNzYWdlID0gY29tcHV0ZWQoKCkgPT4gZ2V0RXJyb3JNZXNzYWdlKHByb3BzLmVycm9yLCBlcnJvci52YWx1ZSkpO1xuICBjb25zdCBmb3JtYXR0ZWRMYWJlbCA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5yZXF1aXJlZCA/IGAke3Byb3BzLmxhYmVsfSAqYCA6IHByb3BzLmxhYmVsKSk7XG4gIGNvbnN0IGhhc0Vycm9yID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLnJlcXVpcmVkICYmICF2YWx1ZS52YWx1ZSkgfHwgZ2V0RmllbGRIYXNFcnJvcihlcnJvci52YWx1ZSwgcHJvcHMuZXJyb3IpKTtcbiAgY29uc3QgaGFzTWluaWxhYmVsID0gY29tcHV0ZWQoKCkgPT4gaGFzRm9jdXMudmFsdWUgfHwgIWlzRW1wdHkudmFsdWUpO1xuICBjb25zdCBpc0VtcHR5ID0gY29tcHV0ZWQoKCkgPT4gdmFsdWUudmFsdWUgPT09IHVuZGVmaW5lZCk7XG5cbiAgY29uc3QgZXhwYW5kT3B0aW9ucyA9ICgpID0+IHtcbiAgICBjb25zdCBldmVudCA9IG5ldyBNb3VzZUV2ZW50KCdtb3VzZWRvd24nKTtcbiAgICBpbnB1dD8udmFsdWU/LmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gdHJ1ZTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGb2N1c091dCA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IGZhbHNlO1xuICB9O1xuXG4gIHdhdGNoKFxuICAgICgpID0+IHByb3BzLnZhbHVlLFxuICAgIChuZXdWYWx1ZSwgb2xkVmFsdWUpID0+IHtcbiAgICAgIGlmIChuZXdWYWx1ZSAhPT0gb2xkVmFsdWUgfHwgbmV3VmFsdWUgIT09IHZhbHVlLnZhbHVlKSB7XG4gICAgICAgIHZhbHVlLnZhbHVlID0gbmV3VmFsdWU7XG4gICAgICB9XG4gICAgfVxuICApO1xuXG4gIGRlZmluZUV4cG9zZSh7IGVycm9yLCB2YWx1ZSB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1pbnB1dC1zZWxlY3QnLFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sXG4gICAgICBDU1MuR0FQLlFVQVJURVIsXG4gICAgICBkaXNhYmxlZCAmJiAnZGlzYWJsZWQnLFxuICAgICAgaGFzRXJyb3IgJiYgJ2Vycm9yJyxcbiAgICBdXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtaW5wdXQtYm9yZGVyJyxcbiAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLkhBTEYsXG4gICAgICAgIENTUy5CRy5TVVJGQUNFLkRFRkFVTFQsXG4gICAgICAgIHByb3BzLmRpc2FibGVkID8gQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRCA6ICcnLFxuICAgICAgICBDU1MuT1ZFUkZMT1cuWFkuSElEREVOLFxuICAgICAgXVwiXG4gICAgICBAY2xpY2s9XCJleHBhbmRPcHRpb25zXCJcbiAgICA+XG4gICAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLCBDU1MuV0lEVEguRlVMTF1cIj5cbiAgICAgICAgPGxhYmVsXG4gICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgaGFzTWluaWxhYmVsID8gWydtaW5pbGFiZWwnLCBDU1MuRk9OVC5ST0xFLkxBQkVMXzNdIDogQ1NTLkZPTlQuUk9MRS5MQUJFTF8xLFxuICAgICAgICAgICAgQ1NTLlBPU0lUSU9OLkFCU09MVVRFLFxuICAgICAgICAgICAgQ1NTLlBPU0lUSU9OSU5HLkxFRlQsXG4gICAgICAgICAgICBDU1MuTUFSR0lOLlRPUC5IQUxGLFxuICAgICAgICAgICAgQ1NTLk1BUkdJTi5MRUZULk9ORSxcbiAgICAgICAgICAgICFoYXNFcnJvciAmJiBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlQsXG4gICAgICAgICAgICBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGLFxuICAgICAgICAgIF1cIlxuICAgICAgICAgIDpmb3I9XCJwcm9wcy5pbnB1dElkXCJcbiAgICAgICAgICB2LWlmPVwibGFiZWxcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgZm9ybWF0dGVkTGFiZWwgfX1cbiAgICAgICAgPC9sYWJlbD5cblxuICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgQ1NTLlBBRERJTkcuQk9UVE9NLkhBTEYsXG4gICAgICAgICAgICBDU1MuUEFERElORy5YLk9ORSxcbiAgICAgICAgICAgIENTUy5XSURUSC5GVUxMLFxuICAgICAgICAgICAgZGlzYWJsZWQgJiYgQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRCxcbiAgICAgICAgICAgIENTUy5GT05ULlJPTEUuQk9EWV8xLFxuICAgICAgICAgIF1cIlxuICAgICAgICAgIDpkaXNhYmxlZD1cImRpc2FibGVkXCJcbiAgICAgICAgICA6bmFtZT1cIm5hbWVcIlxuICAgICAgICAgIHJlZj1cImlucHV0XCJcbiAgICAgICAgICA6cmVxdWlyZWQ9XCJyZXF1aXJlZFwiXG4gICAgICAgICAgQGZvY3VzPVwiaGFuZGxlRm9jdXNcIlxuICAgICAgICAgIEBmb2N1c291dD1cImhhbmRsZUZvY3VzT3V0XCJcbiAgICAgICAgICA6aWQ9XCJwcm9wcy5pbnB1dElkXCJcbiAgICAgICAgICB2LW1vZGVsPVwidmFsdWVcIlxuICAgICAgICA+XG4gICAgICAgICAgPHRlbXBsYXRlIHYtZm9yPVwib3B0Z3JvdXAgaW4gcHJvcHMub3B0Z3JvdXBzXCI+XG4gICAgICAgICAgICA8b3B0Z3JvdXBcbiAgICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5XSURUSC5GVUxMLCBDU1MuQkcuU1VSRkFDRS5ERUZBVUxUXVwiXG4gICAgICAgICAgICAgIDprZXk9XCIob3B0Z3JvdXAgYXMgU2VsZWN0T3B0aW9uR3JvdXApLmxhYmVsXCJcbiAgICAgICAgICAgICAgOmxhYmVsPVwiKG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbkdyb3VwKS5sYWJlbFwiXG4gICAgICAgICAgICAgIHYtaWY9XCIob3B0Z3JvdXAgYXMgU2VsZWN0T3B0aW9uR3JvdXApLm9wdGlvbnNcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8b3B0aW9uXG4gICAgICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5XSURUSC5GVUxMLCBDU1MuQkcuU1VSRkFDRS5ERUZBVUxUXVwiXG4gICAgICAgICAgICAgICAgOmtleT1cIm9wdGlvbi52YWx1ZVwiXG4gICAgICAgICAgICAgICAgOnZhbHVlPVwib3B0aW9uLnZhbHVlXCJcbiAgICAgICAgICAgICAgICB2LWZvcj1cIm9wdGlvbiBpbiAob3B0Z3JvdXAgYXMgU2VsZWN0T3B0aW9uR3JvdXApLm9wdGlvbnNcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgb3B0aW9uLmxhYmVsIH19XG4gICAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgICAgPC9vcHRncm91cD5cblxuICAgICAgICAgICAgPG9wdGlvblxuICAgICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLldJRFRILkZVTEwsIENTUy5CRy5TVVJGQUNFLkRFRkFVTFRdXCJcbiAgICAgICAgICAgICAgOmtleT1cIihvcHRncm91cCBhcyBTZWxlY3RPcHRpb24pLnZhbHVlXCJcbiAgICAgICAgICAgICAgOnNlbGVjdGVkPVwidmFsdWUgPT09IChvcHRncm91cCBhcyBTZWxlY3RPcHRpb24pLnZhbHVlID8gdHJ1ZSA6IHVuZGVmaW5lZFwiXG4gICAgICAgICAgICAgIDp2YWx1ZT1cIihvcHRncm91cCBhcyBTZWxlY3RPcHRpb24pLnZhbHVlXCJcbiAgICAgICAgICAgICAgdi1lbHNlXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IChvcHRncm91cCBhcyBTZWxlY3RPcHRpb24pLmxhYmVsIH19XG4gICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICA8L3RlbXBsYXRlPlxuXG4gICAgICAgICAgPG9wdGlvblxuICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5XSURUSC5GVUxMLCBDU1MuQkcuU1VSRkFDRS5ERUZBVUxUXVwiXG4gICAgICAgICAgICA6a2V5PVwib3B0aW9uLnZhbHVlXCJcbiAgICAgICAgICAgIDpzZWxlY3RlZD1cInZhbHVlID09PSBvcHRpb24udmFsdWUgPyB0cnVlIDogdW5kZWZpbmVkXCJcbiAgICAgICAgICAgIDp2YWx1ZT1cIm9wdGlvbi52YWx1ZVwiXG4gICAgICAgICAgICB2LWZvcj1cIm9wdGlvbiBpbiBvcHRpb25zXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBvcHRpb24ubGFiZWwgfX1cbiAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgPC9zZWxlY3Q+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPFRpZGVJY29uXG4gICAgICAgIDpjbGFzcz1cIltDU1MuUE9TSVRJT04uQUJTT0xVVEUsIENTUy5QT1NJVElPTklORy5SSUdIVCwgQ1NTLk1BUkdJTi5SSUdIVC5PTkUsIENTUy5QT0lOVEVSX0VWRU5UUy5PRkZdXCJcbiAgICAgICAgOmljb249XCJJQ09OLkVYUEFORF9NT1JFXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5RVUFSVEVSXVwiXG4gICAgICB2LWlmPVwicHJvcHMuc3VwcG9ydGluZ1RleHQgfHwgaGFzRXJyb3JcIlxuICAgID5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6Y2xhc3M9XCJbXVwiXG4gICAgICAgIDppY29uPVwiSUNPTi5FUlJPUlwiXG4gICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgIHYtaWY9XCJoYXNFcnJvclwiXG4gICAgICAvPlxuXG4gICAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkxBQkVMXzNdXCI+XG4gICAgICAgIHt7IGhhc0Vycm9yID8gZXJyb3JNZXNzYWdlIDogcHJvcHMuc3VwcG9ydGluZ1RleHQgfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIHNlbGVjdCB7XG4gICAgYXBwZWFyYW5jZTogbm9uZTtcbiAgfVxuXG4gIGxhYmVsIHtcbiAgICBoZWlnaHQ6IDEuMTg3NXJlbTtcbiAgICB0cmFuc2l0aW9uOiBmb250LXNpemUgdmFyKC0tdGlkZS1hbmltYXRlKSwgdHJhbnNmb3JtIHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gIH1cblxuICBsYWJlbDpub3QoLm1pbmlsYWJlbCkge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIGNhbGMoOSAvIDE2ICogMXJlbSkpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0LmRpc2FibGVkIHtcbiAgICBvcGFjaXR5OiB2YXIoLS10aWRlLWRpc2FibGVkKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXNlbGVjdC5lcnJvciAudGlkZS1pbnB1dC1ib3JkZXIge1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItYm9yZGVyKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLXN1cmZhY2UpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0LmVycm9yOmZvY3VzLXdpdGhpbiAudGlkZS1pbnB1dC1ib3JkZXIge1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItYm9yZGVyKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXNlbGVjdDpmb2N1cy13aXRoaW4gLnRpZGUtaW5wdXQtYm9yZGVyIHtcbiAgICAtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMik7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1zdXJmYWNlLWJvcmRlci1oaWdoKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LWJvcmRlciB7XG4gICAgLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGg6IHZhcigtLXRpZGUtYm9yZGVyLXdpZHRoLTEpO1xuICAgIG91dGxpbmU6IHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgc29saWQgdmFyKC0tdGlkZS1ib3JkZXIpO1xuICAgIG91dGxpbmUtb2Zmc2V0OiBjYWxjKHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgKiAtMSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1zZWxlY3QuZXJyb3Ige1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLWVycm9yLXByaW1hcnkpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0LmVycm9yIG9wdGlvbiB7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtb24tc3VyZmFjZSk7XG4gIH1cblxuICBzZWxlY3Qge1xuICAgIHBhZGRpbmctdG9wOiAyN3B4O1xuICB9XG48L3N0eWxlPlxuIiwiZXhwb3J0IGNvbnN0IFRFWFRfSU5QVVRfVFlQRSA9IHtcbiAgREFURTogJ2RhdGUnLFxuICBEQVRFVElNRV9MT0NBTDogJ2RhdGV0aW1lLWxvY2FsJyxcbiAgRU1BSUw6ICdlbWFpbCcsXG4gIE1PTlRIOiAnbW9udGgnLFxuICBOVU1CRVI6ICdudW1iZXInLFxuICBQQVNTV09SRDogJ3Bhc3N3b3JkJyxcbiAgU0VBUkNIOiAnc2VhcmNoJyxcbiAgVEVMOiAndGVsJyxcbiAgVEVYVDogJ3RleHQnLFxuICBUSU1FOiAndGltZScsXG4gIFVSTDogJ3VybCcsXG4gIFdFRUs6ICd3ZWVrJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIFRleHRJbnB1dFR5cGUgPSAodHlwZW9mIFRFWFRfSU5QVVRfVFlQRSlba2V5b2YgdHlwZW9mIFRFWFRfSU5QVVRfVFlQRV07XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCwgcmVmLCB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgVEVYVF9JTlBVVF9UWVBFIH0gZnJvbSAnQC90eXBlcy9UZXh0SW5wdXQnO1xuICBpbXBvcnQgeyBnZXRFcnJvck1lc3NhZ2UsIGdldEZpZWxkSGFzRXJyb3IsIGhhbmRsZUZpZWxkVmFsaWRhdGlvbiB9IGZyb20gJ0AvdXRpbGl0aWVzL3ZhbGlkYXRpb24nO1xuXG4gIGltcG9ydCB0eXBlIHsgRm9ybVZhbHVlVHJhbnNmb3JtZXIgfSBmcm9tICdAL3R5cGVzL0Zvcm0nO1xuICBpbXBvcnQgdHlwZSB7IEljb24gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgdHlwZSB7IFRleHRJbnB1dFR5cGUgfSBmcm9tICdAL3R5cGVzL1RleHRJbnB1dCc7XG4gIGltcG9ydCB0eXBlIHsgVmFsaWRhdGlvbkVycm9yLCBWYWxpZGF0b3IgfSBmcm9tICdAL3R5cGVzL1ZhbGlkYXRpb24nO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgYXV0b2NvbXBsZXRlPzogYm9vbGVhbjtcbiAgICBkYXRhVHJhY2s/OiBzdHJpbmc7XG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAgIGVycm9yPzogVmFsaWRhdGlvbkVycm9yO1xuICAgIGhhc0NsZWFyPzogYm9vbGVhbjtcbiAgICBpY29uTGVhZGluZz86IEljb247XG4gICAgaW5wdXRJZD86IHN0cmluZztcbiAgICBsYWJlbDogc3RyaW5nO1xuICAgIG1heGxlbmd0aD86IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICBtaW5sZW5ndGg/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIHByZWZpeD86IHN0cmluZztcbiAgICByZXF1aXJlZD86IGJvb2xlYW47XG4gICAgc3VmZml4Pzogc3RyaW5nO1xuICAgIHN1cHBvcnRpbmdUZXh0Pzogc3RyaW5nO1xuICAgIHRyYW5zZm9ybVZhbHVlPzogRm9ybVZhbHVlVHJhbnNmb3JtZXI7XG4gICAgdHlwZT86IFRleHRJbnB1dFR5cGU7XG4gICAgdmFsaWRhdG9ycz86IFZhbGlkYXRvcltdO1xuICAgIHZhbHVlPzogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgYXV0b2NvbXBsZXRlOiBmYWxzZSxcbiAgICBkYXRhVHJhY2s6ICcnLFxuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBlcnJvcjogZmFsc2UsXG4gICAgaGFzQ2xlYXI6IGZhbHNlLFxuICAgIGljb25MZWFkaW5nOiB1bmRlZmluZWQsXG4gICAgaW5wdXRJZDogdW5kZWZpbmVkLFxuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gICAgbWF4bGVuZ3RoOiB1bmRlZmluZWQsXG4gICAgbWlubGVuZ3RoOiB1bmRlZmluZWQsXG4gICAgcHJlZml4OiB1bmRlZmluZWQsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIHN1ZmZpeDogdW5kZWZpbmVkLFxuICAgIHN1cHBvcnRpbmdUZXh0OiB1bmRlZmluZWQsXG4gICAgdHJhbnNmb3JtVmFsdWU6IHVuZGVmaW5lZCxcbiAgICB0eXBlOiBURVhUX0lOUFVUX1RZUEUuVEVYVCxcbiAgICB2YWxpZGF0b3JzOiB1bmRlZmluZWQsXG4gICAgdmFsdWU6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgY29uc3QgZXJyb3IgPSByZWYocHJvcHMuZXJyb3IpO1xuICBjb25zdCBoYXNGb2N1cyA9IHJlZihmYWxzZSk7XG4gIGNvbnN0IGlucHV0ID0gcmVmPEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgY29uc3Qgc2hvd1Bhc3N3b3JkID0gcmVmKGZhbHNlKTtcbiAgY29uc3QgdmFsdWUgPSByZWYocHJvcHMudmFsdWUpO1xuXG4gIGNvbnN0IGVycm9yTWVzc2FnZSA9IGNvbXB1dGVkKCgpID0+IGdldEVycm9yTWVzc2FnZShwcm9wcy5lcnJvciwgZXJyb3IudmFsdWUpKTtcbiAgY29uc3QgZm9ybWF0dGVkTGFiZWwgPSBjb21wdXRlZCgoKSA9PiAocHJvcHMucmVxdWlyZWQgJiYgcHJvcHMubGFiZWwgPyBgJHtwcm9wcy5sYWJlbH0gKmAgOiBwcm9wcy5sYWJlbCkpO1xuICBjb25zdCBoYXNDbGVhciA9IGNvbXB1dGVkKCgpID0+IHByb3BzLmhhc0NsZWFyICYmIHZhbHVlLnZhbHVlKTtcbiAgY29uc3QgaGFzRXJyb3IgPSBjb21wdXRlZChcbiAgICAoKSA9PiAocHJvcHMucmVxdWlyZWQgJiYgdmFsdWUudmFsdWUgIT09IHVuZGVmaW5lZCAmJiAhdmFsdWUudmFsdWUpIHx8IGdldEZpZWxkSGFzRXJyb3IoZXJyb3IudmFsdWUsIHByb3BzLmVycm9yKVxuICApO1xuICBjb25zdCBoYXNNaW5pbGFiZWwgPSBjb21wdXRlZCgoKSA9PiBoYXNGb2N1cy52YWx1ZSB8fCAhaXNFbXB0eS52YWx1ZSk7XG4gIGNvbnN0IGlzRW1wdHkgPSBjb21wdXRlZCgoKSA9PiB2YWx1ZS52YWx1ZSA9PT0gJycgfHwgdmFsdWUudmFsdWUgPT09IHVuZGVmaW5lZCk7XG4gIGNvbnN0IHR5cGUgPSBjb21wdXRlZCgoKSA9PlxuICAgIHByb3BzLnR5cGUgPT09IFRFWFRfSU5QVVRfVFlQRS5QQVNTV09SRCAmJiBzaG93UGFzc3dvcmQudmFsdWUgPT09IHRydWUgPyBURVhUX0lOUFVUX1RZUEUuVEVYVCA6IHByb3BzLnR5cGVcbiAgKTtcblxuICBjb25zdCBoYW5kbGVDbGVhciA9ICgpID0+IHtcbiAgICB2YWx1ZS52YWx1ZSA9ICcnO1xuICAgIGlucHV0LnZhbHVlPy5mb2N1cygpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gdHJ1ZTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGb2N1c091dCA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgaWYgKCF2YWx1ZS52YWx1ZSkge1xuICAgICAgdmFsdWUudmFsdWUgPSAnJztcbiAgICB9XG5cbiAgICBoYW5kbGVWYWxpZGF0aW9uKCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlSW5wdXQgPSAoKSA9PiB7XG4gICAgaWYgKHByb3BzLnRyYW5zZm9ybVZhbHVlKSB7XG4gICAgICBjb25zdCBkaWdpdHMgPSB2YWx1ZS52YWx1ZT8ubWF0Y2goL1xcZC9nKT8uam9pbignJykgfHwgdW5kZWZpbmVkO1xuXG4gICAgICB2YWx1ZS52YWx1ZSA9IGRpZ2l0cyA/IHByb3BzLnRyYW5zZm9ybVZhbHVlKGRpZ2l0cykgOiAnJztcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlVmFsaWRhdGlvbiA9ICgpID0+IHtcbiAgICBoYW5kbGVGaWVsZFZhbGlkYXRpb24oe1xuICAgICAgZXJyb3IsXG4gICAgICBlcnJvckZyb21Qcm9wczogcHJvcHMuZXJyb3IsXG4gICAgICBtYXhsZW5ndGg6IHByb3BzLm1heGxlbmd0aCxcbiAgICAgIG1pbmxlbmd0aDogcHJvcHMubWlubGVuZ3RoLFxuICAgICAgcmVxdWlyZWQ6IHByb3BzLnJlcXVpcmVkLFxuICAgICAgdmFsaWRhdG9yczogcHJvcHMudmFsaWRhdG9ycyxcbiAgICAgIHZhbHVlLFxuICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IHVwZGF0ZVZhbHVlID0gKG5ld1ZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICB2YWx1ZS52YWx1ZSA9IG5ld1ZhbHVlO1xuICB9O1xuXG4gIHdhdGNoKFxuICAgICgpID0+IHByb3BzLnZhbHVlLFxuICAgIChuZXdWYWx1ZSwgb2xkVmFsdWUpID0+IHtcbiAgICAgIGlmIChuZXdWYWx1ZSAhPT0gb2xkVmFsdWUgfHwgbmV3VmFsdWUgIT09IHZhbHVlLnZhbHVlKSB7XG4gICAgICAgIHZhbHVlLnZhbHVlID0gbmV3VmFsdWU7XG4gICAgICB9XG4gICAgfVxuICApO1xuXG4gIGRlZmluZUV4cG9zZSh7XG4gICAgZXJyb3IsXG4gICAgcmVxdWlyZWQ6IHByb3BzLnJlcXVpcmVkLFxuICAgIHVwZGF0ZVZhbHVlLFxuICAgIHZhbHVlLFxuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1pbnB1dC10ZXh0JyxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLFxuICAgICAgQ1NTLkdBUC5RVUFSVEVSLFxuICAgICAgZGlzYWJsZWQgJiYgJ2Rpc2FibGVkJyxcbiAgICAgIGhhc0Vycm9yICYmICdlcnJvcicsXG4gICAgXVwiXG4gID5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWlucHV0LWJvcmRlcicsXG4gICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5IQUxGLFxuICAgICAgICBDU1MuQkcuU1VSRkFDRS5ERUZBVUxULFxuICAgICAgICBoYXNDbGVhciA/IFtDU1MuUEFERElORy5SSUdIVC5IQUxGLCBDU1MuUEFERElORy5MRUZULk9ORV0gOiBbQ1NTLlBBRERJTkcuWC5PTkVdLFxuICAgICAgICBDU1MuUEFERElORy5ZLkhBTEYsXG4gICAgICAgIHByb3BzLmRpc2FibGVkID8gQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRCA6IENTUy5DVVJTT1IuVEVYVCxcbiAgICAgIF1cIlxuICAgID5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5UXVwiXG4gICAgICAgIDppY29uPVwicHJvcHMuaWNvbkxlYWRpbmdcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICB2LWlmPVwicHJvcHMuaWNvbkxlYWRpbmdcIlxuICAgICAgLz5cblxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5RVUFSVEVSLCBDU1MuV0lEVEguRlVMTF1cIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgICd0aWRlLWlucHV0LXRleHQtcHJlZml4JyxcbiAgICAgICAgICAgIENTUy5GT05ULlJPTEUuQk9EWV8xLFxuICAgICAgICAgICAgLFxuICAgICAgICAgICAgIWhhc0Vycm9yICYmIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgICAgICAgIGhhc01pbmlsYWJlbCA/ICcnIDogJ29mZnNldCcsXG4gICAgICAgICAgXVwiXG4gICAgICAgICAgdi1pZj1cInByb3BzLnByZWZpeFwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBwcm9wcy5wcmVmaXggfX1cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLCBDU1MuV0lEVEguRlVMTF1cIlxuICAgICAgICAgIEBjbGljay5wcmV2ZW50PVwiaW5wdXQ/LmZvY3VzKClcIlxuICAgICAgICA+XG4gICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICAgIGhhc01pbmlsYWJlbCA/IFsnbWluaWxhYmVsJywgQ1NTLkZPTlQuUk9MRS5MQUJFTF8zXSA6IENTUy5GT05ULlJPTEUuTEFCRUxfMSxcbiAgICAgICAgICAgICAgIWhhc0Vycm9yICYmIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgICAgICAgICAgQ1NTLkNVUlNPUi5URVhULFxuICAgICAgICAgICAgICBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGLFxuICAgICAgICAgICAgXVwiXG4gICAgICAgICAgICA6Zm9yPVwicHJvcHMuaW5wdXRJZFwiXG4gICAgICAgICAgICB2LWlmPVwibGFiZWxcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IGZvcm1hdHRlZExhYmVsIH19XG4gICAgICAgICAgPC9sYWJlbD5cblxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgOmF1dG9jb21wbGV0ZT1cImF1dG9jb21wbGV0ZSA/ICdvbicgOiAnb2ZmJ1wiXG4gICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLldJRFRILkZVTEwsIGRpc2FibGVkICYmIENTUy5DVVJTT1IuTk9UX0FMTE9XRUQsIENTUy5GT05ULlJPTEUuQk9EWV8xXVwiXG4gICAgICAgICAgICA6ZGF0YS10cmFjaz1cInByb3BzLmRhdGFUcmFja1wiXG4gICAgICAgICAgICA6ZGlzYWJsZWQ9XCJwcm9wcy5kaXNhYmxlZFwiXG4gICAgICAgICAgICA6bWF4bGVuZ3RoPVwicHJvcHMubWF4bGVuZ3RoXCJcbiAgICAgICAgICAgIDptaW5sZW5ndGg9XCJwcm9wcy5taW5sZW5ndGhcIlxuICAgICAgICAgICAgOm5hbWU9XCJwcm9wcy5uYW1lXCJcbiAgICAgICAgICAgIHJlZj1cImlucHV0XCJcbiAgICAgICAgICAgIDpyZXF1aXJlZD1cInByb3BzLnJlcXVpcmVkXCJcbiAgICAgICAgICAgIDp0eXBlPVwidHlwZVwiXG4gICAgICAgICAgICBAY2hhbmdlPVwiaGFuZGxlVmFsaWRhdGlvblwiXG4gICAgICAgICAgICBAZm9jdXM9XCJoYW5kbGVGb2N1c1wiXG4gICAgICAgICAgICBAZm9jdXNvdXQ9XCJoYW5kbGVGb2N1c091dFwiXG4gICAgICAgICAgICBAaW5wdXQ9XCJoYW5kbGVJbnB1dFwiXG4gICAgICAgICAgICA6aWQ9XCJwcm9wcy5pbnB1dElkXCJcbiAgICAgICAgICAgIHYtbW9kZWw9XCJ2YWx1ZVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgICd0aWRlLWlucHV0LXRleHQtc3VmZml4JyxcbiAgICAgICAgICAgIENTUy5GT05ULlJPTEUuQk9EWV8xLFxuICAgICAgICAgICAgIWhhc0Vycm9yICYmIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgICAgICAgIGhhc01pbmlsYWJlbCA/ICcnIDogJ29mZnNldCcsXG4gICAgICAgICAgXVwiXG4gICAgICAgICAgdi1pZj1cInByb3BzLnN1ZmZpeFwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBwcm9wcy5zdWZmaXggfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPFRpZGVJY29uXG4gICAgICAgIDpjbGFzcz1cIltDU1MuUEFERElORy5ZLkhBTEYsIENTUy5QQURESU5HLkZVTEwuSEFMRiwgQ1NTLkNVUlNPUi5QT0lOVEVSXVwiXG4gICAgICAgIDppY29uPVwiSUNPTi5DTE9TRVwiXG4gICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgIEBjbGljaz1cImhhbmRsZUNsZWFyXCJcbiAgICAgICAgdi1pZj1cImhhc0NsZWFyICYmIHByb3BzLnR5cGUgIT09IFRFWFRfSU5QVVRfVFlQRS5QQVNTV09SRFwiXG4gICAgICAvPlxuXG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmNsYXNzPVwiW0NTUy5QQURESU5HLlkuSEFMRiwgQ1NTLlBBRERJTkcuRlVMTC5IQUxGLCBDU1MuQ1VSU09SLlBPSU5URVJdXCJcbiAgICAgICAgOmljb249XCJJQ09OLlZJU0lCSUxJVFlcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICBAY2xpY2s9XCJzaG93UGFzc3dvcmQgPSAhc2hvd1Bhc3N3b3JkXCJcbiAgICAgICAgdi1pZj1cInByb3BzLnR5cGUgPT09IFRFWFRfSU5QVVRfVFlQRS5QQVNTV09SRFwiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMi5DRU5URVIsIENTUy5HQVAuUVVBUlRFUl1cIlxuICAgICAgdi1pZj1cInByb3BzLnN1cHBvcnRpbmdUZXh0IHx8IGhhc0Vycm9yXCJcbiAgICA+XG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmNsYXNzPVwiW11cIlxuICAgICAgICA6aWNvbj1cIklDT04uRVJST1JcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICB2LWlmPVwiaGFzRXJyb3JcIlxuICAgICAgLz5cblxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5MQUJFTF8zXVwiPlxuICAgICAgICB7eyBoYXNFcnJvciA/IGVycm9yTWVzc2FnZSA6IHByb3BzLnN1cHBvcnRpbmdUZXh0IH19XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICBsYWJlbCB7XG4gICAgaGVpZ2h0OiAxLjE4NzVyZW07XG4gICAgdHJhbnNpdGlvbjogZm9udC1zaXplIHZhcigtLXRpZGUtYW5pbWF0ZSksIHRyYW5zZm9ybSB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICB9XG5cbiAgbGFiZWw6bm90KC5taW5pbGFiZWwpLFxuICAudGlkZS1pbnB1dC10ZXh0LXByZWZpeDpub3QoLm9mZnNldCksXG4gIC50aWRlLWlucHV0LXRleHQtc3VmZml4Om5vdCgub2Zmc2V0KSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgY2FsYyg5IC8gMTYgKiAxcmVtKSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0LXByZWZpeCxcbiAgLnRpZGUtaW5wdXQtdGV4dC1zdWZmaXgge1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dC5kaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogdmFyKC0tdGlkZS1kaXNhYmxlZCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0LmVycm9yIHtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1lcnJvci1wcmltYXJ5KTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQuZXJyb3IgLnRpZGUtaW5wdXQtYm9yZGVyIHtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLWJvcmRlcik7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1zdXJmYWNlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQuZXJyb3I6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LWJvcmRlciB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dDpmb2N1cy13aXRoaW4gLnRpZGUtaW5wdXQtYm9yZGVyIHtcbiAgICAtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMik7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1zdXJmYWNlLWJvcmRlci1oaWdoKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQgaW5wdXQge1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cblxuICAudGlkZS1pbnB1dC1ib3JkZXIge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0xKTtcbiAgICBvdXRsaW5lOiB2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpIHNvbGlkIHZhcigtLXRpZGUtYm9yZGVyKTtcbiAgICBvdXRsaW5lLW9mZnNldDogY2FsYyh2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpICogLTEpO1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLXN1cmZhY2UtZm9yZWdyb3VuZCk7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCwgcmVmLCB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgZ2V0RXJyb3JNZXNzYWdlLCBnZXRGaWVsZEhhc0Vycm9yLCBoYW5kbGVGaWVsZFZhbGlkYXRpb24gfSBmcm9tICdAL3V0aWxpdGllcy92YWxpZGF0aW9uJztcblxuICBpbXBvcnQgdHlwZSB7IFZhbGlkYXRpb25FcnJvciB9IGZyb20gJ0AvdHlwZXMvVmFsaWRhdGlvbic7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBkYXRhVHJhY2s/OiBzdHJpbmc7XG4gICAgZXJyb3I/OiBWYWxpZGF0aW9uRXJyb3I7XG4gICAgaW5wdXRJZD86IHN0cmluZztcbiAgICBsYWJlbD86IHN0cmluZztcbiAgICBtYXhsZW5ndGg/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgbWlubGVuZ3RoPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgcmVxdWlyZWQ/OiBib29sZWFuO1xuICAgIHJvd3M/OiBudW1iZXI7XG4gICAgc3VwcG9ydGluZ1RleHQ/OiBzdHJpbmc7XG4gICAgdmFsdWU/OiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBkYXRhVHJhY2s6ICcnLFxuICAgIGVycm9yOiBmYWxzZSxcbiAgICBpbnB1dElkOiB1bmRlZmluZWQsXG4gICAgbGFiZWw6IHVuZGVmaW5lZCxcbiAgICBtYXhsZW5ndGg6IHVuZGVmaW5lZCxcbiAgICBtaW5sZW5ndGg6IHVuZGVmaW5lZCxcbiAgICBuYW1lOiB1bmRlZmluZWQsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIHJvd3M6IDgsXG4gICAgc3VwcG9ydGluZ1RleHQ6IHVuZGVmaW5lZCxcbiAgICB2YWx1ZTogdW5kZWZpbmVkLFxuICB9KTtcblxuICBjb25zdCBlcnJvciA9IHJlZihwcm9wcy5lcnJvcik7XG4gIGNvbnN0IGhhc0ZvY3VzID0gcmVmKGZhbHNlKTtcbiAgY29uc3QgaW5wdXQgPSByZWY8SFRNTElucHV0RWxlbWVudCB8IG51bGw+KG51bGwpO1xuICBjb25zdCB2YWx1ZSA9IHJlZihwcm9wcy52YWx1ZSk7XG5cbiAgY29uc3QgZXJyb3JNZXNzYWdlID0gY29tcHV0ZWQoKCkgPT4gZ2V0RXJyb3JNZXNzYWdlKHByb3BzLmVycm9yLCBlcnJvci52YWx1ZSkpO1xuICBjb25zdCBmb3JtYXR0ZWRMYWJlbCA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5yZXF1aXJlZCA/IGAke3Byb3BzLmxhYmVsfSAqYCA6IHByb3BzLmxhYmVsKSk7XG4gIGNvbnN0IGhhc0Vycm9yID0gY29tcHV0ZWQoXG4gICAgKCkgPT4gKHByb3BzLnJlcXVpcmVkICYmIHZhbHVlLnZhbHVlICE9PSB1bmRlZmluZWQgJiYgIXZhbHVlLnZhbHVlKSB8fCBnZXRGaWVsZEhhc0Vycm9yKGVycm9yLnZhbHVlLCBwcm9wcy5lcnJvcilcbiAgKTtcbiAgY29uc3QgaGFzTWluaWxhYmVsID0gY29tcHV0ZWQoKCkgPT4gaGFzRm9jdXMudmFsdWUgfHwgIWlzRW1wdHkudmFsdWUpO1xuICBjb25zdCBpc0VtcHR5ID0gY29tcHV0ZWQoKCkgPT4gdmFsdWUudmFsdWUgPT09ICcnIHx8IHZhbHVlLnZhbHVlID09PSB1bmRlZmluZWQpO1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gdHJ1ZTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGb2N1c091dCA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgaWYgKCF2YWx1ZS52YWx1ZSkge1xuICAgICAgdmFsdWUudmFsdWUgPSAnJztcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlVmFsaWRhdGlvbiA9ICgpID0+IHtcbiAgICByZXR1cm4gaGFuZGxlRmllbGRWYWxpZGF0aW9uKHtcbiAgICAgIGVycm9yLFxuICAgICAgZXJyb3JGcm9tUHJvcHM6IHByb3BzLmVycm9yLFxuICAgICAgbWF4bGVuZ3RoOiBwcm9wcy5tYXhsZW5ndGgsXG4gICAgICBtaW5sZW5ndGg6IHByb3BzLm1pbmxlbmd0aCxcbiAgICAgIHJlcXVpcmVkOiBwcm9wcy5yZXF1aXJlZCxcbiAgICAgIHZhbHVlLFxuICAgIH0pO1xuICB9O1xuXG4gIHdhdGNoKFxuICAgICgpID0+IHByb3BzLnZhbHVlLFxuICAgIChuZXdWYWx1ZSwgb2xkVmFsdWUpID0+IHtcbiAgICAgIGlmIChuZXdWYWx1ZSAhPT0gb2xkVmFsdWUgfHwgbmV3VmFsdWUgIT09IHZhbHVlLnZhbHVlKSB7XG4gICAgICAgIHZhbHVlLnZhbHVlID0gbmV3VmFsdWU7XG4gICAgICB9XG4gICAgfVxuICApO1xuXG4gIGRlZmluZUV4cG9zZSh7XG4gICAgZXJyb3IsXG4gICAgcmVxdWlyZWQ6IHByb3BzLnJlcXVpcmVkLFxuICAgIHZhbHVlLFxuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbJ3RpZGUtaW5wdXQtdGV4dGFyZWEnLCBDU1MuRElTUExBWS5GTEVYLCBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLCBDU1MuR0FQLlFVQVJURVIsIGhhc0Vycm9yICYmICdlcnJvciddXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtaW5wdXQtdGV4dGFyZWEtZmllbGQnLFxuICAgICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuSEFMRixcbiAgICAgICAgQ1NTLlBBRERJTkcuTEVGVC5PTkUsXG4gICAgICAgIENTUy5QQURESU5HLlRPUC5IQUxGLFxuICAgICAgICBDU1MuT1ZFUkZMT1cuWFkuSElEREVOLFxuICAgICAgICBDU1MuQkcuU1VSRkFDRS5ERUZBVUxULFxuICAgICAgXVwiXG4gICAgPlxuICAgICAgPGxhYmVsXG4gICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICBoYXNNaW5pbGFiZWwgPyBbJ21pbmlsYWJlbCcsIENTUy5GT05ULlJPTEUuTEFCRUxfM10gOiBDU1MuRk9OVC5ST0xFLkxBQkVMXzEsXG4gICAgICAgICAgIWhhc0Vycm9yICYmIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgICAgICBDU1MuQ1VSU09SLlRFWFQsXG4gICAgICAgICAgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRixcbiAgICAgICAgXVwiXG4gICAgICAgIDpmb3I9XCJwcm9wcy5pbnB1dElkXCJcbiAgICAgICAgcmVmPVwibGFiZWxcIlxuICAgICAgICB2LWlmPVwibGFiZWxcIlxuICAgICAgPlxuICAgICAgICB7eyBmb3JtYXR0ZWRMYWJlbCB9fVxuICAgICAgPC9sYWJlbD5cblxuICAgICAgPHRleHRhcmVhXG4gICAgICAgIDpjbGFzcz1cIltDU1MuV0lEVEguRlVMTCwgQ1NTLkZPTlQuUk9MRS5CT0RZXzFdXCJcbiAgICAgICAgOmRhdGEtdHJhY2s9XCJwcm9wcy5kYXRhVHJhY2tcIlxuICAgICAgICA6bWF4bGVuZ3RoPVwicHJvcHMubWF4bGVuZ3RoXCJcbiAgICAgICAgOm1pbmxlbmd0aD1cInByb3BzLm1pbmxlbmd0aFwiXG4gICAgICAgIDpuYW1lPVwicHJvcHMubmFtZVwiXG4gICAgICAgIHJlZj1cImlucHV0XCJcbiAgICAgICAgOnJlcXVpcmVkPVwicHJvcHMucmVxdWlyZWRcIlxuICAgICAgICA6cm93cz1cInByb3BzLnJvd3NcIlxuICAgICAgICBAY2hhbmdlPVwiaGFuZGxlVmFsaWRhdGlvblwiXG4gICAgICAgIEBmb2N1cz1cImhhbmRsZUZvY3VzXCJcbiAgICAgICAgQGZvY3Vzb3V0PVwiaGFuZGxlRm9jdXNPdXRcIlxuICAgICAgICA6aWQ9XCJwcm9wcy5pbnB1dElkXCJcbiAgICAgICAgdi1tb2RlbD1cInZhbHVlXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5RVUFSVEVSXVwiXG4gICAgICB2LWlmPVwicHJvcHMuc3VwcG9ydGluZ1RleHQgfHwgaGFzRXJyb3JcIlxuICAgID5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6aWNvbj1cIklDT04uRVJST1JcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICB2LWlmPVwiaGFzRXJyb3JcIlxuICAgICAgLz5cblxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5MQUJFTF8zXVwiPlxuICAgICAgICB7eyBoYXNFcnJvciA/IGVycm9yTWVzc2FnZSA6IHByb3BzLnN1cHBvcnRpbmdUZXh0IH19XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICB0ZXh0YXJlYSB7XG4gICAgcmVzaXplOiB2ZXJ0aWNhbDtcbiAgfVxuPC9zdHlsZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgbGFiZWwge1xuICAgIGhlaWdodDogMS4xODc1cmVtO1xuICAgIHRyYW5zaXRpb246IGZvbnQtc2l6ZSB2YXIoLS10aWRlLWFuaW1hdGUpLCB0cmFuc2Zvcm0gdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLmVycm9yIHtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1lcnJvci1wcmltYXJ5KTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLmVycm9yIC50aWRlLWlucHV0LXRleHRhcmVhLWZpZWxkIHtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLWJvcmRlcik7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1zdXJmYWNlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLmVycm9yOmZvY3VzLXdpdGhpbiAudGlkZS1pbnB1dC10ZXh0YXJlYS1maWVsZCB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWE6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LXRleHRhcmVhLWZpZWxkIHtcbiAgICAtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMik7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1zdXJmYWNlLWJvcmRlci1oaWdoKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhIHRleHRhcmVhIHtcbiAgICBvdXRsaW5lOiBub25lO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWEtZmllbGQge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0xKTtcbiAgICBvdXRsaW5lOiB2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpIHNvbGlkIHZhcigtLXRpZGUtYm9yZGVyKTtcbiAgICBvdXRsaW5lLW9mZnNldDogY2FsYyh2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpICogLTEpO1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLXN1cmZhY2UtZm9yZWdyb3VuZCk7XG4gIH1cbjwvc3R5bGU+XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSB2dWUvc29ydC1rZXlzICovXG5cbmV4cG9ydCBjb25zdCBCUkVBS1BPSU5UID0ge1xuICBTTTogJ3NtJyxcbiAgTUQ6ICdtZCcsXG4gIExHOiAnbGcnLFxuICBYTDogJ3hsJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBNRURJQSA9IHtcbiAgU006IDc2OCxcbiAgTUQ6IDk5MixcbiAgTEc6IDEyMzIsXG4gIFhMOiAxOTIwLFxufTtcblxuZXhwb3J0IHR5cGUgQnJlYWtwb2ludCA9ICh0eXBlb2YgQlJFQUtQT0lOVClba2V5b2YgdHlwZW9mIEJSRUFLUE9JTlRdO1xuZXhwb3J0IHR5cGUgTWVkaWEgPSAodHlwZW9mIE1FRElBKVtrZXlvZiB0eXBlb2YgTUVESUFdO1xuIiwiaW1wb3J0IHsgbmV4dFRpY2sgfSBmcm9tICd2dWUnO1xuXG4vKipcbiAqIERpcmVjdGx5IG1vZGlmaWVzIHRoZSBgPGJvZHk+YCBlbGVtZW50IHRvIGFwcGx5IG9yIHJlbW92ZSBzY3JvbGwgbG9jay5cbiAqIFdoZW4gYGZhbHNlYCBpcyBwcm92aWRlZCwgaXQgb25seSB1bmxvY2tzIHNjcm9sbCBpZiB0aGVyZSBhcmUgbm8gb3BlblxuICogSFRNTCBkaWFsb2cgZWxlbWVudHMuXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRTY3JvbGxMb2NrID0gYXN5bmMgKGlzTG9ja2VkOiBib29sZWFuKSA9PiB7XG4gIC8vIENhbm5vdCBiZSBhcHBsaWVkIHRvIGJvZHkgdGFnIGluIG1hcmtldHBsYWNlIHJlcG8gZHVlIHRvIGRhdGEtY3NzLXNjb3BlXG4gIC8vIGNvbnN0IEJPRFlfTE9DS19DTEFTUyA9ICdib2R5LXNjcm9sbC1sb2NrJztcblxuICBjb25zdCBib2R5ID0gZG9jdW1lbnQuYm9keTtcblxuICBpZiAoaXNMb2NrZWQpIHtcbiAgICBpZiAoIWJvZHkuZGF0YXNldC5zY3JvbGxMb2NrWSkge1xuICAgICAgY29uc3Qgc2Nyb2xsWSA9IHdpbmRvdy5zY3JvbGxZO1xuXG4gICAgICBib2R5LmRhdGFzZXQuc2Nyb2xsTG9ja1kgPSBzY3JvbGxZLnRvU3RyaW5nKCk7XG4gICAgICBib2R5LnN0eWxlLnNldFByb3BlcnR5KCctLXNhdmVkLXNjcm9sbC15JywgYCR7c2Nyb2xsWX1weGApO1xuICAgICAgYm9keS5zdHlsZS5zZXRQcm9wZXJ0eSgnaW5zZXQnLCAnMCcpO1xuICAgICAgYm9keS5zdHlsZS5zZXRQcm9wZXJ0eSgnbWFyZ2luLXRvcCcsIGBjYWxjKDBweCAtIHZhcigtLXNhdmVkLXNjcm9sbC15LCAwcHgpKWApO1xuICAgICAgYm9keS5zdHlsZS5zZXRQcm9wZXJ0eSgnb3ZlcmZsb3cteScsICdzY3JvbGwnKTtcbiAgICAgIGJvZHkuc3R5bGUuc2V0UHJvcGVydHkoJ3Bvc2l0aW9uJywgJ2ZpeGVkJyk7XG5cbiAgICAgIC8vIENhbm5vdCBiZSBhcHBsaWVkIHRvIGJvZHkgdGFnIGluIG1hcmtldHBsYWNlIHJlcG8gZHVlIHRvIGRhdGEtY3NzLXNjb3BlXG4gICAgICAvLyBib2R5LmNsYXNzTGlzdC5hZGQoQk9EWV9MT0NLX0NMQVNTKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgYXdhaXQgbmV4dFRpY2soKTtcbiAgICBpZiAoIWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2RpYWxvZ1tvcGVuXScpKSB7XG4gICAgICBjb25zdCBzYXZlZFNjcm9sbFkgPSBwYXJzZUludChib2R5LmRhdGFzZXQuc2Nyb2xsTG9ja1kgfHwgJzAnKTtcblxuICAgICAgLy8gQ2Fubm90IGJlIGFwcGxpZWQgdG8gYm9keSB0YWcgaW4gbWFya2V0cGxhY2UgcmVwbyBkdWUgdG8gZGF0YS1jc3Mtc2NvcGVcbiAgICAgIC8vIGJvZHkuY2xhc3NMaXN0LnJlbW92ZShCT0RZX0xPQ0tfQ0xBU1MpO1xuXG4gICAgICBib2R5LnN0eWxlLnJlbW92ZVByb3BlcnR5KCdpbnNldCcpO1xuICAgICAgYm9keS5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnbWFyZ2luVG9wJyk7XG4gICAgICBib2R5LnN0eWxlLnJlbW92ZVByb3BlcnR5KCdvdmVyZmxvd1knKTtcbiAgICAgIGJvZHkuc3R5bGUucmVtb3ZlUHJvcGVydHkoJ3Bvc2l0aW9uJyk7XG4gICAgICBib2R5LnN0eWxlLnJlbW92ZVByb3BlcnR5KCctLXNhdmVkLXNjcm9sbC15Jyk7XG5cbiAgICAgIHdpbmRvdy5zY3JvbGxUbyh7XG4gICAgICAgIGJlaGF2aW9yOiAnYXV0bycsXG4gICAgICAgIHRvcDogc2F2ZWRTY3JvbGxZLFxuICAgICAgfSk7XG5cbiAgICAgIGRlbGV0ZSBib2R5LmRhdGFzZXQuc2Nyb2xsTG9ja1k7XG4gICAgfVxuICB9XG59O1xuXG5leHBvcnQgY29uc3QgVE9QX0xBWUVSX0lEID0gJ3RpZGVUb3BMYXllcic7XG5cbmV4cG9ydCBjb25zdCBpbml0RmF1eFRvcExheWVyID0gKCkgPT4ge1xuICBsZXQgdG9wTGF5ZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChUT1BfTEFZRVJfSUQpO1xuICBpZiAoIXRvcExheWVyKSB7XG4gICAgdG9wTGF5ZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICB0b3BMYXllci5pZCA9IFRPUF9MQVlFUl9JRDtcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRvcExheWVyKTtcbiAgfVxuICB0b3BMYXllci5zdHlsZS5pc29sYXRpb24gPSAnaXNvbGF0ZSc7XG59O1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgbmV4dFRpY2ssIG9uTW91bnRlZCwgcmVmLCB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVCdXR0b25JY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlQnV0dG9uSWNvbi52dWUnO1xuICBpbXBvcnQgeyBCUkVBS1BPSU5UIH0gZnJvbSAnQC90eXBlcy9CcmVha3BvaW50JztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFBSSU9SSVRZIH0gZnJvbSAnQC90eXBlcy9Qcmlvcml0eSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgc2V0U2Nyb2xsTG9jayB9IGZyb20gJ0AvdXRpbGl0aWVzL3ZpZXdwb3J0JztcblxuICBpbXBvcnQgdHlwZSB7IFJlZiB9IGZyb20gJ3Z1ZSc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBpc0JhY2tCdXR0b24/OiBib29sZWFuO1xuICAgIGlzRGlzbWlzc2libGU/OiBib29sZWFuO1xuICAgIGlzT3BlbjogYm9vbGVhbjtcbiAgICB0aXRsZT86IHN0cmluZztcbiAgICB3aWR0aD86IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGlzQmFja0J1dHRvbjogZmFsc2UsXG4gICAgaXNEaXNtaXNzaWJsZTogdHJ1ZSxcbiAgICB0aXRsZTogdW5kZWZpbmVkLFxuICAgIHdpZHRoOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIHR5cGUgRW1pdHMgPSB7XG4gICAgKGU6ICdjbG9zZScpOiB2b2lkO1xuICAgIChlOiAnYmFjaycpOiB2b2lkO1xuICB9O1xuXG4gIGNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0czxFbWl0cz4oKTtcblxuICBjb25zdCBtb2RhbENvbnRlbnQ6IFJlZjxIVE1MRGl2RWxlbWVudCB8IHVuZGVmaW5lZD4gPSByZWYoKTtcbiAgY29uc3QgbW9kYWxEaWFsb2c6IFJlZjxIVE1MRGlhbG9nRWxlbWVudCB8IHVuZGVmaW5lZD4gPSByZWYoKTtcblxuICBjb25zdCB0cmlnZ2VyTmF0aXZlRGlhbG9nT3BlbiA9ICgpID0+IHtcbiAgICBtb2RhbERpYWxvZy52YWx1ZT8uc2hvd01vZGFsKCk7XG4gIH07XG5cbiAgY29uc3QgdHJpZ2dlck5hdGl2ZURpYWxvZ0Nsb3NlID0gKCkgPT4ge1xuICAgIG1vZGFsRGlhbG9nLnZhbHVlPy5jbG9zZSgpO1xuICB9O1xuXG4gIGNvbnN0IHNjcm9sbENvbnRlbnRUb1RvcCA9ICgpID0+IHtcbiAgICBuZXh0VGljaygoKSA9PiB7XG4gICAgICBpZiAoIW1vZGFsQ29udGVudC52YWx1ZSkgcmV0dXJuO1xuICAgICAgbW9kYWxDb250ZW50LnZhbHVlLnNjcm9sbFRvcCA9IDA7XG4gICAgfSk7XG4gIH07XG5cbiAgd2F0Y2goXG4gICAgKCkgPT4gcHJvcHMuaXNPcGVuLFxuICAgIChuZXdWYWx1ZSkgPT4ge1xuICAgICAgaWYgKCFtb2RhbERpYWxvZy52YWx1ZSkgcmV0dXJuO1xuICAgICAgaWYgKG5ld1ZhbHVlKSB7XG4gICAgICAgIHRyaWdnZXJOYXRpdmVEaWFsb2dPcGVuKCk7XG4gICAgICAgIHNjcm9sbENvbnRlbnRUb1RvcCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdHJpZ2dlck5hdGl2ZURpYWxvZ0Nsb3NlKCk7XG4gICAgICB9XG4gICAgICBzZXRTY3JvbGxMb2NrKG5ld1ZhbHVlKTtcbiAgICB9XG4gICk7XG5cbiAgb25Nb3VudGVkKCgpID0+IHtcbiAgICBpZiAocHJvcHMuaXNPcGVuKSB7XG4gICAgICB0cmlnZ2VyTmF0aXZlRGlhbG9nT3BlbigpO1xuICAgIH1cbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGlhbG9nXG4gICAgOmNsYXNzPVwiWyd0aWRlLW1vZGFsJywgQ1NTLkJHLklOSVRJQUwsIENTUy5IRUlHSFQuRlVMTCwgQ1NTLldJRFRILkZVTEwsIENTUy5PVkVSRkxPVy5YWS5ISURERU5dXCJcbiAgICByZWY9XCJtb2RhbERpYWxvZ1wiXG4gICAgOnN0eWxlPVwieyAnLS1tb2RhbC13aWR0aCc6IHByb3BzLndpZHRoIH1cIlxuICAgIEBjbGljay5zZWxmPVwiZW1pdCgnY2xvc2UnKVwiXG4gICAgQGNsb3NlPVwiZW1pdCgnY2xvc2UnKVwiXG4gID5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLW1vZGFsLWJvZHknLFxuICAgICAgICBDU1MuQkcuU1VSRkFDRS5ERUZBVUxULFxuICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5PTkUsXG4gICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sXG4gICAgICAgIENTUy5PVkVSRkxPVy5YWS5ISURERU4sXG4gICAgICAgIENTUy5QT1NJVElPTi5BQlNPTFVURSxcbiAgICAgICAgQ1NTLlBPU0lUSU9OSU5HLkJPVFRPTSxcbiAgICAgICAgQ1NTLlNIQURPVy5UT1AsXG4gICAgICAgIENTUy5XSURUSC5GVUxMLFxuICAgICAgICBDU1MuV0lEVEguTUFYX0ZVTEwsXG4gICAgICAgIENTUy53aXRoQnJlYWtwb2ludChbQ1NTLlNIQURPVy5CT1RUT01dLCBCUkVBS1BPSU5ULlNNKSxcbiAgICAgIF1cIlxuICAgID5cbiAgICAgIDxoZWFkZXJcbiAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICd0aWRlLW1vZGFsLWhlYWRlcicsXG4gICAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgICAgICBDU1MuUEFERElORy5ZLk9ORSxcbiAgICAgICAgICBDU1MuQk9SREVSLkJPVFRPTS5PTkUsXG4gICAgICAgICAgQ1NTLkJPUkRFUi5DT0xPUi5MT1csXG4gICAgICAgIF1cIlxuICAgICAgPlxuICAgICAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgICAgICA6aWNvbj1cIklDT04uQ0hFVlJPTl9MRUZUXCJcbiAgICAgICAgICA6cHJpb3JpdHk9XCJQUklPUklUWS5RVUFURVJOQVJZXCJcbiAgICAgICAgICBAY2xpY2s9XCJlbWl0KCdiYWNrJylcIlxuICAgICAgICAgIHRpdGxlPVwiQmFja1wiXG4gICAgICAgICAgdi1pZj1cImlzQmFja0J1dHRvblwiXG4gICAgICAgIC8+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkhFQURMSU5FXzJdXCJcbiAgICAgICAgICB2LXRleHQ9XCJ0aXRsZVwiXG4gICAgICAgIC8+XG5cbiAgICAgICAgPFRpZGVCdXR0b25JY29uXG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5GTEVYLkdST1cuT0ZGLCBDU1MuRkxFWC5TSFJJTksuT0ZGLCBDU1MuTUFSR0lOLkxFRlQuQVVUT11cIlxuICAgICAgICAgIDppY29uPVwiSUNPTi5DTE9TRVwiXG4gICAgICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuUVVBVEVSTkFSWVwiXG4gICAgICAgICAgQGNsaWNrPVwidHJpZ2dlck5hdGl2ZURpYWxvZ0Nsb3NlXCJcbiAgICAgICAgICB2LWlmPVwiaXNEaXNtaXNzaWJsZVwiXG4gICAgICAgIC8+XG4gICAgICA8L2hlYWRlcj5cblxuICAgICAgPGRpdlxuICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgJ3RpZGUtbW9kYWwtY29udGVudCcsXG4gICAgICAgICAgQ1NTLkRJU1BMQVkuR1JJRCxcbiAgICAgICAgICBDU1MuT1ZFUkZMT1cuWS5BVVRPLFxuICAgICAgICAgIENTUy5PVkVSRkxPVy5YLkhJRERFTixcbiAgICAgICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICAgICAgICBDU1MuUEFERElORy5ZLlRXTyxcbiAgICAgICAgXVwiXG4gICAgICAgIHJlZj1cIm1vZGFsQ29udGVudFwiXG4gICAgICA+XG4gICAgICAgIDxzbG90IC8+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGZvb3RlclxuICAgICAgICA6Y2xhc3M9XCJbJ3RpZGUtbW9kYWwtZm9vdGVyJywgQ1NTLkFYSVMxLkVORCwgQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkdBUC5UV08sIENTUy5QQURESU5HLlkuT05FLCBDU1MuU0hBRE9XLlRPUF1cIlxuICAgICAgICB2LWlmPVwiJHNsb3RzLmZvb3RlclwiXG4gICAgICA+XG4gICAgICAgIDxzbG90IG5hbWU9XCJmb290ZXJcIiAvPlxuICAgICAgPC9mb290ZXI+XG4gICAgPC9kaXY+XG4gIDwvZGlhbG9nPlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtbW9kYWwge1xuICAgIC0tbW9kYWwtcGFkZGluZy14OiAyMHB4O1xuICAgIG1heC13aWR0aDogdW5zZXQ7XG4gICAgbWF4LWhlaWdodDogdW5zZXQ7XG4gICAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcbiAgICBkaXNwbGF5OiBub25lO1xuICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS10aWRlLWFuaW1hdGUpIGFsbG93LWRpc2NyZXRlO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTtcbiAgfVxuICAudGlkZS1tb2RhbFtvcGVuXSB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCUpO1xuICB9XG4gIC50aWRlLW1vZGFsOjpiYWNrZHJvcCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRpZGUtYW5pbWF0ZSkgYWxsb3ctZGlzY3JldGU7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDBweCk7XG4gIH1cbiAgLnRpZGUtbW9kYWxbb3Blbl06OmJhY2tkcm9wIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10aWRlLXRyYW5zcGFyZW50LTQwMCk7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDRweCk7XG4gIH1cbiAgQHN0YXJ0aW5nLXN0eWxlIHtcbiAgICAudGlkZS1tb2RhbFtvcGVuXSB7XG4gICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpO1xuICAgIH1cbiAgICAudGlkZS1tb2RhbFtvcGVuXTo6YmFja2Ryb3Age1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoNHB4KTtcbiAgICB9XG4gIH1cbiAgLnRpZGUtbW9kYWwtYm9keSB7XG4gICAgd2lkdGg6IHZhcigtLW1vZGFsLXdpZHRoLCA1NzZweCk7XG4gICAgbWF4LWhlaWdodDogY2FsYygxMDAlIC0gdmFyKC0tdGlkZS1zcGFjaW5nLTIpKTtcbiAgfVxuXG4gIC50aWRlLW1vZGFsLWhlYWRlcixcbiAgLnRpZGUtbW9kYWwtZm9vdGVyIHtcbiAgICBwYWRkaW5nLWlubGluZTogdmFyKC0tbW9kYWwtcGFkZGluZy14KTtcbiAgfVxuICAudGlkZS1tb2RhbC1jb250ZW50IHtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHZhcigtLW1vZGFsLXBhZGRpbmcteCkgMWZyIHZhcigtLW1vZGFsLXBhZGRpbmcteCk7XG4gIH1cbiAgOndoZXJlKC50aWRlLW1vZGFsLWNvbnRlbnQpOmRlZXAoPiA6d2hlcmUoKikpIHtcbiAgICBncmlkLWNvbHVtbjogMjtcbiAgfVxuXG4gIEBtZWRpYSAobWF4LXdpZHRoOiA3NjdweCkge1xuICAgIC50aWRlLW1vZGFsLWJvZHkge1xuICAgICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDtcbiAgICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwO1xuICAgIH1cbiAgfVxuICBAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgICAudGlkZS1tb2RhbCB7XG4gICAgICAtLW1vZGFsLXBhZGRpbmcteDogdmFyKC0tdGlkZS1zcGFjaW5nLTIpO1xuICAgIH1cbiAgICAudGlkZS1tb2RhbC1ib2R5IHtcbiAgICAgIG1heC1oZWlnaHQ6IDg1JTtcbiAgICAgIGJvdHRvbTogaW5pdGlhbDtcbiAgICB9XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCwgcmVmIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUJ1dHRvbkljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVCdXR0b25JY29uLnZ1ZSc7XG4gIGltcG9ydCBUaWRlQnV0dG9uUGFnaW5hdGlvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUJ1dHRvblBhZ2luYXRpb24udnVlJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFBSSU9SSVRZIH0gZnJvbSAnQC90eXBlcy9Qcmlvcml0eSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIHBhZ2VDdXJyZW50PzogbnVtYmVyO1xuICAgIHBhZ2VUb3RhbD86IG51bWJlcjtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIHBhZ2VDdXJyZW50OiAxLFxuICAgIHBhZ2VUb3RhbDogMSxcbiAgfSk7XG5cbiAgY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzKFsnY2hhbmdlJ10pO1xuXG4gIGNvbnN0IHBhZ2VDdXJyZW50ID0gcmVmKHByb3BzLnBhZ2VDdXJyZW50KTtcblxuICBjb25zdCBwYWdpbmF0aW9uQnV0dG9ucyA9IGNvbXB1dGVkKCgpID0+IG5ldyBBcnJheShwcm9wcy5wYWdlVG90YWwpLmZpbGwoJycpLm1hcCgoZW1wdHksIGluZGV4KSA9PiBpbmRleCArIDEpKTtcblxuICBjb25zdCBoYW5kbGVDbGljayA9IChpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgcGFnZUN1cnJlbnQudmFsdWUgPSBpbmRleDtcblxuICAgIGVtaXQoJ2NoYW5nZScsIGV2ZW50LCBpbmRleCk7XG4gIH07XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8c2VjdGlvblxuICAgIDpjbGFzcz1cIlsndGlkZS1wYWdpbmF0aW9uJywgQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMxLkNFTlRFUiwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5RVUFSVEVSLCBDU1MuV0lEVEguRlVMTF1cIlxuICA+XG4gICAgPFRpZGVCdXR0b25JY29uXG4gICAgICA6ZGlzYWJsZWQ9XCJwYWdlQ3VycmVudCA9PT0gMVwiXG4gICAgICA6aWNvbj1cIklDT04uQ0hFVlJPTl9MRUZUXCJcbiAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlFVQVRFUk5BUllcIlxuICAgICAgQGNsaWNrPVwiaGFuZGxlQ2xpY2socGFnZUN1cnJlbnQgLSAxKVwiXG4gICAgLz5cblxuICAgIDx1bCA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5RVUFSVEVSLCBDU1MuTElTVF9CVUxMRVRTLk9GRl1cIj5cbiAgICAgIDxsaVxuICAgICAgICA6a2V5PVwicGFnaW5hdGlvbkJ1dHRvblwiXG4gICAgICAgIHYtZm9yPVwicGFnaW5hdGlvbkJ1dHRvbiBpbiBwYWdpbmF0aW9uQnV0dG9uc1wiXG4gICAgICA+XG4gICAgICAgIDxUaWRlQnV0dG9uUGFnaW5hdGlvblxuICAgICAgICAgIDpkaXNhYmxlZD1cInBhZ2VDdXJyZW50ID09PSBwYWdpbmF0aW9uQnV0dG9uXCJcbiAgICAgICAgICA6bGFiZWw9XCJwYWdpbmF0aW9uQnV0dG9uXCJcbiAgICAgICAgICA6cHJpb3JpdHk9XCJQUklPUklUWS5RVUFURVJOQVJZXCJcbiAgICAgICAgICBAY2xpY2s9XCJoYW5kbGVDbGljayhwYWdpbmF0aW9uQnV0dG9uKVwiXG4gICAgICAgIC8+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG5cbiAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgIDpkaXNhYmxlZD1cInBhZ2VDdXJyZW50ID09PSBwYWdpbmF0aW9uQnV0dG9uc1twYWdpbmF0aW9uQnV0dG9ucy5sZW5ndGggLSAxXVwiXG4gICAgICA6aWNvbj1cIklDT04uQ0hFVlJPTl9SSUdIVFwiXG4gICAgICA6cHJpb3JpdHk9XCJQUklPUklUWS5RVUFURVJOQVJZXCJcbiAgICAgIEBjbGljaz1cImhhbmRsZUNsaWNrKHBhZ2VDdXJyZW50ICsgMSlcIlxuICAgIC8+XG4gIDwvc2VjdGlvbj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+PC9zdHlsZT5cbiIsIi8qKlxuICogQ3VzdG9tIHBvc2l0aW9uaW5nIHJlZmVyZW5jZSBlbGVtZW50LlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL3ZpcnR1YWwtZWxlbWVudHNcbiAqL1xuXG5jb25zdCBzaWRlcyA9IFsndG9wJywgJ3JpZ2h0JywgJ2JvdHRvbScsICdsZWZ0J107XG5jb25zdCBhbGlnbm1lbnRzID0gWydzdGFydCcsICdlbmQnXTtcbmNvbnN0IHBsYWNlbWVudHMgPSAvKiNfX1BVUkVfXyovc2lkZXMucmVkdWNlKChhY2MsIHNpZGUpID0+IGFjYy5jb25jYXQoc2lkZSwgc2lkZSArIFwiLVwiICsgYWxpZ25tZW50c1swXSwgc2lkZSArIFwiLVwiICsgYWxpZ25tZW50c1sxXSksIFtdKTtcbmNvbnN0IG1pbiA9IE1hdGgubWluO1xuY29uc3QgbWF4ID0gTWF0aC5tYXg7XG5jb25zdCByb3VuZCA9IE1hdGgucm91bmQ7XG5jb25zdCBmbG9vciA9IE1hdGguZmxvb3I7XG5jb25zdCBjcmVhdGVDb29yZHMgPSB2ID0+ICh7XG4gIHg6IHYsXG4gIHk6IHZcbn0pO1xuY29uc3Qgb3Bwb3NpdGVTaWRlTWFwID0ge1xuICBsZWZ0OiAncmlnaHQnLFxuICByaWdodDogJ2xlZnQnLFxuICBib3R0b206ICd0b3AnLFxuICB0b3A6ICdib3R0b20nXG59O1xuY29uc3Qgb3Bwb3NpdGVBbGlnbm1lbnRNYXAgPSB7XG4gIHN0YXJ0OiAnZW5kJyxcbiAgZW5kOiAnc3RhcnQnXG59O1xuZnVuY3Rpb24gY2xhbXAoc3RhcnQsIHZhbHVlLCBlbmQpIHtcbiAgcmV0dXJuIG1heChzdGFydCwgbWluKHZhbHVlLCBlbmQpKTtcbn1cbmZ1bmN0aW9uIGV2YWx1YXRlKHZhbHVlLCBwYXJhbSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nID8gdmFsdWUocGFyYW0pIDogdmFsdWU7XG59XG5mdW5jdGlvbiBnZXRTaWRlKHBsYWNlbWVudCkge1xuICByZXR1cm4gcGxhY2VtZW50LnNwbGl0KCctJylbMF07XG59XG5mdW5jdGlvbiBnZXRBbGlnbm1lbnQocGxhY2VtZW50KSB7XG4gIHJldHVybiBwbGFjZW1lbnQuc3BsaXQoJy0nKVsxXTtcbn1cbmZ1bmN0aW9uIGdldE9wcG9zaXRlQXhpcyhheGlzKSB7XG4gIHJldHVybiBheGlzID09PSAneCcgPyAneScgOiAneCc7XG59XG5mdW5jdGlvbiBnZXRBeGlzTGVuZ3RoKGF4aXMpIHtcbiAgcmV0dXJuIGF4aXMgPT09ICd5JyA/ICdoZWlnaHQnIDogJ3dpZHRoJztcbn1cbmZ1bmN0aW9uIGdldFNpZGVBeGlzKHBsYWNlbWVudCkge1xuICByZXR1cm4gWyd0b3AnLCAnYm90dG9tJ10uaW5jbHVkZXMoZ2V0U2lkZShwbGFjZW1lbnQpKSA/ICd5JyA6ICd4Jztcbn1cbmZ1bmN0aW9uIGdldEFsaWdubWVudEF4aXMocGxhY2VtZW50KSB7XG4gIHJldHVybiBnZXRPcHBvc2l0ZUF4aXMoZ2V0U2lkZUF4aXMocGxhY2VtZW50KSk7XG59XG5mdW5jdGlvbiBnZXRBbGlnbm1lbnRTaWRlcyhwbGFjZW1lbnQsIHJlY3RzLCBydGwpIHtcbiAgaWYgKHJ0bCA9PT0gdm9pZCAwKSB7XG4gICAgcnRsID0gZmFsc2U7XG4gIH1cbiAgY29uc3QgYWxpZ25tZW50ID0gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCk7XG4gIGNvbnN0IGFsaWdubWVudEF4aXMgPSBnZXRBbGlnbm1lbnRBeGlzKHBsYWNlbWVudCk7XG4gIGNvbnN0IGxlbmd0aCA9IGdldEF4aXNMZW5ndGgoYWxpZ25tZW50QXhpcyk7XG4gIGxldCBtYWluQWxpZ25tZW50U2lkZSA9IGFsaWdubWVudEF4aXMgPT09ICd4JyA/IGFsaWdubWVudCA9PT0gKHJ0bCA/ICdlbmQnIDogJ3N0YXJ0JykgPyAncmlnaHQnIDogJ2xlZnQnIDogYWxpZ25tZW50ID09PSAnc3RhcnQnID8gJ2JvdHRvbScgOiAndG9wJztcbiAgaWYgKHJlY3RzLnJlZmVyZW5jZVtsZW5ndGhdID4gcmVjdHMuZmxvYXRpbmdbbGVuZ3RoXSkge1xuICAgIG1haW5BbGlnbm1lbnRTaWRlID0gZ2V0T3Bwb3NpdGVQbGFjZW1lbnQobWFpbkFsaWdubWVudFNpZGUpO1xuICB9XG4gIHJldHVybiBbbWFpbkFsaWdubWVudFNpZGUsIGdldE9wcG9zaXRlUGxhY2VtZW50KG1haW5BbGlnbm1lbnRTaWRlKV07XG59XG5mdW5jdGlvbiBnZXRFeHBhbmRlZFBsYWNlbWVudHMocGxhY2VtZW50KSB7XG4gIGNvbnN0IG9wcG9zaXRlUGxhY2VtZW50ID0gZ2V0T3Bwb3NpdGVQbGFjZW1lbnQocGxhY2VtZW50KTtcbiAgcmV0dXJuIFtnZXRPcHBvc2l0ZUFsaWdubWVudFBsYWNlbWVudChwbGFjZW1lbnQpLCBvcHBvc2l0ZVBsYWNlbWVudCwgZ2V0T3Bwb3NpdGVBbGlnbm1lbnRQbGFjZW1lbnQob3Bwb3NpdGVQbGFjZW1lbnQpXTtcbn1cbmZ1bmN0aW9uIGdldE9wcG9zaXRlQWxpZ25tZW50UGxhY2VtZW50KHBsYWNlbWVudCkge1xuICByZXR1cm4gcGxhY2VtZW50LnJlcGxhY2UoL3N0YXJ0fGVuZC9nLCBhbGlnbm1lbnQgPT4gb3Bwb3NpdGVBbGlnbm1lbnRNYXBbYWxpZ25tZW50XSk7XG59XG5mdW5jdGlvbiBnZXRTaWRlTGlzdChzaWRlLCBpc1N0YXJ0LCBydGwpIHtcbiAgY29uc3QgbHIgPSBbJ2xlZnQnLCAncmlnaHQnXTtcbiAgY29uc3QgcmwgPSBbJ3JpZ2h0JywgJ2xlZnQnXTtcbiAgY29uc3QgdGIgPSBbJ3RvcCcsICdib3R0b20nXTtcbiAgY29uc3QgYnQgPSBbJ2JvdHRvbScsICd0b3AnXTtcbiAgc3dpdGNoIChzaWRlKSB7XG4gICAgY2FzZSAndG9wJzpcbiAgICBjYXNlICdib3R0b20nOlxuICAgICAgaWYgKHJ0bCkgcmV0dXJuIGlzU3RhcnQgPyBybCA6IGxyO1xuICAgICAgcmV0dXJuIGlzU3RhcnQgPyBsciA6IHJsO1xuICAgIGNhc2UgJ2xlZnQnOlxuICAgIGNhc2UgJ3JpZ2h0JzpcbiAgICAgIHJldHVybiBpc1N0YXJ0ID8gdGIgOiBidDtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIFtdO1xuICB9XG59XG5mdW5jdGlvbiBnZXRPcHBvc2l0ZUF4aXNQbGFjZW1lbnRzKHBsYWNlbWVudCwgZmxpcEFsaWdubWVudCwgZGlyZWN0aW9uLCBydGwpIHtcbiAgY29uc3QgYWxpZ25tZW50ID0gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCk7XG4gIGxldCBsaXN0ID0gZ2V0U2lkZUxpc3QoZ2V0U2lkZShwbGFjZW1lbnQpLCBkaXJlY3Rpb24gPT09ICdzdGFydCcsIHJ0bCk7XG4gIGlmIChhbGlnbm1lbnQpIHtcbiAgICBsaXN0ID0gbGlzdC5tYXAoc2lkZSA9PiBzaWRlICsgXCItXCIgKyBhbGlnbm1lbnQpO1xuICAgIGlmIChmbGlwQWxpZ25tZW50KSB7XG4gICAgICBsaXN0ID0gbGlzdC5jb25jYXQobGlzdC5tYXAoZ2V0T3Bwb3NpdGVBbGlnbm1lbnRQbGFjZW1lbnQpKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGxpc3Q7XG59XG5mdW5jdGlvbiBnZXRPcHBvc2l0ZVBsYWNlbWVudChwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIHBsYWNlbWVudC5yZXBsYWNlKC9sZWZ0fHJpZ2h0fGJvdHRvbXx0b3AvZywgc2lkZSA9PiBvcHBvc2l0ZVNpZGVNYXBbc2lkZV0pO1xufVxuZnVuY3Rpb24gZXhwYW5kUGFkZGluZ09iamVjdChwYWRkaW5nKSB7XG4gIHJldHVybiB7XG4gICAgdG9wOiAwLFxuICAgIHJpZ2h0OiAwLFxuICAgIGJvdHRvbTogMCxcbiAgICBsZWZ0OiAwLFxuICAgIC4uLnBhZGRpbmdcbiAgfTtcbn1cbmZ1bmN0aW9uIGdldFBhZGRpbmdPYmplY3QocGFkZGluZykge1xuICByZXR1cm4gdHlwZW9mIHBhZGRpbmcgIT09ICdudW1iZXInID8gZXhwYW5kUGFkZGluZ09iamVjdChwYWRkaW5nKSA6IHtcbiAgICB0b3A6IHBhZGRpbmcsXG4gICAgcmlnaHQ6IHBhZGRpbmcsXG4gICAgYm90dG9tOiBwYWRkaW5nLFxuICAgIGxlZnQ6IHBhZGRpbmdcbiAgfTtcbn1cbmZ1bmN0aW9uIHJlY3RUb0NsaWVudFJlY3QocmVjdCkge1xuICBjb25zdCB7XG4gICAgeCxcbiAgICB5LFxuICAgIHdpZHRoLFxuICAgIGhlaWdodFxuICB9ID0gcmVjdDtcbiAgcmV0dXJuIHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gICAgdG9wOiB5LFxuICAgIGxlZnQ6IHgsXG4gICAgcmlnaHQ6IHggKyB3aWR0aCxcbiAgICBib3R0b206IHkgKyBoZWlnaHQsXG4gICAgeCxcbiAgICB5XG4gIH07XG59XG5cbmV4cG9ydCB7IGFsaWdubWVudHMsIGNsYW1wLCBjcmVhdGVDb29yZHMsIGV2YWx1YXRlLCBleHBhbmRQYWRkaW5nT2JqZWN0LCBmbG9vciwgZ2V0QWxpZ25tZW50LCBnZXRBbGlnbm1lbnRBeGlzLCBnZXRBbGlnbm1lbnRTaWRlcywgZ2V0QXhpc0xlbmd0aCwgZ2V0RXhwYW5kZWRQbGFjZW1lbnRzLCBnZXRPcHBvc2l0ZUFsaWdubWVudFBsYWNlbWVudCwgZ2V0T3Bwb3NpdGVBeGlzLCBnZXRPcHBvc2l0ZUF4aXNQbGFjZW1lbnRzLCBnZXRPcHBvc2l0ZVBsYWNlbWVudCwgZ2V0UGFkZGluZ09iamVjdCwgZ2V0U2lkZSwgZ2V0U2lkZUF4aXMsIG1heCwgbWluLCBwbGFjZW1lbnRzLCByZWN0VG9DbGllbnRSZWN0LCByb3VuZCwgc2lkZXMgfTtcbiIsImltcG9ydCB7IGdldFNpZGVBeGlzLCBnZXRBbGlnbm1lbnRBeGlzLCBnZXRBeGlzTGVuZ3RoLCBnZXRTaWRlLCBnZXRBbGlnbm1lbnQsIGV2YWx1YXRlLCBnZXRQYWRkaW5nT2JqZWN0LCByZWN0VG9DbGllbnRSZWN0LCBtaW4sIGNsYW1wLCBwbGFjZW1lbnRzLCBnZXRBbGlnbm1lbnRTaWRlcywgZ2V0T3Bwb3NpdGVBbGlnbm1lbnRQbGFjZW1lbnQsIGdldE9wcG9zaXRlUGxhY2VtZW50LCBnZXRFeHBhbmRlZFBsYWNlbWVudHMsIGdldE9wcG9zaXRlQXhpc1BsYWNlbWVudHMsIHNpZGVzLCBtYXgsIGdldE9wcG9zaXRlQXhpcyB9IGZyb20gJ0BmbG9hdGluZy11aS91dGlscyc7XG5leHBvcnQgeyByZWN0VG9DbGllbnRSZWN0IH0gZnJvbSAnQGZsb2F0aW5nLXVpL3V0aWxzJztcblxuZnVuY3Rpb24gY29tcHV0ZUNvb3Jkc0Zyb21QbGFjZW1lbnQoX3JlZiwgcGxhY2VtZW50LCBydGwpIHtcbiAgbGV0IHtcbiAgICByZWZlcmVuY2UsXG4gICAgZmxvYXRpbmdcbiAgfSA9IF9yZWY7XG4gIGNvbnN0IHNpZGVBeGlzID0gZ2V0U2lkZUF4aXMocGxhY2VtZW50KTtcbiAgY29uc3QgYWxpZ25tZW50QXhpcyA9IGdldEFsaWdubWVudEF4aXMocGxhY2VtZW50KTtcbiAgY29uc3QgYWxpZ25MZW5ndGggPSBnZXRBeGlzTGVuZ3RoKGFsaWdubWVudEF4aXMpO1xuICBjb25zdCBzaWRlID0gZ2V0U2lkZShwbGFjZW1lbnQpO1xuICBjb25zdCBpc1ZlcnRpY2FsID0gc2lkZUF4aXMgPT09ICd5JztcbiAgY29uc3QgY29tbW9uWCA9IHJlZmVyZW5jZS54ICsgcmVmZXJlbmNlLndpZHRoIC8gMiAtIGZsb2F0aW5nLndpZHRoIC8gMjtcbiAgY29uc3QgY29tbW9uWSA9IHJlZmVyZW5jZS55ICsgcmVmZXJlbmNlLmhlaWdodCAvIDIgLSBmbG9hdGluZy5oZWlnaHQgLyAyO1xuICBjb25zdCBjb21tb25BbGlnbiA9IHJlZmVyZW5jZVthbGlnbkxlbmd0aF0gLyAyIC0gZmxvYXRpbmdbYWxpZ25MZW5ndGhdIC8gMjtcbiAgbGV0IGNvb3JkcztcbiAgc3dpdGNoIChzaWRlKSB7XG4gICAgY2FzZSAndG9wJzpcbiAgICAgIGNvb3JkcyA9IHtcbiAgICAgICAgeDogY29tbW9uWCxcbiAgICAgICAgeTogcmVmZXJlbmNlLnkgLSBmbG9hdGluZy5oZWlnaHRcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICBjYXNlICdib3R0b20nOlxuICAgICAgY29vcmRzID0ge1xuICAgICAgICB4OiBjb21tb25YLFxuICAgICAgICB5OiByZWZlcmVuY2UueSArIHJlZmVyZW5jZS5oZWlnaHRcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICBjYXNlICdyaWdodCc6XG4gICAgICBjb29yZHMgPSB7XG4gICAgICAgIHg6IHJlZmVyZW5jZS54ICsgcmVmZXJlbmNlLndpZHRoLFxuICAgICAgICB5OiBjb21tb25ZXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnbGVmdCc6XG4gICAgICBjb29yZHMgPSB7XG4gICAgICAgIHg6IHJlZmVyZW5jZS54IC0gZmxvYXRpbmcud2lkdGgsXG4gICAgICAgIHk6IGNvbW1vbllcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgY29vcmRzID0ge1xuICAgICAgICB4OiByZWZlcmVuY2UueCxcbiAgICAgICAgeTogcmVmZXJlbmNlLnlcbiAgICAgIH07XG4gIH1cbiAgc3dpdGNoIChnZXRBbGlnbm1lbnQocGxhY2VtZW50KSkge1xuICAgIGNhc2UgJ3N0YXJ0JzpcbiAgICAgIGNvb3Jkc1thbGlnbm1lbnRBeGlzXSAtPSBjb21tb25BbGlnbiAqIChydGwgJiYgaXNWZXJ0aWNhbCA/IC0xIDogMSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdlbmQnOlxuICAgICAgY29vcmRzW2FsaWdubWVudEF4aXNdICs9IGNvbW1vbkFsaWduICogKHJ0bCAmJiBpc1ZlcnRpY2FsID8gLTEgOiAxKTtcbiAgICAgIGJyZWFrO1xuICB9XG4gIHJldHVybiBjb29yZHM7XG59XG5cbi8qKlxuICogQ29tcHV0ZXMgdGhlIGB4YCBhbmQgYHlgIGNvb3JkaW5hdGVzIHRoYXQgd2lsbCBwbGFjZSB0aGUgZmxvYXRpbmcgZWxlbWVudFxuICogbmV4dCB0byBhIGdpdmVuIHJlZmVyZW5jZSBlbGVtZW50LlxuICpcbiAqIFRoaXMgZXhwb3J0IGRvZXMgbm90IGhhdmUgYW55IGBwbGF0Zm9ybWAgaW50ZXJmYWNlIGxvZ2ljLiBZb3Ugd2lsbCBuZWVkIHRvXG4gKiB3cml0ZSBvbmUgZm9yIHRoZSBwbGF0Zm9ybSB5b3UgYXJlIHVzaW5nIEZsb2F0aW5nIFVJIHdpdGguXG4gKi9cbmNvbnN0IGNvbXB1dGVQb3NpdGlvbiA9IGFzeW5jIChyZWZlcmVuY2UsIGZsb2F0aW5nLCBjb25maWcpID0+IHtcbiAgY29uc3Qge1xuICAgIHBsYWNlbWVudCA9ICdib3R0b20nLFxuICAgIHN0cmF0ZWd5ID0gJ2Fic29sdXRlJyxcbiAgICBtaWRkbGV3YXJlID0gW10sXG4gICAgcGxhdGZvcm1cbiAgfSA9IGNvbmZpZztcbiAgY29uc3QgdmFsaWRNaWRkbGV3YXJlID0gbWlkZGxld2FyZS5maWx0ZXIoQm9vbGVhbik7XG4gIGNvbnN0IHJ0bCA9IGF3YWl0IChwbGF0Zm9ybS5pc1JUTCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uaXNSVEwoZmxvYXRpbmcpKTtcbiAgbGV0IHJlY3RzID0gYXdhaXQgcGxhdGZvcm0uZ2V0RWxlbWVudFJlY3RzKHtcbiAgICByZWZlcmVuY2UsXG4gICAgZmxvYXRpbmcsXG4gICAgc3RyYXRlZ3lcbiAgfSk7XG4gIGxldCB7XG4gICAgeCxcbiAgICB5XG4gIH0gPSBjb21wdXRlQ29vcmRzRnJvbVBsYWNlbWVudChyZWN0cywgcGxhY2VtZW50LCBydGwpO1xuICBsZXQgc3RhdGVmdWxQbGFjZW1lbnQgPSBwbGFjZW1lbnQ7XG4gIGxldCBtaWRkbGV3YXJlRGF0YSA9IHt9O1xuICBsZXQgcmVzZXRDb3VudCA9IDA7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdmFsaWRNaWRkbGV3YXJlLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3Qge1xuICAgICAgbmFtZSxcbiAgICAgIGZuXG4gICAgfSA9IHZhbGlkTWlkZGxld2FyZVtpXTtcbiAgICBjb25zdCB7XG4gICAgICB4OiBuZXh0WCxcbiAgICAgIHk6IG5leHRZLFxuICAgICAgZGF0YSxcbiAgICAgIHJlc2V0XG4gICAgfSA9IGF3YWl0IGZuKHtcbiAgICAgIHgsXG4gICAgICB5LFxuICAgICAgaW5pdGlhbFBsYWNlbWVudDogcGxhY2VtZW50LFxuICAgICAgcGxhY2VtZW50OiBzdGF0ZWZ1bFBsYWNlbWVudCxcbiAgICAgIHN0cmF0ZWd5LFxuICAgICAgbWlkZGxld2FyZURhdGEsXG4gICAgICByZWN0cyxcbiAgICAgIHBsYXRmb3JtLFxuICAgICAgZWxlbWVudHM6IHtcbiAgICAgICAgcmVmZXJlbmNlLFxuICAgICAgICBmbG9hdGluZ1xuICAgICAgfVxuICAgIH0pO1xuICAgIHggPSBuZXh0WCAhPSBudWxsID8gbmV4dFggOiB4O1xuICAgIHkgPSBuZXh0WSAhPSBudWxsID8gbmV4dFkgOiB5O1xuICAgIG1pZGRsZXdhcmVEYXRhID0ge1xuICAgICAgLi4ubWlkZGxld2FyZURhdGEsXG4gICAgICBbbmFtZV06IHtcbiAgICAgICAgLi4ubWlkZGxld2FyZURhdGFbbmFtZV0sXG4gICAgICAgIC4uLmRhdGFcbiAgICAgIH1cbiAgICB9O1xuICAgIGlmIChyZXNldCAmJiByZXNldENvdW50IDw9IDUwKSB7XG4gICAgICByZXNldENvdW50Kys7XG4gICAgICBpZiAodHlwZW9mIHJlc2V0ID09PSAnb2JqZWN0Jykge1xuICAgICAgICBpZiAocmVzZXQucGxhY2VtZW50KSB7XG4gICAgICAgICAgc3RhdGVmdWxQbGFjZW1lbnQgPSByZXNldC5wbGFjZW1lbnQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlc2V0LnJlY3RzKSB7XG4gICAgICAgICAgcmVjdHMgPSByZXNldC5yZWN0cyA9PT0gdHJ1ZSA/IGF3YWl0IHBsYXRmb3JtLmdldEVsZW1lbnRSZWN0cyh7XG4gICAgICAgICAgICByZWZlcmVuY2UsXG4gICAgICAgICAgICBmbG9hdGluZyxcbiAgICAgICAgICAgIHN0cmF0ZWd5XG4gICAgICAgICAgfSkgOiByZXNldC5yZWN0cztcbiAgICAgICAgfVxuICAgICAgICAoe1xuICAgICAgICAgIHgsXG4gICAgICAgICAgeVxuICAgICAgICB9ID0gY29tcHV0ZUNvb3Jkc0Zyb21QbGFjZW1lbnQocmVjdHMsIHN0YXRlZnVsUGxhY2VtZW50LCBydGwpKTtcbiAgICAgIH1cbiAgICAgIGkgPSAtMTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB4LFxuICAgIHksXG4gICAgcGxhY2VtZW50OiBzdGF0ZWZ1bFBsYWNlbWVudCxcbiAgICBzdHJhdGVneSxcbiAgICBtaWRkbGV3YXJlRGF0YVxuICB9O1xufTtcblxuLyoqXG4gKiBSZXNvbHZlcyB3aXRoIGFuIG9iamVjdCBvZiBvdmVyZmxvdyBzaWRlIG9mZnNldHMgdGhhdCBkZXRlcm1pbmUgaG93IG11Y2ggdGhlXG4gKiBlbGVtZW50IGlzIG92ZXJmbG93aW5nIGEgZ2l2ZW4gY2xpcHBpbmcgYm91bmRhcnkgb24gZWFjaCBzaWRlLlxuICogLSBwb3NpdGl2ZSA9IG92ZXJmbG93aW5nIHRoZSBib3VuZGFyeSBieSB0aGF0IG51bWJlciBvZiBwaXhlbHNcbiAqIC0gbmVnYXRpdmUgPSBob3cgbWFueSBwaXhlbHMgbGVmdCBiZWZvcmUgaXQgd2lsbCBvdmVyZmxvd1xuICogLSAwID0gbGllcyBmbHVzaCB3aXRoIHRoZSBib3VuZGFyeVxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2RldGVjdE92ZXJmbG93XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGRldGVjdE92ZXJmbG93KHN0YXRlLCBvcHRpb25zKSB7XG4gIHZhciBfYXdhaXQkcGxhdGZvcm0kaXNFbGU7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cbiAgY29uc3Qge1xuICAgIHgsXG4gICAgeSxcbiAgICBwbGF0Zm9ybSxcbiAgICByZWN0cyxcbiAgICBlbGVtZW50cyxcbiAgICBzdHJhdGVneVxuICB9ID0gc3RhdGU7XG4gIGNvbnN0IHtcbiAgICBib3VuZGFyeSA9ICdjbGlwcGluZ0FuY2VzdG9ycycsXG4gICAgcm9vdEJvdW5kYXJ5ID0gJ3ZpZXdwb3J0JyxcbiAgICBlbGVtZW50Q29udGV4dCA9ICdmbG9hdGluZycsXG4gICAgYWx0Qm91bmRhcnkgPSBmYWxzZSxcbiAgICBwYWRkaW5nID0gMFxuICB9ID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpO1xuICBjb25zdCBwYWRkaW5nT2JqZWN0ID0gZ2V0UGFkZGluZ09iamVjdChwYWRkaW5nKTtcbiAgY29uc3QgYWx0Q29udGV4dCA9IGVsZW1lbnRDb250ZXh0ID09PSAnZmxvYXRpbmcnID8gJ3JlZmVyZW5jZScgOiAnZmxvYXRpbmcnO1xuICBjb25zdCBlbGVtZW50ID0gZWxlbWVudHNbYWx0Qm91bmRhcnkgPyBhbHRDb250ZXh0IDogZWxlbWVudENvbnRleHRdO1xuICBjb25zdCBjbGlwcGluZ0NsaWVudFJlY3QgPSByZWN0VG9DbGllbnRSZWN0KGF3YWl0IHBsYXRmb3JtLmdldENsaXBwaW5nUmVjdCh7XG4gICAgZWxlbWVudDogKChfYXdhaXQkcGxhdGZvcm0kaXNFbGUgPSBhd2FpdCAocGxhdGZvcm0uaXNFbGVtZW50ID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5pc0VsZW1lbnQoZWxlbWVudCkpKSAhPSBudWxsID8gX2F3YWl0JHBsYXRmb3JtJGlzRWxlIDogdHJ1ZSkgPyBlbGVtZW50IDogZWxlbWVudC5jb250ZXh0RWxlbWVudCB8fCAoYXdhaXQgKHBsYXRmb3JtLmdldERvY3VtZW50RWxlbWVudCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnRzLmZsb2F0aW5nKSkpLFxuICAgIGJvdW5kYXJ5LFxuICAgIHJvb3RCb3VuZGFyeSxcbiAgICBzdHJhdGVneVxuICB9KSk7XG4gIGNvbnN0IHJlY3QgPSBlbGVtZW50Q29udGV4dCA9PT0gJ2Zsb2F0aW5nJyA/IHtcbiAgICB4LFxuICAgIHksXG4gICAgd2lkdGg6IHJlY3RzLmZsb2F0aW5nLndpZHRoLFxuICAgIGhlaWdodDogcmVjdHMuZmxvYXRpbmcuaGVpZ2h0XG4gIH0gOiByZWN0cy5yZWZlcmVuY2U7XG4gIGNvbnN0IG9mZnNldFBhcmVudCA9IGF3YWl0IChwbGF0Zm9ybS5nZXRPZmZzZXRQYXJlbnQgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmdldE9mZnNldFBhcmVudChlbGVtZW50cy5mbG9hdGluZykpO1xuICBjb25zdCBvZmZzZXRTY2FsZSA9IChhd2FpdCAocGxhdGZvcm0uaXNFbGVtZW50ID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5pc0VsZW1lbnQob2Zmc2V0UGFyZW50KSkpID8gKGF3YWl0IChwbGF0Zm9ybS5nZXRTY2FsZSA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uZ2V0U2NhbGUob2Zmc2V0UGFyZW50KSkpIHx8IHtcbiAgICB4OiAxLFxuICAgIHk6IDFcbiAgfSA6IHtcbiAgICB4OiAxLFxuICAgIHk6IDFcbiAgfTtcbiAgY29uc3QgZWxlbWVudENsaWVudFJlY3QgPSByZWN0VG9DbGllbnRSZWN0KHBsYXRmb3JtLmNvbnZlcnRPZmZzZXRQYXJlbnRSZWxhdGl2ZVJlY3RUb1ZpZXdwb3J0UmVsYXRpdmVSZWN0ID8gYXdhaXQgcGxhdGZvcm0uY29udmVydE9mZnNldFBhcmVudFJlbGF0aXZlUmVjdFRvVmlld3BvcnRSZWxhdGl2ZVJlY3Qoe1xuICAgIGVsZW1lbnRzLFxuICAgIHJlY3QsXG4gICAgb2Zmc2V0UGFyZW50LFxuICAgIHN0cmF0ZWd5XG4gIH0pIDogcmVjdCk7XG4gIHJldHVybiB7XG4gICAgdG9wOiAoY2xpcHBpbmdDbGllbnRSZWN0LnRvcCAtIGVsZW1lbnRDbGllbnRSZWN0LnRvcCArIHBhZGRpbmdPYmplY3QudG9wKSAvIG9mZnNldFNjYWxlLnksXG4gICAgYm90dG9tOiAoZWxlbWVudENsaWVudFJlY3QuYm90dG9tIC0gY2xpcHBpbmdDbGllbnRSZWN0LmJvdHRvbSArIHBhZGRpbmdPYmplY3QuYm90dG9tKSAvIG9mZnNldFNjYWxlLnksXG4gICAgbGVmdDogKGNsaXBwaW5nQ2xpZW50UmVjdC5sZWZ0IC0gZWxlbWVudENsaWVudFJlY3QubGVmdCArIHBhZGRpbmdPYmplY3QubGVmdCkgLyBvZmZzZXRTY2FsZS54LFxuICAgIHJpZ2h0OiAoZWxlbWVudENsaWVudFJlY3QucmlnaHQgLSBjbGlwcGluZ0NsaWVudFJlY3QucmlnaHQgKyBwYWRkaW5nT2JqZWN0LnJpZ2h0KSAvIG9mZnNldFNjYWxlLnhcbiAgfTtcbn1cblxuLyoqXG4gKiBQcm92aWRlcyBkYXRhIHRvIHBvc2l0aW9uIGFuIGlubmVyIGVsZW1lbnQgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgc28gdGhhdCBpdFxuICogYXBwZWFycyBjZW50ZXJlZCB0byB0aGUgcmVmZXJlbmNlIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvYXJyb3dcbiAqL1xuY29uc3QgYXJyb3cgPSBvcHRpb25zID0+ICh7XG4gIG5hbWU6ICdhcnJvdycsXG4gIG9wdGlvbnMsXG4gIGFzeW5jIGZuKHN0YXRlKSB7XG4gICAgY29uc3Qge1xuICAgICAgeCxcbiAgICAgIHksXG4gICAgICBwbGFjZW1lbnQsXG4gICAgICByZWN0cyxcbiAgICAgIHBsYXRmb3JtLFxuICAgICAgZWxlbWVudHMsXG4gICAgICBtaWRkbGV3YXJlRGF0YVxuICAgIH0gPSBzdGF0ZTtcbiAgICAvLyBTaW5jZSBgZWxlbWVudGAgaXMgcmVxdWlyZWQsIHdlIGRvbid0IFBhcnRpYWw8PiB0aGUgdHlwZS5cbiAgICBjb25zdCB7XG4gICAgICBlbGVtZW50LFxuICAgICAgcGFkZGluZyA9IDBcbiAgICB9ID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpIHx8IHt9O1xuICAgIGlmIChlbGVtZW50ID09IG51bGwpIHtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gICAgY29uc3QgcGFkZGluZ09iamVjdCA9IGdldFBhZGRpbmdPYmplY3QocGFkZGluZyk7XG4gICAgY29uc3QgY29vcmRzID0ge1xuICAgICAgeCxcbiAgICAgIHlcbiAgICB9O1xuICAgIGNvbnN0IGF4aXMgPSBnZXRBbGlnbm1lbnRBeGlzKHBsYWNlbWVudCk7XG4gICAgY29uc3QgbGVuZ3RoID0gZ2V0QXhpc0xlbmd0aChheGlzKTtcbiAgICBjb25zdCBhcnJvd0RpbWVuc2lvbnMgPSBhd2FpdCBwbGF0Zm9ybS5nZXREaW1lbnNpb25zKGVsZW1lbnQpO1xuICAgIGNvbnN0IGlzWUF4aXMgPSBheGlzID09PSAneSc7XG4gICAgY29uc3QgbWluUHJvcCA9IGlzWUF4aXMgPyAndG9wJyA6ICdsZWZ0JztcbiAgICBjb25zdCBtYXhQcm9wID0gaXNZQXhpcyA/ICdib3R0b20nIDogJ3JpZ2h0JztcbiAgICBjb25zdCBjbGllbnRQcm9wID0gaXNZQXhpcyA/ICdjbGllbnRIZWlnaHQnIDogJ2NsaWVudFdpZHRoJztcbiAgICBjb25zdCBlbmREaWZmID0gcmVjdHMucmVmZXJlbmNlW2xlbmd0aF0gKyByZWN0cy5yZWZlcmVuY2VbYXhpc10gLSBjb29yZHNbYXhpc10gLSByZWN0cy5mbG9hdGluZ1tsZW5ndGhdO1xuICAgIGNvbnN0IHN0YXJ0RGlmZiA9IGNvb3Jkc1theGlzXSAtIHJlY3RzLnJlZmVyZW5jZVtheGlzXTtcbiAgICBjb25zdCBhcnJvd09mZnNldFBhcmVudCA9IGF3YWl0IChwbGF0Zm9ybS5nZXRPZmZzZXRQYXJlbnQgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmdldE9mZnNldFBhcmVudChlbGVtZW50KSk7XG4gICAgbGV0IGNsaWVudFNpemUgPSBhcnJvd09mZnNldFBhcmVudCA/IGFycm93T2Zmc2V0UGFyZW50W2NsaWVudFByb3BdIDogMDtcblxuICAgIC8vIERPTSBwbGF0Zm9ybSBjYW4gcmV0dXJuIGB3aW5kb3dgIGFzIHRoZSBgb2Zmc2V0UGFyZW50YC5cbiAgICBpZiAoIWNsaWVudFNpemUgfHwgIShhd2FpdCAocGxhdGZvcm0uaXNFbGVtZW50ID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5pc0VsZW1lbnQoYXJyb3dPZmZzZXRQYXJlbnQpKSkpIHtcbiAgICAgIGNsaWVudFNpemUgPSBlbGVtZW50cy5mbG9hdGluZ1tjbGllbnRQcm9wXSB8fCByZWN0cy5mbG9hdGluZ1tsZW5ndGhdO1xuICAgIH1cbiAgICBjb25zdCBjZW50ZXJUb1JlZmVyZW5jZSA9IGVuZERpZmYgLyAyIC0gc3RhcnREaWZmIC8gMjtcblxuICAgIC8vIElmIHRoZSBwYWRkaW5nIGlzIGxhcmdlIGVub3VnaCB0aGF0IGl0IGNhdXNlcyB0aGUgYXJyb3cgdG8gbm8gbG9uZ2VyIGJlXG4gICAgLy8gY2VudGVyZWQsIG1vZGlmeSB0aGUgcGFkZGluZyBzbyB0aGF0IGl0IGlzIGNlbnRlcmVkLlxuICAgIGNvbnN0IGxhcmdlc3RQb3NzaWJsZVBhZGRpbmcgPSBjbGllbnRTaXplIC8gMiAtIGFycm93RGltZW5zaW9uc1tsZW5ndGhdIC8gMiAtIDE7XG4gICAgY29uc3QgbWluUGFkZGluZyA9IG1pbihwYWRkaW5nT2JqZWN0W21pblByb3BdLCBsYXJnZXN0UG9zc2libGVQYWRkaW5nKTtcbiAgICBjb25zdCBtYXhQYWRkaW5nID0gbWluKHBhZGRpbmdPYmplY3RbbWF4UHJvcF0sIGxhcmdlc3RQb3NzaWJsZVBhZGRpbmcpO1xuXG4gICAgLy8gTWFrZSBzdXJlIHRoZSBhcnJvdyBkb2Vzbid0IG92ZXJmbG93IHRoZSBmbG9hdGluZyBlbGVtZW50IGlmIHRoZSBjZW50ZXJcbiAgICAvLyBwb2ludCBpcyBvdXRzaWRlIHRoZSBmbG9hdGluZyBlbGVtZW50J3MgYm91bmRzLlxuICAgIGNvbnN0IG1pbiQxID0gbWluUGFkZGluZztcbiAgICBjb25zdCBtYXggPSBjbGllbnRTaXplIC0gYXJyb3dEaW1lbnNpb25zW2xlbmd0aF0gLSBtYXhQYWRkaW5nO1xuICAgIGNvbnN0IGNlbnRlciA9IGNsaWVudFNpemUgLyAyIC0gYXJyb3dEaW1lbnNpb25zW2xlbmd0aF0gLyAyICsgY2VudGVyVG9SZWZlcmVuY2U7XG4gICAgY29uc3Qgb2Zmc2V0ID0gY2xhbXAobWluJDEsIGNlbnRlciwgbWF4KTtcblxuICAgIC8vIElmIHRoZSByZWZlcmVuY2UgaXMgc21hbGwgZW5vdWdoIHRoYXQgdGhlIGFycm93J3MgcGFkZGluZyBjYXVzZXMgaXQgdG9cbiAgICAvLyB0byBwb2ludCB0byBub3RoaW5nIGZvciBhbiBhbGlnbmVkIHBsYWNlbWVudCwgYWRqdXN0IHRoZSBvZmZzZXQgb2YgdGhlXG4gICAgLy8gZmxvYXRpbmcgZWxlbWVudCBpdHNlbGYuIFRvIGVuc3VyZSBgc2hpZnQoKWAgY29udGludWVzIHRvIHRha2UgYWN0aW9uLFxuICAgIC8vIGEgc2luZ2xlIHJlc2V0IGlzIHBlcmZvcm1lZCB3aGVuIHRoaXMgaXMgdHJ1ZS5cbiAgICBjb25zdCBzaG91bGRBZGRPZmZzZXQgPSAhbWlkZGxld2FyZURhdGEuYXJyb3cgJiYgZ2V0QWxpZ25tZW50KHBsYWNlbWVudCkgIT0gbnVsbCAmJiBjZW50ZXIgIT09IG9mZnNldCAmJiByZWN0cy5yZWZlcmVuY2VbbGVuZ3RoXSAvIDIgLSAoY2VudGVyIDwgbWluJDEgPyBtaW5QYWRkaW5nIDogbWF4UGFkZGluZykgLSBhcnJvd0RpbWVuc2lvbnNbbGVuZ3RoXSAvIDIgPCAwO1xuICAgIGNvbnN0IGFsaWdubWVudE9mZnNldCA9IHNob3VsZEFkZE9mZnNldCA/IGNlbnRlciA8IG1pbiQxID8gY2VudGVyIC0gbWluJDEgOiBjZW50ZXIgLSBtYXggOiAwO1xuICAgIHJldHVybiB7XG4gICAgICBbYXhpc106IGNvb3Jkc1theGlzXSArIGFsaWdubWVudE9mZnNldCxcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgW2F4aXNdOiBvZmZzZXQsXG4gICAgICAgIGNlbnRlck9mZnNldDogY2VudGVyIC0gb2Zmc2V0IC0gYWxpZ25tZW50T2Zmc2V0LFxuICAgICAgICAuLi4oc2hvdWxkQWRkT2Zmc2V0ICYmIHtcbiAgICAgICAgICBhbGlnbm1lbnRPZmZzZXRcbiAgICAgICAgfSlcbiAgICAgIH0sXG4gICAgICByZXNldDogc2hvdWxkQWRkT2Zmc2V0XG4gICAgfTtcbiAgfVxufSk7XG5cbmZ1bmN0aW9uIGdldFBsYWNlbWVudExpc3QoYWxpZ25tZW50LCBhdXRvQWxpZ25tZW50LCBhbGxvd2VkUGxhY2VtZW50cykge1xuICBjb25zdCBhbGxvd2VkUGxhY2VtZW50c1NvcnRlZEJ5QWxpZ25tZW50ID0gYWxpZ25tZW50ID8gWy4uLmFsbG93ZWRQbGFjZW1lbnRzLmZpbHRlcihwbGFjZW1lbnQgPT4gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCkgPT09IGFsaWdubWVudCksIC4uLmFsbG93ZWRQbGFjZW1lbnRzLmZpbHRlcihwbGFjZW1lbnQgPT4gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCkgIT09IGFsaWdubWVudCldIDogYWxsb3dlZFBsYWNlbWVudHMuZmlsdGVyKHBsYWNlbWVudCA9PiBnZXRTaWRlKHBsYWNlbWVudCkgPT09IHBsYWNlbWVudCk7XG4gIHJldHVybiBhbGxvd2VkUGxhY2VtZW50c1NvcnRlZEJ5QWxpZ25tZW50LmZpbHRlcihwbGFjZW1lbnQgPT4ge1xuICAgIGlmIChhbGlnbm1lbnQpIHtcbiAgICAgIHJldHVybiBnZXRBbGlnbm1lbnQocGxhY2VtZW50KSA9PT0gYWxpZ25tZW50IHx8IChhdXRvQWxpZ25tZW50ID8gZ2V0T3Bwb3NpdGVBbGlnbm1lbnRQbGFjZW1lbnQocGxhY2VtZW50KSAhPT0gcGxhY2VtZW50IDogZmFsc2UpO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSk7XG59XG4vKipcbiAqIE9wdGltaXplcyB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCBieSBjaG9vc2luZyB0aGUgcGxhY2VtZW50XG4gKiB0aGF0IGhhcyB0aGUgbW9zdCBzcGFjZSBhdmFpbGFibGUgYXV0b21hdGljYWxseSwgd2l0aG91dCBuZWVkaW5nIHRvIHNwZWNpZnkgYVxuICogcHJlZmVycmVkIHBsYWNlbWVudC4gQWx0ZXJuYXRpdmUgdG8gYGZsaXBgLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2F1dG9QbGFjZW1lbnRcbiAqL1xuY29uc3QgYXV0b1BsYWNlbWVudCA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnYXV0b1BsYWNlbWVudCcsXG4gICAgb3B0aW9ucyxcbiAgICBhc3luYyBmbihzdGF0ZSkge1xuICAgICAgdmFyIF9taWRkbGV3YXJlRGF0YSRhdXRvUCwgX21pZGRsZXdhcmVEYXRhJGF1dG9QMiwgX3BsYWNlbWVudHNUaGF0Rml0T25FO1xuICAgICAgY29uc3Qge1xuICAgICAgICByZWN0cyxcbiAgICAgICAgbWlkZGxld2FyZURhdGEsXG4gICAgICAgIHBsYWNlbWVudCxcbiAgICAgICAgcGxhdGZvcm0sXG4gICAgICAgIGVsZW1lbnRzXG4gICAgICB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB7XG4gICAgICAgIGNyb3NzQXhpcyA9IGZhbHNlLFxuICAgICAgICBhbGlnbm1lbnQsXG4gICAgICAgIGFsbG93ZWRQbGFjZW1lbnRzID0gcGxhY2VtZW50cyxcbiAgICAgICAgYXV0b0FsaWdubWVudCA9IHRydWUsXG4gICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9uc1xuICAgICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcbiAgICAgIGNvbnN0IHBsYWNlbWVudHMkMSA9IGFsaWdubWVudCAhPT0gdW5kZWZpbmVkIHx8IGFsbG93ZWRQbGFjZW1lbnRzID09PSBwbGFjZW1lbnRzID8gZ2V0UGxhY2VtZW50TGlzdChhbGlnbm1lbnQgfHwgbnVsbCwgYXV0b0FsaWdubWVudCwgYWxsb3dlZFBsYWNlbWVudHMpIDogYWxsb3dlZFBsYWNlbWVudHM7XG4gICAgICBjb25zdCBvdmVyZmxvdyA9IGF3YWl0IGRldGVjdE92ZXJmbG93KHN0YXRlLCBkZXRlY3RPdmVyZmxvd09wdGlvbnMpO1xuICAgICAgY29uc3QgY3VycmVudEluZGV4ID0gKChfbWlkZGxld2FyZURhdGEkYXV0b1AgPSBtaWRkbGV3YXJlRGF0YS5hdXRvUGxhY2VtZW50KSA9PSBudWxsID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJGF1dG9QLmluZGV4KSB8fCAwO1xuICAgICAgY29uc3QgY3VycmVudFBsYWNlbWVudCA9IHBsYWNlbWVudHMkMVtjdXJyZW50SW5kZXhdO1xuICAgICAgaWYgKGN1cnJlbnRQbGFjZW1lbnQgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4ge307XG4gICAgICB9XG4gICAgICBjb25zdCBhbGlnbm1lbnRTaWRlcyA9IGdldEFsaWdubWVudFNpZGVzKGN1cnJlbnRQbGFjZW1lbnQsIHJlY3RzLCBhd2FpdCAocGxhdGZvcm0uaXNSVEwgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmlzUlRMKGVsZW1lbnRzLmZsb2F0aW5nKSkpO1xuXG4gICAgICAvLyBNYWtlIGBjb21wdXRlQ29vcmRzYCBzdGFydCBmcm9tIHRoZSByaWdodCBwbGFjZS5cbiAgICAgIGlmIChwbGFjZW1lbnQgIT09IGN1cnJlbnRQbGFjZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICByZXNldDoge1xuICAgICAgICAgICAgcGxhY2VtZW50OiBwbGFjZW1lbnRzJDFbMF1cbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBjb25zdCBjdXJyZW50T3ZlcmZsb3dzID0gW292ZXJmbG93W2dldFNpZGUoY3VycmVudFBsYWNlbWVudCldLCBvdmVyZmxvd1thbGlnbm1lbnRTaWRlc1swXV0sIG92ZXJmbG93W2FsaWdubWVudFNpZGVzWzFdXV07XG4gICAgICBjb25zdCBhbGxPdmVyZmxvd3MgPSBbLi4uKCgoX21pZGRsZXdhcmVEYXRhJGF1dG9QMiA9IG1pZGRsZXdhcmVEYXRhLmF1dG9QbGFjZW1lbnQpID09IG51bGwgPyB2b2lkIDAgOiBfbWlkZGxld2FyZURhdGEkYXV0b1AyLm92ZXJmbG93cykgfHwgW10pLCB7XG4gICAgICAgIHBsYWNlbWVudDogY3VycmVudFBsYWNlbWVudCxcbiAgICAgICAgb3ZlcmZsb3dzOiBjdXJyZW50T3ZlcmZsb3dzXG4gICAgICB9XTtcbiAgICAgIGNvbnN0IG5leHRQbGFjZW1lbnQgPSBwbGFjZW1lbnRzJDFbY3VycmVudEluZGV4ICsgMV07XG5cbiAgICAgIC8vIFRoZXJlIGFyZSBtb3JlIHBsYWNlbWVudHMgdG8gY2hlY2suXG4gICAgICBpZiAobmV4dFBsYWNlbWVudCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGluZGV4OiBjdXJyZW50SW5kZXggKyAxLFxuICAgICAgICAgICAgb3ZlcmZsb3dzOiBhbGxPdmVyZmxvd3NcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlc2V0OiB7XG4gICAgICAgICAgICBwbGFjZW1lbnQ6IG5leHRQbGFjZW1lbnRcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBjb25zdCBwbGFjZW1lbnRzU29ydGVkQnlNb3N0U3BhY2UgPSBhbGxPdmVyZmxvd3MubWFwKGQgPT4ge1xuICAgICAgICBjb25zdCBhbGlnbm1lbnQgPSBnZXRBbGlnbm1lbnQoZC5wbGFjZW1lbnQpO1xuICAgICAgICByZXR1cm4gW2QucGxhY2VtZW50LCBhbGlnbm1lbnQgJiYgY3Jvc3NBeGlzID9cbiAgICAgICAgLy8gQ2hlY2sgYWxvbmcgdGhlIG1haW5BeGlzIGFuZCBtYWluIGNyb3NzQXhpcyBzaWRlLlxuICAgICAgICBkLm92ZXJmbG93cy5zbGljZSgwLCAyKS5yZWR1Y2UoKGFjYywgdikgPT4gYWNjICsgdiwgMCkgOlxuICAgICAgICAvLyBDaGVjayBvbmx5IHRoZSBtYWluQXhpcy5cbiAgICAgICAgZC5vdmVyZmxvd3NbMF0sIGQub3ZlcmZsb3dzXTtcbiAgICAgIH0pLnNvcnQoKGEsIGIpID0+IGFbMV0gLSBiWzFdKTtcbiAgICAgIGNvbnN0IHBsYWNlbWVudHNUaGF0Rml0T25FYWNoU2lkZSA9IHBsYWNlbWVudHNTb3J0ZWRCeU1vc3RTcGFjZS5maWx0ZXIoZCA9PiBkWzJdLnNsaWNlKDAsXG4gICAgICAvLyBBbGlnbmVkIHBsYWNlbWVudHMgc2hvdWxkIG5vdCBjaGVjayB0aGVpciBvcHBvc2l0ZSBjcm9zc0F4aXNcbiAgICAgIC8vIHNpZGUuXG4gICAgICBnZXRBbGlnbm1lbnQoZFswXSkgPyAyIDogMykuZXZlcnkodiA9PiB2IDw9IDApKTtcbiAgICAgIGNvbnN0IHJlc2V0UGxhY2VtZW50ID0gKChfcGxhY2VtZW50c1RoYXRGaXRPbkUgPSBwbGFjZW1lbnRzVGhhdEZpdE9uRWFjaFNpZGVbMF0pID09IG51bGwgPyB2b2lkIDAgOiBfcGxhY2VtZW50c1RoYXRGaXRPbkVbMF0pIHx8IHBsYWNlbWVudHNTb3J0ZWRCeU1vc3RTcGFjZVswXVswXTtcbiAgICAgIGlmIChyZXNldFBsYWNlbWVudCAhPT0gcGxhY2VtZW50KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgaW5kZXg6IGN1cnJlbnRJbmRleCArIDEsXG4gICAgICAgICAgICBvdmVyZmxvd3M6IGFsbE92ZXJmbG93c1xuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVzZXQ6IHtcbiAgICAgICAgICAgIHBsYWNlbWVudDogcmVzZXRQbGFjZW1lbnRcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICB9O1xufTtcblxuLyoqXG4gKiBPcHRpbWl6ZXMgdGhlIHZpc2liaWxpdHkgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgYnkgZmxpcHBpbmcgdGhlIGBwbGFjZW1lbnRgXG4gKiBpbiBvcmRlciB0byBrZWVwIGl0IGluIHZpZXcgd2hlbiB0aGUgcHJlZmVycmVkIHBsYWNlbWVudChzKSB3aWxsIG92ZXJmbG93IHRoZVxuICogY2xpcHBpbmcgYm91bmRhcnkuIEFsdGVybmF0aXZlIHRvIGBhdXRvUGxhY2VtZW50YC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9mbGlwXG4gKi9cbmNvbnN0IGZsaXAgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ2ZsaXAnLFxuICAgIG9wdGlvbnMsXG4gICAgYXN5bmMgZm4oc3RhdGUpIHtcbiAgICAgIHZhciBfbWlkZGxld2FyZURhdGEkYXJyb3csIF9taWRkbGV3YXJlRGF0YSRmbGlwO1xuICAgICAgY29uc3Qge1xuICAgICAgICBwbGFjZW1lbnQsXG4gICAgICAgIG1pZGRsZXdhcmVEYXRhLFxuICAgICAgICByZWN0cyxcbiAgICAgICAgaW5pdGlhbFBsYWNlbWVudCxcbiAgICAgICAgcGxhdGZvcm0sXG4gICAgICAgIGVsZW1lbnRzXG4gICAgICB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB7XG4gICAgICAgIG1haW5BeGlzOiBjaGVja01haW5BeGlzID0gdHJ1ZSxcbiAgICAgICAgY3Jvc3NBeGlzOiBjaGVja0Nyb3NzQXhpcyA9IHRydWUsXG4gICAgICAgIGZhbGxiYWNrUGxhY2VtZW50czogc3BlY2lmaWVkRmFsbGJhY2tQbGFjZW1lbnRzLFxuICAgICAgICBmYWxsYmFja1N0cmF0ZWd5ID0gJ2Jlc3RGaXQnLFxuICAgICAgICBmYWxsYmFja0F4aXNTaWRlRGlyZWN0aW9uID0gJ25vbmUnLFxuICAgICAgICBmbGlwQWxpZ25tZW50ID0gdHJ1ZSxcbiAgICAgICAgLi4uZGV0ZWN0T3ZlcmZsb3dPcHRpb25zXG4gICAgICB9ID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpO1xuXG4gICAgICAvLyBJZiBhIHJlc2V0IGJ5IHRoZSBhcnJvdyB3YXMgY2F1c2VkIGR1ZSB0byBhbiBhbGlnbm1lbnQgb2Zmc2V0IGJlaW5nXG4gICAgICAvLyBhZGRlZCwgd2Ugc2hvdWxkIHNraXAgYW55IGxvZ2ljIG5vdyBzaW5jZSBgZmxpcCgpYCBoYXMgYWxyZWFkeSBkb25lIGl0c1xuICAgICAgLy8gd29yay5cbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mbG9hdGluZy11aS9mbG9hdGluZy11aS9pc3N1ZXMvMjU0OSNpc3N1ZWNvbW1lbnQtMTcxOTYwMTY0M1xuICAgICAgaWYgKChfbWlkZGxld2FyZURhdGEkYXJyb3cgPSBtaWRkbGV3YXJlRGF0YS5hcnJvdykgIT0gbnVsbCAmJiBfbWlkZGxld2FyZURhdGEkYXJyb3cuYWxpZ25tZW50T2Zmc2V0KSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHNpZGUgPSBnZXRTaWRlKHBsYWNlbWVudCk7XG4gICAgICBjb25zdCBpbml0aWFsU2lkZUF4aXMgPSBnZXRTaWRlQXhpcyhpbml0aWFsUGxhY2VtZW50KTtcbiAgICAgIGNvbnN0IGlzQmFzZVBsYWNlbWVudCA9IGdldFNpZGUoaW5pdGlhbFBsYWNlbWVudCkgPT09IGluaXRpYWxQbGFjZW1lbnQ7XG4gICAgICBjb25zdCBydGwgPSBhd2FpdCAocGxhdGZvcm0uaXNSVEwgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmlzUlRMKGVsZW1lbnRzLmZsb2F0aW5nKSk7XG4gICAgICBjb25zdCBmYWxsYmFja1BsYWNlbWVudHMgPSBzcGVjaWZpZWRGYWxsYmFja1BsYWNlbWVudHMgfHwgKGlzQmFzZVBsYWNlbWVudCB8fCAhZmxpcEFsaWdubWVudCA/IFtnZXRPcHBvc2l0ZVBsYWNlbWVudChpbml0aWFsUGxhY2VtZW50KV0gOiBnZXRFeHBhbmRlZFBsYWNlbWVudHMoaW5pdGlhbFBsYWNlbWVudCkpO1xuICAgICAgY29uc3QgaGFzRmFsbGJhY2tBeGlzU2lkZURpcmVjdGlvbiA9IGZhbGxiYWNrQXhpc1NpZGVEaXJlY3Rpb24gIT09ICdub25lJztcbiAgICAgIGlmICghc3BlY2lmaWVkRmFsbGJhY2tQbGFjZW1lbnRzICYmIGhhc0ZhbGxiYWNrQXhpc1NpZGVEaXJlY3Rpb24pIHtcbiAgICAgICAgZmFsbGJhY2tQbGFjZW1lbnRzLnB1c2goLi4uZ2V0T3Bwb3NpdGVBeGlzUGxhY2VtZW50cyhpbml0aWFsUGxhY2VtZW50LCBmbGlwQWxpZ25tZW50LCBmYWxsYmFja0F4aXNTaWRlRGlyZWN0aW9uLCBydGwpKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHBsYWNlbWVudHMgPSBbaW5pdGlhbFBsYWNlbWVudCwgLi4uZmFsbGJhY2tQbGFjZW1lbnRzXTtcbiAgICAgIGNvbnN0IG92ZXJmbG93ID0gYXdhaXQgZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIGRldGVjdE92ZXJmbG93T3B0aW9ucyk7XG4gICAgICBjb25zdCBvdmVyZmxvd3MgPSBbXTtcbiAgICAgIGxldCBvdmVyZmxvd3NEYXRhID0gKChfbWlkZGxld2FyZURhdGEkZmxpcCA9IG1pZGRsZXdhcmVEYXRhLmZsaXApID09IG51bGwgPyB2b2lkIDAgOiBfbWlkZGxld2FyZURhdGEkZmxpcC5vdmVyZmxvd3MpIHx8IFtdO1xuICAgICAgaWYgKGNoZWNrTWFpbkF4aXMpIHtcbiAgICAgICAgb3ZlcmZsb3dzLnB1c2gob3ZlcmZsb3dbc2lkZV0pO1xuICAgICAgfVxuICAgICAgaWYgKGNoZWNrQ3Jvc3NBeGlzKSB7XG4gICAgICAgIGNvbnN0IHNpZGVzID0gZ2V0QWxpZ25tZW50U2lkZXMocGxhY2VtZW50LCByZWN0cywgcnRsKTtcbiAgICAgICAgb3ZlcmZsb3dzLnB1c2gob3ZlcmZsb3dbc2lkZXNbMF1dLCBvdmVyZmxvd1tzaWRlc1sxXV0pO1xuICAgICAgfVxuICAgICAgb3ZlcmZsb3dzRGF0YSA9IFsuLi5vdmVyZmxvd3NEYXRhLCB7XG4gICAgICAgIHBsYWNlbWVudCxcbiAgICAgICAgb3ZlcmZsb3dzXG4gICAgICB9XTtcblxuICAgICAgLy8gT25lIG9yIG1vcmUgc2lkZXMgaXMgb3ZlcmZsb3dpbmcuXG4gICAgICBpZiAoIW92ZXJmbG93cy5ldmVyeShzaWRlID0+IHNpZGUgPD0gMCkpIHtcbiAgICAgICAgdmFyIF9taWRkbGV3YXJlRGF0YSRmbGlwMiwgX292ZXJmbG93c0RhdGEkZmlsdGVyO1xuICAgICAgICBjb25zdCBuZXh0SW5kZXggPSAoKChfbWlkZGxld2FyZURhdGEkZmxpcDIgPSBtaWRkbGV3YXJlRGF0YS5mbGlwKSA9PSBudWxsID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJGZsaXAyLmluZGV4KSB8fCAwKSArIDE7XG4gICAgICAgIGNvbnN0IG5leHRQbGFjZW1lbnQgPSBwbGFjZW1lbnRzW25leHRJbmRleF07XG4gICAgICAgIGlmIChuZXh0UGxhY2VtZW50KSB7XG4gICAgICAgICAgLy8gVHJ5IG5leHQgcGxhY2VtZW50IGFuZCByZS1ydW4gdGhlIGxpZmVjeWNsZS5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICBpbmRleDogbmV4dEluZGV4LFxuICAgICAgICAgICAgICBvdmVyZmxvd3M6IG92ZXJmbG93c0RhdGFcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZXNldDoge1xuICAgICAgICAgICAgICBwbGFjZW1lbnQ6IG5leHRQbGFjZW1lbnRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRmlyc3QsIGZpbmQgdGhlIGNhbmRpZGF0ZXMgdGhhdCBmaXQgb24gdGhlIG1haW5BeGlzIHNpZGUgb2Ygb3ZlcmZsb3csXG4gICAgICAgIC8vIHRoZW4gZmluZCB0aGUgcGxhY2VtZW50IHRoYXQgZml0cyB0aGUgYmVzdCBvbiB0aGUgbWFpbiBjcm9zc0F4aXMgc2lkZS5cbiAgICAgICAgbGV0IHJlc2V0UGxhY2VtZW50ID0gKF9vdmVyZmxvd3NEYXRhJGZpbHRlciA9IG92ZXJmbG93c0RhdGEuZmlsdGVyKGQgPT4gZC5vdmVyZmxvd3NbMF0gPD0gMCkuc29ydCgoYSwgYikgPT4gYS5vdmVyZmxvd3NbMV0gLSBiLm92ZXJmbG93c1sxXSlbMF0pID09IG51bGwgPyB2b2lkIDAgOiBfb3ZlcmZsb3dzRGF0YSRmaWx0ZXIucGxhY2VtZW50O1xuXG4gICAgICAgIC8vIE90aGVyd2lzZSBmYWxsYmFjay5cbiAgICAgICAgaWYgKCFyZXNldFBsYWNlbWVudCkge1xuICAgICAgICAgIHN3aXRjaCAoZmFsbGJhY2tTdHJhdGVneSkge1xuICAgICAgICAgICAgY2FzZSAnYmVzdEZpdCc6XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB2YXIgX292ZXJmbG93c0RhdGEkZmlsdGVyMjtcbiAgICAgICAgICAgICAgICBjb25zdCBwbGFjZW1lbnQgPSAoX292ZXJmbG93c0RhdGEkZmlsdGVyMiA9IG92ZXJmbG93c0RhdGEuZmlsdGVyKGQgPT4ge1xuICAgICAgICAgICAgICAgICAgaWYgKGhhc0ZhbGxiYWNrQXhpc1NpZGVEaXJlY3Rpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY3VycmVudFNpZGVBeGlzID0gZ2V0U2lkZUF4aXMoZC5wbGFjZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3VycmVudFNpZGVBeGlzID09PSBpbml0aWFsU2lkZUF4aXMgfHxcbiAgICAgICAgICAgICAgICAgICAgLy8gQ3JlYXRlIGEgYmlhcyB0byB0aGUgYHlgIHNpZGUgYXhpcyBkdWUgdG8gaG9yaXpvbnRhbFxuICAgICAgICAgICAgICAgICAgICAvLyByZWFkaW5nIGRpcmVjdGlvbnMgZmF2b3JpbmcgZ3JlYXRlciB3aWR0aC5cbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFNpZGVBeGlzID09PSAneSc7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9KS5tYXAoZCA9PiBbZC5wbGFjZW1lbnQsIGQub3ZlcmZsb3dzLmZpbHRlcihvdmVyZmxvdyA9PiBvdmVyZmxvdyA+IDApLnJlZHVjZSgoYWNjLCBvdmVyZmxvdykgPT4gYWNjICsgb3ZlcmZsb3csIDApXSkuc29ydCgoYSwgYikgPT4gYVsxXSAtIGJbMV0pWzBdKSA9PSBudWxsID8gdm9pZCAwIDogX292ZXJmbG93c0RhdGEkZmlsdGVyMlswXTtcbiAgICAgICAgICAgICAgICBpZiAocGxhY2VtZW50KSB7XG4gICAgICAgICAgICAgICAgICByZXNldFBsYWNlbWVudCA9IHBsYWNlbWVudDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ2luaXRpYWxQbGFjZW1lbnQnOlxuICAgICAgICAgICAgICByZXNldFBsYWNlbWVudCA9IGluaXRpYWxQbGFjZW1lbnQ7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAocGxhY2VtZW50ICE9PSByZXNldFBsYWNlbWVudCkge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICByZXNldDoge1xuICAgICAgICAgICAgICBwbGFjZW1lbnQ6IHJlc2V0UGxhY2VtZW50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgfTtcbn07XG5cbmZ1bmN0aW9uIGdldFNpZGVPZmZzZXRzKG92ZXJmbG93LCByZWN0KSB7XG4gIHJldHVybiB7XG4gICAgdG9wOiBvdmVyZmxvdy50b3AgLSByZWN0LmhlaWdodCxcbiAgICByaWdodDogb3ZlcmZsb3cucmlnaHQgLSByZWN0LndpZHRoLFxuICAgIGJvdHRvbTogb3ZlcmZsb3cuYm90dG9tIC0gcmVjdC5oZWlnaHQsXG4gICAgbGVmdDogb3ZlcmZsb3cubGVmdCAtIHJlY3Qud2lkdGhcbiAgfTtcbn1cbmZ1bmN0aW9uIGlzQW55U2lkZUZ1bGx5Q2xpcHBlZChvdmVyZmxvdykge1xuICByZXR1cm4gc2lkZXMuc29tZShzaWRlID0+IG92ZXJmbG93W3NpZGVdID49IDApO1xufVxuLyoqXG4gKiBQcm92aWRlcyBkYXRhIHRvIGhpZGUgdGhlIGZsb2F0aW5nIGVsZW1lbnQgaW4gYXBwbGljYWJsZSBzaXR1YXRpb25zLCBzdWNoIGFzXG4gKiB3aGVuIGl0IGlzIG5vdCBpbiB0aGUgc2FtZSBjbGlwcGluZyBjb250ZXh0IGFzIHRoZSByZWZlcmVuY2UgZWxlbWVudC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9oaWRlXG4gKi9cbmNvbnN0IGhpZGUgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ2hpZGUnLFxuICAgIG9wdGlvbnMsXG4gICAgYXN5bmMgZm4oc3RhdGUpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgcmVjdHNcbiAgICAgIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgc3RyYXRlZ3kgPSAncmVmZXJlbmNlSGlkZGVuJyxcbiAgICAgICAgLi4uZGV0ZWN0T3ZlcmZsb3dPcHRpb25zXG4gICAgICB9ID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpO1xuICAgICAgc3dpdGNoIChzdHJhdGVneSkge1xuICAgICAgICBjYXNlICdyZWZlcmVuY2VIaWRkZW4nOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvbnN0IG92ZXJmbG93ID0gYXdhaXQgZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIHtcbiAgICAgICAgICAgICAgLi4uZGV0ZWN0T3ZlcmZsb3dPcHRpb25zLFxuICAgICAgICAgICAgICBlbGVtZW50Q29udGV4dDogJ3JlZmVyZW5jZSdcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3Qgb2Zmc2V0cyA9IGdldFNpZGVPZmZzZXRzKG92ZXJmbG93LCByZWN0cy5yZWZlcmVuY2UpO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgIHJlZmVyZW5jZUhpZGRlbk9mZnNldHM6IG9mZnNldHMsXG4gICAgICAgICAgICAgICAgcmVmZXJlbmNlSGlkZGVuOiBpc0FueVNpZGVGdWxseUNsaXBwZWQob2Zmc2V0cylcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgIGNhc2UgJ2VzY2FwZWQnOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvbnN0IG92ZXJmbG93ID0gYXdhaXQgZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIHtcbiAgICAgICAgICAgICAgLi4uZGV0ZWN0T3ZlcmZsb3dPcHRpb25zLFxuICAgICAgICAgICAgICBhbHRCb3VuZGFyeTogdHJ1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb25zdCBvZmZzZXRzID0gZ2V0U2lkZU9mZnNldHMob3ZlcmZsb3csIHJlY3RzLmZsb2F0aW5nKTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICBlc2NhcGVkT2Zmc2V0czogb2Zmc2V0cyxcbiAgICAgICAgICAgICAgICBlc2NhcGVkOiBpc0FueVNpZGVGdWxseUNsaXBwZWQob2Zmc2V0cylcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAge1xuICAgICAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG59O1xuXG5mdW5jdGlvbiBnZXRCb3VuZGluZ1JlY3QocmVjdHMpIHtcbiAgY29uc3QgbWluWCA9IG1pbiguLi5yZWN0cy5tYXAocmVjdCA9PiByZWN0LmxlZnQpKTtcbiAgY29uc3QgbWluWSA9IG1pbiguLi5yZWN0cy5tYXAocmVjdCA9PiByZWN0LnRvcCkpO1xuICBjb25zdCBtYXhYID0gbWF4KC4uLnJlY3RzLm1hcChyZWN0ID0+IHJlY3QucmlnaHQpKTtcbiAgY29uc3QgbWF4WSA9IG1heCguLi5yZWN0cy5tYXAocmVjdCA9PiByZWN0LmJvdHRvbSkpO1xuICByZXR1cm4ge1xuICAgIHg6IG1pblgsXG4gICAgeTogbWluWSxcbiAgICB3aWR0aDogbWF4WCAtIG1pblgsXG4gICAgaGVpZ2h0OiBtYXhZIC0gbWluWVxuICB9O1xufVxuZnVuY3Rpb24gZ2V0UmVjdHNCeUxpbmUocmVjdHMpIHtcbiAgY29uc3Qgc29ydGVkUmVjdHMgPSByZWN0cy5zbGljZSgpLnNvcnQoKGEsIGIpID0+IGEueSAtIGIueSk7XG4gIGNvbnN0IGdyb3VwcyA9IFtdO1xuICBsZXQgcHJldlJlY3QgPSBudWxsO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHNvcnRlZFJlY3RzLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgcmVjdCA9IHNvcnRlZFJlY3RzW2ldO1xuICAgIGlmICghcHJldlJlY3QgfHwgcmVjdC55IC0gcHJldlJlY3QueSA+IHByZXZSZWN0LmhlaWdodCAvIDIpIHtcbiAgICAgIGdyb3Vwcy5wdXNoKFtyZWN0XSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGdyb3Vwc1tncm91cHMubGVuZ3RoIC0gMV0ucHVzaChyZWN0KTtcbiAgICB9XG4gICAgcHJldlJlY3QgPSByZWN0O1xuICB9XG4gIHJldHVybiBncm91cHMubWFwKHJlY3QgPT4gcmVjdFRvQ2xpZW50UmVjdChnZXRCb3VuZGluZ1JlY3QocmVjdCkpKTtcbn1cbi8qKlxuICogUHJvdmlkZXMgaW1wcm92ZWQgcG9zaXRpb25pbmcgZm9yIGlubGluZSByZWZlcmVuY2UgZWxlbWVudHMgdGhhdCBjYW4gc3BhblxuICogb3ZlciBtdWx0aXBsZSBsaW5lcywgc3VjaCBhcyBoeXBlcmxpbmtzIG9yIHJhbmdlIHNlbGVjdGlvbnMuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvaW5saW5lXG4gKi9cbmNvbnN0IGlubGluZSA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnaW5saW5lJyxcbiAgICBvcHRpb25zLFxuICAgIGFzeW5jIGZuKHN0YXRlKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHBsYWNlbWVudCxcbiAgICAgICAgZWxlbWVudHMsXG4gICAgICAgIHJlY3RzLFxuICAgICAgICBwbGF0Zm9ybSxcbiAgICAgICAgc3RyYXRlZ3lcbiAgICAgIH0gPSBzdGF0ZTtcbiAgICAgIC8vIEEgTW91c2VFdmVudCdzIGNsaWVudHtYLFl9IGNvb3JkcyBjYW4gYmUgdXAgdG8gMiBwaXhlbHMgb2ZmIGFcbiAgICAgIC8vIENsaWVudFJlY3QncyBib3VuZHMsIGRlc3BpdGUgdGhlIGV2ZW50IGxpc3RlbmVyIGJlaW5nIHRyaWdnZXJlZC4gQVxuICAgICAgLy8gcGFkZGluZyBvZiAyIHNlZW1zIHRvIGhhbmRsZSB0aGlzIGlzc3VlLlxuICAgICAgY29uc3Qge1xuICAgICAgICBwYWRkaW5nID0gMixcbiAgICAgICAgeCxcbiAgICAgICAgeVxuICAgICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcbiAgICAgIGNvbnN0IG5hdGl2ZUNsaWVudFJlY3RzID0gQXJyYXkuZnJvbSgoYXdhaXQgKHBsYXRmb3JtLmdldENsaWVudFJlY3RzID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5nZXRDbGllbnRSZWN0cyhlbGVtZW50cy5yZWZlcmVuY2UpKSkgfHwgW10pO1xuICAgICAgY29uc3QgY2xpZW50UmVjdHMgPSBnZXRSZWN0c0J5TGluZShuYXRpdmVDbGllbnRSZWN0cyk7XG4gICAgICBjb25zdCBmYWxsYmFjayA9IHJlY3RUb0NsaWVudFJlY3QoZ2V0Qm91bmRpbmdSZWN0KG5hdGl2ZUNsaWVudFJlY3RzKSk7XG4gICAgICBjb25zdCBwYWRkaW5nT2JqZWN0ID0gZ2V0UGFkZGluZ09iamVjdChwYWRkaW5nKTtcbiAgICAgIGZ1bmN0aW9uIGdldEJvdW5kaW5nQ2xpZW50UmVjdCgpIHtcbiAgICAgICAgLy8gVGhlcmUgYXJlIHR3byByZWN0cyBhbmQgdGhleSBhcmUgZGlzam9pbmVkLlxuICAgICAgICBpZiAoY2xpZW50UmVjdHMubGVuZ3RoID09PSAyICYmIGNsaWVudFJlY3RzWzBdLmxlZnQgPiBjbGllbnRSZWN0c1sxXS5yaWdodCAmJiB4ICE9IG51bGwgJiYgeSAhPSBudWxsKSB7XG4gICAgICAgICAgLy8gRmluZCB0aGUgZmlyc3QgcmVjdCBpbiB3aGljaCB0aGUgcG9pbnQgaXMgZnVsbHkgaW5zaWRlLlxuICAgICAgICAgIHJldHVybiBjbGllbnRSZWN0cy5maW5kKHJlY3QgPT4geCA+IHJlY3QubGVmdCAtIHBhZGRpbmdPYmplY3QubGVmdCAmJiB4IDwgcmVjdC5yaWdodCArIHBhZGRpbmdPYmplY3QucmlnaHQgJiYgeSA+IHJlY3QudG9wIC0gcGFkZGluZ09iamVjdC50b3AgJiYgeSA8IHJlY3QuYm90dG9tICsgcGFkZGluZ09iamVjdC5ib3R0b20pIHx8IGZhbGxiYWNrO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVGhlcmUgYXJlIDIgb3IgbW9yZSBjb25uZWN0ZWQgcmVjdHMuXG4gICAgICAgIGlmIChjbGllbnRSZWN0cy5sZW5ndGggPj0gMikge1xuICAgICAgICAgIGlmIChnZXRTaWRlQXhpcyhwbGFjZW1lbnQpID09PSAneScpIHtcbiAgICAgICAgICAgIGNvbnN0IGZpcnN0UmVjdCA9IGNsaWVudFJlY3RzWzBdO1xuICAgICAgICAgICAgY29uc3QgbGFzdFJlY3QgPSBjbGllbnRSZWN0c1tjbGllbnRSZWN0cy5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgIGNvbnN0IGlzVG9wID0gZ2V0U2lkZShwbGFjZW1lbnQpID09PSAndG9wJztcbiAgICAgICAgICAgIGNvbnN0IHRvcCA9IGZpcnN0UmVjdC50b3A7XG4gICAgICAgICAgICBjb25zdCBib3R0b20gPSBsYXN0UmVjdC5ib3R0b207XG4gICAgICAgICAgICBjb25zdCBsZWZ0ID0gaXNUb3AgPyBmaXJzdFJlY3QubGVmdCA6IGxhc3RSZWN0LmxlZnQ7XG4gICAgICAgICAgICBjb25zdCByaWdodCA9IGlzVG9wID8gZmlyc3RSZWN0LnJpZ2h0IDogbGFzdFJlY3QucmlnaHQ7XG4gICAgICAgICAgICBjb25zdCB3aWR0aCA9IHJpZ2h0IC0gbGVmdDtcbiAgICAgICAgICAgIGNvbnN0IGhlaWdodCA9IGJvdHRvbSAtIHRvcDtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIHRvcCxcbiAgICAgICAgICAgICAgYm90dG9tLFxuICAgICAgICAgICAgICBsZWZ0LFxuICAgICAgICAgICAgICByaWdodCxcbiAgICAgICAgICAgICAgd2lkdGgsXG4gICAgICAgICAgICAgIGhlaWdodCxcbiAgICAgICAgICAgICAgeDogbGVmdCxcbiAgICAgICAgICAgICAgeTogdG9wXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBpc0xlZnRTaWRlID0gZ2V0U2lkZShwbGFjZW1lbnQpID09PSAnbGVmdCc7XG4gICAgICAgICAgY29uc3QgbWF4UmlnaHQgPSBtYXgoLi4uY2xpZW50UmVjdHMubWFwKHJlY3QgPT4gcmVjdC5yaWdodCkpO1xuICAgICAgICAgIGNvbnN0IG1pbkxlZnQgPSBtaW4oLi4uY2xpZW50UmVjdHMubWFwKHJlY3QgPT4gcmVjdC5sZWZ0KSk7XG4gICAgICAgICAgY29uc3QgbWVhc3VyZVJlY3RzID0gY2xpZW50UmVjdHMuZmlsdGVyKHJlY3QgPT4gaXNMZWZ0U2lkZSA/IHJlY3QubGVmdCA9PT0gbWluTGVmdCA6IHJlY3QucmlnaHQgPT09IG1heFJpZ2h0KTtcbiAgICAgICAgICBjb25zdCB0b3AgPSBtZWFzdXJlUmVjdHNbMF0udG9wO1xuICAgICAgICAgIGNvbnN0IGJvdHRvbSA9IG1lYXN1cmVSZWN0c1ttZWFzdXJlUmVjdHMubGVuZ3RoIC0gMV0uYm90dG9tO1xuICAgICAgICAgIGNvbnN0IGxlZnQgPSBtaW5MZWZ0O1xuICAgICAgICAgIGNvbnN0IHJpZ2h0ID0gbWF4UmlnaHQ7XG4gICAgICAgICAgY29uc3Qgd2lkdGggPSByaWdodCAtIGxlZnQ7XG4gICAgICAgICAgY29uc3QgaGVpZ2h0ID0gYm90dG9tIC0gdG9wO1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0b3AsXG4gICAgICAgICAgICBib3R0b20sXG4gICAgICAgICAgICBsZWZ0LFxuICAgICAgICAgICAgcmlnaHQsXG4gICAgICAgICAgICB3aWR0aCxcbiAgICAgICAgICAgIGhlaWdodCxcbiAgICAgICAgICAgIHg6IGxlZnQsXG4gICAgICAgICAgICB5OiB0b3BcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxsYmFjaztcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJlc2V0UmVjdHMgPSBhd2FpdCBwbGF0Zm9ybS5nZXRFbGVtZW50UmVjdHMoe1xuICAgICAgICByZWZlcmVuY2U6IHtcbiAgICAgICAgICBnZXRCb3VuZGluZ0NsaWVudFJlY3RcbiAgICAgICAgfSxcbiAgICAgICAgZmxvYXRpbmc6IGVsZW1lbnRzLmZsb2F0aW5nLFxuICAgICAgICBzdHJhdGVneVxuICAgICAgfSk7XG4gICAgICBpZiAocmVjdHMucmVmZXJlbmNlLnggIT09IHJlc2V0UmVjdHMucmVmZXJlbmNlLnggfHwgcmVjdHMucmVmZXJlbmNlLnkgIT09IHJlc2V0UmVjdHMucmVmZXJlbmNlLnkgfHwgcmVjdHMucmVmZXJlbmNlLndpZHRoICE9PSByZXNldFJlY3RzLnJlZmVyZW5jZS53aWR0aCB8fCByZWN0cy5yZWZlcmVuY2UuaGVpZ2h0ICE9PSByZXNldFJlY3RzLnJlZmVyZW5jZS5oZWlnaHQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICByZXNldDoge1xuICAgICAgICAgICAgcmVjdHM6IHJlc2V0UmVjdHNcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICB9O1xufTtcblxuLy8gRm9yIHR5cGUgYmFja3dhcmRzLWNvbXBhdGliaWxpdHksIHRoZSBgT2Zmc2V0T3B0aW9uc2AgdHlwZSB3YXMgYWxzb1xuLy8gRGVyaXZhYmxlLlxuXG5hc3luYyBmdW5jdGlvbiBjb252ZXJ0VmFsdWVUb0Nvb3JkcyhzdGF0ZSwgb3B0aW9ucykge1xuICBjb25zdCB7XG4gICAgcGxhY2VtZW50LFxuICAgIHBsYXRmb3JtLFxuICAgIGVsZW1lbnRzXG4gIH0gPSBzdGF0ZTtcbiAgY29uc3QgcnRsID0gYXdhaXQgKHBsYXRmb3JtLmlzUlRMID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5pc1JUTChlbGVtZW50cy5mbG9hdGluZykpO1xuICBjb25zdCBzaWRlID0gZ2V0U2lkZShwbGFjZW1lbnQpO1xuICBjb25zdCBhbGlnbm1lbnQgPSBnZXRBbGlnbm1lbnQocGxhY2VtZW50KTtcbiAgY29uc3QgaXNWZXJ0aWNhbCA9IGdldFNpZGVBeGlzKHBsYWNlbWVudCkgPT09ICd5JztcbiAgY29uc3QgbWFpbkF4aXNNdWx0aSA9IFsnbGVmdCcsICd0b3AnXS5pbmNsdWRlcyhzaWRlKSA/IC0xIDogMTtcbiAgY29uc3QgY3Jvc3NBeGlzTXVsdGkgPSBydGwgJiYgaXNWZXJ0aWNhbCA/IC0xIDogMTtcbiAgY29uc3QgcmF3VmFsdWUgPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1jb25zdFxuICBsZXQge1xuICAgIG1haW5BeGlzLFxuICAgIGNyb3NzQXhpcyxcbiAgICBhbGlnbm1lbnRBeGlzXG4gIH0gPSB0eXBlb2YgcmF3VmFsdWUgPT09ICdudW1iZXInID8ge1xuICAgIG1haW5BeGlzOiByYXdWYWx1ZSxcbiAgICBjcm9zc0F4aXM6IDAsXG4gICAgYWxpZ25tZW50QXhpczogbnVsbFxuICB9IDoge1xuICAgIG1haW5BeGlzOiByYXdWYWx1ZS5tYWluQXhpcyB8fCAwLFxuICAgIGNyb3NzQXhpczogcmF3VmFsdWUuY3Jvc3NBeGlzIHx8IDAsXG4gICAgYWxpZ25tZW50QXhpczogcmF3VmFsdWUuYWxpZ25tZW50QXhpc1xuICB9O1xuICBpZiAoYWxpZ25tZW50ICYmIHR5cGVvZiBhbGlnbm1lbnRBeGlzID09PSAnbnVtYmVyJykge1xuICAgIGNyb3NzQXhpcyA9IGFsaWdubWVudCA9PT0gJ2VuZCcgPyBhbGlnbm1lbnRBeGlzICogLTEgOiBhbGlnbm1lbnRBeGlzO1xuICB9XG4gIHJldHVybiBpc1ZlcnRpY2FsID8ge1xuICAgIHg6IGNyb3NzQXhpcyAqIGNyb3NzQXhpc011bHRpLFxuICAgIHk6IG1haW5BeGlzICogbWFpbkF4aXNNdWx0aVxuICB9IDoge1xuICAgIHg6IG1haW5BeGlzICogbWFpbkF4aXNNdWx0aSxcbiAgICB5OiBjcm9zc0F4aXMgKiBjcm9zc0F4aXNNdWx0aVxuICB9O1xufVxuXG4vKipcbiAqIE1vZGlmaWVzIHRoZSBwbGFjZW1lbnQgYnkgdHJhbnNsYXRpbmcgdGhlIGZsb2F0aW5nIGVsZW1lbnQgYWxvbmcgdGhlXG4gKiBzcGVjaWZpZWQgYXhlcy5cbiAqIEEgbnVtYmVyIChzaG9ydGhhbmQgZm9yIGBtYWluQXhpc2Agb3IgZGlzdGFuY2UpLCBvciBhbiBheGVzIGNvbmZpZ3VyYXRpb25cbiAqIG9iamVjdCBtYXkgYmUgcGFzc2VkLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL29mZnNldFxuICovXG5jb25zdCBvZmZzZXQgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IDA7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnb2Zmc2V0JyxcbiAgICBvcHRpb25zLFxuICAgIGFzeW5jIGZuKHN0YXRlKSB7XG4gICAgICB2YXIgX21pZGRsZXdhcmVEYXRhJG9mZnNlLCBfbWlkZGxld2FyZURhdGEkYXJyb3c7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHgsXG4gICAgICAgIHksXG4gICAgICAgIHBsYWNlbWVudCxcbiAgICAgICAgbWlkZGxld2FyZURhdGFcbiAgICAgIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IGRpZmZDb29yZHMgPSBhd2FpdCBjb252ZXJ0VmFsdWVUb0Nvb3JkcyhzdGF0ZSwgb3B0aW9ucyk7XG5cbiAgICAgIC8vIElmIHRoZSBwbGFjZW1lbnQgaXMgdGhlIHNhbWUgYW5kIHRoZSBhcnJvdyBjYXVzZWQgYW4gYWxpZ25tZW50IG9mZnNldFxuICAgICAgLy8gdGhlbiB3ZSBkb24ndCBuZWVkIHRvIGNoYW5nZSB0aGUgcG9zaXRpb25pbmcgY29vcmRpbmF0ZXMuXG4gICAgICBpZiAocGxhY2VtZW50ID09PSAoKF9taWRkbGV3YXJlRGF0YSRvZmZzZSA9IG1pZGRsZXdhcmVEYXRhLm9mZnNldCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9taWRkbGV3YXJlRGF0YSRvZmZzZS5wbGFjZW1lbnQpICYmIChfbWlkZGxld2FyZURhdGEkYXJyb3cgPSBtaWRkbGV3YXJlRGF0YS5hcnJvdykgIT0gbnVsbCAmJiBfbWlkZGxld2FyZURhdGEkYXJyb3cuYWxpZ25tZW50T2Zmc2V0KSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHg6IHggKyBkaWZmQ29vcmRzLngsXG4gICAgICAgIHk6IHkgKyBkaWZmQ29vcmRzLnksXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAuLi5kaWZmQ29vcmRzLFxuICAgICAgICAgIHBsYWNlbWVudFxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cbiAgfTtcbn07XG5cbi8qKlxuICogT3B0aW1pemVzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IGJ5IHNoaWZ0aW5nIGl0IGluIG9yZGVyIHRvXG4gKiBrZWVwIGl0IGluIHZpZXcgd2hlbiBpdCB3aWxsIG92ZXJmbG93IHRoZSBjbGlwcGluZyBib3VuZGFyeS5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9zaGlmdFxuICovXG5jb25zdCBzaGlmdCA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnc2hpZnQnLFxuICAgIG9wdGlvbnMsXG4gICAgYXN5bmMgZm4oc3RhdGUpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgeCxcbiAgICAgICAgeSxcbiAgICAgICAgcGxhY2VtZW50XG4gICAgICB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB7XG4gICAgICAgIG1haW5BeGlzOiBjaGVja01haW5BeGlzID0gdHJ1ZSxcbiAgICAgICAgY3Jvc3NBeGlzOiBjaGVja0Nyb3NzQXhpcyA9IGZhbHNlLFxuICAgICAgICBsaW1pdGVyID0ge1xuICAgICAgICAgIGZuOiBfcmVmID0+IHtcbiAgICAgICAgICAgIGxldCB7XG4gICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgIHlcbiAgICAgICAgICAgIH0gPSBfcmVmO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgeVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9uc1xuICAgICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcbiAgICAgIGNvbnN0IGNvb3JkcyA9IHtcbiAgICAgICAgeCxcbiAgICAgICAgeVxuICAgICAgfTtcbiAgICAgIGNvbnN0IG92ZXJmbG93ID0gYXdhaXQgZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIGRldGVjdE92ZXJmbG93T3B0aW9ucyk7XG4gICAgICBjb25zdCBjcm9zc0F4aXMgPSBnZXRTaWRlQXhpcyhnZXRTaWRlKHBsYWNlbWVudCkpO1xuICAgICAgY29uc3QgbWFpbkF4aXMgPSBnZXRPcHBvc2l0ZUF4aXMoY3Jvc3NBeGlzKTtcbiAgICAgIGxldCBtYWluQXhpc0Nvb3JkID0gY29vcmRzW21haW5BeGlzXTtcbiAgICAgIGxldCBjcm9zc0F4aXNDb29yZCA9IGNvb3Jkc1tjcm9zc0F4aXNdO1xuICAgICAgaWYgKGNoZWNrTWFpbkF4aXMpIHtcbiAgICAgICAgY29uc3QgbWluU2lkZSA9IG1haW5BeGlzID09PSAneScgPyAndG9wJyA6ICdsZWZ0JztcbiAgICAgICAgY29uc3QgbWF4U2lkZSA9IG1haW5BeGlzID09PSAneScgPyAnYm90dG9tJyA6ICdyaWdodCc7XG4gICAgICAgIGNvbnN0IG1pbiA9IG1haW5BeGlzQ29vcmQgKyBvdmVyZmxvd1ttaW5TaWRlXTtcbiAgICAgICAgY29uc3QgbWF4ID0gbWFpbkF4aXNDb29yZCAtIG92ZXJmbG93W21heFNpZGVdO1xuICAgICAgICBtYWluQXhpc0Nvb3JkID0gY2xhbXAobWluLCBtYWluQXhpc0Nvb3JkLCBtYXgpO1xuICAgICAgfVxuICAgICAgaWYgKGNoZWNrQ3Jvc3NBeGlzKSB7XG4gICAgICAgIGNvbnN0IG1pblNpZGUgPSBjcm9zc0F4aXMgPT09ICd5JyA/ICd0b3AnIDogJ2xlZnQnO1xuICAgICAgICBjb25zdCBtYXhTaWRlID0gY3Jvc3NBeGlzID09PSAneScgPyAnYm90dG9tJyA6ICdyaWdodCc7XG4gICAgICAgIGNvbnN0IG1pbiA9IGNyb3NzQXhpc0Nvb3JkICsgb3ZlcmZsb3dbbWluU2lkZV07XG4gICAgICAgIGNvbnN0IG1heCA9IGNyb3NzQXhpc0Nvb3JkIC0gb3ZlcmZsb3dbbWF4U2lkZV07XG4gICAgICAgIGNyb3NzQXhpc0Nvb3JkID0gY2xhbXAobWluLCBjcm9zc0F4aXNDb29yZCwgbWF4KTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGxpbWl0ZWRDb29yZHMgPSBsaW1pdGVyLmZuKHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIFttYWluQXhpc106IG1haW5BeGlzQ29vcmQsXG4gICAgICAgIFtjcm9zc0F4aXNdOiBjcm9zc0F4aXNDb29yZFxuICAgICAgfSk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5saW1pdGVkQ29vcmRzLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgeDogbGltaXRlZENvb3Jkcy54IC0geCxcbiAgICAgICAgICB5OiBsaW1pdGVkQ29vcmRzLnkgLSB5LFxuICAgICAgICAgIGVuYWJsZWQ6IHtcbiAgICAgICAgICAgIFttYWluQXhpc106IGNoZWNrTWFpbkF4aXMsXG4gICAgICAgICAgICBbY3Jvc3NBeGlzXTogY2hlY2tDcm9zc0F4aXNcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuICB9O1xufTtcbi8qKlxuICogQnVpbHQtaW4gYGxpbWl0ZXJgIHRoYXQgd2lsbCBzdG9wIGBzaGlmdCgpYCBhdCBhIGNlcnRhaW4gcG9pbnQuXG4gKi9cbmNvbnN0IGxpbWl0U2hpZnQgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIHJldHVybiB7XG4gICAgb3B0aW9ucyxcbiAgICBmbihzdGF0ZSkge1xuICAgICAgY29uc3Qge1xuICAgICAgICB4LFxuICAgICAgICB5LFxuICAgICAgICBwbGFjZW1lbnQsXG4gICAgICAgIHJlY3RzLFxuICAgICAgICBtaWRkbGV3YXJlRGF0YVxuICAgICAgfSA9IHN0YXRlO1xuICAgICAgY29uc3Qge1xuICAgICAgICBvZmZzZXQgPSAwLFxuICAgICAgICBtYWluQXhpczogY2hlY2tNYWluQXhpcyA9IHRydWUsXG4gICAgICAgIGNyb3NzQXhpczogY2hlY2tDcm9zc0F4aXMgPSB0cnVlXG4gICAgICB9ID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpO1xuICAgICAgY29uc3QgY29vcmRzID0ge1xuICAgICAgICB4LFxuICAgICAgICB5XG4gICAgICB9O1xuICAgICAgY29uc3QgY3Jvc3NBeGlzID0gZ2V0U2lkZUF4aXMocGxhY2VtZW50KTtcbiAgICAgIGNvbnN0IG1haW5BeGlzID0gZ2V0T3Bwb3NpdGVBeGlzKGNyb3NzQXhpcyk7XG4gICAgICBsZXQgbWFpbkF4aXNDb29yZCA9IGNvb3Jkc1ttYWluQXhpc107XG4gICAgICBsZXQgY3Jvc3NBeGlzQ29vcmQgPSBjb29yZHNbY3Jvc3NBeGlzXTtcbiAgICAgIGNvbnN0IHJhd09mZnNldCA9IGV2YWx1YXRlKG9mZnNldCwgc3RhdGUpO1xuICAgICAgY29uc3QgY29tcHV0ZWRPZmZzZXQgPSB0eXBlb2YgcmF3T2Zmc2V0ID09PSAnbnVtYmVyJyA/IHtcbiAgICAgICAgbWFpbkF4aXM6IHJhd09mZnNldCxcbiAgICAgICAgY3Jvc3NBeGlzOiAwXG4gICAgICB9IDoge1xuICAgICAgICBtYWluQXhpczogMCxcbiAgICAgICAgY3Jvc3NBeGlzOiAwLFxuICAgICAgICAuLi5yYXdPZmZzZXRcbiAgICAgIH07XG4gICAgICBpZiAoY2hlY2tNYWluQXhpcykge1xuICAgICAgICBjb25zdCBsZW4gPSBtYWluQXhpcyA9PT0gJ3knID8gJ2hlaWdodCcgOiAnd2lkdGgnO1xuICAgICAgICBjb25zdCBsaW1pdE1pbiA9IHJlY3RzLnJlZmVyZW5jZVttYWluQXhpc10gLSByZWN0cy5mbG9hdGluZ1tsZW5dICsgY29tcHV0ZWRPZmZzZXQubWFpbkF4aXM7XG4gICAgICAgIGNvbnN0IGxpbWl0TWF4ID0gcmVjdHMucmVmZXJlbmNlW21haW5BeGlzXSArIHJlY3RzLnJlZmVyZW5jZVtsZW5dIC0gY29tcHV0ZWRPZmZzZXQubWFpbkF4aXM7XG4gICAgICAgIGlmIChtYWluQXhpc0Nvb3JkIDwgbGltaXRNaW4pIHtcbiAgICAgICAgICBtYWluQXhpc0Nvb3JkID0gbGltaXRNaW47XG4gICAgICAgIH0gZWxzZSBpZiAobWFpbkF4aXNDb29yZCA+IGxpbWl0TWF4KSB7XG4gICAgICAgICAgbWFpbkF4aXNDb29yZCA9IGxpbWl0TWF4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoY2hlY2tDcm9zc0F4aXMpIHtcbiAgICAgICAgdmFyIF9taWRkbGV3YXJlRGF0YSRvZmZzZSwgX21pZGRsZXdhcmVEYXRhJG9mZnNlMjtcbiAgICAgICAgY29uc3QgbGVuID0gbWFpbkF4aXMgPT09ICd5JyA/ICd3aWR0aCcgOiAnaGVpZ2h0JztcbiAgICAgICAgY29uc3QgaXNPcmlnaW5TaWRlID0gWyd0b3AnLCAnbGVmdCddLmluY2x1ZGVzKGdldFNpZGUocGxhY2VtZW50KSk7XG4gICAgICAgIGNvbnN0IGxpbWl0TWluID0gcmVjdHMucmVmZXJlbmNlW2Nyb3NzQXhpc10gLSByZWN0cy5mbG9hdGluZ1tsZW5dICsgKGlzT3JpZ2luU2lkZSA/ICgoX21pZGRsZXdhcmVEYXRhJG9mZnNlID0gbWlkZGxld2FyZURhdGEub2Zmc2V0KSA9PSBudWxsID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJG9mZnNlW2Nyb3NzQXhpc10pIHx8IDAgOiAwKSArIChpc09yaWdpblNpZGUgPyAwIDogY29tcHV0ZWRPZmZzZXQuY3Jvc3NBeGlzKTtcbiAgICAgICAgY29uc3QgbGltaXRNYXggPSByZWN0cy5yZWZlcmVuY2VbY3Jvc3NBeGlzXSArIHJlY3RzLnJlZmVyZW5jZVtsZW5dICsgKGlzT3JpZ2luU2lkZSA/IDAgOiAoKF9taWRkbGV3YXJlRGF0YSRvZmZzZTIgPSBtaWRkbGV3YXJlRGF0YS5vZmZzZXQpID09IG51bGwgPyB2b2lkIDAgOiBfbWlkZGxld2FyZURhdGEkb2Zmc2UyW2Nyb3NzQXhpc10pIHx8IDApIC0gKGlzT3JpZ2luU2lkZSA/IGNvbXB1dGVkT2Zmc2V0LmNyb3NzQXhpcyA6IDApO1xuICAgICAgICBpZiAoY3Jvc3NBeGlzQ29vcmQgPCBsaW1pdE1pbikge1xuICAgICAgICAgIGNyb3NzQXhpc0Nvb3JkID0gbGltaXRNaW47XG4gICAgICAgIH0gZWxzZSBpZiAoY3Jvc3NBeGlzQ29vcmQgPiBsaW1pdE1heCkge1xuICAgICAgICAgIGNyb3NzQXhpc0Nvb3JkID0gbGltaXRNYXg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIFttYWluQXhpc106IG1haW5BeGlzQ29vcmQsXG4gICAgICAgIFtjcm9zc0F4aXNdOiBjcm9zc0F4aXNDb29yZFxuICAgICAgfTtcbiAgICB9XG4gIH07XG59O1xuXG4vKipcbiAqIFByb3ZpZGVzIGRhdGEgdGhhdCBhbGxvd3MgeW91IHRvIGNoYW5nZSB0aGUgc2l6ZSBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCDigJRcbiAqIGZvciBpbnN0YW5jZSwgcHJldmVudCBpdCBmcm9tIG92ZXJmbG93aW5nIHRoZSBjbGlwcGluZyBib3VuZGFyeSBvciBtYXRjaCB0aGVcbiAqIHdpZHRoIG9mIHRoZSByZWZlcmVuY2UgZWxlbWVudC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9zaXplXG4gKi9cbmNvbnN0IHNpemUgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ3NpemUnLFxuICAgIG9wdGlvbnMsXG4gICAgYXN5bmMgZm4oc3RhdGUpIHtcbiAgICAgIHZhciBfc3RhdGUkbWlkZGxld2FyZURhdGEsIF9zdGF0ZSRtaWRkbGV3YXJlRGF0YTI7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHBsYWNlbWVudCxcbiAgICAgICAgcmVjdHMsXG4gICAgICAgIHBsYXRmb3JtLFxuICAgICAgICBlbGVtZW50c1xuICAgICAgfSA9IHN0YXRlO1xuICAgICAgY29uc3Qge1xuICAgICAgICBhcHBseSA9ICgpID0+IHt9LFxuICAgICAgICAuLi5kZXRlY3RPdmVyZmxvd09wdGlvbnNcbiAgICAgIH0gPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG4gICAgICBjb25zdCBvdmVyZmxvdyA9IGF3YWl0IGRldGVjdE92ZXJmbG93KHN0YXRlLCBkZXRlY3RPdmVyZmxvd09wdGlvbnMpO1xuICAgICAgY29uc3Qgc2lkZSA9IGdldFNpZGUocGxhY2VtZW50KTtcbiAgICAgIGNvbnN0IGFsaWdubWVudCA9IGdldEFsaWdubWVudChwbGFjZW1lbnQpO1xuICAgICAgY29uc3QgaXNZQXhpcyA9IGdldFNpZGVBeGlzKHBsYWNlbWVudCkgPT09ICd5JztcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgd2lkdGgsXG4gICAgICAgIGhlaWdodFxuICAgICAgfSA9IHJlY3RzLmZsb2F0aW5nO1xuICAgICAgbGV0IGhlaWdodFNpZGU7XG4gICAgICBsZXQgd2lkdGhTaWRlO1xuICAgICAgaWYgKHNpZGUgPT09ICd0b3AnIHx8IHNpZGUgPT09ICdib3R0b20nKSB7XG4gICAgICAgIGhlaWdodFNpZGUgPSBzaWRlO1xuICAgICAgICB3aWR0aFNpZGUgPSBhbGlnbm1lbnQgPT09ICgoYXdhaXQgKHBsYXRmb3JtLmlzUlRMID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5pc1JUTChlbGVtZW50cy5mbG9hdGluZykpKSA/ICdzdGFydCcgOiAnZW5kJykgPyAnbGVmdCcgOiAncmlnaHQnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgd2lkdGhTaWRlID0gc2lkZTtcbiAgICAgICAgaGVpZ2h0U2lkZSA9IGFsaWdubWVudCA9PT0gJ2VuZCcgPyAndG9wJyA6ICdib3R0b20nO1xuICAgICAgfVxuICAgICAgY29uc3QgbWF4aW11bUNsaXBwaW5nSGVpZ2h0ID0gaGVpZ2h0IC0gb3ZlcmZsb3cudG9wIC0gb3ZlcmZsb3cuYm90dG9tO1xuICAgICAgY29uc3QgbWF4aW11bUNsaXBwaW5nV2lkdGggPSB3aWR0aCAtIG92ZXJmbG93LmxlZnQgLSBvdmVyZmxvdy5yaWdodDtcbiAgICAgIGNvbnN0IG92ZXJmbG93QXZhaWxhYmxlSGVpZ2h0ID0gbWluKGhlaWdodCAtIG92ZXJmbG93W2hlaWdodFNpZGVdLCBtYXhpbXVtQ2xpcHBpbmdIZWlnaHQpO1xuICAgICAgY29uc3Qgb3ZlcmZsb3dBdmFpbGFibGVXaWR0aCA9IG1pbih3aWR0aCAtIG92ZXJmbG93W3dpZHRoU2lkZV0sIG1heGltdW1DbGlwcGluZ1dpZHRoKTtcbiAgICAgIGNvbnN0IG5vU2hpZnQgPSAhc3RhdGUubWlkZGxld2FyZURhdGEuc2hpZnQ7XG4gICAgICBsZXQgYXZhaWxhYmxlSGVpZ2h0ID0gb3ZlcmZsb3dBdmFpbGFibGVIZWlnaHQ7XG4gICAgICBsZXQgYXZhaWxhYmxlV2lkdGggPSBvdmVyZmxvd0F2YWlsYWJsZVdpZHRoO1xuICAgICAgaWYgKChfc3RhdGUkbWlkZGxld2FyZURhdGEgPSBzdGF0ZS5taWRkbGV3YXJlRGF0YS5zaGlmdCkgIT0gbnVsbCAmJiBfc3RhdGUkbWlkZGxld2FyZURhdGEuZW5hYmxlZC54KSB7XG4gICAgICAgIGF2YWlsYWJsZVdpZHRoID0gbWF4aW11bUNsaXBwaW5nV2lkdGg7XG4gICAgICB9XG4gICAgICBpZiAoKF9zdGF0ZSRtaWRkbGV3YXJlRGF0YTIgPSBzdGF0ZS5taWRkbGV3YXJlRGF0YS5zaGlmdCkgIT0gbnVsbCAmJiBfc3RhdGUkbWlkZGxld2FyZURhdGEyLmVuYWJsZWQueSkge1xuICAgICAgICBhdmFpbGFibGVIZWlnaHQgPSBtYXhpbXVtQ2xpcHBpbmdIZWlnaHQ7XG4gICAgICB9XG4gICAgICBpZiAobm9TaGlmdCAmJiAhYWxpZ25tZW50KSB7XG4gICAgICAgIGNvbnN0IHhNaW4gPSBtYXgob3ZlcmZsb3cubGVmdCwgMCk7XG4gICAgICAgIGNvbnN0IHhNYXggPSBtYXgob3ZlcmZsb3cucmlnaHQsIDApO1xuICAgICAgICBjb25zdCB5TWluID0gbWF4KG92ZXJmbG93LnRvcCwgMCk7XG4gICAgICAgIGNvbnN0IHlNYXggPSBtYXgob3ZlcmZsb3cuYm90dG9tLCAwKTtcbiAgICAgICAgaWYgKGlzWUF4aXMpIHtcbiAgICAgICAgICBhdmFpbGFibGVXaWR0aCA9IHdpZHRoIC0gMiAqICh4TWluICE9PSAwIHx8IHhNYXggIT09IDAgPyB4TWluICsgeE1heCA6IG1heChvdmVyZmxvdy5sZWZ0LCBvdmVyZmxvdy5yaWdodCkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGF2YWlsYWJsZUhlaWdodCA9IGhlaWdodCAtIDIgKiAoeU1pbiAhPT0gMCB8fCB5TWF4ICE9PSAwID8geU1pbiArIHlNYXggOiBtYXgob3ZlcmZsb3cudG9wLCBvdmVyZmxvdy5ib3R0b20pKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgYXdhaXQgYXBwbHkoe1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgYXZhaWxhYmxlV2lkdGgsXG4gICAgICAgIGF2YWlsYWJsZUhlaWdodFxuICAgICAgfSk7XG4gICAgICBjb25zdCBuZXh0RGltZW5zaW9ucyA9IGF3YWl0IHBsYXRmb3JtLmdldERpbWVuc2lvbnMoZWxlbWVudHMuZmxvYXRpbmcpO1xuICAgICAgaWYgKHdpZHRoICE9PSBuZXh0RGltZW5zaW9ucy53aWR0aCB8fCBoZWlnaHQgIT09IG5leHREaW1lbnNpb25zLmhlaWdodCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHJlc2V0OiB7XG4gICAgICAgICAgICByZWN0czogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gIH07XG59O1xuXG5leHBvcnQgeyBhcnJvdywgYXV0b1BsYWNlbWVudCwgY29tcHV0ZVBvc2l0aW9uLCBkZXRlY3RPdmVyZmxvdywgZmxpcCwgaGlkZSwgaW5saW5lLCBsaW1pdFNoaWZ0LCBvZmZzZXQsIHNoaWZ0LCBzaXplIH07XG4iLCJmdW5jdGlvbiBoYXNXaW5kb3coKSB7XG4gIHJldHVybiB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJztcbn1cbmZ1bmN0aW9uIGdldE5vZGVOYW1lKG5vZGUpIHtcbiAgaWYgKGlzTm9kZShub2RlKSkge1xuICAgIHJldHVybiAobm9kZS5ub2RlTmFtZSB8fCAnJykudG9Mb3dlckNhc2UoKTtcbiAgfVxuICAvLyBNb2NrZWQgbm9kZXMgaW4gdGVzdGluZyBlbnZpcm9ubWVudHMgbWF5IG5vdCBiZSBpbnN0YW5jZXMgb2YgTm9kZS4gQnlcbiAgLy8gcmV0dXJuaW5nIGAjZG9jdW1lbnRgIGFuIGluZmluaXRlIGxvb3Agd29uJ3Qgb2NjdXIuXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mbG9hdGluZy11aS9mbG9hdGluZy11aS9pc3N1ZXMvMjMxN1xuICByZXR1cm4gJyNkb2N1bWVudCc7XG59XG5mdW5jdGlvbiBnZXRXaW5kb3cobm9kZSkge1xuICB2YXIgX25vZGUkb3duZXJEb2N1bWVudDtcbiAgcmV0dXJuIChub2RlID09IG51bGwgfHwgKF9ub2RlJG93bmVyRG9jdW1lbnQgPSBub2RlLm93bmVyRG9jdW1lbnQpID09IG51bGwgPyB2b2lkIDAgOiBfbm9kZSRvd25lckRvY3VtZW50LmRlZmF1bHRWaWV3KSB8fCB3aW5kb3c7XG59XG5mdW5jdGlvbiBnZXREb2N1bWVudEVsZW1lbnQobm9kZSkge1xuICB2YXIgX3JlZjtcbiAgcmV0dXJuIChfcmVmID0gKGlzTm9kZShub2RlKSA/IG5vZGUub3duZXJEb2N1bWVudCA6IG5vZGUuZG9jdW1lbnQpIHx8IHdpbmRvdy5kb2N1bWVudCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9yZWYuZG9jdW1lbnRFbGVtZW50O1xufVxuZnVuY3Rpb24gaXNOb2RlKHZhbHVlKSB7XG4gIGlmICghaGFzV2luZG93KCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgTm9kZSB8fCB2YWx1ZSBpbnN0YW5jZW9mIGdldFdpbmRvdyh2YWx1ZSkuTm9kZTtcbn1cbmZ1bmN0aW9uIGlzRWxlbWVudCh2YWx1ZSkge1xuICBpZiAoIWhhc1dpbmRvdygpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIEVsZW1lbnQgfHwgdmFsdWUgaW5zdGFuY2VvZiBnZXRXaW5kb3codmFsdWUpLkVsZW1lbnQ7XG59XG5mdW5jdGlvbiBpc0hUTUxFbGVtZW50KHZhbHVlKSB7XG4gIGlmICghaGFzV2luZG93KCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgfHwgdmFsdWUgaW5zdGFuY2VvZiBnZXRXaW5kb3codmFsdWUpLkhUTUxFbGVtZW50O1xufVxuZnVuY3Rpb24gaXNTaGFkb3dSb290KHZhbHVlKSB7XG4gIGlmICghaGFzV2luZG93KCkgfHwgdHlwZW9mIFNoYWRvd1Jvb3QgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFNoYWRvd1Jvb3QgfHwgdmFsdWUgaW5zdGFuY2VvZiBnZXRXaW5kb3codmFsdWUpLlNoYWRvd1Jvb3Q7XG59XG5mdW5jdGlvbiBpc092ZXJmbG93RWxlbWVudChlbGVtZW50KSB7XG4gIGNvbnN0IHtcbiAgICBvdmVyZmxvdyxcbiAgICBvdmVyZmxvd1gsXG4gICAgb3ZlcmZsb3dZLFxuICAgIGRpc3BsYXlcbiAgfSA9IGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCk7XG4gIHJldHVybiAvYXV0b3xzY3JvbGx8b3ZlcmxheXxoaWRkZW58Y2xpcC8udGVzdChvdmVyZmxvdyArIG92ZXJmbG93WSArIG92ZXJmbG93WCkgJiYgIVsnaW5saW5lJywgJ2NvbnRlbnRzJ10uaW5jbHVkZXMoZGlzcGxheSk7XG59XG5mdW5jdGlvbiBpc1RhYmxlRWxlbWVudChlbGVtZW50KSB7XG4gIHJldHVybiBbJ3RhYmxlJywgJ3RkJywgJ3RoJ10uaW5jbHVkZXMoZ2V0Tm9kZU5hbWUoZWxlbWVudCkpO1xufVxuZnVuY3Rpb24gaXNUb3BMYXllcihlbGVtZW50KSB7XG4gIHJldHVybiBbJzpwb3BvdmVyLW9wZW4nLCAnOm1vZGFsJ10uc29tZShzZWxlY3RvciA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBlbGVtZW50Lm1hdGNoZXMoc2VsZWN0b3IpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH0pO1xufVxuZnVuY3Rpb24gaXNDb250YWluaW5nQmxvY2soZWxlbWVudE9yQ3NzKSB7XG4gIGNvbnN0IHdlYmtpdCA9IGlzV2ViS2l0KCk7XG4gIGNvbnN0IGNzcyA9IGlzRWxlbWVudChlbGVtZW50T3JDc3MpID8gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50T3JDc3MpIDogZWxlbWVudE9yQ3NzO1xuXG4gIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9Db250YWluaW5nX2Jsb2NrI2lkZW50aWZ5aW5nX3RoZV9jb250YWluaW5nX2Jsb2NrXG4gIC8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtdHJhbnNmb3Jtcy0yLyNpbmRpdmlkdWFsLXRyYW5zZm9ybXNcbiAgcmV0dXJuIFsndHJhbnNmb3JtJywgJ3RyYW5zbGF0ZScsICdzY2FsZScsICdyb3RhdGUnLCAncGVyc3BlY3RpdmUnXS5zb21lKHZhbHVlID0+IGNzc1t2YWx1ZV0gPyBjc3NbdmFsdWVdICE9PSAnbm9uZScgOiBmYWxzZSkgfHwgKGNzcy5jb250YWluZXJUeXBlID8gY3NzLmNvbnRhaW5lclR5cGUgIT09ICdub3JtYWwnIDogZmFsc2UpIHx8ICF3ZWJraXQgJiYgKGNzcy5iYWNrZHJvcEZpbHRlciA/IGNzcy5iYWNrZHJvcEZpbHRlciAhPT0gJ25vbmUnIDogZmFsc2UpIHx8ICF3ZWJraXQgJiYgKGNzcy5maWx0ZXIgPyBjc3MuZmlsdGVyICE9PSAnbm9uZScgOiBmYWxzZSkgfHwgWyd0cmFuc2Zvcm0nLCAndHJhbnNsYXRlJywgJ3NjYWxlJywgJ3JvdGF0ZScsICdwZXJzcGVjdGl2ZScsICdmaWx0ZXInXS5zb21lKHZhbHVlID0+IChjc3Mud2lsbENoYW5nZSB8fCAnJykuaW5jbHVkZXModmFsdWUpKSB8fCBbJ3BhaW50JywgJ2xheW91dCcsICdzdHJpY3QnLCAnY29udGVudCddLnNvbWUodmFsdWUgPT4gKGNzcy5jb250YWluIHx8ICcnKS5pbmNsdWRlcyh2YWx1ZSkpO1xufVxuZnVuY3Rpb24gZ2V0Q29udGFpbmluZ0Jsb2NrKGVsZW1lbnQpIHtcbiAgbGV0IGN1cnJlbnROb2RlID0gZ2V0UGFyZW50Tm9kZShlbGVtZW50KTtcbiAgd2hpbGUgKGlzSFRNTEVsZW1lbnQoY3VycmVudE5vZGUpICYmICFpc0xhc3RUcmF2ZXJzYWJsZU5vZGUoY3VycmVudE5vZGUpKSB7XG4gICAgaWYgKGlzQ29udGFpbmluZ0Jsb2NrKGN1cnJlbnROb2RlKSkge1xuICAgICAgcmV0dXJuIGN1cnJlbnROb2RlO1xuICAgIH0gZWxzZSBpZiAoaXNUb3BMYXllcihjdXJyZW50Tm9kZSkpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjdXJyZW50Tm9kZSA9IGdldFBhcmVudE5vZGUoY3VycmVudE5vZGUpO1xuICB9XG4gIHJldHVybiBudWxsO1xufVxuZnVuY3Rpb24gaXNXZWJLaXQoKSB7XG4gIGlmICh0eXBlb2YgQ1NTID09PSAndW5kZWZpbmVkJyB8fCAhQ1NTLnN1cHBvcnRzKSByZXR1cm4gZmFsc2U7XG4gIHJldHVybiBDU1Muc3VwcG9ydHMoJy13ZWJraXQtYmFja2Ryb3AtZmlsdGVyJywgJ25vbmUnKTtcbn1cbmZ1bmN0aW9uIGlzTGFzdFRyYXZlcnNhYmxlTm9kZShub2RlKSB7XG4gIHJldHVybiBbJ2h0bWwnLCAnYm9keScsICcjZG9jdW1lbnQnXS5pbmNsdWRlcyhnZXROb2RlTmFtZShub2RlKSk7XG59XG5mdW5jdGlvbiBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpIHtcbiAgcmV0dXJuIGdldFdpbmRvdyhlbGVtZW50KS5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpO1xufVxuZnVuY3Rpb24gZ2V0Tm9kZVNjcm9sbChlbGVtZW50KSB7XG4gIGlmIChpc0VsZW1lbnQoZWxlbWVudCkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc2Nyb2xsTGVmdDogZWxlbWVudC5zY3JvbGxMZWZ0LFxuICAgICAgc2Nyb2xsVG9wOiBlbGVtZW50LnNjcm9sbFRvcFxuICAgIH07XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBzY3JvbGxMZWZ0OiBlbGVtZW50LnNjcm9sbFgsXG4gICAgc2Nyb2xsVG9wOiBlbGVtZW50LnNjcm9sbFlcbiAgfTtcbn1cbmZ1bmN0aW9uIGdldFBhcmVudE5vZGUobm9kZSkge1xuICBpZiAoZ2V0Tm9kZU5hbWUobm9kZSkgPT09ICdodG1sJykge1xuICAgIHJldHVybiBub2RlO1xuICB9XG4gIGNvbnN0IHJlc3VsdCA9XG4gIC8vIFN0ZXAgaW50byB0aGUgc2hhZG93IERPTSBvZiB0aGUgcGFyZW50IG9mIGEgc2xvdHRlZCBub2RlLlxuICBub2RlLmFzc2lnbmVkU2xvdCB8fFxuICAvLyBET00gRWxlbWVudCBkZXRlY3RlZC5cbiAgbm9kZS5wYXJlbnROb2RlIHx8XG4gIC8vIFNoYWRvd1Jvb3QgZGV0ZWN0ZWQuXG4gIGlzU2hhZG93Um9vdChub2RlKSAmJiBub2RlLmhvc3QgfHxcbiAgLy8gRmFsbGJhY2suXG4gIGdldERvY3VtZW50RWxlbWVudChub2RlKTtcbiAgcmV0dXJuIGlzU2hhZG93Um9vdChyZXN1bHQpID8gcmVzdWx0Lmhvc3QgOiByZXN1bHQ7XG59XG5mdW5jdGlvbiBnZXROZWFyZXN0T3ZlcmZsb3dBbmNlc3Rvcihub2RlKSB7XG4gIGNvbnN0IHBhcmVudE5vZGUgPSBnZXRQYXJlbnROb2RlKG5vZGUpO1xuICBpZiAoaXNMYXN0VHJhdmVyc2FibGVOb2RlKHBhcmVudE5vZGUpKSB7XG4gICAgcmV0dXJuIG5vZGUub3duZXJEb2N1bWVudCA/IG5vZGUub3duZXJEb2N1bWVudC5ib2R5IDogbm9kZS5ib2R5O1xuICB9XG4gIGlmIChpc0hUTUxFbGVtZW50KHBhcmVudE5vZGUpICYmIGlzT3ZlcmZsb3dFbGVtZW50KHBhcmVudE5vZGUpKSB7XG4gICAgcmV0dXJuIHBhcmVudE5vZGU7XG4gIH1cbiAgcmV0dXJuIGdldE5lYXJlc3RPdmVyZmxvd0FuY2VzdG9yKHBhcmVudE5vZGUpO1xufVxuZnVuY3Rpb24gZ2V0T3ZlcmZsb3dBbmNlc3RvcnMobm9kZSwgbGlzdCwgdHJhdmVyc2VJZnJhbWVzKSB7XG4gIHZhciBfbm9kZSRvd25lckRvY3VtZW50MjtcbiAgaWYgKGxpc3QgPT09IHZvaWQgMCkge1xuICAgIGxpc3QgPSBbXTtcbiAgfVxuICBpZiAodHJhdmVyc2VJZnJhbWVzID09PSB2b2lkIDApIHtcbiAgICB0cmF2ZXJzZUlmcmFtZXMgPSB0cnVlO1xuICB9XG4gIGNvbnN0IHNjcm9sbGFibGVBbmNlc3RvciA9IGdldE5lYXJlc3RPdmVyZmxvd0FuY2VzdG9yKG5vZGUpO1xuICBjb25zdCBpc0JvZHkgPSBzY3JvbGxhYmxlQW5jZXN0b3IgPT09ICgoX25vZGUkb3duZXJEb2N1bWVudDIgPSBub2RlLm93bmVyRG9jdW1lbnQpID09IG51bGwgPyB2b2lkIDAgOiBfbm9kZSRvd25lckRvY3VtZW50Mi5ib2R5KTtcbiAgY29uc3Qgd2luID0gZ2V0V2luZG93KHNjcm9sbGFibGVBbmNlc3Rvcik7XG4gIGlmIChpc0JvZHkpIHtcbiAgICBjb25zdCBmcmFtZUVsZW1lbnQgPSBnZXRGcmFtZUVsZW1lbnQod2luKTtcbiAgICByZXR1cm4gbGlzdC5jb25jYXQod2luLCB3aW4udmlzdWFsVmlld3BvcnQgfHwgW10sIGlzT3ZlcmZsb3dFbGVtZW50KHNjcm9sbGFibGVBbmNlc3RvcikgPyBzY3JvbGxhYmxlQW5jZXN0b3IgOiBbXSwgZnJhbWVFbGVtZW50ICYmIHRyYXZlcnNlSWZyYW1lcyA/IGdldE92ZXJmbG93QW5jZXN0b3JzKGZyYW1lRWxlbWVudCkgOiBbXSk7XG4gIH1cbiAgcmV0dXJuIGxpc3QuY29uY2F0KHNjcm9sbGFibGVBbmNlc3RvciwgZ2V0T3ZlcmZsb3dBbmNlc3RvcnMoc2Nyb2xsYWJsZUFuY2VzdG9yLCBbXSwgdHJhdmVyc2VJZnJhbWVzKSk7XG59XG5mdW5jdGlvbiBnZXRGcmFtZUVsZW1lbnQod2luKSB7XG4gIHJldHVybiB3aW4ucGFyZW50ICYmIE9iamVjdC5nZXRQcm90b3R5cGVPZih3aW4ucGFyZW50KSA/IHdpbi5mcmFtZUVsZW1lbnQgOiBudWxsO1xufVxuXG5leHBvcnQgeyBnZXRDb21wdXRlZFN0eWxlLCBnZXRDb250YWluaW5nQmxvY2ssIGdldERvY3VtZW50RWxlbWVudCwgZ2V0RnJhbWVFbGVtZW50LCBnZXROZWFyZXN0T3ZlcmZsb3dBbmNlc3RvciwgZ2V0Tm9kZU5hbWUsIGdldE5vZGVTY3JvbGwsIGdldE92ZXJmbG93QW5jZXN0b3JzLCBnZXRQYXJlbnROb2RlLCBnZXRXaW5kb3csIGlzQ29udGFpbmluZ0Jsb2NrLCBpc0VsZW1lbnQsIGlzSFRNTEVsZW1lbnQsIGlzTGFzdFRyYXZlcnNhYmxlTm9kZSwgaXNOb2RlLCBpc092ZXJmbG93RWxlbWVudCwgaXNTaGFkb3dSb290LCBpc1RhYmxlRWxlbWVudCwgaXNUb3BMYXllciwgaXNXZWJLaXQgfTtcbiIsImltcG9ydCB7IHJlY3RUb0NsaWVudFJlY3QsIGRldGVjdE92ZXJmbG93IGFzIGRldGVjdE92ZXJmbG93JDEsIG9mZnNldCBhcyBvZmZzZXQkMSwgYXV0b1BsYWNlbWVudCBhcyBhdXRvUGxhY2VtZW50JDEsIHNoaWZ0IGFzIHNoaWZ0JDEsIGZsaXAgYXMgZmxpcCQxLCBzaXplIGFzIHNpemUkMSwgaGlkZSBhcyBoaWRlJDEsIGFycm93IGFzIGFycm93JDEsIGlubGluZSBhcyBpbmxpbmUkMSwgbGltaXRTaGlmdCBhcyBsaW1pdFNoaWZ0JDEsIGNvbXB1dGVQb3NpdGlvbiBhcyBjb21wdXRlUG9zaXRpb24kMSB9IGZyb20gJ0BmbG9hdGluZy11aS9jb3JlJztcbmltcG9ydCB7IHJvdW5kLCBjcmVhdGVDb29yZHMsIG1heCwgbWluLCBmbG9vciB9IGZyb20gJ0BmbG9hdGluZy11aS91dGlscyc7XG5pbXBvcnQgeyBnZXRDb21wdXRlZFN0eWxlLCBpc0hUTUxFbGVtZW50LCBpc0VsZW1lbnQsIGdldFdpbmRvdywgaXNXZWJLaXQsIGdldEZyYW1lRWxlbWVudCwgZ2V0Tm9kZVNjcm9sbCwgZ2V0RG9jdW1lbnRFbGVtZW50LCBpc1RvcExheWVyLCBnZXROb2RlTmFtZSwgaXNPdmVyZmxvd0VsZW1lbnQsIGdldE92ZXJmbG93QW5jZXN0b3JzLCBnZXRQYXJlbnROb2RlLCBpc0xhc3RUcmF2ZXJzYWJsZU5vZGUsIGlzQ29udGFpbmluZ0Jsb2NrLCBpc1RhYmxlRWxlbWVudCwgZ2V0Q29udGFpbmluZ0Jsb2NrIH0gZnJvbSAnQGZsb2F0aW5nLXVpL3V0aWxzL2RvbSc7XG5leHBvcnQgeyBnZXRPdmVyZmxvd0FuY2VzdG9ycyB9IGZyb20gJ0BmbG9hdGluZy11aS91dGlscy9kb20nO1xuXG5mdW5jdGlvbiBnZXRDc3NEaW1lbnNpb25zKGVsZW1lbnQpIHtcbiAgY29uc3QgY3NzID0gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KTtcbiAgLy8gSW4gdGVzdGluZyBlbnZpcm9ubWVudHMsIHRoZSBgd2lkdGhgIGFuZCBgaGVpZ2h0YCBwcm9wZXJ0aWVzIGFyZSBlbXB0eVxuICAvLyBzdHJpbmdzIGZvciBTVkcgZWxlbWVudHMsIHJldHVybmluZyBOYU4uIEZhbGxiYWNrIHRvIGAwYCBpbiB0aGlzIGNhc2UuXG4gIGxldCB3aWR0aCA9IHBhcnNlRmxvYXQoY3NzLndpZHRoKSB8fCAwO1xuICBsZXQgaGVpZ2h0ID0gcGFyc2VGbG9hdChjc3MuaGVpZ2h0KSB8fCAwO1xuICBjb25zdCBoYXNPZmZzZXQgPSBpc0hUTUxFbGVtZW50KGVsZW1lbnQpO1xuICBjb25zdCBvZmZzZXRXaWR0aCA9IGhhc09mZnNldCA/IGVsZW1lbnQub2Zmc2V0V2lkdGggOiB3aWR0aDtcbiAgY29uc3Qgb2Zmc2V0SGVpZ2h0ID0gaGFzT2Zmc2V0ID8gZWxlbWVudC5vZmZzZXRIZWlnaHQgOiBoZWlnaHQ7XG4gIGNvbnN0IHNob3VsZEZhbGxiYWNrID0gcm91bmQod2lkdGgpICE9PSBvZmZzZXRXaWR0aCB8fCByb3VuZChoZWlnaHQpICE9PSBvZmZzZXRIZWlnaHQ7XG4gIGlmIChzaG91bGRGYWxsYmFjaykge1xuICAgIHdpZHRoID0gb2Zmc2V0V2lkdGg7XG4gICAgaGVpZ2h0ID0gb2Zmc2V0SGVpZ2h0O1xuICB9XG4gIHJldHVybiB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgICQ6IHNob3VsZEZhbGxiYWNrXG4gIH07XG59XG5cbmZ1bmN0aW9uIHVud3JhcEVsZW1lbnQoZWxlbWVudCkge1xuICByZXR1cm4gIWlzRWxlbWVudChlbGVtZW50KSA/IGVsZW1lbnQuY29udGV4dEVsZW1lbnQgOiBlbGVtZW50O1xufVxuXG5mdW5jdGlvbiBnZXRTY2FsZShlbGVtZW50KSB7XG4gIGNvbnN0IGRvbUVsZW1lbnQgPSB1bndyYXBFbGVtZW50KGVsZW1lbnQpO1xuICBpZiAoIWlzSFRNTEVsZW1lbnQoZG9tRWxlbWVudCkpIHtcbiAgICByZXR1cm4gY3JlYXRlQ29vcmRzKDEpO1xuICB9XG4gIGNvbnN0IHJlY3QgPSBkb21FbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICBjb25zdCB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgICRcbiAgfSA9IGdldENzc0RpbWVuc2lvbnMoZG9tRWxlbWVudCk7XG4gIGxldCB4ID0gKCQgPyByb3VuZChyZWN0LndpZHRoKSA6IHJlY3Qud2lkdGgpIC8gd2lkdGg7XG4gIGxldCB5ID0gKCQgPyByb3VuZChyZWN0LmhlaWdodCkgOiByZWN0LmhlaWdodCkgLyBoZWlnaHQ7XG5cbiAgLy8gMCwgTmFOLCBvciBJbmZpbml0eSBzaG91bGQgYWx3YXlzIGZhbGxiYWNrIHRvIDEuXG5cbiAgaWYgKCF4IHx8ICFOdW1iZXIuaXNGaW5pdGUoeCkpIHtcbiAgICB4ID0gMTtcbiAgfVxuICBpZiAoIXkgfHwgIU51bWJlci5pc0Zpbml0ZSh5KSkge1xuICAgIHkgPSAxO1xuICB9XG4gIHJldHVybiB7XG4gICAgeCxcbiAgICB5XG4gIH07XG59XG5cbmNvbnN0IG5vT2Zmc2V0cyA9IC8qI19fUFVSRV9fKi9jcmVhdGVDb29yZHMoMCk7XG5mdW5jdGlvbiBnZXRWaXN1YWxPZmZzZXRzKGVsZW1lbnQpIHtcbiAgY29uc3Qgd2luID0gZ2V0V2luZG93KGVsZW1lbnQpO1xuICBpZiAoIWlzV2ViS2l0KCkgfHwgIXdpbi52aXN1YWxWaWV3cG9ydCkge1xuICAgIHJldHVybiBub09mZnNldHM7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB4OiB3aW4udmlzdWFsVmlld3BvcnQub2Zmc2V0TGVmdCxcbiAgICB5OiB3aW4udmlzdWFsVmlld3BvcnQub2Zmc2V0VG9wXG4gIH07XG59XG5mdW5jdGlvbiBzaG91bGRBZGRWaXN1YWxPZmZzZXRzKGVsZW1lbnQsIGlzRml4ZWQsIGZsb2F0aW5nT2Zmc2V0UGFyZW50KSB7XG4gIGlmIChpc0ZpeGVkID09PSB2b2lkIDApIHtcbiAgICBpc0ZpeGVkID0gZmFsc2U7XG4gIH1cbiAgaWYgKCFmbG9hdGluZ09mZnNldFBhcmVudCB8fCBpc0ZpeGVkICYmIGZsb2F0aW5nT2Zmc2V0UGFyZW50ICE9PSBnZXRXaW5kb3coZWxlbWVudCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIGlzRml4ZWQ7XG59XG5cbmZ1bmN0aW9uIGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50LCBpbmNsdWRlU2NhbGUsIGlzRml4ZWRTdHJhdGVneSwgb2Zmc2V0UGFyZW50KSB7XG4gIGlmIChpbmNsdWRlU2NhbGUgPT09IHZvaWQgMCkge1xuICAgIGluY2x1ZGVTY2FsZSA9IGZhbHNlO1xuICB9XG4gIGlmIChpc0ZpeGVkU3RyYXRlZ3kgPT09IHZvaWQgMCkge1xuICAgIGlzRml4ZWRTdHJhdGVneSA9IGZhbHNlO1xuICB9XG4gIGNvbnN0IGNsaWVudFJlY3QgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICBjb25zdCBkb21FbGVtZW50ID0gdW53cmFwRWxlbWVudChlbGVtZW50KTtcbiAgbGV0IHNjYWxlID0gY3JlYXRlQ29vcmRzKDEpO1xuICBpZiAoaW5jbHVkZVNjYWxlKSB7XG4gICAgaWYgKG9mZnNldFBhcmVudCkge1xuICAgICAgaWYgKGlzRWxlbWVudChvZmZzZXRQYXJlbnQpKSB7XG4gICAgICAgIHNjYWxlID0gZ2V0U2NhbGUob2Zmc2V0UGFyZW50KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgc2NhbGUgPSBnZXRTY2FsZShlbGVtZW50KTtcbiAgICB9XG4gIH1cbiAgY29uc3QgdmlzdWFsT2Zmc2V0cyA9IHNob3VsZEFkZFZpc3VhbE9mZnNldHMoZG9tRWxlbWVudCwgaXNGaXhlZFN0cmF0ZWd5LCBvZmZzZXRQYXJlbnQpID8gZ2V0VmlzdWFsT2Zmc2V0cyhkb21FbGVtZW50KSA6IGNyZWF0ZUNvb3JkcygwKTtcbiAgbGV0IHggPSAoY2xpZW50UmVjdC5sZWZ0ICsgdmlzdWFsT2Zmc2V0cy54KSAvIHNjYWxlLng7XG4gIGxldCB5ID0gKGNsaWVudFJlY3QudG9wICsgdmlzdWFsT2Zmc2V0cy55KSAvIHNjYWxlLnk7XG4gIGxldCB3aWR0aCA9IGNsaWVudFJlY3Qud2lkdGggLyBzY2FsZS54O1xuICBsZXQgaGVpZ2h0ID0gY2xpZW50UmVjdC5oZWlnaHQgLyBzY2FsZS55O1xuICBpZiAoZG9tRWxlbWVudCkge1xuICAgIGNvbnN0IHdpbiA9IGdldFdpbmRvdyhkb21FbGVtZW50KTtcbiAgICBjb25zdCBvZmZzZXRXaW4gPSBvZmZzZXRQYXJlbnQgJiYgaXNFbGVtZW50KG9mZnNldFBhcmVudCkgPyBnZXRXaW5kb3cob2Zmc2V0UGFyZW50KSA6IG9mZnNldFBhcmVudDtcbiAgICBsZXQgY3VycmVudFdpbiA9IHdpbjtcbiAgICBsZXQgY3VycmVudElGcmFtZSA9IGdldEZyYW1lRWxlbWVudChjdXJyZW50V2luKTtcbiAgICB3aGlsZSAoY3VycmVudElGcmFtZSAmJiBvZmZzZXRQYXJlbnQgJiYgb2Zmc2V0V2luICE9PSBjdXJyZW50V2luKSB7XG4gICAgICBjb25zdCBpZnJhbWVTY2FsZSA9IGdldFNjYWxlKGN1cnJlbnRJRnJhbWUpO1xuICAgICAgY29uc3QgaWZyYW1lUmVjdCA9IGN1cnJlbnRJRnJhbWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBjb25zdCBjc3MgPSBnZXRDb21wdXRlZFN0eWxlKGN1cnJlbnRJRnJhbWUpO1xuICAgICAgY29uc3QgbGVmdCA9IGlmcmFtZVJlY3QubGVmdCArIChjdXJyZW50SUZyYW1lLmNsaWVudExlZnQgKyBwYXJzZUZsb2F0KGNzcy5wYWRkaW5nTGVmdCkpICogaWZyYW1lU2NhbGUueDtcbiAgICAgIGNvbnN0IHRvcCA9IGlmcmFtZVJlY3QudG9wICsgKGN1cnJlbnRJRnJhbWUuY2xpZW50VG9wICsgcGFyc2VGbG9hdChjc3MucGFkZGluZ1RvcCkpICogaWZyYW1lU2NhbGUueTtcbiAgICAgIHggKj0gaWZyYW1lU2NhbGUueDtcbiAgICAgIHkgKj0gaWZyYW1lU2NhbGUueTtcbiAgICAgIHdpZHRoICo9IGlmcmFtZVNjYWxlLng7XG4gICAgICBoZWlnaHQgKj0gaWZyYW1lU2NhbGUueTtcbiAgICAgIHggKz0gbGVmdDtcbiAgICAgIHkgKz0gdG9wO1xuICAgICAgY3VycmVudFdpbiA9IGdldFdpbmRvdyhjdXJyZW50SUZyYW1lKTtcbiAgICAgIGN1cnJlbnRJRnJhbWUgPSBnZXRGcmFtZUVsZW1lbnQoY3VycmVudFdpbik7XG4gICAgfVxuICB9XG4gIHJldHVybiByZWN0VG9DbGllbnRSZWN0KHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gICAgeCxcbiAgICB5XG4gIH0pO1xufVxuXG4vLyBJZiA8aHRtbD4gaGFzIGEgQ1NTIHdpZHRoIGdyZWF0ZXIgdGhhbiB0aGUgdmlld3BvcnQsIHRoZW4gdGhpcyB3aWxsIGJlXG4vLyBpbmNvcnJlY3QgZm9yIFJUTC5cbmZ1bmN0aW9uIGdldFdpbmRvd1Njcm9sbEJhclgoZWxlbWVudCwgcmVjdCkge1xuICBjb25zdCBsZWZ0U2Nyb2xsID0gZ2V0Tm9kZVNjcm9sbChlbGVtZW50KS5zY3JvbGxMZWZ0O1xuICBpZiAoIXJlY3QpIHtcbiAgICByZXR1cm4gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KSkubGVmdCArIGxlZnRTY3JvbGw7XG4gIH1cbiAgcmV0dXJuIHJlY3QubGVmdCArIGxlZnRTY3JvbGw7XG59XG5cbmZ1bmN0aW9uIGdldEhUTUxPZmZzZXQoZG9jdW1lbnRFbGVtZW50LCBzY3JvbGwsIGlnbm9yZVNjcm9sbGJhclgpIHtcbiAgaWYgKGlnbm9yZVNjcm9sbGJhclggPT09IHZvaWQgMCkge1xuICAgIGlnbm9yZVNjcm9sbGJhclggPSBmYWxzZTtcbiAgfVxuICBjb25zdCBodG1sUmVjdCA9IGRvY3VtZW50RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgY29uc3QgeCA9IGh0bWxSZWN0LmxlZnQgKyBzY3JvbGwuc2Nyb2xsTGVmdCAtIChpZ25vcmVTY3JvbGxiYXJYID8gMCA6XG4gIC8vIFJUTCA8Ym9keT4gc2Nyb2xsYmFyLlxuICBnZXRXaW5kb3dTY3JvbGxCYXJYKGRvY3VtZW50RWxlbWVudCwgaHRtbFJlY3QpKTtcbiAgY29uc3QgeSA9IGh0bWxSZWN0LnRvcCArIHNjcm9sbC5zY3JvbGxUb3A7XG4gIHJldHVybiB7XG4gICAgeCxcbiAgICB5XG4gIH07XG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRPZmZzZXRQYXJlbnRSZWxhdGl2ZVJlY3RUb1ZpZXdwb3J0UmVsYXRpdmVSZWN0KF9yZWYpIHtcbiAgbGV0IHtcbiAgICBlbGVtZW50cyxcbiAgICByZWN0LFxuICAgIG9mZnNldFBhcmVudCxcbiAgICBzdHJhdGVneVxuICB9ID0gX3JlZjtcbiAgY29uc3QgaXNGaXhlZCA9IHN0cmF0ZWd5ID09PSAnZml4ZWQnO1xuICBjb25zdCBkb2N1bWVudEVsZW1lbnQgPSBnZXREb2N1bWVudEVsZW1lbnQob2Zmc2V0UGFyZW50KTtcbiAgY29uc3QgdG9wTGF5ZXIgPSBlbGVtZW50cyA/IGlzVG9wTGF5ZXIoZWxlbWVudHMuZmxvYXRpbmcpIDogZmFsc2U7XG4gIGlmIChvZmZzZXRQYXJlbnQgPT09IGRvY3VtZW50RWxlbWVudCB8fCB0b3BMYXllciAmJiBpc0ZpeGVkKSB7XG4gICAgcmV0dXJuIHJlY3Q7XG4gIH1cbiAgbGV0IHNjcm9sbCA9IHtcbiAgICBzY3JvbGxMZWZ0OiAwLFxuICAgIHNjcm9sbFRvcDogMFxuICB9O1xuICBsZXQgc2NhbGUgPSBjcmVhdGVDb29yZHMoMSk7XG4gIGNvbnN0IG9mZnNldHMgPSBjcmVhdGVDb29yZHMoMCk7XG4gIGNvbnN0IGlzT2Zmc2V0UGFyZW50QW5FbGVtZW50ID0gaXNIVE1MRWxlbWVudChvZmZzZXRQYXJlbnQpO1xuICBpZiAoaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgfHwgIWlzT2Zmc2V0UGFyZW50QW5FbGVtZW50ICYmICFpc0ZpeGVkKSB7XG4gICAgaWYgKGdldE5vZGVOYW1lKG9mZnNldFBhcmVudCkgIT09ICdib2R5JyB8fCBpc092ZXJmbG93RWxlbWVudChkb2N1bWVudEVsZW1lbnQpKSB7XG4gICAgICBzY3JvbGwgPSBnZXROb2RlU2Nyb2xsKG9mZnNldFBhcmVudCk7XG4gICAgfVxuICAgIGlmIChpc0hUTUxFbGVtZW50KG9mZnNldFBhcmVudCkpIHtcbiAgICAgIGNvbnN0IG9mZnNldFJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3Qob2Zmc2V0UGFyZW50KTtcbiAgICAgIHNjYWxlID0gZ2V0U2NhbGUob2Zmc2V0UGFyZW50KTtcbiAgICAgIG9mZnNldHMueCA9IG9mZnNldFJlY3QueCArIG9mZnNldFBhcmVudC5jbGllbnRMZWZ0O1xuICAgICAgb2Zmc2V0cy55ID0gb2Zmc2V0UmVjdC55ICsgb2Zmc2V0UGFyZW50LmNsaWVudFRvcDtcbiAgICB9XG4gIH1cbiAgY29uc3QgaHRtbE9mZnNldCA9IGRvY3VtZW50RWxlbWVudCAmJiAhaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgJiYgIWlzRml4ZWQgPyBnZXRIVE1MT2Zmc2V0KGRvY3VtZW50RWxlbWVudCwgc2Nyb2xsLCB0cnVlKSA6IGNyZWF0ZUNvb3JkcygwKTtcbiAgcmV0dXJuIHtcbiAgICB3aWR0aDogcmVjdC53aWR0aCAqIHNjYWxlLngsXG4gICAgaGVpZ2h0OiByZWN0LmhlaWdodCAqIHNjYWxlLnksXG4gICAgeDogcmVjdC54ICogc2NhbGUueCAtIHNjcm9sbC5zY3JvbGxMZWZ0ICogc2NhbGUueCArIG9mZnNldHMueCArIGh0bWxPZmZzZXQueCxcbiAgICB5OiByZWN0LnkgKiBzY2FsZS55IC0gc2Nyb2xsLnNjcm9sbFRvcCAqIHNjYWxlLnkgKyBvZmZzZXRzLnkgKyBodG1sT2Zmc2V0LnlcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0Q2xpZW50UmVjdHMoZWxlbWVudCkge1xuICByZXR1cm4gQXJyYXkuZnJvbShlbGVtZW50LmdldENsaWVudFJlY3RzKCkpO1xufVxuXG4vLyBHZXRzIHRoZSBlbnRpcmUgc2l6ZSBvZiB0aGUgc2Nyb2xsYWJsZSBkb2N1bWVudCBhcmVhLCBldmVuIGV4dGVuZGluZyBvdXRzaWRlXG4vLyBvZiB0aGUgYDxodG1sPmAgYW5kIGA8Ym9keT5gIHJlY3QgYm91bmRzIGlmIGhvcml6b250YWxseSBzY3JvbGxhYmxlLlxuZnVuY3Rpb24gZ2V0RG9jdW1lbnRSZWN0KGVsZW1lbnQpIHtcbiAgY29uc3QgaHRtbCA9IGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KTtcbiAgY29uc3Qgc2Nyb2xsID0gZ2V0Tm9kZVNjcm9sbChlbGVtZW50KTtcbiAgY29uc3QgYm9keSA9IGVsZW1lbnQub3duZXJEb2N1bWVudC5ib2R5O1xuICBjb25zdCB3aWR0aCA9IG1heChodG1sLnNjcm9sbFdpZHRoLCBodG1sLmNsaWVudFdpZHRoLCBib2R5LnNjcm9sbFdpZHRoLCBib2R5LmNsaWVudFdpZHRoKTtcbiAgY29uc3QgaGVpZ2h0ID0gbWF4KGh0bWwuc2Nyb2xsSGVpZ2h0LCBodG1sLmNsaWVudEhlaWdodCwgYm9keS5zY3JvbGxIZWlnaHQsIGJvZHkuY2xpZW50SGVpZ2h0KTtcbiAgbGV0IHggPSAtc2Nyb2xsLnNjcm9sbExlZnQgKyBnZXRXaW5kb3dTY3JvbGxCYXJYKGVsZW1lbnQpO1xuICBjb25zdCB5ID0gLXNjcm9sbC5zY3JvbGxUb3A7XG4gIGlmIChnZXRDb21wdXRlZFN0eWxlKGJvZHkpLmRpcmVjdGlvbiA9PT0gJ3J0bCcpIHtcbiAgICB4ICs9IG1heChodG1sLmNsaWVudFdpZHRoLCBib2R5LmNsaWVudFdpZHRoKSAtIHdpZHRoO1xuICB9XG4gIHJldHVybiB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIHgsXG4gICAgeVxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRWaWV3cG9ydFJlY3QoZWxlbWVudCwgc3RyYXRlZ3kpIHtcbiAgY29uc3Qgd2luID0gZ2V0V2luZG93KGVsZW1lbnQpO1xuICBjb25zdCBodG1sID0gZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpO1xuICBjb25zdCB2aXN1YWxWaWV3cG9ydCA9IHdpbi52aXN1YWxWaWV3cG9ydDtcbiAgbGV0IHdpZHRoID0gaHRtbC5jbGllbnRXaWR0aDtcbiAgbGV0IGhlaWdodCA9IGh0bWwuY2xpZW50SGVpZ2h0O1xuICBsZXQgeCA9IDA7XG4gIGxldCB5ID0gMDtcbiAgaWYgKHZpc3VhbFZpZXdwb3J0KSB7XG4gICAgd2lkdGggPSB2aXN1YWxWaWV3cG9ydC53aWR0aDtcbiAgICBoZWlnaHQgPSB2aXN1YWxWaWV3cG9ydC5oZWlnaHQ7XG4gICAgY29uc3QgdmlzdWFsVmlld3BvcnRCYXNlZCA9IGlzV2ViS2l0KCk7XG4gICAgaWYgKCF2aXN1YWxWaWV3cG9ydEJhc2VkIHx8IHZpc3VhbFZpZXdwb3J0QmFzZWQgJiYgc3RyYXRlZ3kgPT09ICdmaXhlZCcpIHtcbiAgICAgIHggPSB2aXN1YWxWaWV3cG9ydC5vZmZzZXRMZWZ0O1xuICAgICAgeSA9IHZpc3VhbFZpZXdwb3J0Lm9mZnNldFRvcDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gICAgeCxcbiAgICB5XG4gIH07XG59XG5cbi8vIFJldHVybnMgdGhlIGlubmVyIGNsaWVudCByZWN0LCBzdWJ0cmFjdGluZyBzY3JvbGxiYXJzIGlmIHByZXNlbnQuXG5mdW5jdGlvbiBnZXRJbm5lckJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50LCBzdHJhdGVneSkge1xuICBjb25zdCBjbGllbnRSZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KGVsZW1lbnQsIHRydWUsIHN0cmF0ZWd5ID09PSAnZml4ZWQnKTtcbiAgY29uc3QgdG9wID0gY2xpZW50UmVjdC50b3AgKyBlbGVtZW50LmNsaWVudFRvcDtcbiAgY29uc3QgbGVmdCA9IGNsaWVudFJlY3QubGVmdCArIGVsZW1lbnQuY2xpZW50TGVmdDtcbiAgY29uc3Qgc2NhbGUgPSBpc0hUTUxFbGVtZW50KGVsZW1lbnQpID8gZ2V0U2NhbGUoZWxlbWVudCkgOiBjcmVhdGVDb29yZHMoMSk7XG4gIGNvbnN0IHdpZHRoID0gZWxlbWVudC5jbGllbnRXaWR0aCAqIHNjYWxlLng7XG4gIGNvbnN0IGhlaWdodCA9IGVsZW1lbnQuY2xpZW50SGVpZ2h0ICogc2NhbGUueTtcbiAgY29uc3QgeCA9IGxlZnQgKiBzY2FsZS54O1xuICBjb25zdCB5ID0gdG9wICogc2NhbGUueTtcbiAgcmV0dXJuIHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gICAgeCxcbiAgICB5XG4gIH07XG59XG5mdW5jdGlvbiBnZXRDbGllbnRSZWN0RnJvbUNsaXBwaW5nQW5jZXN0b3IoZWxlbWVudCwgY2xpcHBpbmdBbmNlc3Rvciwgc3RyYXRlZ3kpIHtcbiAgbGV0IHJlY3Q7XG4gIGlmIChjbGlwcGluZ0FuY2VzdG9yID09PSAndmlld3BvcnQnKSB7XG4gICAgcmVjdCA9IGdldFZpZXdwb3J0UmVjdChlbGVtZW50LCBzdHJhdGVneSk7XG4gIH0gZWxzZSBpZiAoY2xpcHBpbmdBbmNlc3RvciA9PT0gJ2RvY3VtZW50Jykge1xuICAgIHJlY3QgPSBnZXREb2N1bWVudFJlY3QoZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpKTtcbiAgfSBlbHNlIGlmIChpc0VsZW1lbnQoY2xpcHBpbmdBbmNlc3RvcikpIHtcbiAgICByZWN0ID0gZ2V0SW5uZXJCb3VuZGluZ0NsaWVudFJlY3QoY2xpcHBpbmdBbmNlc3Rvciwgc3RyYXRlZ3kpO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHZpc3VhbE9mZnNldHMgPSBnZXRWaXN1YWxPZmZzZXRzKGVsZW1lbnQpO1xuICAgIHJlY3QgPSB7XG4gICAgICB4OiBjbGlwcGluZ0FuY2VzdG9yLnggLSB2aXN1YWxPZmZzZXRzLngsXG4gICAgICB5OiBjbGlwcGluZ0FuY2VzdG9yLnkgLSB2aXN1YWxPZmZzZXRzLnksXG4gICAgICB3aWR0aDogY2xpcHBpbmdBbmNlc3Rvci53aWR0aCxcbiAgICAgIGhlaWdodDogY2xpcHBpbmdBbmNlc3Rvci5oZWlnaHRcbiAgICB9O1xuICB9XG4gIHJldHVybiByZWN0VG9DbGllbnRSZWN0KHJlY3QpO1xufVxuZnVuY3Rpb24gaGFzRml4ZWRQb3NpdGlvbkFuY2VzdG9yKGVsZW1lbnQsIHN0b3BOb2RlKSB7XG4gIGNvbnN0IHBhcmVudE5vZGUgPSBnZXRQYXJlbnROb2RlKGVsZW1lbnQpO1xuICBpZiAocGFyZW50Tm9kZSA9PT0gc3RvcE5vZGUgfHwgIWlzRWxlbWVudChwYXJlbnROb2RlKSB8fCBpc0xhc3RUcmF2ZXJzYWJsZU5vZGUocGFyZW50Tm9kZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIGdldENvbXB1dGVkU3R5bGUocGFyZW50Tm9kZSkucG9zaXRpb24gPT09ICdmaXhlZCcgfHwgaGFzRml4ZWRQb3NpdGlvbkFuY2VzdG9yKHBhcmVudE5vZGUsIHN0b3BOb2RlKTtcbn1cblxuLy8gQSBcImNsaXBwaW5nIGFuY2VzdG9yXCIgaXMgYW4gYG92ZXJmbG93YCBlbGVtZW50IHdpdGggdGhlIGNoYXJhY3RlcmlzdGljIG9mXG4vLyBjbGlwcGluZyAob3IgaGlkaW5nKSBjaGlsZCBlbGVtZW50cy4gVGhpcyByZXR1cm5zIGFsbCBjbGlwcGluZyBhbmNlc3RvcnNcbi8vIG9mIHRoZSBnaXZlbiBlbGVtZW50IHVwIHRoZSB0cmVlLlxuZnVuY3Rpb24gZ2V0Q2xpcHBpbmdFbGVtZW50QW5jZXN0b3JzKGVsZW1lbnQsIGNhY2hlKSB7XG4gIGNvbnN0IGNhY2hlZFJlc3VsdCA9IGNhY2hlLmdldChlbGVtZW50KTtcbiAgaWYgKGNhY2hlZFJlc3VsdCkge1xuICAgIHJldHVybiBjYWNoZWRSZXN1bHQ7XG4gIH1cbiAgbGV0IHJlc3VsdCA9IGdldE92ZXJmbG93QW5jZXN0b3JzKGVsZW1lbnQsIFtdLCBmYWxzZSkuZmlsdGVyKGVsID0+IGlzRWxlbWVudChlbCkgJiYgZ2V0Tm9kZU5hbWUoZWwpICE9PSAnYm9keScpO1xuICBsZXQgY3VycmVudENvbnRhaW5pbmdCbG9ja0NvbXB1dGVkU3R5bGUgPSBudWxsO1xuICBjb25zdCBlbGVtZW50SXNGaXhlZCA9IGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkucG9zaXRpb24gPT09ICdmaXhlZCc7XG4gIGxldCBjdXJyZW50Tm9kZSA9IGVsZW1lbnRJc0ZpeGVkID8gZ2V0UGFyZW50Tm9kZShlbGVtZW50KSA6IGVsZW1lbnQ7XG5cbiAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL0NvbnRhaW5pbmdfYmxvY2sjaWRlbnRpZnlpbmdfdGhlX2NvbnRhaW5pbmdfYmxvY2tcbiAgd2hpbGUgKGlzRWxlbWVudChjdXJyZW50Tm9kZSkgJiYgIWlzTGFzdFRyYXZlcnNhYmxlTm9kZShjdXJyZW50Tm9kZSkpIHtcbiAgICBjb25zdCBjb21wdXRlZFN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZShjdXJyZW50Tm9kZSk7XG4gICAgY29uc3QgY3VycmVudE5vZGVJc0NvbnRhaW5pbmcgPSBpc0NvbnRhaW5pbmdCbG9jayhjdXJyZW50Tm9kZSk7XG4gICAgaWYgKCFjdXJyZW50Tm9kZUlzQ29udGFpbmluZyAmJiBjb21wdXRlZFN0eWxlLnBvc2l0aW9uID09PSAnZml4ZWQnKSB7XG4gICAgICBjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZSA9IG51bGw7XG4gICAgfVxuICAgIGNvbnN0IHNob3VsZERyb3BDdXJyZW50Tm9kZSA9IGVsZW1lbnRJc0ZpeGVkID8gIWN1cnJlbnROb2RlSXNDb250YWluaW5nICYmICFjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZSA6ICFjdXJyZW50Tm9kZUlzQ29udGFpbmluZyAmJiBjb21wdXRlZFN0eWxlLnBvc2l0aW9uID09PSAnc3RhdGljJyAmJiAhIWN1cnJlbnRDb250YWluaW5nQmxvY2tDb21wdXRlZFN0eWxlICYmIFsnYWJzb2x1dGUnLCAnZml4ZWQnXS5pbmNsdWRlcyhjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZS5wb3NpdGlvbikgfHwgaXNPdmVyZmxvd0VsZW1lbnQoY3VycmVudE5vZGUpICYmICFjdXJyZW50Tm9kZUlzQ29udGFpbmluZyAmJiBoYXNGaXhlZFBvc2l0aW9uQW5jZXN0b3IoZWxlbWVudCwgY3VycmVudE5vZGUpO1xuICAgIGlmIChzaG91bGREcm9wQ3VycmVudE5vZGUpIHtcbiAgICAgIC8vIERyb3Agbm9uLWNvbnRhaW5pbmcgYmxvY2tzLlxuICAgICAgcmVzdWx0ID0gcmVzdWx0LmZpbHRlcihhbmNlc3RvciA9PiBhbmNlc3RvciAhPT0gY3VycmVudE5vZGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBSZWNvcmQgbGFzdCBjb250YWluaW5nIGJsb2NrIGZvciBuZXh0IGl0ZXJhdGlvbi5cbiAgICAgIGN1cnJlbnRDb250YWluaW5nQmxvY2tDb21wdXRlZFN0eWxlID0gY29tcHV0ZWRTdHlsZTtcbiAgICB9XG4gICAgY3VycmVudE5vZGUgPSBnZXRQYXJlbnROb2RlKGN1cnJlbnROb2RlKTtcbiAgfVxuICBjYWNoZS5zZXQoZWxlbWVudCwgcmVzdWx0KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLy8gR2V0cyB0aGUgbWF4aW11bSBhcmVhIHRoYXQgdGhlIGVsZW1lbnQgaXMgdmlzaWJsZSBpbiBkdWUgdG8gYW55IG51bWJlciBvZlxuLy8gY2xpcHBpbmcgYW5jZXN0b3JzLlxuZnVuY3Rpb24gZ2V0Q2xpcHBpbmdSZWN0KF9yZWYpIHtcbiAgbGV0IHtcbiAgICBlbGVtZW50LFxuICAgIGJvdW5kYXJ5LFxuICAgIHJvb3RCb3VuZGFyeSxcbiAgICBzdHJhdGVneVxuICB9ID0gX3JlZjtcbiAgY29uc3QgZWxlbWVudENsaXBwaW5nQW5jZXN0b3JzID0gYm91bmRhcnkgPT09ICdjbGlwcGluZ0FuY2VzdG9ycycgPyBpc1RvcExheWVyKGVsZW1lbnQpID8gW10gOiBnZXRDbGlwcGluZ0VsZW1lbnRBbmNlc3RvcnMoZWxlbWVudCwgdGhpcy5fYykgOiBbXS5jb25jYXQoYm91bmRhcnkpO1xuICBjb25zdCBjbGlwcGluZ0FuY2VzdG9ycyA9IFsuLi5lbGVtZW50Q2xpcHBpbmdBbmNlc3RvcnMsIHJvb3RCb3VuZGFyeV07XG4gIGNvbnN0IGZpcnN0Q2xpcHBpbmdBbmNlc3RvciA9IGNsaXBwaW5nQW5jZXN0b3JzWzBdO1xuICBjb25zdCBjbGlwcGluZ1JlY3QgPSBjbGlwcGluZ0FuY2VzdG9ycy5yZWR1Y2UoKGFjY1JlY3QsIGNsaXBwaW5nQW5jZXN0b3IpID0+IHtcbiAgICBjb25zdCByZWN0ID0gZ2V0Q2xpZW50UmVjdEZyb21DbGlwcGluZ0FuY2VzdG9yKGVsZW1lbnQsIGNsaXBwaW5nQW5jZXN0b3IsIHN0cmF0ZWd5KTtcbiAgICBhY2NSZWN0LnRvcCA9IG1heChyZWN0LnRvcCwgYWNjUmVjdC50b3ApO1xuICAgIGFjY1JlY3QucmlnaHQgPSBtaW4ocmVjdC5yaWdodCwgYWNjUmVjdC5yaWdodCk7XG4gICAgYWNjUmVjdC5ib3R0b20gPSBtaW4ocmVjdC5ib3R0b20sIGFjY1JlY3QuYm90dG9tKTtcbiAgICBhY2NSZWN0LmxlZnQgPSBtYXgocmVjdC5sZWZ0LCBhY2NSZWN0LmxlZnQpO1xuICAgIHJldHVybiBhY2NSZWN0O1xuICB9LCBnZXRDbGllbnRSZWN0RnJvbUNsaXBwaW5nQW5jZXN0b3IoZWxlbWVudCwgZmlyc3RDbGlwcGluZ0FuY2VzdG9yLCBzdHJhdGVneSkpO1xuICByZXR1cm4ge1xuICAgIHdpZHRoOiBjbGlwcGluZ1JlY3QucmlnaHQgLSBjbGlwcGluZ1JlY3QubGVmdCxcbiAgICBoZWlnaHQ6IGNsaXBwaW5nUmVjdC5ib3R0b20gLSBjbGlwcGluZ1JlY3QudG9wLFxuICAgIHg6IGNsaXBwaW5nUmVjdC5sZWZ0LFxuICAgIHk6IGNsaXBwaW5nUmVjdC50b3BcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0RGltZW5zaW9ucyhlbGVtZW50KSB7XG4gIGNvbnN0IHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHRcbiAgfSA9IGdldENzc0RpbWVuc2lvbnMoZWxlbWVudCk7XG4gIHJldHVybiB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0XG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldFJlY3RSZWxhdGl2ZVRvT2Zmc2V0UGFyZW50KGVsZW1lbnQsIG9mZnNldFBhcmVudCwgc3RyYXRlZ3kpIHtcbiAgY29uc3QgaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgPSBpc0hUTUxFbGVtZW50KG9mZnNldFBhcmVudCk7XG4gIGNvbnN0IGRvY3VtZW50RWxlbWVudCA9IGdldERvY3VtZW50RWxlbWVudChvZmZzZXRQYXJlbnQpO1xuICBjb25zdCBpc0ZpeGVkID0gc3RyYXRlZ3kgPT09ICdmaXhlZCc7XG4gIGNvbnN0IHJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCwgdHJ1ZSwgaXNGaXhlZCwgb2Zmc2V0UGFyZW50KTtcbiAgbGV0IHNjcm9sbCA9IHtcbiAgICBzY3JvbGxMZWZ0OiAwLFxuICAgIHNjcm9sbFRvcDogMFxuICB9O1xuICBjb25zdCBvZmZzZXRzID0gY3JlYXRlQ29vcmRzKDApO1xuICBpZiAoaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgfHwgIWlzT2Zmc2V0UGFyZW50QW5FbGVtZW50ICYmICFpc0ZpeGVkKSB7XG4gICAgaWYgKGdldE5vZGVOYW1lKG9mZnNldFBhcmVudCkgIT09ICdib2R5JyB8fCBpc092ZXJmbG93RWxlbWVudChkb2N1bWVudEVsZW1lbnQpKSB7XG4gICAgICBzY3JvbGwgPSBnZXROb2RlU2Nyb2xsKG9mZnNldFBhcmVudCk7XG4gICAgfVxuICAgIGlmIChpc09mZnNldFBhcmVudEFuRWxlbWVudCkge1xuICAgICAgY29uc3Qgb2Zmc2V0UmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChvZmZzZXRQYXJlbnQsIHRydWUsIGlzRml4ZWQsIG9mZnNldFBhcmVudCk7XG4gICAgICBvZmZzZXRzLnggPSBvZmZzZXRSZWN0LnggKyBvZmZzZXRQYXJlbnQuY2xpZW50TGVmdDtcbiAgICAgIG9mZnNldHMueSA9IG9mZnNldFJlY3QueSArIG9mZnNldFBhcmVudC5jbGllbnRUb3A7XG4gICAgfSBlbHNlIGlmIChkb2N1bWVudEVsZW1lbnQpIHtcbiAgICAgIC8vIElmIHRoZSA8Ym9keT4gc2Nyb2xsYmFyIGFwcGVhcnMgb24gdGhlIGxlZnQgKGUuZy4gUlRMIHN5c3RlbXMpLiBVc2VcbiAgICAgIC8vIEZpcmVmb3ggd2l0aCBsYXlvdXQuc2Nyb2xsYmFyLnNpZGUgPSAzIGluIGFib3V0OmNvbmZpZyB0byB0ZXN0IHRoaXMuXG4gICAgICBvZmZzZXRzLnggPSBnZXRXaW5kb3dTY3JvbGxCYXJYKGRvY3VtZW50RWxlbWVudCk7XG4gICAgfVxuICB9XG4gIGNvbnN0IGh0bWxPZmZzZXQgPSBkb2N1bWVudEVsZW1lbnQgJiYgIWlzT2Zmc2V0UGFyZW50QW5FbGVtZW50ICYmICFpc0ZpeGVkID8gZ2V0SFRNTE9mZnNldChkb2N1bWVudEVsZW1lbnQsIHNjcm9sbCkgOiBjcmVhdGVDb29yZHMoMCk7XG4gIGNvbnN0IHggPSByZWN0LmxlZnQgKyBzY3JvbGwuc2Nyb2xsTGVmdCAtIG9mZnNldHMueCAtIGh0bWxPZmZzZXQueDtcbiAgY29uc3QgeSA9IHJlY3QudG9wICsgc2Nyb2xsLnNjcm9sbFRvcCAtIG9mZnNldHMueSAtIGh0bWxPZmZzZXQueTtcbiAgcmV0dXJuIHtcbiAgICB4LFxuICAgIHksXG4gICAgd2lkdGg6IHJlY3Qud2lkdGgsXG4gICAgaGVpZ2h0OiByZWN0LmhlaWdodFxuICB9O1xufVxuXG5mdW5jdGlvbiBpc1N0YXRpY1Bvc2l0aW9uZWQoZWxlbWVudCkge1xuICByZXR1cm4gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KS5wb3NpdGlvbiA9PT0gJ3N0YXRpYyc7XG59XG5cbmZ1bmN0aW9uIGdldFRydWVPZmZzZXRQYXJlbnQoZWxlbWVudCwgcG9seWZpbGwpIHtcbiAgaWYgKCFpc0hUTUxFbGVtZW50KGVsZW1lbnQpIHx8IGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkucG9zaXRpb24gPT09ICdmaXhlZCcpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBpZiAocG9seWZpbGwpIHtcbiAgICByZXR1cm4gcG9seWZpbGwoZWxlbWVudCk7XG4gIH1cbiAgbGV0IHJhd09mZnNldFBhcmVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50O1xuXG4gIC8vIEZpcmVmb3ggcmV0dXJucyB0aGUgPGh0bWw+IGVsZW1lbnQgYXMgdGhlIG9mZnNldFBhcmVudCBpZiBpdCdzIG5vbi1zdGF0aWMsXG4gIC8vIHdoaWxlIENocm9tZSBhbmQgU2FmYXJpIHJldHVybiB0aGUgPGJvZHk+IGVsZW1lbnQuIFRoZSA8Ym9keT4gZWxlbWVudCBtdXN0XG4gIC8vIGJlIHVzZWQgdG8gcGVyZm9ybSB0aGUgY29ycmVjdCBjYWxjdWxhdGlvbnMgZXZlbiBpZiB0aGUgPGh0bWw+IGVsZW1lbnQgaXNcbiAgLy8gbm9uLXN0YXRpYy5cbiAgaWYgKGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KSA9PT0gcmF3T2Zmc2V0UGFyZW50KSB7XG4gICAgcmF3T2Zmc2V0UGFyZW50ID0gcmF3T2Zmc2V0UGFyZW50Lm93bmVyRG9jdW1lbnQuYm9keTtcbiAgfVxuICByZXR1cm4gcmF3T2Zmc2V0UGFyZW50O1xufVxuXG4vLyBHZXRzIHRoZSBjbG9zZXN0IGFuY2VzdG9yIHBvc2l0aW9uZWQgZWxlbWVudC4gSGFuZGxlcyBzb21lIGVkZ2UgY2FzZXMsXG4vLyBzdWNoIGFzIHRhYmxlIGFuY2VzdG9ycyBhbmQgY3Jvc3MgYnJvd3NlciBidWdzLlxuZnVuY3Rpb24gZ2V0T2Zmc2V0UGFyZW50KGVsZW1lbnQsIHBvbHlmaWxsKSB7XG4gIGNvbnN0IHdpbiA9IGdldFdpbmRvdyhlbGVtZW50KTtcbiAgaWYgKGlzVG9wTGF5ZXIoZWxlbWVudCkpIHtcbiAgICByZXR1cm4gd2luO1xuICB9XG4gIGlmICghaXNIVE1MRWxlbWVudChlbGVtZW50KSkge1xuICAgIGxldCBzdmdPZmZzZXRQYXJlbnQgPSBnZXRQYXJlbnROb2RlKGVsZW1lbnQpO1xuICAgIHdoaWxlIChzdmdPZmZzZXRQYXJlbnQgJiYgIWlzTGFzdFRyYXZlcnNhYmxlTm9kZShzdmdPZmZzZXRQYXJlbnQpKSB7XG4gICAgICBpZiAoaXNFbGVtZW50KHN2Z09mZnNldFBhcmVudCkgJiYgIWlzU3RhdGljUG9zaXRpb25lZChzdmdPZmZzZXRQYXJlbnQpKSB7XG4gICAgICAgIHJldHVybiBzdmdPZmZzZXRQYXJlbnQ7XG4gICAgICB9XG4gICAgICBzdmdPZmZzZXRQYXJlbnQgPSBnZXRQYXJlbnROb2RlKHN2Z09mZnNldFBhcmVudCk7XG4gICAgfVxuICAgIHJldHVybiB3aW47XG4gIH1cbiAgbGV0IG9mZnNldFBhcmVudCA9IGdldFRydWVPZmZzZXRQYXJlbnQoZWxlbWVudCwgcG9seWZpbGwpO1xuICB3aGlsZSAob2Zmc2V0UGFyZW50ICYmIGlzVGFibGVFbGVtZW50KG9mZnNldFBhcmVudCkgJiYgaXNTdGF0aWNQb3NpdGlvbmVkKG9mZnNldFBhcmVudCkpIHtcbiAgICBvZmZzZXRQYXJlbnQgPSBnZXRUcnVlT2Zmc2V0UGFyZW50KG9mZnNldFBhcmVudCwgcG9seWZpbGwpO1xuICB9XG4gIGlmIChvZmZzZXRQYXJlbnQgJiYgaXNMYXN0VHJhdmVyc2FibGVOb2RlKG9mZnNldFBhcmVudCkgJiYgaXNTdGF0aWNQb3NpdGlvbmVkKG9mZnNldFBhcmVudCkgJiYgIWlzQ29udGFpbmluZ0Jsb2NrKG9mZnNldFBhcmVudCkpIHtcbiAgICByZXR1cm4gd2luO1xuICB9XG4gIHJldHVybiBvZmZzZXRQYXJlbnQgfHwgZ2V0Q29udGFpbmluZ0Jsb2NrKGVsZW1lbnQpIHx8IHdpbjtcbn1cblxuY29uc3QgZ2V0RWxlbWVudFJlY3RzID0gYXN5bmMgZnVuY3Rpb24gKGRhdGEpIHtcbiAgY29uc3QgZ2V0T2Zmc2V0UGFyZW50Rm4gPSB0aGlzLmdldE9mZnNldFBhcmVudCB8fCBnZXRPZmZzZXRQYXJlbnQ7XG4gIGNvbnN0IGdldERpbWVuc2lvbnNGbiA9IHRoaXMuZ2V0RGltZW5zaW9ucztcbiAgY29uc3QgZmxvYXRpbmdEaW1lbnNpb25zID0gYXdhaXQgZ2V0RGltZW5zaW9uc0ZuKGRhdGEuZmxvYXRpbmcpO1xuICByZXR1cm4ge1xuICAgIHJlZmVyZW5jZTogZ2V0UmVjdFJlbGF0aXZlVG9PZmZzZXRQYXJlbnQoZGF0YS5yZWZlcmVuY2UsIGF3YWl0IGdldE9mZnNldFBhcmVudEZuKGRhdGEuZmxvYXRpbmcpLCBkYXRhLnN0cmF0ZWd5KSxcbiAgICBmbG9hdGluZzoge1xuICAgICAgeDogMCxcbiAgICAgIHk6IDAsXG4gICAgICB3aWR0aDogZmxvYXRpbmdEaW1lbnNpb25zLndpZHRoLFxuICAgICAgaGVpZ2h0OiBmbG9hdGluZ0RpbWVuc2lvbnMuaGVpZ2h0XG4gICAgfVxuICB9O1xufTtcblxuZnVuY3Rpb24gaXNSVEwoZWxlbWVudCkge1xuICByZXR1cm4gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KS5kaXJlY3Rpb24gPT09ICdydGwnO1xufVxuXG5jb25zdCBwbGF0Zm9ybSA9IHtcbiAgY29udmVydE9mZnNldFBhcmVudFJlbGF0aXZlUmVjdFRvVmlld3BvcnRSZWxhdGl2ZVJlY3QsXG4gIGdldERvY3VtZW50RWxlbWVudCxcbiAgZ2V0Q2xpcHBpbmdSZWN0LFxuICBnZXRPZmZzZXRQYXJlbnQsXG4gIGdldEVsZW1lbnRSZWN0cyxcbiAgZ2V0Q2xpZW50UmVjdHMsXG4gIGdldERpbWVuc2lvbnMsXG4gIGdldFNjYWxlLFxuICBpc0VsZW1lbnQsXG4gIGlzUlRMXG59O1xuXG5mdW5jdGlvbiByZWN0c0FyZUVxdWFsKGEsIGIpIHtcbiAgcmV0dXJuIGEueCA9PT0gYi54ICYmIGEueSA9PT0gYi55ICYmIGEud2lkdGggPT09IGIud2lkdGggJiYgYS5oZWlnaHQgPT09IGIuaGVpZ2h0O1xufVxuXG4vLyBodHRwczovL3NhbXRob3IuYXUvMjAyMS9vYnNlcnZpbmctZG9tL1xuZnVuY3Rpb24gb2JzZXJ2ZU1vdmUoZWxlbWVudCwgb25Nb3ZlKSB7XG4gIGxldCBpbyA9IG51bGw7XG4gIGxldCB0aW1lb3V0SWQ7XG4gIGNvbnN0IHJvb3QgPSBnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCk7XG4gIGZ1bmN0aW9uIGNsZWFudXAoKSB7XG4gICAgdmFyIF9pbztcbiAgICBjbGVhclRpbWVvdXQodGltZW91dElkKTtcbiAgICAoX2lvID0gaW8pID09IG51bGwgfHwgX2lvLmRpc2Nvbm5lY3QoKTtcbiAgICBpbyA9IG51bGw7XG4gIH1cbiAgZnVuY3Rpb24gcmVmcmVzaChza2lwLCB0aHJlc2hvbGQpIHtcbiAgICBpZiAoc2tpcCA9PT0gdm9pZCAwKSB7XG4gICAgICBza2lwID0gZmFsc2U7XG4gICAgfVxuICAgIGlmICh0aHJlc2hvbGQgPT09IHZvaWQgMCkge1xuICAgICAgdGhyZXNob2xkID0gMTtcbiAgICB9XG4gICAgY2xlYW51cCgpO1xuICAgIGNvbnN0IGVsZW1lbnRSZWN0Rm9yUm9vdE1hcmdpbiA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgY29uc3Qge1xuICAgICAgbGVmdCxcbiAgICAgIHRvcCxcbiAgICAgIHdpZHRoLFxuICAgICAgaGVpZ2h0XG4gICAgfSA9IGVsZW1lbnRSZWN0Rm9yUm9vdE1hcmdpbjtcbiAgICBpZiAoIXNraXApIHtcbiAgICAgIG9uTW92ZSgpO1xuICAgIH1cbiAgICBpZiAoIXdpZHRoIHx8ICFoZWlnaHQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgaW5zZXRUb3AgPSBmbG9vcih0b3ApO1xuICAgIGNvbnN0IGluc2V0UmlnaHQgPSBmbG9vcihyb290LmNsaWVudFdpZHRoIC0gKGxlZnQgKyB3aWR0aCkpO1xuICAgIGNvbnN0IGluc2V0Qm90dG9tID0gZmxvb3Iocm9vdC5jbGllbnRIZWlnaHQgLSAodG9wICsgaGVpZ2h0KSk7XG4gICAgY29uc3QgaW5zZXRMZWZ0ID0gZmxvb3IobGVmdCk7XG4gICAgY29uc3Qgcm9vdE1hcmdpbiA9IC1pbnNldFRvcCArIFwicHggXCIgKyAtaW5zZXRSaWdodCArIFwicHggXCIgKyAtaW5zZXRCb3R0b20gKyBcInB4IFwiICsgLWluc2V0TGVmdCArIFwicHhcIjtcbiAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgcm9vdE1hcmdpbixcbiAgICAgIHRocmVzaG9sZDogbWF4KDAsIG1pbigxLCB0aHJlc2hvbGQpKSB8fCAxXG4gICAgfTtcbiAgICBsZXQgaXNGaXJzdFVwZGF0ZSA9IHRydWU7XG4gICAgZnVuY3Rpb24gaGFuZGxlT2JzZXJ2ZShlbnRyaWVzKSB7XG4gICAgICBjb25zdCByYXRpbyA9IGVudHJpZXNbMF0uaW50ZXJzZWN0aW9uUmF0aW87XG4gICAgICBpZiAocmF0aW8gIT09IHRocmVzaG9sZCkge1xuICAgICAgICBpZiAoIWlzRmlyc3RVcGRhdGUpIHtcbiAgICAgICAgICByZXR1cm4gcmVmcmVzaCgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghcmF0aW8pIHtcbiAgICAgICAgICAvLyBJZiB0aGUgcmVmZXJlbmNlIGlzIGNsaXBwZWQsIHRoZSByYXRpbyBpcyAwLiBUaHJvdHRsZSB0aGUgcmVmcmVzaFxuICAgICAgICAgIC8vIHRvIHByZXZlbnQgYW4gaW5maW5pdGUgbG9vcCBvZiB1cGRhdGVzLlxuICAgICAgICAgIHRpbWVvdXRJZCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgcmVmcmVzaChmYWxzZSwgMWUtNyk7XG4gICAgICAgICAgfSwgMTAwMCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVmcmVzaChmYWxzZSwgcmF0aW8pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAocmF0aW8gPT09IDEgJiYgIXJlY3RzQXJlRXF1YWwoZWxlbWVudFJlY3RGb3JSb290TWFyZ2luLCBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKSkge1xuICAgICAgICAvLyBJdCdzIHBvc3NpYmxlIHRoYXQgZXZlbiB0aG91Z2ggdGhlIHJhdGlvIGlzIHJlcG9ydGVkIGFzIDEsIHRoZVxuICAgICAgICAvLyBlbGVtZW50IGlzIG5vdCBhY3R1YWxseSBmdWxseSB3aXRoaW4gdGhlIEludGVyc2VjdGlvbk9ic2VydmVyJ3Mgcm9vdFxuICAgICAgICAvLyBhcmVhIGFueW1vcmUuIFRoaXMgY2FuIGhhcHBlbiB1bmRlciBwZXJmb3JtYW5jZSBjb25zdHJhaW50cy4gVGhpcyBtYXlcbiAgICAgICAgLy8gYmUgYSBidWcgaW4gdGhlIGJyb3dzZXIncyBJbnRlcnNlY3Rpb25PYnNlcnZlciBpbXBsZW1lbnRhdGlvbi4gVG9cbiAgICAgICAgLy8gd29yayBhcm91bmQgdGhpcywgd2UgY29tcGFyZSB0aGUgZWxlbWVudCdzIGJvdW5kaW5nIHJlY3Qgbm93IHdpdGhcbiAgICAgICAgLy8gd2hhdCBpdCB3YXMgYXQgdGhlIHRpbWUgd2UgY3JlYXRlZCB0aGUgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIuIElmIHRoZXlcbiAgICAgICAgLy8gYXJlIG5vdCBlcXVhbCB0aGVuIHRoZSBlbGVtZW50IG1vdmVkLCBzbyB3ZSByZWZyZXNoLlxuICAgICAgICByZWZyZXNoKCk7XG4gICAgICB9XG4gICAgICBpc0ZpcnN0VXBkYXRlID0gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gT2xkZXIgYnJvd3NlcnMgZG9uJ3Qgc3VwcG9ydCBhIGBkb2N1bWVudGAgYXMgdGhlIHJvb3QgYW5kIHdpbGwgdGhyb3cgYW5cbiAgICAvLyBlcnJvci5cbiAgICB0cnkge1xuICAgICAgaW8gPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoaGFuZGxlT2JzZXJ2ZSwge1xuICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICAvLyBIYW5kbGUgPGlmcmFtZT5zXG4gICAgICAgIHJvb3Q6IHJvb3Qub3duZXJEb2N1bWVudFxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaW8gPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoaGFuZGxlT2JzZXJ2ZSwgb3B0aW9ucyk7XG4gICAgfVxuICAgIGlvLm9ic2VydmUoZWxlbWVudCk7XG4gIH1cbiAgcmVmcmVzaCh0cnVlKTtcbiAgcmV0dXJuIGNsZWFudXA7XG59XG5cbi8qKlxuICogQXV0b21hdGljYWxseSB1cGRhdGVzIHRoZSBwb3NpdGlvbiBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCB3aGVuIG5lY2Vzc2FyeS5cbiAqIFNob3VsZCBvbmx5IGJlIGNhbGxlZCB3aGVuIHRoZSBmbG9hdGluZyBlbGVtZW50IGlzIG1vdW50ZWQgb24gdGhlIERPTSBvclxuICogdmlzaWJsZSBvbiB0aGUgc2NyZWVuLlxuICogQHJldHVybnMgY2xlYW51cCBmdW5jdGlvbiB0aGF0IHNob3VsZCBiZSBpbnZva2VkIHdoZW4gdGhlIGZsb2F0aW5nIGVsZW1lbnQgaXNcbiAqIHJlbW92ZWQgZnJvbSB0aGUgRE9NIG9yIGhpZGRlbiBmcm9tIHRoZSBzY3JlZW4uXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvYXV0b1VwZGF0ZVxuICovXG5mdW5jdGlvbiBhdXRvVXBkYXRlKHJlZmVyZW5jZSwgZmxvYXRpbmcsIHVwZGF0ZSwgb3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIGNvbnN0IHtcbiAgICBhbmNlc3RvclNjcm9sbCA9IHRydWUsXG4gICAgYW5jZXN0b3JSZXNpemUgPSB0cnVlLFxuICAgIGVsZW1lbnRSZXNpemUgPSB0eXBlb2YgUmVzaXplT2JzZXJ2ZXIgPT09ICdmdW5jdGlvbicsXG4gICAgbGF5b3V0U2hpZnQgPSB0eXBlb2YgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgPT09ICdmdW5jdGlvbicsXG4gICAgYW5pbWF0aW9uRnJhbWUgPSBmYWxzZVxuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgcmVmZXJlbmNlRWwgPSB1bndyYXBFbGVtZW50KHJlZmVyZW5jZSk7XG4gIGNvbnN0IGFuY2VzdG9ycyA9IGFuY2VzdG9yU2Nyb2xsIHx8IGFuY2VzdG9yUmVzaXplID8gWy4uLihyZWZlcmVuY2VFbCA/IGdldE92ZXJmbG93QW5jZXN0b3JzKHJlZmVyZW5jZUVsKSA6IFtdKSwgLi4uZ2V0T3ZlcmZsb3dBbmNlc3RvcnMoZmxvYXRpbmcpXSA6IFtdO1xuICBhbmNlc3RvcnMuZm9yRWFjaChhbmNlc3RvciA9PiB7XG4gICAgYW5jZXN0b3JTY3JvbGwgJiYgYW5jZXN0b3IuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdXBkYXRlLCB7XG4gICAgICBwYXNzaXZlOiB0cnVlXG4gICAgfSk7XG4gICAgYW5jZXN0b3JSZXNpemUgJiYgYW5jZXN0b3IuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdXBkYXRlKTtcbiAgfSk7XG4gIGNvbnN0IGNsZWFudXBJbyA9IHJlZmVyZW5jZUVsICYmIGxheW91dFNoaWZ0ID8gb2JzZXJ2ZU1vdmUocmVmZXJlbmNlRWwsIHVwZGF0ZSkgOiBudWxsO1xuICBsZXQgcmVvYnNlcnZlRnJhbWUgPSAtMTtcbiAgbGV0IHJlc2l6ZU9ic2VydmVyID0gbnVsbDtcbiAgaWYgKGVsZW1lbnRSZXNpemUpIHtcbiAgICByZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcihfcmVmID0+IHtcbiAgICAgIGxldCBbZmlyc3RFbnRyeV0gPSBfcmVmO1xuICAgICAgaWYgKGZpcnN0RW50cnkgJiYgZmlyc3RFbnRyeS50YXJnZXQgPT09IHJlZmVyZW5jZUVsICYmIHJlc2l6ZU9ic2VydmVyKSB7XG4gICAgICAgIC8vIFByZXZlbnQgdXBkYXRlIGxvb3BzIHdoZW4gdXNpbmcgdGhlIGBzaXplYCBtaWRkbGV3YXJlLlxuICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmxvYXRpbmctdWkvZmxvYXRpbmctdWkvaXNzdWVzLzE3NDBcbiAgICAgICAgcmVzaXplT2JzZXJ2ZXIudW5vYnNlcnZlKGZsb2F0aW5nKTtcbiAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUocmVvYnNlcnZlRnJhbWUpO1xuICAgICAgICByZW9ic2VydmVGcmFtZSA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgdmFyIF9yZXNpemVPYnNlcnZlcjtcbiAgICAgICAgICAoX3Jlc2l6ZU9ic2VydmVyID0gcmVzaXplT2JzZXJ2ZXIpID09IG51bGwgfHwgX3Jlc2l6ZU9ic2VydmVyLm9ic2VydmUoZmxvYXRpbmcpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHVwZGF0ZSgpO1xuICAgIH0pO1xuICAgIGlmIChyZWZlcmVuY2VFbCAmJiAhYW5pbWF0aW9uRnJhbWUpIHtcbiAgICAgIHJlc2l6ZU9ic2VydmVyLm9ic2VydmUocmVmZXJlbmNlRWwpO1xuICAgIH1cbiAgICByZXNpemVPYnNlcnZlci5vYnNlcnZlKGZsb2F0aW5nKTtcbiAgfVxuICBsZXQgZnJhbWVJZDtcbiAgbGV0IHByZXZSZWZSZWN0ID0gYW5pbWF0aW9uRnJhbWUgPyBnZXRCb3VuZGluZ0NsaWVudFJlY3QocmVmZXJlbmNlKSA6IG51bGw7XG4gIGlmIChhbmltYXRpb25GcmFtZSkge1xuICAgIGZyYW1lTG9vcCgpO1xuICB9XG4gIGZ1bmN0aW9uIGZyYW1lTG9vcCgpIHtcbiAgICBjb25zdCBuZXh0UmVmUmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChyZWZlcmVuY2UpO1xuICAgIGlmIChwcmV2UmVmUmVjdCAmJiAhcmVjdHNBcmVFcXVhbChwcmV2UmVmUmVjdCwgbmV4dFJlZlJlY3QpKSB7XG4gICAgICB1cGRhdGUoKTtcbiAgICB9XG4gICAgcHJldlJlZlJlY3QgPSBuZXh0UmVmUmVjdDtcbiAgICBmcmFtZUlkID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZyYW1lTG9vcCk7XG4gIH1cbiAgdXBkYXRlKCk7XG4gIHJldHVybiAoKSA9PiB7XG4gICAgdmFyIF9yZXNpemVPYnNlcnZlcjI7XG4gICAgYW5jZXN0b3JzLmZvckVhY2goYW5jZXN0b3IgPT4ge1xuICAgICAgYW5jZXN0b3JTY3JvbGwgJiYgYW5jZXN0b3IucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdXBkYXRlKTtcbiAgICAgIGFuY2VzdG9yUmVzaXplICYmIGFuY2VzdG9yLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHVwZGF0ZSk7XG4gICAgfSk7XG4gICAgY2xlYW51cElvID09IG51bGwgfHwgY2xlYW51cElvKCk7XG4gICAgKF9yZXNpemVPYnNlcnZlcjIgPSByZXNpemVPYnNlcnZlcikgPT0gbnVsbCB8fCBfcmVzaXplT2JzZXJ2ZXIyLmRpc2Nvbm5lY3QoKTtcbiAgICByZXNpemVPYnNlcnZlciA9IG51bGw7XG4gICAgaWYgKGFuaW1hdGlvbkZyYW1lKSB7XG4gICAgICBjYW5jZWxBbmltYXRpb25GcmFtZShmcmFtZUlkKTtcbiAgICB9XG4gIH07XG59XG5cbi8qKlxuICogUmVzb2x2ZXMgd2l0aCBhbiBvYmplY3Qgb2Ygb3ZlcmZsb3cgc2lkZSBvZmZzZXRzIHRoYXQgZGV0ZXJtaW5lIGhvdyBtdWNoIHRoZVxuICogZWxlbWVudCBpcyBvdmVyZmxvd2luZyBhIGdpdmVuIGNsaXBwaW5nIGJvdW5kYXJ5IG9uIGVhY2ggc2lkZS5cbiAqIC0gcG9zaXRpdmUgPSBvdmVyZmxvd2luZyB0aGUgYm91bmRhcnkgYnkgdGhhdCBudW1iZXIgb2YgcGl4ZWxzXG4gKiAtIG5lZ2F0aXZlID0gaG93IG1hbnkgcGl4ZWxzIGxlZnQgYmVmb3JlIGl0IHdpbGwgb3ZlcmZsb3dcbiAqIC0gMCA9IGxpZXMgZmx1c2ggd2l0aCB0aGUgYm91bmRhcnlcbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9kZXRlY3RPdmVyZmxvd1xuICovXG5jb25zdCBkZXRlY3RPdmVyZmxvdyA9IGRldGVjdE92ZXJmbG93JDE7XG5cbi8qKlxuICogTW9kaWZpZXMgdGhlIHBsYWNlbWVudCBieSB0cmFuc2xhdGluZyB0aGUgZmxvYXRpbmcgZWxlbWVudCBhbG9uZyB0aGVcbiAqIHNwZWNpZmllZCBheGVzLlxuICogQSBudW1iZXIgKHNob3J0aGFuZCBmb3IgYG1haW5BeGlzYCBvciBkaXN0YW5jZSksIG9yIGFuIGF4ZXMgY29uZmlndXJhdGlvblxuICogb2JqZWN0IG1heSBiZSBwYXNzZWQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3Mvb2Zmc2V0XG4gKi9cbmNvbnN0IG9mZnNldCA9IG9mZnNldCQxO1xuXG4vKipcbiAqIE9wdGltaXplcyB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCBieSBjaG9vc2luZyB0aGUgcGxhY2VtZW50XG4gKiB0aGF0IGhhcyB0aGUgbW9zdCBzcGFjZSBhdmFpbGFibGUgYXV0b21hdGljYWxseSwgd2l0aG91dCBuZWVkaW5nIHRvIHNwZWNpZnkgYVxuICogcHJlZmVycmVkIHBsYWNlbWVudC4gQWx0ZXJuYXRpdmUgdG8gYGZsaXBgLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2F1dG9QbGFjZW1lbnRcbiAqL1xuY29uc3QgYXV0b1BsYWNlbWVudCA9IGF1dG9QbGFjZW1lbnQkMTtcblxuLyoqXG4gKiBPcHRpbWl6ZXMgdGhlIHZpc2liaWxpdHkgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgYnkgc2hpZnRpbmcgaXQgaW4gb3JkZXIgdG9cbiAqIGtlZXAgaXQgaW4gdmlldyB3aGVuIGl0IHdpbGwgb3ZlcmZsb3cgdGhlIGNsaXBwaW5nIGJvdW5kYXJ5LlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL3NoaWZ0XG4gKi9cbmNvbnN0IHNoaWZ0ID0gc2hpZnQkMTtcblxuLyoqXG4gKiBPcHRpbWl6ZXMgdGhlIHZpc2liaWxpdHkgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgYnkgZmxpcHBpbmcgdGhlIGBwbGFjZW1lbnRgXG4gKiBpbiBvcmRlciB0byBrZWVwIGl0IGluIHZpZXcgd2hlbiB0aGUgcHJlZmVycmVkIHBsYWNlbWVudChzKSB3aWxsIG92ZXJmbG93IHRoZVxuICogY2xpcHBpbmcgYm91bmRhcnkuIEFsdGVybmF0aXZlIHRvIGBhdXRvUGxhY2VtZW50YC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9mbGlwXG4gKi9cbmNvbnN0IGZsaXAgPSBmbGlwJDE7XG5cbi8qKlxuICogUHJvdmlkZXMgZGF0YSB0aGF0IGFsbG93cyB5b3UgdG8gY2hhbmdlIHRoZSBzaXplIG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IOKAlFxuICogZm9yIGluc3RhbmNlLCBwcmV2ZW50IGl0IGZyb20gb3ZlcmZsb3dpbmcgdGhlIGNsaXBwaW5nIGJvdW5kYXJ5IG9yIG1hdGNoIHRoZVxuICogd2lkdGggb2YgdGhlIHJlZmVyZW5jZSBlbGVtZW50LlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL3NpemVcbiAqL1xuY29uc3Qgc2l6ZSA9IHNpemUkMTtcblxuLyoqXG4gKiBQcm92aWRlcyBkYXRhIHRvIGhpZGUgdGhlIGZsb2F0aW5nIGVsZW1lbnQgaW4gYXBwbGljYWJsZSBzaXR1YXRpb25zLCBzdWNoIGFzXG4gKiB3aGVuIGl0IGlzIG5vdCBpbiB0aGUgc2FtZSBjbGlwcGluZyBjb250ZXh0IGFzIHRoZSByZWZlcmVuY2UgZWxlbWVudC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9oaWRlXG4gKi9cbmNvbnN0IGhpZGUgPSBoaWRlJDE7XG5cbi8qKlxuICogUHJvdmlkZXMgZGF0YSB0byBwb3NpdGlvbiBhbiBpbm5lciBlbGVtZW50IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IHNvIHRoYXQgaXRcbiAqIGFwcGVhcnMgY2VudGVyZWQgdG8gdGhlIHJlZmVyZW5jZSBlbGVtZW50LlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2Fycm93XG4gKi9cbmNvbnN0IGFycm93ID0gYXJyb3ckMTtcblxuLyoqXG4gKiBQcm92aWRlcyBpbXByb3ZlZCBwb3NpdGlvbmluZyBmb3IgaW5saW5lIHJlZmVyZW5jZSBlbGVtZW50cyB0aGF0IGNhbiBzcGFuXG4gKiBvdmVyIG11bHRpcGxlIGxpbmVzLCBzdWNoIGFzIGh5cGVybGlua3Mgb3IgcmFuZ2Ugc2VsZWN0aW9ucy5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9pbmxpbmVcbiAqL1xuY29uc3QgaW5saW5lID0gaW5saW5lJDE7XG5cbi8qKlxuICogQnVpbHQtaW4gYGxpbWl0ZXJgIHRoYXQgd2lsbCBzdG9wIGBzaGlmdCgpYCBhdCBhIGNlcnRhaW4gcG9pbnQuXG4gKi9cbmNvbnN0IGxpbWl0U2hpZnQgPSBsaW1pdFNoaWZ0JDE7XG5cbi8qKlxuICogQ29tcHV0ZXMgdGhlIGB4YCBhbmQgYHlgIGNvb3JkaW5hdGVzIHRoYXQgd2lsbCBwbGFjZSB0aGUgZmxvYXRpbmcgZWxlbWVudFxuICogbmV4dCB0byBhIGdpdmVuIHJlZmVyZW5jZSBlbGVtZW50LlxuICovXG5jb25zdCBjb21wdXRlUG9zaXRpb24gPSAocmVmZXJlbmNlLCBmbG9hdGluZywgb3B0aW9ucykgPT4ge1xuICAvLyBUaGlzIGNhY2hlcyB0aGUgZXhwZW5zaXZlIGBnZXRDbGlwcGluZ0VsZW1lbnRBbmNlc3RvcnNgIGZ1bmN0aW9uIHNvIHRoYXRcbiAgLy8gbXVsdGlwbGUgbGlmZWN5Y2xlIHJlc2V0cyByZS11c2UgdGhlIHNhbWUgcmVzdWx0LiBJdCBvbmx5IGxpdmVzIGZvciBhXG4gIC8vIHNpbmdsZSBjYWxsLiBJZiBvdGhlciBmdW5jdGlvbnMgYmVjb21lIGV4cGVuc2l2ZSwgd2UgY2FuIGFkZCB0aGVtIGFzIHdlbGwuXG4gIGNvbnN0IGNhY2hlID0gbmV3IE1hcCgpO1xuICBjb25zdCBtZXJnZWRPcHRpb25zID0ge1xuICAgIHBsYXRmb3JtLFxuICAgIC4uLm9wdGlvbnNcbiAgfTtcbiAgY29uc3QgcGxhdGZvcm1XaXRoQ2FjaGUgPSB7XG4gICAgLi4ubWVyZ2VkT3B0aW9ucy5wbGF0Zm9ybSxcbiAgICBfYzogY2FjaGVcbiAgfTtcbiAgcmV0dXJuIGNvbXB1dGVQb3NpdGlvbiQxKHJlZmVyZW5jZSwgZmxvYXRpbmcsIHtcbiAgICAuLi5tZXJnZWRPcHRpb25zLFxuICAgIHBsYXRmb3JtOiBwbGF0Zm9ybVdpdGhDYWNoZVxuICB9KTtcbn07XG5cbmV4cG9ydCB7IGFycm93LCBhdXRvUGxhY2VtZW50LCBhdXRvVXBkYXRlLCBjb21wdXRlUG9zaXRpb24sIGRldGVjdE92ZXJmbG93LCBmbGlwLCBoaWRlLCBpbmxpbmUsIGxpbWl0U2hpZnQsIG9mZnNldCwgcGxhdGZvcm0sIHNoaWZ0LCBzaXplIH07XG4iLCJpbXBvcnQgeyBhcnJvdyBhcyBhcnJvdyQxLCBjb21wdXRlUG9zaXRpb24gfSBmcm9tICdAZmxvYXRpbmctdWkvZG9tJztcbmV4cG9ydCB7IGF1dG9QbGFjZW1lbnQsIGF1dG9VcGRhdGUsIGNvbXB1dGVQb3NpdGlvbiwgZGV0ZWN0T3ZlcmZsb3csIGZsaXAsIGdldE92ZXJmbG93QW5jZXN0b3JzLCBoaWRlLCBpbmxpbmUsIGxpbWl0U2hpZnQsIG9mZnNldCwgcGxhdGZvcm0sIHNoaWZ0LCBzaXplIH0gZnJvbSAnQGZsb2F0aW5nLXVpL2RvbSc7XG5pbXBvcnQgeyBpc05vZGUsIGdldE5vZGVOYW1lIH0gZnJvbSAnQGZsb2F0aW5nLXVpL3V0aWxzL2RvbSc7XG5pbXBvcnQgeyB1bnJlZiwgY29tcHV0ZWQsIHJlZiwgc2hhbGxvd1JlZiwgd2F0Y2gsIGdldEN1cnJlbnRTY29wZSwgb25TY29wZURpc3Bvc2UsIHNoYWxsb3dSZWFkb25seSB9IGZyb20gJ3Z1ZS1kZW1pJztcblxuZnVuY3Rpb24gaXNDb21wb25lbnRQdWJsaWNJbnN0YW5jZSh0YXJnZXQpIHtcbiAgcmV0dXJuIHRhcmdldCAhPSBudWxsICYmIHR5cGVvZiB0YXJnZXQgPT09ICdvYmplY3QnICYmICckZWwnIGluIHRhcmdldDtcbn1cbmZ1bmN0aW9uIHVud3JhcEVsZW1lbnQodGFyZ2V0KSB7XG4gIGlmIChpc0NvbXBvbmVudFB1YmxpY0luc3RhbmNlKHRhcmdldCkpIHtcbiAgICBjb25zdCBlbGVtZW50ID0gdGFyZ2V0LiRlbDtcbiAgICByZXR1cm4gaXNOb2RlKGVsZW1lbnQpICYmIGdldE5vZGVOYW1lKGVsZW1lbnQpID09PSAnI2NvbW1lbnQnID8gbnVsbCA6IGVsZW1lbnQ7XG4gIH1cbiAgcmV0dXJuIHRhcmdldDtcbn1cblxuZnVuY3Rpb24gdG9WYWx1ZShzb3VyY2UpIHtcbiAgcmV0dXJuIHR5cGVvZiBzb3VyY2UgPT09ICdmdW5jdGlvbicgPyBzb3VyY2UoKSA6IHVucmVmKHNvdXJjZSk7XG59XG5cbi8qKlxuICogUG9zaXRpb25zIGFuIGlubmVyIGVsZW1lbnQgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgc3VjaCB0aGF0IGl0IGlzIGNlbnRlcmVkIHRvIHRoZSByZWZlcmVuY2UgZWxlbWVudC5cbiAqIEBwYXJhbSBvcHRpb25zIFRoZSBhcnJvdyBvcHRpb25zLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2Fycm93XG4gKi9cbmZ1bmN0aW9uIGFycm93KG9wdGlvbnMpIHtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnYXJyb3cnLFxuICAgIG9wdGlvbnMsXG4gICAgZm4oYXJncykge1xuICAgICAgY29uc3QgZWxlbWVudCA9IHVud3JhcEVsZW1lbnQodG9WYWx1ZShvcHRpb25zLmVsZW1lbnQpKTtcbiAgICAgIGlmIChlbGVtZW50ID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFycm93JDEoe1xuICAgICAgICBlbGVtZW50LFxuICAgICAgICBwYWRkaW5nOiBvcHRpb25zLnBhZGRpbmdcbiAgICAgIH0pLmZuKGFyZ3MpO1xuICAgIH1cbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0RFBSKGVsZW1lbnQpIHtcbiAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuIDE7XG4gIH1cbiAgY29uc3Qgd2luID0gZWxlbWVudC5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3IHx8IHdpbmRvdztcbiAgcmV0dXJuIHdpbi5kZXZpY2VQaXhlbFJhdGlvIHx8IDE7XG59XG5cbmZ1bmN0aW9uIHJvdW5kQnlEUFIoZWxlbWVudCwgdmFsdWUpIHtcbiAgY29uc3QgZHByID0gZ2V0RFBSKGVsZW1lbnQpO1xuICByZXR1cm4gTWF0aC5yb3VuZCh2YWx1ZSAqIGRwcikgLyBkcHI7XG59XG5cbi8qKlxuICogQ29tcHV0ZXMgdGhlIGB4YCBhbmQgYHlgIGNvb3JkaW5hdGVzIHRoYXQgd2lsbCBwbGFjZSB0aGUgZmxvYXRpbmcgZWxlbWVudCBuZXh0IHRvIGEgcmVmZXJlbmNlIGVsZW1lbnQgd2hlbiBpdCBpcyBnaXZlbiBhIGNlcnRhaW4gQ1NTIHBvc2l0aW9uaW5nIHN0cmF0ZWd5LlxuICogQHBhcmFtIHJlZmVyZW5jZSBUaGUgcmVmZXJlbmNlIHRlbXBsYXRlIHJlZi5cbiAqIEBwYXJhbSBmbG9hdGluZyBUaGUgZmxvYXRpbmcgdGVtcGxhdGUgcmVmLlxuICogQHBhcmFtIG9wdGlvbnMgVGhlIGZsb2F0aW5nIG9wdGlvbnMuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvdnVlXG4gKi9cbmZ1bmN0aW9uIHVzZUZsb2F0aW5nKHJlZmVyZW5jZSwgZmxvYXRpbmcsIG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICBjb25zdCB3aGlsZUVsZW1lbnRzTW91bnRlZE9wdGlvbiA9IG9wdGlvbnMud2hpbGVFbGVtZW50c01vdW50ZWQ7XG4gIGNvbnN0IG9wZW5PcHRpb24gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgdmFyIF90b1ZhbHVlO1xuICAgIHJldHVybiAoX3RvVmFsdWUgPSB0b1ZhbHVlKG9wdGlvbnMub3BlbikpICE9IG51bGwgPyBfdG9WYWx1ZSA6IHRydWU7XG4gIH0pO1xuICBjb25zdCBtaWRkbGV3YXJlT3B0aW9uID0gY29tcHV0ZWQoKCkgPT4gdG9WYWx1ZShvcHRpb25zLm1pZGRsZXdhcmUpKTtcbiAgY29uc3QgcGxhY2VtZW50T3B0aW9uID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHZhciBfdG9WYWx1ZTI7XG4gICAgcmV0dXJuIChfdG9WYWx1ZTIgPSB0b1ZhbHVlKG9wdGlvbnMucGxhY2VtZW50KSkgIT0gbnVsbCA/IF90b1ZhbHVlMiA6ICdib3R0b20nO1xuICB9KTtcbiAgY29uc3Qgc3RyYXRlZ3lPcHRpb24gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgdmFyIF90b1ZhbHVlMztcbiAgICByZXR1cm4gKF90b1ZhbHVlMyA9IHRvVmFsdWUob3B0aW9ucy5zdHJhdGVneSkpICE9IG51bGwgPyBfdG9WYWx1ZTMgOiAnYWJzb2x1dGUnO1xuICB9KTtcbiAgY29uc3QgdHJhbnNmb3JtT3B0aW9uID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHZhciBfdG9WYWx1ZTQ7XG4gICAgcmV0dXJuIChfdG9WYWx1ZTQgPSB0b1ZhbHVlKG9wdGlvbnMudHJhbnNmb3JtKSkgIT0gbnVsbCA/IF90b1ZhbHVlNCA6IHRydWU7XG4gIH0pO1xuICBjb25zdCByZWZlcmVuY2VFbGVtZW50ID0gY29tcHV0ZWQoKCkgPT4gdW53cmFwRWxlbWVudChyZWZlcmVuY2UudmFsdWUpKTtcbiAgY29uc3QgZmxvYXRpbmdFbGVtZW50ID0gY29tcHV0ZWQoKCkgPT4gdW53cmFwRWxlbWVudChmbG9hdGluZy52YWx1ZSkpO1xuICBjb25zdCB4ID0gcmVmKDApO1xuICBjb25zdCB5ID0gcmVmKDApO1xuICBjb25zdCBzdHJhdGVneSA9IHJlZihzdHJhdGVneU9wdGlvbi52YWx1ZSk7XG4gIGNvbnN0IHBsYWNlbWVudCA9IHJlZihwbGFjZW1lbnRPcHRpb24udmFsdWUpO1xuICBjb25zdCBtaWRkbGV3YXJlRGF0YSA9IHNoYWxsb3dSZWYoe30pO1xuICBjb25zdCBpc1Bvc2l0aW9uZWQgPSByZWYoZmFsc2UpO1xuICBjb25zdCBmbG9hdGluZ1N0eWxlcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBpbml0aWFsU3R5bGVzID0ge1xuICAgICAgcG9zaXRpb246IHN0cmF0ZWd5LnZhbHVlLFxuICAgICAgbGVmdDogJzAnLFxuICAgICAgdG9wOiAnMCdcbiAgICB9O1xuICAgIGlmICghZmxvYXRpbmdFbGVtZW50LnZhbHVlKSB7XG4gICAgICByZXR1cm4gaW5pdGlhbFN0eWxlcztcbiAgICB9XG4gICAgY29uc3QgeFZhbCA9IHJvdW5kQnlEUFIoZmxvYXRpbmdFbGVtZW50LnZhbHVlLCB4LnZhbHVlKTtcbiAgICBjb25zdCB5VmFsID0gcm91bmRCeURQUihmbG9hdGluZ0VsZW1lbnQudmFsdWUsIHkudmFsdWUpO1xuICAgIGlmICh0cmFuc2Zvcm1PcHRpb24udmFsdWUpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmluaXRpYWxTdHlsZXMsXG4gICAgICAgIHRyYW5zZm9ybTogXCJ0cmFuc2xhdGUoXCIgKyB4VmFsICsgXCJweCwgXCIgKyB5VmFsICsgXCJweClcIixcbiAgICAgICAgLi4uKGdldERQUihmbG9hdGluZ0VsZW1lbnQudmFsdWUpID49IDEuNSAmJiB7XG4gICAgICAgICAgd2lsbENoYW5nZTogJ3RyYW5zZm9ybSdcbiAgICAgICAgfSlcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBwb3NpdGlvbjogc3RyYXRlZ3kudmFsdWUsXG4gICAgICBsZWZ0OiB4VmFsICsgXCJweFwiLFxuICAgICAgdG9wOiB5VmFsICsgXCJweFwiXG4gICAgfTtcbiAgfSk7XG4gIGxldCB3aGlsZUVsZW1lbnRzTW91bnRlZENsZWFudXA7XG4gIGZ1bmN0aW9uIHVwZGF0ZSgpIHtcbiAgICBpZiAocmVmZXJlbmNlRWxlbWVudC52YWx1ZSA9PSBudWxsIHx8IGZsb2F0aW5nRWxlbWVudC52YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IG9wZW4gPSBvcGVuT3B0aW9uLnZhbHVlO1xuICAgIGNvbXB1dGVQb3NpdGlvbihyZWZlcmVuY2VFbGVtZW50LnZhbHVlLCBmbG9hdGluZ0VsZW1lbnQudmFsdWUsIHtcbiAgICAgIG1pZGRsZXdhcmU6IG1pZGRsZXdhcmVPcHRpb24udmFsdWUsXG4gICAgICBwbGFjZW1lbnQ6IHBsYWNlbWVudE9wdGlvbi52YWx1ZSxcbiAgICAgIHN0cmF0ZWd5OiBzdHJhdGVneU9wdGlvbi52YWx1ZVxuICAgIH0pLnRoZW4ocG9zaXRpb24gPT4ge1xuICAgICAgeC52YWx1ZSA9IHBvc2l0aW9uLng7XG4gICAgICB5LnZhbHVlID0gcG9zaXRpb24ueTtcbiAgICAgIHN0cmF0ZWd5LnZhbHVlID0gcG9zaXRpb24uc3RyYXRlZ3k7XG4gICAgICBwbGFjZW1lbnQudmFsdWUgPSBwb3NpdGlvbi5wbGFjZW1lbnQ7XG4gICAgICBtaWRkbGV3YXJlRGF0YS52YWx1ZSA9IHBvc2l0aW9uLm1pZGRsZXdhcmVEYXRhO1xuICAgICAgLyoqXG4gICAgICAgKiBUaGUgZmxvYXRpbmcgZWxlbWVudCdzIHBvc2l0aW9uIG1heSBiZSByZWNvbXB1dGVkIHdoaWxlIGl0J3MgY2xvc2VkXG4gICAgICAgKiBidXQgc3RpbGwgbW91bnRlZCAoc3VjaCBhcyB3aGVuIHRyYW5zaXRpb25pbmcgb3V0KS4gVG8gZW5zdXJlXG4gICAgICAgKiBgaXNQb3NpdGlvbmVkYCB3aWxsIGJlIGBmYWxzZWAgaW5pdGlhbGx5IG9uIHRoZSBuZXh0IG9wZW4sIGF2b2lkXG4gICAgICAgKiBzZXR0aW5nIGl0IHRvIGB0cnVlYCB3aGVuIGBvcGVuID09PSBmYWxzZWAgKG11c3QgYmUgc3BlY2lmaWVkKS5cbiAgICAgICAqL1xuICAgICAgaXNQb3NpdGlvbmVkLnZhbHVlID0gb3BlbiAhPT0gZmFsc2U7XG4gICAgfSk7XG4gIH1cbiAgZnVuY3Rpb24gY2xlYW51cCgpIHtcbiAgICBpZiAodHlwZW9mIHdoaWxlRWxlbWVudHNNb3VudGVkQ2xlYW51cCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgd2hpbGVFbGVtZW50c01vdW50ZWRDbGVhbnVwKCk7XG4gICAgICB3aGlsZUVsZW1lbnRzTW91bnRlZENsZWFudXAgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG4gIGZ1bmN0aW9uIGF0dGFjaCgpIHtcbiAgICBjbGVhbnVwKCk7XG4gICAgaWYgKHdoaWxlRWxlbWVudHNNb3VudGVkT3B0aW9uID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHVwZGF0ZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAocmVmZXJlbmNlRWxlbWVudC52YWx1ZSAhPSBudWxsICYmIGZsb2F0aW5nRWxlbWVudC52YWx1ZSAhPSBudWxsKSB7XG4gICAgICB3aGlsZUVsZW1lbnRzTW91bnRlZENsZWFudXAgPSB3aGlsZUVsZW1lbnRzTW91bnRlZE9wdGlvbihyZWZlcmVuY2VFbGVtZW50LnZhbHVlLCBmbG9hdGluZ0VsZW1lbnQudmFsdWUsIHVwZGF0ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG4gIGZ1bmN0aW9uIHJlc2V0KCkge1xuICAgIGlmICghb3Blbk9wdGlvbi52YWx1ZSkge1xuICAgICAgaXNQb3NpdGlvbmVkLnZhbHVlID0gZmFsc2U7XG4gICAgfVxuICB9XG4gIHdhdGNoKFttaWRkbGV3YXJlT3B0aW9uLCBwbGFjZW1lbnRPcHRpb24sIHN0cmF0ZWd5T3B0aW9uLCBvcGVuT3B0aW9uXSwgdXBkYXRlLCB7XG4gICAgZmx1c2g6ICdzeW5jJ1xuICB9KTtcbiAgd2F0Y2goW3JlZmVyZW5jZUVsZW1lbnQsIGZsb2F0aW5nRWxlbWVudF0sIGF0dGFjaCwge1xuICAgIGZsdXNoOiAnc3luYydcbiAgfSk7XG4gIHdhdGNoKG9wZW5PcHRpb24sIHJlc2V0LCB7XG4gICAgZmx1c2g6ICdzeW5jJ1xuICB9KTtcbiAgaWYgKGdldEN1cnJlbnRTY29wZSgpKSB7XG4gICAgb25TY29wZURpc3Bvc2UoY2xlYW51cCk7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB4OiBzaGFsbG93UmVhZG9ubHkoeCksXG4gICAgeTogc2hhbGxvd1JlYWRvbmx5KHkpLFxuICAgIHN0cmF0ZWd5OiBzaGFsbG93UmVhZG9ubHkoc3RyYXRlZ3kpLFxuICAgIHBsYWNlbWVudDogc2hhbGxvd1JlYWRvbmx5KHBsYWNlbWVudCksXG4gICAgbWlkZGxld2FyZURhdGE6IHNoYWxsb3dSZWFkb25seShtaWRkbGV3YXJlRGF0YSksXG4gICAgaXNQb3NpdGlvbmVkOiBzaGFsbG93UmVhZG9ubHkoaXNQb3NpdGlvbmVkKSxcbiAgICBmbG9hdGluZ1N0eWxlcyxcbiAgICB1cGRhdGVcbiAgfTtcbn1cblxuZXhwb3J0IHsgYXJyb3csIHVzZUZsb2F0aW5nIH07XG4iLCJleHBvcnQgY29uc3QgaXNDbGlja091dHNpZGUgPSAoZXZlbnQ6IE1vdXNlRXZlbnQsIGVsZW1lbnRzOiBIVE1MRWxlbWVudCB8IEhUTUxFbGVtZW50W10pOiBib29sZWFuID0+IHtcbiAgY29uc3QgdGFyZ2V0cyA9IEFycmF5LmlzQXJyYXkoZWxlbWVudHMpID8gZWxlbWVudHMgOiBbZWxlbWVudHNdO1xuICByZXR1cm4gIXRhcmdldHMuc29tZSgoZWwpID0+IGVsLmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBOb2RlKSk7XG59O1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgYXV0b1BsYWNlbWVudCwgYXV0b1VwZGF0ZSwgb2Zmc2V0IGFzIG9mZnNldE1pZGRsZXdhcmUsIHNoaWZ0LCB1c2VGbG9hdGluZyB9IGZyb20gJ0BmbG9hdGluZy11aS92dWUnO1xuICBpbXBvcnQgeyBjb21wdXRlZCwgb25CZWZvcmVNb3VudCwgb25Nb3VudGVkLCBvblVubW91bnRlZCwgcmVmLCB3YXRjaCwgd2F0Y2hFZmZlY3QgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgaXNDbGlja091dHNpZGUgfSBmcm9tICdAL3V0aWxpdGllcy9ldmVudCc7XG4gIGltcG9ydCB7IFRPUF9MQVlFUl9JRCwgaW5pdEZhdXhUb3BMYXllciB9IGZyb20gJ0AvdXRpbGl0aWVzL3ZpZXdwb3J0JztcblxuICBpbXBvcnQgdHlwZSB7IFJlZiB9IGZyb20gJ3Z1ZSc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBhbmNob3JJZDogc3RyaW5nO1xuICAgIG9mZnNldD86IG51bWJlcjtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIG9mZnNldDogMTYsXG4gIH0pO1xuXG4gIGNvbnN0IGFuY2hvcjogUmVmPEhUTUxFbGVtZW50IHwgbnVsbD4gPSByZWYobnVsbCk7XG4gIGNvbnN0IGZsb2F0aW5nOiBSZWY8SFRNTEVsZW1lbnQgfCBudWxsPiA9IHJlZihudWxsKTtcbiAgY29uc3Qgcm9vdDogUmVmPEhUTUxFbGVtZW50IHwgbnVsbD4gPSByZWYobnVsbCk7XG4gIGNvbnN0IGlzSG92ZXJlZCA9IHJlZihmYWxzZSk7XG4gIGNvbnN0IGlzVG9nZ2xlZE9wZW4gPSByZWYoZmFsc2UpO1xuICBjb25zdCBtaWRkbGV3YXJlID0gcmVmKFthdXRvUGxhY2VtZW50KCksIG9mZnNldE1pZGRsZXdhcmUoeyBtYWluQXhpczogcHJvcHMub2Zmc2V0IH0pLCBzaGlmdCh7IHBhZGRpbmc6IDE2IH0pXSk7XG5cbiAgY29uc3QgaXNTaG93UG9wb3ZlciA9IGNvbXB1dGVkKCgpID0+IGlzSG92ZXJlZC52YWx1ZSB8fCBpc1RvZ2dsZWRPcGVuLnZhbHVlKTtcblxuICBjb25zdCB7IGZsb2F0aW5nU3R5bGVzIH0gPSB1c2VGbG9hdGluZyhhbmNob3IsIGZsb2F0aW5nLCB7XG4gICAgbWlkZGxld2FyZSxcbiAgICBzdHJhdGVneTogJ2ZpeGVkJyxcbiAgICB3aGlsZUVsZW1lbnRzTW91bnRlZDogYXV0b1VwZGF0ZSxcbiAgfSk7XG5cbiAgY29uc3QgaGFuZGxlUGVybWFuZW50T3BlbkJvZHlDbGljayA9IChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgaWYgKCFhbmNob3IudmFsdWUgfHwgIWZsb2F0aW5nLnZhbHVlKSByZXR1cm47XG4gICAgaWYgKGlzQ2xpY2tPdXRzaWRlKGUsIFthbmNob3IudmFsdWUsIGZsb2F0aW5nLnZhbHVlXSkpIHtcbiAgICAgIGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgICBpc1RvZ2dsZWRPcGVuLnZhbHVlID0gZmFsc2U7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUFuY2hvckVsZW1lbnRNb3VzZU92ZXIgPSAoKSA9PiB7XG4gICAgaXNIb3ZlcmVkLnZhbHVlID0gdHJ1ZTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVBbmNob3JFbGVtZW50TW91c2VMZWF2ZSA9ICgpID0+IHtcbiAgICBpc0hvdmVyZWQudmFsdWUgPSBmYWxzZTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVBbmNob3JFbGVtZW50Q2xpY2sgPSAoKSA9PiB7XG4gICAgaXNUb2dnbGVkT3Blbi52YWx1ZSA9IHRydWU7XG4gIH07XG5cbiAgY29uc3QgYWRkTGlzdGVuZXJzVG9BbmNob3JFbGVtZW50ID0gKCkgPT4ge1xuICAgIGlmICghYW5jaG9yLnZhbHVlKSByZXR1cm4gbnVsbDtcbiAgICBhbmNob3IudmFsdWUuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VvdmVyJywgaGFuZGxlQW5jaG9yRWxlbWVudE1vdXNlT3Zlcik7XG4gICAgYW5jaG9yLnZhbHVlLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbGVhdmUnLCBoYW5kbGVBbmNob3JFbGVtZW50TW91c2VMZWF2ZSk7XG4gICAgYW5jaG9yLnZhbHVlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlQW5jaG9yRWxlbWVudENsaWNrKTtcbiAgfTtcblxuICBjb25zdCByZW1vdmVMaXN0ZW5lcnNGcm9tQW5jaG9yRWxlbWVudCA9ICgpID0+IHtcbiAgICBpZiAoIWFuY2hvci52YWx1ZSkgcmV0dXJuIG51bGw7XG4gICAgYW5jaG9yLnZhbHVlLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlb3ZlcicsIGhhbmRsZUFuY2hvckVsZW1lbnRNb3VzZU92ZXIpO1xuICAgIGFuY2hvci52YWx1ZS5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJywgaGFuZGxlQW5jaG9yRWxlbWVudE1vdXNlTGVhdmUpO1xuICAgIGFuY2hvci52YWx1ZS5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIGhhbmRsZUFuY2hvckVsZW1lbnRDbGljayk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlUGVybWFuZW50T3BlbkJvZHlLZXlkb3duID0gKGU6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICBpZiAoZS5rZXkgPT09ICdFc2NhcGUnKSB7XG4gICAgICBpc1RvZ2dsZWRPcGVuLnZhbHVlID0gZmFsc2U7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGFkZE9wZW5MaXN0ZW5lcnNUb1Jvb3QgPSAoKSA9PiB7XG4gICAgaWYgKCFyb290LnZhbHVlKSByZXR1cm47XG4gICAgcm9vdC52YWx1ZS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGhhbmRsZVBlcm1hbmVudE9wZW5Cb2R5Q2xpY2ssIHRydWUpO1xuICAgIHJvb3QudmFsdWUuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGhhbmRsZVBlcm1hbmVudE9wZW5Cb2R5S2V5ZG93bik7XG4gIH07XG5cbiAgY29uc3QgcmVtb3ZlT3Blbkxpc3RlbmVyc0Zyb21Sb290ID0gKCkgPT4ge1xuICAgIGlmICghcm9vdC52YWx1ZSkgcmV0dXJuO1xuICAgIHJvb3QudmFsdWUucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCBoYW5kbGVQZXJtYW5lbnRPcGVuQm9keUNsaWNrLCB0cnVlKTtcbiAgICByb290LnZhbHVlLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBoYW5kbGVQZXJtYW5lbnRPcGVuQm9keUtleWRvd24pO1xuICB9O1xuXG4gIGNvbnN0IHVwZGF0ZUFuY2hvckVsZW1lbnQgPSAoKSA9PiB7XG4gICAgYW5jaG9yLnZhbHVlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQocHJvcHMuYW5jaG9ySWQpO1xuICB9O1xuXG4gIHdhdGNoKFxuICAgICgpID0+IGlzVG9nZ2xlZE9wZW4udmFsdWUsXG4gICAgKG5ld1ZhbHVlKSA9PiB7XG4gICAgICBpZiAobmV3VmFsdWUpIHtcbiAgICAgICAgYWRkT3Blbkxpc3RlbmVyc1RvUm9vdCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVtb3ZlT3Blbkxpc3RlbmVyc0Zyb21Sb290KCk7XG4gICAgICB9XG4gICAgfVxuICApO1xuXG4gIHdhdGNoKFxuICAgICgpID0+IHByb3BzLmFuY2hvcklkLFxuICAgICgpID0+IHtcbiAgICAgIHJlbW92ZUxpc3RlbmVyc0Zyb21BbmNob3JFbGVtZW50KCk7XG4gICAgICB1cGRhdGVBbmNob3JFbGVtZW50KCk7XG4gICAgICBhZGRMaXN0ZW5lcnNUb0FuY2hvckVsZW1lbnQoKTtcbiAgICB9XG4gICk7XG5cbiAgd2F0Y2hFZmZlY3QoKCkgPT4ge1xuICAgIG1pZGRsZXdhcmUudmFsdWUgPSBbYXV0b1BsYWNlbWVudCgpLCBvZmZzZXRNaWRkbGV3YXJlKHsgbWFpbkF4aXM6IHByb3BzLm9mZnNldCB9KSwgc2hpZnQoeyBwYWRkaW5nOiAxNiB9KV07XG4gIH0pO1xuXG4gIG9uQmVmb3JlTW91bnQoKCkgPT4ge1xuICAgIGluaXRGYXV4VG9wTGF5ZXIoKTtcbiAgfSk7XG5cbiAgb25Nb3VudGVkKCgpID0+IHtcbiAgICB1cGRhdGVBbmNob3JFbGVtZW50KCk7XG4gICAgcm9vdC52YWx1ZSA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcbiAgICBhZGRMaXN0ZW5lcnNUb0FuY2hvckVsZW1lbnQoKTtcbiAgfSk7XG5cbiAgb25Vbm1vdW50ZWQoKCkgPT4ge1xuICAgIHJlbW92ZUxpc3RlbmVyc0Zyb21BbmNob3JFbGVtZW50KCk7XG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPFRlbGVwb3J0IDp0bz1cImAjJHtUT1BfTEFZRVJfSUR9YFwiPlxuICAgIDxUcmFuc2l0aW9uPlxuICAgICAgPGRpdlxuICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgJ3RpZGUtcG9wb3ZlcicsXG4gICAgICAgICAgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgICAgICBDU1MuQk9SREVSLkNPTE9SLkxPVyxcbiAgICAgICAgICBDU1MuQk9SREVSLkZVTEwuT05FLFxuICAgICAgICAgIENTUy5CT1JERVIuUkFESVVTLkhBTEYsXG4gICAgICAgICAgQ1NTLkZPTlQuUk9MRS5CT0RZXzIsXG4gICAgICAgICAgQ1NTLlBBRERJTkcuRlVMTC5PTkUsXG4gICAgICAgICAgQ1NTLlNIQURPVy5CT1RUT00sXG4gICAgICAgIF1cIlxuICAgICAgICByZWY9XCJmbG9hdGluZ1wiXG4gICAgICAgIDpzdHlsZT1cInsgLi4uZmxvYXRpbmdTdHlsZXMsIG1heFdpZHRoOiBgY2FsYygxMDAlIC0gJHtwcm9wcy5vZmZzZXQgKiAyfXB4KWAgfVwiXG4gICAgICAgIHYtc2hvdz1cImlzU2hvd1BvcG92ZXJcIlxuICAgICAgPlxuICAgICAgICA8c2xvdCAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9UcmFuc2l0aW9uPlxuICA8L1RlbGVwb3J0PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnYtZW50ZXItZnJvbSxcbiAgLnYtbGVhdmUtdG8ge1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cbiAgLnYtZW50ZXItYWN0aXZlLFxuICAudi1sZWF2ZS1hY3RpdmUge1xuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuICAudi1lbnRlci10byxcbiAgLnYtbGVhdmUtZnJvbSB7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XG4gICAgaXNBY3RpdmU/OiBib29sZWFuO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIGlzQWN0aXZlOiBmYWxzZSxcbiAgfSk7XG5cbiAgY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzKFsnY2hhbmdlJ10pO1xuXG4gIGNvbnN0IGhhbmRsZUNsaWNrID0gKCkgPT4ge1xuICAgIGlmICghcHJvcHMuZGlzYWJsZWQpIHtcbiAgICAgIGVtaXQoJ2NoYW5nZScpO1xuICAgIH1cbiAgfTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxidXR0b25cbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1zd2l0Y2gnLFxuICAgICAgcHJvcHMuaXNBY3RpdmUgPyAnYWN0aXZlJyA6ICcnLFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICBDU1MuQk9SREVSLkZVTEwuT05FLFxuICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCxcbiAgICAgIHByb3BzLmlzQWN0aXZlID8gJycgOiBDU1MuQk9SREVSLkNPTE9SLkRFRkFVTFQsXG4gICAgICBDU1MuT1ZFUkZMT1cuWFkuSElEREVOLFxuICAgICAgcHJvcHMuaXNBY3RpdmUgPyBDU1MuQkcuU0VDT05EQVJZIDogQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCxcbiAgICBdXCJcbiAgICA6ZGlzYWJsZWQ9XCJwcm9wcy5kaXNhYmxlZFwiXG4gICAgQGNsaWNrPVwiaGFuZGxlQ2xpY2tcIlxuICAgIGFyaWEtbGFiZWw9XCJTd2l0Y2hcIlxuICA+XG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1zd2l0Y2gtaW5kaWNhdG9yJyxcbiAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuQVhJUzEuQ0VOVEVSLFxuICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICAgICAgICBwcm9wcy5pc0FjdGl2ZSA/IENTUy5CRy5TVVJGQUNFLkRFRkFVTFQgOiBDU1MuQkcuU0VDT05EQVJZLFxuICAgICAgXVwiXG4gICAgPlxuICAgICAgPFRpZGVJY29uXG4gICAgICAgIDppY29uPVwiSUNPTi5DSEVDS1wiXG4gICAgICAgIDpzaXplPVwiU0laRS5MQVJHRVwiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuICA8L2J1dHRvbj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLXN3aXRjaCB7XG4gICAgd2lkdGg6IDY0cHg7XG4gICAgaGVpZ2h0OiAzMnB4O1xuICAgIHRyYW5zaXRpb246IHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogYmFja2dyb3VuZC1jb2xvcjtcbiAgfVxuXG4gIC50aWRlLXN3aXRjaDpkaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogMC4zMjtcbiAgfVxuXG4gIC50aWRlLXN3aXRjaC5hY3RpdmUge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGlkZS1zZWNvbmRhcnkpO1xuICB9XG5cbiAgLnRpZGUtc3dpdGNoLmFjdGl2ZSAudGlkZS1zd2l0Y2gtaW5kaWNhdG9yIHtcbiAgICBsZWZ0OiAzNnB4O1xuICB9XG5cbiAgLnRpZGUtc3dpdGNoLWluZGljYXRvciB7XG4gICAgbGVmdDogNHB4O1xuICAgIHRyYW5zaXRpb246IHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogbGVmdCwgYm9yZGVyLWNvbG9yLCBiYWNrZ3JvdW5kLWNvbG9yO1xuICB9XG48L3N0eWxlPlxuIiwiaW1wb3J0IHsgZm9ybWF0TnVtYmVyLCBmb3JtYXRQaG9uZSwgZm9ybWF0UHJpY2UgfSBmcm9tICdAL3V0aWxpdGllcy9mb3JtYXQnO1xuXG5leHBvcnQgdHlwZSBGb3JtYXR0ZWQgPSB7XG4gIFtrZXk6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdIHwgbnVtYmVyO1xufTtcblxuZXhwb3J0IGNvbnN0IEZPUk1BVCA9IHtcbiAgTlVNQkVSOiBmb3JtYXROdW1iZXIsXG4gIFBIT05FOiBmb3JtYXRQaG9uZSxcbiAgUFJJQ0U6IGZvcm1hdFByaWNlLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IEZPUk1BVF9SRUdFWCA9IHtcbiAgYWxwaGE6IC9eW2EtekEtWl0rJC9nLFxuICBhbHBoYU51bWJlck9yRW1wdHk6IC9eJHxeW2EtejAtOV0rJC9pLFxuICBhbHBoYVNwYWNlOiAvXlthLXpBLVogXSskL2csXG4gIGVtYWlsOlxuICAgIC9eKChbXjw+KClbXFxdXFxcXC4sOzpcXHNAXCJdKyhcXC5bXjw+KClbXFxdXFxcXC4sOzpcXHNAXCJdKykqKXwoXCIuK1wiKSlAKChcXFtbMC05XXsxLDN9XFwuWzAtOV17MSwzfVxcLlswLTldezEsM31cXC5bMC05XXsxLDN9XFxdKXwoKFthLXpBLVpcXC0wLTldK1xcLikrW2EtekEtWl17Mix9KSkkLyxcbiAgbnVtYmVyRm9ybWF0dGVkOiAvXiR8KD89LileXFwkPygoWzEtOV1bMC05XXswLDJ9KCxbMC05XXszfSkqKXwwKT8oXFwuWzAtOV17MSwyfSk/JC8sXG4gIHBob25lOiAvXig/OlxcZHszfS1cXGR7M30tXFxkezR9fFxcZHsxfS1cXGR7M30tXFxkezN9LVxcZHs0fSk/JC8sXG4gIHByaWNlOiAvKD89LileXFwkPygoWzEtOV1bMC05XXswLDJ9KCxbMC05XXszfSkqKXwwKT8oXFwuWzAtOV17MSwyfSk/JC8sXG59O1xuIiwiLyoqXG4gKiBUaGVzZSBzbGlkZXMgYXJlIHVzZWQgaW4gYm90aCB0aGUgaW5saW5lIGRldGFpbCBwYWdlIHBob3RvIHNsaWRlclxuICogYW5kIHRoZSBmdWxsc2NyZWVuIG1lZGlhIGdhbGxlcnkuXG4gKi9cblxuZXhwb3J0IGNvbnN0IE1FRElBX1NMSURFX1RZUEVTID0ge1xuICBJTUFHRToge1xuICAgIEZMT09SUExBTjogJ2Zsb29ycGxhbicsXG4gICAgSU1BR0U6ICdpbWFnZScsXG4gIH0sXG4gIFZJREVPOiAndmlkZW8nLFxuICBWUjogJ3ZyJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIE1lZGlhU2xpZGVUeXBlID1cbiAgfCAodHlwZW9mIE1FRElBX1NMSURFX1RZUEVTLklNQUdFKVtrZXlvZiB0eXBlb2YgTUVESUFfU0xJREVfVFlQRVMuSU1BR0VdXG4gIHwgdHlwZW9mIE1FRElBX1NMSURFX1RZUEVTLlZJREVPXG4gIHwgdHlwZW9mIE1FRElBX1NMSURFX1RZUEVTLlZSO1xuXG5leHBvcnQgdHlwZSBJbWFnZVNsaWRlVHlwZSA9ICh0eXBlb2YgTUVESUFfU0xJREVfVFlQRVMuSU1BR0UpW2tleW9mIHR5cGVvZiBNRURJQV9TTElERV9UWVBFUy5JTUFHRV07XG5cbnR5cGUgSW1hZ2VTbGlkZSA9IHtcbiAgaW1hZ2VVcmw6IHN0cmluZztcbiAgdHlwZTogSW1hZ2VTbGlkZVR5cGU7XG59O1xuXG5leHBvcnQgdHlwZSBWaWRlb1NsaWRlVHlwZSA9IHR5cGVvZiBNRURJQV9TTElERV9UWVBFUy5WSURFTztcblxudHlwZSBWaWRlb1NsaWRlID0ge1xuICBpbWFnZVVybDogc3RyaW5nO1xuICB0eXBlOiBWaWRlb1NsaWRlVHlwZTtcbiAgdmlkZW9Vcmw6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIFZyU2xpZGVUeXBlID0gdHlwZW9mIE1FRElBX1NMSURFX1RZUEVTLlZSO1xuXG50eXBlIFZyU2xpZGUgPSB7XG4gIGltYWdlVXJsOiBzdHJpbmc7XG4gIHR5cGU6IFZyU2xpZGVUeXBlO1xuICB2clVybDogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgTGlzdGluZ01lZGlhID0gSW1hZ2VTbGlkZSB8IFZpZGVvU2xpZGUgfCBWclNsaWRlO1xuIiwiaW1wb3J0IHsgRk9STUFUX1JFR0VYIH0gZnJvbSAnQC90eXBlcy9Gb3JtYXR0ZWQnO1xuaW1wb3J0IHsgY2hlY2tGb3JtYXQgfSBmcm9tICdAL3V0aWxpdGllcy92YWxpZGF0aW9uJztcblxuZXhwb3J0IGNvbnN0IFZBTElEQVRPUiA9IHtcbiAgQUxQSEFfTlVNQkVSX0VNUFRZOiBjaGVja0Zvcm1hdChGT1JNQVRfUkVHRVguYWxwaGFOdW1iZXJPckVtcHR5KSxcbiAgQUxQSEFfU1BBQ0U6IGNoZWNrRm9ybWF0KEZPUk1BVF9SRUdFWC5hbHBoYVNwYWNlKSxcbiAgRU1BSUw6IGNoZWNrRm9ybWF0KEZPUk1BVF9SRUdFWC5lbWFpbCksXG4gIE5VTUJFUjogY2hlY2tGb3JtYXQoRk9STUFUX1JFR0VYLm51bWJlckZvcm1hdHRlZCksXG4gIFBIT05FOiBjaGVja0Zvcm1hdChGT1JNQVRfUkVHRVgucGhvbmUpLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgVmFsaWRhdGlvbkVycm9yID0gc3RyaW5nIHwgYm9vbGVhbjtcbmV4cG9ydCB0eXBlIFZhbGlkYXRpb25SZXN1bHQgPSB7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgdmFsaWQ6IGJvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBWYWxpZGF0aW9uTGVuZ3RoID0ge1xuICBtYXhsZW5ndGg/OiBudW1iZXI7XG4gIG1pbmxlbmd0aD86IG51bWJlcjtcbiAgcmVxdWlyZWQ/OiBib29sZWFuO1xuICB2YWx1ZTogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgVmFsaWRhdG9yID0gKHZhbHVlOiBzdHJpbmcpID0+IFZhbGlkYXRpb25SZXN1bHQ7XG4iXSwibmFtZXMiOlsiT1JJRU5UQVRJT04iLCJDU1MiLCJ1dGlsaXRpZXMiLCJicmVha3BvaW50IiwidXRpbGl0eSIsIlJFQUxNIiwiU0laRSIsIlNJWkVfQlVUVE9OIiwiZm9ybWF0TnVtYmVyIiwiaW5wdXQiLCJvdXRwdXQiLCJkaWdpdHMiLCJmb3JtYXRQYXNjYWxDYXNlIiwid29yZCIsImZvcm1hdFBob25lIiwiZm9ybWF0UHJpY2UiLCJpbm5lclNWRyIsInJlZiIsIndhdGNoIiwicHJvcHMiLCJpZCIsIm5hbWUiLCJwcmVmaXgiLCJyZWFsbUZvbGRlciIsImNvbXBvbmVudCIsImRlZmluZUFzeW5jQ29tcG9uZW50IiwiX192YXJpYWJsZUR5bmFtaWNJbXBvcnRSdW50aW1lSGVscGVyIiwibWFya1JhdyIsIklDT04iLCJJQ09OX1JFQUxNIiwiaGFuZGxlVG9nZ2xlQ2xpY2siLCJlbWl0IiwiRUxFTUVOVCIsIkVMRU1FTlRfVEVYVF9BU19JQ09OIiwiUFJJT1JJVFkiLCJUQVJHRVQiLCJBTEVSVCIsImljb24iLCJjb21wdXRlZCIsIkJBREdFX1RSVVNURUQiLCJoYW5kbGVDbGljayIsImluZGV4IiwiVFlQRV9DQVJEIiwiY29udGVudFJlZiIsImZyYW1lUmVmIiwiY29udGVudFJpZ2h0RWRnZSIsImNvbnRlbnRXaWR0aCIsImN1cnJlbnRTbGlkZSIsImZyYW1lV2lkdGgiLCJoYXNPdmVyZmxvdyIsImlzTGFzdFNsaWRlIiwibGFzdFBvc2l0aW9uIiwic2hvd0J1dHRvbnMiLCJtZWFzdXJlQ3VycmVudFNsaWRlIiwic2xpZGVPZmZzZXRzIiwic2xpZGUiLCJjbG9zZXN0U2xpZGVPZmZzZXQiLCJwcmV2IiwiY3VyciIsIm1lYXN1cmVEb20iLCJoYW5kbGVTY3JvbGwiLCJzY3JvbGxUb1NsaWRlIiwic2xpZGVJbmRleCIsInNob3dOZXh0U2xpZGUiLCJzaG93UHJldmlvdXNTbGlkZSIsIm9uTW91bnRlZCIsIm9uVW5tb3VudGVkIiwib25VcGRhdGVkIiwiaW1hZ2VEZWZhdWx0IiwicGljdHVyZSIsImltZyIsInNldEltYWdlRnJvbURlZmF1bHQiLCJjdXJyZW50U3JjIiwiX2EiLCJwaWN0dXJlU291cmNlIiwiX2IiLCJpc0NoZWNrZWQiLCJjaGVja2VkIiwibmV3VmFsdWUiLCJvbGRWYWx1ZSIsImVycm9yTWVzc2FnZURlZmF1bHQiLCJub0Vycm9yIiwiY2hlY2tGb3JtYXQiLCJmb3JtYXQiLCJ2YWx1ZSIsInJlc3VsdCIsImdldEVycm9yTWVzc2FnZSIsImVycm9yRnJvbVByb3BzIiwiZXJyb3JGcm9tUmVmIiwiZ2V0RmllbGRIYXNFcnJvciIsImdldEZpZWxkTGVuZ3RoSXNWYWxpZCIsIm1heGxlbmd0aCIsIm1pbmxlbmd0aCIsInJlcXVpcmVkIiwiaXNFbXB0eUFuZFVucmVxdWlyZWQiLCJpc1Rvb0xvbmciLCJoYW5kbGVGaWVsZFZhbGlkYXRpb24iLCJlcnJvciIsInZhbGlkYXRvcnMiLCJ2YWxpZGF0aW9uIiwidmFsaWRhdGVQcm9wZXJ0eSIsImxlbmd0aFZhbGlkYXRpb24iLCJ2YWxpZGF0ZUxlbmd0aCIsInJlc3BvbnNlIiwidmFsaWRhdG9yIiwiaGFzRm9jdXMiLCJlcnJvck1lc3NhZ2UiLCJmb3JtYXR0ZWRMYWJlbCIsImhhc0Vycm9yIiwiaGFzTWluaWxhYmVsIiwiaXNFbXB0eSIsImV4cGFuZE9wdGlvbnMiLCJldmVudCIsImhhbmRsZUZvY3VzIiwiaGFuZGxlRm9jdXNPdXQiLCJfX2V4cG9zZSIsIlRFWFRfSU5QVVRfVFlQRSIsInNob3dQYXNzd29yZCIsImhhc0NsZWFyIiwidHlwZSIsImhhbmRsZUNsZWFyIiwiaGFuZGxlVmFsaWRhdGlvbiIsImhhbmRsZUlucHV0IiwidXBkYXRlVmFsdWUiLCJCUkVBS1BPSU5UIiwiTUVESUEiLCJzZXRTY3JvbGxMb2NrIiwiaXNMb2NrZWQiLCJib2R5Iiwic2Nyb2xsWSIsIm5leHRUaWNrIiwic2F2ZWRTY3JvbGxZIiwiVE9QX0xBWUVSX0lEIiwiaW5pdEZhdXhUb3BMYXllciIsInRvcExheWVyIiwibW9kYWxDb250ZW50IiwibW9kYWxEaWFsb2ciLCJ0cmlnZ2VyTmF0aXZlRGlhbG9nT3BlbiIsInRyaWdnZXJOYXRpdmVEaWFsb2dDbG9zZSIsInNjcm9sbENvbnRlbnRUb1RvcCIsInBhZ2VDdXJyZW50IiwicGFnaW5hdGlvbkJ1dHRvbnMiLCJlbXB0eSIsInNpZGVzIiwiYWxpZ25tZW50cyIsInBsYWNlbWVudHMiLCJhY2MiLCJzaWRlIiwibWluIiwibWF4Iiwicm91bmQiLCJmbG9vciIsImNyZWF0ZUNvb3JkcyIsInYiLCJvcHBvc2l0ZVNpZGVNYXAiLCJvcHBvc2l0ZUFsaWdubWVudE1hcCIsImNsYW1wIiwic3RhcnQiLCJlbmQiLCJldmFsdWF0ZSIsInBhcmFtIiwiZ2V0U2lkZSIsInBsYWNlbWVudCIsImdldEFsaWdubWVudCIsImdldE9wcG9zaXRlQXhpcyIsImF4aXMiLCJnZXRBeGlzTGVuZ3RoIiwiZ2V0U2lkZUF4aXMiLCJnZXRBbGlnbm1lbnRBeGlzIiwiZ2V0QWxpZ25tZW50U2lkZXMiLCJyZWN0cyIsInJ0bCIsImFsaWdubWVudCIsImFsaWdubWVudEF4aXMiLCJsZW5ndGgiLCJtYWluQWxpZ25tZW50U2lkZSIsImdldE9wcG9zaXRlUGxhY2VtZW50IiwiZ2V0T3Bwb3NpdGVBbGlnbm1lbnRQbGFjZW1lbnQiLCJleHBhbmRQYWRkaW5nT2JqZWN0IiwicGFkZGluZyIsImdldFBhZGRpbmdPYmplY3QiLCJyZWN0VG9DbGllbnRSZWN0IiwicmVjdCIsIngiLCJ5Iiwid2lkdGgiLCJoZWlnaHQiLCJjb21wdXRlQ29vcmRzRnJvbVBsYWNlbWVudCIsIl9yZWYiLCJyZWZlcmVuY2UiLCJmbG9hdGluZyIsInNpZGVBeGlzIiwiYWxpZ25MZW5ndGgiLCJpc1ZlcnRpY2FsIiwiY29tbW9uWCIsImNvbW1vblkiLCJjb21tb25BbGlnbiIsImNvb3JkcyIsImNvbXB1dGVQb3NpdGlvbiIsImNvbmZpZyIsInN0cmF0ZWd5IiwibWlkZGxld2FyZSIsInBsYXRmb3JtIiwidmFsaWRNaWRkbGV3YXJlIiwic3RhdGVmdWxQbGFjZW1lbnQiLCJtaWRkbGV3YXJlRGF0YSIsInJlc2V0Q291bnQiLCJpIiwiZm4iLCJuZXh0WCIsIm5leHRZIiwiZGF0YSIsInJlc2V0IiwiZGV0ZWN0T3ZlcmZsb3ciLCJzdGF0ZSIsIm9wdGlvbnMiLCJfYXdhaXQkcGxhdGZvcm0kaXNFbGUiLCJlbGVtZW50cyIsImJvdW5kYXJ5Iiwicm9vdEJvdW5kYXJ5IiwiZWxlbWVudENvbnRleHQiLCJhbHRCb3VuZGFyeSIsInBhZGRpbmdPYmplY3QiLCJlbGVtZW50IiwiY2xpcHBpbmdDbGllbnRSZWN0Iiwib2Zmc2V0UGFyZW50Iiwib2Zmc2V0U2NhbGUiLCJlbGVtZW50Q2xpZW50UmVjdCIsImdldFBsYWNlbWVudExpc3QiLCJhdXRvQWxpZ25tZW50IiwiYWxsb3dlZFBsYWNlbWVudHMiLCJhdXRvUGxhY2VtZW50IiwiX21pZGRsZXdhcmVEYXRhJGF1dG9QIiwiX21pZGRsZXdhcmVEYXRhJGF1dG9QMiIsIl9wbGFjZW1lbnRzVGhhdEZpdE9uRSIsImNyb3NzQXhpcyIsImRldGVjdE92ZXJmbG93T3B0aW9ucyIsInBsYWNlbWVudHMkMSIsIm92ZXJmbG93IiwiY3VycmVudEluZGV4IiwiY3VycmVudFBsYWNlbWVudCIsImFsaWdubWVudFNpZGVzIiwiY3VycmVudE92ZXJmbG93cyIsImFsbE92ZXJmbG93cyIsIm5leHRQbGFjZW1lbnQiLCJwbGFjZW1lbnRzU29ydGVkQnlNb3N0U3BhY2UiLCJkIiwiYSIsImIiLCJyZXNldFBsYWNlbWVudCIsImNvbnZlcnRWYWx1ZVRvQ29vcmRzIiwibWFpbkF4aXNNdWx0aSIsImNyb3NzQXhpc011bHRpIiwicmF3VmFsdWUiLCJtYWluQXhpcyIsIm9mZnNldCIsIl9taWRkbGV3YXJlRGF0YSRvZmZzZSIsIl9taWRkbGV3YXJlRGF0YSRhcnJvdyIsImRpZmZDb29yZHMiLCJzaGlmdCIsImNoZWNrTWFpbkF4aXMiLCJjaGVja0Nyb3NzQXhpcyIsImxpbWl0ZXIiLCJtYWluQXhpc0Nvb3JkIiwiY3Jvc3NBeGlzQ29vcmQiLCJtaW5TaWRlIiwibWF4U2lkZSIsImxpbWl0ZWRDb29yZHMiLCJoYXNXaW5kb3ciLCJnZXROb2RlTmFtZSIsIm5vZGUiLCJpc05vZGUiLCJnZXRXaW5kb3ciLCJfbm9kZSRvd25lckRvY3VtZW50IiwiZ2V0RG9jdW1lbnRFbGVtZW50IiwiaXNFbGVtZW50IiwiaXNIVE1MRWxlbWVudCIsImlzU2hhZG93Um9vdCIsImlzT3ZlcmZsb3dFbGVtZW50Iiwib3ZlcmZsb3dYIiwib3ZlcmZsb3dZIiwiZGlzcGxheSIsImdldENvbXB1dGVkU3R5bGUiLCJpc1RhYmxlRWxlbWVudCIsImlzVG9wTGF5ZXIiLCJzZWxlY3RvciIsImlzQ29udGFpbmluZ0Jsb2NrIiwiZWxlbWVudE9yQ3NzIiwid2Via2l0IiwiaXNXZWJLaXQiLCJjc3MiLCJnZXRDb250YWluaW5nQmxvY2siLCJjdXJyZW50Tm9kZSIsImdldFBhcmVudE5vZGUiLCJpc0xhc3RUcmF2ZXJzYWJsZU5vZGUiLCJnZXROb2RlU2Nyb2xsIiwiZ2V0TmVhcmVzdE92ZXJmbG93QW5jZXN0b3IiLCJwYXJlbnROb2RlIiwiZ2V0T3ZlcmZsb3dBbmNlc3RvcnMiLCJsaXN0IiwidHJhdmVyc2VJZnJhbWVzIiwiX25vZGUkb3duZXJEb2N1bWVudDIiLCJzY3JvbGxhYmxlQW5jZXN0b3IiLCJpc0JvZHkiLCJ3aW4iLCJmcmFtZUVsZW1lbnQiLCJnZXRGcmFtZUVsZW1lbnQiLCJnZXRDc3NEaW1lbnNpb25zIiwiaGFzT2Zmc2V0Iiwib2Zmc2V0V2lkdGgiLCJvZmZzZXRIZWlnaHQiLCJzaG91bGRGYWxsYmFjayIsInVud3JhcEVsZW1lbnQiLCJnZXRTY2FsZSIsImRvbUVsZW1lbnQiLCIkIiwibm9PZmZzZXRzIiwiZ2V0VmlzdWFsT2Zmc2V0cyIsInNob3VsZEFkZFZpc3VhbE9mZnNldHMiLCJpc0ZpeGVkIiwiZmxvYXRpbmdPZmZzZXRQYXJlbnQiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJpbmNsdWRlU2NhbGUiLCJpc0ZpeGVkU3RyYXRlZ3kiLCJjbGllbnRSZWN0Iiwic2NhbGUiLCJ2aXN1YWxPZmZzZXRzIiwib2Zmc2V0V2luIiwiY3VycmVudFdpbiIsImN1cnJlbnRJRnJhbWUiLCJpZnJhbWVTY2FsZSIsImlmcmFtZVJlY3QiLCJsZWZ0IiwidG9wIiwiZ2V0V2luZG93U2Nyb2xsQmFyWCIsImxlZnRTY3JvbGwiLCJnZXRIVE1MT2Zmc2V0IiwiZG9jdW1lbnRFbGVtZW50Iiwic2Nyb2xsIiwiaWdub3JlU2Nyb2xsYmFyWCIsImh0bWxSZWN0IiwiY29udmVydE9mZnNldFBhcmVudFJlbGF0aXZlUmVjdFRvVmlld3BvcnRSZWxhdGl2ZVJlY3QiLCJvZmZzZXRzIiwiaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQiLCJvZmZzZXRSZWN0IiwiaHRtbE9mZnNldCIsImdldENsaWVudFJlY3RzIiwiZ2V0RG9jdW1lbnRSZWN0IiwiaHRtbCIsImdldFZpZXdwb3J0UmVjdCIsInZpc3VhbFZpZXdwb3J0IiwidmlzdWFsVmlld3BvcnRCYXNlZCIsImdldElubmVyQm91bmRpbmdDbGllbnRSZWN0IiwiZ2V0Q2xpZW50UmVjdEZyb21DbGlwcGluZ0FuY2VzdG9yIiwiY2xpcHBpbmdBbmNlc3RvciIsImhhc0ZpeGVkUG9zaXRpb25BbmNlc3RvciIsInN0b3BOb2RlIiwiZ2V0Q2xpcHBpbmdFbGVtZW50QW5jZXN0b3JzIiwiY2FjaGUiLCJjYWNoZWRSZXN1bHQiLCJlbCIsImN1cnJlbnRDb250YWluaW5nQmxvY2tDb21wdXRlZFN0eWxlIiwiZWxlbWVudElzRml4ZWQiLCJjb21wdXRlZFN0eWxlIiwiY3VycmVudE5vZGVJc0NvbnRhaW5pbmciLCJhbmNlc3RvciIsImdldENsaXBwaW5nUmVjdCIsImNsaXBwaW5nQW5jZXN0b3JzIiwiZmlyc3RDbGlwcGluZ0FuY2VzdG9yIiwiY2xpcHBpbmdSZWN0IiwiYWNjUmVjdCIsImdldERpbWVuc2lvbnMiLCJnZXRSZWN0UmVsYXRpdmVUb09mZnNldFBhcmVudCIsImlzU3RhdGljUG9zaXRpb25lZCIsImdldFRydWVPZmZzZXRQYXJlbnQiLCJwb2x5ZmlsbCIsInJhd09mZnNldFBhcmVudCIsImdldE9mZnNldFBhcmVudCIsInN2Z09mZnNldFBhcmVudCIsImdldEVsZW1lbnRSZWN0cyIsImdldE9mZnNldFBhcmVudEZuIiwiZ2V0RGltZW5zaW9uc0ZuIiwiZmxvYXRpbmdEaW1lbnNpb25zIiwiaXNSVEwiLCJyZWN0c0FyZUVxdWFsIiwib2JzZXJ2ZU1vdmUiLCJvbk1vdmUiLCJpbyIsInRpbWVvdXRJZCIsInJvb3QiLCJjbGVhbnVwIiwiX2lvIiwicmVmcmVzaCIsInNraXAiLCJ0aHJlc2hvbGQiLCJlbGVtZW50UmVjdEZvclJvb3RNYXJnaW4iLCJpbnNldFRvcCIsImluc2V0UmlnaHQiLCJpbnNldEJvdHRvbSIsImluc2V0TGVmdCIsImlzRmlyc3RVcGRhdGUiLCJoYW5kbGVPYnNlcnZlIiwiZW50cmllcyIsInJhdGlvIiwiYXV0b1VwZGF0ZSIsInVwZGF0ZSIsImFuY2VzdG9yU2Nyb2xsIiwiYW5jZXN0b3JSZXNpemUiLCJlbGVtZW50UmVzaXplIiwibGF5b3V0U2hpZnQiLCJhbmltYXRpb25GcmFtZSIsInJlZmVyZW5jZUVsIiwiYW5jZXN0b3JzIiwiY2xlYW51cElvIiwicmVvYnNlcnZlRnJhbWUiLCJyZXNpemVPYnNlcnZlciIsImZpcnN0RW50cnkiLCJfcmVzaXplT2JzZXJ2ZXIiLCJmcmFtZUlkIiwicHJldlJlZlJlY3QiLCJmcmFtZUxvb3AiLCJuZXh0UmVmUmVjdCIsIl9yZXNpemVPYnNlcnZlcjIiLCJvZmZzZXQkMSIsImF1dG9QbGFjZW1lbnQkMSIsInNoaWZ0JDEiLCJtZXJnZWRPcHRpb25zIiwicGxhdGZvcm1XaXRoQ2FjaGUiLCJjb21wdXRlUG9zaXRpb24kMSIsImlzQ29tcG9uZW50UHVibGljSW5zdGFuY2UiLCJ0YXJnZXQiLCJ0b1ZhbHVlIiwic291cmNlIiwidW5yZWYiLCJnZXREUFIiLCJyb3VuZEJ5RFBSIiwiZHByIiwidXNlRmxvYXRpbmciLCJ3aGlsZUVsZW1lbnRzTW91bnRlZE9wdGlvbiIsIm9wZW5PcHRpb24iLCJfdG9WYWx1ZSIsIm1pZGRsZXdhcmVPcHRpb24iLCJwbGFjZW1lbnRPcHRpb24iLCJfdG9WYWx1ZTIiLCJzdHJhdGVneU9wdGlvbiIsIl90b1ZhbHVlMyIsInRyYW5zZm9ybU9wdGlvbiIsIl90b1ZhbHVlNCIsInJlZmVyZW5jZUVsZW1lbnQiLCJmbG9hdGluZ0VsZW1lbnQiLCJzaGFsbG93UmVmIiwiaXNQb3NpdGlvbmVkIiwiZmxvYXRpbmdTdHlsZXMiLCJpbml0aWFsU3R5bGVzIiwieFZhbCIsInlWYWwiLCJ3aGlsZUVsZW1lbnRzTW91bnRlZENsZWFudXAiLCJvcGVuIiwicG9zaXRpb24iLCJhdHRhY2giLCJnZXRDdXJyZW50U2NvcGUiLCJvblNjb3BlRGlzcG9zZSIsInNoYWxsb3dSZWFkb25seSIsImlzQ2xpY2tPdXRzaWRlIiwiYW5jaG9yIiwiaXNIb3ZlcmVkIiwiaXNUb2dnbGVkT3BlbiIsIm9mZnNldE1pZGRsZXdhcmUiLCJpc1Nob3dQb3BvdmVyIiwiaGFuZGxlUGVybWFuZW50T3BlbkJvZHlDbGljayIsImUiLCJoYW5kbGVBbmNob3JFbGVtZW50TW91c2VPdmVyIiwiaGFuZGxlQW5jaG9yRWxlbWVudE1vdXNlTGVhdmUiLCJoYW5kbGVBbmNob3JFbGVtZW50Q2xpY2siLCJhZGRMaXN0ZW5lcnNUb0FuY2hvckVsZW1lbnQiLCJyZW1vdmVMaXN0ZW5lcnNGcm9tQW5jaG9yRWxlbWVudCIsImhhbmRsZVBlcm1hbmVudE9wZW5Cb2R5S2V5ZG93biIsImFkZE9wZW5MaXN0ZW5lcnNUb1Jvb3QiLCJyZW1vdmVPcGVuTGlzdGVuZXJzRnJvbVJvb3QiLCJ1cGRhdGVBbmNob3JFbGVtZW50Iiwid2F0Y2hFZmZlY3QiLCJvbkJlZm9yZU1vdW50IiwiRk9STUFUIiwiRk9STUFUX1JFR0VYIiwiTUVESUFfU0xJREVfVFlQRVMiLCJWQUxJREFUT1IiXSwibWFwcGluZ3MiOiJ1R0FBYUEsR0FBYyxDQUN6QixXQUFZLGFBQ1osU0FBVSxVQUNaLEVDQ2FDLEVBQU0sQ0FDakIsZUFBZ0IsQ0FBQ0MsRUFBcUJDLElBQzdCRCxFQUFVLElBQUtFLEdBQVksR0FBR0QsQ0FBVSxJQUFJQyxDQUFPLEVBQUUsRUFFOUQsTUFBTyxDQUNMLEVBQUcsQ0FDRCxPQUFRLG1CQUNSLEtBQU0saUJBQ04sTUFBTyxpQkFDVCxFQUNBLEVBQUcsQ0FDRCxRQUFTLHFCQUNULE9BQVEsbUJBQ1YsQ0FDRixFQUNBLE1BQU8sQ0FDTCxPQUFRLG9CQUNSLFFBQVMscUJBQ1QsT0FBUSxvQkFDUixJQUFLLGlCQUNMLE1BQU8sa0JBQ1QsRUFDQSxNQUFPLENBQ0wsT0FBUSxvQkFDUixPQUFRLG9CQUNSLElBQUssaUJBQ0wsTUFBTyxrQkFDVCxFQUNBLEdBQUksQ0FDRixPQUFRLENBQ04sUUFBUyxDQUNQLE1BQU8sd0JBQ1AsS0FBTSx1QkFDTixRQUFTLDBCQUNULFFBQVMseUJBQ1gsRUFDQSxRQUFTLENBQ1AsTUFBTyx3QkFDUCxLQUFNLHVCQUNOLFFBQVMsMEJBQ1QsUUFBUyx5QkFDWCxD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LE9BQU8sSUFBSSxRQUNmQSxFQUFJLE9BQU8sSUFBSSxJQUNmQSxFQUFJLE9BQU8sSUFBSSxLQUNmQSxFQUFJLE9BQU8sRUFBRSxLQUNiQSxFQUFJLE9BQU8sRUFBRSxJQUNiQSxFQUFJLE9BQU8sRUFBRSxLQUNiQSxFQUFJLE9BQU8sRUFBRSxRQUNiQSxFQUFJLE9BQU8sRUFBRSxJQUNiQSxFQUFJLE9BQU8sRUFBRSxLQUNiQSxFQUFJLE9BQU8sRUFBRSxLQUNiQSxFQUFJLE9BQU8sTUFBTSxLQUNqQkEsRUFBSSxPQUFPLE1BQU0sSUFDakJBLEVBQUksT0FBTyxNQUFNLEtBQ2pCQSxFQUFJLE9BQU8sTUFBTSxRQUNqQkEsRUFBSSxPQUFPLE1BQU0sSUFDakJBLEVBQUksT0FBTyxNQUFNLEtBQ2pCQSxFQUFJLE9BQU8sTUFBTSxLQUNqQkEsRUFBSSxPQUFPLE9BQU8sS0FDbEJBLEVBQUksT0FBTyxPQUFPLElBQ2xCQSxFQUFJLE9BQU8sT0FBTyxLQUNsQkEsRUFBSSxPQUFPLE9BQU8sUUFDbEJBLEVBQUksT0FBTyxPQUFPLElBQ2xCQSxFQUFJLE9BQU8sT0FBTyxLQUNsQkEsRUFBSSxPQUFPLEtBQUssS0FDaEJBLEVBQUksT0FBTyxLQUFLLElBQ2hCQSxFQUFJLE9BQU8sS0FBSyxLQUNoQkEsRUFBSSxPQUFPLEtBQUssUUFDaEJBLEVBQUksT0FBTyxLQUFLLElBQ2hCQSxFQUFJLE9BQU8sS0FBSyxLQUNoQkEsRUFBSSxPQUFPLEtBQUssS0FDaEJBLEVBQUksT0FBTyxLQUFLLElBQ2hCQSxFQUFJLE9BQU8sS0FBSyxJQUNoQkEsRUFBSSxPQUFPLElBQUksSUFDZkEsRUFBSSxPQUFPLElBQUksSUFDZkEsRUFBSSxPQUFPLE1BQU0sSUFDakJBLEVBQUksT0FBTyxNQUFNLElBQ2pCQSxFQUFJLE9BQU8sT0FBTyxJQUNsQkEsRUFBSSxPQUFPLE9BQU8sSUFDbEJBLEVBQUksT0FBTyxLQUFLLElBQ2hCQSxFQUFJLE9BQU8sS0FBSyxJQUNoQkEsRUFBSSxPQUFPLE9BQU8sSUFDbEJBLEVBQUksT0FBTyxPQUFPLEtBQ2xCQSxFQUFJLE9BQU8sT0FBTyxRQUNsQkEsRUFBSSxPQUFPLE9BQU8sS0FDbEJBLEVBQUksUUFBUSxLQUFLLEtBQ2pCQSxFQUFJLFFBQVEsS0FBSyxJQUNqQkEsRUFBSSxRQUFRLEtBQUssS0FDakJBLEVBQUksUUFBUSxLQUFLLFFBQ2pCQSxFQUFJLFFBQVEsS0FBSyxJQUNqQkEsRUFBSSxRQUFRLEtBQUssS0FDakJBLEVBQUksUUFBUSxFQUFFLEtBQ2RBLEVBQUksUUFBUSxFQUFFLElBQ2RBLEVBQUksUUFBUSxFQUFFLEtBQ2RBLEVBQUksUUFBUSxFQUFFLFFBQ2RBLEVBQUksUUFBUSxFQUFFLElBQ2RBLEVBQUksUUFBUSxFQUFFLEtBQ2RBLEVBQUksUUFBUSxJQUFJLEtBQ2hCQSxFQUFJLFFBQVEsSUFBSSxJQUNoQkEsRUFBSSxRQUFRLElBQUksS0FDaEJBLEVBQUksUUFBUSxJQUFJLFFBQ2hCQSxFQUFJLFFBQVEsSUFBSSxJQUNoQkEsRUFBSSxRQUFRLElBQUksS0FDaEJBLEVBQUksUUFBUSxFQUFFLEtBQ2RBLEVBQUksUUFBUSxFQUFFLElBQ2RBLEVBQUksUUFBUSxFQUFFLEtBQ2RBLEVBQUksUUFBUSxFQUFFLFFBQ2RBLEVBQUksUUFBUSxFQUFFLElBQ2RBLEVBQUksUUFBUSxFQUFFLEtBQ2RBLEVBQUksUUFBUSxNQUFNLEtBQ2xCQSxFQUFJLFFBQVEsTUFBTSxJQUNsQkEsRUFBSSxRQUFRLE1BQU0sS0FDbEJBLEVBQUksUUFBUSxNQUFNLFFBQ2xCQSxFQUFJLFFBQVEsTUFBTSxJQUNsQkEsRUFBSSxRQUFRLE1BQU0sS0FDbEJBLEVBQUksUUFBUSxPQUFPLEtBQ25CQSxFQUFJLFFBQVEsT0FBTyxJQUNuQkEsRUFBSSxRQUFRLE9BQU8sS0FDbkJBLEVBQUksUUFBUSxPQUFPLFFBQ25CQSxFQUFJLFFBQVEsT0FBTyxJQUNuQkEsRUFBSSxRQUFRLE9BQU8sS0FDbkJBLEVBQUksUUFBUSxLQUFLLEtBQ2pCQSxFQUFJLFFBQVEsS0FBSyxJQUNqQkEsRUFBSSxRQUFRLEtBQUssS0FDakJBLEVB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LEdBQUEsNENBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSxrQ0FBQSxDQUFBLEVBQUEsNkNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSxtQ0FBQSxDQUFBLEVBQUEsdUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSw2QkFBQSxDQUFBLEVBQUEsd0NBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSw4QkFBQSxDQUFBLEVBQUEseUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSwrQkFBQSxDQUFBLEVBQUEsMkNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSxpQ0FBQSxDQUFBLEVBQUEseUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSwrQkFBQSxDQUFBLEVBQUEseUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSwrQkFBQSxDQUFBLEVBQUEsMENBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSxnQ0FBQSxDQUFBLEVBQUEsd0NBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSw4QkFBQSxDQUFBLEVBQUEsd0NBQUEsSUFBQSxtQ0FBQSw4QkFBQSxDQUFBLEVBQUEsa0NBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSx3QkFBQSxDQUFBLEVBQUEsbUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSx5QkFBQSxDQUFBLEVBQUEsdUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSw2QkFBQSxDQUFBLEVBQUEsd0NBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSw4QkFBQSxDQUFBLEVBQUEsNENBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSxrQ0FBQSxDQUFBLEVBQUEsbUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSx5QkFBQSxHQUFBLDBDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsZ0NBQUEsQ0FBQSxFQUFBLHdDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsOEJBQUEsQ0FBQSxFQUFBLG9DQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsMEJBQUEsQ0FBQSxFQUFBLDBDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsZ0NBQUEsQ0FBQSxFQUFBLDJDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsaUNBQUEsQ0FBQSxFQUFBLG9DQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsMEJBQUEsQ0FBQSxFQUFBLG9DQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsMEJBQUEsQ0FBQSxFQUFBLHVDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsNkJBQUEsQ0FBQSxFQUFBLG9DQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsMEJBQUEsQ0FBQSxFQUFBLGlEQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsdUNBQUEsQ0FBQSxFQUFBLHFDQUFBLElBQUEsbUNBQUEsMkJBQUEsQ0FBQSxFQUFBLHNDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsNEJBQUEsQ0FBQSxFQUFBLDZDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsbUNBQUEsQ0FBQSxFQUFBLHFDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsMkJBQUEsQ0FBQSxFQUFBLG9DQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsMEJBQUEsQ0FBQSxFQUFBLG1DQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEseUJBQUEsQ0FBQSxFQUFBLHFDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsMkJBQUEsR0FBQSwwQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLGdDQUFBLENBQUEsRUFBQSxvQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDBCQUFBLENBQUEsRUFBQSw0Q0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLGtDQUFBLENBQUEsRUFBQSx5Q0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLCtCQUFBLENBQUEsRUFBQSx5Q0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLCtCQUFBLENBQUEsRUFBQSx1Q0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDZCQUFBLENBQUEsRUFBQSx1Q0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDZCQUFBLENBQUEsRUFBQSw2Q0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLG1DQUFBLENBQUEsRUFBQSxtQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLHlCQUFBLENBQUEsRUFBQSx5Q0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLCtCQUFBLENBQUEsRUFBQSwyQ0FBQSxJQUFBLG1DQUFBLGlDQUFBLENBQUEsRUFBQSxpREFBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLHVDQUFBLENBQUEsRUFBQSxvQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDBCQUFBLENBQUEsRUFBQSxrQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLHdCQUFBLENBQUEsRUFBQSxvQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDBCQUFBLENBQUEsRUFBQSxvQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDBCQUFBLENBQUEsRUFBQSwrQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLHFDQUFBLEdBQUEscUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSwyQkFBQSxDQUFBLEVBQUEsd0NBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSw4QkFBQSxDQUFBLEVBQUEsbUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSx5QkFBQSxDQUFBLEVBQUEsd0NBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSw4QkFBQSxDQUFBLEVBQUEsdUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSw2QkFBQSxDQUFBLEVBQUEscUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSwyQkFBQSxDQUFBLEVBQUEsbUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSx5QkFBQSxDQUFBLEVBQUEsbUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSx5QkFBQSxDQUFBLEVBQUEsMENBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSxnQ0FBQSxDQUFBLEVBQUEseUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSwrQkFBQSxDQUFBLEVBQUEsd0NBQUEsSUFBQSxtQ0FBQSw4QkFBQSxDQUFBLEVBQUEsdUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSw2QkFBQSxDQUFBLEVBQUEscUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSwyQkFBQSxDQUFBLEVBQUEsNENBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSxrQ0FBQSxDQUFBLEVBQUEsdUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSw2QkFBQSxDQUFBLEVBQUEsNENBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSxrQ0FBQSxDQUFBLEVBQUEsbUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSx5QkFBQSxHQUFBLG1DQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEseUJBQUEsQ0FBQSxFQUFBLG1DQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEseUJBQUEsQ0FBQSxFQUFBLHVDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsNkJBQUEsQ0FBQSxFQUFBLHdDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsOEJBQUEsQ0FBQSxFQUFBLDRDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsa0NBQUEsQ0FBQSxFQUFBLHVDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsNkJBQUEsQ0FBQSxFQUFBLHdDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsOEJBQUEsQ0FBQSxFQUFBLHNDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsNEJBQUEsQ0FBQSxFQUFBLHFDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsMkJBQUEsQ0FBQSxFQUFBLHFDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsMkJBQUEsQ0FBQSxFQUFBLDJDQUFBLElBQUEsbUNBQUEsaUNBQUEsQ0FBQSxFQUFBLDBDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsZ0NBQUEsQ0FBQSxFQUFBLHdDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsOEJBQUEsQ0FBQSxFQUFBLHdDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsOEJBQUEsQ0FBQSxFQUFBLHFDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsMkJBQUEsQ0FBQSxFQUFBLG9DQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsMEJBQUEsQ0FBQSxFQUFBLHVDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsNkJBQUEsR0FBQSwyQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLGlDQUFBLENBQUEsRUFBQSxxQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDJCQUFBLENBQUEsRUFBQSwyQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLGlDQUFBLENBQUEsRUFBQSwwQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLGdDQUFBLENBQUEsRUFBQSxtQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLHlCQUFBLENBQUEsRUFBQSw0Q0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLGtDQUFBLENBQUEsRUFBQSxvQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDBCQUFBLENBQUEsRUFBQSxzQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDRCQUFBLENBQUEsRUFBQSxxQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDJCQUFBLENBQUEsRUFBQSxxQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDJCQUFBLENBQUEsRUFBQSxzQ0FBQSxJQUFBLG1DQUFBLDRCQUFBLENBQUEsRUFBQSxtQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLHlCQUFBLENBQUEsRUFBQSxzQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDRCQUFBLENBQUEsRUFBQSx1Q0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDZCQUFBLENBQUEsRUFBQSxvQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLDBCQUFBLENBQUEsRUFBQSwwQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLGdDQUFBLENBQUEsRUFBQSwyQ0FBQSxJQUFBLFFBQUEsUUFBQSxFQUFBLEtBQUEsSUFBQSxRQUFBLGlDQUFBLEdBQUEscUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSwyQkFBQSxDQUFBLEVBQUEsa0NBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSx3QkFBQSxDQUFBLEVBQUEsd0NBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSw4QkFBQSxDQUFBLEVBQUEsbUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSx5QkFBQSxDQUFBLEVBQUEsd0NBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSw4QkFBQSxDQUFBLEVBQUEsd0NBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSw4QkFBQSxDQUFBLEVBQUEsdUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSw2QkFBQSxDQUFBLEVBQUEsNkNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSxtQ0FBQSxDQUFBLEVBQUEsc0NBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSw0QkFBQSxDQUFBLEVBQUEsMkNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSxpQ0FBQSxDQUFBLEVBQUEscUNBQUEsSUFBQSxtQ0FBQSwyQkFBQSxDQUFBLEVBQUEsbUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSx5QkFBQSxDQUFBLEVBQUEsc0NBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSw0QkFBQSxDQUFBLEVBQUEsdUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSw2QkFBQSxDQUFBLEVBQUEsdUNBQUEsSUFBQSxRQUFBLFFBQUEsRUFBQSxLQUFBLElBQUEsUUFBQSw2QkFBQSxHQUFBLHVDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsNkJBQUEsQ0FBQSxFQUFBLHVDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsNkJBQUEsQ0FBQSxFQUFBLHlDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsK0JBQUEsQ0FBQSxFQUFBLHdDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsOEJBQUEsQ0FBQSxFQUFBLHVDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsNkJBQUEsQ0FBQSxFQUFBLHdDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsOEJBQUEsQ0FBQSxFQUFBLHNDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsNEJBQUEsQ0FBQSxFQUFBLG9DQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsMEJBQUEsQ0FBQSxFQUFBLHFDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsMkJBQUEsQ0FBQSxFQUFBLG9DQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsMEJBQUEsQ0FBQSxFQUFBLCtDQUFBLElBQUEsbUNBQUEscUNBQUEsQ0FBQSxFQUFBLHFDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsMkJBQUEsQ0FBQSxFQUFBLHNDQUFBLElBQUEsUUFBQSxRQUFBLEVBQUEsS0FBQSxJQUFBLFFBQUEsNEJBQUEsQ0FBQSxDQUFBLENBQUEsRUFBQSwyQkFBQUwsQ0FBQSxNQUFBLENBQ1IsRUFFUUwsRUFBQSxNQUFRVyxVQUFRSCxDQUFTLENBQ3BDLEVBQ0EsQ0FBRSxVQUFXLEVBQUssQ0FBQSxnVkN0Q2YsTUFBTUksRUFBTyxDQUNsQixnQkFBaUIsa0JBQ2pCLE1BQU8sUUFDUCxJQUFLLE1BQ0wsZUFBZ0IsaUJBQ2hCLGlCQUFrQixtQkFDbEIsVUFBVyxZQUNYLFdBQVksYUFDWixZQUFhLGNBQ2IsY0FBZSxnQkFDZixZQUFhLGNBQ2IsV0FBWSxhQUNaLGFBQWMsZUFDZCxXQUFZLGFBQ1osV0FBWSxhQUNaLElBQUssTUFDTCxLQUFNLE9BQ04sU0FBVSxXQUNWLFVBQVcsWUFDWCxlQUFnQixpQkFDaEIsS0FBTSxPQUNOLGFBQWMsZUFDZCxXQUFZLGFBQ1osTUFBTyxRQUNQLGFBQWMsZUFDZCxjQUFlLGdCQUNmLE1BQU8sUUFDUCxNQUFPLFFBQ1AsU0FBVSxXQUNWLE1BQU8sUUFDUCxvQkFBcUIsc0JBQ3JCLE9BQVEsU0FDUixRQUFTLFVBQ1QsZ0JBQWlCLGtCQUNqQixPQUFRLFNBQ1IsTUFBTyxRQUNQLEtBQU0sT0FDTixPQUFRLFNBQ1IsWUFBYSxjQUNiLE1BQU8sUUFDUCxlQUFnQixpQkFDaEIsWUFBYSxjQUNiLFlBQWEsY0FDYixTQUFVLFdBQ1YsU0FBVSxXQUNWLGdCQUFpQixrQkFDakIsS0FBTSxPQUNOLFlBQWEsY0FDYixjQUFlLGdCQUNmLHFCQUFzQix1QkFDdEIsTUFBTyxRQUNQLElBQUssTUFDTCxNQUFPLFFBQ1AsTUFBTyxRQUNQLG1CQUFvQixxQkFDcEIsT0FBUSxTQUNSLFdBQVksYUFDWixLQUFNLE9BQ04sVUFBVyxZQUNYLFNBQVUsV0FDVixPQUFRLFNBQ1IsS0FBTSxPQUNOLEtBQU0sT0FDTixZQUFhLGNBQ2IsWUFBYSxjQUNiLFVBQVcsWUFDWCxVQUFXLFlBQ1gsT0FBUSxTQUNSLGVBQWdCLGlCQUNoQixVQUFXLFlBQ1gsZUFBZ0IsaUJBQ2hCLEtBQU0sT0FDTixLQUFNLE9BQ04sS0FBTSxPQUNOLFVBQVcsWUFDWCxXQUFZLGFBQ1osY0FBZSxnQkFDZixTQUFVLFdBQ1YsWUFBYSxjQUNiLFFBQVMsVUFDVCxPQUFRLFNBQ1IsT0FBUSxTQUNSLGNBQWUsZ0JBQ2YsYUFBYyxlQUNkLFVBQVcsWUFDWCxXQUFZLGFBQ1osT0FBUSxTQUNSLE1BQU8sUUFDUCxVQUFXLFlBQ1gsY0FBZSxnQkFDZixPQUFRLFNBQ1IsY0FBZSxnQkFDZixhQUFjLGVBQ2QsS0FBTSxPQUNOLGVBQWdCLGlCQUNoQixNQUFPLFFBQ1AsUUFBUyxVQUNULE9BQVEsU0FDUixPQUFRLFNBQ1IsUUFBUyxVQUNULEtBQU0sT0FDTixRQUFTLFVBQ1QsU0FBVSxXQUNWLE1BQU8sUUFDUCxhQUFjLGVBQ2QsY0FBZSxnQkFDZixPQUFRLFNBQ1IsSUFBSyxNQUNMLFVBQVcsWUFDWCxLQUFNLE9BQ04sVUFBVyxZQUNYLFdBQVksYUFDWixVQUFXLFlBQ1gsaUJBQWtCLG1CQUNsQixTQUFVLFdBQ1YsY0FBZSxnQkFDZixPQUFRLFNBQ1IsS0FBTSxPQUNOLFFBQVMsVUFDVCxTQUFVLFdBQ1YsU0FBVSxXQUNWLFNBQVUsV0FDVixXQUFZLGFBQ1osV0FBWSxhQUNaLFdBQVksYUFDWixVQUFXLFlBQ1gsVUFBVyxZQUNYLFFBQVMsVUFDVCxNQUFPLFFBQ1AsT0FBUSxTQUNSLE1BQU8sUUFDUCxrQkFBbUIsb0JBQ25CLE9BQVEsU0FDUixRQUFTLFNBQ1gsRUFFYUMsR0FBYSxDQUN4QixJQUFLLENBQ0gsSUFBSyxVQUNMLFdBQVksaUJBQ1osVUFBVyxnQkFDWCxRQUFTLGNBQ1QsVUFBVyxnQkFDWCxhQUFjLG1CQUNkLFFBQVMsYUFDWCxFQUNBLFNBQVUsQ0FDUixJQUFLLGVBQ0wsUUFBUyxrQkFDWCxFQUNBLEdBQUksQ0FDRixRQUFTLGFBQ1QsUUFBUyxhQUNULFFBQVMsYUFDVCxZQUFhLGlCQUNiLFdBQVksZ0JBQ1osV0FBWSxnQkFDWixjQUFlLG1CQUNmLGVBQWdCLG9CQUNoQixhQUFjLGlCQUNoQixDQUNGLHlUQzFJUUMsRUFBb0IsSUFBTSxDQUM5QkMsRUFBSyxRQUFRLENBQUEsdTJDQzFCSkMsRUFBVSxDQUNyQixPQUFRLFNBQ1IsS0FBTSxHQUNSLEVBRWFDLEVBQXVCLENBQ2xDLE9BQVEsU0FDUixJQUFLLE1BQ0wsS0FBTSxHQUNSLEVDUGFDLEVBQVcsQ0FDdEIsUUFBUyxVQUNULFVBQVcsWUFDWCxTQUFVLFdBQ1YsV0FBWSxhQUNaLFNBQVUsVUFDWixFQ1JhQyxFQUFTLENBQ3BCLE1BQU8sU0FDUCxLQUFNLE1BQ1IsMGxDQ0hhQyxFQUFRLENBQ25CLE1BQU8sUUFDUCxLQUFNLE9BQ04sUUFBUyxVQUNULFFBQVMsU0FDWCx1SkNvQlFDLEVBQU9DLEVBQUFBLFNBQVMsSUFBTSxDQUMxQixJQUFJRCxFQUFhVCxFQUFLLEtBRXRCLE9BQVFULEVBQU0sS0FBTSxDQUNsQixLQUFLaUIsRUFBTSxNQUNUQyxFQUFPVCxFQUFLLE1BQ1osTUFDRixRQUNBLEtBQUtRLEVBQU0sS0FDVEMsRUFBT1QsRUFBSyxLQUNaLE1BQ0YsS0FBS1EsRUFBTSxRQUNUQyxFQUFPVCxFQUFLLE1BQ1osTUFDRixLQUFLUSxFQUFNLFFBQ1RDLEVBQU9ULEVBQUssUUFDWixLQUNKLENBRU9TLE9BQUFBLENBQUEsQ0FDUiw2NkVDN0NVRSxHQUFnQixDQUMzQixTQUFVLEtBQ1YsU0FBVSxLQUNWLFFBQVMsR0FDWCxnd0pDWVFDLEVBQWVDLEdBQWtCLENBQ3JDVixFQUFLLFNBQVVVLENBQUssQ0FBQSxveENDakJYQyxHQUFZLENBQ3ZCLFdBQVksU0FDWixjQUFlLGdCQUNmLFdBQVksUUFDZCxtMURDc0JRQyxFQUFhMUIsRUFBQUEsTUFDYjJCLEVBQVczQixFQUFBQSxNQUVYNEIsRUFBbUI1QixFQUFBQSxNQUNuQjZCLEVBQWU3QixFQUFBQSxNQUNmOEIsRUFBZTlCLE1BQUksQ0FBQyxFQUNwQitCLEVBQWEvQixFQUFBQSxNQUNiZ0MsRUFBY2hDLEVBQUFBLE1BQ2RpQyxFQUFjakMsRUFBQUEsTUFDZGtDLEVBQWVsQyxFQUFBQSxNQUNmbUMsRUFBY25DLEVBQUFBLE1BUWRvQyxFQUFzQixJQUFNLENBRTFCLE1BQUFDLEVBQWUsTUFBTSxLQUFLWCxFQUFXLE1BQU0sUUFBUSxFQUFFLElBQUtZLEdBQWVBLEVBQU0sVUFBVSxFQUUvRixHQUFJRCxFQUFhLFNBQVcsRUFBRyxPQUcvQixNQUFNRSxFQUFxQkYsRUFBYSxPQUFPLENBQUNHLEVBQU1DLElBQzdDLEtBQUssSUFBSUEsRUFBT2QsRUFBUyxNQUFNLFVBQVUsRUFBSSxLQUFLLElBQUlhLEVBQU9iLEVBQVMsTUFBTSxVQUFVLEVBQUljLEVBQU9ELENBQ3pHLEVBRVlWLEVBQUEsTUFBUU8sRUFBYSxRQUFRRSxDQUFrQixDQUFBLEVBR3hERyxFQUFhLElBQU0sQ0FDdkJkLEVBQWlCLE1BQVFELEVBQVMsTUFBTSxXQUFhQSxFQUFTLE1BQU0sWUFDdkRFLEVBQUEsTUFBUUgsRUFBVyxNQUFNLFlBQzNCSyxFQUFBLE1BQVFKLEVBQVMsTUFBTSxZQUN0QkssRUFBQSxNQUFRSCxFQUFhLE1BQVFFLEVBQVcsTUFDeENFLEVBQUEsTUFBUUwsRUFBaUIsUUFBVUMsRUFBYSxNQUM1REssRUFBYSxNQUFRUCxFQUFTLE1BQU0sWUFBY0EsRUFBUyxNQUFNLFlBQ2pFUSxFQUFZLE1BQVFILEVBQVksT0FBUyxDQUFDOUIsRUFBTSxjQUU1QmtDLEdBQUEsRUFJaEJPLEVBQWUsSUFBTSxDQUNkRCxHQUFBLEVBR1BFLEVBQWlCQyxHQUF1QixDQUM1Q2xCLEVBQVMsTUFBTSxTQUFTLENBQ3RCLFNBQVUsU0FDVixLQUFNRCxFQUFXLE1BQU0sU0FBU21CLENBQVUsRUFBRSxVQUFBLENBQzdDLENBQUEsRUFHR0MsRUFBZ0IsSUFBTSxDQUN0QmxCLEVBQWlCLE1BQVFDLEVBQWEsTUFDeENGLEVBQVMsTUFBTSxTQUFTLENBQ3RCLFNBQVUsU0FDVixLQUFNRSxDQUFBLENBQ1AsRUFDU0ksRUFBWSxPQUNSVyxFQUFBZCxFQUFhLE1BQVEsQ0FBQyxDQUN0QyxFQUdJaUIsRUFBb0IsSUFBTSxDQUNUakIsRUFBYSxRQUFVLEdBRzVCYyxFQUFBZCxFQUFhLE1BQVEsQ0FBQyxDQUN0QyxFQUdGa0IsT0FBQUEsRUFBQUEsVUFBVSxJQUFNLENBQ0hOLElBQ0osT0FBQSxpQkFBaUIsU0FBVUEsQ0FBVSxDQUFBLENBQzdDLEVBRURPLEVBQUFBLFlBQVksSUFBTSxDQUNULE9BQUEsb0JBQW9CLFNBQVVQLENBQVUsQ0FBQSxDQUNoRCxFQUVEUSxFQUFBQSxVQUFVLElBQU0sQ0FDSFIsR0FBQSxDQUNaLEVBRUR6QyxFQUFBLE1BQU02QixFQUFjLElBQU0sQ0FDbkJoQixFQUFBLFNBQVVnQixFQUFhLEtBQUssQ0FBQSxDQUNsQyxxek1DeEZLcUIsR0FBZSwyUkFIZkMsRUFBVXBELEVBQUFBLE1BQ1ZxRCxFQUFNckQsRUFBQUEsTUFJTnNELEVBQXNCLElBQU0sU0FDMUIsTUFBQUMsR0FBYUMsRUFBQUgsRUFBSSxRQUFKLFlBQUFHLEVBQVcsV0FDeEJDLEdBQWdCQyxFQUFBTixFQUFRLFFBQVIsWUFBQU0sRUFBZSxjQUFjLGtCQUFrQkgsQ0FBVSxNQUUzRUEsR0FBY0UsRUFDaEJBLEVBQWMsT0FBU04sR0FDZEUsRUFBSSxRQUNiQSxFQUFJLE1BQU0sSUFBTUYsR0FDbEIsd3JGQ1BJUSxFQUFZdEMsRUFBQUEsU0FBUyxJQUFNbkIsRUFBTSxTQUFXQSxFQUFNLGFBQWEsMG5FQ1QvRDBELEVBQVU1RCxFQUFBQSxJQUFJRSxFQUFNLE9BQU8sRUFFakNELE9BQUFBLEVBQUEsTUFDRSxJQUFNQyxFQUFNLFFBQ1osQ0FBQzJELEVBQVVDLElBQWEsRUFDbEJELElBQWFDLEdBQVlELElBQWFELEVBQVEsU0FDaERBLEVBQVEsTUFBUUMsRUFFcEIsQ0FBQSxtcUNDdEJTRSxHQUFzQiw4QkFFdEJDLEdBQVUsQ0FDckIsUUFBUyxHQUNULE1BQU8sRUFDVCxFQUVhQyxHQUFlQyxHQUNsQkMsR0FBb0MsQ0FDMUMsSUFBSUMsRUFBU0osR0FFYixPQUFLRyxFQUFNLEtBQU8sRUFBQSxNQUFNRCxDQUFNLElBQ25CRSxFQUFBLENBQ1AsUUFBU0wsR0FDVCxNQUFPLEVBQUEsR0FJSkssQ0FBQSxFQUlFQyxHQUFrQixDQUFDQyxFQUFpQ0MsSUFFM0QsT0FBT0QsR0FBbUIsVUFBWUEsRUFBZSxPQUFTLEVBQVVBLEVBRXJFLE9BQU9DLEdBQWlCLFVBQVlBLEVBQWEsT0FBUyxFQUFJQSxFQUFlUixHQUd6RVMsR0FBbUIsQ0FBQ0YsRUFBaUNDLElBQ2hFRCxJQUFtQixJQUFTQyxJQUFpQixHQUVsQ0UsR0FBd0IsQ0FBQyxDQUFFLFVBQUFDLEVBQVcsVUFBQUMsRUFBVyxTQUFBQyxFQUFVLE1BQUFULEtBQThCLENBQ3BHLE1BQU1VLEVBQXVCVixFQUFNLFNBQVcsR0FBSyxDQUFDUyxFQUM5Q0UsRUFBWUosR0FBYVAsRUFBTSxPQUFTTyxFQUd2QyxNQUFBLEVBRlksQ0FBQ0csR0FBd0JGLEdBQWFSLEVBQU0sT0FBU1EsSUFFbEQsQ0FBQ0csQ0FDekIsRUF1RGFDLEdBQXdCLENBQUMsQ0FDcEMsTUFBQUMsRUFDQSxlQUFBVixFQUNBLFVBQUFJLEVBQ0EsVUFBQUMsRUFDQSxTQUFBQyxFQUFXLEdBQ1gsV0FBQUssRUFDQSxNQUFBZCxDQUNGLElBUU0sQ0FLQSxHQUZFYSxFQUFBLE1BQVFWLEdBQWtDLEdBRTVDLENBQUNVLEVBQU0sT0FBU0MsRUFBWSxDQUM5QixNQUFNQyxFQUFhQyxJQUFpQmhCLEdBQUEsWUFBQUEsRUFBTyxRQUFTLEdBQUljLENBQVUsRUFFN0RDLEVBQVcsUUFDZEYsRUFBTSxNQUFRRSxFQUFXLFFBRTdCLENBRUEsR0FBSSxDQUFDRixFQUFNLFFBQVVOLEdBQWFDLEdBQVksQ0FDNUMsTUFBTVMsRUFBbUJDLEdBQWUsQ0FDdEMsVUFBQVgsRUFDQSxVQUFBQyxFQUNBLFNBQUFDLEVBQ0EsT0FBT1QsR0FBQSxZQUFBQSxFQUFPLFFBQVMsRUFBQSxDQUN4QixFQUVJaUIsRUFBaUIsUUFDcEJKLEVBQU0sTUFBUUksRUFBaUIsUUFFbkMsQ0FDRixFQWtCYUMsR0FBaUIsQ0FBQyxDQUM3QixVQUFBWCxFQUNBLFVBQUFDLEVBQ0EsU0FBQUMsRUFBVyxHQUNYLE1BQUFULENBQ0YsSUFBMEMsQ0FDeEMsTUFBTW1CLEVBQVcsQ0FDZixRQUFTLEdBQ1QsTUFBTyxFQUFBLEVBVVQsT0FQQUEsRUFBUyxNQUFRYixHQUFzQixDQUNyQyxVQUFBQyxFQUNBLFVBQUFDLEVBQ0EsU0FBQUMsRUFDQSxNQUFBVCxDQUFBLENBQ0QsRUFFR21CLEVBQVMsUUFFYkEsRUFBUyxRQUFVdkIsR0FFZlcsR0FBYUMsRUFDZlcsRUFBUyxRQUFVLGdDQUFnQ1gsQ0FBUyxRQUFRRCxDQUFTLHlCQUNwRUEsRUFDQVksRUFBQSxRQUFVLHFDQUFxQ1osQ0FBUyx5QkFDeERDLElBQ0FXLEVBQUEsUUFBVSxxQ0FBcUNYLENBQVMsMkJBRzVEVyxDQUNULEVBRWdCLFNBQUFILEdBQWlCaEIsRUFBZWMsRUFBdUUsQ0FDckgsVUFBV00sS0FBYU4sRUFBWSxDQUM1QixNQUFBQyxFQUFhSyxFQUFVcEIsQ0FBSyxFQUM5QixHQUFBLENBQUNlLEVBQVcsTUFDUCxPQUFBQSxDQUVYLENBRU8sTUFBQSxDQUNMLFFBQVMsR0FDVCxNQUFPLEVBQUEsQ0FFWCw4Y0NsTFFGLEVBQVFoRixFQUFBQSxJQUFJRSxFQUFNLEtBQUssRUFDdkJzRixFQUFXeEYsTUFBSSxFQUFLLEVBQ3BCUixFQUFRUSxNQUE4QixJQUFJLEVBQzFDNEUsRUFBVzVFLEVBQUFBLElBQUlFLEVBQU0sUUFBUSxFQUM3QmlFLEVBQVFuRSxFQUFBQSxJQUF3QkUsRUFBTSxLQUFLLEVBRTNDdUYsRUFBZXBFLFdBQVMsSUFBTWdELEdBQWdCbkUsRUFBTSxNQUFPOEUsRUFBTSxLQUFLLENBQUMsRUFDdkVVLEVBQWlCckUsRUFBQUEsU0FBUyxJQUFPbkIsRUFBTSxTQUFXLEdBQUdBLEVBQU0sS0FBSyxLQUFPQSxFQUFNLEtBQU0sRUFDbkZ5RixFQUFXdEUsRUFBQSxTQUFTLElBQU9uQixFQUFNLFVBQVksQ0FBQ2lFLEVBQU0sT0FBVUssR0FBaUJRLEVBQU0sTUFBTzlFLEVBQU0sS0FBSyxDQUFDLEVBQ3hHMEYsRUFBZXZFLEVBQUFBLFNBQVMsSUFBTW1FLEVBQVMsT0FBUyxDQUFDSyxFQUFRLEtBQUssRUFDOURBLEVBQVV4RSxFQUFBQSxTQUFTLElBQU04QyxFQUFNLFFBQVUsTUFBUyxFQUVsRDJCLEVBQWdCLElBQU0sT0FDcEIsTUFBQUMsRUFBUSxJQUFJLFdBQVcsV0FBVyxHQUNqQ3ZDLEVBQUFoRSxHQUFBLFlBQUFBLEVBQUEsUUFBQSxNQUFBZ0UsRUFBTyxjQUFjdUMsRUFBSyxFQUc3QkMsRUFBYyxJQUFNLENBQ3hCUixFQUFTLE1BQVEsRUFBQSxFQUdiUyxFQUFpQixJQUFNLENBQzNCVCxFQUFTLE1BQVEsRUFBQSxFQUduQnZGLE9BQUFBLEVBQUEsTUFDRSxJQUFNQyxFQUFNLE1BQ1osQ0FBQzJELEVBQVVDLElBQWEsRUFDbEJELElBQWFDLEdBQVlELElBQWFNLEVBQU0sU0FDOUNBLEVBQU0sTUFBUU4sRUFFbEIsQ0FBQSxFQUdXcUMsRUFBQSxDQUFFLE1BQUFsQixFQUFPLE1BQUFiLENBQUEsQ0FBTyw4NEdDN0RsQmdDLEVBQWtCLENBQzdCLEtBQU0sT0FDTixlQUFnQixpQkFDaEIsTUFBTyxRQUNQLE1BQU8sUUFDUCxPQUFRLFNBQ1IsU0FBVSxXQUNWLE9BQVEsU0FDUixJQUFLLE1BQ0wsS0FBTSxPQUNOLEtBQU0sT0FDTixJQUFLLE1BQ0wsS0FBTSxNQUNSLG91QkM2Q1FuQixFQUFRaEYsRUFBQUEsSUFBSUUsRUFBTSxLQUFLLEVBQ3ZCc0YsRUFBV3hGLE1BQUksRUFBSyxFQUNwQlIsRUFBUVEsTUFBNkIsSUFBSSxFQUN6Q29HLEVBQWVwRyxNQUFJLEVBQUssRUFDeEJtRSxFQUFRbkUsRUFBQUEsSUFBSUUsRUFBTSxLQUFLLEVBRXZCdUYsRUFBZXBFLFdBQVMsSUFBTWdELEdBQWdCbkUsRUFBTSxNQUFPOEUsRUFBTSxLQUFLLENBQUMsRUFDdkVVLEVBQWlCckUsRUFBQSxTQUFTLElBQU9uQixFQUFNLFVBQVlBLEVBQU0sTUFBUSxHQUFHQSxFQUFNLEtBQUssS0FBT0EsRUFBTSxLQUFNLEVBQ2xHbUcsRUFBV2hGLEVBQUFBLFNBQVMsSUFBTW5CLEVBQU0sVUFBWWlFLEVBQU0sS0FBSyxFQUN2RHdCLEVBQVd0RSxFQUFBLFNBQ2YsSUFBT25CLEVBQU0sVUFBWWlFLEVBQU0sUUFBVSxRQUFhLENBQUNBLEVBQU0sT0FBVUssR0FBaUJRLEVBQU0sTUFBTzlFLEVBQU0sS0FBSyxDQUFBLEVBRTVHMEYsRUFBZXZFLEVBQUFBLFNBQVMsSUFBTW1FLEVBQVMsT0FBUyxDQUFDSyxFQUFRLEtBQUssRUFDOURBLEVBQVV4RSxXQUFTLElBQU04QyxFQUFNLFFBQVUsSUFBTUEsRUFBTSxRQUFVLE1BQVMsRUFDeEVtQyxFQUFPakYsRUFBQSxTQUFTLElBQ3BCbkIsRUFBTSxPQUFTaUcsRUFBZ0IsVUFBWUMsRUFBYSxRQUFVLEdBQU9ELEVBQWdCLEtBQU9qRyxFQUFNLElBQUEsRUFHbEdxRyxFQUFjLElBQU0sT0FDeEJwQyxFQUFNLE1BQVEsSUFDZFgsRUFBQWhFLEVBQU0sUUFBTixNQUFBZ0UsRUFBYSxPQUFNLEVBR2Z3QyxFQUFjLElBQU0sQ0FDeEJSLEVBQVMsTUFBUSxFQUFBLEVBR2JTLEVBQWlCLElBQU0sQ0FDM0JULEVBQVMsTUFBUSxHQUVackIsRUFBTSxRQUNUQSxFQUFNLE1BQVEsSUFHQ3FDLEdBQUEsRUFHYkMsRUFBYyxJQUFNLFNBQ3hCLEdBQUl2RyxFQUFNLGVBQWdCLENBQ2xCLE1BQUFSLElBQVNnRSxHQUFBRixFQUFBVyxFQUFNLFFBQU4sWUFBQVgsRUFBYSxNQUFNLFNBQW5CLFlBQUFFLEVBQTJCLEtBQUssTUFBTyxPQUV0RFMsRUFBTSxNQUFRekUsRUFBU1EsRUFBTSxlQUFlUixDQUFNLEVBQUksRUFDeEQsQ0FBQSxFQUdJOEcsRUFBbUIsSUFBTSxDQUNQekIsR0FBQSxDQUNwQixNQUFBQyxFQUNBLGVBQWdCOUUsRUFBTSxNQUN0QixVQUFXQSxFQUFNLFVBQ2pCLFVBQVdBLEVBQU0sVUFDakIsU0FBVUEsRUFBTSxTQUNoQixXQUFZQSxFQUFNLFdBQ2xCLE1BQUFpRSxDQUFBLENBQ0QsQ0FBQSxFQUdHdUMsRUFBZTdDLEdBQXFCLENBQ3hDTSxFQUFNLE1BQVFOLENBQUEsRUFHaEI1RCxPQUFBQSxFQUFBLE1BQ0UsSUFBTUMsRUFBTSxNQUNaLENBQUMyRCxFQUFVQyxJQUFhLEVBQ2xCRCxJQUFhQyxHQUFZRCxJQUFhTSxFQUFNLFNBQzlDQSxFQUFNLE1BQVFOLEVBRWxCLENBQUEsRUFHV3FDLEVBQUEsQ0FDWCxNQUFBbEIsRUFDQSxTQUFVOUUsRUFBTSxTQUNoQixZQUFBd0csRUFDQSxNQUFBdkMsQ0FBQSxDQUNELDZzSUM5RkthLEVBQVFoRixFQUFBQSxJQUFJRSxFQUFNLEtBQUssRUFDdkJzRixFQUFXeEYsTUFBSSxFQUFLLEVBQ3BCUixFQUFRUSxNQUE2QixJQUFJLEVBQ3pDbUUsRUFBUW5FLEVBQUFBLElBQUlFLEVBQU0sS0FBSyxFQUV2QnVGLEVBQWVwRSxXQUFTLElBQU1nRCxHQUFnQm5FLEVBQU0sTUFBTzhFLEVBQU0sS0FBSyxDQUFDLEVBQ3ZFVSxFQUFpQnJFLEVBQUFBLFNBQVMsSUFBT25CLEVBQU0sU0FBVyxHQUFHQSxFQUFNLEtBQUssS0FBT0EsRUFBTSxLQUFNLEVBQ25GeUYsRUFBV3RFLEVBQUEsU0FDZixJQUFPbkIsRUFBTSxVQUFZaUUsRUFBTSxRQUFVLFFBQWEsQ0FBQ0EsRUFBTSxPQUFVSyxHQUFpQlEsRUFBTSxNQUFPOUUsRUFBTSxLQUFLLENBQUEsRUFFNUcwRixFQUFldkUsRUFBQUEsU0FBUyxJQUFNbUUsRUFBUyxPQUFTLENBQUNLLEVBQVEsS0FBSyxFQUM5REEsRUFBVXhFLFdBQVMsSUFBTThDLEVBQU0sUUFBVSxJQUFNQSxFQUFNLFFBQVUsTUFBUyxFQUV4RTZCLEVBQWMsSUFBTSxDQUN4QlIsRUFBUyxNQUFRLEVBQUEsRUFHYlMsRUFBaUIsSUFBTSxDQUMzQlQsRUFBUyxNQUFRLEdBRVpyQixFQUFNLFFBQ1RBLEVBQU0sTUFBUSxHQUNoQixFQUdJcUMsRUFBbUIsSUFDaEJ6QixHQUFzQixDQUMzQixNQUFBQyxFQUNBLGVBQWdCOUUsRUFBTSxNQUN0QixVQUFXQSxFQUFNLFVBQ2pCLFVBQVdBLEVBQU0sVUFDakIsU0FBVUEsRUFBTSxTQUNoQixNQUFBaUUsQ0FBQSxDQUNELEVBR0hsRSxPQUFBQSxFQUFBLE1BQ0UsSUFBTUMsRUFBTSxNQUNaLENBQUMyRCxFQUFVQyxJQUFhLEVBQ2xCRCxJQUFhQyxHQUFZRCxJQUFhTSxFQUFNLFNBQzlDQSxFQUFNLE1BQVFOLEVBRWxCLENBQUEsRUFHV3FDLEVBQUEsQ0FDWCxNQUFBbEIsRUFDQSxTQUFVOUUsRUFBTSxTQUNoQixNQUFBaUUsQ0FBQSxDQUNELG82RkN0RlV3QyxHQUFhLENBQ3hCLEdBQUksS0FDSixHQUFJLEtBQ0osR0FBSSxLQUNKLEdBQUksSUFDTixFQUVhQyxHQUFRLENBQ25CLEdBQUksSUFDSixHQUFJLElBQ0osR0FBSSxLQUNKLEdBQUksSUFDTixFQ1BhQyxHQUFnQixNQUFPQyxHQUFzQixDQUl4RCxNQUFNQyxFQUFPLFNBQVMsS0FFdEIsR0FBSUQsR0FDRSxHQUFBLENBQUNDLEVBQUssUUFBUSxZQUFhLENBQzdCLE1BQU1DLEVBQVUsT0FBTyxRQUVsQkQsRUFBQSxRQUFRLFlBQWNDLEVBQVEsU0FBUyxFQUM1Q0QsRUFBSyxNQUFNLFlBQVksbUJBQW9CLEdBQUdDLENBQU8sSUFBSSxFQUNwREQsRUFBQSxNQUFNLFlBQVksUUFBUyxHQUFHLEVBQzlCQSxFQUFBLE1BQU0sWUFBWSxhQUFjLHdDQUF3QyxFQUN4RUEsRUFBQSxNQUFNLFlBQVksYUFBYyxRQUFRLEVBQ3hDQSxFQUFBLE1BQU0sWUFBWSxXQUFZLE9BQU8sQ0FJNUMsVUFFQSxNQUFNRSxFQUFTLFNBQUEsRUFDWCxDQUFDLFNBQVMsY0FBYyxjQUFjLEVBQUcsQ0FDM0MsTUFBTUMsRUFBZSxTQUFTSCxFQUFLLFFBQVEsYUFBZSxHQUFHLEVBS3hEQSxFQUFBLE1BQU0sZUFBZSxPQUFPLEVBQzVCQSxFQUFBLE1BQU0sZUFBZSxXQUFXLEVBQ2hDQSxFQUFBLE1BQU0sZUFBZSxXQUFXLEVBQ2hDQSxFQUFBLE1BQU0sZUFBZSxVQUFVLEVBQy9CQSxFQUFBLE1BQU0sZUFBZSxrQkFBa0IsRUFFNUMsT0FBTyxTQUFTLENBQ2QsU0FBVSxPQUNWLElBQUtHLENBQUEsQ0FDTixFQUVELE9BQU9ILEVBQUssUUFBUSxXQUN0QixDQUVKLEVBRWFJLEdBQWUsZUFFZkMsR0FBbUIsSUFBTSxDQUNoQyxJQUFBQyxFQUFXLFNBQVMsZUFBZUYsRUFBWSxFQUM5Q0UsSUFDUUEsRUFBQSxTQUFTLGNBQWMsS0FBSyxFQUN2Q0EsRUFBUyxHQUFLRixHQUNMLFNBQUEsS0FBSyxZQUFZRSxDQUFRLEdBRXBDQSxFQUFTLE1BQU0sVUFBWSxTQUM3Qiw0UUMzQlFDLEVBQWdEdEgsRUFBQUEsTUFDaER1SCxFQUFrRHZILEVBQUFBLE1BRWxEd0gsRUFBMEIsSUFBTSxRQUNwQ2hFLEVBQUErRCxFQUFZLFFBQVosTUFBQS9ELEVBQW1CLFdBQVUsRUFHekJpRSxFQUEyQixJQUFNLFFBQ3JDakUsRUFBQStELEVBQVksUUFBWixNQUFBL0QsRUFBbUIsT0FBTSxFQUdyQmtFLEVBQXFCLElBQU0sQ0FDL0JULEVBQUFBLFNBQVMsSUFBTSxDQUNSSyxFQUFhLFFBQ2xCQSxFQUFhLE1BQU0sVUFBWSxFQUFBLENBQ2hDLENBQUEsRUFHSHJILE9BQUFBLEVBQUEsTUFDRSxJQUFNQyxFQUFNLE9BQ1gyRCxHQUFhLENBQ1AwRCxFQUFZLFFBQ2IxRCxHQUNzQjJELElBQ0xFLEtBRU1ELElBRTNCWixHQUFjaEQsQ0FBUSxFQUN4QixDQUFBLEVBR0ZiLEVBQUFBLFVBQVUsSUFBTSxDQUNWOUMsRUFBTSxRQUNnQnNILEdBQzFCLENBQ0QsMDVFQ2pES0csRUFBYzNILEVBQUFBLElBQUlFLEVBQU0sV0FBVyxFQUVuQzBILEVBQW9CdkcsRUFBQUEsU0FBUyxJQUFNLElBQUksTUFBTW5CLEVBQU0sU0FBUyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksQ0FBQzJILEVBQU9yRyxJQUFVQSxFQUFRLENBQUMsQ0FBQyxFQUV2R0QsRUFBZUMsR0FBa0IsQ0FDckNtRyxFQUFZLE1BQVFuRyxFQUVmVixFQUFBLFNBQVUsTUFBT1UsQ0FBSyxDQUFBLHloQ0N2QnpCc0csR0FBUSxDQUFDLE1BQU8sUUFBUyxTQUFVLE1BQU0sRUFDekNDLEdBQWEsQ0FBQyxRQUFTLEtBQUssRUFDNUJDLEdBQTBCRixHQUFNLE9BQU8sQ0FBQ0csRUFBS0MsSUFBU0QsRUFBSSxPQUFPQyxFQUFNQSxFQUFPLElBQU1ILEdBQVcsQ0FBQyxFQUFHRyxFQUFPLElBQU1ILEdBQVcsQ0FBQyxDQUFDLEVBQUcsQ0FBQSxDQUFFLEVBQ2xJSSxHQUFNLEtBQUssSUFDWEMsRUFBTSxLQUFLLElBQ1hDLEdBQVEsS0FBSyxNQUNiQyxHQUFRLEtBQUssTUFDYkMsRUFBZUMsSUFBTSxDQUN6QixFQUFHQSxFQUNILEVBQUdBLENBQ0wsR0FDTUMsR0FBa0IsQ0FDdEIsS0FBTSxRQUNOLE1BQU8sT0FDUCxPQUFRLE1BQ1IsSUFBSyxRQUNQLEVBQ01DLEdBQXVCLENBQzNCLE1BQU8sTUFDUCxJQUFLLE9BQ1AsRUFDQSxTQUFTQyxHQUFNQyxFQUFPekUsRUFBTzBFLEVBQUssQ0FDaEMsT0FBT1QsRUFBSVEsRUFBT1QsR0FBSWhFLEVBQU8wRSxDQUFHLENBQUMsQ0FDbkMsQ0FDQSxTQUFTQyxHQUFTM0UsRUFBTzRFLEVBQU8sQ0FDOUIsT0FBTyxPQUFPNUUsR0FBVSxXQUFhQSxFQUFNNEUsQ0FBSyxFQUFJNUUsQ0FDdEQsQ0FDQSxTQUFTNkUsR0FBUUMsRUFBVyxDQUMxQixPQUFPQSxFQUFVLE1BQU0sR0FBRyxFQUFFLENBQUMsQ0FDL0IsQ0FDQSxTQUFTQyxFQUFhRCxFQUFXLENBQy9CLE9BQU9BLEVBQVUsTUFBTSxHQUFHLEVBQUUsQ0FBQyxDQUMvQixDQUNBLFNBQVNFLEdBQWdCQyxFQUFNLENBQzdCLE9BQU9BLElBQVMsSUFBTSxJQUFNLEdBQzlCLENBQ0EsU0FBU0MsR0FBY0QsRUFBTSxDQUMzQixPQUFPQSxJQUFTLElBQU0sU0FBVyxPQUNuQyxDQUNBLFNBQVNFLEdBQVlMLEVBQVcsQ0FDOUIsTUFBTyxDQUFDLE1BQU8sUUFBUSxFQUFFLFNBQVNELEdBQVFDLENBQVMsQ0FBQyxFQUFJLElBQU0sR0FDaEUsQ0FDQSxTQUFTTSxHQUFpQk4sRUFBVyxDQUNuQyxPQUFPRSxHQUFnQkcsR0FBWUwsQ0FBUyxDQUFDLENBQy9DLENBQ0EsU0FBU08sR0FBa0JQLEVBQVdRLEVBQU9DLEVBQUssQ0FDNUNBLElBQVEsU0FDVkEsRUFBTSxJQUVSLE1BQU1DLEVBQVlULEVBQWFELENBQVMsRUFDbENXLEVBQWdCTCxHQUFpQk4sQ0FBUyxFQUMxQ1ksRUFBU1IsR0FBY08sQ0FBYSxFQUMxQyxJQUFJRSxFQUFvQkYsSUFBa0IsSUFBTUQsS0FBZUQsRUFBTSxNQUFRLFNBQVcsUUFBVSxPQUFTQyxJQUFjLFFBQVUsU0FBVyxNQUM5SSxPQUFJRixFQUFNLFVBQVVJLENBQU0sRUFBSUosRUFBTSxTQUFTSSxDQUFNLElBQ2pEQyxFQUFvQkMsR0FBcUJELENBQWlCLEdBRXJELENBQUNBLEVBQW1CQyxHQUFxQkQsQ0FBaUIsQ0FBQyxDQUNwRSxDQUtBLFNBQVNFLEdBQThCZixFQUFXLENBQ2hELE9BQU9BLEVBQVUsUUFBUSxhQUFjVSxHQUFhakIsR0FBcUJpQixDQUFTLENBQUMsQ0FDckYsQ0E2QkEsU0FBU0ksR0FBcUJkLEVBQVcsQ0FDdkMsT0FBT0EsRUFBVSxRQUFRLHlCQUEwQmYsR0FBUU8sR0FBZ0JQLENBQUksQ0FBQyxDQUNsRixDQUNBLFNBQVMrQixHQUFvQkMsRUFBUyxDQUNwQyxNQUFPLENBQ0wsSUFBSyxFQUNMLE1BQU8sRUFDUCxPQUFRLEVBQ1IsS0FBTSxFQUNOLEdBQUdBLENBQ1AsQ0FDQSxDQUNBLFNBQVNDLEdBQWlCRCxFQUFTLENBQ2pDLE9BQU8sT0FBT0EsR0FBWSxTQUFXRCxHQUFvQkMsQ0FBTyxFQUFJLENBQ2xFLElBQUtBLEVBQ0wsTUFBT0EsRUFDUCxPQUFRQSxFQUNSLEtBQU1BLENBQ1YsQ0FDQSxDQUNBLFNBQVNFLEdBQWlCQyxFQUFNLENBQzlCLEtBQU0sQ0FDSixFQUFBQyxFQUNBLEVBQUFDLEVBQ0EsTUFBQUMsRUFDQSxPQUFBQyxDQUNELEVBQUdKLEVBQ0osTUFBTyxDQUNMLE1BQUFHLEVBQ0EsT0FBQUMsRUFDQSxJQUFLRixFQUNMLEtBQU1ELEVBQ04sTUFBT0EsRUFBSUUsRUFDWCxPQUFRRCxFQUFJRSxFQUNaLEVBQUFILEVBQ0EsRUFBQUMsQ0FDSixDQUNBLENDcElBLFNBQVNHLEdBQTJCQyxFQUFNMUIsRUFBV1MsRUFBSyxDQUN4RCxHQUFJLENBQ0YsVUFBQWtCLEVBQ0EsU0FBQUMsQ0FDRCxFQUFHRixFQUNKLE1BQU1HLEVBQVd4QixHQUFZTCxDQUFTLEVBQ2hDVyxFQUFnQkwsR0FBaUJOLENBQVMsRUFDMUM4QixFQUFjMUIsR0FBY08sQ0FBYSxFQUN6QzFCLEVBQU9jLEdBQVFDLENBQVMsRUFDeEIrQixFQUFhRixJQUFhLElBQzFCRyxFQUFVTCxFQUFVLEVBQUlBLEVBQVUsTUFBUSxFQUFJQyxFQUFTLE1BQVEsRUFDL0RLLEVBQVVOLEVBQVUsRUFBSUEsRUFBVSxPQUFTLEVBQUlDLEVBQVMsT0FBUyxFQUNqRU0sRUFBY1AsRUFBVUcsQ0FBVyxFQUFJLEVBQUlGLEVBQVNFLENBQVcsRUFBSSxFQUN6RSxJQUFJSyxFQUNKLE9BQVFsRCxFQUFJLENBQ1YsSUFBSyxNQUNIa0QsRUFBUyxDQUNQLEVBQUdILEVBQ0gsRUFBR0wsRUFBVSxFQUFJQyxFQUFTLE1BQ2xDLEVBQ00sTUFDRixJQUFLLFNBQ0hPLEVBQVMsQ0FDUCxFQUFHSCxFQUNILEVBQUdMLEVBQVUsRUFBSUEsRUFBVSxNQUNuQyxFQUNNLE1BQ0YsSUFBSyxRQUNIUSxFQUFTLENBQ1AsRUFBR1IsRUFBVSxFQUFJQSxFQUFVLE1BQzNCLEVBQUdNLENBQ1gsRUFDTSxNQUNGLElBQUssT0FDSEUsRUFBUyxDQUNQLEVBQUdSLEVBQVUsRUFBSUMsRUFBUyxNQUMxQixFQUFHSyxDQUNYLEVBQ00sTUFDRixRQUNFRSxFQUFTLENBQ1AsRUFBR1IsRUFBVSxFQUNiLEVBQUdBLEVBQVUsQ0FDckIsQ0FDRyxDQUNELE9BQVExQixFQUFhRCxDQUFTLEVBQUMsQ0FDN0IsSUFBSyxRQUNIbUMsRUFBT3hCLENBQWEsR0FBS3VCLEdBQWV6QixHQUFPc0IsRUFBYSxHQUFLLEdBQ2pFLE1BQ0YsSUFBSyxNQUNISSxFQUFPeEIsQ0FBYSxHQUFLdUIsR0FBZXpCLEdBQU9zQixFQUFhLEdBQUssR0FDakUsS0FDSCxDQUNELE9BQU9JLENBQ1QsQ0FTQSxNQUFNQyxHQUFrQixNQUFPVCxFQUFXQyxFQUFVUyxJQUFXLENBQzdELEtBQU0sQ0FDSixVQUFBckMsRUFBWSxTQUNaLFNBQUFzQyxFQUFXLFdBQ1gsV0FBQUMsRUFBYSxDQUFFLEVBQ2YsU0FBQUMsQ0FDRCxFQUFHSCxFQUNFSSxFQUFrQkYsRUFBVyxPQUFPLE9BQU8sRUFDM0M5QixFQUFNLE1BQU8rQixFQUFTLE9BQVMsS0FBTyxPQUFTQSxFQUFTLE1BQU1aLENBQVEsR0FDNUUsSUFBSXBCLEVBQVEsTUFBTWdDLEVBQVMsZ0JBQWdCLENBQ3pDLFVBQUFiLEVBQ0EsU0FBQUMsRUFDQSxTQUFBVSxDQUNKLENBQUcsRUFDRyxDQUNGLEVBQUFqQixFQUNBLEVBQUFDLENBQ0QsRUFBR0csR0FBMkJqQixFQUFPUixFQUFXUyxDQUFHLEVBQ2hEaUMsRUFBb0IxQyxFQUNwQjJDLEVBQWlCLENBQUEsRUFDakJDLEVBQWEsRUFDakIsUUFBU0MsRUFBSSxFQUFHQSxFQUFJSixFQUFnQixPQUFRSSxJQUFLLENBQy9DLEtBQU0sQ0FDSixLQUFBMUwsRUFDQSxHQUFBMkwsQ0FDTixFQUFRTCxFQUFnQkksQ0FBQyxFQUNmLENBQ0osRUFBR0UsRUFDSCxFQUFHQyxFQUNILEtBQUFDLEVBQ0EsTUFBQUMsQ0FDRCxFQUFHLE1BQU1KLEVBQUcsQ0FDWCxFQUFBekIsRUFDQSxFQUFBQyxFQUNBLGlCQUFrQnRCLEVBQ2xCLFVBQVcwQyxFQUNYLFNBQUFKLEVBQ0EsZUFBQUssRUFDQSxNQUFBbkMsRUFDQSxTQUFBZ0MsRUFDQSxTQUFVLENBQ1IsVUFBQWIsRUFDQSxTQUFBQyxDQUNELENBQ1AsQ0FBSyxFQUNEUCxFQUFJMEIsR0FBd0IxQixFQUM1QkMsRUFBSTBCLEdBQXdCMUIsRUFDNUJxQixFQUFpQixDQUNmLEdBQUdBLEVBQ0gsQ0FBQ3hMLENBQUksRUFBRyxDQUNOLEdBQUd3TCxFQUFleEwsQ0FBSSxFQUN0QixHQUFHOEwsQ0FDSixDQUNQLEVBQ1FDLEdBQVNOLEdBQWMsS0FDekJBLElBQ0ksT0FBT00sR0FBVSxXQUNmQSxFQUFNLFlBQ1JSLEVBQW9CUSxFQUFNLFdBRXhCQSxFQUFNLFFBQ1IxQyxFQUFRMEMsRUFBTSxRQUFVLEdBQU8sTUFBTVYsRUFBUyxnQkFBZ0IsQ0FDNUQsVUFBQWIsRUFDQSxTQUFBQyxFQUNBLFNBQUFVLENBQ1osQ0FBVyxFQUFJWSxFQUFNLE9BRVosQ0FDQyxFQUFBN0IsRUFDQSxFQUFBQyxDQUNELEVBQUdHLEdBQTJCakIsRUFBT2tDLEVBQW1CakMsQ0FBRyxHQUU5RG9DLEVBQUksR0FFUCxDQUNELE1BQU8sQ0FDTCxFQUFBeEIsRUFDQSxFQUFBQyxFQUNBLFVBQVdvQixFQUNYLFNBQUFKLEVBQ0EsZUFBQUssQ0FDSixDQUNBLEVBVUEsZUFBZVEsR0FBZUMsRUFBT0MsRUFBUyxDQUM1QyxJQUFJQyxFQUNBRCxJQUFZLFNBQ2RBLEVBQVUsQ0FBQSxHQUVaLEtBQU0sQ0FDSixFQUFBaEMsRUFDQSxFQUFBQyxFQUNBLFNBQUFrQixFQUNBLE1BQUFoQyxFQUNBLFNBQUErQyxFQUNBLFNBQUFqQixDQUNELEVBQUdjLEVBQ0UsQ0FDSixTQUFBSSxFQUFXLG9CQUNYLGFBQUFDLEVBQWUsV0FDZixlQUFBQyxFQUFpQixXQUNqQixZQUFBQyxFQUFjLEdBQ2QsUUFBQTFDLEVBQVUsQ0FDZCxFQUFNcEIsR0FBU3dELEVBQVNELENBQUssRUFDckJRLEVBQWdCMUMsR0FBaUJELENBQU8sRUFFeEM0QyxFQUFVTixFQUFTSSxFQURORCxJQUFtQixXQUFhLFlBQWMsV0FDYkEsQ0FBYyxFQUM1REksRUFBcUIzQyxHQUFpQixNQUFNcUIsRUFBUyxnQkFBZ0IsQ0FDekUsU0FBV2MsRUFBd0IsTUFBT2QsRUFBUyxXQUFhLEtBQU8sT0FBU0EsRUFBUyxVQUFVcUIsQ0FBTyxLQUFPLE1BQU9QLEVBQWdDTyxFQUFVQSxFQUFRLGdCQUFtQixNQUFPckIsRUFBUyxvQkFBc0IsS0FBTyxPQUFTQSxFQUFTLG1CQUFtQmUsRUFBUyxRQUFRLEdBQ2hTLFNBQUFDLEVBQ0EsYUFBQUMsRUFDQSxTQUFBbkIsQ0FDRCxDQUFBLENBQUMsRUFDSWxCLEVBQU9zQyxJQUFtQixXQUFhLENBQzNDLEVBQUFyQyxFQUNBLEVBQUFDLEVBQ0EsTUFBT2QsRUFBTSxTQUFTLE1BQ3RCLE9BQVFBLEVBQU0sU0FBUyxNQUMzQixFQUFNQSxFQUFNLFVBQ0p1RCxFQUFlLE1BQU92QixFQUFTLGlCQUFtQixLQUFPLE9BQVNBLEVBQVMsZ0JBQWdCZSxFQUFTLFFBQVEsR0FDNUdTLEVBQWUsTUFBT3hCLEVBQVMsV0FBYSxLQUFPLE9BQVNBLEVBQVMsVUFBVXVCLENBQVksR0FBTyxNQUFPdkIsRUFBUyxVQUFZLEtBQU8sT0FBU0EsRUFBUyxTQUFTdUIsQ0FBWSxJQUFPLENBQ3ZMLEVBQUcsRUFDSCxFQUFHLENBQ1AsRUFBTSxDQUNGLEVBQUcsRUFDSCxFQUFHLENBQ1AsRUFDUUUsRUFBb0I5QyxHQUFpQnFCLEVBQVMsc0RBQXdELE1BQU1BLEVBQVMsc0RBQXNELENBQy9LLFNBQUFlLEVBQ0EsS0FBQW5DLEVBQ0EsYUFBQTJDLEVBQ0EsU0FBQXpCLENBQ0osQ0FBRyxFQUFJbEIsQ0FBSSxFQUNULE1BQU8sQ0FDTCxLQUFNMEMsRUFBbUIsSUFBTUcsRUFBa0IsSUFBTUwsRUFBYyxLQUFPSSxFQUFZLEVBQ3hGLFFBQVNDLEVBQWtCLE9BQVNILEVBQW1CLE9BQVNGLEVBQWMsUUFBVUksRUFBWSxFQUNwRyxNQUFPRixFQUFtQixLQUFPRyxFQUFrQixLQUFPTCxFQUFjLE1BQVFJLEVBQVksRUFDNUYsT0FBUUMsRUFBa0IsTUFBUUgsRUFBbUIsTUFBUUYsRUFBYyxPQUFTSSxFQUFZLENBQ3BHLENBQ0EsQ0FvRkEsU0FBU0UsR0FBaUJ4RCxFQUFXeUQsRUFBZUMsRUFBbUIsQ0FFckUsT0FEMkMxRCxFQUFZLENBQUMsR0FBRzBELEVBQWtCLE9BQU9wRSxHQUFhQyxFQUFhRCxDQUFTLElBQU1VLENBQVMsRUFBRyxHQUFHMEQsRUFBa0IsT0FBT3BFLEdBQWFDLEVBQWFELENBQVMsSUFBTVUsQ0FBUyxDQUFDLEVBQUkwRCxFQUFrQixPQUFPcEUsR0FBYUQsR0FBUUMsQ0FBUyxJQUFNQSxDQUFTLEdBQ3hQLE9BQU9BLEdBQzNDVSxFQUNLVCxFQUFhRCxDQUFTLElBQU1VLElBQWN5RCxFQUFnQnBELEdBQThCZixDQUFTLElBQU1BLEVBQVksSUFFckgsRUFDUixDQUNILENBT0EsTUFBTXFFLEdBQWdCLFNBQVVoQixFQUFTLENBQ3ZDLE9BQUlBLElBQVksU0FDZEEsRUFBVSxDQUFBLEdBRUwsQ0FDTCxLQUFNLGdCQUNOLFFBQUFBLEVBQ0EsTUFBTSxHQUFHRCxFQUFPLENBQ2QsSUFBSWtCLEVBQXVCQyxFQUF3QkMsRUFDbkQsS0FBTSxDQUNKLE1BQUFoRSxFQUNBLGVBQUFtQyxFQUNBLFVBQUEzQyxFQUNBLFNBQUF3QyxFQUNBLFNBQUFlLENBQ0QsRUFBR0gsRUFDRSxDQUNKLFVBQUFxQixFQUFZLEdBQ1osVUFBQS9ELEVBQ0Esa0JBQUEwRCxFQUFvQnJGLEdBQ3BCLGNBQUFvRixFQUFnQixHQUNoQixHQUFHTyxDQUNYLEVBQVU3RSxHQUFTd0QsRUFBU0QsQ0FBSyxFQUNyQnVCLEVBQWVqRSxJQUFjLFFBQWEwRCxJQUFzQnJGLEdBQWFtRixHQUFpQnhELEdBQWEsS0FBTXlELEVBQWVDLENBQWlCLEVBQUlBLEVBQ3JKUSxFQUFXLE1BQU16QixHQUFlQyxFQUFPc0IsQ0FBcUIsRUFDNURHLElBQWlCUCxFQUF3QjNCLEVBQWUsZ0JBQWtCLEtBQU8sT0FBUzJCLEVBQXNCLFFBQVUsRUFDMUhRLEVBQW1CSCxFQUFhRSxDQUFZLEVBQ2xELEdBQUlDLEdBQW9CLEtBQ3RCLE1BQU8sR0FFVCxNQUFNQyxFQUFpQnhFLEdBQWtCdUUsRUFBa0J0RSxFQUFPLE1BQU9nQyxFQUFTLE9BQVMsS0FBTyxPQUFTQSxFQUFTLE1BQU1lLEVBQVMsUUFBUSxFQUFFLEVBRzdJLEdBQUl2RCxJQUFjOEUsRUFDaEIsTUFBTyxDQUNMLE1BQU8sQ0FDTCxVQUFXSCxFQUFhLENBQUMsQ0FDMUIsQ0FDWCxFQUVNLE1BQU1LLEVBQW1CLENBQUNKLEVBQVM3RSxHQUFRK0UsQ0FBZ0IsQ0FBQyxFQUFHRixFQUFTRyxFQUFlLENBQUMsQ0FBQyxFQUFHSCxFQUFTRyxFQUFlLENBQUMsQ0FBQyxDQUFDLEVBQ2pIRSxFQUFlLENBQUMsS0FBTVYsRUFBeUI1QixFQUFlLGdCQUFrQixLQUFPLE9BQVM0QixFQUF1QixZQUFjLENBQUUsRUFBRyxDQUM5SSxVQUFXTyxFQUNYLFVBQVdFLENBQ25CLENBQU8sRUFDS0UsRUFBZ0JQLEVBQWFFLEVBQWUsQ0FBQyxFQUduRCxHQUFJSyxFQUNGLE1BQU8sQ0FDTCxLQUFNLENBQ0osTUFBT0wsRUFBZSxFQUN0QixVQUFXSSxDQUNaLEVBQ0QsTUFBTyxDQUNMLFVBQVdDLENBQ1osQ0FDWCxFQUVNLE1BQU1DLEVBQThCRixFQUFhLElBQUlHLEdBQUssQ0FDeEQsTUFBTTFFLEdBQVlULEVBQWFtRixFQUFFLFNBQVMsRUFDMUMsTUFBTyxDQUFDQSxFQUFFLFVBQVcxRSxJQUFhK0QsRUFFbENXLEVBQUUsVUFBVSxNQUFNLEVBQUcsQ0FBQyxFQUFFLE9BQU8sQ0FBQ3BHLEdBQUtPLEtBQU1QLEdBQU1PLEdBQUcsQ0FBQyxFQUVyRDZGLEVBQUUsVUFBVSxDQUFDLEVBQUdBLEVBQUUsU0FBUyxDQUNuQyxDQUFPLEVBQUUsS0FBSyxDQUFDQyxFQUFHQyxLQUFNRCxFQUFFLENBQUMsRUFBSUMsR0FBRSxDQUFDLENBQUMsRUFLdkJDLEtBQW1CZixFQUpXVyxFQUE0QixPQUFPQyxHQUFLQSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBR3ZGbkYsRUFBYW1GLEVBQUUsQ0FBQyxDQUFDLEVBQUksRUFBSSxDQUFDLEVBQUUsTUFBTTdGLElBQUtBLElBQUssQ0FBQyxDQUFDLEVBQytCLENBQUMsSUFBTSxLQUFPLE9BQVNpRixFQUFzQixDQUFDLElBQU1XLEVBQTRCLENBQUMsRUFBRSxDQUFDLEVBQ2pLLE9BQUlJLEtBQW1CdkYsRUFDZCxDQUNMLEtBQU0sQ0FDSixNQUFPNkUsRUFBZSxFQUN0QixVQUFXSSxDQUNaLEVBQ0QsTUFBTyxDQUNMLFVBQVdNLEVBQ1osQ0FDWCxFQUVhLEVBQ1IsQ0FDTCxDQUNBLEVBMlVBLGVBQWVDLEdBQXFCcEMsRUFBT0MsRUFBUyxDQUNsRCxLQUFNLENBQ0osVUFBQXJELEVBQ0EsU0FBQXdDLEVBQ0EsU0FBQWUsQ0FDRCxFQUFHSCxFQUNFM0MsRUFBTSxNQUFPK0IsRUFBUyxPQUFTLEtBQU8sT0FBU0EsRUFBUyxNQUFNZSxFQUFTLFFBQVEsR0FDL0V0RSxFQUFPYyxHQUFRQyxDQUFTLEVBQ3hCVSxFQUFZVCxFQUFhRCxDQUFTLEVBQ2xDK0IsRUFBYTFCLEdBQVlMLENBQVMsSUFBTSxJQUN4Q3lGLEVBQWdCLENBQUMsT0FBUSxLQUFLLEVBQUUsU0FBU3hHLENBQUksRUFBSSxHQUFLLEVBQ3REeUcsRUFBaUJqRixHQUFPc0IsRUFBYSxHQUFLLEVBQzFDNEQsRUFBVzlGLEdBQVN3RCxFQUFTRCxDQUFLLEVBR3hDLEdBQUksQ0FDRixTQUFBd0MsRUFDQSxVQUFBbkIsRUFDQSxjQUFBOUQsQ0FDSixFQUFNLE9BQU9nRixHQUFhLFNBQVcsQ0FDakMsU0FBVUEsRUFDVixVQUFXLEVBQ1gsY0FBZSxJQUNuQixFQUFNLENBQ0YsU0FBVUEsRUFBUyxVQUFZLEVBQy9CLFVBQVdBLEVBQVMsV0FBYSxFQUNqQyxjQUFlQSxFQUFTLGFBQzVCLEVBQ0UsT0FBSWpGLEdBQWEsT0FBT0MsR0FBa0IsV0FDeEM4RCxFQUFZL0QsSUFBYyxNQUFRQyxFQUFnQixHQUFLQSxHQUVsRG9CLEVBQWEsQ0FDbEIsRUFBRzBDLEVBQVlpQixFQUNmLEVBQUdFLEVBQVdILENBQ2xCLEVBQU0sQ0FDRixFQUFHRyxFQUFXSCxFQUNkLEVBQUdoQixFQUFZaUIsQ0FDbkIsQ0FDQSxDQVNBLE1BQU1HLEdBQVMsU0FBVXhDLEVBQVMsQ0FDaEMsT0FBSUEsSUFBWSxTQUNkQSxFQUFVLEdBRUwsQ0FDTCxLQUFNLFNBQ04sUUFBQUEsRUFDQSxNQUFNLEdBQUdELEVBQU8sQ0FDZCxJQUFJMEMsRUFBdUJDLEVBQzNCLEtBQU0sQ0FDSixFQUFBMUUsRUFDQSxFQUFBQyxFQUNBLFVBQUF0QixFQUNBLGVBQUEyQyxDQUNELEVBQUdTLEVBQ0U0QyxFQUFhLE1BQU1SLEdBQXFCcEMsRUFBT0MsQ0FBTyxFQUk1RCxPQUFJckQsTUFBZ0I4RixFQUF3Qm5ELEVBQWUsU0FBVyxLQUFPLE9BQVNtRCxFQUFzQixhQUFlQyxFQUF3QnBELEVBQWUsUUFBVSxNQUFRb0QsRUFBc0IsZ0JBQ2pNLEdBRUYsQ0FDTCxFQUFHMUUsRUFBSTJFLEVBQVcsRUFDbEIsRUFBRzFFLEVBQUkwRSxFQUFXLEVBQ2xCLEtBQU0sQ0FDSixHQUFHQSxFQUNILFVBQUFoRyxDQUNELENBQ1QsQ0FDSyxDQUNMLENBQ0EsRUFPTWlHLEdBQVEsU0FBVTVDLEVBQVMsQ0FDL0IsT0FBSUEsSUFBWSxTQUNkQSxFQUFVLENBQUEsR0FFTCxDQUNMLEtBQU0sUUFDTixRQUFBQSxFQUNBLE1BQU0sR0FBR0QsRUFBTyxDQUNkLEtBQU0sQ0FDSixFQUFBL0IsRUFDQSxFQUFBQyxFQUNBLFVBQUF0QixDQUNELEVBQUdvRCxFQUNFLENBQ0osU0FBVThDLEVBQWdCLEdBQzFCLFVBQVdDLEVBQWlCLEdBQzVCLFFBQUFDLEVBQVUsQ0FDUixHQUFJMUUsR0FBUSxDQUNWLEdBQUksQ0FDRixFQUFBTCxFQUNBLEVBQUFDLENBQ0QsRUFBR0ksRUFDSixNQUFPLENBQ0wsRUFBQUwsRUFDQSxFQUFBQyxDQUNkLENBQ1csQ0FDRixFQUNELEdBQUdvRCxDQUNYLEVBQVU3RSxHQUFTd0QsRUFBU0QsQ0FBSyxFQUNyQmpCLEVBQVMsQ0FDYixFQUFBZCxFQUNBLEVBQUFDLENBQ1IsRUFDWXNELEVBQVcsTUFBTXpCLEdBQWVDLEVBQU9zQixDQUFxQixFQUM1REQsRUFBWXBFLEdBQVlOLEdBQVFDLENBQVMsQ0FBQyxFQUMxQzRGLEVBQVcxRixHQUFnQnVFLENBQVMsRUFDMUMsSUFBSTRCLEVBQWdCbEUsRUFBT3lELENBQVEsRUFDL0JVLEVBQWlCbkUsRUFBT3NDLENBQVMsRUFDckMsR0FBSXlCLEVBQWUsQ0FDakIsTUFBTUssRUFBVVgsSUFBYSxJQUFNLE1BQVEsT0FDckNZLEVBQVVaLElBQWEsSUFBTSxTQUFXLFFBQ3hDMUcsRUFBTW1ILEVBQWdCekIsRUFBUzJCLENBQU8sRUFDdENwSCxFQUFNa0gsRUFBZ0J6QixFQUFTNEIsQ0FBTyxFQUM1Q0gsRUFBZ0IzRyxHQUFNUixFQUFLbUgsRUFBZWxILENBQUcsQ0FDOUMsQ0FDRCxHQUFJZ0gsRUFBZ0IsQ0FDbEIsTUFBTUksRUFBVTlCLElBQWMsSUFBTSxNQUFRLE9BQ3RDK0IsRUFBVS9CLElBQWMsSUFBTSxTQUFXLFFBQ3pDdkYsRUFBTW9ILEVBQWlCMUIsRUFBUzJCLENBQU8sRUFDdkNwSCxFQUFNbUgsRUFBaUIxQixFQUFTNEIsQ0FBTyxFQUM3Q0YsRUFBaUI1RyxHQUFNUixFQUFLb0gsRUFBZ0JuSCxDQUFHLENBQ2hELENBQ0QsTUFBTXNILEVBQWdCTCxFQUFRLEdBQUcsQ0FDL0IsR0FBR2hELEVBQ0gsQ0FBQ3dDLENBQVEsRUFBR1MsRUFDWixDQUFDNUIsQ0FBUyxFQUFHNkIsQ0FDckIsQ0FBTyxFQUNELE1BQU8sQ0FDTCxHQUFHRyxFQUNILEtBQU0sQ0FDSixFQUFHQSxFQUFjLEVBQUlwRixFQUNyQixFQUFHb0YsRUFBYyxFQUFJbkYsRUFDckIsUUFBUyxDQUNQLENBQUNzRSxDQUFRLEVBQUdNLEVBQ1osQ0FBQ3pCLENBQVMsRUFBRzBCLENBQ2QsQ0FDRixDQUNULENBQ0ssQ0FDTCxDQUNBLEVDdDNCQSxTQUFTTyxJQUFZLENBQ25CLE9BQU8sT0FBTyxPQUFXLEdBQzNCLENBQ0EsU0FBU0MsRUFBWUMsRUFBTSxDQUN6QixPQUFJQyxHQUFPRCxDQUFJLEdBQ0xBLEVBQUssVUFBWSxJQUFJLFlBQVcsRUFLbkMsV0FDVCxDQUNBLFNBQVNFLEVBQVVGLEVBQU0sQ0FDdkIsSUFBSUcsRUFDSixPQUFRSCxHQUFRLE9BQVNHLEVBQXNCSCxFQUFLLGdCQUFrQixLQUFPLE9BQVNHLEVBQW9CLGNBQWdCLE1BQzVILENBQ0EsU0FBU0MsRUFBbUJKLEVBQU0sQ0FDaEMsSUFBSWxGLEVBQ0osT0FBUUEsR0FBUW1GLEdBQU9ELENBQUksRUFBSUEsRUFBSyxjQUFnQkEsRUFBSyxXQUFhLE9BQU8sV0FBYSxLQUFPLE9BQVNsRixFQUFLLGVBQ2pILENBQ0EsU0FBU21GLEdBQU8zTCxFQUFPLENBQ3JCLE9BQUt3TCxHQUFTLEVBR1B4TCxhQUFpQixNQUFRQSxhQUFpQjRMLEVBQVU1TCxDQUFLLEVBQUUsS0FGekQsRUFHWCxDQUNBLFNBQVMrTCxFQUFVL0wsRUFBTyxDQUN4QixPQUFLd0wsR0FBUyxFQUdQeEwsYUFBaUIsU0FBV0EsYUFBaUI0TCxFQUFVNUwsQ0FBSyxFQUFFLFFBRjVELEVBR1gsQ0FDQSxTQUFTZ00sRUFBY2hNLEVBQU8sQ0FDNUIsT0FBS3dMLEdBQVMsRUFHUHhMLGFBQWlCLGFBQWVBLGFBQWlCNEwsRUFBVTVMLENBQUssRUFBRSxZQUZoRSxFQUdYLENBQ0EsU0FBU2lNLEdBQWFqTSxFQUFPLENBQzNCLE1BQUksQ0FBQ3dMLEdBQVMsR0FBTSxPQUFPLFdBQWUsSUFDakMsR0FFRnhMLGFBQWlCLFlBQWNBLGFBQWlCNEwsRUFBVTVMLENBQUssRUFBRSxVQUMxRSxDQUNBLFNBQVNrTSxHQUFrQnZELEVBQVMsQ0FDbEMsS0FBTSxDQUNKLFNBQUFlLEVBQ0EsVUFBQXlDLEVBQ0EsVUFBQUMsRUFDQSxRQUFBQyxDQUNKLEVBQU1DLEVBQWlCM0QsQ0FBTyxFQUM1QixNQUFPLGtDQUFrQyxLQUFLZSxFQUFXMEMsRUFBWUQsQ0FBUyxHQUFLLENBQUMsQ0FBQyxTQUFVLFVBQVUsRUFBRSxTQUFTRSxDQUFPLENBQzdILENBQ0EsU0FBU0UsR0FBZTVELEVBQVMsQ0FDL0IsTUFBTyxDQUFDLFFBQVMsS0FBTSxJQUFJLEVBQUUsU0FBUzhDLEVBQVk5QyxDQUFPLENBQUMsQ0FDNUQsQ0FDQSxTQUFTNkQsR0FBVzdELEVBQVMsQ0FDM0IsTUFBTyxDQUFDLGdCQUFpQixRQUFRLEVBQUUsS0FBSzhELEdBQVksQ0FDbEQsR0FBSSxDQUNGLE9BQU85RCxFQUFRLFFBQVE4RCxDQUFRLENBQ2hDLE1BQVcsQ0FDVixNQUFPLEVBQ1IsQ0FDTCxDQUFHLENBQ0gsQ0FDQSxTQUFTQyxHQUFrQkMsRUFBYyxDQUN2QyxNQUFNQyxFQUFTQyxLQUNUQyxFQUFNZixFQUFVWSxDQUFZLEVBQUlMLEVBQWlCSyxDQUFZLEVBQUlBLEVBSXZFLE1BQU8sQ0FBQyxZQUFhLFlBQWEsUUFBUyxTQUFVLGFBQWEsRUFBRSxLQUFLM00sR0FBUzhNLEVBQUk5TSxDQUFLLEVBQUk4TSxFQUFJOU0sQ0FBSyxJQUFNLE9BQVMsRUFBSyxJQUFNOE0sRUFBSSxjQUFnQkEsRUFBSSxnQkFBa0IsU0FBVyxLQUFVLENBQUNGLElBQVdFLEVBQUksZUFBaUJBLEVBQUksaUJBQW1CLE9BQVMsS0FBVSxDQUFDRixJQUFXRSxFQUFJLE9BQVNBLEVBQUksU0FBVyxPQUFTLEtBQVUsQ0FBQyxZQUFhLFlBQWEsUUFBUyxTQUFVLGNBQWUsUUFBUSxFQUFFLEtBQUs5TSxJQUFVOE0sRUFBSSxZQUFjLElBQUksU0FBUzlNLENBQUssQ0FBQyxHQUFLLENBQUMsUUFBUyxTQUFVLFNBQVUsU0FBUyxFQUFFLEtBQUtBLElBQVU4TSxFQUFJLFNBQVcsSUFBSSxTQUFTOU0sQ0FBSyxDQUFDLENBQ25pQixDQUNBLFNBQVMrTSxHQUFtQnBFLEVBQVMsQ0FDbkMsSUFBSXFFLEVBQWNDLEVBQWN0RSxDQUFPLEVBQ3ZDLEtBQU9xRCxFQUFjZ0IsQ0FBVyxHQUFLLENBQUNFLEVBQXNCRixDQUFXLEdBQUcsQ0FDeEUsR0FBSU4sR0FBa0JNLENBQVcsRUFDL0IsT0FBT0EsRUFDRixHQUFJUixHQUFXUSxDQUFXLEVBQy9CLE9BQU8sS0FFVEEsRUFBY0MsRUFBY0QsQ0FBVyxDQUN4QyxDQUNELE9BQU8sSUFDVCxDQUNBLFNBQVNILElBQVcsQ0FDbEIsT0FBSSxPQUFPLElBQVEsS0FBZSxDQUFDLElBQUksU0FBaUIsR0FDakQsSUFBSSxTQUFTLDBCQUEyQixNQUFNLENBQ3ZELENBQ0EsU0FBU0ssRUFBc0J4QixFQUFNLENBQ25DLE1BQU8sQ0FBQyxPQUFRLE9BQVEsV0FBVyxFQUFFLFNBQVNELEVBQVlDLENBQUksQ0FBQyxDQUNqRSxDQUNBLFNBQVNZLEVBQWlCM0QsRUFBUyxDQUNqQyxPQUFPaUQsRUFBVWpELENBQU8sRUFBRSxpQkFBaUJBLENBQU8sQ0FDcEQsQ0FDQSxTQUFTd0UsR0FBY3hFLEVBQVMsQ0FDOUIsT0FBSW9ELEVBQVVwRCxDQUFPLEVBQ1osQ0FDTCxXQUFZQSxFQUFRLFdBQ3BCLFVBQVdBLEVBQVEsU0FDekIsRUFFUyxDQUNMLFdBQVlBLEVBQVEsUUFDcEIsVUFBV0EsRUFBUSxPQUN2QixDQUNBLENBQ0EsU0FBU3NFLEVBQWN2QixFQUFNLENBQzNCLEdBQUlELEVBQVlDLENBQUksSUFBTSxPQUN4QixPQUFPQSxFQUVULE1BQU16TCxFQUVOeUwsRUFBSyxjQUVMQSxFQUFLLFlBRUxPLEdBQWFQLENBQUksR0FBS0EsRUFBSyxNQUUzQkksRUFBbUJKLENBQUksRUFDdkIsT0FBT08sR0FBYWhNLENBQU0sRUFBSUEsRUFBTyxLQUFPQSxDQUM5QyxDQUNBLFNBQVNtTixHQUEyQjFCLEVBQU0sQ0FDeEMsTUFBTTJCLEVBQWFKLEVBQWN2QixDQUFJLEVBQ3JDLE9BQUl3QixFQUFzQkcsQ0FBVSxFQUMzQjNCLEVBQUssY0FBZ0JBLEVBQUssY0FBYyxLQUFPQSxFQUFLLEtBRXpETSxFQUFjcUIsQ0FBVSxHQUFLbkIsR0FBa0JtQixDQUFVLEVBQ3BEQSxFQUVGRCxHQUEyQkMsQ0FBVSxDQUM5QyxDQUNBLFNBQVNDLEdBQXFCNUIsRUFBTTZCLEVBQU1DLEVBQWlCLENBQ3pELElBQUlDLEVBQ0FGLElBQVMsU0FDWEEsRUFBTyxDQUFBLEdBRUxDLElBQW9CLFNBQ3RCQSxFQUFrQixJQUVwQixNQUFNRSxFQUFxQk4sR0FBMkIxQixDQUFJLEVBQ3BEaUMsRUFBU0QsTUFBeUJELEVBQXVCL0IsRUFBSyxnQkFBa0IsS0FBTyxPQUFTK0IsRUFBcUIsTUFDckhHLEVBQU1oQyxFQUFVOEIsQ0FBa0IsRUFDeEMsR0FBSUMsRUFBUSxDQUNWLE1BQU1FLEVBQWVDLEdBQWdCRixDQUFHLEVBQ3hDLE9BQU9MLEVBQUssT0FBT0ssRUFBS0EsRUFBSSxnQkFBa0IsQ0FBRSxFQUFFMUIsR0FBa0J3QixDQUFrQixFQUFJQSxFQUFxQixDQUFFLEVBQUVHLEdBQWdCTCxFQUFrQkYsR0FBcUJPLENBQVksRUFBSSxDQUFBLENBQUUsQ0FDN0wsQ0FDRCxPQUFPTixFQUFLLE9BQU9HLEVBQW9CSixHQUFxQkksRUFBb0IsQ0FBRSxFQUFFRixDQUFlLENBQUMsQ0FDdEcsQ0FDQSxTQUFTTSxHQUFnQkYsRUFBSyxDQUM1QixPQUFPQSxFQUFJLFFBQVUsT0FBTyxlQUFlQSxFQUFJLE1BQU0sRUFBSUEsRUFBSSxhQUFlLElBQzlFLENDbEpBLFNBQVNHLEdBQWlCcEYsRUFBUyxDQUNqQyxNQUFNbUUsRUFBTVIsRUFBaUIzRCxDQUFPLEVBR3BDLElBQUl0QyxFQUFRLFdBQVd5RyxFQUFJLEtBQUssR0FBSyxFQUNqQ3hHLEVBQVMsV0FBV3dHLEVBQUksTUFBTSxHQUFLLEVBQ3ZDLE1BQU1rQixFQUFZaEMsRUFBY3JELENBQU8sRUFDakNzRixFQUFjRCxFQUFZckYsRUFBUSxZQUFjdEMsRUFDaEQ2SCxFQUFlRixFQUFZckYsRUFBUSxhQUFlckMsRUFDbEQ2SCxFQUFpQmpLLEdBQU1tQyxDQUFLLElBQU00SCxHQUFlL0osR0FBTW9DLENBQU0sSUFBTTRILEVBQ3pFLE9BQUlDLElBQ0Y5SCxFQUFRNEgsRUFDUjNILEVBQVM0SCxHQUVKLENBQ0wsTUFBQTdILEVBQ0EsT0FBQUMsRUFDQSxFQUFHNkgsQ0FDUCxDQUNBLENBRUEsU0FBU0MsR0FBY3pGLEVBQVMsQ0FDOUIsT0FBUW9ELEVBQVVwRCxDQUFPLEVBQTZCQSxFQUF6QkEsRUFBUSxjQUN2QyxDQUVBLFNBQVMwRixFQUFTMUYsRUFBUyxDQUN6QixNQUFNMkYsRUFBYUYsR0FBY3pGLENBQU8sRUFDeEMsR0FBSSxDQUFDcUQsRUFBY3NDLENBQVUsRUFDM0IsT0FBT2xLLEVBQWEsQ0FBQyxFQUV2QixNQUFNOEIsRUFBT29JLEVBQVcsd0JBQ2xCLENBQ0osTUFBQWpJLEVBQ0EsT0FBQUMsRUFDQSxFQUFBaUksQ0FDSixFQUFNUixHQUFpQk8sQ0FBVSxFQUMvQixJQUFJbkksR0FBS29JLEVBQUlySyxHQUFNZ0MsRUFBSyxLQUFLLEVBQUlBLEVBQUssT0FBU0csRUFDM0NELEdBQUttSSxFQUFJckssR0FBTWdDLEVBQUssTUFBTSxFQUFJQSxFQUFLLFFBQVVJLEVBSWpELE9BQUksQ0FBQ0gsR0FBSyxDQUFDLE9BQU8sU0FBU0EsQ0FBQyxLQUMxQkEsRUFBSSxJQUVGLENBQUNDLEdBQUssQ0FBQyxPQUFPLFNBQVNBLENBQUMsS0FDMUJBLEVBQUksR0FFQyxDQUNMLEVBQUFELEVBQ0EsRUFBQUMsQ0FDSixDQUNBLENBRUEsTUFBTW9JLEdBQXlCcEssRUFBYSxDQUFDLEVBQzdDLFNBQVNxSyxHQUFpQjlGLEVBQVMsQ0FDakMsTUFBTWlGLEVBQU1oQyxFQUFVakQsQ0FBTyxFQUM3QixNQUFJLENBQUNrRSxHQUFRLEdBQU0sQ0FBQ2UsRUFBSSxlQUNmWSxHQUVGLENBQ0wsRUFBR1osRUFBSSxlQUFlLFdBQ3RCLEVBQUdBLEVBQUksZUFBZSxTQUMxQixDQUNBLENBQ0EsU0FBU2MsR0FBdUIvRixFQUFTZ0csRUFBU0MsRUFBc0IsQ0FJdEUsT0FISUQsSUFBWSxTQUNkQSxFQUFVLElBRVIsQ0FBQ0MsR0FBd0JELEdBQVdDLElBQXlCaEQsRUFBVWpELENBQU8sRUFDekUsR0FFRmdHLENBQ1QsQ0FFQSxTQUFTRSxFQUFzQmxHLEVBQVNtRyxFQUFjQyxFQUFpQmxHLEVBQWMsQ0FDL0VpRyxJQUFpQixTQUNuQkEsRUFBZSxJQUViQyxJQUFvQixTQUN0QkEsRUFBa0IsSUFFcEIsTUFBTUMsRUFBYXJHLEVBQVEsd0JBQ3JCMkYsRUFBYUYsR0FBY3pGLENBQU8sRUFDeEMsSUFBSXNHLEVBQVE3SyxFQUFhLENBQUMsRUFDdEIwSyxJQUNFakcsRUFDRWtELEVBQVVsRCxDQUFZLElBQ3hCb0csRUFBUVosRUFBU3hGLENBQVksR0FHL0JvRyxFQUFRWixFQUFTMUYsQ0FBTyxHQUc1QixNQUFNdUcsRUFBZ0JSLEdBQXVCSixFQUFZUyxFQUFpQmxHLENBQVksRUFBSTRGLEdBQWlCSCxDQUFVLEVBQUlsSyxFQUFhLENBQUMsRUFDdkksSUFBSStCLEdBQUs2SSxFQUFXLEtBQU9FLEVBQWMsR0FBS0QsRUFBTSxFQUNoRDdJLEdBQUs0SSxFQUFXLElBQU1FLEVBQWMsR0FBS0QsRUFBTSxFQUMvQzVJLEVBQVEySSxFQUFXLE1BQVFDLEVBQU0sRUFDakMzSSxFQUFTMEksRUFBVyxPQUFTQyxFQUFNLEVBQ3ZDLEdBQUlYLEVBQVksQ0FDZCxNQUFNVixFQUFNaEMsRUFBVTBDLENBQVUsRUFDMUJhLEVBQVl0RyxHQUFnQmtELEVBQVVsRCxDQUFZLEVBQUkrQyxFQUFVL0MsQ0FBWSxFQUFJQSxFQUN0RixJQUFJdUcsRUFBYXhCLEVBQ2J5QixFQUFnQnZCLEdBQWdCc0IsQ0FBVSxFQUM5QyxLQUFPQyxHQUFpQnhHLEdBQWdCc0csSUFBY0MsR0FBWSxDQUNoRSxNQUFNRSxFQUFjakIsRUFBU2dCLENBQWEsRUFDcENFLEVBQWFGLEVBQWMsd0JBQzNCdkMsRUFBTVIsRUFBaUIrQyxDQUFhLEVBQ3BDRyxFQUFPRCxFQUFXLE1BQVFGLEVBQWMsV0FBYSxXQUFXdkMsRUFBSSxXQUFXLEdBQUt3QyxFQUFZLEVBQ2hHRyxFQUFNRixFQUFXLEtBQU9GLEVBQWMsVUFBWSxXQUFXdkMsRUFBSSxVQUFVLEdBQUt3QyxFQUFZLEVBQ2xHbkosR0FBS21KLEVBQVksRUFDakJsSixHQUFLa0osRUFBWSxFQUNqQmpKLEdBQVNpSixFQUFZLEVBQ3JCaEosR0FBVWdKLEVBQVksRUFDdEJuSixHQUFLcUosRUFDTHBKLEdBQUtxSixFQUNMTCxFQUFheEQsRUFBVXlELENBQWEsRUFDcENBLEVBQWdCdkIsR0FBZ0JzQixDQUFVLENBQzNDLENBQ0YsQ0FDRCxPQUFPbkosR0FBaUIsQ0FDdEIsTUFBQUksRUFDQSxPQUFBQyxFQUNBLEVBQUFILEVBQ0EsRUFBQUMsQ0FDSixDQUFHLENBQ0gsQ0FJQSxTQUFTc0osR0FBb0IvRyxFQUFTekMsRUFBTSxDQUMxQyxNQUFNeUosRUFBYXhDLEdBQWN4RSxDQUFPLEVBQUUsV0FDMUMsT0FBS3pDLEVBR0VBLEVBQUssS0FBT3lKLEVBRlZkLEVBQXNCL0MsRUFBbUJuRCxDQUFPLENBQUMsRUFBRSxLQUFPZ0gsQ0FHckUsQ0FFQSxTQUFTQyxHQUFjQyxFQUFpQkMsRUFBUUMsRUFBa0IsQ0FDNURBLElBQXFCLFNBQ3ZCQSxFQUFtQixJQUVyQixNQUFNQyxFQUFXSCxFQUFnQix3QkFDM0IxSixFQUFJNkosRUFBUyxLQUFPRixFQUFPLFlBQWNDLEVBQW1CLEVBRWxFTCxHQUFvQkcsRUFBaUJHLENBQVEsR0FDdkM1SixFQUFJNEosRUFBUyxJQUFNRixFQUFPLFVBQ2hDLE1BQU8sQ0FDTCxFQUFBM0osRUFDQSxFQUFBQyxDQUNKLENBQ0EsQ0FFQSxTQUFTNkosR0FBc0R6SixFQUFNLENBQ25FLEdBQUksQ0FDRixTQUFBNkIsRUFDQSxLQUFBbkMsRUFDQSxhQUFBMkMsRUFDQSxTQUFBekIsQ0FDRCxFQUFHWixFQUNKLE1BQU1tSSxFQUFVdkgsSUFBYSxRQUN2QnlJLEVBQWtCL0QsRUFBbUJqRCxDQUFZLEVBQ2pEM0YsRUFBV21GLEVBQVdtRSxHQUFXbkUsRUFBUyxRQUFRLEVBQUksR0FDNUQsR0FBSVEsSUFBaUJnSCxHQUFtQjNNLEdBQVl5TCxFQUNsRCxPQUFPekksRUFFVCxJQUFJNEosRUFBUyxDQUNYLFdBQVksRUFDWixVQUFXLENBQ2YsRUFDTWIsRUFBUTdLLEVBQWEsQ0FBQyxFQUMxQixNQUFNOEwsRUFBVTlMLEVBQWEsQ0FBQyxFQUN4QitMLEVBQTBCbkUsRUFBY25ELENBQVksRUFDMUQsSUFBSXNILEdBQTJCLENBQUNBLEdBQTJCLENBQUN4QixNQUN0RGxELEVBQVk1QyxDQUFZLElBQU0sUUFBVXFELEdBQWtCMkQsQ0FBZSxLQUMzRUMsRUFBUzNDLEdBQWN0RSxDQUFZLEdBRWpDbUQsRUFBY25ELENBQVksR0FBRyxDQUMvQixNQUFNdUgsRUFBYXZCLEVBQXNCaEcsQ0FBWSxFQUNyRG9HLEVBQVFaLEVBQVN4RixDQUFZLEVBQzdCcUgsRUFBUSxFQUFJRSxFQUFXLEVBQUl2SCxFQUFhLFdBQ3hDcUgsRUFBUSxFQUFJRSxFQUFXLEVBQUl2SCxFQUFhLFNBQ3pDLENBRUgsTUFBTXdILEVBQWFSLEdBQW1CLENBQUNNLEdBQTJCLENBQUN4QixFQUFVaUIsR0FBY0MsRUFBaUJDLEVBQVEsRUFBSSxFQUFJMUwsRUFBYSxDQUFDLEVBQzFJLE1BQU8sQ0FDTCxNQUFPOEIsRUFBSyxNQUFRK0ksRUFBTSxFQUMxQixPQUFRL0ksRUFBSyxPQUFTK0ksRUFBTSxFQUM1QixFQUFHL0ksRUFBSyxFQUFJK0ksRUFBTSxFQUFJYSxFQUFPLFdBQWFiLEVBQU0sRUFBSWlCLEVBQVEsRUFBSUcsRUFBVyxFQUMzRSxFQUFHbkssRUFBSyxFQUFJK0ksRUFBTSxFQUFJYSxFQUFPLFVBQVliLEVBQU0sRUFBSWlCLEVBQVEsRUFBSUcsRUFBVyxDQUM5RSxDQUNBLENBRUEsU0FBU0MsR0FBZTNILEVBQVMsQ0FDL0IsT0FBTyxNQUFNLEtBQUtBLEVBQVEsZUFBZ0IsQ0FBQSxDQUM1QyxDQUlBLFNBQVM0SCxHQUFnQjVILEVBQVMsQ0FDaEMsTUFBTTZILEVBQU8xRSxFQUFtQm5ELENBQU8sRUFDakNtSCxFQUFTM0MsR0FBY3hFLENBQU8sRUFDOUIvRixFQUFPK0YsRUFBUSxjQUFjLEtBQzdCdEMsRUFBUXBDLEVBQUl1TSxFQUFLLFlBQWFBLEVBQUssWUFBYTVOLEVBQUssWUFBYUEsRUFBSyxXQUFXLEVBQ2xGMEQsRUFBU3JDLEVBQUl1TSxFQUFLLGFBQWNBLEVBQUssYUFBYzVOLEVBQUssYUFBY0EsRUFBSyxZQUFZLEVBQzdGLElBQUl1RCxFQUFJLENBQUMySixFQUFPLFdBQWFKLEdBQW9CL0csQ0FBTyxFQUN4RCxNQUFNdkMsRUFBSSxDQUFDMEosRUFBTyxVQUNsQixPQUFJeEQsRUFBaUIxSixDQUFJLEVBQUUsWUFBYyxRQUN2Q3VELEdBQUtsQyxFQUFJdU0sRUFBSyxZQUFhNU4sRUFBSyxXQUFXLEVBQUl5RCxHQUUxQyxDQUNMLE1BQUFBLEVBQ0EsT0FBQUMsRUFDQSxFQUFBSCxFQUNBLEVBQUFDLENBQ0osQ0FDQSxDQUVBLFNBQVNxSyxHQUFnQjlILEVBQVN2QixFQUFVLENBQzFDLE1BQU13RyxFQUFNaEMsRUFBVWpELENBQU8sRUFDdkI2SCxFQUFPMUUsRUFBbUJuRCxDQUFPLEVBQ2pDK0gsRUFBaUI5QyxFQUFJLGVBQzNCLElBQUl2SCxFQUFRbUssRUFBSyxZQUNibEssRUFBU2tLLEVBQUssYUFDZHJLLEVBQUksRUFDSkMsRUFBSSxFQUNSLEdBQUlzSyxFQUFnQixDQUNsQnJLLEVBQVFxSyxFQUFlLE1BQ3ZCcEssRUFBU29LLEVBQWUsT0FDeEIsTUFBTUMsRUFBc0I5RCxNQUN4QixDQUFDOEQsR0FBdUJBLEdBQXVCdkosSUFBYSxXQUM5RGpCLEVBQUl1SyxFQUFlLFdBQ25CdEssRUFBSXNLLEVBQWUsVUFFdEIsQ0FDRCxNQUFPLENBQ0wsTUFBQXJLLEVBQ0EsT0FBQUMsRUFDQSxFQUFBSCxFQUNBLEVBQUFDLENBQ0osQ0FDQSxDQUdBLFNBQVN3SyxHQUEyQmpJLEVBQVN2QixFQUFVLENBQ3JELE1BQU00SCxFQUFhSCxFQUFzQmxHLEVBQVMsR0FBTXZCLElBQWEsT0FBTyxFQUN0RXFJLEVBQU1ULEVBQVcsSUFBTXJHLEVBQVEsVUFDL0I2RyxFQUFPUixFQUFXLEtBQU9yRyxFQUFRLFdBQ2pDc0csRUFBUWpELEVBQWNyRCxDQUFPLEVBQUkwRixFQUFTMUYsQ0FBTyxFQUFJdkUsRUFBYSxDQUFDLEVBQ25FaUMsRUFBUXNDLEVBQVEsWUFBY3NHLEVBQU0sRUFDcEMzSSxFQUFTcUMsRUFBUSxhQUFlc0csRUFBTSxFQUN0QzlJLEVBQUlxSixFQUFPUCxFQUFNLEVBQ2pCN0ksRUFBSXFKLEVBQU1SLEVBQU0sRUFDdEIsTUFBTyxDQUNMLE1BQUE1SSxFQUNBLE9BQUFDLEVBQ0EsRUFBQUgsRUFDQSxFQUFBQyxDQUNKLENBQ0EsQ0FDQSxTQUFTeUssR0FBa0NsSSxFQUFTbUksRUFBa0IxSixFQUFVLENBQzlFLElBQUlsQixFQUNKLEdBQUk0SyxJQUFxQixXQUN2QjVLLEVBQU91SyxHQUFnQjlILEVBQVN2QixDQUFRLFVBQy9CMEosSUFBcUIsV0FDOUI1SyxFQUFPcUssR0FBZ0J6RSxFQUFtQm5ELENBQU8sQ0FBQyxVQUN6Q29ELEVBQVUrRSxDQUFnQixFQUNuQzVLLEVBQU8wSyxHQUEyQkUsRUFBa0IxSixDQUFRLE1BQ3ZELENBQ0wsTUFBTThILEVBQWdCVCxHQUFpQjlGLENBQU8sRUFDOUN6QyxFQUFPLENBQ0wsRUFBRzRLLEVBQWlCLEVBQUk1QixFQUFjLEVBQ3RDLEVBQUc0QixFQUFpQixFQUFJNUIsRUFBYyxFQUN0QyxNQUFPNEIsRUFBaUIsTUFDeEIsT0FBUUEsRUFBaUIsTUFDL0IsQ0FDRyxDQUNELE9BQU83SyxHQUFpQkMsQ0FBSSxDQUM5QixDQUNBLFNBQVM2SyxHQUF5QnBJLEVBQVNxSSxFQUFVLENBQ25ELE1BQU0zRCxFQUFhSixFQUFjdEUsQ0FBTyxFQUN4QyxPQUFJMEUsSUFBZTJELEdBQVksQ0FBQ2pGLEVBQVVzQixDQUFVLEdBQUtILEVBQXNCRyxDQUFVLEVBQ2hGLEdBRUZmLEVBQWlCZSxDQUFVLEVBQUUsV0FBYSxTQUFXMEQsR0FBeUIxRCxFQUFZMkQsQ0FBUSxDQUMzRyxDQUtBLFNBQVNDLEdBQTRCdEksRUFBU3VJLEVBQU8sQ0FDbkQsTUFBTUMsRUFBZUQsRUFBTSxJQUFJdkksQ0FBTyxFQUN0QyxHQUFJd0ksRUFDRixPQUFPQSxFQUVULElBQUlsUixFQUFTcU4sR0FBcUIzRSxFQUFTLENBQUEsRUFBSSxFQUFLLEVBQUUsT0FBT3lJLEdBQU1yRixFQUFVcUYsQ0FBRSxHQUFLM0YsRUFBWTJGLENBQUUsSUFBTSxNQUFNLEVBQzFHQyxFQUFzQyxLQUMxQyxNQUFNQyxFQUFpQmhGLEVBQWlCM0QsQ0FBTyxFQUFFLFdBQWEsUUFDOUQsSUFBSXFFLEVBQWNzRSxFQUFpQnJFLEVBQWN0RSxDQUFPLEVBQUlBLEVBRzVELEtBQU9vRCxFQUFVaUIsQ0FBVyxHQUFLLENBQUNFLEVBQXNCRixDQUFXLEdBQUcsQ0FDcEUsTUFBTXVFLEVBQWdCakYsRUFBaUJVLENBQVcsRUFDNUN3RSxFQUEwQjlFLEdBQWtCTSxDQUFXLEVBQ3pELENBQUN3RSxHQUEyQkQsRUFBYyxXQUFhLFVBQ3pERixFQUFzQyxPQUVWQyxFQUFpQixDQUFDRSxHQUEyQixDQUFDSCxFQUFzQyxDQUFDRyxHQUEyQkQsRUFBYyxXQUFhLFVBQVksQ0FBQyxDQUFDRixHQUF1QyxDQUFDLFdBQVksT0FBTyxFQUFFLFNBQVNBLEVBQW9DLFFBQVEsR0FBS25GLEdBQWtCYyxDQUFXLEdBQUssQ0FBQ3dFLEdBQTJCVCxHQUF5QnBJLEVBQVNxRSxDQUFXLEdBR3ZaL00sRUFBU0EsRUFBTyxPQUFPd1IsR0FBWUEsSUFBYXpFLENBQVcsRUFHM0RxRSxFQUFzQ0UsRUFFeEN2RSxFQUFjQyxFQUFjRCxDQUFXLENBQ3hDLENBQ0QsT0FBQWtFLEVBQU0sSUFBSXZJLEVBQVMxSSxDQUFNLEVBQ2xCQSxDQUNULENBSUEsU0FBU3lSLEdBQWdCbEwsRUFBTSxDQUM3QixHQUFJLENBQ0YsUUFBQW1DLEVBQ0EsU0FBQUwsRUFDQSxhQUFBQyxFQUNBLFNBQUFuQixDQUNELEVBQUdaLEVBRUosTUFBTW1MLEVBQW9CLENBQUMsR0FETXJKLElBQWEsb0JBQXNCa0UsR0FBVzdELENBQU8sRUFBSSxDQUFFLEVBQUdzSSxHQUE0QnRJLEVBQVMsS0FBSyxFQUFFLEVBQUksQ0FBQSxFQUFHLE9BQU9MLENBQVEsRUFDekdDLENBQVksRUFDOURxSixFQUF3QkQsRUFBa0IsQ0FBQyxFQUMzQ0UsRUFBZUYsRUFBa0IsT0FBTyxDQUFDRyxFQUFTaEIsSUFBcUIsQ0FDM0UsTUFBTTVLLEVBQU8ySyxHQUFrQ2xJLEVBQVNtSSxFQUFrQjFKLENBQVEsRUFDbEYsT0FBQTBLLEVBQVEsSUFBTTdOLEVBQUlpQyxFQUFLLElBQUs0TCxFQUFRLEdBQUcsRUFDdkNBLEVBQVEsTUFBUTlOLEdBQUlrQyxFQUFLLE1BQU80TCxFQUFRLEtBQUssRUFDN0NBLEVBQVEsT0FBUzlOLEdBQUlrQyxFQUFLLE9BQVE0TCxFQUFRLE1BQU0sRUFDaERBLEVBQVEsS0FBTzdOLEVBQUlpQyxFQUFLLEtBQU00TCxFQUFRLElBQUksRUFDbkNBLENBQ1IsRUFBRWpCLEdBQWtDbEksRUFBU2lKLEVBQXVCeEssQ0FBUSxDQUFDLEVBQzlFLE1BQU8sQ0FDTCxNQUFPeUssRUFBYSxNQUFRQSxFQUFhLEtBQ3pDLE9BQVFBLEVBQWEsT0FBU0EsRUFBYSxJQUMzQyxFQUFHQSxFQUFhLEtBQ2hCLEVBQUdBLEVBQWEsR0FDcEIsQ0FDQSxDQUVBLFNBQVNFLEdBQWNwSixFQUFTLENBQzlCLEtBQU0sQ0FDSixNQUFBdEMsRUFDQSxPQUFBQyxDQUNKLEVBQU15SCxHQUFpQnBGLENBQU8sRUFDNUIsTUFBTyxDQUNMLE1BQUF0QyxFQUNBLE9BQUFDLENBQ0osQ0FDQSxDQUVBLFNBQVMwTCxHQUE4QnJKLEVBQVNFLEVBQWN6QixFQUFVLENBQ3RFLE1BQU0rSSxFQUEwQm5FLEVBQWNuRCxDQUFZLEVBQ3BEZ0gsRUFBa0IvRCxFQUFtQmpELENBQVksRUFDakQ4RixFQUFVdkgsSUFBYSxRQUN2QmxCLEVBQU8ySSxFQUFzQmxHLEVBQVMsR0FBTWdHLEVBQVM5RixDQUFZLEVBQ3ZFLElBQUlpSCxFQUFTLENBQ1gsV0FBWSxFQUNaLFVBQVcsQ0FDZixFQUNFLE1BQU1JLEVBQVU5TCxFQUFhLENBQUMsRUFDOUIsR0FBSStMLEdBQTJCLENBQUNBLEdBQTJCLENBQUN4QixFQUkxRCxJQUhJbEQsRUFBWTVDLENBQVksSUFBTSxRQUFVcUQsR0FBa0IyRCxDQUFlLEtBQzNFQyxFQUFTM0MsR0FBY3RFLENBQVksR0FFakNzSCxFQUF5QixDQUMzQixNQUFNQyxFQUFhdkIsRUFBc0JoRyxFQUFjLEdBQU04RixFQUFTOUYsQ0FBWSxFQUNsRnFILEVBQVEsRUFBSUUsRUFBVyxFQUFJdkgsRUFBYSxXQUN4Q3FILEVBQVEsRUFBSUUsRUFBVyxFQUFJdkgsRUFBYSxTQUN6QyxNQUFVZ0gsSUFHVEssRUFBUSxFQUFJUixHQUFvQkcsQ0FBZSxHQUduRCxNQUFNUSxFQUFhUixHQUFtQixDQUFDTSxHQUEyQixDQUFDeEIsRUFBVWlCLEdBQWNDLEVBQWlCQyxDQUFNLEVBQUkxTCxFQUFhLENBQUMsRUFDOUgrQixFQUFJRCxFQUFLLEtBQU80SixFQUFPLFdBQWFJLEVBQVEsRUFBSUcsRUFBVyxFQUMzRGpLLEVBQUlGLEVBQUssSUFBTTRKLEVBQU8sVUFBWUksRUFBUSxFQUFJRyxFQUFXLEVBQy9ELE1BQU8sQ0FDTCxFQUFBbEssRUFDQSxFQUFBQyxFQUNBLE1BQU9GLEVBQUssTUFDWixPQUFRQSxFQUFLLE1BQ2pCLENBQ0EsQ0FFQSxTQUFTK0wsR0FBbUJ0SixFQUFTLENBQ25DLE9BQU8yRCxFQUFpQjNELENBQU8sRUFBRSxXQUFhLFFBQ2hELENBRUEsU0FBU3VKLEdBQW9CdkosRUFBU3dKLEVBQVUsQ0FDOUMsR0FBSSxDQUFDbkcsRUFBY3JELENBQU8sR0FBSzJELEVBQWlCM0QsQ0FBTyxFQUFFLFdBQWEsUUFDcEUsT0FBTyxLQUVULEdBQUl3SixFQUNGLE9BQU9BLEVBQVN4SixDQUFPLEVBRXpCLElBQUl5SixFQUFrQnpKLEVBQVEsYUFNOUIsT0FBSW1ELEVBQW1CbkQsQ0FBTyxJQUFNeUosSUFDbENBLEVBQWtCQSxFQUFnQixjQUFjLE1BRTNDQSxDQUNULENBSUEsU0FBU0MsR0FBZ0IxSixFQUFTd0osRUFBVSxDQUMxQyxNQUFNdkUsRUFBTWhDLEVBQVVqRCxDQUFPLEVBQzdCLEdBQUk2RCxHQUFXN0QsQ0FBTyxFQUNwQixPQUFPaUYsRUFFVCxHQUFJLENBQUM1QixFQUFjckQsQ0FBTyxFQUFHLENBQzNCLElBQUkySixFQUFrQnJGLEVBQWN0RSxDQUFPLEVBQzNDLEtBQU8ySixHQUFtQixDQUFDcEYsRUFBc0JvRixDQUFlLEdBQUcsQ0FDakUsR0FBSXZHLEVBQVV1RyxDQUFlLEdBQUssQ0FBQ0wsR0FBbUJLLENBQWUsRUFDbkUsT0FBT0EsRUFFVEEsRUFBa0JyRixFQUFjcUYsQ0FBZSxDQUNoRCxDQUNELE9BQU8xRSxDQUNSLENBQ0QsSUFBSS9FLEVBQWVxSixHQUFvQnZKLEVBQVN3SixDQUFRLEVBQ3hELEtBQU90SixHQUFnQjBELEdBQWUxRCxDQUFZLEdBQUtvSixHQUFtQnBKLENBQVksR0FDcEZBLEVBQWVxSixHQUFvQnJKLEVBQWNzSixDQUFRLEVBRTNELE9BQUl0SixHQUFnQnFFLEVBQXNCckUsQ0FBWSxHQUFLb0osR0FBbUJwSixDQUFZLEdBQUssQ0FBQzZELEdBQWtCN0QsQ0FBWSxFQUNySCtFLEVBRUYvRSxHQUFnQmtFLEdBQW1CcEUsQ0FBTyxHQUFLaUYsQ0FDeEQsQ0FFQSxNQUFNMkUsR0FBa0IsZUFBZ0J4SyxFQUFNLENBQzVDLE1BQU15SyxFQUFvQixLQUFLLGlCQUFtQkgsR0FDNUNJLEVBQWtCLEtBQUssY0FDdkJDLEVBQXFCLE1BQU1ELEVBQWdCMUssRUFBSyxRQUFRLEVBQzlELE1BQU8sQ0FDTCxVQUFXaUssR0FBOEJqSyxFQUFLLFVBQVcsTUFBTXlLLEVBQWtCekssRUFBSyxRQUFRLEVBQUdBLEVBQUssUUFBUSxFQUM5RyxTQUFVLENBQ1IsRUFBRyxFQUNILEVBQUcsRUFDSCxNQUFPMkssRUFBbUIsTUFDMUIsT0FBUUEsRUFBbUIsTUFDNUIsQ0FDTCxDQUNBLEVBRUEsU0FBU0MsR0FBTWhLLEVBQVMsQ0FDdEIsT0FBTzJELEVBQWlCM0QsQ0FBTyxFQUFFLFlBQWMsS0FDakQsQ0FFQSxNQUFNckIsR0FBVyxDQUNmLHNEQUFBMkksR0FDQSxtQkFBQW5FLEVBQ0EsZ0JBQUE0RixHQUNBLGdCQUFBVyxHQUNBLGdCQUFBRSxHQUNBLGVBQUFqQyxHQUNBLGNBQUF5QixHQUNBLFNBQUExRCxFQUNBLFVBQUF0QyxFQUNBLE1BQUE0RyxFQUNGLEVBRUEsU0FBU0MsR0FBY3pJLEVBQUdDLEVBQUcsQ0FDM0IsT0FBT0QsRUFBRSxJQUFNQyxFQUFFLEdBQUtELEVBQUUsSUFBTUMsRUFBRSxHQUFLRCxFQUFFLFFBQVVDLEVBQUUsT0FBU0QsRUFBRSxTQUFXQyxFQUFFLE1BQzdFLENBR0EsU0FBU3lJLEdBQVlsSyxFQUFTbUssRUFBUSxDQUNwQyxJQUFJQyxFQUFLLEtBQ0xDLEVBQ0osTUFBTUMsRUFBT25ILEVBQW1CbkQsQ0FBTyxFQUN2QyxTQUFTdUssR0FBVSxDQUNqQixJQUFJQyxFQUNKLGFBQWFILENBQVMsR0FDckJHLEVBQU1KLElBQU8sTUFBUUksRUFBSSxXQUFVLEVBQ3BDSixFQUFLLElBQ04sQ0FDRCxTQUFTSyxFQUFRQyxFQUFNQyxFQUFXLENBQzVCRCxJQUFTLFNBQ1hBLEVBQU8sSUFFTEMsSUFBYyxTQUNoQkEsRUFBWSxHQUVkSixJQUNBLE1BQU1LLEVBQTJCNUssRUFBUSx3QkFDbkMsQ0FDSixLQUFBNkcsRUFDQSxJQUFBQyxFQUNBLE1BQUFwSixFQUNBLE9BQUFDLENBQ0QsRUFBR2lOLEVBSUosR0FIS0YsR0FDSFAsSUFFRSxDQUFDek0sR0FBUyxDQUFDQyxFQUNiLE9BRUYsTUFBTWtOLEVBQVdyUCxHQUFNc0wsQ0FBRyxFQUNwQmdFLEVBQWF0UCxHQUFNOE8sRUFBSyxhQUFlekQsRUFBT25KLEVBQU0sRUFDcERxTixFQUFjdlAsR0FBTThPLEVBQUssY0FBZ0J4RCxFQUFNbkosRUFBTyxFQUN0RHFOLEVBQVl4UCxHQUFNcUwsQ0FBSSxFQUV0QnJILEVBQVUsQ0FDZCxXQUZpQixDQUFDcUwsRUFBVyxNQUFRLENBQUNDLEVBQWEsTUFBUSxDQUFDQyxFQUFjLE1BQVEsQ0FBQ0MsRUFBWSxLQUcvRixVQUFXMVAsRUFBSSxFQUFHRCxHQUFJLEVBQUdzUCxDQUFTLENBQUMsR0FBSyxDQUM5QyxFQUNJLElBQUlNLEVBQWdCLEdBQ3BCLFNBQVNDLEVBQWNDLEVBQVMsQ0FDOUIsTUFBTUMsRUFBUUQsRUFBUSxDQUFDLEVBQUUsa0JBQ3pCLEdBQUlDLElBQVVULEVBQVcsQ0FDdkIsR0FBSSxDQUFDTSxFQUNILE9BQU9SLEVBQU8sRUFFWFcsRUFPSFgsRUFBUSxHQUFPVyxDQUFLLEVBSnBCZixFQUFZLFdBQVcsSUFBTSxDQUMzQkksRUFBUSxHQUFPLElBQUksQ0FDcEIsRUFBRSxHQUFJLENBSVYsQ0FDR1csSUFBVSxHQUFLLENBQUNuQixHQUFjVyxFQUEwQjVLLEVBQVEsc0JBQXFCLENBQUUsR0FRekZ5SyxJQUVGUSxFQUFnQixFQUNqQixDQUlELEdBQUksQ0FDRmIsRUFBSyxJQUFJLHFCQUFxQmMsRUFBZSxDQUMzQyxHQUFHMUwsRUFFSCxLQUFNOEssRUFBSyxhQUNuQixDQUFPLENBQ0YsTUFBVyxDQUNWRixFQUFLLElBQUkscUJBQXFCYyxFQUFlMUwsQ0FBTyxDQUNyRCxDQUNENEssRUFBRyxRQUFRcEssQ0FBTyxDQUNuQixDQUNELE9BQUF5SyxFQUFRLEVBQUksRUFDTEYsQ0FDVCxDQVVBLFNBQVNjLEdBQVd2TixFQUFXQyxFQUFVdU4sRUFBUTlMLEVBQVMsQ0FDcERBLElBQVksU0FDZEEsRUFBVSxDQUFBLEdBRVosS0FBTSxDQUNKLGVBQUErTCxFQUFpQixHQUNqQixlQUFBQyxFQUFpQixHQUNqQixjQUFBQyxFQUFnQixPQUFPLGdCQUFtQixXQUMxQyxZQUFBQyxFQUFjLE9BQU8sc0JBQXlCLFdBQzlDLGVBQUFDLEVBQWlCLEVBQ2xCLEVBQUduTSxFQUNFb00sRUFBY25HLEdBQWMzSCxDQUFTLEVBQ3JDK04sRUFBWU4sR0FBa0JDLEVBQWlCLENBQUMsR0FBSUksRUFBY2pILEdBQXFCaUgsQ0FBVyxFQUFJLENBQUEsRUFBSyxHQUFHakgsR0FBcUI1RyxDQUFRLENBQUMsRUFBSSxDQUFBLEVBQ3RKOE4sRUFBVSxRQUFRL0MsR0FBWSxDQUM1QnlDLEdBQWtCekMsRUFBUyxpQkFBaUIsU0FBVXdDLEVBQVEsQ0FDNUQsUUFBUyxFQUNmLENBQUssRUFDREUsR0FBa0IxQyxFQUFTLGlCQUFpQixTQUFVd0MsQ0FBTSxDQUNoRSxDQUFHLEVBQ0QsTUFBTVEsRUFBWUYsR0FBZUYsRUFBY3hCLEdBQVkwQixFQUFhTixDQUFNLEVBQUksS0FDbEYsSUFBSVMsRUFBaUIsR0FDakJDLEVBQWlCLEtBQ2pCUCxJQUNGTyxFQUFpQixJQUFJLGVBQWVuTyxHQUFRLENBQzFDLEdBQUksQ0FBQ29PLENBQVUsRUFBSXBPLEVBQ2ZvTyxHQUFjQSxFQUFXLFNBQVdMLEdBQWVJLElBR3JEQSxFQUFlLFVBQVVqTyxDQUFRLEVBQ2pDLHFCQUFxQmdPLENBQWMsRUFDbkNBLEVBQWlCLHNCQUFzQixJQUFNLENBQzNDLElBQUlHLEdBQ0hBLEVBQWtCRixJQUFtQixNQUFRRSxFQUFnQixRQUFRbk8sQ0FBUSxDQUN4RixDQUFTLEdBRUh1TixHQUNOLENBQUssRUFDR00sR0FBZSxDQUFDRCxHQUNsQkssRUFBZSxRQUFRSixDQUFXLEVBRXBDSSxFQUFlLFFBQVFqTyxDQUFRLEdBRWpDLElBQUlvTyxFQUNBQyxFQUFjVCxFQUFpQnpGLEVBQXNCcEksQ0FBUyxFQUFJLEtBQ2xFNk4sR0FDRlUsSUFFRixTQUFTQSxHQUFZLENBQ25CLE1BQU1DLEVBQWNwRyxFQUFzQnBJLENBQVMsRUFDL0NzTyxHQUFlLENBQUNuQyxHQUFjbUMsRUFBYUUsQ0FBVyxHQUN4RGhCLElBRUZjLEVBQWNFLEVBQ2RILEVBQVUsc0JBQXNCRSxDQUFTLENBQzFDLENBQ0QsT0FBQWYsSUFDTyxJQUFNLENBQ1gsSUFBSWlCLEVBQ0pWLEVBQVUsUUFBUS9DLEdBQVksQ0FDNUJ5QyxHQUFrQnpDLEVBQVMsb0JBQW9CLFNBQVV3QyxDQUFNLEVBQy9ERSxHQUFrQjFDLEVBQVMsb0JBQW9CLFNBQVV3QyxDQUFNLENBQ3JFLENBQUssRUFDRFEsR0FBYSxNQUFRQSxLQUNwQlMsRUFBbUJQLElBQW1CLE1BQVFPLEVBQWlCLFdBQVUsRUFDMUVQLEVBQWlCLEtBQ2JMLEdBQ0YscUJBQXFCUSxDQUFPLENBRWxDLENBQ0EsQ0FtQkEsTUFBTW5LLEdBQVN3SyxHQVFUaE0sR0FBZ0JpTSxHQU9oQnJLLEdBQVFzSyxHQWdEUm5PLEdBQWtCLENBQUNULEVBQVdDLEVBQVV5QixJQUFZLENBSXhELE1BQU0rSSxFQUFRLElBQUksSUFDWm9FLEVBQWdCLENBQ3BCLFNBQUFoTyxHQUNBLEdBQUdhLENBQ1AsRUFDUW9OLEVBQW9CLENBQ3hCLEdBQUdELEVBQWMsU0FDakIsR0FBSXBFLENBQ1IsRUFDRSxPQUFPc0UsR0FBa0IvTyxFQUFXQyxFQUFVLENBQzVDLEdBQUc0TyxFQUNILFNBQVVDLENBQ2QsQ0FBRyxDQUNILEVDeHVCQSxTQUFTRSxHQUEwQkMsRUFBUSxDQUN6QyxPQUFPQSxHQUFVLE1BQVEsT0FBT0EsR0FBVyxVQUFZLFFBQVNBLENBQ2xFLENBQ0EsU0FBU3RILEdBQWNzSCxFQUFRLENBQzdCLEdBQUlELEdBQTBCQyxDQUFNLEVBQUcsQ0FDckMsTUFBTS9NLEVBQVUrTSxFQUFPLElBQ3ZCLE9BQU8vSixHQUFPaEQsQ0FBTyxHQUFLOEMsRUFBWTlDLENBQU8sSUFBTSxXQUFhLEtBQU9BLENBQ3hFLENBQ0QsT0FBTytNLENBQ1QsQ0FFQSxTQUFTQyxHQUFRQyxFQUFRLENBQ3ZCLE9BQU8sT0FBT0EsR0FBVyxXQUFhQSxFQUFNLEVBQUtDLEVBQUFBLE1BQU1ELENBQU0sQ0FDL0QsQ0F3QkEsU0FBU0UsR0FBT25OLEVBQVMsQ0FDdkIsT0FBSSxPQUFPLE9BQVcsSUFDYixHQUVHQSxFQUFRLGNBQWMsYUFBZSxRQUN0QyxrQkFBb0IsQ0FDakMsQ0FFQSxTQUFTb04sR0FBV3BOLEVBQVMzSSxFQUFPLENBQ2xDLE1BQU1nVyxFQUFNRixHQUFPbk4sQ0FBTyxFQUMxQixPQUFPLEtBQUssTUFBTTNJLEVBQVFnVyxDQUFHLEVBQUlBLENBQ25DLENBU0EsU0FBU0MsR0FBWXhQLEVBQVdDLEVBQVV5QixFQUFTLENBQzdDQSxJQUFZLFNBQ2RBLEVBQVUsQ0FBQSxHQUVaLE1BQU0rTixFQUE2Qi9OLEVBQVEscUJBQ3JDZ08sRUFBYWpaLEVBQUFBLFNBQVMsSUFBTSxDQUNoQyxJQUFJa1osRUFDSixPQUFRQSxFQUFXVCxHQUFReE4sRUFBUSxJQUFJLElBQU0sS0FBT2lPLEVBQVcsRUFDbkUsQ0FBRyxFQUNLQyxFQUFtQm5aLEVBQUFBLFNBQVMsSUFBTXlZLEdBQVF4TixFQUFRLFVBQVUsQ0FBQyxFQUM3RG1PLEVBQWtCcFosRUFBQUEsU0FBUyxJQUFNLENBQ3JDLElBQUlxWixFQUNKLE9BQVFBLEVBQVlaLEdBQVF4TixFQUFRLFNBQVMsSUFBTSxLQUFPb08sRUFBWSxRQUMxRSxDQUFHLEVBQ0tDLEVBQWlCdFosRUFBQUEsU0FBUyxJQUFNLENBQ3BDLElBQUl1WixFQUNKLE9BQVFBLEVBQVlkLEdBQVF4TixFQUFRLFFBQVEsSUFBTSxLQUFPc08sRUFBWSxVQUN6RSxDQUFHLEVBQ0tDLEVBQWtCeFosRUFBQUEsU0FBUyxJQUFNLENBQ3JDLElBQUl5WixFQUNKLE9BQVFBLEVBQVloQixHQUFReE4sRUFBUSxTQUFTLElBQU0sS0FBT3dPLEVBQVksRUFDMUUsQ0FBRyxFQUNLQyxFQUFtQjFaLEVBQUFBLFNBQVMsSUFBTWtSLEdBQWMzSCxFQUFVLEtBQUssQ0FBQyxFQUNoRW9RLEVBQWtCM1osRUFBQUEsU0FBUyxJQUFNa1IsR0FBYzFILEVBQVMsS0FBSyxDQUFDLEVBQzlEUCxFQUFJdEssTUFBSSxDQUFDLEVBQ1R1SyxFQUFJdkssTUFBSSxDQUFDLEVBQ1R1TCxFQUFXdkwsRUFBQUEsSUFBSTJhLEVBQWUsS0FBSyxFQUNuQzFSLEVBQVlqSixFQUFBQSxJQUFJeWEsRUFBZ0IsS0FBSyxFQUNyQzdPLEVBQWlCcVAsYUFBVyxDQUFBLENBQUUsRUFDOUJDLEVBQWVsYixNQUFJLEVBQUssRUFDeEJtYixFQUFpQjlaLEVBQUFBLFNBQVMsSUFBTSxDQUNwQyxNQUFNK1osRUFBZ0IsQ0FDcEIsU0FBVTdQLEVBQVMsTUFDbkIsS0FBTSxJQUNOLElBQUssR0FDWCxFQUNJLEdBQUksQ0FBQ3lQLEVBQWdCLE1BQ25CLE9BQU9JLEVBRVQsTUFBTUMsRUFBT25CLEdBQVdjLEVBQWdCLE1BQU8xUSxFQUFFLEtBQUssRUFDaERnUixHQUFPcEIsR0FBV2MsRUFBZ0IsTUFBT3pRLEVBQUUsS0FBSyxFQUN0RCxPQUFJc1EsRUFBZ0IsTUFDWCxDQUNMLEdBQUdPLEVBQ0gsVUFBVyxhQUFlQyxFQUFPLE9BQVNDLEdBQU8sTUFDakQsR0FBSXJCLEdBQU9lLEVBQWdCLEtBQUssR0FBSyxLQUFPLENBQzFDLFdBQVksV0FDdEIsQ0FDQSxFQUVXLENBQ0wsU0FBVXpQLEVBQVMsTUFDbkIsS0FBTThQLEVBQU8sS0FDYixJQUFLQyxHQUFPLElBQ2xCLENBQ0EsQ0FBRyxFQUNELElBQUlDLEVBQ0osU0FBU25ELEdBQVMsQ0FDaEIsR0FBSTJDLEVBQWlCLE9BQVMsTUFBUUMsRUFBZ0IsT0FBUyxLQUM3RCxPQUVGLE1BQU1RLEVBQU9sQixFQUFXLE1BQ3hCalAsR0FBZ0IwUCxFQUFpQixNQUFPQyxFQUFnQixNQUFPLENBQzdELFdBQVlSLEVBQWlCLE1BQzdCLFVBQVdDLEVBQWdCLE1BQzNCLFNBQVVFLEVBQWUsS0FDL0IsQ0FBSyxFQUFFLEtBQUtjLEdBQVksQ0FDbEJuUixFQUFFLE1BQVFtUixFQUFTLEVBQ25CbFIsRUFBRSxNQUFRa1IsRUFBUyxFQUNuQmxRLEVBQVMsTUFBUWtRLEVBQVMsU0FDMUJ4UyxFQUFVLE1BQVF3UyxFQUFTLFVBQzNCN1AsRUFBZSxNQUFRNlAsRUFBUyxlQU9oQ1AsRUFBYSxNQUFRTSxJQUFTLEVBQ3BDLENBQUssQ0FDRixDQUNELFNBQVNuRSxHQUFVLENBQ2IsT0FBT2tFLEdBQWdDLGFBQ3pDQSxJQUNBQSxFQUE4QixPQUVqQyxDQUNELFNBQVNHLEdBQVMsQ0FFaEIsR0FEQXJFLElBQ0lnRCxJQUErQixPQUFXLENBQzVDakMsSUFDQSxNQUNELENBQ0QsR0FBSTJDLEVBQWlCLE9BQVMsTUFBUUMsRUFBZ0IsT0FBUyxLQUFNLENBQ25FTyxFQUE4QmxCLEVBQTJCVSxFQUFpQixNQUFPQyxFQUFnQixNQUFPNUMsQ0FBTSxFQUM5RyxNQUNELENBQ0YsQ0FDRCxTQUFTak0sR0FBUSxDQUNWbU8sRUFBVyxRQUNkWSxFQUFhLE1BQVEsR0FFeEIsQ0FDRGpiLE9BQUFBLEVBQUssTUFBQyxDQUFDdWEsRUFBa0JDLEVBQWlCRSxFQUFnQkwsQ0FBVSxFQUFHbEMsRUFBUSxDQUM3RSxNQUFPLE1BQ1gsQ0FBRyxFQUNEblksRUFBQUEsTUFBTSxDQUFDOGEsRUFBa0JDLENBQWUsRUFBR1UsRUFBUSxDQUNqRCxNQUFPLE1BQ1gsQ0FBRyxFQUNEemIsRUFBSyxNQUFDcWEsRUFBWW5PLEVBQU8sQ0FDdkIsTUFBTyxNQUNYLENBQUcsRUFDR3dQLEVBQWUsZ0JBQUEsR0FDakJDLEVBQWMsZUFBQ3ZFLENBQU8sRUFFakIsQ0FDTCxFQUFHd0UsRUFBZSxnQkFBQ3ZSLENBQUMsRUFDcEIsRUFBR3VSLEVBQWUsZ0JBQUN0UixDQUFDLEVBQ3BCLFNBQVVzUixFQUFlLGdCQUFDdFEsQ0FBUSxFQUNsQyxVQUFXc1EsRUFBZSxnQkFBQzVTLENBQVMsRUFDcEMsZUFBZ0I0UyxFQUFlLGdCQUFDalEsQ0FBYyxFQUM5QyxhQUFjaVEsRUFBZSxnQkFBQ1gsQ0FBWSxFQUMxQyxlQUFBQyxFQUNBLE9BQUEvQyxDQUNKLENBQ0EsQ0MzTGEsTUFBQTBELEdBQWlCLENBQUMvVixFQUFtQnlHLElBRXpDLEVBRFMsTUFBTSxRQUFRQSxDQUFRLEVBQUlBLEVBQVcsQ0FBQ0EsQ0FBUSxHQUM5QyxLQUFNK0ksR0FBT0EsRUFBRyxTQUFTeFAsRUFBTSxNQUFjLENBQUMsd0dDaUJ4RGdXLEVBQWtDL2IsTUFBSSxJQUFJLEVBQzFDNkssRUFBb0M3SyxNQUFJLElBQUksRUFDNUNvWCxFQUFnQ3BYLE1BQUksSUFBSSxFQUN4Q2djLEVBQVloYyxNQUFJLEVBQUssRUFDckJpYyxFQUFnQmpjLE1BQUksRUFBSyxFQUN6QndMLEVBQWF4TCxFQUFBQSxJQUFJLENBQUNzTixLQUFpQjRPLEdBQWlCLENBQUUsU0FBVWhjLEVBQU0sTUFBUSxDQUFBLEVBQUdnUCxHQUFNLENBQUUsUUFBUyxFQUFHLENBQUMsQ0FBQyxDQUFDLEVBRXhHaU4sRUFBZ0I5YSxFQUFBQSxTQUFTLElBQU0yYSxFQUFVLE9BQVNDLEVBQWMsS0FBSyxFQUVyRSxDQUFFLGVBQUFkLENBQW1CLEVBQUFmLEdBQVkyQixFQUFRbFIsRUFBVSxDQUN2RCxXQUFBVyxFQUNBLFNBQVUsUUFDVixxQkFBc0IyTSxFQUFBLENBQ3ZCLEVBRUtpRSxFQUFnQ0MsR0FBa0IsQ0FDbEQsQ0FBQ04sRUFBTyxPQUFTLENBQUNsUixFQUFTLE9BQzNCaVIsR0FBZU8sRUFBRyxDQUFDTixFQUFPLE1BQU9sUixFQUFTLEtBQUssQ0FBQyxJQUNsRHdSLEVBQUUseUJBQXlCLEVBQzNCSixFQUFjLE1BQVEsR0FDeEIsRUFHSUssRUFBK0IsSUFBTSxDQUN6Q04sRUFBVSxNQUFRLEVBQUEsRUFHZE8sRUFBZ0MsSUFBTSxDQUMxQ1AsRUFBVSxNQUFRLEVBQUEsRUFHZFEsRUFBMkIsSUFBTSxDQUNyQ1AsRUFBYyxNQUFRLEVBQUEsRUFHbEJRLEVBQThCLElBQU0sQ0FDeEMsR0FBSSxDQUFDVixFQUFPLE1BQWMsT0FBQSxLQUNuQkEsRUFBQSxNQUFNLGlCQUFpQixZQUFhTyxDQUE0QixFQUNoRVAsRUFBQSxNQUFNLGlCQUFpQixhQUFjUSxDQUE2QixFQUNsRVIsRUFBQSxNQUFNLGlCQUFpQixRQUFTUyxDQUF3QixDQUFBLEVBRzNERSxFQUFtQyxJQUFNLENBQzdDLEdBQUksQ0FBQ1gsRUFBTyxNQUFjLE9BQUEsS0FDbkJBLEVBQUEsTUFBTSxvQkFBb0IsWUFBYU8sQ0FBNEIsRUFDbkVQLEVBQUEsTUFBTSxvQkFBb0IsYUFBY1EsQ0FBNkIsRUFDckVSLEVBQUEsTUFBTSxvQkFBb0IsUUFBU1MsQ0FBd0IsQ0FBQSxFQUc5REcsRUFBa0NOLEdBQXFCLENBQ3ZEQSxFQUFFLE1BQVEsV0FDWkosRUFBYyxNQUFRLEdBQ3hCLEVBR0lXLEVBQXlCLElBQU0sQ0FDOUJ4RixFQUFLLFFBQ1ZBLEVBQUssTUFBTSxpQkFBaUIsUUFBU2dGLEVBQThCLEVBQUksRUFDbEVoRixFQUFBLE1BQU0saUJBQWlCLFVBQVd1RixDQUE4QixFQUFBLEVBR2pFRSxFQUE4QixJQUFNLENBQ25DekYsRUFBSyxRQUNWQSxFQUFLLE1BQU0sb0JBQW9CLFFBQVNnRixFQUE4QixFQUFJLEVBQ3JFaEYsRUFBQSxNQUFNLG9CQUFvQixVQUFXdUYsQ0FBOEIsRUFBQSxFQUdwRUcsRUFBc0IsSUFBTSxDQUNoQ2YsRUFBTyxNQUFRLFNBQVMsZUFBZTdiLEVBQU0sUUFBUSxDQUFBLEVBR3ZERCxPQUFBQSxFQUFBLE1BQ0UsSUFBTWdjLEVBQWMsTUFDbkJwWSxHQUFhLENBQ1JBLEVBQ3FCK1ksSUFFS0MsR0FFaEMsQ0FBQSxFQUdGNWMsRUFBQSxNQUNFLElBQU1DLEVBQU0sU0FDWixJQUFNLENBQzZCd2MsSUFDYkksSUFDUUwsR0FDOUIsQ0FBQSxFQUdGTSxFQUFBQSxZQUFZLElBQU0sQ0FDaEJ2UixFQUFXLE1BQVEsQ0FBQzhCLEdBQWlCLEVBQUE0TyxHQUFpQixDQUFFLFNBQVVoYyxFQUFNLE1BQVEsQ0FBQSxFQUFHZ1AsR0FBTSxDQUFFLFFBQVMsRUFBQSxDQUFJLENBQUMsQ0FBQSxDQUMxRyxFQUVEOE4sRUFBQUEsY0FBYyxJQUFNLENBQ0Q1VixJQUFBLENBQ2xCLEVBRURwRSxFQUFBQSxVQUFVLElBQU0sQ0FDTThaLElBQ3BCMUYsRUFBSyxNQUFRLFNBQVMsZ0JBQ01xRixHQUFBLENBQzdCLEVBRUR4WixFQUFBQSxZQUFZLElBQU0sQ0FDaUJ5WixHQUFBLENBQ2xDLHV6REM1R0tuYixFQUFjLElBQU0sQ0FDbkJyQixFQUFNLFVBQ1RZLEVBQUssUUFBUSxDQUNmLG0xQkNmU21jLEdBQVMsQ0FDcEIsT0FBUTFkLEdBQ1IsTUFBT00sR0FDUCxNQUFPQyxFQUNULEVBRWFvZCxFQUFlLENBQzFCLE1BQU8sZUFDUCxtQkFBb0Isa0JBQ3BCLFdBQVksZ0JBQ1osTUFDRSx3SkFDRixnQkFBaUIsaUVBQ2pCLE1BQU8sbURBQ1AsTUFBTyw2REFDVCxFQ2hCYUMsR0FBb0IsQ0FDL0IsTUFBTyxDQUNMLFVBQVcsWUFDWCxNQUFPLE9BQ1QsRUFDQSxNQUFPLFFBQ1AsR0FBSSxJQUNOLEVDVGFDLEdBQVksQ0FDdkIsbUJBQW9CblosR0FBWWlaLEVBQWEsa0JBQWtCLEVBQy9ELFlBQWFqWixHQUFZaVosRUFBYSxVQUFVLEVBQ2hELE1BQU9qWixHQUFZaVosRUFBYSxLQUFLLEVBQ3JDLE9BQVFqWixHQUFZaVosRUFBYSxlQUFlLEVBQ2hELE1BQU9qWixHQUFZaVosRUFBYSxLQUFLLENBQ3ZDIiwieF9nb29nbGVfaWdub3JlTGlzdCI6WzI5LDMwLDMxLDMyLDMzXX0=
|