diff --git a/404.html b/404.html new file mode 100644 index 0000000..350c56a --- /dev/null +++ b/404.html @@ -0,0 +1,22 @@ + + + + + + 404 | VuePDF + + + + + + + + + + + +
+ + + + \ No newline at end of file diff --git a/assets/app.CPdx1pHn.js b/assets/app.CPdx1pHn.js new file mode 100644 index 0000000..2844c27 --- /dev/null +++ b/assets/app.CPdx1pHn.js @@ -0,0 +1 @@ +import{U as o,ac as p,ad as u,ae as l,af as c,ag as f,ah as d,ai as m,aj as h,ak as g,al as A,d as P,u as v,y,x as w,am as C,an as R,ao as b,ap as E}from"./chunks/framework.uxIHJ7Q2.js";import{R as S}from"./chunks/theme.DKJ1gKC5.js";function i(e){if(e.extends){const a=i(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const s=i(S),T=P({name:"VitePressApp",setup(){const{site:e,lang:a,dir:t}=v();return y(()=>{w(()=>{document.documentElement.lang=a.value,document.documentElement.dir=t.value})}),e.value.router.prefetchLinks&&C(),R(),b(),s.setup&&s.setup(),()=>E(s.Layout)}});async function _(){globalThis.__VITEPRESS__=!0;const e=x(),a=j();a.provide(u,e);const t=l(e.route);return a.provide(c,t),a.component("Content",f),a.component("ClientOnly",d),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),s.enhanceApp&&await s.enhanceApp({app:a,router:e,siteData:m}),{app:a,router:e,data:t}}function j(){return h(T)}function x(){let e=o,a;return g(t=>{let n=A(t),r=null;return n&&(e&&(a=n),(e||a===n)&&(n=n.replace(/\.js$/,".lean.js")),r=import(n)),o&&(e=!1),r},s.NotFound)}o&&_().then(({app:e,router:a,data:t})=>{a.go().then(()=>{p(a.route,t.site),e.mount("#app")})});export{_ as createApp}; diff --git a/assets/chunks/@localSearchIndexroot.CQmrweKt.js b/assets/chunks/@localSearchIndexroot.CQmrweKt.js new file mode 100644 index 0000000..9436e19 --- /dev/null +++ b/assets/chunks/@localSearchIndexroot.CQmrweKt.js @@ -0,0 +1 @@ +const e='{"documentCount":85,"nextId":85,"documentIds":{"0":"/vue-pdf/examples/README.html#examples-list","1":"/vue-pdf/examples/advanced/annotation_filter.html#annotations-filter","2":"/vue-pdf/examples/advanced/highlight_text.html#highlight-text","3":"/vue-pdf/examples/advanced/fit_parent.html#fit-parent","4":"/vue-pdf/examples/advanced/multiple_pdf.html#multiples-pdf","5":"/vue-pdf/examples/advanced/toc.html#table-of-content","6":"/vue-pdf/examples/advanced/watermark.html#watermark-text","7":"/vue-pdf/examples/annotation_events/annotation_attachment.html#file-attachment","8":"/vue-pdf/examples/annotation_events/annotation_forms.html#forms-fields","9":"/vue-pdf/examples/annotation_events/annotation_links.html#links","10":"/vue-pdf/examples/basic/all_pages.html#all-pages","11":"/vue-pdf/examples/basic/one_page.html#one-page","12":"/vue-pdf/examples/basic/annotation_layer.html#annotation-layer","13":"/vue-pdf/examples/basic/rotation.html#rotation","14":"/vue-pdf/examples/basic/scale.html#scale","15":"/vue-pdf/examples/basic/text_layer.html#text-layer","16":"/vue-pdf/examples/basic/xfa_layer.html#xfa-forms","17":"/vue-pdf/examples/loaded_events/annotation_loaded.html#annotation-loaded-event","18":"/vue-pdf/examples/loaded_events/loaded.html#loaded-event","19":"/vue-pdf/examples/loaded_events/text_loaded.html#text-loaded-event","20":"/vue-pdf/examples/loaded_events/xfa_loaded.html#xfa-loaded-event","21":"/vue-pdf/examples/text_events/text_highlight.html#highlight-event","22":"/vue-pdf/guide/composables.html#composables","23":"/vue-pdf/guide/composables.html#usepdf","24":"/vue-pdf/guide/composables.html#reactivity","25":"/vue-pdf/guide/composables.html#parameters","26":"/vue-pdf/guide/composables.html#src","27":"/vue-pdf/guide/composables.html#options","28":"/vue-pdf/guide/composables.html#properties","29":"/vue-pdf/guide/composables.html#pdf","30":"/vue-pdf/guide/composables.html#pages","31":"/vue-pdf/guide/composables.html#info","32":"/vue-pdf/guide/composables.html#getpdfdestination","33":"/vue-pdf/guide/composables.html#print","34":"/vue-pdf/guide/composables.html#download","35":"/vue-pdf/guide/composables.html#document-api","36":"/vue-pdf/guide/composables.html#make-your-own-composable","37":"/vue-pdf/guide/events.html#events","38":"/vue-pdf/guide/events.html#loaded","39":"/vue-pdf/guide/events.html#text-loaded","40":"/vue-pdf/guide/events.html#annotation-loaded","41":"/vue-pdf/guide/events.html#xfa-loaded","42":"/vue-pdf/guide/events.html#highlight","43":"/vue-pdf/guide/events.html#annotation","44":"/vue-pdf/guide/events.html#internal-link","45":"/vue-pdf/guide/events.html#link","46":"/vue-pdf/guide/events.html#file-attachment","47":"/vue-pdf/guide/events.html#form-text","48":"/vue-pdf/guide/events.html#form-select","49":"/vue-pdf/guide/events.html#form-checkbox","50":"/vue-pdf/guide/events.html#form-radio","51":"/vue-pdf/guide/events.html#form-button","52":"/vue-pdf/guide/introduction.html#introduction","53":"/vue-pdf/guide/introduction.html#installation","54":"/vue-pdf/guide/introduction.html#basic-usage","55":"/vue-pdf/guide/introduction.html#working-with-layers","56":"/vue-pdf/guide/introduction.html#text-and-annotations","57":"/vue-pdf/guide/introduction.html#xfa-forms","58":"/vue-pdf/guide/introduction.html#server-side-rendering","59":"/vue-pdf/guide/introduction.html#supporting-non-latin-characters","60":"/vue-pdf/guide/introduction.html#contributing","61":"/vue-pdf/guide/methods.html#methods","62":"/vue-pdf/guide/methods.html#reload","63":"/vue-pdf/guide/methods.html#cancel","64":"/vue-pdf/guide/slots.html#slots","65":"/vue-pdf/guide/slots.html#loading-default","66":"/vue-pdf/guide/props.html#props","67":"/vue-pdf/guide/props.html#pdf","68":"/vue-pdf/guide/props.html#page","69":"/vue-pdf/guide/props.html#intent","70":"/vue-pdf/guide/props.html#scale","71":"/vue-pdf/guide/props.html#fit-parent","72":"/vue-pdf/guide/props.html#width","73":"/vue-pdf/guide/props.html#height","74":"/vue-pdf/guide/props.html#rotation","75":"/vue-pdf/guide/props.html#text-layer","76":"/vue-pdf/guide/props.html#highlight-text","77":"/vue-pdf/guide/props.html#highlight-options","78":"/vue-pdf/guide/props.html#annotation-layer","79":"/vue-pdf/guide/props.html#watermark-text","80":"/vue-pdf/guide/props.html#watermark-options","81":"/vue-pdf/guide/props.html#image-resources-path","82":"/vue-pdf/guide/props.html#hide-forms","83":"/vue-pdf/guide/props.html#annotations-filter","84":"/vue-pdf/guide/props.html#annotations-map"},"fieldIds":{"title":0,"titles":1,"text":2},"fieldLength":{"0":[2,1,1],"1":[2,1,52],"2":[2,1,50],"3":[2,1,60],"4":[2,1,60],"5":[3,1,56],"6":[2,1,59],"7":[2,1,40],"8":[2,1,29],"9":[1,1,29],"10":[2,1,38],"11":[2,1,40],"12":[2,1,32],"13":[1,1,41],"14":[1,1,43],"15":[2,1,42],"16":[2,1,28],"17":[3,1,46],"18":[2,1,37],"19":[3,1,56],"20":[3,1,32],"21":[2,1,72],"22":[1,1,1],"23":[1,1,72],"24":[1,2,46],"25":[1,2,1],"26":[1,3,27],"27":[1,3,54],"28":[1,2,9],"29":[1,3,11],"30":[1,3,7],"31":[1,3,19],"32":[1,3,24],"33":[1,3,25],"34":[1,3,20],"35":[2,2,38],"36":[4,1,72],"37":[1,1,1],"38":[1,1,40],"39":[2,1,73],"40":[2,1,39],"41":[2,1,18],"42":[1,1,40],"43":[1,1,51],"44":[2,2,27],"45":[1,2,19],"46":[2,2,22],"47":[2,2,21],"48":[2,2,27],"49":[2,2,18],"50":[2,2,22],"51":[2,2,22],"52":[1,1,36],"53":[1,1,9],"54":[2,1,33],"55":[3,1,1],"56":[3,4,70],"57":[2,4,36],"58":[3,1,45],"59":[4,1,83],"60":[1,1,44],"61":[1,1,1],"62":[1,1,41],"63":[1,1,31],"64":[1,1,1],"65":[2,1,18],"66":[1,1,1],"67":[1,1,15],"68":[1,1,26],"69":[1,1,21],"70":[1,1,19],"71":[2,1,32],"72":[1,1,35],"73":[1,1,29],"74":[1,1,25],"75":[2,1,16],"76":[2,1,29],"77":[2,1,31],"78":[2,1,22],"79":[2,1,22],"80":[2,1,45],"81":[3,1,32],"82":[2,1,19],"83":[2,1,64],"84":[2,1,39]},"averageFieldLength":[1.7176470588235293,1.4,32.70588235294115],"storedFields":{"0":{"title":"Examples List","titles":[]},"1":{"title":"Annotations Filter","titles":[]},"2":{"title":"Highlight Text","titles":[]},"3":{"title":"Fit parent","titles":[]},"4":{"title":"Multiples PDF","titles":[]},"5":{"title":"Table of content","titles":[]},"6":{"title":"Watermark Text","titles":[]},"7":{"title":"File attachment","titles":[]},"8":{"title":"Forms fields","titles":[]},"9":{"title":"Links","titles":[]},"10":{"title":"All pages","titles":[]},"11":{"title":"One page","titles":[]},"12":{"title":"Annotation Layer","titles":[]},"13":{"title":"Rotation","titles":[]},"14":{"title":"Scale","titles":[]},"15":{"title":"Text Layer","titles":[]},"16":{"title":"XFA Forms","titles":[]},"17":{"title":"Annotation Loaded Event","titles":[]},"18":{"title":"Loaded Event","titles":[]},"19":{"title":"Text Loaded Event","titles":[]},"20":{"title":"XFA Loaded Event","titles":[]},"21":{"title":"Highlight Event","titles":[]},"22":{"title":"Composables","titles":[]},"23":{"title":"usePDF","titles":["Composables"]},"24":{"title":"Reactivity","titles":["Composables","usePDF"]},"25":{"title":"Parameters","titles":["Composables","usePDF"]},"26":{"title":"src","titles":["Composables","usePDF","Parameters"]},"27":{"title":"options","titles":["Composables","usePDF","Parameters"]},"28":{"title":"Properties","titles":["Composables","usePDF"]},"29":{"title":"pdf","titles":["Composables","usePDF","Properties"]},"30":{"title":"pages","titles":["Composables","usePDF","Properties"]},"31":{"title":"info","titles":["Composables","usePDF","Properties"]},"32":{"title":"getPDFDestination","titles":["Composables","usePDF","Properties"]},"33":{"title":"print","titles":["Composables","usePDF","Properties"]},"34":{"title":"download","titles":["Composables","usePDF","Properties"]},"35":{"title":"Document API","titles":["Composables","usePDF"]},"36":{"title":"Make your own composable","titles":["Composables"]},"37":{"title":"Events","titles":[]},"38":{"title":"loaded","titles":["Events"]},"39":{"title":"text-loaded","titles":["Events"]},"40":{"title":"annotation-loaded","titles":["Events"]},"41":{"title":"xfa-loaded","titles":["Events"]},"42":{"title":"highlight","titles":["Events"]},"43":{"title":"annotation","titles":["Events"]},"44":{"title":"internal-link","titles":["Events","annotation"]},"45":{"title":"link","titles":["Events","annotation"]},"46":{"title":"file-attachment","titles":["Events","annotation"]},"47":{"title":"form-text","titles":["Events","annotation"]},"48":{"title":"form-select","titles":["Events","annotation"]},"49":{"title":"form-checkbox","titles":["Events","annotation"]},"50":{"title":"form-radio","titles":["Events","annotation"]},"51":{"title":"form-button","titles":["Events","annotation"]},"52":{"title":"Introduction","titles":[]},"53":{"title":"Installation","titles":["Introduction"]},"54":{"title":"Basic Usage","titles":["Introduction"]},"55":{"title":"Working With Layers","titles":["Introduction"]},"56":{"title":"Text and Annotations","titles":["Introduction","Working With Layers"]},"57":{"title":"XFA Forms","titles":["Introduction","Working With Layers"]},"58":{"title":"Server-Side Rendering","titles":["Introduction"]},"59":{"title":"Supporting Non-Latin characters","titles":["Introduction"]},"60":{"title":"Contributing","titles":["Introduction"]},"61":{"title":"Methods","titles":[]},"62":{"title":"reload","titles":["Methods"]},"63":{"title":"cancel","titles":["Methods"]},"64":{"title":"Slots","titles":[]},"65":{"title":"loading: default","titles":["Slots"]},"66":{"title":"Props","titles":[]},"67":{"title":"pdf","titles":["Props"]},"68":{"title":"page","titles":["Props"]},"69":{"title":"intent","titles":["Props"]},"70":{"title":"scale","titles":["Props"]},"71":{"title":"fit-parent","titles":["Props"]},"72":{"title":"width","titles":["Props"]},"73":{"title":"height","titles":["Props"]},"74":{"title":"rotation","titles":["Props"]},"75":{"title":"text-layer","titles":["Props"]},"76":{"title":"highlight-text","titles":["Props"]},"77":{"title":"highlight-options","titles":["Props"]},"78":{"title":"annotation-layer","titles":["Props"]},"79":{"title":"watermark-text","titles":["Props"]},"80":{"title":"watermark-options","titles":["Props"]},"81":{"title":"image-resources-path","titles":["Props"]},"82":{"title":"hide-forms","titles":["Props"]},"83":{"title":"annotations-filter","titles":["Props"]},"84":{"title":"annotations-map","titles":["Props"]}},"dirtCount":0,"index":[["└─",{"2":{"59":1}}],["│",{"2":{"59":3}}],["├─",{"2":{"59":6}}],["quot",{"2":{"58":2}}],["😃",{"2":{"54":1}}],["7r",{"2":{"84":1}}],["716",{"2":{"44":1}}],["700",{"2":{"39":1}}],["3",{"2":{"44":1,"52":1}}],["300",{"2":{"3":1}}],["69",{"2":{"39":1}}],["6706",{"2":{"39":1}}],["9328",{"2":{"39":3}}],["90°",{"2":{"74":1}}],["90",{"2":{"13":3,"38":1,"39":1,"74":2}}],["5",{"2":{"70":1}}],["5159",{"2":{"39":1}}],["595",{"2":{"38":2}}],["500",{"2":{"72":1,"73":1}}],["50px",{"2":{"3":2}}],["50",{"2":{"3":2}}],["`pdf",{"2":{"27":1}}],["`$",{"2":{"27":1}}],["`",{"2":{"27":2}}],["`reason",{"2":{"27":1}}],["`width",{"2":{"3":1}}],["|",{"2":{"26":7,"36":1,"59":2,"76":1}}],["keep",{"2":{"23":1}}],["key=",{"2":{"1":1,"10":1}}],["yourself",{"2":{"36":1}}],["your",{"0":{"36":1},"2":{"23":1,"36":2,"52":1,"54":1,"56":2,"59":1}}],["you",{"2":{"23":2,"24":1,"35":1,"36":1,"52":1,"56":1,"58":2,"59":4,"60":1}}],["edit",{"2":{"84":1}}],["eg",{"2":{"74":1}}],["enabling",{"2":{"56":1,"57":1}}],["enables",{"2":{"75":1,"78":1}}],["enable",{"2":{"27":1}}],["enablexfa",{"2":{"16":1,"20":1,"57":1}}],["element",{"2":{"47":1,"48":1,"49":1,"51":1}}],["external",{"2":{"45":1}}],["example",{"2":{"1":2,"4":4,"5":1,"7":1,"8":1,"9":1,"12":1,"16":1,"17":1,"20":1,"32":1,"38":1,"39":1,"40":1,"42":1,"57":2,"62":1}}],["examples",{"0":{"0":1},"2":{"56":1}}],["emitted",{"2":{"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1}}],["embedded",{"2":{"31":1}}],["etc",{"2":{"35":1,"78":1,"83":1}}],["error",{"2":{"27":2,"58":1,"59":1}}],["errors",{"2":{"27":1}}],["events",{"0":{"37":1},"1":{"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1},"2":{"43":1}}],["event",{"0":{"17":1,"18":1,"19":1,"20":1,"21":1},"2":{"17":1,"19":1,"21":1,"42":2,"43":2}}],["xfa",{"0":{"16":1,"20":1,"41":1,"57":1},"2":{"16":1,"20":3,"41":2,"57":3}}],["x3c",{"2":{"1":13,"2":12,"3":17,"4":11,"5":12,"6":15,"7":7,"8":7,"9":7,"10":7,"11":16,"12":11,"13":15,"14":16,"15":11,"16":7,"17":7,"18":7,"19":7,"20":7,"21":8,"23":5,"24":5,"36":7,"38":1,"39":3,"40":1,"41":1,"42":1,"43":1,"54":5,"56":5,"57":5,"59":2,"62":5,"63":5,"65":6,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":2,"77":1,"78":1,"79":1,"80":3,"81":1,"82":1,"83":3,"84":3}}],["23ffff",{"2":{"80":1}}],["270",{"2":{"74":1}}],["276",{"2":{"38":2}}],["20",{"2":{"40":1,"80":1}}],["209",{"2":{"39":1}}],["2",{"2":{"14":1}}],["25",{"2":{"14":3}}],["210",{"2":{"6":1,"80":1}}],["211",{"2":{"6":2,"80":2}}],["83",{"2":{"46":1}}],["82",{"2":{"44":1}}],["89",{"2":{"38":2}}],["841",{"2":{"38":2}}],["8",{"2":{"6":1}}],["449",{"2":{"39":1}}],["45",{"2":{"6":1,"80":2}}],["4",{"2":{"6":2,"40":1,"80":3}}],["update",{"2":{"60":1,"62":1}}],["updatepassword",{"2":{"27":2}}],["uint8array",{"2":{"46":1}}],["utf8test",{"2":{"46":1}}],["using",{"2":{"34":1,"36":1,"42":1,"72":1,"73":1}}],["useful",{"2":{"62":1,"84":1}}],["uses",{"2":{"59":1}}],["useworkerfetch",{"2":{"59":1}}],["user",{"2":{"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1}}],["used",{"2":{"32":1,"62":1}}],["use",{"2":{"23":2,"24":1,"35":2,"36":1,"54":1,"56":1}}],["usepdf",{"0":{"23":1},"1":{"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1},"2":{"1":2,"2":2,"3":2,"4":2,"5":2,"6":2,"7":2,"8":2,"9":2,"10":2,"11":2,"12":2,"13":2,"14":2,"15":2,"16":2,"17":2,"18":2,"19":2,"20":2,"21":2,"23":4,"24":3,"26":1,"27":1,"28":1,"35":1,"36":1,"54":3,"56":2,"57":3,"58":1,"59":2,"67":1}}],["usage",{"0":{"54":1},"2":{"23":1,"54":1}}],["url",{"2":{"16":1,"20":1,"26":2,"45":1,"57":1,"59":2}}],["underline",{"2":{"83":1}}],["undefined",{"2":{"5":1}}],["unsafeurl",{"2":{"45":1}}],["unpkg",{"2":{"7":1,"81":1}}],["graphics",{"2":{"81":1}}],["git",{"2":{"60":2}}],["github",{"2":{"11":1,"60":1}}],["githubusercontent",{"2":{"2":1,"3":1,"4":1,"6":1,"10":1,"13":1,"14":1,"15":1,"18":1,"19":1,"21":1,"36":1}}],["guide",{"2":{"56":1}}],["gender",{"2":{"48":1}}],["general",{"2":{"43":1}}],["getting",{"2":{"59":1}}],["getdocument",{"2":{"36":1}}],["getdata",{"2":{"35":1}}],["get",{"2":{"23":1,"35":1}}],["getpdfdestination",{"0":{"32":1},"2":{"5":2}}],["g",{"2":{"39":2}}],["gt",{"2":{"24":1,"26":4}}],["110",{"2":{"46":1}}],["101",{"2":{"46":1}}],["100",{"2":{"14":1,"27":1}}],["17",{"2":{"39":3}}],["150",{"2":{"33":1}}],["180",{"2":{"74":1}}],["18",{"2":{"6":1,"80":1}}],["1",{"2":{"4":1,"11":4,"13":1,"14":1,"38":3,"68":3,"70":1,"80":2}}],["npm",{"2":{"60":2}}],["npmyarn",{"2":{"53":1}}],["necessary",{"2":{"56":1}}],["newsletter",{"2":{"49":1}}],["needed",{"2":{"81":1}}],["need",{"2":{"36":1,"59":2}}],["next",{"2":{"4":1,"11":1}}],["nextpdf",{"2":{"4":2}}],["nuxt",{"2":{"58":1}}],["number",{"2":{"30":1,"32":1,"68":1,"72":1,"73":1}}],["null",{"2":{"1":1,"3":1,"6":1,"72":1,"73":1,"76":1,"79":1,"81":1,"83":1,"84":1}}],["now",{"2":{"59":1}}],["non",{"0":{"59":1},"2":{"59":1}}],["no",{"2":{"27":1,"59":1}}],["note",{"2":{"83":1}}],["not",{"2":{"23":1,"36":1,"59":1}}],["node",{"2":{"5":4,"59":2,"60":1}}],["named",{"2":{"23":1}}],["during",{"2":{"58":1,"59":1}}],["drink",{"2":{"50":1}}],["dynamic",{"2":{"39":1}}],["d3",{"2":{"39":2}}],["don",{"2":{"59":1}}],["done",{"2":{"56":1}}],["down",{"2":{"51":1}}],["downloaded",{"2":{"34":1}}],["downloading",{"2":{"34":1}}],["download",{"0":{"34":1}}],["double",{"2":{"46":1}}],["docs",{"2":{"60":2}}],["doc",{"2":{"35":5}}],["documentation",{"2":{"60":1}}],["documentinitparameters",{"2":{"26":2}}],["documentinitparameter",{"2":{"23":1}}],["document",{"0":{"35":1},"2":{"23":2,"27":1,"29":1,"30":1,"31":1,"35":2,"44":1,"74":1,"78":1}}],["dosomething",{"2":{"35":1}}],["dpi",{"2":{"33":1}}],["data",{"2":{"17":1,"19":1,"21":1,"38":1,"43":3,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"84":1}}],["directory",{"2":{"59":3}}],["directive",{"2":{"58":1}}],["dir",{"2":{"39":1}}],["dialog",{"2":{"33":1}}],["display",{"2":{"17":1,"19":1,"21":1,"59":1,"65":1,"69":2,"83":1}}],["dist",{"2":{"7":1,"36":1,"59":3,"81":1}}],["div",{"2":{"3":1,"5":3,"10":1,"16":1}}],["div>",{"2":{"1":4,"2":4,"3":5,"4":4,"5":3,"6":4,"7":2,"8":2,"9":2,"10":1,"11":4,"12":4,"13":4,"14":4,"15":4,"16":1,"17":2,"18":2,"19":2,"20":2,"21":2,"36":2,"65":2}}],["dev",{"2":{"60":1}}],["depends",{"2":{"43":1}}],["descent",{"2":{"39":1}}],["dest",{"2":{"5":1,"32":1}}],["destination",{"2":{"5":1}}],["details",{"2":{"29":1}}],["decide",{"2":{"23":1}}],["defaultvalue",{"2":{"50":1}}],["default",{"0":{"65":1},"2":{"4":1,"23":2,"33":2,"34":1,"56":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":2,"75":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1}}],["over",{"2":{"79":1,"80":1}}],["obtained",{"2":{"67":1}}],["objects",{"2":{"28":1,"31":1,"39":1}}],["object",{"2":{"27":2,"31":4,"32":2,"36":1,"77":1,"80":1,"84":1}}],["own",{"0":{"36":1},"2":{"36":1,"56":1}}],["open",{"2":{"17":1,"19":1,"21":1,"33":1}}],["options",{"0":{"27":1,"77":1,"80":1},"2":{"42":1,"48":1,"50":1,"83":1}}],["options=",{"2":{"2":1,"6":1,"21":1,"77":1,"80":1}}],["option>",{"2":{"1":1}}],["option",{"2":{"1":1}}],["only",{"2":{"58":1}}],["onloaded",{"2":{"17":2,"18":2,"19":2,"20":2,"38":1,"39":1,"40":1,"41":1}}],["onmounted",{"2":{"36":2}}],["onprogress",{"2":{"27":3}}],["onpassword",{"2":{"27":3}}],["onhighlight",{"2":{"21":2,"42":1}}],["on",{"2":{"17":1,"19":1,"21":1,"36":1,"43":1,"44":1,"45":1,"51":1,"54":1,"59":1,"76":1,"77":1,"83":1}}],["onerror",{"2":{"27":3}}],["one",{"0":{"11":1},"2":{"48":1}}],["onannotation",{"2":{"7":2,"8":2,"9":2,"43":1}}],["onchapterclick",{"2":{"5":2}}],["outline",{"2":{"5":2,"31":2,"32":1}}],["outlinetree",{"2":{"5":3}}],["offset",{"2":{"44":1}}],["offsety",{"2":{"38":1}}],["offsetx",{"2":{"38":1}}],["of",{"0":{"5":1},"2":{"23":2,"24":2,"26":1,"31":1,"32":1,"33":1,"34":1,"39":1,"40":1,"42":1,"43":1,"52":1,"58":1,"76":1}}],["or",{"2":{"4":1,"27":1,"32":1,"35":1,"36":1,"48":1,"58":1,"59":1,"60":2,"69":1,"76":1}}],["must",{"2":{"68":1}}],["multi",{"2":{"48":1}}],["multiples",{"0":{"4":1},"2":{"74":1}}],["milk",{"2":{"50":1}}],["mind",{"2":{"23":1}}],["m",{"2":{"48":2}}],["methods",{"0":{"61":1},"1":{"62":1,"63":1},"2":{"35":1}}],["metadata",{"2":{"31":2}}],["made",{"2":{"59":1}}],["main",{"2":{"52":1}}],["mailto",{"2":{"45":2}}],["male",{"2":{"48":2}}],["matches",{"2":{"42":1}}],["make",{"0":{"36":1},"2":{"23":1}}],["many",{"2":{"17":1,"19":1,"21":1}}],["map=",{"2":{"84":1}}],["map",{"0":{"84":1},"2":{"5":2,"84":1}}],["modified",{"2":{"84":1}}],["modules",{"2":{"59":2,"60":1}}],["model=",{"2":{"1":1,"2":3,"6":6,"21":1}}],["most",{"2":{"54":1}}],["mouse",{"2":{"51":1}}],["monitor",{"2":{"27":1}}],["more",{"2":{"23":1,"29":1,"35":1,"39":2,"40":2,"71":1,"72":1}}],["mozilla",{"2":{"2":1,"3":1,"4":1,"6":1,"10":1,"11":1,"13":1,"14":1,"15":1,"18":1,"19":1,"21":1,"36":1}}],["$",{"2":{"3":1,"27":2}}],["at",{"2":{"68":1}}],["attachments",{"2":{"31":2}}],["attachment",{"0":{"7":1,"46":1},"2":{"43":1,"46":3}}],["available",{"2":{"59":1,"83":1}}],["aor",{"2":{"45":2}}],["acroforms",{"2":{"82":1}}],["access",{"2":{"35":1}}],["actions",{"2":{"51":1}}],["action",{"2":{"34":1}}],["api",{"0":{"35":1},"2":{"35":1,"36":1}}],["array",{"2":{"31":1,"76":1,"83":1}}],["are",{"2":{"23":1,"28":1,"52":1,"58":1,"59":2,"60":1,"83":1}}],["associated",{"2":{"43":1}}],["ascent",{"2":{"39":1}}],["as",{"2":{"23":1,"36":1,"52":1,"54":2,"56":1}}],["about",{"2":{"23":1,"59":1}}],["alongside",{"2":{"59":1}}],["aldo",{"2":{"47":1}}],["also",{"2":{"23":1,"24":2,"57":1,"58":1}}],["allows",{"2":{"52":1,"83":1,"84":1}}],["all",{"0":{"10":1},"2":{"28":1,"52":1,"83":1}}],["another",{"2":{"44":1}}],["any",{"2":{"43":1,"60":1,"69":1}}],["an",{"2":{"27":1,"34":1,"43":1,"45":1,"46":1,"47":1,"48":1,"58":1}}],["and",{"0":{"56":1},"2":{"23":3,"24":1,"35":1,"39":1,"42":3,"54":2,"56":3,"71":1,"72":1}}],["annotationmap",{"2":{"84":2}}],["annotationtype",{"2":{"40":1}}],["annotationflags",{"2":{"40":1}}],["annotation=",{"2":{"7":1,"8":1,"9":1,"43":1}}],["annotation",{"0":{"12":1,"17":1,"40":1,"43":1,"78":1},"1":{"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1},"2":{"1":1,"7":1,"8":1,"9":1,"12":6,"17":3,"40":2,"43":4,"46":1,"56":5,"78":1,"82":2,"83":1,"84":3}}],["annotationsstorage",{"2":{"35":1}}],["annotationstorage",{"2":{"35":1}}],["annotations",{"0":{"1":1,"56":1,"83":1,"84":1},"2":{"1":1,"40":2,"78":1,"83":2,"84":1}}],["a",{"2":{"23":1,"24":2,"34":1,"36":1,"42":2,"44":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"56":1,"58":2,"59":1,"68":1,"72":1,"73":1,"79":1}}],["add",{"2":{"3":1,"53":1}}],["+90",{"2":{"13":1}}],["+=",{"2":{"4":1}}],["+",{"2":{"3":1,"11":1,"13":1,"14":2}}],["just",{"2":{"36":1,"39":1}}],["javascript",{"2":{"2":1,"31":1,"76":2,"77":1}}],["json",{"2":{"31":1,"38":1,"39":1,"40":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"59":1}}],["jsfunction",{"2":{"27":1}}],["jsconst",{"2":{"26":1,"35":1,"59":1}}],["js",{"2":{"2":1,"3":1,"4":1,"6":1,"10":1,"11":1,"13":1,"14":1,"15":1,"18":1,"19":1,"21":1,"23":3,"26":1,"36":2,"52":2}}],["polygon",{"2":{"83":1}}],["polyline",{"2":{"83":1}}],["popup",{"2":{"83":1}}],["popups",{"2":{"78":1}}],["possible",{"2":{"43":1}}],["public",{"2":{"59":2}}],["push",{"2":{"51":1}}],["plain",{"2":{"24":1}}],["pldi",{"2":{"2":1,"3":1,"4":1,"6":1,"10":1,"11":1,"13":1,"14":1,"15":1,"18":1,"19":1,"21":1,"36":1}}],["prints",{"2":{"79":1}}],["printed",{"2":{"33":1,"80":1}}],["print",{"0":{"33":1},"2":{"33":1,"51":2,"69":2}}],["probably",{"2":{"59":1}}],["project",{"2":{"52":1,"54":1,"56":1,"59":1}}],["props",{"0":{"66":1},"1":{"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1},"2":{"56":1,"62":1}}],["prop",{"2":{"36":1,"68":1,"71":1,"72":1,"73":1}}],["property",{"2":{"35":1,"43":1}}],["properties",{"0":{"28":1},"1":{"29":1,"30":1,"31":1,"32":1,"33":1,"34":1},"2":{"23":1,"27":1,"40":1}}],["promise",{"2":{"35":2}}],["progress",{"2":{"27":1}}],["provided",{"2":{"27":1}}],["provides",{"2":{"23":1}}],["precedence",{"2":{"71":1,"72":1}}],["prepare",{"2":{"23":1}}],["prev",{"2":{"11":1}}],["pattern",{"2":{"79":1}}],["path",{"0":{"81":1},"2":{"59":1,"81":1}}],["path=",{"2":{"7":1,"81":1}}],["paste",{"2":{"59":1}}],["password1234",{"2":{"27":1}}],["password",{"2":{"27":3}}],["parameter",{"2":{"26":1,"59":1}}],["parameters",{"0":{"25":1},"1":{"26":1,"27":1},"2":{"33":1,"34":1}}],["parentwidth",{"2":{"3":5}}],["parent",{"0":{"3":1,"71":1},"2":{"3":1,"62":2,"71":2}}],["package",{"2":{"23":1,"59":2}}],["payload",{"2":{"17":1,"19":1,"21":1,"38":2,"39":2,"40":2}}],["page=",{"2":{"10":1,"11":1,"68":1}}],["page",{"0":{"11":1,"68":1},"2":{"10":3,"11":11,"32":1,"38":2,"39":1,"40":1,"41":1,"42":2,"62":1,"63":1,"65":1,"68":2,"70":1,"71":1,"72":1,"73":1,"74":1,"76":1,"77":1,"83":1}}],["pages",{"0":{"10":1,"30":1},"2":{"10":2,"11":3,"23":1,"24":2,"26":1,"27":1,"30":1,"33":1,"52":1}}],["px`",{"2":{"3":1}}],["px",{"2":{"3":1,"72":1,"73":1}}],["pxs",{"2":{"3":2}}],["pdfdocumentproxy",{"2":{"35":1}}],["pdfdocumentloadingtask",{"2":{"29":2,"36":1,"67":2}}],["pdfjs",{"2":{"7":1,"36":3,"59":3,"81":1}}],["pdfref",{"2":{"6":3}}],["pdfsourceidx",{"2":{"4":6}}],["pdfsource",{"2":{"4":3,"59":1}}],["pdfsources",{"2":{"4":4}}],["pdf=",{"2":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"23":1,"24":1,"36":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"54":1,"56":1,"57":1,"62":1,"63":1,"65":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":2,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1}}],["pdf",{"0":{"4":1,"29":1,"67":1},"2":{"1":4,"2":6,"3":5,"4":11,"5":4,"6":5,"7":4,"8":4,"9":4,"10":5,"11":5,"12":5,"13":5,"14":5,"15":6,"16":5,"17":4,"18":5,"19":5,"20":5,"21":6,"23":9,"24":5,"26":3,"27":3,"33":1,"35":4,"36":7,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"52":3,"53":2,"54":4,"56":6,"57":5,"59":2,"60":3,"62":1,"63":1,"65":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":2,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1}}],["worry",{"2":{"59":1}}],["working",{"0":{"55":1},"1":{"56":1,"57":1},"2":{"58":1}}],["welcome",{"2":{"60":1}}],["well",{"2":{"52":1}}],["web",{"2":{"2":1,"3":1,"4":1,"6":1,"7":1,"10":1,"11":1,"13":1,"14":1,"15":1,"18":1,"19":1,"21":1,"36":1,"81":1}}],["which",{"2":{"83":1}}],["what",{"2":{"43":1}}],["where",{"2":{"42":1}}],["when",{"2":{"24":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"62":1,"65":1,"81":1}}],["wrapped",{"2":{"58":1}}],["wrapper",{"2":{"5":1}}],["wrap",{"2":{"58":1}}],["wraps",{"2":{"52":1}}],["wrong",{"2":{"27":1}}],["wine",{"2":{"50":2}}],["will",{"2":{"24":2,"58":1,"59":2}}],["within",{"2":{"44":1,"52":1}}],["with",{"0":{"55":1},"1":{"56":1,"57":1},"2":{"23":1,"27":1,"33":2,"34":1,"42":1,"43":1,"56":1,"58":1,"59":1,"60":1,"71":1}}],["width=",{"2":{"72":1}}],["width",{"0":{"72":1},"2":{"3":1,"38":1,"39":1,"62":1,"71":3,"72":1}}],["widgets",{"2":{"78":1}}],["widget",{"2":{"1":5,"40":1,"83":10}}],["want",{"2":{"60":1}}],["was",{"2":{"27":1,"42":1}}],["warning",{"2":{"17":1,"19":1,"21":1,"59":2}}],["water",{"2":{"50":1}}],["watermarkoptions",{"2":{"6":7,"80":2}}],["watermarktext",{"2":{"6":3}}],["watermark",{"0":{"6":1,"79":1,"80":1},"2":{"6":2,"79":2,"80":3}}],["watcheffect",{"2":{"5":2}}],["boolean",{"2":{"71":1,"75":1,"78":1,"82":1}}],["bottom",{"2":{"44":1}}],["before",{"2":{"84":1}}],["beer",{"2":{"50":2}}],["been",{"2":{"42":1}}],["be",{"2":{"36":1,"56":1,"57":1,"58":1,"59":1,"68":1,"69":1}}],["but",{"2":{"56":1}}],["button>",{"2":{"3":2,"4":1,"11":2,"12":1,"13":2,"14":2,"15":1}}],["button",{"0":{"51":1},"2":{"3":2,"4":1,"11":2,"12":1,"13":2,"14":2,"15":1,"43":1,"51":3}}],["building",{"2":{"58":1}}],["build",{"2":{"36":1}}],["browser",{"2":{"33":1}}],["by",{"2":{"23":1,"28":1,"32":2,"52":1,"56":2,"57":1}}],["basic",{"0":{"54":1},"2":{"23":1,"54":1}}],["based",{"2":{"21":1,"39":1,"76":1}}],["ba2edeae",{"2":{"2":1,"3":1,"4":1,"6":1,"10":1,"13":1,"14":1,"15":1,"18":1,"19":1,"21":1,"36":1}}],["btn",{"2":{"1":1,"83":2}}],["run",{"2":{"60":2}}],["radio",{"0":{"50":1},"2":{"43":1,"50":3}}],["raw",{"2":{"2":1,"3":1,"4":1,"6":1,"10":1,"13":1,"14":1,"15":1,"18":1,"19":1,"21":1,"36":1}}],["rotate",{"2":{"74":1}}],["rotation=",{"2":{"13":1,"74":1}}],["rotation",{"0":{"13":1,"74":1},"2":{"6":2,"13":7,"38":1,"40":1,"80":2}}],["rows",{"2":{"6":2,"80":2}}],["rgba",{"2":{"6":1,"80":1}}],["replace",{"2":{"71":1,"72":1,"73":1}}],["repository",{"2":{"60":1}}],["redirects",{"2":{"44":1}}],["rendering",{"0":{"58":1},"2":{"63":1,"65":1,"69":1,"84":1}}],["renders",{"2":{"56":1}}],["render",{"2":{"38":1,"39":1,"40":1,"41":1,"52":1,"62":1,"63":1,"68":1,"81":1}}],["relative",{"2":{"59":1}}],["related",{"2":{"32":1}}],["reload",{"0":{"62":1},"2":{"1":1,"3":1,"6":2,"60":1,"62":2}}],["reloadpage",{"2":{"1":2}}],["reason",{"2":{"27":4}}],["reactive",{"2":{"24":1}}],["reactivity",{"0":{"24":1}}],["request",{"2":{"27":1}}],["required",{"2":{"26":1,"36":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":2,"82":1,"83":1,"84":1}}],["respectively",{"2":{"56":1}}],["reset",{"2":{"51":1}}],["resolution",{"2":{"33":1}}],["resources",{"0":{"81":1},"2":{"7":1,"81":2}}],["results",{"2":{"17":1,"19":1,"21":1}}],["returns",{"2":{"32":1}}],["returned",{"2":{"24":1,"28":1}}],["return",{"2":{"5":2,"42":1}}],["remove",{"2":{"3":1}}],["referencedpage",{"2":{"44":1}}],["referenced",{"2":{"32":1}}],["ref=",{"2":{"1":1,"3":1,"6":1,"62":1,"63":1}}],["ref",{"2":{"1":4,"2":3,"3":3,"4":3,"5":2,"6":4,"7":1,"8":1,"9":1,"11":2,"12":2,"13":2,"14":2,"15":2,"18":1,"21":3,"24":3,"26":4,"36":3,"62":2,"63":2,"80":1,"83":1,"84":1}}],["hide",{"0":{"82":1},"2":{"82":2}}],["hightlight",{"2":{"76":2,"77":1}}],["highlight=",{"2":{"21":1,"42":1}}],["highlightoptions",{"2":{"2":4,"21":2}}],["highlighttext",{"2":{"2":3,"21":3}}],["highlight",{"0":{"2":1,"21":1,"42":1,"76":1,"77":1},"2":{"2":2,"21":3,"42":3,"76":1,"77":2,"83":1}}],["hot",{"2":{"60":1}}],["how",{"2":{"23":1,"77":1,"80":1}}],["here",{"2":{"59":1}}],["hernandez",{"2":{"47":1}}],["height=",{"2":{"73":1}}],["height",{"0":{"73":1},"2":{"38":1,"39":1,"72":1,"73":1}}],["htmlanchorelement",{"2":{"34":1}}],["https",{"2":{"2":1,"3":1,"4":1,"6":1,"7":1,"10":1,"11":1,"13":1,"14":1,"15":1,"18":1,"19":1,"21":1,"36":1,"60":1,"81":1}}],["having",{"2":{"59":1}}],["handle",{"2":{"27":1}}],["haseol",{"2":{"39":1}}],["has",{"2":{"17":1,"19":1,"21":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":2,"71":1,"72":1}}],["ltr",{"2":{"39":1}}],["lt",{"2":{"24":1,"26":4}}],["left",{"2":{"44":1}}],["let",{"2":{"23":1}}],["length",{"2":{"4":1}}],["looking",{"2":{"59":1}}],["loadpdf",{"2":{"36":2}}],["loadingtask",{"2":{"36":2}}],["loading",{"0":{"65":1},"2":{"27":2,"29":1,"59":1,"65":1}}],["loads",{"2":{"23":2}}],["loaded`",{"2":{"27":1}}],["loaded=",{"2":{"17":1,"18":1,"19":1,"20":1,"38":1,"39":1,"40":1,"41":1}}],["loaded",{"0":{"17":1,"18":1,"19":1,"20":1,"38":1,"39":1,"40":1,"41":1},"2":{"17":1,"19":1,"20":1,"27":2,"33":1}}],["log",{"2":{"5":1,"7":1,"8":1,"9":1,"17":1,"18":1,"19":1,"20":1,"21":1,"27":2}}],["line",{"2":{"83":1}}],["link",{"0":{"44":1,"45":1},"2":{"43":2,"44":3,"45":3,"83":2}}],["links",{"0":{"9":1},"2":{"32":1,"78":1}}],["library",{"2":{"52":2,"58":1}}],["like",{"2":{"35":2,"58":1,"59":1,"78":1,"83":1}}],["list",{"0":{"0":1},"2":{"42":1}}],["latin",{"0":{"59":1},"2":{"59":1}}],["latest",{"2":{"7":1,"81":1}}],["label",{"2":{"48":4}}],["layers",{"0":{"55":1},"1":{"56":1,"57":1},"2":{"56":1}}],["layer=",{"2":{"12":1,"15":1}}],["layer",{"0":{"12":1,"15":1,"75":1,"78":1},"2":{"1":1,"2":1,"7":1,"8":1,"9":1,"12":5,"15":5,"17":1,"19":1,"21":1,"39":1,"40":1,"56":8,"75":1,"76":2,"77":1,"78":1,"82":2,"83":1,"84":1}}],["idea",{"2":{"60":1}}],["id=",{"2":{"5":1}}],["i",{"2":{"53":1}}],["is",{"2":{"24":1,"26":1,"52":1,"54":1,"56":1,"58":2,"62":1,"63":1,"65":1,"80":1}}],["its",{"2":{"35":1,"42":1}}],["it",{"2":{"23":1,"36":1,"56":1,"58":1,"59":2}}],["item",{"2":{"5":2}}],["items=",{"2":{"5":1}}],["items",{"2":{"5":2,"39":2}}],["io",{"2":{"11":1}}],["images",{"2":{"7":1,"81":1}}],["image",{"0":{"81":1},"2":{"7":1,"81":2}}],["importing",{"2":{"56":1}}],["import",{"2":{"1":2,"2":3,"3":2,"4":2,"5":3,"6":2,"7":2,"8":2,"9":2,"10":1,"11":2,"12":3,"13":2,"14":2,"15":3,"16":2,"17":1,"18":2,"19":1,"20":2,"21":3,"23":1,"24":1,"36":2,"54":2,"56":2,"57":2,"62":1,"63":1}}],["if",{"2":{"4":1,"5":1,"24":1,"27":1,"58":2,"59":1,"63":1}}],["ignorecase",{"2":{"2":2,"21":1,"77":2}}],["ink",{"2":{"83":1}}],["initialized",{"2":{"59":1}}],["install",{"2":{"60":2}}],["installed",{"2":{"59":1}}],["installation",{"0":{"53":1}}],["instead",{"2":{"24":1}}],["intent=",{"2":{"69":1}}],["intent",{"0":{"69":1},"2":{"69":1}}],["interaction",{"2":{"43":1,"56":1}}],["internal",{"0":{"44":1},"2":{"32":1,"43":1,"44":2}}],["introduction",{"0":{"52":1},"1":{"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1}}],["int",{"2":{"30":1,"68":1,"70":1,"74":1}}],["included",{"2":{"23":1}}],["information",{"2":{"23":1,"31":1}}],["info",{"0":{"31":1},"2":{"5":4,"23":1,"24":2,"26":1,"27":1,"35":1}}],["index",{"2":{"4":1}}],["inputs",{"2":{"47":1,"48":1}}],["input",{"2":{"2":3,"6":6,"21":1}}],["in",{"2":{"1":1,"10":1,"23":2,"32":1,"36":1,"39":1,"42":1,"43":1,"47":1,"48":1,"56":1,"58":1,"60":1,"71":1,"72":2,"73":2,"74":1}}],[">=",{"2":{"4":1}}],[">",{"2":{"1":3,"2":4,"3":4,"4":2,"5":5,"6":7,"7":1,"8":1,"9":1,"10":2,"11":4,"12":2,"13":3,"14":4,"15":2,"16":2,"17":1,"18":1,"19":1,"20":1,"21":2,"23":1,"24":1,"36":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"54":1,"56":1,"57":1,"62":1,"63":1,"65":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":2,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1}}],["045",{"2":{"4":1,"5":1,"9":1}}],["041",{"2":{"4":1,"7":1}}],["036",{"2":{"4":1}}],["09111040000033",{"2":{"39":1}}],["09",{"2":{"2":1,"3":1,"4":1,"6":1,"10":1,"11":1,"13":1,"14":1,"15":1,"18":1,"19":1,"21":1,"36":1}}],["0",{"2":{"1":1,"4":3,"6":1,"14":3,"38":8,"39":4,"40":1,"70":1,"80":1}}],["014",{"2":{"1":1,"4":1,"8":1,"12":1,"17":1}}],["vpdf",{"2":{"62":3,"63":3}}],["very",{"2":{"60":1}}],["vertical",{"2":{"39":1}}],["viewbox",{"2":{"38":1}}],["v",{"2":{"1":2,"2":3,"5":2,"6":6,"10":1,"21":1}}],["values",{"2":{"24":2,"28":1,"43":1,"84":1}}],["value=",{"2":{"1":1}}],["value",{"2":{"1":1,"3":3,"4":5,"5":5,"6":1,"7":2,"8":2,"9":2,"17":2,"18":2,"19":2,"21":2,"24":2,"35":1,"36":1,"38":1,"39":1,"40":1,"43":2,"47":2,"48":6,"50":1,"62":1,"63":1,"84":2}}],["vuepdf>",{"2":{"65":1}}],["vuepdfref",{"2":{"1":3,"3":3}}],["vuepdf",{"2":{"1":2,"2":2,"3":2,"4":2,"5":2,"6":2,"7":2,"8":2,"9":2,"10":2,"11":2,"12":2,"13":2,"14":2,"15":2,"16":2,"17":2,"18":2,"19":2,"20":2,"21":2,"23":4,"24":2,"36":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"52":2,"54":3,"56":2,"57":2,"58":2,"62":1,"63":1,"65":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":2,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1}}],["vue",{"2":{"1":3,"2":4,"3":3,"4":3,"5":4,"6":3,"7":3,"8":3,"9":3,"10":2,"11":3,"12":4,"13":3,"14":3,"15":4,"16":3,"17":2,"18":3,"19":2,"20":3,"21":4,"23":2,"24":2,"36":2,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"52":1,"53":2,"54":2,"56":4,"57":3,"59":1,"60":3,"62":2,"63":2,"65":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1}}],["circle",{"2":{"83":1}}],["cd",{"2":{"60":2}}],["cmapurl",{"2":{"59":1}}],["cmaps",{"2":{"59":7}}],["cmapreaderfactory",{"2":{"59":1}}],["customize",{"2":{"80":1}}],["custom",{"2":{"56":1}}],["currently",{"2":{"63":1}}],["currentpdf",{"2":{"24":3}}],["current",{"2":{"4":1,"33":1}}],["create",{"2":{"56":1}}],["caret",{"2":{"83":1}}],["calculation",{"2":{"71":1,"72":1,"73":1}}],["callback",{"2":{"27":3}}],["case",{"2":{"58":1,"60":1}}],["canvas",{"2":{"79":1,"80":1}}],["cancel",{"0":{"63":1},"2":{"63":2}}],["can",{"2":{"35":1,"36":1,"56":1,"57":1,"69":1}}],["clone",{"2":{"60":2}}],["client",{"2":{"52":1,"58":2}}],["clicks",{"2":{"44":1,"45":1,"46":1,"51":1}}],["click=",{"2":{"3":2,"4":1,"11":2,"12":1,"13":2,"14":2,"15":1}}],["cleanup",{"2":{"35":2}}],["class=",{"2":{"1":1,"5":2,"16":1}}],["code",{"2":{"60":3}}],["copy",{"2":{"59":2}}],["correctly",{"2":{"56":1}}],["could",{"2":{"23":1,"56":1,"58":1}}],["color",{"2":{"6":2,"80":2}}],["columns",{"2":{"6":2,"80":2}}],["contribution",{"2":{"60":1}}],["contributing",{"0":{"60":1}}],["contains",{"2":{"38":1,"39":1,"40":1}}],["container",{"2":{"5":1,"16":1}}],["content",{"0":{"5":1},"2":{"32":1,"44":1,"46":1,"65":1}}],["console",{"2":{"5":1,"7":1,"8":1,"9":1,"17":2,"18":1,"19":2,"20":1,"21":2,"27":3}}],["const",{"2":{"1":4,"2":3,"3":3,"4":4,"5":2,"6":4,"7":1,"8":1,"9":1,"10":1,"11":2,"12":2,"13":2,"14":2,"15":2,"16":1,"17":1,"18":1,"19":1,"20":1,"21":3,"23":1,"24":2,"27":1,"36":2,"54":1,"56":1,"57":1,"62":1,"63":1,"80":1,"83":1,"84":1}}],["convert",{"2":{"5":2}}],["components",{"2":{"36":1}}],["component",{"2":{"23":1,"52":1,"56":1,"58":1}}],["composable",{"0":{"36":1},"2":{"23":1,"36":1}}],["composables",{"0":{"22":1},"1":{"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1}}],["completewords",{"2":{"2":2,"21":1,"77":2}}],["compressed",{"2":{"2":1,"3":1,"4":1,"6":1,"10":1,"11":1,"13":1,"14":1,"15":1,"18":1,"19":1,"21":1,"36":1}}],["com",{"2":{"2":1,"3":1,"4":1,"6":1,"7":1,"10":1,"13":1,"14":1,"15":1,"18":1,"19":1,"21":1,"36":1,"45":2,"60":1,"81":1}}],["css",{"2":{"2":1,"12":1,"15":1,"16":1,"20":1,"21":1,"56":3,"57":1}}],["choose",{"2":{"83":1}}],["checked",{"2":{"49":1}}],["check",{"2":{"32":1,"42":1,"56":1,"57":1}}],["checkbox",{"0":{"49":1},"2":{"2":2,"43":1,"49":3}}],["characters",{"0":{"59":1}}],["changing",{"2":{"24":1}}],["changes",{"2":{"24":1,"49":1,"50":1}}],["change",{"2":{"12":1,"15":1,"24":1,"60":1}}],["change=",{"2":{"1":1}}],["chage",{"2":{"24":1}}],["chapterclick=",{"2":{"5":1}}],["chapterslist",{"2":{"5":3}}],["ch",{"2":{"1":1,"83":1}}],["t",{"2":{"59":1}}],["time",{"2":{"39":1}}],["title",{"2":{"5":2}}],["typedarray",{"2":{"26":2}}],["type",{"2":{"26":1,"27":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"39":1,"43":2,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1}}],["type=",{"2":{"2":2}}],["than",{"2":{"71":1,"72":1}}],["that",{"2":{"23":3,"44":1,"52":1,"58":1,"59":2}}],["throw",{"2":{"58":1}}],["through",{"2":{"35":1}}],["this",{"2":{"23":1,"26":1,"32":1,"42":1,"43":1,"52":1,"56":3,"59":1,"68":1,"71":1,"72":1,"73":1}}],["them",{"2":{"54":1,"56":2,"57":1}}],["then",{"2":{"5":1,"23":1,"35":1}}],["the",{"2":{"4":1,"17":2,"19":2,"21":2,"23":3,"24":2,"26":1,"27":2,"32":2,"33":3,"34":2,"36":1,"38":2,"39":3,"40":3,"42":3,"43":2,"44":2,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"54":2,"56":1,"57":1,"58":2,"59":4,"60":2,"62":1,"63":2,"67":1,"71":2,"72":1,"73":1,"74":1,"76":3,"77":1,"79":1,"80":1,"83":1}}],["total",{"2":{"27":2}}],["too",{"2":{"17":1,"19":1,"21":1}}],["to",{"2":{"12":1,"15":1,"17":2,"19":2,"21":2,"27":3,"35":2,"36":2,"38":1,"39":1,"40":1,"41":1,"44":1,"52":1,"59":2,"60":3,"62":1,"65":1,"68":1,"77":1,"81":2,"83":1,"84":2}}],["toc",{"2":{"5":2}}],["task",{"2":{"29":1,"62":1,"63":1}}],["table",{"0":{"5":1},"2":{"32":1}}],["tato30",{"2":{"1":1,"2":2,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":2,"13":1,"14":1,"15":2,"16":2,"17":1,"18":1,"19":1,"20":2,"21":2,"23":1,"24":1,"53":2,"54":1,"56":3,"57":2,"60":1}}],["transform",{"2":{"38":1,"39":1}}],["trace",{"2":{"21":1,"39":1,"76":1}}],["tracemonkey",{"2":{"2":1,"3":1,"4":1,"6":1,"10":1,"11":1,"13":1,"14":1,"15":1,"18":1,"19":1,"21":1,"36":1}}],["triggered",{"2":{"43":1}}],["trigger",{"2":{"34":1}}],["triggerref",{"2":{"5":2}}],["true",{"2":{"2":1,"16":1,"20":1,"21":1,"26":1,"39":1,"49":1,"57":1,"67":1,"77":2}}],["tell",{"2":{"59":1}}],["testmail",{"2":{"45":2}}],["textcontent",{"2":{"39":2,"42":1}}],["textdivs",{"2":{"39":2,"42":1}}],["text=",{"2":{"2":1,"6":1,"21":1,"76":2,"77":1,"79":1,"80":1}}],["text",{"0":{"2":1,"6":1,"15":1,"19":1,"39":1,"47":1,"56":1,"75":1,"76":1,"79":1},"2":{"2":1,"15":6,"19":3,"21":1,"39":3,"42":3,"43":1,"47":3,"56":5,"59":1,"75":2,"76":4,"77":3,"83":2}}],["template>",{"2":{"1":2,"2":2,"3":2,"4":2,"5":2,"6":2,"7":2,"8":2,"9":2,"10":2,"11":2,"12":2,"13":2,"14":2,"15":2,"16":2,"17":2,"18":2,"19":2,"20":2,"21":2,"23":2,"24":2,"36":2,"54":2,"56":2,"57":2,"62":2,"63":2,"65":2}}],["txt",{"2":{"46":1}}],["tx",{"2":{"1":1,"40":1,"83":2}}],["==",{"2":{"5":1}}],["=>",{"2":{"5":3,"35":1,"36":1}}],["=",{"2":{"1":4,"2":3,"3":4,"4":6,"5":3,"6":4,"7":1,"8":1,"9":1,"10":1,"11":4,"12":3,"13":4,"14":4,"15":3,"16":1,"17":1,"18":1,"19":1,"20":1,"21":3,"23":1,"24":2,"26":1,"27":1,"35":1,"36":3,"54":1,"56":1,"57":1,"59":1,"62":1,"63":1,"80":1,"83":1,"84":1}}],["freetext",{"2":{"83":1}}],["framework",{"2":{"58":1}}],["from",{"2":{"1":2,"2":2,"3":2,"4":2,"5":3,"6":2,"7":2,"8":2,"9":2,"10":1,"11":2,"12":2,"13":2,"14":2,"15":2,"16":1,"17":1,"18":2,"19":1,"20":1,"21":2,"23":1,"24":1,"36":2,"54":1,"56":2,"57":2,"59":1,"62":1,"63":1,"67":1,"82":1}}],["flexibly",{"2":{"52":1}}],["flt",{"2":{"1":4}}],["female",{"2":{"48":1}}],["features",{"2":{"23":1,"52":1}}],["f",{"2":{"48":1}}],["f1",{"2":{"39":2}}],["folder",{"2":{"60":1}}],["follows",{"2":{"43":1}}],["following",{"2":{"27":1,"33":1,"34":1,"83":1}}],["found",{"2":{"42":1}}],["font",{"2":{"59":1}}],["fontfamily",{"2":{"39":1}}],["fontname",{"2":{"39":1}}],["fontsize",{"2":{"6":2,"80":2}}],["form",{"0":{"47":1,"48":1,"49":1,"50":1,"51":1},"2":{"43":5,"47":2,"48":2,"49":2,"50":2,"51":2}}],["forms",{"0":{"8":1,"16":1,"57":1,"82":1},"2":{"57":2,"82":1}}],["for",{"2":{"23":1,"27":1,"29":1,"39":1,"52":1,"56":1,"59":1,"62":1,"77":1,"84":1}}],["for=",{"2":{"1":1,"10":1}}],["find",{"2":{"77":1}}],["finished",{"2":{"38":1,"39":1,"40":1,"41":1}}],["fieldname",{"2":{"47":1,"48":1,"49":1,"50":1,"51":1}}],["field",{"2":{"47":1,"49":1,"50":1}}],["fieldtype",{"2":{"40":1}}],["fields",{"0":{"8":1}}],["fileattachment",{"2":{"83":1}}],["filename",{"2":{"33":3,"34":3,"46":1}}],["file",{"0":{"7":1,"46":1},"2":{"31":1,"33":1,"34":1,"43":1,"46":2}}],["filter=",{"2":{"1":1,"83":1}}],["filters",{"2":{"1":2}}],["filter",{"0":{"1":1,"83":1},"2":{"83":2}}],["firstname",{"2":{"47":1}}],["first",{"2":{"4":1}}],["fitparentwidth",{"2":{"3":3}}],["fit",{"0":{"3":1,"71":1},"2":{"3":1,"62":1,"71":2}}],["false",{"2":{"2":1,"12":1,"15":1,"21":1,"39":1,"51":1,"68":1,"69":1,"70":1,"71":2,"72":1,"73":1,"74":1,"75":2,"76":1,"77":3,"78":2,"79":1,"80":1,"81":1,"82":2,"83":1,"84":1}}],["functions",{"2":{"35":1}}],["function",{"2":{"1":1,"3":1,"4":1,"5":2,"6":1,"7":1,"8":1,"9":1,"17":1,"18":1,"19":1,"20":1,"21":1,"27":5,"32":2,"33":1,"34":1,"35":1,"36":1,"62":1,"63":1}}],["squiggly",{"2":{"83":1}}],["square",{"2":{"83":1}}],["slots",{"0":{"64":1},"1":{"65":1}}],["ssr",{"2":{"58":1}}],["sig",{"2":{"83":1}}],["size",{"2":{"71":1,"72":1,"73":1}}],["simple",{"2":{"54":1}}],["side",{"0":{"58":1},"2":{"52":1,"58":1}}],["suggestion",{"2":{"60":1}}],["supporting",{"0":{"59":1}}],["supports",{"2":{"56":1}}],["supported",{"2":{"52":1,"57":1}}],["subtypes",{"2":{"83":1}}],["subtype",{"2":{"40":1}}],["surely",{"2":{"58":1}}],["sure",{"2":{"36":1}}],["spanelement>",{"2":{"39":2}}],["span>",{"2":{"3":1,"11":2,"13":2,"14":2}}],["span>parent",{"2":{"3":1}}],["specialization",{"2":{"39":1}}],["sans",{"2":{"39":1}}],["savedocument",{"2":{"35":2}}],["same",{"2":{"23":1,"26":1}}],["sample",{"2":{"6":1,"23":1,"24":1,"26":1,"27":1,"54":1,"56":1,"79":1,"80":1}}],["shows",{"2":{"83":1}}],["should",{"2":{"23":1,"58":1}}],["sh",{"2":{"60":1}}],["shyarn",{"2":{"53":1}}],["shnpm",{"2":{"53":1}}],["shallowref",{"2":{"28":1,"36":1}}],["storage",{"2":{"84":1}}],["stamp",{"2":{"83":1}}],["starting",{"2":{"68":1}}],["stage",{"2":{"58":1}}],["strikeout",{"2":{"83":1}}],["string",{"2":{"26":2,"69":1,"76":2,"79":1,"81":1}}],["structure",{"2":{"43":1}}],["str",{"2":{"39":1}}],["styles",{"2":{"39":1,"56":6}}],["style=",{"2":{"3":1}}],["style",{"2":{"2":1,"12":1,"15":1,"16":1,"20":1,"21":1,"56":2,"57":1}}],["src",{"0":{"26":1},"2":{"24":2,"26":1,"59":1}}],["sort",{"2":{"58":1}}],["so",{"2":{"23":1,"52":1,"58":1}}],["someevent",{"2":{"62":1,"63":1}}],["some",{"2":{"23":1,"56":1,"58":1,"62":1,"81":1}}],["s",{"2":{"17":1,"19":1,"21":1,"29":1,"30":1,"31":1,"33":1,"35":2,"36":1,"38":1,"43":1,"59":2,"62":1,"70":1,"71":1,"74":1,"77":1,"84":2}}],["screen",{"2":{"17":1,"19":1,"21":1}}],["scripts",{"2":{"31":1}}],["script>",{"2":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"23":1,"24":1,"36":1,"54":1,"56":1,"57":1,"62":1,"63":1,"80":1,"83":1,"84":1}}],["script",{"2":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"23":1,"24":1,"36":1,"54":1,"56":1,"57":1,"62":1,"63":1,"80":1,"83":1,"84":1}}],["scale=",{"2":{"14":1,"70":1}}],["scale",{"0":{"14":1,"70":1},"2":{"14":11,"38":1,"70":1,"71":1,"72":2,"73":2}}],["server",{"0":{"58":1}}],["serif",{"2":{"39":1}}],["searched",{"2":{"42":1,"76":2}}],["send",{"2":{"36":1}}],["see",{"2":{"17":1,"19":1,"21":1,"29":1,"59":1}}],["set",{"2":{"56":2}}],["settings",{"2":{"77":1}}],["setting",{"2":{"4":1}}],["setup>",{"2":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"23":1,"24":1,"36":1,"54":1,"56":1,"57":1,"62":1,"63":1,"80":1,"83":1,"84":1}}],["selection",{"2":{"56":1,"75":1}}],["select>",{"2":{"1":1}}],["select",{"0":{"48":1},"2":{"1":2,"43":1,"48":4}}],["selectedfilter",{"2":{"1":3}}]],"serializationVersion":2}';export{e as default}; diff --git a/assets/chunks/VPLocalSearchBox.DVBBXNkX.js b/assets/chunks/VPLocalSearchBox.DVBBXNkX.js new file mode 100644 index 0000000..54494be --- /dev/null +++ b/assets/chunks/VPLocalSearchBox.DVBBXNkX.js @@ -0,0 +1,7 @@ +import{X as wt,s as Z,v as Le,aq as xt,ar as Ft,d as Et,G as ye,as as Ge,h as ge,at as St,au as At,x as Tt,av as Ct,y as Ne,R as le,Q as be,aw as Nt,ax as It,Y as Dt,U as kt,ay as Ot,o as Q,b as Rt,j as O,a1 as _t,k as $,a4 as Mt,a8 as Lt,a3 as zt,c as q,n as Qe,e as we,E as qe,F as He,a as ce,t as fe,az as Pt,p as Bt,l as Vt,aA as Ye,aB as $t,af as Wt,al as Kt,aC as Jt,_ as Ut}from"./framework.uxIHJ7Q2.js";import{u as jt,c as Gt}from"./theme.DKJ1gKC5.js";const Qt={root:()=>wt(()=>import("./@localSearchIndexroot.CQmrweKt.js"),[])};/*! +* tabbable 6.2.0 +* @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE +*/var ut=["input:not([inert])","select:not([inert])","textarea:not([inert])","a[href]:not([inert])","button:not([inert])","[tabindex]:not(slot):not([inert])","audio[controls]:not([inert])","video[controls]:not([inert])",'[contenteditable]:not([contenteditable="false"]):not([inert])',"details>summary:first-of-type:not([inert])","details:not([inert])"],Ee=ut.join(","),lt=typeof Element>"u",ee=lt?function(){}:Element.prototype.matches||Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector,Se=!lt&&Element.prototype.getRootNode?function(o){var e;return o==null||(e=o.getRootNode)===null||e===void 0?void 0:e.call(o)}:function(o){return o?.ownerDocument},Ae=function o(e,t){var r;t===void 0&&(t=!0);var n=e==null||(r=e.getAttribute)===null||r===void 0?void 0:r.call(e,"inert"),a=n===""||n==="true",i=a||t&&e&&o(e.parentNode);return i},qt=function(e){var t,r=e==null||(t=e.getAttribute)===null||t===void 0?void 0:t.call(e,"contenteditable");return r===""||r==="true"},ct=function(e,t,r){if(Ae(e))return[];var n=Array.prototype.slice.apply(e.querySelectorAll(Ee));return t&&ee.call(e,Ee)&&n.unshift(e),n=n.filter(r),n},ft=function o(e,t,r){for(var n=[],a=Array.from(e);a.length;){var i=a.shift();if(!Ae(i,!1))if(i.tagName==="SLOT"){var s=i.assignedElements(),u=s.length?s:i.children,l=o(u,!0,r);r.flatten?n.push.apply(n,l):n.push({scopeParent:i,candidates:l})}else{var h=ee.call(i,Ee);h&&r.filter(i)&&(t||!e.includes(i))&&n.push(i);var d=i.shadowRoot||typeof r.getShadowRoot=="function"&&r.getShadowRoot(i),v=!Ae(d,!1)&&(!r.shadowRootFilter||r.shadowRootFilter(i));if(d&&v){var m=o(d===!0?i.children:d.children,!0,r);r.flatten?n.push.apply(n,m):n.push({scopeParent:i,candidates:m})}else a.unshift.apply(a,i.children)}}return n},ht=function(e){return!isNaN(parseInt(e.getAttribute("tabindex"),10))},X=function(e){if(!e)throw new Error("No node provided");return e.tabIndex<0&&(/^(AUDIO|VIDEO|DETAILS)$/.test(e.tagName)||qt(e))&&!ht(e)?0:e.tabIndex},Ht=function(e,t){var r=X(e);return r<0&&t&&!ht(e)?0:r},Yt=function(e,t){return e.tabIndex===t.tabIndex?e.documentOrder-t.documentOrder:e.tabIndex-t.tabIndex},dt=function(e){return e.tagName==="INPUT"},Zt=function(e){return dt(e)&&e.type==="hidden"},Xt=function(e){var t=e.tagName==="DETAILS"&&Array.prototype.slice.apply(e.children).some(function(r){return r.tagName==="SUMMARY"});return t},er=function(e,t){for(var r=0;rsummary:first-of-type"),i=a?e.parentElement:e;if(ee.call(i,"details:not([open]) *"))return!0;if(!r||r==="full"||r==="legacy-full"){if(typeof n=="function"){for(var s=e;e;){var u=e.parentElement,l=Se(e);if(u&&!u.shadowRoot&&n(u)===!0)return Ze(e);e.assignedSlot?e=e.assignedSlot:!u&&l!==e.ownerDocument?e=l.host:e=u}e=s}if(nr(e))return!e.getClientRects().length;if(r!=="legacy-full")return!0}else if(r==="non-zero-area")return Ze(e);return!1},or=function(e){if(/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(e.tagName))for(var t=e.parentElement;t;){if(t.tagName==="FIELDSET"&&t.disabled){for(var r=0;r=0)},ur=function o(e){var t=[],r=[];return e.forEach(function(n,a){var i=!!n.scopeParent,s=i?n.scopeParent:n,u=Ht(s,i),l=i?o(n.candidates):s;u===0?i?t.push.apply(t,l):t.push(s):r.push({documentOrder:a,tabIndex:u,item:n,isScope:i,content:l})}),r.sort(Yt).reduce(function(n,a){return a.isScope?n.push.apply(n,a.content):n.push(a.content),n},[]).concat(t)},lr=function(e,t){t=t||{};var r;return t.getShadowRoot?r=ft([e],t.includeContainer,{filter:ze.bind(null,t),flatten:!1,getShadowRoot:t.getShadowRoot,shadowRootFilter:sr}):r=ct(e,t.includeContainer,ze.bind(null,t)),ur(r)},cr=function(e,t){t=t||{};var r;return t.getShadowRoot?r=ft([e],t.includeContainer,{filter:Te.bind(null,t),flatten:!0,getShadowRoot:t.getShadowRoot}):r=ct(e,t.includeContainer,Te.bind(null,t)),r},te=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return ee.call(e,Ee)===!1?!1:ze(t,e)},fr=ut.concat("iframe").join(","),Ie=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return ee.call(e,fr)===!1?!1:Te(t,e)};/*! +* focus-trap 7.5.4 +* @license MIT, https://github.com/focus-trap/focus-trap/blob/master/LICENSE +*/function Xe(o,e){var t=Object.keys(o);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(o);e&&(r=r.filter(function(n){return Object.getOwnPropertyDescriptor(o,n).enumerable})),t.push.apply(t,r)}return t}function et(o){for(var e=1;e0){var r=e[e.length-1];r!==t&&r.pause()}var n=e.indexOf(t);n===-1||e.splice(n,1),e.push(t)},deactivateTrap:function(e,t){var r=e.indexOf(t);r!==-1&&e.splice(r,1),e.length>0&&e[e.length-1].unpause()}},pr=function(e){return e.tagName&&e.tagName.toLowerCase()==="input"&&typeof e.select=="function"},mr=function(e){return e?.key==="Escape"||e?.key==="Esc"||e?.keyCode===27},ve=function(e){return e?.key==="Tab"||e?.keyCode===9},yr=function(e){return ve(e)&&!e.shiftKey},gr=function(e){return ve(e)&&e.shiftKey},rt=function(e){return setTimeout(e,0)},at=function(e,t){var r=-1;return e.every(function(n,a){return t(n)?(r=a,!1):!0}),r},he=function(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n1?p-1:0),I=1;I=0)c=r.activeElement;else{var f=i.tabbableGroups[0],p=f&&f.firstTabbableNode;c=p||h("fallbackFocus")}if(!c)throw new Error("Your focus-trap needs to have at least one focusable element");return c},v=function(){if(i.containerGroups=i.containers.map(function(c){var f=lr(c,a.tabbableOptions),p=cr(c,a.tabbableOptions),N=f.length>0?f[0]:void 0,I=f.length>0?f[f.length-1]:void 0,L=p.find(function(D){return te(D)}),g=p.slice().reverse().find(function(D){return te(D)}),w=!!f.find(function(D){return X(D)>0});return{container:c,tabbableNodes:f,focusableNodes:p,posTabIndexesFound:w,firstTabbableNode:N,lastTabbableNode:I,firstDomTabbableNode:L,lastDomTabbableNode:g,nextTabbableNode:function(U){var j=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,J=f.indexOf(U);return J<0?j?p.slice(p.indexOf(U)+1).find(function(H){return te(H)}):p.slice(0,p.indexOf(U)).reverse().find(function(H){return te(H)}):f[J+(j?1:-1)]}}}),i.tabbableGroups=i.containerGroups.filter(function(c){return c.tabbableNodes.length>0}),i.tabbableGroups.length<=0&&!h("fallbackFocus"))throw new Error("Your focus-trap must have at least one container with at least one tabbable node in it at all times");if(i.containerGroups.find(function(c){return c.posTabIndexesFound})&&i.containerGroups.length>1)throw new Error("At least one node with a positive tabindex was found in one of your focus-trap's multiple containers. Positive tabindexes are only supported in single-container focus-traps.")},m=function x(c){var f=c.activeElement;if(f)return f.shadowRoot&&f.shadowRoot.activeElement!==null?x(f.shadowRoot):f},b=function x(c){if(c!==!1&&c!==m(document)){if(!c||!c.focus){x(d());return}c.focus({preventScroll:!!a.preventScroll}),i.mostRecentlyFocusedNode=c,pr(c)&&c.select()}},E=function(c){var f=h("setReturnFocus",c);return f||(f===!1?!1:c)},y=function(c){var f=c.target,p=c.event,N=c.isBackward,I=N===void 0?!1:N;f=f||xe(p),v();var L=null;if(i.tabbableGroups.length>0){var g=l(f,p),w=g>=0?i.containerGroups[g]:void 0;if(g<0)I?L=i.tabbableGroups[i.tabbableGroups.length-1].lastTabbableNode:L=i.tabbableGroups[0].firstTabbableNode;else if(I){var D=at(i.tabbableGroups,function(ie){var K=ie.firstTabbableNode;return f===K});if(D<0&&(w.container===f||Ie(f,a.tabbableOptions)&&!te(f,a.tabbableOptions)&&!w.nextTabbableNode(f,!1))&&(D=g),D>=0){var U=D===0?i.tabbableGroups.length-1:D-1,j=i.tabbableGroups[U];L=X(f)>=0?j.lastTabbableNode:j.lastDomTabbableNode}else ve(p)||(L=w.nextTabbableNode(f,!1))}else{var J=at(i.tabbableGroups,function(ie){var K=ie.lastTabbableNode;return f===K});if(J<0&&(w.container===f||Ie(f,a.tabbableOptions)&&!te(f,a.tabbableOptions)&&!w.nextTabbableNode(f))&&(J=g),J>=0){var H=J===i.tabbableGroups.length-1?0:J+1,ne=i.tabbableGroups[H];L=X(f)>=0?ne.firstTabbableNode:ne.firstDomTabbableNode}else ve(p)||(L=w.nextTabbableNode(f))}}else L=h("fallbackFocus");return L},S=function(c){var f=xe(c);if(!(l(f,c)>=0)){if(he(a.clickOutsideDeactivates,c)){s.deactivate({returnFocus:a.returnFocusOnDeactivate});return}he(a.allowOutsideClick,c)||c.preventDefault()}},T=function(c){var f=xe(c),p=l(f,c)>=0;if(p||f instanceof Document)p&&(i.mostRecentlyFocusedNode=f);else{c.stopImmediatePropagation();var N,I=!0;if(i.mostRecentlyFocusedNode)if(X(i.mostRecentlyFocusedNode)>0){var L=l(i.mostRecentlyFocusedNode),g=i.containerGroups[L].tabbableNodes;if(g.length>0){var w=g.findIndex(function(D){return D===i.mostRecentlyFocusedNode});w>=0&&(a.isKeyForward(i.recentNavEvent)?w+1=0&&(N=g[w-1],I=!1))}}else i.containerGroups.some(function(D){return D.tabbableNodes.some(function(U){return X(U)>0})})||(I=!1);else I=!1;I&&(N=y({target:i.mostRecentlyFocusedNode,isBackward:a.isKeyBackward(i.recentNavEvent)})),b(N||i.mostRecentlyFocusedNode||d())}i.recentNavEvent=void 0},F=function(c){var f=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;i.recentNavEvent=c;var p=y({event:c,isBackward:f});p&&(ve(c)&&c.preventDefault(),b(p))},z=function(c){if(mr(c)&&he(a.escapeDeactivates,c)!==!1){c.preventDefault(),s.deactivate();return}(a.isKeyForward(c)||a.isKeyBackward(c))&&F(c,a.isKeyBackward(c))},M=function(c){var f=xe(c);l(f,c)>=0||he(a.clickOutsideDeactivates,c)||he(a.allowOutsideClick,c)||(c.preventDefault(),c.stopImmediatePropagation())},P=function(){if(i.active)return tt.activateTrap(n,s),i.delayInitialFocusTimer=a.delayInitialFocus?rt(function(){b(d())}):b(d()),r.addEventListener("focusin",T,!0),r.addEventListener("mousedown",S,{capture:!0,passive:!1}),r.addEventListener("touchstart",S,{capture:!0,passive:!1}),r.addEventListener("click",M,{capture:!0,passive:!1}),r.addEventListener("keydown",z,{capture:!0,passive:!1}),s},C=function(){if(i.active)return r.removeEventListener("focusin",T,!0),r.removeEventListener("mousedown",S,!0),r.removeEventListener("touchstart",S,!0),r.removeEventListener("click",M,!0),r.removeEventListener("keydown",z,!0),s},_=function(c){var f=c.some(function(p){var N=Array.from(p.removedNodes);return N.some(function(I){return I===i.mostRecentlyFocusedNode})});f&&b(d())},A=typeof window<"u"&&"MutationObserver"in window?new MutationObserver(_):void 0,R=function(){A&&(A.disconnect(),i.active&&!i.paused&&i.containers.map(function(c){A.observe(c,{subtree:!0,childList:!0})}))};return s={get active(){return i.active},get paused(){return i.paused},activate:function(c){if(i.active)return this;var f=u(c,"onActivate"),p=u(c,"onPostActivate"),N=u(c,"checkCanFocusTrap");N||v(),i.active=!0,i.paused=!1,i.nodeFocusedBeforeActivation=r.activeElement,f?.();var I=function(){N&&v(),P(),R(),p?.()};return N?(N(i.containers.concat()).then(I,I),this):(I(),this)},deactivate:function(c){if(!i.active)return this;var f=et({onDeactivate:a.onDeactivate,onPostDeactivate:a.onPostDeactivate,checkCanReturnFocus:a.checkCanReturnFocus},c);clearTimeout(i.delayInitialFocusTimer),i.delayInitialFocusTimer=void 0,C(),i.active=!1,i.paused=!1,R(),tt.deactivateTrap(n,s);var p=u(f,"onDeactivate"),N=u(f,"onPostDeactivate"),I=u(f,"checkCanReturnFocus"),L=u(f,"returnFocus","returnFocusOnDeactivate");p?.();var g=function(){rt(function(){L&&b(E(i.nodeFocusedBeforeActivation)),N?.()})};return L&&I?(I(E(i.nodeFocusedBeforeActivation)).then(g,g),this):(g(),this)},pause:function(c){if(i.paused||!i.active)return this;var f=u(c,"onPause"),p=u(c,"onPostPause");return i.paused=!0,f?.(),C(),R(),p?.(),this},unpause:function(c){if(!i.paused||!i.active)return this;var f=u(c,"onUnpause"),p=u(c,"onPostUnpause");return i.paused=!1,f?.(),v(),P(),R(),p?.(),this},updateContainerElements:function(c){var f=[].concat(c).filter(Boolean);return i.containers=f.map(function(p){return typeof p=="string"?r.querySelector(p):p}),i.active&&v(),R(),this}},s.updateContainerElements(e),s};function xr(o,e={}){let t;const{immediate:r,...n}=e,a=Z(!1),i=Z(!1),s=d=>t&&t.activate(d),u=d=>t&&t.deactivate(d),l=()=>{t&&(t.pause(),i.value=!0)},h=()=>{t&&(t.unpause(),i.value=!1)};return Le(()=>xt(o),d=>{d&&(t=wr(d,{...n,onActivate(){a.value=!0,e.onActivate&&e.onActivate()},onDeactivate(){a.value=!1,e.onDeactivate&&e.onDeactivate()}}),r&&s())},{flush:"post"}),Ft(()=>u()),{hasFocus:a,isPaused:i,activate:s,deactivate:u,pause:l,unpause:h}}class ae{constructor(e,t=!0,r=[],n=5e3){this.ctx=e,this.iframes=t,this.exclude=r,this.iframesTimeout=n}static matches(e,t){const r=typeof t=="string"?[t]:t,n=e.matches||e.matchesSelector||e.msMatchesSelector||e.mozMatchesSelector||e.oMatchesSelector||e.webkitMatchesSelector;if(n){let a=!1;return r.every(i=>n.call(e,i)?(a=!0,!1):!0),a}else return!1}getContexts(){let e,t=[];return typeof this.ctx>"u"||!this.ctx?e=[]:NodeList.prototype.isPrototypeOf(this.ctx)?e=Array.prototype.slice.call(this.ctx):Array.isArray(this.ctx)?e=this.ctx:typeof this.ctx=="string"?e=Array.prototype.slice.call(document.querySelectorAll(this.ctx)):e=[this.ctx],e.forEach(r=>{const n=t.filter(a=>a.contains(r)).length>0;t.indexOf(r)===-1&&!n&&t.push(r)}),t}getIframeContents(e,t,r=()=>{}){let n;try{const a=e.contentWindow;if(n=a.document,!a||!n)throw new Error("iframe inaccessible")}catch{r()}n&&t(n)}isIframeBlank(e){const t="about:blank",r=e.getAttribute("src").trim();return e.contentWindow.location.href===t&&r!==t&&r}observeIframeLoad(e,t,r){let n=!1,a=null;const i=()=>{if(!n){n=!0,clearTimeout(a);try{this.isIframeBlank(e)||(e.removeEventListener("load",i),this.getIframeContents(e,t,r))}catch{r()}}};e.addEventListener("load",i),a=setTimeout(i,this.iframesTimeout)}onIframeReady(e,t,r){try{e.contentWindow.document.readyState==="complete"?this.isIframeBlank(e)?this.observeIframeLoad(e,t,r):this.getIframeContents(e,t,r):this.observeIframeLoad(e,t,r)}catch{r()}}waitForIframes(e,t){let r=0;this.forEachIframe(e,()=>!0,n=>{r++,this.waitForIframes(n.querySelector("html"),()=>{--r||t()})},n=>{n||t()})}forEachIframe(e,t,r,n=()=>{}){let a=e.querySelectorAll("iframe"),i=a.length,s=0;a=Array.prototype.slice.call(a);const u=()=>{--i<=0&&n(s)};i||u(),a.forEach(l=>{ae.matches(l,this.exclude)?u():this.onIframeReady(l,h=>{t(l)&&(s++,r(h)),u()},u)})}createIterator(e,t,r){return document.createNodeIterator(e,t,r,!1)}createInstanceOnIframe(e){return new ae(e.querySelector("html"),this.iframes)}compareNodeIframe(e,t,r){const n=e.compareDocumentPosition(r),a=Node.DOCUMENT_POSITION_PRECEDING;if(n&a)if(t!==null){const i=t.compareDocumentPosition(r),s=Node.DOCUMENT_POSITION_FOLLOWING;if(i&s)return!0}else return!0;return!1}getIteratorNode(e){const t=e.previousNode();let r;return t===null?r=e.nextNode():r=e.nextNode()&&e.nextNode(),{prevNode:t,node:r}}checkIframeFilter(e,t,r,n){let a=!1,i=!1;return n.forEach((s,u)=>{s.val===r&&(a=u,i=s.handled)}),this.compareNodeIframe(e,t,r)?(a===!1&&!i?n.push({val:r,handled:!0}):a!==!1&&!i&&(n[a].handled=!0),!0):(a===!1&&n.push({val:r,handled:!1}),!1)}handleOpenIframes(e,t,r,n){e.forEach(a=>{a.handled||this.getIframeContents(a.val,i=>{this.createInstanceOnIframe(i).forEachNode(t,r,n)})})}iterateThroughNodes(e,t,r,n,a){const i=this.createIterator(t,e,n);let s=[],u=[],l,h,d=()=>({prevNode:h,node:l}=this.getIteratorNode(i),l);for(;d();)this.iframes&&this.forEachIframe(t,v=>this.checkIframeFilter(l,h,v,s),v=>{this.createInstanceOnIframe(v).forEachNode(e,m=>u.push(m),n)}),u.push(l);u.forEach(v=>{r(v)}),this.iframes&&this.handleOpenIframes(s,e,r,n),a()}forEachNode(e,t,r,n=()=>{}){const a=this.getContexts();let i=a.length;i||n(),a.forEach(s=>{const u=()=>{this.iterateThroughNodes(e,s,t,r,()=>{--i<=0&&n()})};this.iframes?this.waitForIframes(s,u):u()})}}let Fr=class{constructor(e){this.ctx=e,this.ie=!1;const t=window.navigator.userAgent;(t.indexOf("MSIE")>-1||t.indexOf("Trident")>-1)&&(this.ie=!0)}set opt(e){this._opt=Object.assign({},{element:"",className:"",exclude:[],iframes:!1,iframesTimeout:5e3,separateWordSearch:!0,diacritics:!0,synonyms:{},accuracy:"partially",acrossElements:!1,caseSensitive:!1,ignoreJoiners:!1,ignoreGroups:0,ignorePunctuation:[],wildcards:"disabled",each:()=>{},noMatch:()=>{},filter:()=>!0,done:()=>{},debug:!1,log:window.console},e)}get opt(){return this._opt}get iterator(){return new ae(this.ctx,this.opt.iframes,this.opt.exclude,this.opt.iframesTimeout)}log(e,t="debug"){const r=this.opt.log;this.opt.debug&&typeof r=="object"&&typeof r[t]=="function"&&r[t](`mark.js: ${e}`)}escapeStr(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}createRegExp(e){return this.opt.wildcards!=="disabled"&&(e=this.setupWildcardsRegExp(e)),e=this.escapeStr(e),Object.keys(this.opt.synonyms).length&&(e=this.createSynonymsRegExp(e)),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),this.opt.diacritics&&(e=this.createDiacriticsRegExp(e)),e=this.createMergedBlanksRegExp(e),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.createJoinersRegExp(e)),this.opt.wildcards!=="disabled"&&(e=this.createWildcardsRegExp(e)),e=this.createAccuracyRegExp(e),e}createSynonymsRegExp(e){const t=this.opt.synonyms,r=this.opt.caseSensitive?"":"i",n=this.opt.ignoreJoiners||this.opt.ignorePunctuation.length?"\0":"";for(let a in t)if(t.hasOwnProperty(a)){const i=t[a],s=this.opt.wildcards!=="disabled"?this.setupWildcardsRegExp(a):this.escapeStr(a),u=this.opt.wildcards!=="disabled"?this.setupWildcardsRegExp(i):this.escapeStr(i);s!==""&&u!==""&&(e=e.replace(new RegExp(`(${this.escapeStr(s)}|${this.escapeStr(u)})`,`gm${r}`),n+`(${this.processSynomyms(s)}|${this.processSynomyms(u)})`+n))}return e}processSynomyms(e){return(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),e}setupWildcardsRegExp(e){return e=e.replace(/(?:\\)*\?/g,t=>t.charAt(0)==="\\"?"?":""),e.replace(/(?:\\)*\*/g,t=>t.charAt(0)==="\\"?"*":"")}createWildcardsRegExp(e){let t=this.opt.wildcards==="withSpaces";return e.replace(/\u0001/g,t?"[\\S\\s]?":"\\S?").replace(/\u0002/g,t?"[\\S\\s]*?":"\\S*")}setupIgnoreJoinersRegExp(e){return e.replace(/[^(|)\\]/g,(t,r,n)=>{let a=n.charAt(r+1);return/[(|)\\]/.test(a)||a===""?t:t+"\0"})}createJoinersRegExp(e){let t=[];const r=this.opt.ignorePunctuation;return Array.isArray(r)&&r.length&&t.push(this.escapeStr(r.join(""))),this.opt.ignoreJoiners&&t.push("\\u00ad\\u200b\\u200c\\u200d"),t.length?e.split(/\u0000+/).join(`[${t.join("")}]*`):e}createDiacriticsRegExp(e){const t=this.opt.caseSensitive?"":"i",r=this.opt.caseSensitive?["aàáảãạăằắẳẵặâầấẩẫậäåāą","AÀÁẢÃẠĂẰẮẲẴẶÂẦẤẨẪẬÄÅĀĄ","cçćč","CÇĆČ","dđď","DĐĎ","eèéẻẽẹêềếểễệëěēę","EÈÉẺẼẸÊỀẾỂỄỆËĚĒĘ","iìíỉĩịîïī","IÌÍỈĨỊÎÏĪ","lł","LŁ","nñňń","NÑŇŃ","oòóỏõọôồốổỗộơởỡớờợöøō","OÒÓỎÕỌÔỒỐỔỖỘƠỞỠỚỜỢÖØŌ","rř","RŘ","sšśșş","SŠŚȘŞ","tťțţ","TŤȚŢ","uùúủũụưừứửữựûüůū","UÙÚỦŨỤƯỪỨỬỮỰÛÜŮŪ","yýỳỷỹỵÿ","YÝỲỶỸỴŸ","zžżź","ZŽŻŹ"]:["aàáảãạăằắẳẵặâầấẩẫậäåāąAÀÁẢÃẠĂẰẮẲẴẶÂẦẤẨẪẬÄÅĀĄ","cçćčCÇĆČ","dđďDĐĎ","eèéẻẽẹêềếểễệëěēęEÈÉẺẼẸÊỀẾỂỄỆËĚĒĘ","iìíỉĩịîïīIÌÍỈĨỊÎÏĪ","lłLŁ","nñňńNÑŇŃ","oòóỏõọôồốổỗộơởỡớờợöøōOÒÓỎÕỌÔỒỐỔỖỘƠỞỠỚỜỢÖØŌ","rřRŘ","sšśșşSŠŚȘŞ","tťțţTŤȚŢ","uùúủũụưừứửữựûüůūUÙÚỦŨỤƯỪỨỬỮỰÛÜŮŪ","yýỳỷỹỵÿYÝỲỶỸỴŸ","zžżźZŽŻŹ"];let n=[];return e.split("").forEach(a=>{r.every(i=>{if(i.indexOf(a)!==-1){if(n.indexOf(i)>-1)return!1;e=e.replace(new RegExp(`[${i}]`,`gm${t}`),`[${i}]`),n.push(i)}return!0})}),e}createMergedBlanksRegExp(e){return e.replace(/[\s]+/gmi,"[\\s]+")}createAccuracyRegExp(e){const t="!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~¡¿";let r=this.opt.accuracy,n=typeof r=="string"?r:r.value,a=typeof r=="string"?[]:r.limiters,i="";switch(a.forEach(s=>{i+=`|${this.escapeStr(s)}`}),n){case"partially":default:return`()(${e})`;case"complementary":return i="\\s"+(i||this.escapeStr(t)),`()([^${i}]*${e}[^${i}]*)`;case"exactly":return`(^|\\s${i})(${e})(?=$|\\s${i})`}}getSeparatedKeywords(e){let t=[];return e.forEach(r=>{this.opt.separateWordSearch?r.split(" ").forEach(n=>{n.trim()&&t.indexOf(n)===-1&&t.push(n)}):r.trim()&&t.indexOf(r)===-1&&t.push(r)}),{keywords:t.sort((r,n)=>n.length-r.length),length:t.length}}isNumeric(e){return Number(parseFloat(e))==e}checkRanges(e){if(!Array.isArray(e)||Object.prototype.toString.call(e[0])!=="[object Object]")return this.log("markRanges() will only accept an array of objects"),this.opt.noMatch(e),[];const t=[];let r=0;return e.sort((n,a)=>n.start-a.start).forEach(n=>{let{start:a,end:i,valid:s}=this.callNoMatchOnInvalidRanges(n,r);s&&(n.start=a,n.length=i-a,t.push(n),r=i)}),t}callNoMatchOnInvalidRanges(e,t){let r,n,a=!1;return e&&typeof e.start<"u"?(r=parseInt(e.start,10),n=r+parseInt(e.length,10),this.isNumeric(e.start)&&this.isNumeric(e.length)&&n-t>0&&n-r>0?a=!0:(this.log(`Ignoring invalid or overlapping range: ${JSON.stringify(e)}`),this.opt.noMatch(e))):(this.log(`Ignoring invalid range: ${JSON.stringify(e)}`),this.opt.noMatch(e)),{start:r,end:n,valid:a}}checkWhitespaceRanges(e,t,r){let n,a=!0,i=r.length,s=t-i,u=parseInt(e.start,10)-s;return u=u>i?i:u,n=u+parseInt(e.length,10),n>i&&(n=i,this.log(`End range automatically set to the max value of ${i}`)),u<0||n-u<0||u>i||n>i?(a=!1,this.log(`Invalid range: ${JSON.stringify(e)}`),this.opt.noMatch(e)):r.substring(u,n).replace(/\s+/g,"")===""&&(a=!1,this.log("Skipping whitespace only range: "+JSON.stringify(e)),this.opt.noMatch(e)),{start:u,end:n,valid:a}}getTextNodes(e){let t="",r=[];this.iterator.forEachNode(NodeFilter.SHOW_TEXT,n=>{r.push({start:t.length,end:(t+=n.textContent).length,node:n})},n=>this.matchesExclude(n.parentNode)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT,()=>{e({value:t,nodes:r})})}matchesExclude(e){return ae.matches(e,this.opt.exclude.concat(["script","style","title","head","html"]))}wrapRangeInTextNode(e,t,r){const n=this.opt.element?this.opt.element:"mark",a=e.splitText(t),i=a.splitText(r-t);let s=document.createElement(n);return s.setAttribute("data-markjs","true"),this.opt.className&&s.setAttribute("class",this.opt.className),s.textContent=a.textContent,a.parentNode.replaceChild(s,a),i}wrapRangeInMappedTextNode(e,t,r,n,a){e.nodes.every((i,s)=>{const u=e.nodes[s+1];if(typeof u>"u"||u.start>t){if(!n(i.node))return!1;const l=t-i.start,h=(r>i.end?i.end:r)-i.start,d=e.value.substr(0,i.start),v=e.value.substr(h+i.start);if(i.node=this.wrapRangeInTextNode(i.node,l,h),e.value=d+v,e.nodes.forEach((m,b)=>{b>=s&&(e.nodes[b].start>0&&b!==s&&(e.nodes[b].start-=h),e.nodes[b].end-=h)}),r-=h,a(i.node.previousSibling,i.start),r>i.end)t=i.end;else return!1}return!0})}wrapMatches(e,t,r,n,a){const i=t===0?0:t+1;this.getTextNodes(s=>{s.nodes.forEach(u=>{u=u.node;let l;for(;(l=e.exec(u.textContent))!==null&&l[i]!=="";){if(!r(l[i],u))continue;let h=l.index;if(i!==0)for(let d=1;d{let u;for(;(u=e.exec(s.value))!==null&&u[i]!=="";){let l=u.index;if(i!==0)for(let d=1;dr(u[i],d),(d,v)=>{e.lastIndex=v,n(d)})}a()})}wrapRangeFromIndex(e,t,r,n){this.getTextNodes(a=>{const i=a.value.length;e.forEach((s,u)=>{let{start:l,end:h,valid:d}=this.checkWhitespaceRanges(s,i,a.value);d&&this.wrapRangeInMappedTextNode(a,l,h,v=>t(v,s,a.value.substring(l,h),u),v=>{r(v,s)})}),n()})}unwrapMatches(e){const t=e.parentNode;let r=document.createDocumentFragment();for(;e.firstChild;)r.appendChild(e.removeChild(e.firstChild));t.replaceChild(r,e),this.ie?this.normalizeTextNode(t):t.normalize()}normalizeTextNode(e){if(e){if(e.nodeType===3)for(;e.nextSibling&&e.nextSibling.nodeType===3;)e.nodeValue+=e.nextSibling.nodeValue,e.parentNode.removeChild(e.nextSibling);else this.normalizeTextNode(e.firstChild);this.normalizeTextNode(e.nextSibling)}}markRegExp(e,t){this.opt=t,this.log(`Searching with expression "${e}"`);let r=0,n="wrapMatches";const a=i=>{r++,this.opt.each(i)};this.opt.acrossElements&&(n="wrapMatchesAcrossElements"),this[n](e,this.opt.ignoreGroups,(i,s)=>this.opt.filter(s,i,r),a,()=>{r===0&&this.opt.noMatch(e),this.opt.done(r)})}mark(e,t){this.opt=t;let r=0,n="wrapMatches";const{keywords:a,length:i}=this.getSeparatedKeywords(typeof e=="string"?[e]:e),s=this.opt.caseSensitive?"":"i",u=l=>{let h=new RegExp(this.createRegExp(l),`gm${s}`),d=0;this.log(`Searching with expression "${h}"`),this[n](h,1,(v,m)=>this.opt.filter(m,l,r,d),v=>{d++,r++,this.opt.each(v)},()=>{d===0&&this.opt.noMatch(l),a[i-1]===l?this.opt.done(r):u(a[a.indexOf(l)+1])})};this.opt.acrossElements&&(n="wrapMatchesAcrossElements"),i===0?this.opt.done(r):u(a[0])}markRanges(e,t){this.opt=t;let r=0,n=this.checkRanges(e);n&&n.length?(this.log("Starting to mark with the following ranges: "+JSON.stringify(n)),this.wrapRangeFromIndex(n,(a,i,s,u)=>this.opt.filter(a,i,s,u),(a,i)=>{r++,this.opt.each(a,i)},()=>{this.opt.done(r)})):this.opt.done(r)}unmark(e){this.opt=e;let t=this.opt.element?this.opt.element:"*";t+="[data-markjs]",this.opt.className&&(t+=`.${this.opt.className}`),this.log(`Removal selector "${t}"`),this.iterator.forEachNode(NodeFilter.SHOW_ELEMENT,r=>{this.unwrapMatches(r)},r=>{const n=ae.matches(r,t),a=this.matchesExclude(r);return!n||a?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT},this.opt.done)}};function Er(o){const e=new Fr(o);return this.mark=(t,r)=>(e.mark(t,r),this),this.markRegExp=(t,r)=>(e.markRegExp(t,r),this),this.markRanges=(t,r)=>(e.markRanges(t,r),this),this.unmark=t=>(e.unmark(t),this),this}var B=function(){return B=Object.assign||function(e){for(var t,r=1,n=arguments.length;r0&&a[a.length-1])&&(l[0]===6||l[0]===2)){t=0;continue}if(l[0]===3&&(!a||l[1]>a[0]&&l[1]=o.length&&(o=void 0),{value:o&&o[r++],done:!o}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function V(o,e){var t=typeof Symbol=="function"&&o[Symbol.iterator];if(!t)return o;var r=t.call(o),n,a=[],i;try{for(;(e===void 0||e-- >0)&&!(n=r.next()).done;)a.push(n.value)}catch(s){i={error:s}}finally{try{n&&!n.done&&(t=r.return)&&t.call(r)}finally{if(i)throw i.error}}return a}var Tr="ENTRIES",vt="KEYS",pt="VALUES",W="",De=function(){function o(e,t){var r=e._tree,n=Array.from(r.keys());this.set=e,this._type=t,this._path=n.length>0?[{node:r,keys:n}]:[]}return o.prototype.next=function(){var e=this.dive();return this.backtrack(),e},o.prototype.dive=function(){if(this._path.length===0)return{done:!0,value:void 0};var e=re(this._path),t=e.node,r=e.keys;if(re(r)===W)return{done:!1,value:this.result()};var n=t.get(re(r));return this._path.push({node:n,keys:Array.from(n.keys())}),this.dive()},o.prototype.backtrack=function(){if(this._path.length!==0){var e=re(this._path).keys;e.pop(),!(e.length>0)&&(this._path.pop(),this.backtrack())}},o.prototype.key=function(){return this.set._prefix+this._path.map(function(e){var t=e.keys;return re(t)}).filter(function(e){return e!==W}).join("")},o.prototype.value=function(){return re(this._path).node.get(W)},o.prototype.result=function(){switch(this._type){case pt:return this.value();case vt:return this.key();default:return[this.key(),this.value()]}},o.prototype[Symbol.iterator]=function(){return this},o}(),re=function(o){return o[o.length-1]},Cr=function(o,e,t){var r=new Map;if(e===void 0)return r;for(var n=e.length+1,a=n+t,i=new Uint8Array(a*n).fill(t+1),s=0;st)continue e}mt(o.get(m),e,t,r,n,E,i,s+m)}}}catch(f){u={error:f}}finally{try{v&&!v.done&&(l=d.return)&&l.call(d)}finally{if(u)throw u.error}}},ke=function(){function o(e,t){e===void 0&&(e=new Map),t===void 0&&(t=""),this._size=void 0,this._tree=e,this._prefix=t}return o.prototype.atPrefix=function(e){var t,r;if(!e.startsWith(this._prefix))throw new Error("Mismatched prefix");var n=V(Ce(this._tree,e.slice(this._prefix.length)),2),a=n[0],i=n[1];if(a===void 0){var s=V($e(i),2),u=s[0],l=s[1];try{for(var h=k(u.keys()),d=h.next();!d.done;d=h.next()){var v=d.value;if(v!==W&&v.startsWith(l)){var m=new Map;return m.set(v.slice(l.length),u.get(v)),new o(m,e)}}}catch(b){t={error:b}}finally{try{d&&!d.done&&(r=h.return)&&r.call(h)}finally{if(t)throw t.error}}}return new o(a,e)},o.prototype.clear=function(){this._size=void 0,this._tree.clear()},o.prototype.delete=function(e){return this._size=void 0,Nr(this._tree,e)},o.prototype.entries=function(){return new De(this,Tr)},o.prototype.forEach=function(e){var t,r;try{for(var n=k(this),a=n.next();!a.done;a=n.next()){var i=V(a.value,2),s=i[0],u=i[1];e(s,u,this)}}catch(l){t={error:l}}finally{try{a&&!a.done&&(r=n.return)&&r.call(n)}finally{if(t)throw t.error}}},o.prototype.fuzzyGet=function(e,t){return Cr(this._tree,e,t)},o.prototype.get=function(e){var t=Pe(this._tree,e);return t!==void 0?t.get(W):void 0},o.prototype.has=function(e){var t=Pe(this._tree,e);return t!==void 0&&t.has(W)},o.prototype.keys=function(){return new De(this,vt)},o.prototype.set=function(e,t){if(typeof e!="string")throw new Error("key must be a string");this._size=void 0;var r=Oe(this._tree,e);return r.set(W,t),this},Object.defineProperty(o.prototype,"size",{get:function(){if(this._size)return this._size;this._size=0;for(var e=this.entries();!e.next().done;)this._size+=1;return this._size},enumerable:!1,configurable:!0}),o.prototype.update=function(e,t){if(typeof e!="string")throw new Error("key must be a string");this._size=void 0;var r=Oe(this._tree,e);return r.set(W,t(r.get(W))),this},o.prototype.fetch=function(e,t){if(typeof e!="string")throw new Error("key must be a string");this._size=void 0;var r=Oe(this._tree,e),n=r.get(W);return n===void 0&&r.set(W,n=t()),n},o.prototype.values=function(){return new De(this,pt)},o.prototype[Symbol.iterator]=function(){return this.entries()},o.from=function(e){var t,r,n=new o;try{for(var a=k(e),i=a.next();!i.done;i=a.next()){var s=V(i.value,2),u=s[0],l=s[1];n.set(u,l)}}catch(h){t={error:h}}finally{try{i&&!i.done&&(r=a.return)&&r.call(a)}finally{if(t)throw t.error}}return n},o.fromObject=function(e){return o.from(Object.entries(e))},o}(),Ce=function(o,e,t){var r,n;if(t===void 0&&(t=[]),e.length===0||o==null)return[o,t];try{for(var a=k(o.keys()),i=a.next();!i.done;i=a.next()){var s=i.value;if(s!==W&&e.startsWith(s))return t.push([o,s]),Ce(o.get(s),e.slice(s.length),t)}}catch(u){r={error:u}}finally{try{i&&!i.done&&(n=a.return)&&n.call(a)}finally{if(r)throw r.error}}return t.push([o,e]),Ce(void 0,"",t)},Pe=function(o,e){var t,r;if(e.length===0||o==null)return o;try{for(var n=k(o.keys()),a=n.next();!a.done;a=n.next()){var i=a.value;if(i!==W&&e.startsWith(i))return Pe(o.get(i),e.slice(i.length))}}catch(s){t={error:s}}finally{try{a&&!a.done&&(r=n.return)&&r.call(n)}finally{if(t)throw t.error}}},Oe=function(o,e){var t,r,n=e.length;e:for(var a=0;o&&a0)throw new Error("Expected documents to be present. Omit the argument to remove all documents.");this._index=new ke,this._documentCount=0,this._documentIds=new Map,this._idToShortId=new Map,this._fieldLength=new Map,this._avgFieldLength=[],this._storedFields=new Map,this._nextId=0}},o.prototype.discard=function(e){var t=this,r=this._idToShortId.get(e);if(r==null)throw new Error("MiniSearch: cannot discard document with ID ".concat(e,": it is not in the index"));this._idToShortId.delete(e),this._documentIds.delete(r),this._storedFields.delete(r),(this._fieldLength.get(r)||[]).forEach(function(n,a){t.removeFieldLength(r,a,t._documentCount,n)}),this._fieldLength.delete(r),this._documentCount-=1,this._dirtCount+=1,this.maybeAutoVacuum()},o.prototype.maybeAutoVacuum=function(){if(this._options.autoVacuum!==!1){var e=this._options.autoVacuum,t=e.minDirtFactor,r=e.minDirtCount,n=e.batchSize,a=e.batchWait;this.conditionalVacuum({batchSize:n,batchWait:a},{minDirtCount:r,minDirtFactor:t})}},o.prototype.discardAll=function(e){var t,r,n=this._options.autoVacuum;try{this._options.autoVacuum=!1;try{for(var a=k(e),i=a.next();!i.done;i=a.next()){var s=i.value;this.discard(s)}}catch(u){t={error:u}}finally{try{i&&!i.done&&(r=a.return)&&r.call(a)}finally{if(t)throw t.error}}}finally{this._options.autoVacuum=n}this.maybeAutoVacuum()},o.prototype.replace=function(e){var t=this._options,r=t.idField,n=t.extractField,a=n(e,r);this.discard(a),this.add(e)},o.prototype.vacuum=function(e){return e===void 0&&(e={}),this.conditionalVacuum(e)},o.prototype.conditionalVacuum=function(e,t){var r=this;return this._currentVacuum?(this._enqueuedVacuumConditions=this._enqueuedVacuumConditions&&t,this._enqueuedVacuum!=null?this._enqueuedVacuum:(this._enqueuedVacuum=this._currentVacuum.then(function(){var n=r._enqueuedVacuumConditions;return r._enqueuedVacuumConditions=Ve,r.performVacuuming(e,n)}),this._enqueuedVacuum)):this.vacuumConditionsMet(t)===!1?Promise.resolve():(this._currentVacuum=this.performVacuuming(e),this._currentVacuum)},o.prototype.performVacuuming=function(e,t){return Sr(this,void 0,void 0,function(){var r,n,a,i,s,u,l,h,d,v,m,b,E,y,S,T,F,z,M,P,C,_,A,R,x;return Ar(this,function(c){switch(c.label){case 0:if(r=this._dirtCount,!this.vacuumConditionsMet(t))return[3,10];n=e.batchSize||Be.batchSize,a=e.batchWait||Be.batchWait,i=1,c.label=1;case 1:c.trys.push([1,7,8,9]),s=k(this._index),u=s.next(),c.label=2;case 2:if(u.done)return[3,6];l=V(u.value,2),h=l[0],d=l[1];try{for(v=(_=void 0,k(d)),m=v.next();!m.done;m=v.next()){b=V(m.value,2),E=b[0],y=b[1];try{for(S=(R=void 0,k(y)),T=S.next();!T.done;T=S.next())F=V(T.value,1),z=F[0],!this._documentIds.has(z)&&(y.size<=1?d.delete(E):y.delete(z))}catch(f){R={error:f}}finally{try{T&&!T.done&&(x=S.return)&&x.call(S)}finally{if(R)throw R.error}}}}catch(f){_={error:f}}finally{try{m&&!m.done&&(A=v.return)&&A.call(v)}finally{if(_)throw _.error}}return this._index.get(h).size===0&&this._index.delete(h),i%n!==0?[3,4]:[4,new Promise(function(f){return setTimeout(f,a)})];case 3:c.sent(),c.label=4;case 4:i+=1,c.label=5;case 5:return u=s.next(),[3,2];case 6:return[3,9];case 7:return M=c.sent(),P={error:M},[3,9];case 8:try{u&&!u.done&&(C=s.return)&&C.call(s)}finally{if(P)throw P.error}return[7];case 9:this._dirtCount-=r,c.label=10;case 10:return[4,null];case 11:return c.sent(),this._currentVacuum=this._enqueuedVacuum,this._enqueuedVacuum=null,[2]}})})},o.prototype.vacuumConditionsMet=function(e){if(e==null)return!0;var t=e.minDirtCount,r=e.minDirtFactor;return t=t||Me.minDirtCount,r=r||Me.minDirtFactor,this.dirtCount>=t&&this.dirtFactor>=r},Object.defineProperty(o.prototype,"isVacuuming",{get:function(){return this._currentVacuum!=null},enumerable:!1,configurable:!0}),Object.defineProperty(o.prototype,"dirtCount",{get:function(){return this._dirtCount},enumerable:!1,configurable:!0}),Object.defineProperty(o.prototype,"dirtFactor",{get:function(){return this._dirtCount/(1+this._documentCount+this._dirtCount)},enumerable:!1,configurable:!0}),o.prototype.has=function(e){return this._idToShortId.has(e)},o.prototype.getStoredFields=function(e){var t=this._idToShortId.get(e);if(t!=null)return this._storedFields.get(t)},o.prototype.search=function(e,t){var r,n;t===void 0&&(t={});var a=this.executeQuery(e,t),i=[];try{for(var s=k(a),u=s.next();!u.done;u=s.next()){var l=V(u.value,2),h=l[0],d=l[1],v=d.score,m=d.terms,b=d.match,E=m.length||1,y={id:this._documentIds.get(h),score:v*E,terms:Object.keys(b),queryTerms:m,match:b};Object.assign(y,this._storedFields.get(h)),(t.filter==null||t.filter(y))&&i.push(y)}}catch(S){r={error:S}}finally{try{u&&!u.done&&(n=s.return)&&n.call(s)}finally{if(r)throw r.error}}return e===o.wildcard&&t.boostDocument==null&&this._options.searchOptions.boostDocument==null||i.sort(ot),i},o.prototype.autoSuggest=function(e,t){var r,n,a,i;t===void 0&&(t={}),t=B(B({},this._options.autoSuggestOptions),t);var s=new Map;try{for(var u=k(this.search(e,t)),l=u.next();!l.done;l=u.next()){var h=l.value,d=h.score,v=h.terms,m=v.join(" "),b=s.get(m);b!=null?(b.score+=d,b.count+=1):s.set(m,{score:d,terms:v,count:1})}}catch(M){r={error:M}}finally{try{l&&!l.done&&(n=u.return)&&n.call(u)}finally{if(r)throw r.error}}var E=[];try{for(var y=k(s),S=y.next();!S.done;S=y.next()){var T=V(S.value,2),b=T[0],F=T[1],d=F.score,v=F.terms,z=F.count;E.push({suggestion:b,terms:v,score:d/z})}}catch(M){a={error:M}}finally{try{S&&!S.done&&(i=y.return)&&i.call(y)}finally{if(a)throw a.error}}return E.sort(ot),E},Object.defineProperty(o.prototype,"documentCount",{get:function(){return this._documentCount},enumerable:!1,configurable:!0}),Object.defineProperty(o.prototype,"termCount",{get:function(){return this._index.size},enumerable:!1,configurable:!0}),o.loadJSON=function(e,t){if(t==null)throw new Error("MiniSearch: loadJSON should be given the same options used when serializing the index");return this.loadJS(JSON.parse(e),t)},o.getDefault=function(e){if(_e.hasOwnProperty(e))return Re(_e,e);throw new Error('MiniSearch: unknown option "'.concat(e,'"'))},o.loadJS=function(e,t){var r,n,a,i,s,u,l=e.index,h=e.documentCount,d=e.nextId,v=e.documentIds,m=e.fieldIds,b=e.fieldLength,E=e.averageFieldLength,y=e.storedFields,S=e.dirtCount,T=e.serializationVersion;if(T!==1&&T!==2)throw new Error("MiniSearch: cannot deserialize an index created with an incompatible version");var F=new o(t);F._documentCount=h,F._nextId=d,F._documentIds=Fe(v),F._idToShortId=new Map,F._fieldIds=m,F._fieldLength=Fe(b),F._avgFieldLength=E,F._storedFields=Fe(y),F._dirtCount=S||0,F._index=new ke;try{for(var z=k(F._documentIds),M=z.next();!M.done;M=z.next()){var P=V(M.value,2),C=P[0],_=P[1];F._idToShortId.set(_,C)}}catch(w){r={error:w}}finally{try{M&&!M.done&&(n=z.return)&&n.call(z)}finally{if(r)throw r.error}}try{for(var A=k(l),R=A.next();!R.done;R=A.next()){var x=V(R.value,2),c=x[0],f=x[1],p=new Map;try{for(var N=(s=void 0,k(Object.keys(f))),I=N.next();!I.done;I=N.next()){var L=I.value,g=f[L];T===1&&(g=g.ds),p.set(parseInt(L,10),Fe(g))}}catch(w){s={error:w}}finally{try{I&&!I.done&&(u=N.return)&&u.call(N)}finally{if(s)throw s.error}}F._index.set(c,p)}}catch(w){a={error:w}}finally{try{R&&!R.done&&(i=A.return)&&i.call(A)}finally{if(a)throw a.error}}return F},o.prototype.executeQuery=function(e,t){var r=this;if(t===void 0&&(t={}),e===o.wildcard)return this.executeWildcardQuery(t);if(typeof e!="string"){var n=B(B(B({},t),e),{queries:void 0}),a=e.queries.map(function(y){return r.executeQuery(y,n)});return this.combineResults(a,n.combineWith)}var i=this._options,s=i.tokenize,u=i.processTerm,l=i.searchOptions,h=B(B({tokenize:s,processTerm:u},l),t),d=h.tokenize,v=h.processTerm,m=d(e).flatMap(function(y){return v(y)}).filter(function(y){return!!y}),b=m.map(_r(h)),E=b.map(function(y){return r.executeQuerySpec(y,h)});return this.combineResults(E,h.combineWith)},o.prototype.executeQuerySpec=function(e,t){var r,n,a,i,s=B(B({},this._options.searchOptions),t),u=(s.fields||this._options.fields).reduce(function(L,g){var w;return B(B({},L),(w={},w[g]=Re(s.boost,g)||1,w))},{}),l=s.boostDocument,h=s.weights,d=s.maxFuzzy,v=s.bm25,m=B(B({},nt.weights),h),b=m.fuzzy,E=m.prefix,y=this._index.get(e.term),S=this.termResults(e.term,e.term,1,y,u,l,v),T,F;if(e.prefix&&(T=this._index.atPrefix(e.term)),e.fuzzy){var z=e.fuzzy===!0?.2:e.fuzzy,M=z<1?Math.min(d,Math.round(e.term.length*z)):z;M&&(F=this._index.fuzzyGet(e.term,M))}if(T)try{for(var P=k(T),C=P.next();!C.done;C=P.next()){var _=V(C.value,2),A=_[0],R=_[1],x=A.length-e.term.length;if(x){F?.delete(A);var c=E*A.length/(A.length+.3*x);this.termResults(e.term,A,c,R,u,l,v,S)}}}catch(L){r={error:L}}finally{try{C&&!C.done&&(n=P.return)&&n.call(P)}finally{if(r)throw r.error}}if(F)try{for(var f=k(F.keys()),p=f.next();!p.done;p=f.next()){var A=p.value,N=V(F.get(A),2),I=N[0],x=N[1];if(x){var c=b*A.length/(A.length+x);this.termResults(e.term,A,c,I,u,l,v,S)}}}catch(L){a={error:L}}finally{try{p&&!p.done&&(i=f.return)&&i.call(f)}finally{if(a)throw a.error}}return S},o.prototype.executeWildcardQuery=function(e){var t,r,n=new Map,a=B(B({},this._options.searchOptions),e);try{for(var i=k(this._documentIds),s=i.next();!s.done;s=i.next()){var u=V(s.value,2),l=u[0],h=u[1],d=a.boostDocument?a.boostDocument(h,"",this._storedFields.get(l)):1;n.set(l,{score:d,terms:[],match:{}})}}catch(v){t={error:v}}finally{try{s&&!s.done&&(r=i.return)&&r.call(i)}finally{if(t)throw t.error}}return n},o.prototype.combineResults=function(e,t){if(t===void 0&&(t=We),e.length===0)return new Map;var r=t.toLowerCase();return e.reduce(kr[r])||new Map},o.prototype.toJSON=function(){var e,t,r,n,a=[];try{for(var i=k(this._index),s=i.next();!s.done;s=i.next()){var u=V(s.value,2),l=u[0],h=u[1],d={};try{for(var v=(r=void 0,k(h)),m=v.next();!m.done;m=v.next()){var b=V(m.value,2),E=b[0],y=b[1];d[E]=Object.fromEntries(y)}}catch(S){r={error:S}}finally{try{m&&!m.done&&(n=v.return)&&n.call(v)}finally{if(r)throw r.error}}a.push([l,d])}}catch(S){e={error:S}}finally{try{s&&!s.done&&(t=i.return)&&t.call(i)}finally{if(e)throw e.error}}return{documentCount:this._documentCount,nextId:this._nextId,documentIds:Object.fromEntries(this._documentIds),fieldIds:this._fieldIds,fieldLength:Object.fromEntries(this._fieldLength),averageFieldLength:this._avgFieldLength,storedFields:Object.fromEntries(this._storedFields),dirtCount:this._dirtCount,index:a,serializationVersion:2}},o.prototype.termResults=function(e,t,r,n,a,i,s,u){var l,h,d,v,m;if(u===void 0&&(u=new Map),n==null)return u;try{for(var b=k(Object.keys(a)),E=b.next();!E.done;E=b.next()){var y=E.value,S=a[y],T=this._fieldIds[y],F=n.get(T);if(F!=null){var z=F.size,M=this._avgFieldLength[T];try{for(var P=(d=void 0,k(F.keys())),C=P.next();!C.done;C=P.next()){var _=C.value;if(!this._documentIds.has(_)){this.removeTerm(T,_,t),z-=1;continue}var A=i?i(this._documentIds.get(_),t,this._storedFields.get(_)):1;if(A){var R=F.get(_),x=this._fieldLength.get(_)[T],c=Rr(R,z,this._documentCount,x,M,s),f=r*S*A*c,p=u.get(_);if(p){p.score+=f,Lr(p.terms,e);var N=Re(p.match,t);N?N.push(y):p.match[t]=[y]}else u.set(_,{score:f,terms:[e],match:(m={},m[t]=[y],m)})}}}catch(I){d={error:I}}finally{try{C&&!C.done&&(v=P.return)&&v.call(P)}finally{if(d)throw d.error}}}}}catch(I){l={error:I}}finally{try{E&&!E.done&&(h=b.return)&&h.call(b)}finally{if(l)throw l.error}}return u},o.prototype.addTerm=function(e,t,r){var n=this._index.fetch(r,st),a=n.get(e);if(a==null)a=new Map,a.set(t,1),n.set(e,a);else{var i=a.get(t);a.set(t,(i||0)+1)}},o.prototype.removeTerm=function(e,t,r){if(!this._index.has(r)){this.warnDocumentChanged(t,e,r);return}var n=this._index.fetch(r,st),a=n.get(e);a==null||a.get(t)==null?this.warnDocumentChanged(t,e,r):a.get(t)<=1?a.size<=1?n.delete(e):a.delete(t):a.set(t,a.get(t)-1),this._index.get(r).size===0&&this._index.delete(r)},o.prototype.warnDocumentChanged=function(e,t,r){var n,a;try{for(var i=k(Object.keys(this._fieldIds)),s=i.next();!s.done;s=i.next()){var u=s.value;if(this._fieldIds[u]===t){this._options.logger("warn","MiniSearch: document with ID ".concat(this._documentIds.get(e),' has changed before removal: term "').concat(r,'" was not present in field "').concat(u,'". Removing a document after it has changed can corrupt the index!'),"version_conflict");return}}}catch(l){n={error:l}}finally{try{s&&!s.done&&(a=i.return)&&a.call(i)}finally{if(n)throw n.error}}},o.prototype.addDocumentId=function(e){var t=this._nextId;return this._idToShortId.set(e,t),this._documentIds.set(t,e),this._documentCount+=1,this._nextId+=1,t},o.prototype.addFields=function(e){for(var t=0;t(Bt("data-v-cb4e1afe"),o=o(),Vt(),o),Br=["aria-owns"],Vr={class:"shell"},$r=["title"],Wr=G(()=>O("span",{"aria-hidden":"true",class:"vpi-search search-icon local-search-icon"},null,-1)),Kr=[Wr],Jr={class:"search-actions before"},Ur=["title"],jr=G(()=>O("span",{class:"vpi-arrow-left local-search-icon"},null,-1)),Gr=[jr],Qr=["placeholder"],qr={class:"search-actions"},Hr=["title"],Yr=G(()=>O("span",{class:"vpi-layout-list local-search-icon"},null,-1)),Zr=[Yr],Xr=["disabled","title"],ea=G(()=>O("span",{class:"vpi-delete local-search-icon"},null,-1)),ta=[ea],ra=["id","role","aria-labelledby"],aa=["aria-selected"],na=["href","aria-label","onMouseenter","onFocusin"],ia={class:"titles"},oa=G(()=>O("span",{class:"title-icon"},"#",-1)),sa=["innerHTML"],ua=G(()=>O("span",{class:"vpi-chevron-right local-search-icon"},null,-1)),la={class:"title main"},ca=["innerHTML"],fa={key:0,class:"excerpt-wrapper"},ha={key:0,class:"excerpt",inert:""},da=["innerHTML"],va=G(()=>O("div",{class:"excerpt-gradient-bottom"},null,-1)),pa=G(()=>O("div",{class:"excerpt-gradient-top"},null,-1)),ma={key:0,class:"no-results"},ya={class:"search-keyboard-shortcuts"},ga=["aria-label"],ba=G(()=>O("span",{class:"vpi-arrow-up navigate-icon"},null,-1)),wa=[ba],xa=["aria-label"],Fa=G(()=>O("span",{class:"vpi-arrow-down navigate-icon"},null,-1)),Ea=[Fa],Sa=["aria-label"],Aa=G(()=>O("span",{class:"vpi-corner-down-left navigate-icon"},null,-1)),Ta=[Aa],Ca=["aria-label"],Na=Et({__name:"VPLocalSearchBox",emits:["close"],setup(o,{emit:e}){const t=e,r=ye(),n=ye(),a=ye(Qt),i=jt(),{activate:s}=xr(r,{immediate:!0,allowOutsideClick:!0,clickOutsideDeactivates:!0,escapeDeactivates:!0}),{localeIndex:u,theme:l}=i,h=Ge(async()=>Ye(Dr.loadJSON((await a.value[u.value]?.())?.default,{fields:["title","titles","text"],storeFields:["title","titles"],searchOptions:{fuzzy:.2,prefix:!0,boost:{title:4,text:2,titles:1},...l.value.search?.provider==="local"&&l.value.search.options?.miniSearch?.searchOptions},...l.value.search?.provider==="local"&&l.value.search.options?.miniSearch?.options}))),v=ge(()=>l.value.search?.provider==="local"&&l.value.search.options?.disableQueryPersistence===!0).value?Z(""):St("vitepress:local-search-filter",""),m=At("vitepress:local-search-detailed-list",l.value.search?.provider==="local"&&l.value.search.options?.detailedView===!0),b=ge(()=>l.value.search?.provider==="local"&&(l.value.search.options?.disableDetailedView===!0||l.value.search.options?.detailedView===!1)),E=ge(()=>{const g=l.value.search?.options??l.value.algolia;return g?.locales?.[u.value]?.translations?.button?.buttonText||g?.translations?.button?.buttonText||"Search"});Tt(()=>{b.value&&(m.value=!1)});const y=ye([]),S=Z(!1);Le(v,()=>{S.value=!1});const T=Ge(async()=>{if(n.value)return Ye(new Er(n.value))},null),F=new Pr(16);Ct(()=>[h.value,v.value,m.value],async([g,w,D],U,j)=>{U?.[0]!==g&&F.clear();let J=!1;if(j(()=>{J=!0}),!g)return;y.value=g.search(w).slice(0,16),S.value=!0;const H=D?await Promise.all(y.value.map(K=>z(K.id))):[];if(J)return;for(const{id:K,mod:pe}of H){const me=K.slice(0,K.indexOf("#"));let oe=F.get(me);if(oe)continue;oe=new Map,F.set(me,oe);const se=pe.default??pe;if(se?.render||se?.setup){const Y=$t(se);Y.config.warnHandler=()=>{},Y.provide(Wt,i),Object.defineProperties(Y.config.globalProperties,{$frontmatter:{get(){return i.frontmatter.value}},$params:{get(){return i.page.value.params}}});const Ke=document.createElement("div");Y.mount(Ke),Ke.querySelectorAll("h1, h2, h3, h4, h5, h6").forEach(ue=>{const Je=ue.querySelector("a")?.getAttribute("href"),Ue=Je?.startsWith("#")&&Je.slice(1);if(!Ue)return;let je="";for(;(ue=ue.nextElementSibling)&&!/^h[1-6]$/i.test(ue.tagName);)je+=ue.outerHTML;oe.set(Ue,je)}),Y.unmount()}if(J)return}const ne=new Set;if(y.value=y.value.map(K=>{const[pe,me]=K.id.split("#"),se=F.get(pe)?.get(me)??"";for(const Y in K.match)ne.add(Y);return{...K,text:se}}),await le(),J)return;await new Promise(K=>{T.value?.unmark({done:()=>{T.value?.markRegExp(L(ne),{done:K})}})});const ie=r.value?.querySelectorAll(".result .excerpt")??[];for(const K of ie)K.querySelector('mark[data-markjs="true"]')?.scrollIntoView({block:"center"});n.value?.firstElementChild?.scrollIntoView({block:"start"})},{debounce:200,immediate:!0});async function z(g){const w=Kt(g.slice(0,g.indexOf("#")));try{if(!w)throw new Error(`Cannot find file for id: ${g}`);return{id:g,mod:await import(w)}}catch(D){return console.error(D),{id:g,mod:{}}}}const M=Z(),P=ge(()=>v.value?.length<=0);function C(g=!0){M.value?.focus(),g&&M.value?.select()}Ne(()=>{C()});function _(g){g.pointerType==="mouse"&&C()}const A=Z(-1),R=Z(!1);Le(y,g=>{A.value=g.length?0:-1,x()});function x(){le(()=>{document.querySelector(".result.selected")?.scrollIntoView({block:"nearest"})})}be("ArrowUp",g=>{g.preventDefault(),A.value--,A.value<0&&(A.value=y.value.length-1),R.value=!0,x()}),be("ArrowDown",g=>{g.preventDefault(),A.value++,A.value>=y.value.length&&(A.value=0),R.value=!0,x()});const c=Nt();be("Enter",g=>{if(g.isComposing||g.target instanceof HTMLButtonElement&&g.target.type!=="submit")return;const w=y.value[A.value];if(g.target instanceof HTMLInputElement&&!w){g.preventDefault();return}w&&(c.go(w.id),t("close"))}),be("Escape",()=>{t("close")});const p=Gt({modal:{displayDetails:"Display detailed list",resetButtonTitle:"Reset search",backButtonTitle:"Close search",noResultsText:"No results for",footer:{selectText:"to select",selectKeyAriaLabel:"enter",navigateText:"to navigate",navigateUpKeyAriaLabel:"up arrow",navigateDownKeyAriaLabel:"down arrow",closeText:"to close",closeKeyAriaLabel:"escape"}}});Ne(()=>{window.history.pushState(null,"",null)}),It("popstate",g=>{g.preventDefault(),t("close")});const N=Dt(kt?document.body:null);Ne(()=>{le(()=>{N.value=!0,le().then(()=>s())})}),Ot(()=>{N.value=!1});function I(){v.value="",le().then(()=>C(!1))}function L(g){return new RegExp([...g].sort((w,D)=>D.length-w.length).map(w=>`(${Jt(w)})`).join("|"),"gi")}return(g,w)=>(Q(),Rt(Pt,{to:"body"},[O("div",{ref_key:"el",ref:r,role:"button","aria-owns":y.value?.length?"localsearch-list":void 0,"aria-expanded":"true","aria-haspopup":"listbox","aria-labelledby":"localsearch-label",class:"VPLocalSearchBox"},[O("div",{class:"backdrop",onClick:w[0]||(w[0]=D=>g.$emit("close"))}),O("div",Vr,[O("form",{class:"search-bar",onPointerup:w[4]||(w[4]=D=>_(D)),onSubmit:w[5]||(w[5]=_t(()=>{},["prevent"]))},[O("label",{title:E.value,id:"localsearch-label",for:"localsearch-input"},Kr,8,$r),O("div",Jr,[O("button",{class:"back-button",title:$(p)("modal.backButtonTitle"),onClick:w[1]||(w[1]=D=>g.$emit("close"))},Gr,8,Ur)]),Mt(O("input",{ref_key:"searchInput",ref:M,"onUpdate:modelValue":w[2]||(w[2]=D=>zt(v)?v.value=D:null),placeholder:E.value,id:"localsearch-input","aria-labelledby":"localsearch-label",class:"search-input"},null,8,Qr),[[Lt,$(v)]]),O("div",qr,[b.value?we("",!0):(Q(),q("button",{key:0,class:Qe(["toggle-layout-button",{"detailed-list":$(m)}]),type:"button",title:$(p)("modal.displayDetails"),onClick:w[3]||(w[3]=D=>A.value>-1&&(m.value=!$(m)))},Zr,10,Hr)),O("button",{class:"clear-button",type:"reset",disabled:P.value,title:$(p)("modal.resetButtonTitle"),onClick:I},ta,8,Xr)])],32),O("ul",{ref_key:"resultsEl",ref:n,id:y.value?.length?"localsearch-list":void 0,role:y.value?.length?"listbox":void 0,"aria-labelledby":y.value?.length?"localsearch-label":void 0,class:"results",onMousemove:w[7]||(w[7]=D=>R.value=!1)},[(Q(!0),q(He,null,qe(y.value,(D,U)=>(Q(),q("li",{key:D.id,role:"option","aria-selected":A.value===U?"true":"false"},[O("a",{href:D.id,class:Qe(["result",{selected:A.value===U}]),"aria-label":[...D.titles,D.title].join(" > "),onMouseenter:j=>!R.value&&(A.value=U),onFocusin:j=>A.value=U,onClick:w[6]||(w[6]=j=>g.$emit("close"))},[O("div",null,[O("div",ia,[oa,(Q(!0),q(He,null,qe(D.titles,(j,J)=>(Q(),q("span",{key:J,class:"title"},[O("span",{class:"text",innerHTML:j},null,8,sa),ua]))),128)),O("span",la,[O("span",{class:"text",innerHTML:D.title},null,8,ca)])]),$(m)?(Q(),q("div",fa,[D.text?(Q(),q("div",ha,[O("div",{class:"vp-doc",innerHTML:D.text},null,8,da)])):we("",!0),va,pa])):we("",!0)])],42,na)],8,aa))),128)),$(v)&&!y.value.length&&S.value?(Q(),q("li",ma,[ce(fe($(p)("modal.noResultsText"))+' "',1),O("strong",null,fe($(v)),1),ce('" ')])):we("",!0)],40,ra),O("div",ya,[O("span",null,[O("kbd",{"aria-label":$(p)("modal.footer.navigateUpKeyAriaLabel")},wa,8,ga),O("kbd",{"aria-label":$(p)("modal.footer.navigateDownKeyAriaLabel")},Ea,8,xa),ce(" "+fe($(p)("modal.footer.navigateText")),1)]),O("span",null,[O("kbd",{"aria-label":$(p)("modal.footer.selectKeyAriaLabel")},Ta,8,Sa),ce(" "+fe($(p)("modal.footer.selectText")),1)]),O("span",null,[O("kbd",{"aria-label":$(p)("modal.footer.closeKeyAriaLabel")},"esc",8,Ca),ce(" "+fe($(p)("modal.footer.closeText")),1)])])])],8,Br)]))}}),Ra=Ut(Na,[["__scopeId","data-v-cb4e1afe"]]);export{Ra as default}; diff --git a/assets/chunks/framework.uxIHJ7Q2.js b/assets/chunks/framework.uxIHJ7Q2.js new file mode 100644 index 0000000..18528d0 --- /dev/null +++ b/assets/chunks/framework.uxIHJ7Q2.js @@ -0,0 +1,17 @@ +/** +* @vue/shared v3.4.27 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**//*! #__NO_SIDE_EFFECTS__ */function Sr(e,t){const n=new Set(e.split(","));return r=>n.has(r)}const ee={},yt=[],xe=()=>{},Pi=()=>!1,zt=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Tr=e=>e.startsWith("onUpdate:"),ie=Object.assign,Ar=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},Ni=Object.prototype.hasOwnProperty,Y=(e,t)=>Ni.call(e,t),H=Array.isArray,_t=e=>Xt(e)==="[object Map]",At=e=>Xt(e)==="[object Set]",rs=e=>Xt(e)==="[object Date]",K=e=>typeof e=="function",se=e=>typeof e=="string",Ue=e=>typeof e=="symbol",Z=e=>e!==null&&typeof e=="object",eo=e=>(Z(e)||K(e))&&K(e.then)&&K(e.catch),to=Object.prototype.toString,Xt=e=>to.call(e),Fi=e=>Xt(e).slice(8,-1),no=e=>Xt(e)==="[object Object]",Rr=e=>se(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,bt=Sr(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Fn=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},$i=/-(\w)/g,$e=Fn(e=>e.replace($i,(t,n)=>n?n.toUpperCase():"")),Hi=/\B([A-Z])/g,pt=Fn(e=>e.replace(Hi,"-$1").toLowerCase()),$n=Fn(e=>e.charAt(0).toUpperCase()+e.slice(1)),bn=Fn(e=>e?`on${$n(e)}`:""),et=(e,t)=>!Object.is(e,t),vn=(e,t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:r,value:n})},Sn=e=>{const t=parseFloat(e);return isNaN(t)?e:t},ji=e=>{const t=se(e)?Number(e):NaN;return isNaN(t)?e:t};let ss;const so=()=>ss||(ss=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Or(e){if(H(e)){const t={};for(let n=0;n{if(n){const r=n.split(Di);r.length>1&&(t[r[0].trim()]=r[1].trim())}}),t}function Lr(e){let t="";if(se(e))t=e;else if(H(e))for(let n=0;nYt(n,t))}const cu=e=>se(e)?e:e==null?"":H(e)||Z(e)&&(e.toString===to||!K(e.toString))?JSON.stringify(e,io,2):String(e),io=(e,t)=>t&&t.__v_isRef?io(e,t.value):_t(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[r,s],o)=>(n[Jn(r,o)+" =>"]=s,n),{})}:At(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>Jn(n))}:Ue(t)?Jn(t):Z(t)&&!H(t)&&!no(t)?String(t):t,Jn=(e,t="")=>{var n;return Ue(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/** +* @vue/reactivity v3.4.27 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let we;class qi{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this.parent=we,!t&&we&&(this.index=(we.scopes||(we.scopes=[])).push(this)-1)}get active(){return this._active}run(t){if(this._active){const n=we;try{return we=this,t()}finally{we=n}}}on(){we=this}off(){we=this.parent}stop(t){if(this._active){let n,r;for(n=0,r=this.effects.length;n=4))break}this._dirtyLevel===1&&(this._dirtyLevel=0),rt()}return this._dirtyLevel>=4}set dirty(t){this._dirtyLevel=t?4:0}run(){if(this._dirtyLevel=0,!this.active)return this.fn();let t=Qe,n=ft;try{return Qe=!0,ft=this,this._runnings++,os(this),this.fn()}finally{is(this),this._runnings--,ft=n,Qe=t}}stop(){this.active&&(os(this),is(this),this.onStop&&this.onStop(),this.active=!1)}}function Xi(e){return e.value}function os(e){e._trackId++,e._depsLength=0}function is(e){if(e.deps.length>e._depsLength){for(let t=e._depsLength;t{const n=new Map;return n.cleanup=e,n.computed=t,n},Tn=new WeakMap,dt=Symbol(""),pr=Symbol("");function be(e,t,n){if(Qe&&ft){let r=Tn.get(e);r||Tn.set(e,r=new Map);let s=r.get(n);s||r.set(n,s=ho(()=>r.delete(n))),uo(ft,s)}}function Ve(e,t,n,r,s,o){const i=Tn.get(e);if(!i)return;let l=[];if(t==="clear")l=[...i.values()];else if(n==="length"&&H(e)){const c=Number(r);i.forEach((a,f)=>{(f==="length"||!Ue(f)&&f>=c)&&l.push(a)})}else switch(n!==void 0&&l.push(i.get(n)),t){case"add":H(e)?Rr(n)&&l.push(i.get("length")):(l.push(i.get(dt)),_t(e)&&l.push(i.get(pr)));break;case"delete":H(e)||(l.push(i.get(dt)),_t(e)&&l.push(i.get(pr)));break;case"set":_t(e)&&l.push(i.get(dt));break}Pr();for(const c of l)c&&fo(c,4);Nr()}function Yi(e,t){const n=Tn.get(e);return n&&n.get(t)}const Ji=Sr("__proto__,__v_isRef,__isVue"),po=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Ue)),ls=Qi();function Qi(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...n){const r=J(this);for(let o=0,i=this.length;o{e[t]=function(...n){nt(),Pr();const r=J(this)[t].apply(this,n);return Nr(),rt(),r}}),e}function Zi(e){Ue(e)||(e=String(e));const t=J(this);return be(t,"has",e),t.hasOwnProperty(e)}class go{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,r){const s=this._isReadonly,o=this._isShallow;if(n==="__v_isReactive")return!s;if(n==="__v_isReadonly")return s;if(n==="__v_isShallow")return o;if(n==="__v_raw")return r===(s?o?dl:bo:o?_o:yo).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(r)?t:void 0;const i=H(t);if(!s){if(i&&Y(ls,n))return Reflect.get(ls,n,r);if(n==="hasOwnProperty")return Zi}const l=Reflect.get(t,n,r);return(Ue(n)?po.has(n):Ji(n))||(s||be(t,"get",n),o)?l:de(l)?i&&Rr(n)?l:l.value:Z(l)?s?Vn(l):jn(l):l}}class mo extends go{constructor(t=!1){super(!1,t)}set(t,n,r,s){let o=t[n];if(!this._isShallow){const c=Dt(o);if(!An(r)&&!Dt(r)&&(o=J(o),r=J(r)),!H(t)&&de(o)&&!de(r))return c?!1:(o.value=r,!0)}const i=H(t)&&Rr(n)?Number(n)e,Hn=e=>Reflect.getPrototypeOf(e);function sn(e,t,n=!1,r=!1){e=e.__v_raw;const s=J(e),o=J(t);n||(et(t,o)&&be(s,"get",t),be(s,"get",o));const{has:i}=Hn(s),l=r?Fr:n?jr:Ut;if(i.call(s,t))return l(e.get(t));if(i.call(s,o))return l(e.get(o));e!==s&&e.get(t)}function on(e,t=!1){const n=this.__v_raw,r=J(n),s=J(e);return t||(et(e,s)&&be(r,"has",e),be(r,"has",s)),e===s?n.has(e):n.has(e)||n.has(s)}function ln(e,t=!1){return e=e.__v_raw,!t&&be(J(e),"iterate",dt),Reflect.get(e,"size",e)}function cs(e){e=J(e);const t=J(this);return Hn(t).has.call(t,e)||(t.add(e),Ve(t,"add",e,e)),this}function as(e,t){t=J(t);const n=J(this),{has:r,get:s}=Hn(n);let o=r.call(n,e);o||(e=J(e),o=r.call(n,e));const i=s.call(n,e);return n.set(e,t),o?et(t,i)&&Ve(n,"set",e,t):Ve(n,"add",e,t),this}function us(e){const t=J(this),{has:n,get:r}=Hn(t);let s=n.call(t,e);s||(e=J(e),s=n.call(t,e)),r&&r.call(t,e);const o=t.delete(e);return s&&Ve(t,"delete",e,void 0),o}function fs(){const e=J(this),t=e.size!==0,n=e.clear();return t&&Ve(e,"clear",void 0,void 0),n}function cn(e,t){return function(r,s){const o=this,i=o.__v_raw,l=J(i),c=t?Fr:e?jr:Ut;return!e&&be(l,"iterate",dt),i.forEach((a,f)=>r.call(s,c(a),c(f),o))}}function an(e,t,n){return function(...r){const s=this.__v_raw,o=J(s),i=_t(o),l=e==="entries"||e===Symbol.iterator&&i,c=e==="keys"&&i,a=s[e](...r),f=n?Fr:t?jr:Ut;return!t&&be(o,"iterate",c?pr:dt),{next(){const{value:h,done:p}=a.next();return p?{value:h,done:p}:{value:l?[f(h[0]),f(h[1])]:f(h),done:p}},[Symbol.iterator](){return this}}}}function Be(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function sl(){const e={get(o){return sn(this,o)},get size(){return ln(this)},has:on,add:cs,set:as,delete:us,clear:fs,forEach:cn(!1,!1)},t={get(o){return sn(this,o,!1,!0)},get size(){return ln(this)},has:on,add:cs,set:as,delete:us,clear:fs,forEach:cn(!1,!0)},n={get(o){return sn(this,o,!0)},get size(){return ln(this,!0)},has(o){return on.call(this,o,!0)},add:Be("add"),set:Be("set"),delete:Be("delete"),clear:Be("clear"),forEach:cn(!0,!1)},r={get(o){return sn(this,o,!0,!0)},get size(){return ln(this,!0)},has(o){return on.call(this,o,!0)},add:Be("add"),set:Be("set"),delete:Be("delete"),clear:Be("clear"),forEach:cn(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(o=>{e[o]=an(o,!1,!1),n[o]=an(o,!0,!1),t[o]=an(o,!1,!0),r[o]=an(o,!0,!0)}),[e,n,t,r]}const[ol,il,ll,cl]=sl();function $r(e,t){const n=t?e?cl:ll:e?il:ol;return(r,s,o)=>s==="__v_isReactive"?!e:s==="__v_isReadonly"?e:s==="__v_raw"?r:Reflect.get(Y(n,s)&&s in r?n:r,s,o)}const al={get:$r(!1,!1)},ul={get:$r(!1,!0)},fl={get:$r(!0,!1)};const yo=new WeakMap,_o=new WeakMap,bo=new WeakMap,dl=new WeakMap;function hl(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function pl(e){return e.__v_skip||!Object.isExtensible(e)?0:hl(Fi(e))}function jn(e){return Dt(e)?e:Hr(e,!1,tl,al,yo)}function gl(e){return Hr(e,!1,rl,ul,_o)}function Vn(e){return Hr(e,!0,nl,fl,bo)}function Hr(e,t,n,r,s){if(!Z(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const o=s.get(e);if(o)return o;const i=pl(e);if(i===0)return e;const l=new Proxy(e,i===2?r:n);return s.set(e,l),l}function Pt(e){return Dt(e)?Pt(e.__v_raw):!!(e&&e.__v_isReactive)}function Dt(e){return!!(e&&e.__v_isReadonly)}function An(e){return!!(e&&e.__v_isShallow)}function vo(e){return e?!!e.__v_raw:!1}function J(e){const t=e&&e.__v_raw;return t?J(t):e}function wn(e){return Object.isExtensible(e)&&ro(e,"__v_skip",!0),e}const Ut=e=>Z(e)?jn(e):e,jr=e=>Z(e)?Vn(e):e;class wo{constructor(t,n,r,s){this.getter=t,this._setter=n,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this.effect=new Mr(()=>t(this._value),()=>vt(this,this.effect._dirtyLevel===2?2:3)),this.effect.computed=this,this.effect.active=this._cacheable=!s,this.__v_isReadonly=r}get value(){const t=J(this);return(!t._cacheable||t.effect.dirty)&&et(t._value,t._value=t.effect.run())&&vt(t,4),Vr(t),t.effect._dirtyLevel>=2&&vt(t,2),t._value}set value(t){this._setter(t)}get _dirty(){return this.effect.dirty}set _dirty(t){this.effect.dirty=t}}function ml(e,t,n=!1){let r,s;const o=K(e);return o?(r=e,s=xe):(r=e.get,s=e.set),new wo(r,s,o||!s,n)}function Vr(e){var t;Qe&&ft&&(e=J(e),uo(ft,(t=e.dep)!=null?t:e.dep=ho(()=>e.dep=void 0,e instanceof wo?e:void 0)))}function vt(e,t=4,n){e=J(e);const r=e.dep;r&&fo(r,t)}function de(e){return!!(e&&e.__v_isRef===!0)}function re(e){return Eo(e,!1)}function Dr(e){return Eo(e,!0)}function Eo(e,t){return de(e)?e:new yl(e,t)}class yl{constructor(t,n){this.__v_isShallow=n,this.dep=void 0,this.__v_isRef=!0,this._rawValue=n?t:J(t),this._value=n?t:Ut(t)}get value(){return Vr(this),this._value}set value(t){const n=this.__v_isShallow||An(t)||Dt(t);t=n?t:J(t),et(t,this._rawValue)&&(this._rawValue=t,this._value=n?t:Ut(t),vt(this,4))}}function au(e){vt(e,4)}function Co(e){return de(e)?e.value:e}const _l={get:(e,t,n)=>Co(Reflect.get(e,t,n)),set:(e,t,n,r)=>{const s=e[t];return de(s)&&!de(n)?(s.value=n,!0):Reflect.set(e,t,n,r)}};function xo(e){return Pt(e)?e:new Proxy(e,_l)}class bl{constructor(t){this.dep=void 0,this.__v_isRef=!0;const{get:n,set:r}=t(()=>Vr(this),()=>vt(this));this._get=n,this._set=r}get value(){return this._get()}set value(t){this._set(t)}}function vl(e){return new bl(e)}class wl{constructor(t,n,r){this._object=t,this._key=n,this._defaultValue=r,this.__v_isRef=!0}get value(){const t=this._object[this._key];return t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return Yi(J(this._object),this._key)}}class El{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0}get value(){return this._getter()}}function Cl(e,t,n){return de(e)?e:K(e)?new El(e):Z(e)&&arguments.length>1?xl(e,t,n):re(e)}function xl(e,t,n){const r=e[t];return de(r)?r:new wl(e,t,n)}/** +* @vue/runtime-core v3.4.27 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function Ze(e,t,n,r){try{return r?e(...r):e()}catch(s){Jt(s,t,n)}}function Se(e,t,n,r){if(K(e)){const s=Ze(e,t,n,r);return s&&eo(s)&&s.catch(o=>{Jt(o,t,n)}),s}if(H(e)){const s=[];for(let o=0;o>>1,s=pe[r],o=Bt(s);oPe&&pe.splice(t,1)}function Rl(e){H(e)?wt.push(...e):(!Ge||!Ge.includes(e,e.allowRecurse?ct+1:ct))&&wt.push(e),To()}function ds(e,t,n=kt?Pe+1:0){for(;nBt(n)-Bt(r));if(wt.length=0,Ge){Ge.push(...t);return}for(Ge=t,ct=0;cte.id==null?1/0:e.id,Ol=(e,t)=>{const n=Bt(e)-Bt(t);if(n===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function Ao(e){gr=!1,kt=!0,pe.sort(Ol);try{for(Pe=0;Pese(_)?_.trim():_)),h&&(s=n.map(Sn))}let l,c=r[l=bn(t)]||r[l=bn($e(t))];!c&&o&&(c=r[l=bn(pt(t))]),c&&Se(c,e,6,s);const a=r[l+"Once"];if(a){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,Se(a,e,6,s)}}function Ro(e,t,n=!1){const r=t.emitsCache,s=r.get(e);if(s!==void 0)return s;const o=e.emits;let i={},l=!1;if(!K(e)){const c=a=>{const f=Ro(a,t,!0);f&&(l=!0,ie(i,f))};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!o&&!l?(Z(e)&&r.set(e,null),null):(H(o)?o.forEach(c=>i[c]=null):ie(i,o),Z(e)&&r.set(e,i),i)}function Un(e,t){return!e||!zt(t)?!1:(t=t.slice(2).replace(/Once$/,""),Y(e,t[0].toLowerCase()+t.slice(1))||Y(e,pt(t))||Y(e,t))}let ce=null,kn=null;function On(e){const t=ce;return ce=e,kn=e&&e.type.__scopeId||null,t}function uu(e){kn=e}function fu(){kn=null}function Il(e,t=ce,n){if(!t||e._n)return e;const r=(...s)=>{r._d&&Ts(-1);const o=On(t);let i;try{i=e(...s)}finally{On(o),r._d&&Ts(1)}return i};return r._n=!0,r._c=!0,r._d=!0,r}function Qn(e){const{type:t,vnode:n,proxy:r,withProxy:s,propsOptions:[o],slots:i,attrs:l,emit:c,render:a,renderCache:f,props:h,data:p,setupState:_,ctx:x,inheritAttrs:L}=e,D=On(e);let q,B;try{if(n.shapeFlag&4){const y=s||r,M=y;q=Ae(a.call(M,y,f,h,_,p,x)),B=l}else{const y=t;q=Ae(y.length>1?y(h,{attrs:l,slots:i,emit:c}):y(h,null)),B=t.props?l:Ml(l)}}catch(y){jt.length=0,Jt(y,e,1),q=oe(_e)}let g=q;if(B&&L!==!1){const y=Object.keys(B),{shapeFlag:M}=g;y.length&&M&7&&(o&&y.some(Tr)&&(B=Pl(B,o)),g=tt(g,B,!1,!0))}return n.dirs&&(g=tt(g,null,!1,!0),g.dirs=g.dirs?g.dirs.concat(n.dirs):n.dirs),n.transition&&(g.transition=n.transition),q=g,On(D),q}const Ml=e=>{let t;for(const n in e)(n==="class"||n==="style"||zt(n))&&((t||(t={}))[n]=e[n]);return t},Pl=(e,t)=>{const n={};for(const r in e)(!Tr(r)||!(r.slice(9)in t))&&(n[r]=e[r]);return n};function Nl(e,t,n){const{props:r,children:s,component:o}=e,{props:i,children:l,patchFlag:c}=t,a=o.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return r?hs(r,i,a):!!i;if(c&8){const f=t.dynamicProps;for(let h=0;he.__isSuspense;function Io(e,t){t&&t.pendingBranch?H(e)?t.effects.push(...e):t.effects.push(e):Rl(e)}const Hl=Symbol.for("v-scx"),jl=()=>Ct(Hl);function Br(e,t){return Bn(e,null,t)}function pu(e,t){return Bn(e,null,{flush:"post"})}const un={};function Ne(e,t,n){return Bn(e,t,n)}function Bn(e,t,{immediate:n,deep:r,flush:s,once:o,onTrack:i,onTrigger:l}=ee){if(t&&o){const O=t;t=(...N)=>{O(...N),M()}}const c=ue,a=O=>r===!0?O:ut(O,r===!1?1:void 0);let f,h=!1,p=!1;if(de(e)?(f=()=>e.value,h=An(e)):Pt(e)?(f=()=>a(e),h=!0):H(e)?(p=!0,h=e.some(O=>Pt(O)||An(O)),f=()=>e.map(O=>{if(de(O))return O.value;if(Pt(O))return a(O);if(K(O))return Ze(O,c,2)})):K(e)?t?f=()=>Ze(e,c,2):f=()=>(_&&_(),Se(e,c,3,[x])):f=xe,t&&r){const O=f;f=()=>ut(O())}let _,x=O=>{_=g.onStop=()=>{Ze(O,c,4),_=g.onStop=void 0}},L;if(tn)if(x=xe,t?n&&Se(t,c,3,[f(),p?[]:void 0,x]):f(),s==="sync"){const O=jl();L=O.__watcherHandles||(O.__watcherHandles=[])}else return xe;let D=p?new Array(e.length).fill(un):un;const q=()=>{if(!(!g.active||!g.dirty))if(t){const O=g.run();(r||h||(p?O.some((N,T)=>et(N,D[T])):et(O,D)))&&(_&&_(),Se(t,c,3,[O,D===un?void 0:p&&D[0]===un?[]:D,x]),D=O)}else g.run()};q.allowRecurse=!!t;let B;s==="sync"?B=q:s==="post"?B=()=>me(q,c&&c.suspense):(q.pre=!0,c&&(q.id=c.uid),B=()=>Dn(q));const g=new Mr(f,xe,B),y=lo(),M=()=>{g.stop(),y&&Ar(y.effects,g)};return t?n?q():D=g.run():s==="post"?me(g.run.bind(g),c&&c.suspense):g.run(),L&&L.push(M),M}function Vl(e,t,n){const r=this.proxy,s=se(e)?e.includes(".")?Mo(r,e):()=>r[e]:e.bind(r,r);let o;K(t)?o=t:(o=t.handler,n=t);const i=en(this),l=Bn(s,o.bind(r),n);return i(),l}function Mo(e,t){const n=t.split(".");return()=>{let r=e;for(let s=0;s{ut(r,t,n)});else if(no(e))for(const r in e)ut(e[r],t,n);return e}function gu(e,t){if(ce===null)return e;const n=Gn(ce)||ce.proxy,r=e.dirs||(e.dirs=[]);for(let s=0;s{e.isMounted=!0}),Ho(()=>{e.isUnmounting=!0}),e}const Ee=[Function,Array],Po={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Ee,onEnter:Ee,onAfterEnter:Ee,onEnterCancelled:Ee,onBeforeLeave:Ee,onLeave:Ee,onAfterLeave:Ee,onLeaveCancelled:Ee,onBeforeAppear:Ee,onAppear:Ee,onAfterAppear:Ee,onAppearCancelled:Ee},Ul={name:"BaseTransition",props:Po,setup(e,{slots:t}){const n=qn(),r=Dl();return()=>{const s=t.default&&Fo(t.default(),!0);if(!s||!s.length)return;let o=s[0];if(s.length>1){for(const p of s)if(p.type!==_e){o=p;break}}const i=J(e),{mode:l}=i;if(r.isLeaving)return Zn(o);const c=gs(o);if(!c)return Zn(o);const a=mr(c,i,r,n);yr(c,a);const f=n.subTree,h=f&&gs(f);if(h&&h.type!==_e&&!at(c,h)){const p=mr(h,i,r,n);if(yr(h,p),l==="out-in"&&c.type!==_e)return r.isLeaving=!0,p.afterLeave=()=>{r.isLeaving=!1,n.update.active!==!1&&(n.effect.dirty=!0,n.update())},Zn(o);l==="in-out"&&c.type!==_e&&(p.delayLeave=(_,x,L)=>{const D=No(r,h);D[String(h.key)]=h,_[ze]=()=>{x(),_[ze]=void 0,delete a.delayedLeave},a.delayedLeave=L})}return o}}},kl=Ul;function No(e,t){const{leavingVNodes:n}=e;let r=n.get(t.type);return r||(r=Object.create(null),n.set(t.type,r)),r}function mr(e,t,n,r){const{appear:s,mode:o,persisted:i=!1,onBeforeEnter:l,onEnter:c,onAfterEnter:a,onEnterCancelled:f,onBeforeLeave:h,onLeave:p,onAfterLeave:_,onLeaveCancelled:x,onBeforeAppear:L,onAppear:D,onAfterAppear:q,onAppearCancelled:B}=t,g=String(e.key),y=No(n,e),M=(T,F)=>{T&&Se(T,r,9,F)},O=(T,F)=>{const w=F[1];M(T,F),H(T)?T.every(j=>j.length<=1)&&w():T.length<=1&&w()},N={mode:o,persisted:i,beforeEnter(T){let F=l;if(!n.isMounted)if(s)F=L||l;else return;T[ze]&&T[ze](!0);const w=y[g];w&&at(e,w)&&w.el[ze]&&w.el[ze](),M(F,[T])},enter(T){let F=c,w=a,j=f;if(!n.isMounted)if(s)F=D||c,w=q||a,j=B||f;else return;let A=!1;const G=T[fn]=le=>{A||(A=!0,le?M(j,[T]):M(w,[T]),N.delayedLeave&&N.delayedLeave(),T[fn]=void 0)};F?O(F,[T,G]):G()},leave(T,F){const w=String(e.key);if(T[fn]&&T[fn](!0),n.isUnmounting)return F();M(h,[T]);let j=!1;const A=T[ze]=G=>{j||(j=!0,F(),G?M(x,[T]):M(_,[T]),T[ze]=void 0,y[w]===e&&delete y[w])};y[w]=e,p?O(p,[T,A]):A()},clone(T){return mr(T,t,n,r)}};return N}function Zn(e){if(Zt(e))return e=tt(e),e.children=null,e}function gs(e){if(!Zt(e))return e;const{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&K(n.default))return n.default()}}function yr(e,t){e.shapeFlag&6&&e.component?yr(e.component.subTree,t):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Fo(e,t=!1,n){let r=[],s=0;for(let o=0;o1)for(let o=0;o!!e.type.__asyncLoader;/*! #__NO_SIDE_EFFECTS__ */function mu(e){K(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:r,delay:s=200,timeout:o,suspensible:i=!0,onError:l}=e;let c=null,a,f=0;const h=()=>(f++,c=null,p()),p=()=>{let _;return c||(_=c=t().catch(x=>{if(x=x instanceof Error?x:new Error(String(x)),l)return new Promise((L,D)=>{l(x,()=>L(h()),()=>D(x),f+1)});throw x}).then(x=>_!==c&&c?c:(x&&(x.__esModule||x[Symbol.toStringTag]==="Module")&&(x=x.default),a=x,x)))};return Kr({name:"AsyncComponentWrapper",__asyncLoader:p,get __asyncResolved(){return a},setup(){const _=ue;if(a)return()=>er(a,_);const x=B=>{c=null,Jt(B,_,13,!r)};if(i&&_.suspense||tn)return p().then(B=>()=>er(B,_)).catch(B=>(x(B),()=>r?oe(r,{error:B}):null));const L=re(!1),D=re(),q=re(!!s);return s&&setTimeout(()=>{q.value=!1},s),o!=null&&setTimeout(()=>{if(!L.value&&!D.value){const B=new Error(`Async component timed out after ${o}ms.`);x(B),D.value=B}},o),p().then(()=>{L.value=!0,_.parent&&Zt(_.parent.vnode)&&(_.parent.effect.dirty=!0,Dn(_.parent.update))}).catch(B=>{x(B),D.value=B}),()=>{if(L.value&&a)return er(a,_);if(D.value&&r)return oe(r,{error:D.value});if(n&&!q.value)return oe(n)}}})}function er(e,t){const{ref:n,props:r,children:s,ce:o}=t.vnode,i=oe(e,r,s);return i.ref=n,i.ce=o,delete t.vnode.ce,i}const Zt=e=>e.type.__isKeepAlive;function Bl(e,t){$o(e,"a",t)}function Kl(e,t){$o(e,"da",t)}function $o(e,t,n=ue){const r=e.__wdc||(e.__wdc=()=>{let s=n;for(;s;){if(s.isDeactivated)return;s=s.parent}return e()});if(Kn(t,r,n),n){let s=n.parent;for(;s&&s.parent;)Zt(s.parent.vnode)&&Wl(r,t,n,s),s=s.parent}}function Wl(e,t,n,r){const s=Kn(t,e,r,!0);Wn(()=>{Ar(r[t],s)},n)}function Kn(e,t,n=ue,r=!1){if(n){const s=n[e]||(n[e]=[]),o=t.__weh||(t.__weh=(...i)=>{if(n.isUnmounted)return;nt();const l=en(n),c=Se(t,n,e,i);return l(),rt(),c});return r?s.unshift(o):s.push(o),o}}const ke=e=>(t,n=ue)=>(!tn||e==="sp")&&Kn(e,(...r)=>t(...r),n),ql=ke("bm"),Rt=ke("m"),Gl=ke("bu"),zl=ke("u"),Ho=ke("bum"),Wn=ke("um"),Xl=ke("sp"),Yl=ke("rtg"),Jl=ke("rtc");function Ql(e,t=ue){Kn("ec",e,t)}function yu(e,t,n,r){let s;const o=n;if(H(e)||se(e)){s=new Array(e.length);for(let i=0,l=e.length;it(i,l,void 0,o));else{const i=Object.keys(e);s=new Array(i.length);for(let l=0,c=i.length;lMn(t)?!(t.type===_e||t.type===ye&&!jo(t.children)):!0)?e:null}function bu(e,t){const n={};for(const r in e)n[/[A-Z]/.test(r)?`on:${r}`:bn(r)]=e[r];return n}const _r=e=>e?oi(e)?Gn(e)||e.proxy:_r(e.parent):null,Nt=ie(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>_r(e.parent),$root:e=>_r(e.root),$emit:e=>e.emit,$options:e=>Wr(e),$forceUpdate:e=>e.f||(e.f=()=>{e.effect.dirty=!0,Dn(e.update)}),$nextTick:e=>e.n||(e.n=Qt.bind(e.proxy)),$watch:e=>Vl.bind(e)}),tr=(e,t)=>e!==ee&&!e.__isScriptSetup&&Y(e,t),Zl={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:r,data:s,props:o,accessCache:i,type:l,appContext:c}=e;let a;if(t[0]!=="$"){const _=i[t];if(_!==void 0)switch(_){case 1:return r[t];case 2:return s[t];case 4:return n[t];case 3:return o[t]}else{if(tr(r,t))return i[t]=1,r[t];if(s!==ee&&Y(s,t))return i[t]=2,s[t];if((a=e.propsOptions[0])&&Y(a,t))return i[t]=3,o[t];if(n!==ee&&Y(n,t))return i[t]=4,n[t];br&&(i[t]=0)}}const f=Nt[t];let h,p;if(f)return t==="$attrs"&&be(e.attrs,"get",""),f(e);if((h=l.__cssModules)&&(h=h[t]))return h;if(n!==ee&&Y(n,t))return i[t]=4,n[t];if(p=c.config.globalProperties,Y(p,t))return p[t]},set({_:e},t,n){const{data:r,setupState:s,ctx:o}=e;return tr(s,t)?(s[t]=n,!0):r!==ee&&Y(r,t)?(r[t]=n,!0):Y(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(o[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:r,appContext:s,propsOptions:o}},i){let l;return!!n[i]||e!==ee&&Y(e,i)||tr(t,i)||(l=o[0])&&Y(l,i)||Y(r,i)||Y(Nt,i)||Y(s.config.globalProperties,i)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:Y(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function vu(){return ec().slots}function ec(){const e=qn();return e.setupContext||(e.setupContext=li(e))}function ms(e){return H(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let br=!0;function tc(e){const t=Wr(e),n=e.proxy,r=e.ctx;br=!1,t.beforeCreate&&ys(t.beforeCreate,e,"bc");const{data:s,computed:o,methods:i,watch:l,provide:c,inject:a,created:f,beforeMount:h,mounted:p,beforeUpdate:_,updated:x,activated:L,deactivated:D,beforeDestroy:q,beforeUnmount:B,destroyed:g,unmounted:y,render:M,renderTracked:O,renderTriggered:N,errorCaptured:T,serverPrefetch:F,expose:w,inheritAttrs:j,components:A,directives:G,filters:le}=t;if(a&&nc(a,r,null),i)for(const X in i){const V=i[X];K(V)&&(r[X]=V.bind(n))}if(s){const X=s.call(n,n);Z(X)&&(e.data=jn(X))}if(br=!0,o)for(const X in o){const V=o[X],He=K(V)?V.bind(n,n):K(V.get)?V.get.bind(n,n):xe,nn=!K(V)&&K(V.set)?V.set.bind(n):xe,st=ne({get:He,set:nn});Object.defineProperty(r,X,{enumerable:!0,configurable:!0,get:()=>st.value,set:Le=>st.value=Le})}if(l)for(const X in l)Vo(l[X],r,n,X);if(c){const X=K(c)?c.call(n):c;Reflect.ownKeys(X).forEach(V=>{cc(V,X[V])})}f&&ys(f,e,"c");function U(X,V){H(V)?V.forEach(He=>X(He.bind(n))):V&&X(V.bind(n))}if(U(ql,h),U(Rt,p),U(Gl,_),U(zl,x),U(Bl,L),U(Kl,D),U(Ql,T),U(Jl,O),U(Yl,N),U(Ho,B),U(Wn,y),U(Xl,F),H(w))if(w.length){const X=e.exposed||(e.exposed={});w.forEach(V=>{Object.defineProperty(X,V,{get:()=>n[V],set:He=>n[V]=He})})}else e.exposed||(e.exposed={});M&&e.render===xe&&(e.render=M),j!=null&&(e.inheritAttrs=j),A&&(e.components=A),G&&(e.directives=G)}function nc(e,t,n=xe){H(e)&&(e=vr(e));for(const r in e){const s=e[r];let o;Z(s)?"default"in s?o=Ct(s.from||r,s.default,!0):o=Ct(s.from||r):o=Ct(s),de(o)?Object.defineProperty(t,r,{enumerable:!0,configurable:!0,get:()=>o.value,set:i=>o.value=i}):t[r]=o}}function ys(e,t,n){Se(H(e)?e.map(r=>r.bind(t.proxy)):e.bind(t.proxy),t,n)}function Vo(e,t,n,r){const s=r.includes(".")?Mo(n,r):()=>n[r];if(se(e)){const o=t[e];K(o)&&Ne(s,o)}else if(K(e))Ne(s,e.bind(n));else if(Z(e))if(H(e))e.forEach(o=>Vo(o,t,n,r));else{const o=K(e.handler)?e.handler.bind(n):t[e.handler];K(o)&&Ne(s,o,e)}}function Wr(e){const t=e.type,{mixins:n,extends:r}=t,{mixins:s,optionsCache:o,config:{optionMergeStrategies:i}}=e.appContext,l=o.get(t);let c;return l?c=l:!s.length&&!n&&!r?c=t:(c={},s.length&&s.forEach(a=>Ln(c,a,i,!0)),Ln(c,t,i)),Z(t)&&o.set(t,c),c}function Ln(e,t,n,r=!1){const{mixins:s,extends:o}=t;o&&Ln(e,o,n,!0),s&&s.forEach(i=>Ln(e,i,n,!0));for(const i in t)if(!(r&&i==="expose")){const l=rc[i]||n&&n[i];e[i]=l?l(e[i],t[i]):t[i]}return e}const rc={data:_s,props:bs,emits:bs,methods:Mt,computed:Mt,beforeCreate:ge,created:ge,beforeMount:ge,mounted:ge,beforeUpdate:ge,updated:ge,beforeDestroy:ge,beforeUnmount:ge,destroyed:ge,unmounted:ge,activated:ge,deactivated:ge,errorCaptured:ge,serverPrefetch:ge,components:Mt,directives:Mt,watch:oc,provide:_s,inject:sc};function _s(e,t){return t?e?function(){return ie(K(e)?e.call(this,this):e,K(t)?t.call(this,this):t)}:t:e}function sc(e,t){return Mt(vr(e),vr(t))}function vr(e){if(H(e)){const t={};for(let n=0;n1)return n&&K(t)?t.call(r&&r.proxy):t}}const Uo={},ko=()=>Object.create(Uo),Bo=e=>Object.getPrototypeOf(e)===Uo;function ac(e,t,n,r=!1){const s={},o=ko();e.propsDefaults=Object.create(null),Ko(e,t,s,o);for(const i in e.propsOptions[0])i in s||(s[i]=void 0);n?e.props=r?s:gl(s):e.type.props?e.props=s:e.props=o,e.attrs=o}function uc(e,t,n,r){const{props:s,attrs:o,vnode:{patchFlag:i}}=e,l=J(s),[c]=e.propsOptions;let a=!1;if((r||i>0)&&!(i&16)){if(i&8){const f=e.vnode.dynamicProps;for(let h=0;h{c=!0;const[p,_]=Wo(h,t,!0);ie(i,p),_&&l.push(..._)};!n&&t.mixins.length&&t.mixins.forEach(f),e.extends&&f(e.extends),e.mixins&&e.mixins.forEach(f)}if(!o&&!c)return Z(e)&&r.set(e,yt),yt;if(H(o))for(let f=0;f-1,_[1]=L<0||x-1||Y(_,"default"))&&l.push(h)}}}const a=[i,l];return Z(e)&&r.set(e,a),a}function vs(e){return e[0]!=="$"&&!bt(e)}function ws(e){return e===null?"null":typeof e=="function"?e.name||"":typeof e=="object"&&e.constructor&&e.constructor.name||""}function Es(e,t){return ws(e)===ws(t)}function Cs(e,t){return H(t)?t.findIndex(n=>Es(n,e)):K(t)&&Es(t,e)?0:-1}const qo=e=>e[0]==="_"||e==="$stable",qr=e=>H(e)?e.map(Ae):[Ae(e)],fc=(e,t,n)=>{if(t._n)return t;const r=Il((...s)=>qr(t(...s)),n);return r._c=!1,r},Go=(e,t,n)=>{const r=e._ctx;for(const s in e){if(qo(s))continue;const o=e[s];if(K(o))t[s]=fc(s,o,r);else if(o!=null){const i=qr(o);t[s]=()=>i}}},zo=(e,t)=>{const n=qr(t);e.slots.default=()=>n},dc=(e,t)=>{const n=e.slots=ko();if(e.vnode.shapeFlag&32){const r=t._;r?(ie(n,t),ro(n,"_",r,!0)):Go(t,n)}else t&&zo(e,t)},hc=(e,t,n)=>{const{vnode:r,slots:s}=e;let o=!0,i=ee;if(r.shapeFlag&32){const l=t._;l?n&&l===1?o=!1:(ie(s,t),!n&&l===1&&delete s._):(o=!t.$stable,Go(t,s)),i=t}else t&&(zo(e,t),i={default:1});if(o)for(const l in s)!qo(l)&&i[l]==null&&delete s[l]};function In(e,t,n,r,s=!1){if(H(e)){e.forEach((p,_)=>In(p,t&&(H(t)?t[_]:t),n,r,s));return}if(Et(r)&&!s)return;const o=r.shapeFlag&4?Gn(r.component)||r.component.proxy:r.el,i=s?null:o,{i:l,r:c}=e,a=t&&t.r,f=l.refs===ee?l.refs={}:l.refs,h=l.setupState;if(a!=null&&a!==c&&(se(a)?(f[a]=null,Y(h,a)&&(h[a]=null)):de(a)&&(a.value=null)),K(c))Ze(c,l,12,[i,f]);else{const p=se(c),_=de(c);if(p||_){const x=()=>{if(e.f){const L=p?Y(h,c)?h[c]:f[c]:c.value;s?H(L)&&Ar(L,o):H(L)?L.includes(o)||L.push(o):p?(f[c]=[o],Y(h,c)&&(h[c]=f[c])):(c.value=[o],e.k&&(f[e.k]=c.value))}else p?(f[c]=i,Y(h,c)&&(h[c]=i)):_&&(c.value=i,e.k&&(f[e.k]=i))};i?(x.id=-1,me(x,n)):x()}}}let Ke=!1;const pc=e=>e.namespaceURI.includes("svg")&&e.tagName!=="foreignObject",gc=e=>e.namespaceURI.includes("MathML"),dn=e=>{if(pc(e))return"svg";if(gc(e))return"mathml"},hn=e=>e.nodeType===8;function mc(e){const{mt:t,p:n,o:{patchProp:r,createText:s,nextSibling:o,parentNode:i,remove:l,insert:c,createComment:a}}=e,f=(g,y)=>{if(!y.hasChildNodes()){n(null,g,y),Rn(),y._vnode=g;return}Ke=!1,h(y.firstChild,g,null,null,null),Rn(),y._vnode=g,Ke&&console.error("Hydration completed but contains mismatches.")},h=(g,y,M,O,N,T=!1)=>{T=T||!!y.dynamicChildren;const F=hn(g)&&g.data==="[",w=()=>L(g,y,M,O,N,F),{type:j,ref:A,shapeFlag:G,patchFlag:le}=y;let fe=g.nodeType;y.el=g,le===-2&&(T=!1,y.dynamicChildren=null);let U=null;switch(j){case xt:fe!==3?y.children===""?(c(y.el=s(""),i(g),g),U=g):U=w():(g.data!==y.children&&(Ke=!0,g.data=y.children),U=o(g));break;case _e:B(g)?(U=o(g),q(y.el=g.content.firstChild,g,M)):fe!==8||F?U=w():U=o(g);break;case Ht:if(F&&(g=o(g),fe=g.nodeType),fe===1||fe===3){U=g;const X=!y.children.length;for(let V=0;V{T=T||!!y.dynamicChildren;const{type:F,props:w,patchFlag:j,shapeFlag:A,dirs:G,transition:le}=y,fe=F==="input"||F==="option";if(fe||j!==-1){G&&Me(y,null,M,"created");let U=!1;if(B(g)){U=Yo(O,le)&&M&&M.vnode.props&&M.vnode.props.appear;const V=g.content.firstChild;U&&le.beforeEnter(V),q(V,g,M),y.el=g=V}if(A&16&&!(w&&(w.innerHTML||w.textContent))){let V=_(g.firstChild,y,g,M,O,N,T);for(;V;){Ke=!0;const He=V;V=V.nextSibling,l(He)}}else A&8&&g.textContent!==y.children&&(Ke=!0,g.textContent=y.children);if(w)if(fe||!T||j&48)for(const V in w)(fe&&(V.endsWith("value")||V==="indeterminate")||zt(V)&&!bt(V)||V[0]===".")&&r(g,V,null,w[V],void 0,void 0,M);else w.onClick&&r(g,"onClick",null,w.onClick,void 0,void 0,M);let X;(X=w&&w.onVnodeBeforeMount)&&Ce(X,M,y),G&&Me(y,null,M,"beforeMount"),((X=w&&w.onVnodeMounted)||G||U)&&Io(()=>{X&&Ce(X,M,y),U&&le.enter(g),G&&Me(y,null,M,"mounted")},O)}return g.nextSibling},_=(g,y,M,O,N,T,F)=>{F=F||!!y.dynamicChildren;const w=y.children,j=w.length;for(let A=0;A{const{slotScopeIds:F}=y;F&&(N=N?N.concat(F):F);const w=i(g),j=_(o(g),y,w,M,O,N,T);return j&&hn(j)&&j.data==="]"?o(y.anchor=j):(Ke=!0,c(y.anchor=a("]"),w,j),j)},L=(g,y,M,O,N,T)=>{if(Ke=!0,y.el=null,T){const j=D(g);for(;;){const A=o(g);if(A&&A!==j)l(A);else break}}const F=o(g),w=i(g);return l(g),n(null,y,w,F,M,O,dn(w),N),F},D=(g,y="[",M="]")=>{let O=0;for(;g;)if(g=o(g),g&&hn(g)&&(g.data===y&&O++,g.data===M)){if(O===0)return o(g);O--}return g},q=(g,y,M)=>{const O=y.parentNode;O&&O.replaceChild(g,y);let N=M;for(;N;)N.vnode.el===y&&(N.vnode.el=N.subTree.el=g),N=N.parent},B=g=>g.nodeType===1&&g.tagName.toLowerCase()==="template";return[f,h]}const me=Io;function yc(e){return Xo(e)}function _c(e){return Xo(e,mc)}function Xo(e,t){const n=so();n.__VUE__=!0;const{insert:r,remove:s,patchProp:o,createElement:i,createText:l,createComment:c,setText:a,setElementText:f,parentNode:h,nextSibling:p,setScopeId:_=xe,insertStaticContent:x}=e,L=(u,d,m,b=null,v=null,S=null,I=void 0,C=null,R=!!d.dynamicChildren)=>{if(u===d)return;u&&!at(u,d)&&(b=rn(u),Le(u,v,S,!0),u=null),d.patchFlag===-2&&(R=!1,d.dynamicChildren=null);const{type:E,ref:P,shapeFlag:k}=d;switch(E){case xt:D(u,d,m,b);break;case _e:q(u,d,m,b);break;case Ht:u==null&&B(d,m,b,I);break;case ye:A(u,d,m,b,v,S,I,C,R);break;default:k&1?M(u,d,m,b,v,S,I,C,R):k&6?G(u,d,m,b,v,S,I,C,R):(k&64||k&128)&&E.process(u,d,m,b,v,S,I,C,R,gt)}P!=null&&v&&In(P,u&&u.ref,S,d||u,!d)},D=(u,d,m,b)=>{if(u==null)r(d.el=l(d.children),m,b);else{const v=d.el=u.el;d.children!==u.children&&a(v,d.children)}},q=(u,d,m,b)=>{u==null?r(d.el=c(d.children||""),m,b):d.el=u.el},B=(u,d,m,b)=>{[u.el,u.anchor]=x(u.children,d,m,b,u.el,u.anchor)},g=({el:u,anchor:d},m,b)=>{let v;for(;u&&u!==d;)v=p(u),r(u,m,b),u=v;r(d,m,b)},y=({el:u,anchor:d})=>{let m;for(;u&&u!==d;)m=p(u),s(u),u=m;s(d)},M=(u,d,m,b,v,S,I,C,R)=>{d.type==="svg"?I="svg":d.type==="math"&&(I="mathml"),u==null?O(d,m,b,v,S,I,C,R):F(u,d,v,S,I,C,R)},O=(u,d,m,b,v,S,I,C)=>{let R,E;const{props:P,shapeFlag:k,transition:$,dirs:W}=u;if(R=u.el=i(u.type,S,P&&P.is,P),k&8?f(R,u.children):k&16&&T(u.children,R,null,b,v,nr(u,S),I,C),W&&Me(u,null,b,"created"),N(R,u,u.scopeId,I,b),P){for(const Q in P)Q!=="value"&&!bt(Q)&&o(R,Q,null,P[Q],S,u.children,b,v,je);"value"in P&&o(R,"value",null,P.value,S),(E=P.onVnodeBeforeMount)&&Ce(E,b,u)}W&&Me(u,null,b,"beforeMount");const z=Yo(v,$);z&&$.beforeEnter(R),r(R,d,m),((E=P&&P.onVnodeMounted)||z||W)&&me(()=>{E&&Ce(E,b,u),z&&$.enter(R),W&&Me(u,null,b,"mounted")},v)},N=(u,d,m,b,v)=>{if(m&&_(u,m),b)for(let S=0;S{for(let E=R;E{const C=d.el=u.el;let{patchFlag:R,dynamicChildren:E,dirs:P}=d;R|=u.patchFlag&16;const k=u.props||ee,$=d.props||ee;let W;if(m&&ot(m,!1),(W=$.onVnodeBeforeUpdate)&&Ce(W,m,d,u),P&&Me(d,u,m,"beforeUpdate"),m&&ot(m,!0),E?w(u.dynamicChildren,E,C,m,b,nr(d,v),S):I||V(u,d,C,null,m,b,nr(d,v),S,!1),R>0){if(R&16)j(C,d,k,$,m,b,v);else if(R&2&&k.class!==$.class&&o(C,"class",null,$.class,v),R&4&&o(C,"style",k.style,$.style,v),R&8){const z=d.dynamicProps;for(let Q=0;Q{W&&Ce(W,m,d,u),P&&Me(d,u,m,"updated")},b)},w=(u,d,m,b,v,S,I)=>{for(let C=0;C{if(m!==b){if(m!==ee)for(const C in m)!bt(C)&&!(C in b)&&o(u,C,m[C],null,I,d.children,v,S,je);for(const C in b){if(bt(C))continue;const R=b[C],E=m[C];R!==E&&C!=="value"&&o(u,C,E,R,I,d.children,v,S,je)}"value"in b&&o(u,"value",m.value,b.value,I)}},A=(u,d,m,b,v,S,I,C,R)=>{const E=d.el=u?u.el:l(""),P=d.anchor=u?u.anchor:l("");let{patchFlag:k,dynamicChildren:$,slotScopeIds:W}=d;W&&(C=C?C.concat(W):W),u==null?(r(E,m,b),r(P,m,b),T(d.children||[],m,P,v,S,I,C,R)):k>0&&k&64&&$&&u.dynamicChildren?(w(u.dynamicChildren,$,m,v,S,I,C),(d.key!=null||v&&d===v.subTree)&&Gr(u,d,!0)):V(u,d,m,P,v,S,I,C,R)},G=(u,d,m,b,v,S,I,C,R)=>{d.slotScopeIds=C,u==null?d.shapeFlag&512?v.ctx.activate(d,m,b,I,R):le(d,m,b,v,S,I,R):fe(u,d,R)},le=(u,d,m,b,v,S,I)=>{const C=u.component=Oc(u,b,v);if(Zt(u)&&(C.ctx.renderer=gt),Lc(C),C.asyncDep){if(v&&v.registerDep(C,U),!u.el){const R=C.subTree=oe(_e);q(null,R,d,m)}}else U(C,u,d,m,v,S,I)},fe=(u,d,m)=>{const b=d.component=u.component;if(Nl(u,d,m))if(b.asyncDep&&!b.asyncResolved){X(b,d,m);return}else b.next=d,Al(b.update),b.effect.dirty=!0,b.update();else d.el=u.el,b.vnode=d},U=(u,d,m,b,v,S,I)=>{const C=()=>{if(u.isMounted){let{next:P,bu:k,u:$,parent:W,vnode:z}=u;{const mt=Jo(u);if(mt){P&&(P.el=z.el,X(u,P,I)),mt.asyncDep.then(()=>{u.isUnmounted||C()});return}}let Q=P,te;ot(u,!1),P?(P.el=z.el,X(u,P,I)):P=z,k&&vn(k),(te=P.props&&P.props.onVnodeBeforeUpdate)&&Ce(te,W,P,z),ot(u,!0);const ae=Qn(u),Te=u.subTree;u.subTree=ae,L(Te,ae,h(Te.el),rn(Te),u,v,S),P.el=ae.el,Q===null&&Fl(u,ae.el),$&&me($,v),(te=P.props&&P.props.onVnodeUpdated)&&me(()=>Ce(te,W,P,z),v)}else{let P;const{el:k,props:$}=d,{bm:W,m:z,parent:Q}=u,te=Et(d);if(ot(u,!1),W&&vn(W),!te&&(P=$&&$.onVnodeBeforeMount)&&Ce(P,Q,d),ot(u,!0),k&&Yn){const ae=()=>{u.subTree=Qn(u),Yn(k,u.subTree,u,v,null)};te?d.type.__asyncLoader().then(()=>!u.isUnmounted&&ae()):ae()}else{const ae=u.subTree=Qn(u);L(null,ae,m,b,u,v,S),d.el=ae.el}if(z&&me(z,v),!te&&(P=$&&$.onVnodeMounted)){const ae=d;me(()=>Ce(P,Q,ae),v)}(d.shapeFlag&256||Q&&Et(Q.vnode)&&Q.vnode.shapeFlag&256)&&u.a&&me(u.a,v),u.isMounted=!0,d=m=b=null}},R=u.effect=new Mr(C,xe,()=>Dn(E),u.scope),E=u.update=()=>{R.dirty&&R.run()};E.id=u.uid,ot(u,!0),E()},X=(u,d,m)=>{d.component=u;const b=u.vnode.props;u.vnode=d,u.next=null,uc(u,d.props,b,m),hc(u,d.children,m),nt(),ds(u),rt()},V=(u,d,m,b,v,S,I,C,R=!1)=>{const E=u&&u.children,P=u?u.shapeFlag:0,k=d.children,{patchFlag:$,shapeFlag:W}=d;if($>0){if($&128){nn(E,k,m,b,v,S,I,C,R);return}else if($&256){He(E,k,m,b,v,S,I,C,R);return}}W&8?(P&16&&je(E,v,S),k!==E&&f(m,k)):P&16?W&16?nn(E,k,m,b,v,S,I,C,R):je(E,v,S,!0):(P&8&&f(m,""),W&16&&T(k,m,b,v,S,I,C,R))},He=(u,d,m,b,v,S,I,C,R)=>{u=u||yt,d=d||yt;const E=u.length,P=d.length,k=Math.min(E,P);let $;for($=0;$P?je(u,v,S,!0,!1,k):T(d,m,b,v,S,I,C,R,k)},nn=(u,d,m,b,v,S,I,C,R)=>{let E=0;const P=d.length;let k=u.length-1,$=P-1;for(;E<=k&&E<=$;){const W=u[E],z=d[E]=R?Xe(d[E]):Ae(d[E]);if(at(W,z))L(W,z,m,null,v,S,I,C,R);else break;E++}for(;E<=k&&E<=$;){const W=u[k],z=d[$]=R?Xe(d[$]):Ae(d[$]);if(at(W,z))L(W,z,m,null,v,S,I,C,R);else break;k--,$--}if(E>k){if(E<=$){const W=$+1,z=W$)for(;E<=k;)Le(u[E],v,S,!0),E++;else{const W=E,z=E,Q=new Map;for(E=z;E<=$;E++){const ve=d[E]=R?Xe(d[E]):Ae(d[E]);ve.key!=null&&Q.set(ve.key,E)}let te,ae=0;const Te=$-z+1;let mt=!1,es=0;const Ot=new Array(Te);for(E=0;E=Te){Le(ve,v,S,!0);continue}let Ie;if(ve.key!=null)Ie=Q.get(ve.key);else for(te=z;te<=$;te++)if(Ot[te-z]===0&&at(ve,d[te])){Ie=te;break}Ie===void 0?Le(ve,v,S,!0):(Ot[Ie-z]=E+1,Ie>=es?es=Ie:mt=!0,L(ve,d[Ie],m,null,v,S,I,C,R),ae++)}const ts=mt?bc(Ot):yt;for(te=ts.length-1,E=Te-1;E>=0;E--){const ve=z+E,Ie=d[ve],ns=ve+1{const{el:S,type:I,transition:C,children:R,shapeFlag:E}=u;if(E&6){st(u.component.subTree,d,m,b);return}if(E&128){u.suspense.move(d,m,b);return}if(E&64){I.move(u,d,m,gt);return}if(I===ye){r(S,d,m);for(let k=0;kC.enter(S),v);else{const{leave:k,delayLeave:$,afterLeave:W}=C,z=()=>r(S,d,m),Q=()=>{k(S,()=>{z(),W&&W()})};$?$(S,z,Q):Q()}else r(S,d,m)},Le=(u,d,m,b=!1,v=!1)=>{const{type:S,props:I,ref:C,children:R,dynamicChildren:E,shapeFlag:P,patchFlag:k,dirs:$}=u;if(C!=null&&In(C,null,m,u,!0),P&256){d.ctx.deactivate(u);return}const W=P&1&&$,z=!Et(u);let Q;if(z&&(Q=I&&I.onVnodeBeforeUnmount)&&Ce(Q,d,u),P&6)Mi(u.component,m,b);else{if(P&128){u.suspense.unmount(m,b);return}W&&Me(u,null,d,"beforeUnmount"),P&64?u.type.remove(u,d,m,v,gt,b):E&&(S!==ye||k>0&&k&64)?je(E,d,m,!1,!0):(S===ye&&k&384||!v&&P&16)&&je(R,d,m),b&&Qr(u)}(z&&(Q=I&&I.onVnodeUnmounted)||W)&&me(()=>{Q&&Ce(Q,d,u),W&&Me(u,null,d,"unmounted")},m)},Qr=u=>{const{type:d,el:m,anchor:b,transition:v}=u;if(d===ye){Ii(m,b);return}if(d===Ht){y(u);return}const S=()=>{s(m),v&&!v.persisted&&v.afterLeave&&v.afterLeave()};if(u.shapeFlag&1&&v&&!v.persisted){const{leave:I,delayLeave:C}=v,R=()=>I(m,S);C?C(u.el,S,R):R()}else S()},Ii=(u,d)=>{let m;for(;u!==d;)m=p(u),s(u),u=m;s(d)},Mi=(u,d,m)=>{const{bum:b,scope:v,update:S,subTree:I,um:C}=u;b&&vn(b),v.stop(),S&&(S.active=!1,Le(I,u,d,m)),C&&me(C,d),me(()=>{u.isUnmounted=!0},d),d&&d.pendingBranch&&!d.isUnmounted&&u.asyncDep&&!u.asyncResolved&&u.suspenseId===d.pendingId&&(d.deps--,d.deps===0&&d.resolve())},je=(u,d,m,b=!1,v=!1,S=0)=>{for(let I=S;Iu.shapeFlag&6?rn(u.component.subTree):u.shapeFlag&128?u.suspense.next():p(u.anchor||u.el);let zn=!1;const Zr=(u,d,m)=>{u==null?d._vnode&&Le(d._vnode,null,null,!0):L(d._vnode||null,u,d,null,null,null,m),zn||(zn=!0,ds(),Rn(),zn=!1),d._vnode=u},gt={p:L,um:Le,m:st,r:Qr,mt:le,mc:T,pc:V,pbc:w,n:rn,o:e};let Xn,Yn;return t&&([Xn,Yn]=t(gt)),{render:Zr,hydrate:Xn,createApp:lc(Zr,Xn)}}function nr({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function ot({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function Yo(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Gr(e,t,n=!1){const r=e.children,s=t.children;if(H(r)&&H(s))for(let o=0;o>1,e[n[l]]0&&(t[r]=n[o-1]),n[o]=r)}}for(o=n.length,i=n[o-1];o-- >0;)n[o]=i,i=t[i];return n}function Jo(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Jo(t)}const vc=e=>e.__isTeleport,$t=e=>e&&(e.disabled||e.disabled===""),xs=e=>typeof SVGElement<"u"&&e instanceof SVGElement,Ss=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,Er=(e,t)=>{const n=e&&e.to;return se(n)?t?t(n):null:n},wc={name:"Teleport",__isTeleport:!0,process(e,t,n,r,s,o,i,l,c,a){const{mc:f,pc:h,pbc:p,o:{insert:_,querySelector:x,createText:L,createComment:D}}=a,q=$t(t.props);let{shapeFlag:B,children:g,dynamicChildren:y}=t;if(e==null){const M=t.el=L(""),O=t.anchor=L("");_(M,n,r),_(O,n,r);const N=t.target=Er(t.props,x),T=t.targetAnchor=L("");N&&(_(T,N),i==="svg"||xs(N)?i="svg":(i==="mathml"||Ss(N))&&(i="mathml"));const F=(w,j)=>{B&16&&f(g,w,j,s,o,i,l,c)};q?F(n,O):N&&F(N,T)}else{t.el=e.el;const M=t.anchor=e.anchor,O=t.target=e.target,N=t.targetAnchor=e.targetAnchor,T=$t(e.props),F=T?n:O,w=T?M:N;if(i==="svg"||xs(O)?i="svg":(i==="mathml"||Ss(O))&&(i="mathml"),y?(p(e.dynamicChildren,y,F,s,o,i,l),Gr(e,t,!0)):c||h(e,t,F,w,s,o,i,l,!1),q)T?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):pn(t,n,M,a,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const j=t.target=Er(t.props,x);j&&pn(t,j,null,a,0)}else T&&pn(t,O,N,a,1)}Qo(t)},remove(e,t,n,r,{um:s,o:{remove:o}},i){const{shapeFlag:l,children:c,anchor:a,targetAnchor:f,target:h,props:p}=e;if(h&&o(f),i&&o(a),l&16){const _=i||!$t(p);for(let x=0;x0?Re||yt:null,Cc(),Kt>0&&Re&&Re.push(e),e}function Eu(e,t,n,r,s,o){return ei(ri(e,t,n,r,s,o,!0))}function ti(e,t,n,r,s){return ei(oe(e,t,n,r,s,!0))}function Mn(e){return e?e.__v_isVNode===!0:!1}function at(e,t){return e.type===t.type&&e.key===t.key}const ni=({key:e})=>e??null,En=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?se(e)||de(e)||K(e)?{i:ce,r:e,k:t,f:!!n}:e:null);function ri(e,t=null,n=null,r=0,s=null,o=e===ye?0:1,i=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&ni(t),ref:t&&En(t),scopeId:kn,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:o,patchFlag:r,dynamicProps:s,dynamicChildren:null,appContext:null,ctx:ce};return l?(zr(c,n),o&128&&e.normalize(c)):n&&(c.shapeFlag|=se(n)?8:16),Kt>0&&!i&&Re&&(c.patchFlag>0||o&6)&&c.patchFlag!==32&&Re.push(c),c}const oe=xc;function xc(e,t=null,n=null,r=0,s=null,o=!1){if((!e||e===Oo)&&(e=_e),Mn(e)){const l=tt(e,t,!0);return n&&zr(l,n),Kt>0&&!o&&Re&&(l.shapeFlag&6?Re[Re.indexOf(e)]=l:Re.push(l)),l.patchFlag|=-2,l}if(Nc(e)&&(e=e.__vccOpts),t){t=Sc(t);let{class:l,style:c}=t;l&&!se(l)&&(t.class=Lr(l)),Z(c)&&(vo(c)&&!H(c)&&(c=ie({},c)),t.style=Or(c))}const i=se(e)?1:$l(e)?128:vc(e)?64:Z(e)?4:K(e)?2:0;return ri(e,t,n,r,s,i,o,!0)}function Sc(e){return e?vo(e)||Bo(e)?ie({},e):e:null}function tt(e,t,n=!1,r=!1){const{props:s,ref:o,patchFlag:i,children:l,transition:c}=e,a=t?Tc(s||{},t):s,f={__v_isVNode:!0,__v_skip:!0,type:e.type,props:a,key:a&&ni(a),ref:t&&t.ref?n&&o?H(o)?o.concat(En(t)):[o,En(t)]:En(t):o,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==ye?i===-1?16:i|16:i,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:c,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&tt(e.ssContent),ssFallback:e.ssFallback&&tt(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return c&&r&&(f.transition=c.clone(f)),f}function si(e=" ",t=0){return oe(xt,null,e,t)}function Cu(e,t){const n=oe(Ht,null,e);return n.staticCount=t,n}function xu(e="",t=!1){return t?(Zo(),ti(_e,null,e)):oe(_e,null,e)}function Ae(e){return e==null||typeof e=="boolean"?oe(_e):H(e)?oe(ye,null,e.slice()):typeof e=="object"?Xe(e):oe(xt,null,String(e))}function Xe(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:tt(e)}function zr(e,t){let n=0;const{shapeFlag:r}=e;if(t==null)t=null;else if(H(t))n=16;else if(typeof t=="object")if(r&65){const s=t.default;s&&(s._c&&(s._d=!1),zr(e,s()),s._c&&(s._d=!0));return}else{n=32;const s=t._;!s&&!Bo(t)?t._ctx=ce:s===3&&ce&&(ce.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else K(t)?(t={default:t,_ctx:ce},n=32):(t=String(t),r&64?(n=16,t=[si(t)]):n=8);e.children=t,e.shapeFlag|=n}function Tc(...e){const t={};for(let n=0;nue||ce;let Pn,Cr;{const e=so(),t=(n,r)=>{let s;return(s=e[n])||(s=e[n]=[]),s.push(r),o=>{s.length>1?s.forEach(i=>i(o)):s[0](o)}};Pn=t("__VUE_INSTANCE_SETTERS__",n=>ue=n),Cr=t("__VUE_SSR_SETTERS__",n=>tn=n)}const en=e=>{const t=ue;return Pn(e),e.scope.on(),()=>{e.scope.off(),Pn(t)}},As=()=>{ue&&ue.scope.off(),Pn(null)};function oi(e){return e.vnode.shapeFlag&4}let tn=!1;function Lc(e,t=!1){t&&Cr(t);const{props:n,children:r}=e.vnode,s=oi(e);ac(e,n,s,t),dc(e,r);const o=s?Ic(e,t):void 0;return t&&Cr(!1),o}function Ic(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,Zl);const{setup:r}=n;if(r){const s=e.setupContext=r.length>1?li(e):null,o=en(e);nt();const i=Ze(r,e,0,[e.props,s]);if(rt(),o(),eo(i)){if(i.then(As,As),t)return i.then(l=>{Rs(e,l,t)}).catch(l=>{Jt(l,e,0)});e.asyncDep=i}else Rs(e,i,t)}else ii(e,t)}function Rs(e,t,n){K(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:Z(t)&&(e.setupState=xo(t)),ii(e,n)}let Os;function ii(e,t,n){const r=e.type;if(!e.render){if(!t&&Os&&!r.render){const s=r.template||Wr(e).template;if(s){const{isCustomElement:o,compilerOptions:i}=e.appContext.config,{delimiters:l,compilerOptions:c}=r,a=ie(ie({isCustomElement:o,delimiters:l},i),c);r.render=Os(s,a)}}e.render=r.render||xe}{const s=en(e);nt();try{tc(e)}finally{rt(),s()}}}const Mc={get(e,t){return be(e,"get",""),e[t]}};function li(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,Mc),slots:e.slots,emit:e.emit,expose:t}}function Gn(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(xo(wn(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Nt)return Nt[n](e)},has(t,n){return n in t||n in Nt}}))}function Pc(e,t=!0){return K(e)?e.displayName||e.name:e.name||t&&e.__name}function Nc(e){return K(e)&&"__vccOpts"in e}const ne=(e,t)=>ml(e,t,tn);function xr(e,t,n){const r=arguments.length;return r===2?Z(t)&&!H(t)?Mn(t)?oe(e,null,[t]):oe(e,t):oe(e,null,t):(r>3?n=Array.prototype.slice.call(arguments,2):r===3&&Mn(n)&&(n=[n]),oe(e,t,n))}const Fc="3.4.27";/** +* @vue/runtime-dom v3.4.27 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/const $c="http://www.w3.org/2000/svg",Hc="http://www.w3.org/1998/Math/MathML",Ye=typeof document<"u"?document:null,Ls=Ye&&Ye.createElement("template"),jc={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{const s=t==="svg"?Ye.createElementNS($c,e):t==="mathml"?Ye.createElementNS(Hc,e):Ye.createElement(e,n?{is:n}:void 0);return e==="select"&&r&&r.multiple!=null&&s.setAttribute("multiple",r.multiple),s},createText:e=>Ye.createTextNode(e),createComment:e=>Ye.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Ye.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,r,s,o){const i=n?n.previousSibling:t.lastChild;if(s&&(s===o||s.nextSibling))for(;t.insertBefore(s.cloneNode(!0),n),!(s===o||!(s=s.nextSibling)););else{Ls.innerHTML=r==="svg"?`${e}`:r==="mathml"?`${e}`:e;const l=Ls.content;if(r==="svg"||r==="mathml"){const c=l.firstChild;for(;c.firstChild;)l.appendChild(c.firstChild);l.removeChild(c)}t.insertBefore(l,n)}return[i?i.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},We="transition",Lt="animation",Wt=Symbol("_vtc"),ci=(e,{slots:t})=>xr(kl,Vc(e),t);ci.displayName="Transition";const ai={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String};ci.props=ie({},Po,ai);const it=(e,t=[])=>{H(e)?e.forEach(n=>n(...t)):e&&e(...t)},Is=e=>e?H(e)?e.some(t=>t.length>1):e.length>1:!1;function Vc(e){const t={};for(const A in e)A in ai||(t[A]=e[A]);if(e.css===!1)return t;const{name:n="v",type:r,duration:s,enterFromClass:o=`${n}-enter-from`,enterActiveClass:i=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:c=o,appearActiveClass:a=i,appearToClass:f=l,leaveFromClass:h=`${n}-leave-from`,leaveActiveClass:p=`${n}-leave-active`,leaveToClass:_=`${n}-leave-to`}=e,x=Dc(s),L=x&&x[0],D=x&&x[1],{onBeforeEnter:q,onEnter:B,onEnterCancelled:g,onLeave:y,onLeaveCancelled:M,onBeforeAppear:O=q,onAppear:N=B,onAppearCancelled:T=g}=t,F=(A,G,le)=>{lt(A,G?f:l),lt(A,G?a:i),le&&le()},w=(A,G)=>{A._isLeaving=!1,lt(A,h),lt(A,_),lt(A,p),G&&G()},j=A=>(G,le)=>{const fe=A?N:B,U=()=>F(G,A,le);it(fe,[G,U]),Ms(()=>{lt(G,A?c:o),qe(G,A?f:l),Is(fe)||Ps(G,r,L,U)})};return ie(t,{onBeforeEnter(A){it(q,[A]),qe(A,o),qe(A,i)},onBeforeAppear(A){it(O,[A]),qe(A,c),qe(A,a)},onEnter:j(!1),onAppear:j(!0),onLeave(A,G){A._isLeaving=!0;const le=()=>w(A,G);qe(A,h),qe(A,p),Bc(),Ms(()=>{A._isLeaving&&(lt(A,h),qe(A,_),Is(y)||Ps(A,r,D,le))}),it(y,[A,le])},onEnterCancelled(A){F(A,!1),it(g,[A])},onAppearCancelled(A){F(A,!0),it(T,[A])},onLeaveCancelled(A){w(A),it(M,[A])}})}function Dc(e){if(e==null)return null;if(Z(e))return[rr(e.enter),rr(e.leave)];{const t=rr(e);return[t,t]}}function rr(e){return ji(e)}function qe(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[Wt]||(e[Wt]=new Set)).add(t)}function lt(e,t){t.split(/\s+/).forEach(r=>r&&e.classList.remove(r));const n=e[Wt];n&&(n.delete(t),n.size||(e[Wt]=void 0))}function Ms(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let Uc=0;function Ps(e,t,n,r){const s=e._endId=++Uc,o=()=>{s===e._endId&&r()};if(n)return setTimeout(o,n);const{type:i,timeout:l,propCount:c}=kc(e,t);if(!i)return r();const a=i+"end";let f=0;const h=()=>{e.removeEventListener(a,p),o()},p=_=>{_.target===e&&++f>=c&&h()};setTimeout(()=>{f(n[x]||"").split(", "),s=r(`${We}Delay`),o=r(`${We}Duration`),i=Ns(s,o),l=r(`${Lt}Delay`),c=r(`${Lt}Duration`),a=Ns(l,c);let f=null,h=0,p=0;t===We?i>0&&(f=We,h=i,p=o.length):t===Lt?a>0&&(f=Lt,h=a,p=c.length):(h=Math.max(i,a),f=h>0?i>a?We:Lt:null,p=f?f===We?o.length:c.length:0);const _=f===We&&/\b(transform|all)(,|$)/.test(r(`${We}Property`).toString());return{type:f,timeout:h,propCount:p,hasTransform:_}}function Ns(e,t){for(;e.lengthFs(n)+Fs(e[r])))}function Fs(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function Bc(){return document.body.offsetHeight}function Kc(e,t,n){const r=e[Wt];r&&(t=(t?[t,...r]:[...r]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const Nn=Symbol("_vod"),ui=Symbol("_vsh"),Su={beforeMount(e,{value:t},{transition:n}){e[Nn]=e.style.display==="none"?"":e.style.display,n&&t?n.beforeEnter(e):It(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:r}){!t!=!n&&(r?t?(r.beforeEnter(e),It(e,!0),r.enter(e)):r.leave(e,()=>{It(e,!1)}):It(e,t))},beforeUnmount(e,{value:t}){It(e,t)}};function It(e,t){e.style.display=t?e[Nn]:"none",e[ui]=!t}const Wc=Symbol(""),qc=/(^|;)\s*display\s*:/;function Gc(e,t,n){const r=e.style,s=se(n);let o=!1;if(n&&!s){if(t)if(se(t))for(const i of t.split(";")){const l=i.slice(0,i.indexOf(":")).trim();n[l]==null&&Cn(r,l,"")}else for(const i in t)n[i]==null&&Cn(r,i,"");for(const i in n)i==="display"&&(o=!0),Cn(r,i,n[i])}else if(s){if(t!==n){const i=r[Wc];i&&(n+=";"+i),r.cssText=n,o=qc.test(n)}}else t&&e.removeAttribute("style");Nn in e&&(e[Nn]=o?r.display:"",e[ui]&&(r.display="none"))}const $s=/\s*!important$/;function Cn(e,t,n){if(H(n))n.forEach(r=>Cn(e,t,r));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const r=zc(e,t);$s.test(n)?e.setProperty(pt(r),n.replace($s,""),"important"):e[r]=n}}const Hs=["Webkit","Moz","ms"],sr={};function zc(e,t){const n=sr[t];if(n)return n;let r=$e(t);if(r!=="filter"&&r in e)return sr[t]=r;r=$n(r);for(let s=0;sor||(ea.then(()=>or=0),or=Date.now());function na(e,t){const n=r=>{if(!r._vts)r._vts=Date.now();else if(r._vts<=n.attached)return;Se(ra(r,n.value),t,5,[r])};return n.value=e,n.attached=ta(),n}function ra(e,t){if(H(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(r=>s=>!s._stopped&&r&&r(s))}else return t}const Us=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,sa=(e,t,n,r,s,o,i,l,c)=>{const a=s==="svg";t==="class"?Kc(e,r,a):t==="style"?Gc(e,n,r):zt(t)?Tr(t)||Qc(e,t,n,r,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):oa(e,t,r,a))?Yc(e,t,r,o,i,l,c):(t==="true-value"?e._trueValue=r:t==="false-value"&&(e._falseValue=r),Xc(e,t,r,a))};function oa(e,t,n,r){if(r)return!!(t==="innerHTML"||t==="textContent"||t in e&&Us(t)&&K(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const s=e.tagName;if(s==="IMG"||s==="VIDEO"||s==="CANVAS"||s==="SOURCE")return!1}return Us(t)&&se(n)?!1:t in e}const St=e=>{const t=e.props["onUpdate:modelValue"]||!1;return H(t)?n=>vn(t,n):t};function ia(e){e.target.composing=!0}function ks(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const De=Symbol("_assign"),Tu={created(e,{modifiers:{lazy:t,trim:n,number:r}},s){e[De]=St(s);const o=r||s.props&&s.props.type==="number";Je(e,t?"change":"input",i=>{if(i.target.composing)return;let l=e.value;n&&(l=l.trim()),o&&(l=Sn(l)),e[De](l)}),n&&Je(e,"change",()=>{e.value=e.value.trim()}),t||(Je(e,"compositionstart",ia),Je(e,"compositionend",ks),Je(e,"change",ks))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,modifiers:{lazy:n,trim:r,number:s}},o){if(e[De]=St(o),e.composing)return;const i=(s||e.type==="number")&&!/^0\d/.test(e.value)?Sn(e.value):e.value,l=t??"";i!==l&&(document.activeElement===e&&e.type!=="range"&&(n||r&&e.value.trim()===l)||(e.value=l))}},Au={deep:!0,created(e,t,n){e[De]=St(n),Je(e,"change",()=>{const r=e._modelValue,s=qt(e),o=e.checked,i=e[De];if(H(r)){const l=Ir(r,s),c=l!==-1;if(o&&!c)i(r.concat(s));else if(!o&&c){const a=[...r];a.splice(l,1),i(a)}}else if(At(r)){const l=new Set(r);o?l.add(s):l.delete(s),i(l)}else i(fi(e,o))})},mounted:Bs,beforeUpdate(e,t,n){e[De]=St(n),Bs(e,t,n)}};function Bs(e,{value:t,oldValue:n},r){e._modelValue=t,H(t)?e.checked=Ir(t,r.props.value)>-1:At(t)?e.checked=t.has(r.props.value):t!==n&&(e.checked=Yt(t,fi(e,!0)))}const Ru={deep:!0,created(e,{value:t,modifiers:{number:n}},r){const s=At(t);Je(e,"change",()=>{const o=Array.prototype.filter.call(e.options,i=>i.selected).map(i=>n?Sn(qt(i)):qt(i));e[De](e.multiple?s?new Set(o):o:o[0]),e._assigning=!0,Qt(()=>{e._assigning=!1})}),e[De]=St(r)},mounted(e,{value:t,modifiers:{number:n}}){Ks(e,t)},beforeUpdate(e,t,n){e[De]=St(n)},updated(e,{value:t,modifiers:{number:n}}){e._assigning||Ks(e,t)}};function Ks(e,t,n){const r=e.multiple,s=H(t);if(!(r&&!s&&!At(t))){for(let o=0,i=e.options.length;oString(f)===String(c)):l.selected=Ir(t,c)>-1}else l.selected=t.has(c);else if(Yt(qt(l),t)){e.selectedIndex!==o&&(e.selectedIndex=o);return}}!r&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function qt(e){return"_value"in e?e._value:e.value}function fi(e,t){const n=t?"_trueValue":"_falseValue";return n in e?e[n]:t}const la=["ctrl","shift","alt","meta"],ca={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>la.some(n=>e[`${n}Key`]&&!t.includes(n))},Ou=(e,t)=>{const n=e._withMods||(e._withMods={}),r=t.join(".");return n[r]||(n[r]=(s,...o)=>{for(let i=0;i{const n=e._withKeys||(e._withKeys={}),r=t.join(".");return n[r]||(n[r]=s=>{if(!("key"in s))return;const o=pt(s.key);if(t.some(i=>i===o||aa[i]===o))return e(s)})},di=ie({patchProp:sa},jc);let Vt,Ws=!1;function ua(){return Vt||(Vt=yc(di))}function fa(){return Vt=Ws?Vt:_c(di),Ws=!0,Vt}const Iu=(...e)=>{const t=ua().createApp(...e),{mount:n}=t;return t.mount=r=>{const s=pi(r);if(!s)return;const o=t._component;!K(o)&&!o.render&&!o.template&&(o.template=s.innerHTML),s.innerHTML="";const i=n(s,!1,hi(s));return s instanceof Element&&(s.removeAttribute("v-cloak"),s.setAttribute("data-v-app","")),i},t},Mu=(...e)=>{const t=fa().createApp(...e),{mount:n}=t;return t.mount=r=>{const s=pi(r);if(s)return n(s,!0,hi(s))},t};function hi(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function pi(e){return se(e)?document.querySelector(e):e}const Pu=(e,t)=>{const n=e.__vccOpts||e;for(const[r,s]of t)n[r]=s;return n},da="modulepreload",ha=function(e){return"/vue-pdf/"+e},qs={},Nu=function(t,n,r){let s=Promise.resolve();if(n&&n.length>0){document.getElementsByTagName("link");const o=document.querySelector("meta[property=csp-nonce]"),i=o?.nonce||o?.getAttribute("nonce");s=Promise.all(n.map(l=>{if(l=ha(l),l in qs)return;qs[l]=!0;const c=l.endsWith(".css"),a=c?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${l}"]${a}`))return;const f=document.createElement("link");if(f.rel=c?"stylesheet":da,c||(f.as="script",f.crossOrigin=""),f.href=l,i&&f.setAttribute("nonce",i),document.head.appendChild(f),c)return new Promise((h,p)=>{f.addEventListener("load",h),f.addEventListener("error",()=>p(new Error(`Unable to preload CSS for ${l}`)))})}))}return s.then(()=>t()).catch(o=>{const i=new Event("vite:preloadError",{cancelable:!0});if(i.payload=o,window.dispatchEvent(i),!i.defaultPrevented)throw o})},pa=window.__VP_SITE_DATA__;function Xr(e){return lo()?(zi(e),!0):!1}function Fe(e){return typeof e=="function"?e():Co(e)}const gi=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const ga=Object.prototype.toString,ma=e=>ga.call(e)==="[object Object]",Gt=()=>{},Gs=ya();function ya(){var e,t;return gi&&((e=window?.navigator)==null?void 0:e.userAgent)&&(/iP(ad|hone|od)/.test(window.navigator.userAgent)||((t=window?.navigator)==null?void 0:t.maxTouchPoints)>2&&/iPad|Macintosh/.test(window?.navigator.userAgent))}function _a(e,t){function n(...r){return new Promise((s,o)=>{Promise.resolve(e(()=>t.apply(this,r),{fn:t,thisArg:this,args:r})).then(s).catch(o)})}return n}const mi=e=>e();function ba(e,t={}){let n,r,s=Gt;const o=l=>{clearTimeout(l),s(),s=Gt};return l=>{const c=Fe(e),a=Fe(t.maxWait);return n&&o(n),c<=0||a!==void 0&&a<=0?(r&&(o(r),r=null),Promise.resolve(l())):new Promise((f,h)=>{s=t.rejectOnCancel?h:f,a&&!r&&(r=setTimeout(()=>{n&&o(n),r=null,f(l())},a)),n=setTimeout(()=>{r&&o(r),r=null,f(l())},c)})}}function va(e=mi){const t=re(!0);function n(){t.value=!1}function r(){t.value=!0}const s=(...o)=>{t.value&&e(...o)};return{isActive:Vn(t),pause:n,resume:r,eventFilter:s}}function wa(e){return qn()}function yi(...e){if(e.length!==1)return Cl(...e);const t=e[0];return typeof t=="function"?Vn(vl(()=>({get:t,set:Gt}))):re(t)}function _i(e,t,n={}){const{eventFilter:r=mi,...s}=n;return Ne(e,_a(r,t),s)}function Ea(e,t,n={}){const{eventFilter:r,...s}=n,{eventFilter:o,pause:i,resume:l,isActive:c}=va(r);return{stop:_i(e,t,{...s,eventFilter:o}),pause:i,resume:l,isActive:c}}function Yr(e,t=!0,n){wa()?Rt(e,n):t?e():Qt(e)}function Fu(e,t,n={}){const{debounce:r=0,maxWait:s=void 0,...o}=n;return _i(e,t,{...o,eventFilter:ba(r,{maxWait:s})})}function $u(e,t,n){let r;de(n)?r={evaluating:n}:r={};const{lazy:s=!1,evaluating:o=void 0,shallow:i=!0,onError:l=Gt}=r,c=re(!s),a=i?Dr(t):re(t);let f=0;return Br(async h=>{if(!c.value)return;f++;const p=f;let _=!1;o&&Promise.resolve().then(()=>{o.value=!0});try{const x=await e(L=>{h(()=>{o&&(o.value=!1),_||L()})});p===f&&(a.value=x)}catch(x){l(x)}finally{o&&p===f&&(o.value=!1),_=!0}}),s?ne(()=>(c.value=!0,a.value)):a}function bi(e){var t;const n=Fe(e);return(t=n?.$el)!=null?t:n}const Oe=gi?window:void 0;function Tt(...e){let t,n,r,s;if(typeof e[0]=="string"||Array.isArray(e[0])?([n,r,s]=e,t=Oe):[t,n,r,s]=e,!t)return Gt;Array.isArray(n)||(n=[n]),Array.isArray(r)||(r=[r]);const o=[],i=()=>{o.forEach(f=>f()),o.length=0},l=(f,h,p,_)=>(f.addEventListener(h,p,_),()=>f.removeEventListener(h,p,_)),c=Ne(()=>[bi(t),Fe(s)],([f,h])=>{if(i(),!f)return;const p=ma(h)?{...h}:h;o.push(...n.flatMap(_=>r.map(x=>l(f,_,x,p))))},{immediate:!0,flush:"post"}),a=()=>{c(),i()};return Xr(a),a}function Ca(e){return typeof e=="function"?e:typeof e=="string"?t=>t.key===e:Array.isArray(e)?t=>e.includes(t.key):()=>!0}function Hu(...e){let t,n,r={};e.length===3?(t=e[0],n=e[1],r=e[2]):e.length===2?typeof e[1]=="object"?(t=!0,n=e[0],r=e[1]):(t=e[0],n=e[1]):(t=!0,n=e[0]);const{target:s=Oe,eventName:o="keydown",passive:i=!1,dedupe:l=!1}=r,c=Ca(t);return Tt(s,o,f=>{f.repeat&&Fe(l)||c(f)&&n(f)},i)}function xa(){const e=re(!1),t=qn();return t&&Rt(()=>{e.value=!0},t),e}function Sa(e){const t=xa();return ne(()=>(t.value,!!e()))}function vi(e,t={}){const{window:n=Oe}=t,r=Sa(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function");let s;const o=re(!1),i=a=>{o.value=a.matches},l=()=>{s&&("removeEventListener"in s?s.removeEventListener("change",i):s.removeListener(i))},c=Br(()=>{r.value&&(l(),s=n.matchMedia(Fe(e)),"addEventListener"in s?s.addEventListener("change",i):s.addListener(i),o.value=s.matches)});return Xr(()=>{c(),l(),s=void 0}),o}const gn=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},mn="__vueuse_ssr_handlers__",Ta=Aa();function Aa(){return mn in gn||(gn[mn]=gn[mn]||{}),gn[mn]}function wi(e,t){return Ta[e]||t}function Ra(e){return e==null?"any":e instanceof Set?"set":e instanceof Map?"map":e instanceof Date?"date":typeof e=="boolean"?"boolean":typeof e=="string"?"string":typeof e=="object"?"object":Number.isNaN(e)?"any":"number"}const Oa={boolean:{read:e=>e==="true",write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}},zs="vueuse-storage";function Jr(e,t,n,r={}){var s;const{flush:o="pre",deep:i=!0,listenToStorageChanges:l=!0,writeDefaults:c=!0,mergeDefaults:a=!1,shallow:f,window:h=Oe,eventFilter:p,onError:_=w=>{console.error(w)},initOnMounted:x}=r,L=(f?Dr:re)(typeof t=="function"?t():t);if(!n)try{n=wi("getDefaultStorage",()=>{var w;return(w=Oe)==null?void 0:w.localStorage})()}catch(w){_(w)}if(!n)return L;const D=Fe(t),q=Ra(D),B=(s=r.serializer)!=null?s:Oa[q],{pause:g,resume:y}=Ea(L,()=>O(L.value),{flush:o,deep:i,eventFilter:p});h&&l&&Yr(()=>{Tt(h,"storage",T),Tt(h,zs,F),x&&T()}),x||T();function M(w,j){h&&h.dispatchEvent(new CustomEvent(zs,{detail:{key:e,oldValue:w,newValue:j,storageArea:n}}))}function O(w){try{const j=n.getItem(e);if(w==null)M(j,null),n.removeItem(e);else{const A=B.write(w);j!==A&&(n.setItem(e,A),M(j,A))}}catch(j){_(j)}}function N(w){const j=w?w.newValue:n.getItem(e);if(j==null)return c&&D!=null&&n.setItem(e,B.write(D)),D;if(!w&&a){const A=B.read(j);return typeof a=="function"?a(A,D):q==="object"&&!Array.isArray(A)?{...D,...A}:A}else return typeof j!="string"?j:B.read(j)}function T(w){if(!(w&&w.storageArea!==n)){if(w&&w.key==null){L.value=D;return}if(!(w&&w.key!==e)){g();try{w?.newValue!==B.write(L.value)&&(L.value=N(w))}catch(j){_(j)}finally{w?Qt(y):y()}}}}function F(w){T(w.detail)}return L}function Ei(e){return vi("(prefers-color-scheme: dark)",e)}function La(e={}){const{selector:t="html",attribute:n="class",initialValue:r="auto",window:s=Oe,storage:o,storageKey:i="vueuse-color-scheme",listenToStorageChanges:l=!0,storageRef:c,emitAuto:a,disableTransition:f=!0}=e,h={auto:"",light:"light",dark:"dark",...e.modes||{}},p=Ei({window:s}),_=ne(()=>p.value?"dark":"light"),x=c||(i==null?yi(r):Jr(i,r,o,{window:s,listenToStorageChanges:l})),L=ne(()=>x.value==="auto"?_.value:x.value),D=wi("updateHTMLAttrs",(y,M,O)=>{const N=typeof y=="string"?s?.document.querySelector(y):bi(y);if(!N)return;let T;if(f&&(T=s.document.createElement("style"),T.appendChild(document.createTextNode("*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}")),s.document.head.appendChild(T)),M==="class"){const F=O.split(/\s/g);Object.values(h).flatMap(w=>(w||"").split(/\s/g)).filter(Boolean).forEach(w=>{F.includes(w)?N.classList.add(w):N.classList.remove(w)})}else N.setAttribute(M,O);f&&(s.getComputedStyle(T).opacity,document.head.removeChild(T))});function q(y){var M;D(t,n,(M=h[y])!=null?M:y)}function B(y){e.onChanged?e.onChanged(y,q):q(y)}Ne(L,B,{flush:"post",immediate:!0}),Yr(()=>B(L.value));const g=ne({get(){return a?x.value:L.value},set(y){x.value=y}});try{return Object.assign(g,{store:x,system:_,state:L})}catch{return g}}function Ia(e={}){const{valueDark:t="dark",valueLight:n="",window:r=Oe}=e,s=La({...e,onChanged:(l,c)=>{var a;e.onChanged?(a=e.onChanged)==null||a.call(e,l==="dark",c,l):c(l)},modes:{dark:t,light:n}}),o=ne(()=>s.system?s.system.value:Ei({window:r}).value?"dark":"light");return ne({get(){return s.value==="dark"},set(l){const c=l?"dark":"light";o.value===c?s.value="auto":s.value=c}})}function ir(e){return typeof Window<"u"&&e instanceof Window?e.document.documentElement:typeof Document<"u"&&e instanceof Document?e.documentElement:e}function ju(e,t,n={}){const{window:r=Oe}=n;return Jr(e,t,r?.localStorage,n)}function Ci(e){const t=window.getComputedStyle(e);if(t.overflowX==="scroll"||t.overflowY==="scroll"||t.overflowX==="auto"&&e.clientWidth1?!0:(t.preventDefault&&t.preventDefault(),!1)}const yn=new WeakMap;function Vu(e,t=!1){const n=re(t);let r=null;Ne(yi(e),i=>{const l=ir(Fe(i));if(l){const c=l;yn.get(c)||yn.set(c,c.style.overflow),n.value&&(c.style.overflow="hidden")}},{immediate:!0});const s=()=>{const i=ir(Fe(e));!i||n.value||(Gs&&(r=Tt(i,"touchmove",l=>{Ma(l)},{passive:!1})),i.style.overflow="hidden",n.value=!0)},o=()=>{var i;const l=ir(Fe(e));!l||!n.value||(Gs&&r?.(),l.style.overflow=(i=yn.get(l))!=null?i:"",yn.delete(l),n.value=!1)};return Xr(o),ne({get(){return n.value},set(i){i?s():o()}})}function Du(e,t,n={}){const{window:r=Oe}=n;return Jr(e,t,r?.sessionStorage,n)}function Uu(e={}){const{window:t=Oe,behavior:n="auto"}=e;if(!t)return{x:re(0),y:re(0)};const r=re(t.scrollX),s=re(t.scrollY),o=ne({get(){return r.value},set(l){scrollTo({left:l,behavior:n})}}),i=ne({get(){return s.value},set(l){scrollTo({top:l,behavior:n})}});return Tt(t,"scroll",()=>{r.value=t.scrollX,s.value=t.scrollY},{capture:!1,passive:!0}),{x:o,y:i}}function ku(e={}){const{window:t=Oe,initialWidth:n=Number.POSITIVE_INFINITY,initialHeight:r=Number.POSITIVE_INFINITY,listenOrientation:s=!0,includeScrollbar:o=!0}=e,i=re(n),l=re(r),c=()=>{t&&(o?(i.value=t.innerWidth,l.value=t.innerHeight):(i.value=t.document.documentElement.clientWidth,l.value=t.document.documentElement.clientHeight))};if(c(),Yr(c),Tt("resize",c,{passive:!0}),s){const a=vi("(orientation: portrait)");Ne(a,()=>c())}return{width:i,height:l}}var Pa={BASE_URL:"/vue-pdf/",MODE:"production",DEV:!1,PROD:!0,SSR:!1},Na={};const xi=/^(?:[a-z]+:|\/\/)/i,Fa="vitepress-theme-appearance",$a=/#.*$/,Ha=/[?#].*$/,ja=/(?:(^|\/)index)?\.(?:md|html)$/,he=typeof document<"u",Si={relativePath:"404.md",filePath:"",title:"404",description:"Not Found",headers:[],frontmatter:{sidebar:!1,layout:"page"},lastUpdated:0,isNotFound:!0};function Va(e,t,n=!1){if(t===void 0)return!1;if(e=Xs(`/${e}`),n)return new RegExp(t).test(e);if(Xs(t)!==e)return!1;const r=t.match($a);return r?(he?location.hash:"")===r[0]:!0}function Xs(e){return decodeURI(e).replace(Ha,"").replace(ja,"$1")}function Da(e){return xi.test(e)}function Ua(e,t){return Object.keys(e?.locales||{}).find(n=>n!=="root"&&!Da(n)&&Va(t,`/${n}/`,!0))||"root"}function ka(e,t){const n=Ua(e,t);return Object.assign({},e,{localeIndex:n,lang:e.locales[n]?.lang??e.lang,dir:e.locales[n]?.dir??e.dir,title:e.locales[n]?.title??e.title,titleTemplate:e.locales[n]?.titleTemplate??e.titleTemplate,description:e.locales[n]?.description??e.description,head:Ai(e.head,e.locales[n]?.head??[]),themeConfig:{...e.themeConfig,...e.locales[n]?.themeConfig}})}function Ti(e,t){const n=t.title||e.title,r=t.titleTemplate??e.titleTemplate;if(typeof r=="string"&&r.includes(":title"))return r.replace(/:title/g,n);const s=Ba(e.title,r);return n===s.slice(3)?n:`${n}${s}`}function Ba(e,t){return t===!1?"":t===!0||t===void 0?` | ${e}`:e===t?"":` | ${t}`}function Ka(e,t){const[n,r]=t;if(n!=="meta")return!1;const s=Object.entries(r)[0];return s==null?!1:e.some(([o,i])=>o===n&&i[s[0]]===s[1])}function Ai(e,t){return[...e.filter(n=>!Ka(t,n)),...t]}const Wa=/[\u0000-\u001F"#$&*+,:;<=>?[\]^`{|}\u007F]/g,qa=/^[a-z]:/i;function Ys(e){const t=qa.exec(e),n=t?t[0]:"";return n+e.slice(n.length).replace(Wa,"_").replace(/(^|\/)_+(?=[^/]*$)/,"$1")}const lr=new Set;function Ga(e){if(lr.size===0){const n=typeof process=="object"&&Na?.VITE_EXTRA_EXTENSIONS||Pa?.VITE_EXTRA_EXTENSIONS||"";("3g2,3gp,aac,ai,apng,au,avif,bin,bmp,cer,class,conf,crl,css,csv,dll,doc,eps,epub,exe,gif,gz,ics,ief,jar,jpe,jpeg,jpg,js,json,jsonld,m4a,man,mid,midi,mjs,mov,mp2,mp3,mp4,mpe,mpeg,mpg,mpp,oga,ogg,ogv,ogx,opus,otf,p10,p7c,p7m,p7s,pdf,png,ps,qt,roff,rtf,rtx,ser,svg,t,tif,tiff,tr,ts,tsv,ttf,txt,vtt,wav,weba,webm,webp,woff,woff2,xhtml,xml,yaml,yml,zip"+(n&&typeof n=="string"?","+n:"")).split(",").forEach(r=>lr.add(r))}const t=e.split(".").pop();return t==null||!lr.has(t.toLowerCase())}function Bu(e){return e.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")}const za=Symbol(),ht=Dr(pa);function Ku(e){const t=ne(()=>ka(ht.value,e.data.relativePath)),n=t.value.appearance,r=n==="force-dark"?re(!0):n?Ia({storageKey:Fa,initialValue:()=>typeof n=="string"?n:"auto",...typeof n=="object"?n:{}}):re(!1),s=re(he?location.hash:"");return he&&window.addEventListener("hashchange",()=>{s.value=location.hash}),Ne(()=>e.data,()=>{s.value=he?location.hash:""}),{site:t,theme:ne(()=>t.value.themeConfig),page:ne(()=>e.data),frontmatter:ne(()=>e.data.frontmatter),params:ne(()=>e.data.params),lang:ne(()=>t.value.lang),dir:ne(()=>e.data.frontmatter.dir||t.value.dir),localeIndex:ne(()=>t.value.localeIndex||"root"),title:ne(()=>Ti(t.value,e.data)),description:ne(()=>e.data.description||t.value.description),isDark:r,hash:ne(()=>s.value)}}function Xa(){const e=Ct(za);if(!e)throw new Error("vitepress data not properly injected in app");return e}function Ya(e,t){return`${e}${t}`.replace(/\/+/g,"/")}function Js(e){return xi.test(e)||!e.startsWith("/")?e:Ya(ht.value.base,e)}function Ja(e){let t=e.replace(/\.html$/,"");if(t=decodeURIComponent(t),t=t.replace(/\/$/,"/index"),he){const n="/vue-pdf/";t=Ys(t.slice(n.length).replace(/\//g,"_")||"index")+".md";let r=__VP_HASH_MAP__[t.toLowerCase()];if(r||(t=t.endsWith("_index.md")?t.slice(0,-9)+".md":t.slice(0,-3)+"_index.md",r=__VP_HASH_MAP__[t.toLowerCase()]),!r)return null;t=`${n}assets/${t}.${r}.js`}else t=`./${Ys(t.slice(1).replace(/\//g,"_"))}.md.js`;return t}let xn=[];function Wu(e){xn.push(e),Wn(()=>{xn=xn.filter(t=>t!==e)})}function Qa(){let e=ht.value.scrollOffset,t=0,n=24;if(typeof e=="object"&&"padding"in e&&(n=e.padding,e=e.selector),typeof e=="number")t=e;else if(typeof e=="string")t=Qs(e,n);else if(Array.isArray(e))for(const r of e){const s=Qs(r,n);if(s){t=s;break}}return t}function Qs(e,t){const n=document.querySelector(e);if(!n)return 0;const r=n.getBoundingClientRect().bottom;return r<0?0:r+t}const Za=Symbol(),Ri="http://a.com",eu=()=>({path:"/",component:null,data:Si});function qu(e,t){const n=jn(eu()),r={route:n,go:s};async function s(l=he?location.href:"/"){l=cr(l),await r.onBeforeRouteChange?.(l)!==!1&&(he&&l!==cr(location.href)&&(history.replaceState({scrollPosition:window.scrollY},""),history.pushState({},"",l)),await i(l),await r.onAfterRouteChanged?.(l))}let o=null;async function i(l,c=0,a=!1){if(await r.onBeforePageLoad?.(l)===!1)return;const f=new URL(l,Ri),h=o=f.pathname;try{let p=await e(h);if(!p)throw new Error(`Page not found: ${h}`);if(o===h){o=null;const{default:_,__pageData:x}=p;if(!_)throw new Error(`Invalid route component: ${_}`);n.path=he?h:Js(h),n.component=wn(_),n.data=wn(x),he&&Qt(()=>{let L=ht.value.base+x.relativePath.replace(/(?:(^|\/)index)?\.md$/,"$1");if(!ht.value.cleanUrls&&!L.endsWith("/")&&(L+=".html"),L!==f.pathname&&(f.pathname=L,l=L+f.search+f.hash,history.replaceState({},"",l)),f.hash&&!c){let D=null;try{D=document.getElementById(decodeURIComponent(f.hash).slice(1))}catch(q){console.warn(q)}if(D){Zs(D,f.hash);return}}window.scrollTo(0,c)})}}catch(p){if(!/fetch|Page not found/.test(p.message)&&!/^\/404(\.html|\/)?$/.test(l)&&console.error(p),!a)try{const _=await fetch(ht.value.base+"hashmap.json");window.__VP_HASH_MAP__=await _.json(),await i(l,c,!0);return}catch{}if(o===h){o=null,n.path=he?h:Js(h),n.component=t?wn(t):null;const _=he?h.replace(/(^|\/)$/,"$1index").replace(/(\.html)?$/,".md").replace(/^\//,""):"404.md";n.data={...Si,relativePath:_}}}}return he&&(history.state===null&&history.replaceState({},""),window.addEventListener("click",l=>{if(l.target.closest("button"))return;const a=l.target.closest("a");if(a&&!a.closest(".vp-raw")&&(a instanceof SVGElement||!a.download)){const{target:f}=a,{href:h,origin:p,pathname:_,hash:x,search:L}=new URL(a.href instanceof SVGAnimatedString?a.href.animVal:a.href,a.baseURI),D=new URL(location.href);!l.ctrlKey&&!l.shiftKey&&!l.altKey&&!l.metaKey&&!f&&p===D.origin&&Ga(_)&&(l.preventDefault(),_===D.pathname&&L===D.search?(x!==D.hash&&(history.pushState({},"",h),window.dispatchEvent(new HashChangeEvent("hashchange",{oldURL:D.href,newURL:h}))),x?Zs(a,x,a.classList.contains("header-anchor")):window.scrollTo(0,0)):s(h))}},{capture:!0}),window.addEventListener("popstate",async l=>{l.state!==null&&(await i(cr(location.href),l.state&&l.state.scrollPosition||0),r.onAfterRouteChanged?.(location.href))}),window.addEventListener("hashchange",l=>{l.preventDefault()})),r}function tu(){const e=Ct(Za);if(!e)throw new Error("useRouter() is called without provider.");return e}function Oi(){return tu().route}function Zs(e,t,n=!1){let r=null;try{r=e.classList.contains("header-anchor")?e:document.getElementById(decodeURIComponent(t).slice(1))}catch(s){console.warn(s)}if(r){let s=function(){!n||Math.abs(i-window.scrollY)>window.innerHeight?window.scrollTo(0,i):window.scrollTo({left:0,top:i,behavior:"smooth"})};const o=parseInt(window.getComputedStyle(r).paddingTop,10),i=window.scrollY+r.getBoundingClientRect().top-Qa()+o;requestAnimationFrame(s)}}function cr(e){const t=new URL(e,Ri);return t.pathname=t.pathname.replace(/(^|\/)index(\.html)?$/,"$1"),ht.value.cleanUrls?t.pathname=t.pathname.replace(/\.html$/,""):!t.pathname.endsWith("/")&&!t.pathname.endsWith(".html")&&(t.pathname+=".html"),t.pathname+t.search+t.hash}const ar=()=>xn.forEach(e=>e()),Gu=Kr({name:"VitePressContent",props:{as:{type:[Object,String],default:"div"}},setup(e){const t=Oi(),{site:n}=Xa();return()=>xr(e.as,n.value.contentProps??{style:{position:"relative"}},[t.component?xr(t.component,{onVnodeMounted:ar,onVnodeUpdated:ar,onVnodeUnmounted:ar}):"404 Page Not Found"])}}),zu=Kr({setup(e,{slots:t}){const n=re(!1);return Rt(()=>{n.value=!0}),()=>n.value&&t.default?t.default():null}});function Xu(){he&&window.addEventListener("click",e=>{const t=e.target;if(t.matches(".vp-code-group input")){const n=t.parentElement?.parentElement;if(!n)return;const r=Array.from(n.querySelectorAll("input")).indexOf(t);if(r<0)return;const s=n.querySelector(".blocks");if(!s)return;const o=Array.from(s.children).find(c=>c.classList.contains("active"));if(!o)return;const i=s.children[r];if(!i||o===i)return;o.classList.remove("active"),i.classList.add("active"),n?.querySelector(`label[for="${t.id}"]`)?.scrollIntoView({block:"nearest"})}})}function Yu(){if(he){const e=new WeakMap;window.addEventListener("click",t=>{const n=t.target;if(n.matches('div[class*="language-"] > button.copy')){const r=n.parentElement,s=n.nextElementSibling?.nextElementSibling;if(!r||!s)return;const o=/language-(shellscript|shell|bash|sh|zsh)/.test(r.className),i=[".vp-copy-ignore",".diff.remove"],l=s.cloneNode(!0);l.querySelectorAll(i.join(",")).forEach(a=>a.remove());let c=l.textContent||"";o&&(c=c.replace(/^ *(\$|>) /gm,"").trim()),nu(c).then(()=>{n.classList.add("copied"),clearTimeout(e.get(n));const a=setTimeout(()=>{n.classList.remove("copied"),n.blur(),e.delete(n)},2e3);e.set(n,a)})}})}}async function nu(e){try{return navigator.clipboard.writeText(e)}catch{const t=document.createElement("textarea"),n=document.activeElement;t.value=e,t.setAttribute("readonly",""),t.style.contain="strict",t.style.position="absolute",t.style.left="-9999px",t.style.fontSize="12pt";const r=document.getSelection(),s=r?r.rangeCount>0&&r.getRangeAt(0):null;document.body.appendChild(t),t.select(),t.selectionStart=0,t.selectionEnd=e.length,document.execCommand("copy"),document.body.removeChild(t),s&&(r.removeAllRanges(),r.addRange(s)),n&&n.focus()}}function Ju(e,t){let n=!0,r=[];const s=o=>{if(n){n=!1,o.forEach(l=>{const c=ur(l);for(const a of document.head.children)if(a.isEqualNode(c)){r.push(a);return}});return}const i=o.map(ur);r.forEach((l,c)=>{const a=i.findIndex(f=>f?.isEqualNode(l??null));a!==-1?delete i[a]:(l?.remove(),delete r[c])}),i.forEach(l=>l&&document.head.appendChild(l)),r=[...r,...i].filter(Boolean)};Br(()=>{const o=e.data,i=t.value,l=o&&o.description,c=o&&o.frontmatter.head||[],a=Ti(i,o);a!==document.title&&(document.title=a);const f=l||i.description;let h=document.querySelector("meta[name=description]");h?h.getAttribute("content")!==f&&h.setAttribute("content",f):ur(["meta",{name:"description",content:f}]),s(Ai(i.head,su(c)))})}function ur([e,t,n]){const r=document.createElement(e);for(const s in t)r.setAttribute(s,t[s]);return n&&(r.innerHTML=n),e==="script"&&!t.async&&(r.async=!1),r}function ru(e){return e[0]==="meta"&&e[1]&&e[1].name==="description"}function su(e){return e.filter(t=>!ru(t))}const fr=new Set,Li=()=>document.createElement("link"),ou=e=>{const t=Li();t.rel="prefetch",t.href=e,document.head.appendChild(t)},iu=e=>{const t=new XMLHttpRequest;t.open("GET",e,t.withCredentials=!0),t.send()};let _n;const lu=he&&(_n=Li())&&_n.relList&&_n.relList.supports&&_n.relList.supports("prefetch")?ou:iu;function Qu(){if(!he||!window.IntersectionObserver)return;let e;if((e=navigator.connection)&&(e.saveData||/2g/.test(e.effectiveType)))return;const t=window.requestIdleCallback||setTimeout;let n=null;const r=()=>{n&&n.disconnect(),n=new IntersectionObserver(o=>{o.forEach(i=>{if(i.isIntersecting){const l=i.target;n.unobserve(l);const{pathname:c}=l;if(!fr.has(c)){fr.add(c);const a=Ja(c);a&&lu(a)}}})}),t(()=>{document.querySelectorAll("#app a").forEach(o=>{const{hostname:i,pathname:l}=new URL(o.href instanceof SVGAnimatedString?o.href.animVal:o.href,o.baseURI),c=l.match(/\.\w+$/);c&&c[0]!==".html"||o.target!=="_blank"&&i===location.hostname&&(l!==location.pathname?n.observe(o):fr.add(l))})})};Rt(r);const s=Oi();Ne(()=>s.path,r),Wn(()=>{n&&n.disconnect()})}export{bu as $,pu as A,zl as B,Qa as C,du as D,yu as E,ye as F,Dr as G,Wu as H,oe as I,hu as J,xi as K,Oi as L,Tc as M,Ct as N,ku as O,Or as P,Hu as Q,Qt as R,Uu as S,ci as T,he as U,Vn as V,mu as W,Nu as X,Vu as Y,cc as Z,Pu as _,si as a,Lu as a0,Ou as a1,vu as a2,de as a3,gu as a4,Su as a5,J as a6,Ru as a7,Tu as a8,au as a9,wn as aA,Iu as aB,Bu as aC,Au as aa,Cu as ab,Ju as ac,Za as ad,Ku as ae,za as af,Gu as ag,zu as ah,ht as ai,Mu as aj,qu as ak,Ja as al,Qu as am,Yu as an,Xu as ao,xr as ap,bi as aq,Xr as ar,$u as as,Du as at,ju as au,Fu as av,tu as aw,Tt as ax,Ho as ay,wu as az,ti as b,Eu as c,Kr as d,xu as e,Ga as f,Js as g,ne as h,Da as i,ri as j,Co as k,fu as l,Va as m,Lr as n,Zo as o,uu as p,vi as q,_u as r,re as s,cu as t,Xa as u,Ne as v,Il as w,Br as x,Rt as y,Wn as z}; diff --git a/assets/chunks/index.-EVKqUhF.js b/assets/chunks/index.-EVKqUhF.js new file mode 100644 index 0000000..3f09860 --- /dev/null +++ b/assets/chunks/index.-EVKqUhF.js @@ -0,0 +1 @@ +var A={a:7,c:6,h:1,l:2,m:2,q:4,s:4,t:2,v:1,z:0},V=/([astvzqmhlc])([^astvzqmhlc]*)/gi,Z=/-?[0-9]*\.?[0-9]+(?:e[-+]?\d+)?/gi;function _(o){const n=o.match(Z);return n?n.map(Number):[]}function U(o){const n=[],t=String(o).trim();return t[0]!=="M"&&t[0]!=="m"||t.replace(V,(l,r,a)=>{const s=_(a);let i=r.toLowerCase(),c=r;if(i==="m"&&s.length>2&&(n.push([c,...s.splice(0,2)]),i="l",c=c==="m"?"l":"L"),s.length=A[i]&&s.length&&A[i];)n.push([c,...s.splice(0,A[i])]);return""}),n}function B(o,n){const t=o.x*Math.cos(n)-o.y*Math.sin(n),l=o.y*Math.cos(n)+o.x*Math.sin(n);o.x=t,o.y=l}function j(o,n,t){o.x+=n,o.y+=t}function C(o,n){o.x*=n,o.y*=n}var N=class S{constructor(n){this.commands=[],n&&n instanceof S?this.commands.push(...n.commands):n&&(this.commands=U(n))}addPath(n){n&&n instanceof S&&this.commands.push(...n.commands)}moveTo(n,t){this.commands.push(["M",n,t])}lineTo(n,t){this.commands.push(["L",n,t])}arc(n,t,l,r,a,s){this.commands.push(["AC",n,t,l,r,a,!!s])}arcTo(n,t,l,r,a){this.commands.push(["AT",n,t,l,r,a])}ellipse(n,t,l,r,a,s,i,c){this.commands.push(["E",n,t,l,r,a,s,i,!!c])}closePath(){this.commands.push(["Z"])}bezierCurveTo(n,t,l,r,a,s){this.commands.push(["C",n,t,l,r,a,s])}quadraticCurveTo(n,t,l,r){this.commands.push(["Q",n,t,l,r])}rect(n,t,l,r){this.commands.push(["R",n,t,l,r])}roundRect(n,t,l,r,a){typeof a>"u"?this.commands.push(["RR",n,t,l,r,0]):this.commands.push(["RR",n,t,l,r,a])}};function F(o,n){let t=0,l=0,r,a,s,i,c,u,P,q,L,z,$,G,E,p,f,w,I,b,R,d,Q,m=null,k=null,y=null,T=null,v=null,M=null;o.beginPath();for(let h=0;h1&&(q=Math.sqrt(q),p*=q,f*=q),R={x:p*u.y/f,y:-(f*u.x)/p},L=p*p*f*f,z=p*p*u.y*u.y+f*f*u.x*u.x,i!==s?C(R,Math.sqrt((L-z)/z)||0):C(R,-Math.sqrt((L-z)/z)||0),a=Math.atan2((u.y-R.y)/f,(u.x-R.x)/p),r=Math.atan2(-(u.y+R.y)/f,-(u.x+R.x)/p),B(R,P),j(R,(c.x+M.x)/2,(c.y+M.y)/2),o.save(),o.translate(R.x,R.y),o.rotate(P),o.scale(p,f),o.arc(0,0,1,a,r,!i),o.restore();break;case"C":e=n[h],m=e[3],k=e[4],t=e[5],l=e[6],o.bezierCurveTo(e[1],e[2],m,k,t,l);break;case"c":e=n[h],o.bezierCurveTo(e[1]+t,e[2]+l,e[3]+t,e[4]+l,e[5]+t,e[6]+l),m=e[3]+t,k=e[4]+l,t+=e[5],l+=e[6];break;case"S":e=n[h],(m===null||k===null)&&(m=t,k=l),o.bezierCurveTo(2*t-m,2*l-k,e[1],e[2],e[3],e[4]),m=e[1],k=e[2],t=e[3],l=e[4];break;case"s":e=n[h],(m===null||k===null)&&(m=t,k=l),o.bezierCurveTo(2*t-m,2*l-k,e[1]+t,e[2]+l,e[3]+t,e[4]+l),m=e[1]+t,k=e[2]+l,t+=e[3],l+=e[4];break;case"Q":e=n[h],y=e[1],T=e[2],t=e[3],l=e[4],o.quadraticCurveTo(y,T,t,l);break;case"q":e=n[h],y=e[1]+t,T=e[2]+l,t+=e[3],l+=e[4],o.quadraticCurveTo(y,T,t,l);break;case"T":e=n[h],(y===null||T===null)&&(y=t,T=l),y=2*t-y,T=2*l-T,t=e[1],l=e[2],o.quadraticCurveTo(y,T,t,l);break;case"t":e=n[h],(y===null||T===null)&&(y=t,T=l),y=2*t-y,T=2*l-T,t+=e[1],l+=e[2],o.quadraticCurveTo(y,T,t,l);break;case"z":case"Z":v&&(t=v.x,l=v.y),v=null,o.closePath();break;case"AC":e=n[h],t=e[1],l=e[2],E=e[3],a=e[4],r=e[5],d=e[6],o.arc(t,l,E,a,r,d);break;case"AT":e=n[h],$=e[1],G=e[2],t=e[3],l=e[4],E=e[5],o.arcTo($,G,t,l,E);break;case"E":e=n[h],t=e[1],l=e[2],p=e[3],f=e[4],P=e[5],a=e[6],r=e[7],d=e[8],o.save(),o.translate(t,l),o.rotate(P),o.scale(p,f),o.arc(0,0,1,a,r,d),o.restore();break;case"R":e=n[h],t=e[1],l=e[2],w=e[3],I=e[4],v={x:t,y:l},o.rect(t,l,w,I);break;case"RR":e=n[h],t=e[1],l=e[2],w=e[3],I=e[4],Q=e[5],v={x:t,y:l},o.roundRect(t,l,w,I,Q);break;default:throw new Error(`Invalid path command: ${b}`)}M?(M.x=t,M.y=l):M={x:t,y:l}}}function H(o,n,t,l,r=0){if(typeof r=="number"&&(r=[r]),Array.isArray(r)){if(r.length===0||r.length>4)throw new RangeError(`Failed to execute 'roundRect' on '${this.constructor.name}': ${r.length} radii provided. Between one and four radii are necessary.`);r.forEach(P=>{if(P<0)throw new RangeError(`Failed to execute 'roundRect' on '${this.constructor.name}': Radius value ${P} is negative.`)})}else return;if(r.length===1&&r[0]===0){this.rect(o,n,t,l);return}const a=Math.min(t,l)/2,s=Math.min(a,r[0]);let i=s,c=s,u=s;r.length===2&&(i=Math.min(a,r[1]),u=i),r.length===3&&(i=Math.min(a,r[1]),u=i,c=Math.min(a,r[2])),r.length===4&&(i=Math.min(a,r[1]),c=Math.min(a,r[2]),u=Math.min(a,r[3])),this.moveTo(o,n+l-u),this.arcTo(o,n,o+s,n,s),this.arcTo(o+t,n,o+t,n+i,i),this.arcTo(o+t,n+l,o+t-c,n+l,c),this.arcTo(o,n+l,o,n+l-u,u),this.moveTo(o,n)}function J(o){if(!o)return;const n=o.prototype.clip,t=o.prototype.fill,l=o.prototype.stroke,r=o.prototype.isPointInPath;o.prototype.clip=function(...s){if(s[0]instanceof N){const c=s[0],u=s[1]||"nonzero";return F(this,c.commands),n.apply(this,[u])}const i=s[0]||"nonzero";return n.apply(this,[i])},o.prototype.fill=function(...s){if(s[0]instanceof N){const c=s[0],u=s[1]||"nonzero";return F(this,c.commands),t.apply(this,[u])}const i=s[0]||"nonzero";return t.apply(this,[i])},o.prototype.stroke=function(s){s&&F(this,s.commands),l.apply(this)},o.prototype.isPointInPath=function(...s){if(s[0]instanceof N){const i=s[0],c=s[1],u=s[2],P=s[3]||"nonzero";return F(this,i.commands),r.apply(this,[c,u,P])}return r.apply(this,s)}}function K(o){o&&!o.prototype.roundRect&&(o.prototype.roundRect=H)}function O(o){o&&!o.prototype.roundRect&&(o.prototype.roundRect=H)}export{N as Path2D,J as applyPath2DToCanvasRenderingContext,K as applyRoundRectToCanvasRenderingContext2D,O as applyRoundRectToPath2D,F as buildPath,U as parsePath,H as roundRect}; diff --git a/assets/chunks/theme.DKJ1gKC5.js b/assets/chunks/theme.DKJ1gKC5.js new file mode 100644 index 0000000..bea75a6 --- /dev/null +++ b/assets/chunks/theme.DKJ1gKC5.js @@ -0,0 +1,28 @@ +const __vite__fileDeps=["assets/chunks/VPLocalSearchBox.DVBBXNkX.js","assets/chunks/framework.uxIHJ7Q2.js"],__vite__mapDeps=i=>i.map(i=>__vite__fileDeps[i]); +import{d as il,o as K,c as A,r as $,n as kl,a as fl,t as Bl,b as Jl,w as dl,e as al,T as OU,_ as el,u as Xd,i as Yd,f as Bd,g as gl,h as Tl,j as g,k as H,p as Ol,l as rl,m as RU,q as EU,s as bl,v as Hl,x as TU,y as lU,z as rU,A as td,B as ud,C as pd,D as QU,F as zl,E as xl,G as bU,H as pU,I as Rl,J as iU,K as cd,L as oU,M as VU,N as yU,O as od,P as gU,Q as CU,R as yd,S as Qd,U as zU,V as zd,W as Ld,X as tU,Y as Vd,Z as Wd,$ as kd,a0 as Dd,a1 as Rd,a2 as Id,a3 as Ed,a4 as _l,a5 as Cd,a6 as eU,a7 as wd,a8 as cU,a9 as xd,aa as _U}from"./framework.uxIHJ7Q2.js";const jd=il({__name:"VPBadge",props:{text:{},type:{default:"tip"}},setup(T){return(N,t)=>(K(),A("span",{class:kl(["VPBadge",N.type])},[$(N.$slots,"default",{},()=>[fl(Bl(N.text),1)])],2))}}),Od={key:0,class:"VPBackdrop"},rd=il({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(T){return(N,t)=>(K(),Jl(OU,{name:"fade"},{default:dl(()=>[N.show?(K(),A("div",Od)):al("",!0)]),_:1}))}}),gd=el(rd,[["__scopeId","data-v-54a304ca"]]),pl=Xd;function Kd(T,N){let t,U=!1;return()=>{t&&clearTimeout(t),U?t=setTimeout(T,N):(T(),(U=!0)&&setTimeout(()=>U=!1,N))}}function wU(T){return/^\//.test(T)?T:`/${T}`}function KU(T){const{pathname:N,search:t,hash:U,protocol:n}=new URL(T,"http://a.com");if(Yd(T)||T.startsWith("#")||!n.startsWith("http")||!Bd(N))return T;const{site:m}=pl(),z=N.endsWith("/")||N.endsWith(".html")?T:T.replace(/(?:(^\.+)\/)?.*$/,`$1${N.replace(/(\.md)?$/,m.value.cleanUrls?"":".html")}${t}${U}`);return gl(z)}function SU({correspondingLink:T=!1}={}){const{site:N,localeIndex:t,page:U,theme:n,hash:m}=pl(),z=Tl(()=>({label:N.value.locales[t.value]?.label,link:N.value.locales[t.value]?.link||(t.value==="root"?"/":`/${t.value}/`)}));return{localeLinks:Tl(()=>Object.entries(N.value.locales).flatMap(([S,p])=>z.value.label===p.label?[]:{text:p.label,link:Hd(p.link||(S==="root"?"/":`/${S}/`),n.value.i18nRouting!==!1&&T,U.value.relativePath.slice(z.value.link.length-1),!N.value.cleanUrls)+m.value})),currentLang:z}}function Hd(T,N,t,U){return N?T.replace(/\/$/,"")+wU(t.replace(/(^|\/)index\.md$/,"$1").replace(/\.md$/,U?".html":"")):T}const vd=T=>(Ol("data-v-6ff51ddd"),T=T(),rl(),T),Pd={class:"NotFound"},fd={class:"code"},Ad={class:"title"},_d=vd(()=>g("div",{class:"divider"},null,-1)),qd={class:"quote"},$d={class:"action"},lZ=["href","aria-label"],UZ=il({__name:"NotFound",setup(T){const{theme:N}=pl(),{currentLang:t}=SU();return(U,n)=>(K(),A("div",Pd,[g("p",fd,Bl(H(N).notFound?.code??"404"),1),g("h1",Ad,Bl(H(N).notFound?.title??"PAGE NOT FOUND"),1),_d,g("blockquote",qd,Bl(H(N).notFound?.quote??"But if you don't change your direction, and if you keep looking, you may end up where you are heading."),1),g("div",$d,[g("a",{class:"link",href:H(gl)(H(t).link),"aria-label":H(N).notFound?.linkLabel??"go to home"},Bl(H(N).notFound?.linkText??"Take me home"),9,lZ)])]))}}),dZ=el(UZ,[["__scopeId","data-v-6ff51ddd"]]);function Nd(T,N){if(Array.isArray(T))return BU(T);if(T==null)return[];N=wU(N);const t=Object.keys(T).sort((n,m)=>m.split("/").length-n.split("/").length).find(n=>N.startsWith(wU(n))),U=t?T[t]:[];return Array.isArray(U)?BU(U):BU(U.items,U.base)}function ZZ(T){const N=[];let t=0;for(const U in T){const n=T[U];if(n.items){t=N.push(n);continue}N[t]||N.push({items:[]}),N[t].items.push(n)}return N}function FZ(T){const N=[];function t(U){for(const n of U)n.text&&n.link&&N.push({text:n.text,link:n.link,docFooterText:n.docFooterText}),n.items&&t(n.items)}return t(T),N}function xU(T,N){return Array.isArray(N)?N.some(t=>xU(T,t)):RU(T,N.link)?!0:N.items?xU(T,N.items):!1}function BU(T,N){return[...T].map(t=>{const U={...t},n=U.base||N;return n&&U.link&&(U.link=n+U.link),U.items&&(U.items=BU(U.items,n)),U})}function ZU(){const{frontmatter:T,page:N,theme:t}=pl(),U=EU("(min-width: 960px)"),n=bl(!1),m=Tl(()=>{const d=t.value.sidebar,a=N.value.relativePath;return d?Nd(d,a):[]}),z=bl(m.value);Hl(m,(d,a)=>{JSON.stringify(d)!==JSON.stringify(a)&&(z.value=m.value)});const Y=Tl(()=>T.value.sidebar!==!1&&z.value.length>0&&T.value.layout!=="home"),S=Tl(()=>p?T.value.aside==null?t.value.aside==="left":T.value.aside==="left":!1),p=Tl(()=>T.value.layout==="home"?!1:T.value.aside!=null?!!T.value.aside:t.value.aside!==!1),e=Tl(()=>Y.value&&U.value),F=Tl(()=>Y.value?ZZ(z.value):[]);function R(){n.value=!0}function W(){n.value=!1}function J(){n.value?W():R()}return{isOpen:n,sidebar:z,sidebarGroups:F,hasSidebar:Y,hasAside:p,leftAside:S,isSidebarEnabled:e,open:R,close:W,toggle:J}}function tZ(T,N){let t;TU(()=>{t=T.value?document.activeElement:void 0}),lU(()=>{window.addEventListener("keyup",U)}),rU(()=>{window.removeEventListener("keyup",U)});function U(n){n.key==="Escape"&&T.value&&(N(),t?.focus())}}function cZ(T){const{page:N,hash:t}=pl(),U=bl(!1),n=Tl(()=>T.value.collapsed!=null),m=Tl(()=>!!T.value.link),z=bl(!1),Y=()=>{z.value=RU(N.value.relativePath,T.value.link)};Hl([N,T,t],Y),lU(Y);const S=Tl(()=>z.value?!0:T.value.items?xU(N.value.relativePath,T.value.items):!1),p=Tl(()=>!!(T.value.items&&T.value.items.length));TU(()=>{U.value=!!(n.value&&T.value.collapsed)}),td(()=>{(z.value||S.value)&&(U.value=!1)});function e(){n.value&&(U.value=!U.value)}return{collapsed:U,collapsible:n,isLink:m,isActiveLink:z,hasActiveLink:S,hasChildren:p,toggle:e}}function QZ(){const{hasSidebar:T}=ZU(),N=EU("(min-width: 960px)"),t=EU("(min-width: 1280px)");return{isAsideEnabled:Tl(()=>!t.value&&!N.value?!1:T.value?t.value:N.value)}}const jU=[];function nd(T){return typeof T.outline=="object"&&!Array.isArray(T.outline)&&T.outline.label||T.outlineTitle||"On this page"}function HU(T){const N=[...document.querySelectorAll(".VPDoc :where(h1,h2,h3,h4,h5,h6)")].filter(t=>t.id&&t.hasChildNodes()).map(t=>{const U=Number(t.tagName[1]);return{element:t,title:VZ(t),link:"#"+t.id,level:U}});return WZ(N,T)}function VZ(T){let N="";for(const t of T.childNodes)if(t.nodeType===1){if(t.classList.contains("VPBadge")||t.classList.contains("header-anchor")||t.classList.contains("ignore-header"))continue;N+=t.textContent}else t.nodeType===3&&(N+=t.textContent);return N.trim()}function WZ(T,N){if(N===!1)return[];const t=(typeof N=="object"&&!Array.isArray(N)?N.level:N)||2,[U,n]=typeof t=="number"?[t,t]:t==="deep"?[2,6]:t;T=T.filter(z=>z.level>=U&&z.level<=n),jU.length=0;for(const{element:z,link:Y}of T)jU.push({element:z,link:Y});const m=[];l:for(let z=0;z=0;S--){const p=T[S];if(p.level{requestAnimationFrame(m),window.addEventListener("scroll",U)}),ud(()=>{z(location.hash)}),rU(()=>{window.removeEventListener("scroll",U)});function m(){if(!t.value)return;const Y=window.scrollY,S=window.innerHeight,p=document.body.offsetHeight,e=Math.abs(Y+S-p)<1,F=jU.map(({element:W,link:J})=>({link:J,top:NZ(W)})).filter(({top:W})=>!Number.isNaN(W)).sort((W,J)=>W.top-J.top);if(!F.length){z(null);return}if(Y<1){z(null);return}if(e){z(F[F.length-1].link);return}let R=null;for(const{link:W,top:J}of F){if(J>Y+pd()+4)break;R=W}z(R)}function z(Y){n&&n.classList.remove("active"),Y==null?n=null:n=T.value.querySelector(`a[href="${decodeURIComponent(Y)}"]`);const S=n;S?(S.classList.add("active"),N.value.style.top=S.offsetTop+39+"px",N.value.style.opacity="1"):(N.value.style.top="33px",N.value.style.opacity="0")}}function NZ(T){let N=0;for(;T!==document.body;){if(T===null)return NaN;N+=T.offsetTop,T=T.offsetParent}return N}const nZ=["href","title"],sZ=il({__name:"VPDocOutlineItem",props:{headers:{},root:{type:Boolean}},setup(T){function N({target:t}){const U=t.href.split("#")[1];document.getElementById(decodeURIComponent(U))?.focus({preventScroll:!0})}return(t,U)=>{const n=QU("VPDocOutlineItem",!0);return K(),A("ul",{class:kl(["VPDocOutlineItem",t.root?"root":"nested"])},[(K(!0),A(zl,null,xl(t.headers,({children:m,link:z,title:Y})=>(K(),A("li",null,[g("a",{class:"outline-link",href:z,onClick:N,title:Y},Bl(Y),9,nZ),m?.length?(K(),Jl(n,{key:0,headers:m},null,8,["headers"])):al("",!0)]))),256))],2)}}}),sd=el(sZ,[["__scopeId","data-v-53c99d69"]]),aZ={class:"content"},bZ={"aria-level":"2",class:"outline-title",id:"doc-outline-aria-label",role:"heading"},iZ=il({__name:"VPDocAsideOutline",setup(T){const{frontmatter:N,theme:t}=pl(),U=bU([]);pU(()=>{U.value=HU(N.value.outline??t.value.outline)});const n=bl(),m=bl();return RZ(n,m),(z,Y)=>(K(),A("nav",{"aria-labelledby":"doc-outline-aria-label",class:kl(["VPDocAsideOutline",{"has-outline":U.value.length>0}]),ref_key:"container",ref:n},[g("div",aZ,[g("div",{class:"outline-marker",ref_key:"marker",ref:m},null,512),g("div",bZ,Bl(H(nd)(H(t))),1),Rl(sd,{headers:U.value,root:!0},null,8,["headers"])])],2))}}),hZ=el(iZ,[["__scopeId","data-v-f610f197"]]),mZ={class:"VPDocAsideCarbonAds"},MZ=il({__name:"VPDocAsideCarbonAds",props:{carbonAds:{}},setup(T){const N=()=>null;return(t,U)=>(K(),A("div",mZ,[Rl(H(N),{"carbon-ads":t.carbonAds},null,8,["carbon-ads"])]))}}),GZ=T=>(Ol("data-v-cb998dce"),T=T(),rl(),T),JZ={class:"VPDocAside"},eZ=GZ(()=>g("div",{class:"spacer"},null,-1)),TZ=il({__name:"VPDocAside",setup(T){const{theme:N}=pl();return(t,U)=>(K(),A("div",JZ,[$(t.$slots,"aside-top",{},void 0,!0),$(t.$slots,"aside-outline-before",{},void 0,!0),Rl(hZ),$(t.$slots,"aside-outline-after",{},void 0,!0),eZ,$(t.$slots,"aside-ads-before",{},void 0,!0),H(N).carbonAds?(K(),Jl(MZ,{key:0,"carbon-ads":H(N).carbonAds},null,8,["carbon-ads"])):al("",!0),$(t.$slots,"aside-ads-after",{},void 0,!0),$(t.$slots,"aside-bottom",{},void 0,!0)]))}}),SZ=el(TZ,[["__scopeId","data-v-cb998dce"]]);function XZ(){const{theme:T,page:N}=pl();return Tl(()=>{const{text:t="Edit this page",pattern:U=""}=T.value.editLink||{};let n;return typeof U=="function"?n=U(N.value):n=U.replace(/:path/g,N.value.filePath),{url:n,text:t}})}function YZ(){const{page:T,theme:N,frontmatter:t}=pl();return Tl(()=>{const U=Nd(N.value.sidebar,T.value.relativePath),n=FZ(U),m=BZ(n,p=>p.link.replace(/[?#].*$/,"")),z=m.findIndex(p=>RU(T.value.relativePath,p.link)),Y=N.value.docFooter?.prev===!1&&!t.value.prev||t.value.prev===!1,S=N.value.docFooter?.next===!1&&!t.value.next||t.value.next===!1;return{prev:Y?void 0:{text:(typeof t.value.prev=="string"?t.value.prev:typeof t.value.prev=="object"?t.value.prev.text:void 0)??m[z-1]?.docFooterText??m[z-1]?.text,link:(typeof t.value.prev=="object"?t.value.prev.link:void 0)??m[z-1]?.link},next:S?void 0:{text:(typeof t.value.next=="string"?t.value.next:typeof t.value.next=="object"?t.value.next.text:void 0)??m[z+1]?.docFooterText??m[z+1]?.text,link:(typeof t.value.next=="object"?t.value.next.link:void 0)??m[z+1]?.link}}})}function BZ(T,N){const t=new Set;return T.filter(U=>{const n=N(U);return t.has(n)?!1:t.add(n)})}const $l=il({__name:"VPLink",props:{tag:{},href:{},noIcon:{type:Boolean},target:{},rel:{}},setup(T){const N=T,t=Tl(()=>N.tag??(N.href?"a":"span")),U=Tl(()=>N.href&&cd.test(N.href)||N.target==="_blank");return(n,m)=>(K(),Jl(iU(t.value),{class:kl(["VPLink",{link:n.href,"vp-external-link-icon":U.value,"no-icon":n.noIcon}]),href:n.href?H(KU)(n.href):void 0,target:n.target??(U.value?"_blank":void 0),rel:n.rel??(U.value?"noreferrer":void 0)},{default:dl(()=>[$(n.$slots,"default")]),_:3},8,["class","href","target","rel"]))}}),uZ={class:"VPLastUpdated"},pZ=["datetime"],oZ=il({__name:"VPDocFooterLastUpdated",setup(T){const{theme:N,page:t,frontmatter:U,lang:n}=pl(),m=Tl(()=>new Date(U.value.lastUpdated??t.value.lastUpdated)),z=Tl(()=>m.value.toISOString()),Y=bl("");return lU(()=>{TU(()=>{Y.value=new Intl.DateTimeFormat(N.value.lastUpdated?.formatOptions?.forceLocale?n.value:void 0,N.value.lastUpdated?.formatOptions??{dateStyle:"short",timeStyle:"short"}).format(m.value)})}),(S,p)=>(K(),A("p",uZ,[fl(Bl(H(N).lastUpdated?.text||H(N).lastUpdatedText||"Last updated")+": ",1),g("time",{datetime:z.value},Bl(Y.value),9,pZ)]))}}),yZ=el(oZ,[["__scopeId","data-v-19a7ae4e"]]),ad=T=>(Ol("data-v-5941af80"),T=T(),rl(),T),zZ={key:0,class:"VPDocFooter"},LZ={key:0,class:"edit-info"},kZ={key:0,class:"edit-link"},DZ=ad(()=>g("span",{class:"vpi-square-pen edit-link-icon"},null,-1)),IZ={key:1,class:"last-updated"},EZ={key:1,class:"prev-next","aria-labelledby":"doc-footer-aria-label"},CZ=ad(()=>g("span",{class:"visually-hidden",id:"doc-footer-aria-label"},"Pager",-1)),wZ={class:"pager"},xZ=["innerHTML"],jZ=["innerHTML"],OZ={class:"pager"},rZ=["innerHTML"],gZ=["innerHTML"],KZ=il({__name:"VPDocFooter",setup(T){const{theme:N,page:t,frontmatter:U}=pl(),n=XZ(),m=YZ(),z=Tl(()=>N.value.editLink&&U.value.editLink!==!1),Y=Tl(()=>t.value.lastUpdated&&U.value.lastUpdated!==!1),S=Tl(()=>z.value||Y.value||m.value.prev||m.value.next);return(p,e)=>S.value?(K(),A("footer",zZ,[$(p.$slots,"doc-footer-before",{},void 0,!0),z.value||Y.value?(K(),A("div",LZ,[z.value?(K(),A("div",kZ,[Rl($l,{class:"edit-link-button",href:H(n).url,"no-icon":!0},{default:dl(()=>[DZ,fl(" "+Bl(H(n).text),1)]),_:1},8,["href"])])):al("",!0),Y.value?(K(),A("div",IZ,[Rl(yZ)])):al("",!0)])):al("",!0),H(m).prev?.link||H(m).next?.link?(K(),A("nav",EZ,[CZ,g("div",wZ,[H(m).prev?.link?(K(),Jl($l,{key:0,class:"pager-link prev",href:H(m).prev.link},{default:dl(()=>[g("span",{class:"desc",innerHTML:H(N).docFooter?.prev||"Previous page"},null,8,xZ),g("span",{class:"title",innerHTML:H(m).prev.text},null,8,jZ)]),_:1},8,["href"])):al("",!0)]),g("div",OZ,[H(m).next?.link?(K(),Jl($l,{key:0,class:"pager-link next",href:H(m).next.link},{default:dl(()=>[g("span",{class:"desc",innerHTML:H(N).docFooter?.next||"Next page"},null,8,rZ),g("span",{class:"title",innerHTML:H(m).next.text},null,8,gZ)]),_:1},8,["href"])):al("",!0)])])):al("",!0)])):al("",!0)}}),HZ=el(KZ,[["__scopeId","data-v-5941af80"]]),vZ=T=>(Ol("data-v-e6f2a212"),T=T(),rl(),T),PZ={class:"container"},fZ=vZ(()=>g("div",{class:"aside-curtain"},null,-1)),AZ={class:"aside-container"},_Z={class:"aside-content"},qZ={class:"content"},$Z={class:"content-container"},lF={class:"main"},UF=il({__name:"VPDoc",setup(T){const{theme:N}=pl(),t=oU(),{hasSidebar:U,hasAside:n,leftAside:m}=ZU(),z=Tl(()=>t.path.replace(/[./]+/g,"_").replace(/_html$/,""));return(Y,S)=>{const p=QU("Content");return K(),A("div",{class:kl(["VPDoc",{"has-sidebar":H(U),"has-aside":H(n)}])},[$(Y.$slots,"doc-top",{},void 0,!0),g("div",PZ,[H(n)?(K(),A("div",{key:0,class:kl(["aside",{"left-aside":H(m)}])},[fZ,g("div",AZ,[g("div",_Z,[Rl(SZ,null,{"aside-top":dl(()=>[$(Y.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":dl(()=>[$(Y.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":dl(()=>[$(Y.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":dl(()=>[$(Y.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":dl(()=>[$(Y.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":dl(()=>[$(Y.$slots,"aside-ads-after",{},void 0,!0)]),_:3})])])],2)):al("",!0),g("div",qZ,[g("div",$Z,[$(Y.$slots,"doc-before",{},void 0,!0),g("main",lF,[Rl(p,{class:kl(["vp-doc",[z.value,H(N).externalLinkIcon&&"external-link-icon-enabled"]])},null,8,["class"])]),Rl(HZ,null,{"doc-footer-before":dl(()=>[$(Y.$slots,"doc-footer-before",{},void 0,!0)]),_:3}),$(Y.$slots,"doc-after",{},void 0,!0)])])]),$(Y.$slots,"doc-bottom",{},void 0,!0)],2)}}}),dF=el(UF,[["__scopeId","data-v-e6f2a212"]]),ZF=il({__name:"VPButton",props:{tag:{},size:{default:"medium"},theme:{default:"brand"},text:{},href:{},target:{},rel:{}},setup(T){const N=T,t=Tl(()=>N.href&&cd.test(N.href)),U=Tl(()=>N.tag||N.href?"a":"button");return(n,m)=>(K(),Jl(iU(U.value),{class:kl(["VPButton",[n.size,n.theme]]),href:n.href?H(KU)(n.href):void 0,target:N.target??(t.value?"_blank":void 0),rel:N.rel??(t.value?"noreferrer":void 0)},{default:dl(()=>[fl(Bl(n.text),1)]),_:1},8,["class","href","target","rel"]))}}),FF=el(ZF,[["__scopeId","data-v-c9cf0e3c"]]),tF=["src","alt"],cF=il({inheritAttrs:!1,__name:"VPImage",props:{image:{},alt:{}},setup(T){return(N,t)=>{const U=QU("VPImage",!0);return N.image?(K(),A(zl,{key:0},[typeof N.image=="string"||"src"in N.image?(K(),A("img",VU({key:0,class:"VPImage"},typeof N.image=="string"?N.$attrs:{...N.image,...N.$attrs},{src:H(gl)(typeof N.image=="string"?N.image:N.image.src),alt:N.alt??(typeof N.image=="string"?"":N.image.alt||"")}),null,16,tF)):(K(),A(zl,{key:1},[Rl(U,VU({class:"dark",image:N.image.dark,alt:N.image.alt},N.$attrs),null,16,["image","alt"]),Rl(U,VU({class:"light",image:N.image.light,alt:N.image.alt},N.$attrs),null,16,["image","alt"])],64))],64)):al("",!0)}}}),uU=el(cF,[["__scopeId","data-v-ab19afbb"]]),QF=T=>(Ol("data-v-b10c5094"),T=T(),rl(),T),VF={class:"container"},WF={class:"main"},RF={key:0,class:"name"},NF=["innerHTML"],nF=["innerHTML"],sF=["innerHTML"],aF={key:0,class:"actions"},bF={key:0,class:"image"},iF={class:"image-container"},hF=QF(()=>g("div",{class:"image-bg"},null,-1)),mF=il({__name:"VPHero",props:{name:{},text:{},tagline:{},image:{},actions:{}},setup(T){const N=yU("hero-image-slot-exists");return(t,U)=>(K(),A("div",{class:kl(["VPHero",{"has-image":t.image||H(N)}])},[g("div",VF,[g("div",WF,[$(t.$slots,"home-hero-info-before",{},void 0,!0),$(t.$slots,"home-hero-info",{},()=>[t.name?(K(),A("h1",RF,[g("span",{innerHTML:t.name,class:"clip"},null,8,NF)])):al("",!0),t.text?(K(),A("p",{key:1,innerHTML:t.text,class:"text"},null,8,nF)):al("",!0),t.tagline?(K(),A("p",{key:2,innerHTML:t.tagline,class:"tagline"},null,8,sF)):al("",!0)],!0),$(t.$slots,"home-hero-info-after",{},void 0,!0),t.actions?(K(),A("div",aF,[(K(!0),A(zl,null,xl(t.actions,n=>(K(),A("div",{key:n.link,class:"action"},[Rl(FF,{tag:"a",size:"medium",theme:n.theme,text:n.text,href:n.link,target:n.target,rel:n.rel},null,8,["theme","text","href","target","rel"])]))),128))])):al("",!0),$(t.$slots,"home-hero-actions-after",{},void 0,!0)]),t.image||H(N)?(K(),A("div",bF,[g("div",iF,[hF,$(t.$slots,"home-hero-image",{},()=>[t.image?(K(),Jl(uU,{key:0,class:"image-src",image:t.image},null,8,["image"])):al("",!0)],!0)])])):al("",!0)])],2))}}),MF=el(mF,[["__scopeId","data-v-b10c5094"]]),GF=il({__name:"VPHomeHero",setup(T){const{frontmatter:N}=pl();return(t,U)=>H(N).hero?(K(),Jl(MF,{key:0,class:"VPHomeHero",name:H(N).hero.name,text:H(N).hero.text,tagline:H(N).hero.tagline,image:H(N).hero.image,actions:H(N).hero.actions},{"home-hero-info-before":dl(()=>[$(t.$slots,"home-hero-info-before")]),"home-hero-info":dl(()=>[$(t.$slots,"home-hero-info")]),"home-hero-info-after":dl(()=>[$(t.$slots,"home-hero-info-after")]),"home-hero-actions-after":dl(()=>[$(t.$slots,"home-hero-actions-after")]),"home-hero-image":dl(()=>[$(t.$slots,"home-hero-image")]),_:3},8,["name","text","tagline","image","actions"])):al("",!0)}}),JF=T=>(Ol("data-v-bd37d1a2"),T=T(),rl(),T),eF={class:"box"},TF={key:0,class:"icon"},SF=["innerHTML"],XF=["innerHTML"],YF=["innerHTML"],BF={key:4,class:"link-text"},uF={class:"link-text-value"},pF=JF(()=>g("span",{class:"vpi-arrow-right link-text-icon"},null,-1)),oF=il({__name:"VPFeature",props:{icon:{},title:{},details:{},link:{},linkText:{},rel:{},target:{}},setup(T){return(N,t)=>(K(),Jl($l,{class:"VPFeature",href:N.link,rel:N.rel,target:N.target,"no-icon":!0,tag:N.link?"a":"div"},{default:dl(()=>[g("article",eF,[typeof N.icon=="object"&&N.icon.wrap?(K(),A("div",TF,[Rl(uU,{image:N.icon,alt:N.icon.alt,height:N.icon.height||48,width:N.icon.width||48},null,8,["image","alt","height","width"])])):typeof N.icon=="object"?(K(),Jl(uU,{key:1,image:N.icon,alt:N.icon.alt,height:N.icon.height||48,width:N.icon.width||48},null,8,["image","alt","height","width"])):N.icon?(K(),A("div",{key:2,class:"icon",innerHTML:N.icon},null,8,SF)):al("",!0),g("h2",{class:"title",innerHTML:N.title},null,8,XF),N.details?(K(),A("p",{key:3,class:"details",innerHTML:N.details},null,8,YF)):al("",!0),N.linkText?(K(),A("div",BF,[g("p",uF,[fl(Bl(N.linkText)+" ",1),pF])])):al("",!0)])]),_:1},8,["href","rel","target","tag"]))}}),yF=el(oF,[["__scopeId","data-v-bd37d1a2"]]),zF={key:0,class:"VPFeatures"},LF={class:"container"},kF={class:"items"},DF=il({__name:"VPFeatures",props:{features:{}},setup(T){const N=T,t=Tl(()=>{const U=N.features.length;if(U){if(U===2)return"grid-2";if(U===3)return"grid-3";if(U%3===0)return"grid-6";if(U>3)return"grid-4"}else return});return(U,n)=>U.features?(K(),A("div",zF,[g("div",LF,[g("div",kF,[(K(!0),A(zl,null,xl(U.features,m=>(K(),A("div",{key:m.title,class:kl(["item",[t.value]])},[Rl(yF,{icon:m.icon,title:m.title,details:m.details,link:m.link,"link-text":m.linkText,rel:m.rel,target:m.target},null,8,["icon","title","details","link","link-text","rel","target"])],2))),128))])])])):al("",!0)}}),IF=el(DF,[["__scopeId","data-v-b1eea84a"]]),EF=il({__name:"VPHomeFeatures",setup(T){const{frontmatter:N}=pl();return(t,U)=>H(N).features?(K(),Jl(IF,{key:0,class:"VPHomeFeatures",features:H(N).features},null,8,["features"])):al("",!0)}}),CF=il({__name:"VPHomeContent",setup(T){const{width:N}=od({initialWidth:0,includeScrollbar:!1});return(t,U)=>(K(),A("div",{class:"vp-doc container",style:gU(H(N)?{"--vp-offset":`calc(50% - ${H(N)/2}px)`}:{})},[$(t.$slots,"default",{},void 0,!0)],4))}}),wF=el(CF,[["__scopeId","data-v-c141a4bd"]]),xF={class:"VPHome"},jF=il({__name:"VPHome",setup(T){const{frontmatter:N}=pl();return(t,U)=>{const n=QU("Content");return K(),A("div",xF,[$(t.$slots,"home-hero-before",{},void 0,!0),Rl(GF,null,{"home-hero-info-before":dl(()=>[$(t.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":dl(()=>[$(t.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":dl(()=>[$(t.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":dl(()=>[$(t.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":dl(()=>[$(t.$slots,"home-hero-image",{},void 0,!0)]),_:3}),$(t.$slots,"home-hero-after",{},void 0,!0),$(t.$slots,"home-features-before",{},void 0,!0),Rl(EF),$(t.$slots,"home-features-after",{},void 0,!0),H(N).markdownStyles!==!1?(K(),Jl(wF,{key:0},{default:dl(()=>[Rl(n)]),_:1})):(K(),Jl(n,{key:1}))])}}}),OF=el(jF,[["__scopeId","data-v-07b1ad08"]]),rF={},gF={class:"VPPage"};function KF(T,N){const t=QU("Content");return K(),A("div",gF,[$(T.$slots,"page-top"),Rl(t),$(T.$slots,"page-bottom")])}const HF=el(rF,[["render",KF]]),vF=il({__name:"VPContent",setup(T){const{page:N,frontmatter:t}=pl(),{hasSidebar:U}=ZU();return(n,m)=>(K(),A("div",{class:kl(["VPContent",{"has-sidebar":H(U),"is-home":H(t).layout==="home"}]),id:"VPContent"},[H(N).isNotFound?$(n.$slots,"not-found",{key:0},()=>[Rl(dZ)],!0):H(t).layout==="page"?(K(),Jl(HF,{key:1},{"page-top":dl(()=>[$(n.$slots,"page-top",{},void 0,!0)]),"page-bottom":dl(()=>[$(n.$slots,"page-bottom",{},void 0,!0)]),_:3})):H(t).layout==="home"?(K(),Jl(OF,{key:2},{"home-hero-before":dl(()=>[$(n.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":dl(()=>[$(n.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":dl(()=>[$(n.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":dl(()=>[$(n.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":dl(()=>[$(n.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":dl(()=>[$(n.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":dl(()=>[$(n.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":dl(()=>[$(n.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":dl(()=>[$(n.$slots,"home-features-after",{},void 0,!0)]),_:3})):H(t).layout&&H(t).layout!=="doc"?(K(),Jl(iU(H(t).layout),{key:3})):(K(),Jl(dF,{key:4},{"doc-top":dl(()=>[$(n.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":dl(()=>[$(n.$slots,"doc-bottom",{},void 0,!0)]),"doc-footer-before":dl(()=>[$(n.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":dl(()=>[$(n.$slots,"doc-before",{},void 0,!0)]),"doc-after":dl(()=>[$(n.$slots,"doc-after",{},void 0,!0)]),"aside-top":dl(()=>[$(n.$slots,"aside-top",{},void 0,!0)]),"aside-outline-before":dl(()=>[$(n.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":dl(()=>[$(n.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":dl(()=>[$(n.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":dl(()=>[$(n.$slots,"aside-ads-after",{},void 0,!0)]),"aside-bottom":dl(()=>[$(n.$slots,"aside-bottom",{},void 0,!0)]),_:3}))],2))}}),PF=el(vF,[["__scopeId","data-v-9a6c75ad"]]),fF={class:"container"},AF=["innerHTML"],_F=["innerHTML"],qF=il({__name:"VPFooter",setup(T){const{theme:N,frontmatter:t}=pl(),{hasSidebar:U}=ZU();return(n,m)=>H(N).footer&&H(t).footer!==!1?(K(),A("footer",{key:0,class:kl(["VPFooter",{"has-sidebar":H(U)}])},[g("div",fF,[H(N).footer.message?(K(),A("p",{key:0,class:"message",innerHTML:H(N).footer.message},null,8,AF)):al("",!0),H(N).footer.copyright?(K(),A("p",{key:1,class:"copyright",innerHTML:H(N).footer.copyright},null,8,_F)):al("",!0)])],2)):al("",!0)}}),$F=el(qF,[["__scopeId","data-v-566314d4"]]);function l0(){const{theme:T,frontmatter:N}=pl(),t=bU([]),U=Tl(()=>t.value.length>0);return pU(()=>{t.value=HU(N.value.outline??T.value.outline)}),{headers:t,hasLocalNav:U}}const U0=T=>(Ol("data-v-883964e0"),T=T(),rl(),T),d0={class:"menu-text"},Z0=U0(()=>g("span",{class:"vpi-chevron-right icon"},null,-1)),F0={class:"header"},t0={class:"outline"},c0=il({__name:"VPLocalNavOutlineDropdown",props:{headers:{},navHeight:{}},setup(T){const N=T,{theme:t}=pl(),U=bl(!1),n=bl(0),m=bl(),z=bl();function Y(F){m.value?.contains(F.target)||(U.value=!1)}Hl(U,F=>{if(F){document.addEventListener("click",Y);return}document.removeEventListener("click",Y)}),CU("Escape",()=>{U.value=!1}),pU(()=>{U.value=!1});function S(){U.value=!U.value,n.value=window.innerHeight+Math.min(window.scrollY-N.navHeight,0)}function p(F){F.target.classList.contains("outline-link")&&(z.value&&(z.value.style.transition="none"),yd(()=>{U.value=!1}))}function e(){U.value=!1,window.scrollTo({top:0,left:0,behavior:"smooth"})}return(F,R)=>(K(),A("div",{class:"VPLocalNavOutlineDropdown",style:gU({"--vp-vh":n.value+"px"}),ref_key:"main",ref:m},[F.headers.length>0?(K(),A("button",{key:0,onClick:S,class:kl({open:U.value})},[g("span",d0,Bl(H(nd)(H(t))),1),Z0],2)):(K(),A("button",{key:1,onClick:e},Bl(H(t).returnToTopLabel||"Return to top"),1)),Rl(OU,{name:"flyout"},{default:dl(()=>[U.value?(K(),A("div",{key:0,ref_key:"items",ref:z,class:"items",onClick:p},[g("div",F0,[g("a",{class:"top-link",href:"#",onClick:e},Bl(H(t).returnToTopLabel||"Return to top"),1)]),g("div",t0,[Rl(sd,{headers:F.headers},null,8,["headers"])])],512)):al("",!0)]),_:1})],4))}}),Q0=el(c0,[["__scopeId","data-v-883964e0"]]),V0=T=>(Ol("data-v-2488c25a"),T=T(),rl(),T),W0={class:"container"},R0=["aria-expanded"],N0=V0(()=>g("span",{class:"vpi-align-left menu-icon"},null,-1)),n0={class:"menu-text"},s0=il({__name:"VPLocalNav",props:{open:{type:Boolean}},emits:["open-menu"],setup(T){const{theme:N,frontmatter:t}=pl(),{hasSidebar:U}=ZU(),{headers:n}=l0(),{y:m}=Qd(),z=bl(0);lU(()=>{z.value=parseInt(getComputedStyle(document.documentElement).getPropertyValue("--vp-nav-height"))}),pU(()=>{n.value=HU(t.value.outline??N.value.outline)});const Y=Tl(()=>n.value.length===0),S=Tl(()=>Y.value&&!U.value),p=Tl(()=>({VPLocalNav:!0,"has-sidebar":U.value,empty:Y.value,fixed:S.value}));return(e,F)=>H(t).layout!=="home"&&(!S.value||H(m)>=z.value)?(K(),A("div",{key:0,class:kl(p.value)},[g("div",W0,[H(U)?(K(),A("button",{key:0,class:"menu","aria-expanded":e.open,"aria-controls":"VPSidebarNav",onClick:F[0]||(F[0]=R=>e.$emit("open-menu"))},[N0,g("span",n0,Bl(H(N).sidebarMenuLabel||"Menu"),1)],8,R0)):al("",!0),Rl(Q0,{headers:H(n),navHeight:z.value},null,8,["headers","navHeight"])])],2)):al("",!0)}}),a0=el(s0,[["__scopeId","data-v-2488c25a"]]);function b0(){const T=bl(!1);function N(){T.value=!0,window.addEventListener("resize",n)}function t(){T.value=!1,window.removeEventListener("resize",n)}function U(){T.value?t():N()}function n(){window.outerWidth>=768&&t()}const m=oU();return Hl(()=>m.path,t),{isScreenOpen:T,openScreen:N,closeScreen:t,toggleScreen:U}}const i0={},h0={class:"VPSwitch",type:"button",role:"switch"},m0={class:"check"},M0={key:0,class:"icon"};function G0(T,N){return K(),A("button",h0,[g("span",m0,[T.$slots.default?(K(),A("span",M0,[$(T.$slots,"default",{},void 0,!0)])):al("",!0)])])}const J0=el(i0,[["render",G0],["__scopeId","data-v-b4ccac88"]]),bd=T=>(Ol("data-v-7df97737"),T=T(),rl(),T),e0=bd(()=>g("span",{class:"vpi-sun sun"},null,-1)),T0=bd(()=>g("span",{class:"vpi-moon moon"},null,-1)),S0=il({__name:"VPSwitchAppearance",setup(T){const{isDark:N,theme:t}=pl(),U=yU("toggle-appearance",()=>{N.value=!N.value}),n=Tl(()=>N.value?t.value.lightModeSwitchTitle||"Switch to light theme":t.value.darkModeSwitchTitle||"Switch to dark theme");return(m,z)=>(K(),Jl(J0,{title:n.value,class:"VPSwitchAppearance","aria-checked":H(N),onClick:H(U)},{default:dl(()=>[e0,T0]),_:1},8,["title","aria-checked","onClick"]))}}),vU=el(S0,[["__scopeId","data-v-7df97737"]]),X0={key:0,class:"VPNavBarAppearance"},Y0=il({__name:"VPNavBarAppearance",setup(T){const{site:N}=pl();return(t,U)=>H(N).appearance&&H(N).appearance!=="force-dark"?(K(),A("div",X0,[Rl(vU)])):al("",!0)}}),B0=el(Y0,[["__scopeId","data-v-283b26e9"]]),PU=bl();let id=!1,IU=0;function u0(T){const N=bl(!1);if(zU){!id&&p0(),IU++;const t=Hl(PU,U=>{U===T.el.value||T.el.value?.contains(U)?(N.value=!0,T.onFocus?.()):(N.value=!1,T.onBlur?.())});rU(()=>{t(),IU--,IU||o0()})}return zd(N)}function p0(){document.addEventListener("focusin",hd),id=!0,PU.value=document.activeElement}function o0(){document.removeEventListener("focusin",hd)}function hd(){PU.value=document.activeElement}const y0={class:"VPMenuLink"},z0=il({__name:"VPMenuLink",props:{item:{}},setup(T){const{page:N}=pl();return(t,U)=>(K(),A("div",y0,[Rl($l,{class:kl({active:H(RU)(H(N).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel},{default:dl(()=>[fl(Bl(t.item.text),1)]),_:1},8,["class","href","target","rel"])]))}}),LU=el(z0,[["__scopeId","data-v-f51f088d"]]),L0={class:"VPMenuGroup"},k0={key:0,class:"title"},D0=il({__name:"VPMenuGroup",props:{text:{},items:{}},setup(T){return(N,t)=>(K(),A("div",L0,[N.text?(K(),A("p",k0,Bl(N.text),1)):al("",!0),(K(!0),A(zl,null,xl(N.items,U=>(K(),A(zl,null,["link"in U?(K(),Jl(LU,{key:0,item:U},null,8,["item"])):al("",!0)],64))),256))]))}}),I0=el(D0,[["__scopeId","data-v-a6b0397c"]]),E0={class:"VPMenu"},C0={key:0,class:"items"},w0=il({__name:"VPMenu",props:{items:{}},setup(T){return(N,t)=>(K(),A("div",E0,[N.items?(K(),A("div",C0,[(K(!0),A(zl,null,xl(N.items,U=>(K(),A(zl,{key:U.text},["link"in U?(K(),Jl(LU,{key:0,item:U},null,8,["item"])):(K(),Jl(I0,{key:1,text:U.text,items:U.items},null,8,["text","items"]))],64))),128))])):al("",!0),$(N.$slots,"default",{},void 0,!0)]))}}),x0=el(w0,[["__scopeId","data-v-e42ed9b3"]]),j0=T=>(Ol("data-v-af5898d3"),T=T(),rl(),T),O0=["aria-expanded","aria-label"],r0={key:0,class:"text"},g0=["innerHTML"],K0=j0(()=>g("span",{class:"vpi-chevron-down text-icon"},null,-1)),H0={key:1,class:"vpi-more-horizontal icon"},v0={class:"menu"},P0=il({__name:"VPFlyout",props:{icon:{},button:{},label:{},items:{}},setup(T){const N=bl(!1),t=bl();u0({el:t,onBlur:U});function U(){N.value=!1}return(n,m)=>(K(),A("div",{class:"VPFlyout",ref_key:"el",ref:t,onMouseenter:m[1]||(m[1]=z=>N.value=!0),onMouseleave:m[2]||(m[2]=z=>N.value=!1)},[g("button",{type:"button",class:"button","aria-haspopup":"true","aria-expanded":N.value,"aria-label":n.label,onClick:m[0]||(m[0]=z=>N.value=!N.value)},[n.button||n.icon?(K(),A("span",r0,[n.icon?(K(),A("span",{key:0,class:kl([n.icon,"option-icon"])},null,2)):al("",!0),n.button?(K(),A("span",{key:1,innerHTML:n.button},null,8,g0)):al("",!0),K0])):(K(),A("span",H0))],8,O0),g("div",v0,[Rl(x0,{items:n.items},{default:dl(()=>[$(n.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}}),fU=el(P0,[["__scopeId","data-v-af5898d3"]]),f0=["href","aria-label","innerHTML"],A0=il({__name:"VPSocialLink",props:{icon:{},link:{},ariaLabel:{}},setup(T){const N=T,t=Tl(()=>typeof N.icon=="object"?N.icon.svg:``);return(U,n)=>(K(),A("a",{class:"VPSocialLink no-icon",href:U.link,"aria-label":U.ariaLabel??(typeof U.icon=="string"?U.icon:""),target:"_blank",rel:"noopener",innerHTML:t.value},null,8,f0))}}),_0=el(A0,[["__scopeId","data-v-358b6670"]]),q0={class:"VPSocialLinks"},$0=il({__name:"VPSocialLinks",props:{links:{}},setup(T){return(N,t)=>(K(),A("div",q0,[(K(!0),A(zl,null,xl(N.links,({link:U,icon:n,ariaLabel:m})=>(K(),Jl(_0,{key:U,icon:n,link:U,ariaLabel:m},null,8,["icon","link","ariaLabel"]))),128))]))}}),AU=el($0,[["__scopeId","data-v-e71e869c"]]),lt={key:0,class:"group translations"},Ut={class:"trans-title"},dt={key:1,class:"group"},Zt={class:"item appearance"},Ft={class:"label"},tt={class:"appearance-action"},ct={key:2,class:"group"},Qt={class:"item social-links"},Vt=il({__name:"VPNavBarExtra",setup(T){const{site:N,theme:t}=pl(),{localeLinks:U,currentLang:n}=SU({correspondingLink:!0}),m=Tl(()=>U.value.length&&n.value.label||N.value.appearance||t.value.socialLinks);return(z,Y)=>m.value?(K(),Jl(fU,{key:0,class:"VPNavBarExtra",label:"extra navigation"},{default:dl(()=>[H(U).length&&H(n).label?(K(),A("div",lt,[g("p",Ut,Bl(H(n).label),1),(K(!0),A(zl,null,xl(H(U),S=>(K(),Jl(LU,{key:S.link,item:S},null,8,["item"]))),128))])):al("",!0),H(N).appearance&&H(N).appearance!=="force-dark"?(K(),A("div",dt,[g("div",Zt,[g("p",Ft,Bl(H(t).darkModeSwitchLabel||"Appearance"),1),g("div",tt,[Rl(vU)])])])):al("",!0),H(t).socialLinks?(K(),A("div",ct,[g("div",Qt,[Rl(AU,{class:"social-links-list",links:H(t).socialLinks},null,8,["links"])])])):al("",!0)]),_:1})):al("",!0)}}),Wt=el(Vt,[["__scopeId","data-v-8e87c032"]]),Rt=T=>(Ol("data-v-6bee1efd"),T=T(),rl(),T),Nt=["aria-expanded"],nt=Rt(()=>g("span",{class:"container"},[g("span",{class:"top"}),g("span",{class:"middle"}),g("span",{class:"bottom"})],-1)),st=[nt],at=il({__name:"VPNavBarHamburger",props:{active:{type:Boolean}},emits:["click"],setup(T){return(N,t)=>(K(),A("button",{type:"button",class:kl(["VPNavBarHamburger",{active:N.active}]),"aria-label":"mobile navigation","aria-expanded":N.active,"aria-controls":"VPNavScreen",onClick:t[0]||(t[0]=U=>N.$emit("click"))},st,10,Nt))}}),bt=el(at,[["__scopeId","data-v-6bee1efd"]]),it=["innerHTML"],ht=il({__name:"VPNavBarMenuLink",props:{item:{}},setup(T){const{page:N}=pl();return(t,U)=>(K(),Jl($l,{class:kl({VPNavBarMenuLink:!0,active:H(RU)(H(N).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,noIcon:t.item.noIcon,target:t.item.target,rel:t.item.rel,tabindex:"0"},{default:dl(()=>[g("span",{innerHTML:t.item.text},null,8,it)]),_:1},8,["class","href","noIcon","target","rel"]))}}),mt=el(ht,[["__scopeId","data-v-08fbf4b6"]]),Mt=il({__name:"VPNavBarMenuGroup",props:{item:{}},setup(T){const N=T,{page:t}=pl(),U=m=>"link"in m?RU(t.value.relativePath,m.link,!!N.item.activeMatch):m.items.some(U),n=Tl(()=>U(N.item));return(m,z)=>(K(),Jl(fU,{class:kl({VPNavBarMenuGroup:!0,active:H(RU)(H(t).relativePath,m.item.activeMatch,!!m.item.activeMatch)||n.value}),button:m.item.text,items:m.item.items},null,8,["class","button","items"]))}}),Gt=T=>(Ol("data-v-f732b5d0"),T=T(),rl(),T),Jt={key:0,"aria-labelledby":"main-nav-aria-label",class:"VPNavBarMenu"},et=Gt(()=>g("span",{id:"main-nav-aria-label",class:"visually-hidden"},"Main Navigation",-1)),Tt=il({__name:"VPNavBarMenu",setup(T){const{theme:N}=pl();return(t,U)=>H(N).nav?(K(),A("nav",Jt,[et,(K(!0),A(zl,null,xl(H(N).nav,n=>(K(),A(zl,{key:n.text},["link"in n?(K(),Jl(mt,{key:0,item:n},null,8,["item"])):(K(),Jl(Mt,{key:1,item:n},null,8,["item"]))],64))),128))])):al("",!0)}}),St=el(Tt,[["__scopeId","data-v-f732b5d0"]]);function Xt(T){const{localeIndex:N,theme:t}=pl();function U(n){const m=n.split("."),z=t.value.search?.options,Y=z&&typeof z=="object",S=Y&&z.locales?.[N.value]?.translations||null,p=Y&&z.translations||null;let e=S,F=p,R=T;const W=m.pop();for(const J of m){let d=null;const a=R?.[J];a&&(d=R=a);const l=F?.[J];l&&(d=F=l);const c=e?.[J];c&&(d=e=c),a||(R=d),l||(F=d),c||(e=d)}return e?.[W]??F?.[W]??R?.[W]??""}return U}const Yt=["aria-label"],Bt={class:"DocSearch-Button-Container"},ut=g("span",{class:"vp-icon DocSearch-Search-Icon"},null,-1),pt={class:"DocSearch-Button-Placeholder"},ot=g("span",{class:"DocSearch-Button-Keys"},[g("kbd",{class:"DocSearch-Button-Key"}),g("kbd",{class:"DocSearch-Button-Key"},"K")],-1),qU=il({__name:"VPNavBarSearchButton",setup(T){const t=Xt({button:{buttonText:"Search",buttonAriaLabel:"Search"}});return(U,n)=>(K(),A("button",{type:"button",class:"DocSearch DocSearch-Button","aria-label":H(t)("button.buttonAriaLabel")},[g("span",Bt,[ut,g("span",pt,Bl(H(t)("button.buttonText")),1)]),ot],8,Yt))}}),yt={class:"VPNavBarSearch"},zt={id:"local-search"},Lt={key:1,id:"docsearch"},kt=il({__name:"VPNavBarSearch",setup(T){const N=Ld(()=>tU(()=>import("./VPLocalSearchBox.DVBBXNkX.js"),__vite__mapDeps([0,1]))),t=()=>null,{theme:U}=pl(),n=bl(!1),m=bl(!1);lU(()=>{});function z(){n.value||(n.value=!0,setTimeout(Y,16))}function Y(){const F=new Event("keydown");F.key="k",F.metaKey=!0,window.dispatchEvent(F),setTimeout(()=>{document.querySelector(".DocSearch-Modal")||Y()},16)}function S(F){const R=F.target,W=R.tagName;return R.isContentEditable||W==="INPUT"||W==="SELECT"||W==="TEXTAREA"}const p=bl(!1);CU("k",F=>{(F.ctrlKey||F.metaKey)&&(F.preventDefault(),p.value=!0)}),CU("/",F=>{S(F)||(F.preventDefault(),p.value=!0)});const e="local";return(F,R)=>(K(),A("div",yt,[H(e)==="local"?(K(),A(zl,{key:0},[p.value?(K(),Jl(H(N),{key:0,onClose:R[0]||(R[0]=W=>p.value=!1)})):al("",!0),g("div",zt,[Rl(qU,{onClick:R[1]||(R[1]=W=>p.value=!0)})])],64)):H(e)==="algolia"?(K(),A(zl,{key:1},[n.value?(K(),Jl(H(t),{key:0,algolia:H(U).search?.options??H(U).algolia,onVnodeBeforeMount:R[2]||(R[2]=W=>m.value=!0)},null,8,["algolia"])):al("",!0),m.value?al("",!0):(K(),A("div",Lt,[Rl(qU,{onClick:z})]))],64)):al("",!0)]))}}),Dt=il({__name:"VPNavBarSocialLinks",setup(T){const{theme:N}=pl();return(t,U)=>H(N).socialLinks?(K(),Jl(AU,{key:0,class:"VPNavBarSocialLinks",links:H(N).socialLinks},null,8,["links"])):al("",!0)}}),It=el(Dt,[["__scopeId","data-v-ef6192dc"]]),Et=["href","rel","target"],Ct={key:1},wt={key:2},xt=il({__name:"VPNavBarTitle",setup(T){const{site:N,theme:t}=pl(),{hasSidebar:U}=ZU(),{currentLang:n}=SU(),m=Tl(()=>typeof t.value.logoLink=="string"?t.value.logoLink:t.value.logoLink?.link),z=Tl(()=>typeof t.value.logoLink=="string"?void 0:t.value.logoLink?.rel),Y=Tl(()=>typeof t.value.logoLink=="string"?void 0:t.value.logoLink?.target);return(S,p)=>(K(),A("div",{class:kl(["VPNavBarTitle",{"has-sidebar":H(U)}])},[g("a",{class:"title",href:m.value??H(KU)(H(n).link),rel:z.value,target:Y.value},[$(S.$slots,"nav-bar-title-before",{},void 0,!0),H(t).logo?(K(),Jl(uU,{key:0,class:"logo",image:H(t).logo},null,8,["image"])):al("",!0),H(t).siteTitle?(K(),A("span",Ct,Bl(H(t).siteTitle),1)):H(t).siteTitle===void 0?(K(),A("span",wt,Bl(H(N).title),1)):al("",!0),$(S.$slots,"nav-bar-title-after",{},void 0,!0)],8,Et)],2))}}),jt=el(xt,[["__scopeId","data-v-0ad69264"]]),Ot={class:"items"},rt={class:"title"},gt=il({__name:"VPNavBarTranslations",setup(T){const{theme:N}=pl(),{localeLinks:t,currentLang:U}=SU({correspondingLink:!0});return(n,m)=>H(t).length&&H(U).label?(K(),Jl(fU,{key:0,class:"VPNavBarTranslations",icon:"vpi-languages",label:H(N).langMenuLabel||"Change language"},{default:dl(()=>[g("div",Ot,[g("p",rt,Bl(H(U).label),1),(K(!0),A(zl,null,xl(H(t),z=>(K(),Jl(LU,{key:z.link,item:z},null,8,["item"]))),128))])]),_:1},8,["label"])):al("",!0)}}),Kt=el(gt,[["__scopeId","data-v-acee064b"]]),Ht=T=>(Ol("data-v-844edcde"),T=T(),rl(),T),vt={class:"wrapper"},Pt={class:"container"},ft={class:"title"},At={class:"content"},_t={class:"content-body"},qt=Ht(()=>g("div",{class:"divider"},[g("div",{class:"divider-line"})],-1)),$t=il({__name:"VPNavBar",props:{isScreenOpen:{type:Boolean}},emits:["toggle-screen"],setup(T){const{y:N}=Qd(),{hasSidebar:t}=ZU(),{frontmatter:U}=pl(),n=bl({});return td(()=>{n.value={"has-sidebar":t.value,home:U.value.layout==="home",top:N.value===0}}),(m,z)=>(K(),A("div",{class:kl(["VPNavBar",n.value])},[g("div",vt,[g("div",Pt,[g("div",ft,[Rl(jt,null,{"nav-bar-title-before":dl(()=>[$(m.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":dl(()=>[$(m.$slots,"nav-bar-title-after",{},void 0,!0)]),_:3})]),g("div",At,[g("div",_t,[$(m.$slots,"nav-bar-content-before",{},void 0,!0),Rl(kt,{class:"search"}),Rl(St,{class:"menu"}),Rl(Kt,{class:"translations"}),Rl(B0,{class:"appearance"}),Rl(It,{class:"social-links"}),Rl(Wt,{class:"extra"}),$(m.$slots,"nav-bar-content-after",{},void 0,!0),Rl(bt,{class:"hamburger",active:m.isScreenOpen,onClick:z[0]||(z[0]=Y=>m.$emit("toggle-screen"))},null,8,["active"])])])])]),qt],2))}}),lc=el($t,[["__scopeId","data-v-844edcde"]]),Uc={key:0,class:"VPNavScreenAppearance"},dc={class:"text"},Zc=il({__name:"VPNavScreenAppearance",setup(T){const{site:N,theme:t}=pl();return(U,n)=>H(N).appearance&&H(N).appearance!=="force-dark"?(K(),A("div",Uc,[g("p",dc,Bl(H(t).darkModeSwitchLabel||"Appearance"),1),Rl(vU)])):al("",!0)}}),Fc=el(Zc,[["__scopeId","data-v-338d9b48"]]),tc=il({__name:"VPNavScreenMenuLink",props:{item:{}},setup(T){const N=yU("close-screen");return(t,U)=>(K(),Jl($l,{class:"VPNavScreenMenuLink",href:t.item.link,target:t.item.target,rel:t.item.rel,onClick:H(N),innerHTML:t.item.text},null,8,["href","target","rel","onClick","innerHTML"]))}}),cc=el(tc,[["__scopeId","data-v-1a934d60"]]),Qc=il({__name:"VPNavScreenMenuGroupLink",props:{item:{}},setup(T){const N=yU("close-screen");return(t,U)=>(K(),Jl($l,{class:"VPNavScreenMenuGroupLink",href:t.item.link,target:t.item.target,rel:t.item.rel,onClick:H(N)},{default:dl(()=>[fl(Bl(t.item.text),1)]),_:1},8,["href","target","rel","onClick"]))}}),md=el(Qc,[["__scopeId","data-v-aea78dd1"]]),Vc={class:"VPNavScreenMenuGroupSection"},Wc={key:0,class:"title"},Rc=il({__name:"VPNavScreenMenuGroupSection",props:{text:{},items:{}},setup(T){return(N,t)=>(K(),A("div",Vc,[N.text?(K(),A("p",Wc,Bl(N.text),1)):al("",!0),(K(!0),A(zl,null,xl(N.items,U=>(K(),Jl(md,{key:U.text,item:U},null,8,["item"]))),128))]))}}),Nc=el(Rc,[["__scopeId","data-v-f60dbfa7"]]),nc=T=>(Ol("data-v-d2212c70"),T=T(),rl(),T),sc=["aria-controls","aria-expanded"],ac=["innerHTML"],bc=nc(()=>g("span",{class:"vpi-plus button-icon"},null,-1)),ic=["id"],hc={key:1,class:"group"},mc=il({__name:"VPNavScreenMenuGroup",props:{text:{},items:{}},setup(T){const N=T,t=bl(!1),U=Tl(()=>`NavScreenGroup-${N.text.replace(" ","-").toLowerCase()}`);function n(){t.value=!t.value}return(m,z)=>(K(),A("div",{class:kl(["VPNavScreenMenuGroup",{open:t.value}])},[g("button",{class:"button","aria-controls":U.value,"aria-expanded":t.value,onClick:n},[g("span",{class:"button-text",innerHTML:m.text},null,8,ac),bc],8,sc),g("div",{id:U.value,class:"items"},[(K(!0),A(zl,null,xl(m.items,Y=>(K(),A(zl,{key:Y.text},["link"in Y?(K(),A("div",{key:Y.text,class:"item"},[Rl(md,{item:Y},null,8,["item"])])):(K(),A("div",hc,[Rl(Nc,{text:Y.text,items:Y.items},null,8,["text","items"])]))],64))),128))],8,ic)],2))}}),Mc=el(mc,[["__scopeId","data-v-d2212c70"]]),Gc={key:0,class:"VPNavScreenMenu"},Jc=il({__name:"VPNavScreenMenu",setup(T){const{theme:N}=pl();return(t,U)=>H(N).nav?(K(),A("nav",Gc,[(K(!0),A(zl,null,xl(H(N).nav,n=>(K(),A(zl,{key:n.text},["link"in n?(K(),Jl(cc,{key:0,item:n},null,8,["item"])):(K(),Jl(Mc,{key:1,text:n.text||"",items:n.items},null,8,["text","items"]))],64))),128))])):al("",!0)}}),ec=il({__name:"VPNavScreenSocialLinks",setup(T){const{theme:N}=pl();return(t,U)=>H(N).socialLinks?(K(),Jl(AU,{key:0,class:"VPNavScreenSocialLinks",links:H(N).socialLinks},null,8,["links"])):al("",!0)}}),Md=T=>(Ol("data-v-516e4bc3"),T=T(),rl(),T),Tc=Md(()=>g("span",{class:"vpi-languages icon lang"},null,-1)),Sc=Md(()=>g("span",{class:"vpi-chevron-down icon chevron"},null,-1)),Xc={class:"list"},Yc=il({__name:"VPNavScreenTranslations",setup(T){const{localeLinks:N,currentLang:t}=SU({correspondingLink:!0}),U=bl(!1);function n(){U.value=!U.value}return(m,z)=>H(N).length&&H(t).label?(K(),A("div",{key:0,class:kl(["VPNavScreenTranslations",{open:U.value}])},[g("button",{class:"title",onClick:n},[Tc,fl(" "+Bl(H(t).label)+" ",1),Sc]),g("ul",Xc,[(K(!0),A(zl,null,xl(H(N),Y=>(K(),A("li",{key:Y.link,class:"item"},[Rl($l,{class:"link",href:Y.link},{default:dl(()=>[fl(Bl(Y.text),1)]),_:2},1032,["href"])]))),128))])],2)):al("",!0)}}),Bc=el(Yc,[["__scopeId","data-v-516e4bc3"]]),uc={class:"container"},pc=il({__name:"VPNavScreen",props:{open:{type:Boolean}},setup(T){const N=bl(null),t=Vd(zU?document.body:null);return(U,n)=>(K(),Jl(OU,{name:"fade",onEnter:n[0]||(n[0]=m=>t.value=!0),onAfterLeave:n[1]||(n[1]=m=>t.value=!1)},{default:dl(()=>[U.open?(K(),A("div",{key:0,class:"VPNavScreen",ref_key:"screen",ref:N,id:"VPNavScreen"},[g("div",uc,[$(U.$slots,"nav-screen-content-before",{},void 0,!0),Rl(Jc,{class:"menu"}),Rl(Bc,{class:"translations"}),Rl(Fc,{class:"appearance"}),Rl(ec,{class:"social-links"}),$(U.$slots,"nav-screen-content-after",{},void 0,!0)])],512)):al("",!0)]),_:3}))}}),oc=el(pc,[["__scopeId","data-v-57cce842"]]),yc={key:0,class:"VPNav"},zc=il({__name:"VPNav",setup(T){const{isScreenOpen:N,closeScreen:t,toggleScreen:U}=b0(),{frontmatter:n}=pl(),m=Tl(()=>n.value.navbar!==!1);return Wd("close-screen",t),TU(()=>{zU&&document.documentElement.classList.toggle("hide-nav",!m.value)}),(z,Y)=>m.value?(K(),A("header",yc,[Rl(lc,{"is-screen-open":H(N),onToggleScreen:H(U)},{"nav-bar-title-before":dl(()=>[$(z.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":dl(()=>[$(z.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":dl(()=>[$(z.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":dl(()=>[$(z.$slots,"nav-bar-content-after",{},void 0,!0)]),_:3},8,["is-screen-open","onToggleScreen"]),Rl(oc,{open:H(N)},{"nav-screen-content-before":dl(()=>[$(z.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":dl(()=>[$(z.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3},8,["open"])])):al("",!0)}}),Lc=el(zc,[["__scopeId","data-v-7ad780c2"]]),Gd=T=>(Ol("data-v-c24f735a"),T=T(),rl(),T),kc=["role","tabindex"],Dc=Gd(()=>g("div",{class:"indicator"},null,-1)),Ic=Gd(()=>g("span",{class:"vpi-chevron-right caret-icon"},null,-1)),Ec=[Ic],Cc={key:1,class:"items"},wc=il({__name:"VPSidebarItem",props:{item:{},depth:{}},setup(T){const N=T,{collapsed:t,collapsible:U,isLink:n,isActiveLink:m,hasActiveLink:z,hasChildren:Y,toggle:S}=cZ(Tl(()=>N.item)),p=Tl(()=>Y.value?"section":"div"),e=Tl(()=>n.value?"a":"div"),F=Tl(()=>Y.value?N.depth+2===7?"p":`h${N.depth+2}`:"p"),R=Tl(()=>n.value?void 0:"button"),W=Tl(()=>[[`level-${N.depth}`],{collapsible:U.value},{collapsed:t.value},{"is-link":n.value},{"is-active":m.value},{"has-active":z.value}]);function J(a){"key"in a&&a.key!=="Enter"||!N.item.link&&S()}function d(){N.item.link&&S()}return(a,l)=>{const c=QU("VPSidebarItem",!0);return K(),Jl(iU(p.value),{class:kl(["VPSidebarItem",W.value])},{default:dl(()=>[a.item.text?(K(),A("div",VU({key:0,class:"item",role:R.value},kd(a.item.items?{click:J,keydown:J}:{},!0),{tabindex:a.item.items&&0}),[Dc,a.item.link?(K(),Jl($l,{key:0,tag:e.value,class:"link",href:a.item.link,rel:a.item.rel,target:a.item.target},{default:dl(()=>[(K(),Jl(iU(F.value),{class:"text",innerHTML:a.item.text},null,8,["innerHTML"]))]),_:1},8,["tag","href","rel","target"])):(K(),Jl(iU(F.value),{key:1,class:"text",innerHTML:a.item.text},null,8,["innerHTML"])),a.item.collapsed!=null&&a.item.items&&a.item.items.length?(K(),A("div",{key:2,class:"caret",role:"button","aria-label":"toggle section",onClick:d,onKeydown:Dd(d,["enter"]),tabindex:"0"},Ec,32)):al("",!0)],16,kc)):al("",!0),a.item.items&&a.item.items.length?(K(),A("div",Cc,[a.depth<5?(K(!0),A(zl,{key:0},xl(a.item.items,s=>(K(),Jl(c,{key:s.text,item:s,depth:a.depth+1},null,8,["item","depth"]))),128)):al("",!0)])):al("",!0)]),_:1},8,["class"])}}}),xc=el(wc,[["__scopeId","data-v-c24f735a"]]),Jd=T=>(Ol("data-v-4871f9f5"),T=T(),rl(),T),jc=Jd(()=>g("div",{class:"curtain"},null,-1)),Oc={class:"nav",id:"VPSidebarNav","aria-labelledby":"sidebar-aria-label",tabindex:"-1"},rc=Jd(()=>g("span",{class:"visually-hidden",id:"sidebar-aria-label"}," Sidebar Navigation ",-1)),gc=il({__name:"VPSidebar",props:{open:{type:Boolean}},setup(T){const{sidebarGroups:N,hasSidebar:t}=ZU(),U=T,n=bl(null),m=Vd(zU?document.body:null);return Hl([U,n],()=>{U.open?(m.value=!0,n.value?.focus()):m.value=!1},{immediate:!0,flush:"post"}),(z,Y)=>H(t)?(K(),A("aside",{key:0,class:kl(["VPSidebar",{open:z.open}]),ref_key:"navEl",ref:n,onClick:Y[0]||(Y[0]=Rd(()=>{},["stop"]))},[jc,g("nav",Oc,[rc,$(z.$slots,"sidebar-nav-before",{},void 0,!0),(K(!0),A(zl,null,xl(H(N),S=>(K(),A("div",{key:S.text,class:"group"},[Rl(xc,{item:S,depth:0},null,8,["item"])]))),128)),$(z.$slots,"sidebar-nav-after",{},void 0,!0)])],2)):al("",!0)}}),Kc=el(gc,[["__scopeId","data-v-4871f9f5"]]),Hc=il({__name:"VPSkipLink",setup(T){const N=oU(),t=bl();Hl(()=>N.path,()=>t.value.focus());function U({target:n}){const m=document.getElementById(decodeURIComponent(n.hash).slice(1));if(m){const z=()=>{m.removeAttribute("tabindex"),m.removeEventListener("blur",z)};m.setAttribute("tabindex","-1"),m.addEventListener("blur",z),m.focus(),window.scrollTo(0,0)}}return(n,m)=>(K(),A(zl,null,[g("span",{ref_key:"backToTop",ref:t,tabindex:"-1"},null,512),g("a",{href:"#VPContent",class:"VPSkipLink visually-hidden",onClick:U}," Skip to content ")],64))}}),vc=el(Hc,[["__scopeId","data-v-c8291ffa"]]),Pc=il({__name:"Layout",setup(T){const{isOpen:N,open:t,close:U}=ZU(),n=oU();Hl(()=>n.path,U),tZ(N,U);const{frontmatter:m}=pl(),z=Id(),Y=Tl(()=>!!z["home-hero-image"]);return Wd("hero-image-slot-exists",Y),(S,p)=>{const e=QU("Content");return H(m).layout!==!1?(K(),A("div",{key:0,class:kl(["Layout",H(m).pageClass])},[$(S.$slots,"layout-top",{},void 0,!0),Rl(vc),Rl(gd,{class:"backdrop",show:H(N),onClick:H(U)},null,8,["show","onClick"]),Rl(Lc,null,{"nav-bar-title-before":dl(()=>[$(S.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":dl(()=>[$(S.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":dl(()=>[$(S.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":dl(()=>[$(S.$slots,"nav-bar-content-after",{},void 0,!0)]),"nav-screen-content-before":dl(()=>[$(S.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":dl(()=>[$(S.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3}),Rl(a0,{open:H(N),onOpenMenu:H(t)},null,8,["open","onOpenMenu"]),Rl(Kc,{open:H(N)},{"sidebar-nav-before":dl(()=>[$(S.$slots,"sidebar-nav-before",{},void 0,!0)]),"sidebar-nav-after":dl(()=>[$(S.$slots,"sidebar-nav-after",{},void 0,!0)]),_:3},8,["open"]),Rl(PF,null,{"page-top":dl(()=>[$(S.$slots,"page-top",{},void 0,!0)]),"page-bottom":dl(()=>[$(S.$slots,"page-bottom",{},void 0,!0)]),"not-found":dl(()=>[$(S.$slots,"not-found",{},void 0,!0)]),"home-hero-before":dl(()=>[$(S.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":dl(()=>[$(S.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":dl(()=>[$(S.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":dl(()=>[$(S.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":dl(()=>[$(S.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":dl(()=>[$(S.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":dl(()=>[$(S.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":dl(()=>[$(S.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":dl(()=>[$(S.$slots,"home-features-after",{},void 0,!0)]),"doc-footer-before":dl(()=>[$(S.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":dl(()=>[$(S.$slots,"doc-before",{},void 0,!0)]),"doc-after":dl(()=>[$(S.$slots,"doc-after",{},void 0,!0)]),"doc-top":dl(()=>[$(S.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":dl(()=>[$(S.$slots,"doc-bottom",{},void 0,!0)]),"aside-top":dl(()=>[$(S.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":dl(()=>[$(S.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":dl(()=>[$(S.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":dl(()=>[$(S.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":dl(()=>[$(S.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":dl(()=>[$(S.$slots,"aside-ads-after",{},void 0,!0)]),_:3}),Rl($F),$(S.$slots,"layout-bottom",{},void 0,!0)],2)):(K(),Jl(e,{key:1}))}}}),fc=el(Pc,[["__scopeId","data-v-d8b57b2d"]]),Ac={Layout:fc,enhanceApp:({app:T})=>{T.component("Badge",jd)}};var _c={976:(T,N,t)=>{t.d(N,{AnnotationLayer:()=>Xl,FreeTextAnnotationElement:()=>v,InkAnnotationElement:()=>Vl,StampAnnotationElement:()=>Sl});var U=t(292),n=t(419),m=t(792);function z(Wl){return Math.floor(Math.max(0,Math.min(1,Wl))*255).toString(16).padStart(2,"0")}function Y(Wl){return Math.max(0,Math.min(255,255*Wl))}class S{static CMYK_G([X,i,Z,Q]){return["G",1-Math.min(1,.3*X+.59*Z+.11*i+Q)]}static G_CMYK([X]){return["CMYK",0,0,0,1-X]}static G_RGB([X]){return["RGB",X,X,X]}static G_rgb([X]){return X=Y(X),[X,X,X]}static G_HTML([X]){const i=z(X);return`#${i}${i}${i}`}static RGB_G([X,i,Z]){return["G",.3*X+.59*i+.11*Z]}static RGB_rgb(X){return X.map(Y)}static RGB_HTML(X){return`#${X.map(z).join("")}`}static T_HTML(){return"#00000000"}static T_rgb(){return[null]}static CMYK_RGB([X,i,Z,Q]){return["RGB",1-Math.min(1,X+Q),1-Math.min(1,Z+Q),1-Math.min(1,i+Q)]}static CMYK_rgb([X,i,Z,Q]){return[Y(1-Math.min(1,X+Q)),Y(1-Math.min(1,Z+Q)),Y(1-Math.min(1,i+Q))]}static CMYK_HTML(X){const i=this.CMYK_RGB(X).slice(1);return this.RGB_HTML(i)}static RGB_CMYK([X,i,Z]){const Q=1-X,G=1-i,b=1-Z,V=Math.min(Q,G,b);return["CMYK",Q,G,b,V]}}var p=t(284);const e=1e3,F=9,R=new WeakSet;function W(Wl){return{width:Wl[2]-Wl[0],height:Wl[3]-Wl[1]}}class J{static create(X){switch(X.data.annotationType){case U.AnnotationType.LINK:return new a(X);case U.AnnotationType.TEXT:return new l(X);case U.AnnotationType.WIDGET:switch(X.data.fieldType){case"Tx":return new s(X);case"Btn":return X.data.radioButton?new u(X):X.data.checkBox?new o(X):new L(X);case"Ch":return new I(X);case"Sig":return new h(X)}return new c(X);case U.AnnotationType.POPUP:return new x(X);case U.AnnotationType.FREETEXT:return new v(X);case U.AnnotationType.LINE:return new Ul(X);case U.AnnotationType.SQUARE:return new Nl(X);case U.AnnotationType.CIRCLE:return new q(X);case U.AnnotationType.POLYLINE:return new r(X);case U.AnnotationType.CARET:return new ll(X);case U.AnnotationType.INK:return new Vl(X);case U.AnnotationType.POLYGON:return new P(X);case U.AnnotationType.HIGHLIGHT:return new cl(X);case U.AnnotationType.UNDERLINE:return new hl(X);case U.AnnotationType.SQUIGGLY:return new Gl(X);case U.AnnotationType.STRIKEOUT:return new ul(X);case U.AnnotationType.STAMP:return new Sl(X);case U.AnnotationType.FILEATTACHMENT:return new ml(X);default:return new d(X)}}}class d{#l=null;#U=!1;constructor(X,{isRenderable:i=!1,ignoreBorder:Z=!1,createQuadrilaterals:Q=!1}={}){this.isRenderable=i,this.data=X.data,this.layer=X.layer,this.linkService=X.linkService,this.downloadManager=X.downloadManager,this.imageResourcesPath=X.imageResourcesPath,this.renderForms=X.renderForms,this.svgFactory=X.svgFactory,this.annotationStorage=X.annotationStorage,this.enableScripting=X.enableScripting,this.hasJSActions=X.hasJSActions,this._fieldObjects=X.fieldObjects,this.parent=X.parent,i&&(this.container=this._createContainer(Z)),Q&&this._createQuadrilaterals()}static _hasPopupData({titleObj:X,contentsObj:i,richText:Z}){return!!(X?.str||i?.str||Z?.str)}get hasPopupData(){return d._hasPopupData(this.data)}updateEdited(X){if(!this.container)return;this.#l||={rect:this.data.rect.slice(0)};const{rect:i}=X;i&&this.#d(i)}resetEdited(){this.#l&&(this.#d(this.#l.rect),this.#l=null)}#d(X){const{container:{style:i},data:{rect:Z,rotation:Q},parent:{viewport:{rawDims:{pageWidth:G,pageHeight:b,pageX:V,pageY:M}}}}=this;Z?.splice(0,4,...X);const{width:B,height:y}=W(X);i.left=`${100*(X[0]-V)/G}%`,i.top=`${100*(b-X[3]+M)/b}%`,Q===0?(i.width=`${100*B/G}%`,i.height=`${100*y/b}%`):this.setRotation(Q)}_createContainer(X){const{data:i,parent:{page:Z,viewport:Q}}=this,G=document.createElement("section");G.setAttribute("data-annotation-id",i.id),this instanceof c||(G.tabIndex=e);const{style:b}=G;if(b.zIndex=this.parent.zIndex++,i.popupRef&&G.setAttribute("aria-haspopup","dialog"),i.alternativeText&&(G.title=i.alternativeText),i.noRotate&&G.classList.add("norotate"),!i.rect||this instanceof x){const{rotation:C}=i;return!i.hasOwnCanvas&&C!==0&&this.setRotation(C,G),G}const{width:V,height:M}=W(i.rect);if(!X&&i.borderStyle.width>0){b.borderWidth=`${i.borderStyle.width}px`;const C=i.borderStyle.horizontalCornerRadius,k=i.borderStyle.verticalCornerRadius;if(C>0||k>0){const Fl=`calc(${C}px * var(--scale-factor)) / calc(${k}px * var(--scale-factor))`;b.borderRadius=Fl}else if(this instanceof u){const Fl=`calc(${V}px * var(--scale-factor)) / calc(${M}px * var(--scale-factor))`;b.borderRadius=Fl}switch(i.borderStyle.style){case U.AnnotationBorderStyleType.SOLID:b.borderStyle="solid";break;case U.AnnotationBorderStyleType.DASHED:b.borderStyle="dashed";break;case U.AnnotationBorderStyleType.BEVELED:(0,U.warn)("Unimplemented border style: beveled");break;case U.AnnotationBorderStyleType.INSET:(0,U.warn)("Unimplemented border style: inset");break;case U.AnnotationBorderStyleType.UNDERLINE:b.borderBottomStyle="solid";break}const f=i.borderColor||null;f?(this.#U=!0,b.borderColor=U.Util.makeHexColor(f[0]|0,f[1]|0,f[2]|0)):b.borderWidth=0}const B=U.Util.normalizeRect([i.rect[0],Z.view[3]-i.rect[1]+Z.view[1],i.rect[2],Z.view[3]-i.rect[3]+Z.view[1]]),{pageWidth:y,pageHeight:D,pageX:E,pageY:j}=Q.rawDims;b.left=`${100*(B[0]-E)/y}%`,b.top=`${100*(B[1]-j)/D}%`;const{rotation:w}=i;return i.hasOwnCanvas||w===0?(b.width=`${100*V/y}%`,b.height=`${100*M/D}%`):this.setRotation(w,G),G}setRotation(X,i=this.container){if(!this.data.rect)return;const{pageWidth:Z,pageHeight:Q}=this.parent.viewport.rawDims,{width:G,height:b}=W(this.data.rect);let V,M;X%180===0?(V=100*G/Z,M=100*b/Q):(V=100*b/Z,M=100*G/Q),i.style.width=`${V}%`,i.style.height=`${M}%`,i.setAttribute("data-main-rotation",(360-X)%360)}get _commonActions(){const X=(i,Z,Q)=>{const G=Q.detail[i],b=G[0],V=G.slice(1);Q.target.style[Z]=S[`${b}_HTML`](V),this.annotationStorage.setValue(this.data.id,{[Z]:S[`${b}_rgb`](V)})};return(0,U.shadow)(this,"_commonActions",{display:i=>{const{display:Z}=i.detail,Q=Z%2===1;this.container.style.visibility=Q?"hidden":"visible",this.annotationStorage.setValue(this.data.id,{noView:Q,noPrint:Z===1||Z===2})},print:i=>{this.annotationStorage.setValue(this.data.id,{noPrint:!i.detail.print})},hidden:i=>{const{hidden:Z}=i.detail;this.container.style.visibility=Z?"hidden":"visible",this.annotationStorage.setValue(this.data.id,{noPrint:Z,noView:Z})},focus:i=>{setTimeout(()=>i.target.focus({preventScroll:!1}),0)},userName:i=>{i.target.title=i.detail.userName},readonly:i=>{i.target.disabled=i.detail.readonly},required:i=>{this._setRequired(i.target,i.detail.required)},bgColor:i=>{X("bgColor","backgroundColor",i)},fillColor:i=>{X("fillColor","backgroundColor",i)},fgColor:i=>{X("fgColor","color",i)},textColor:i=>{X("textColor","color",i)},borderColor:i=>{X("borderColor","borderColor",i)},strokeColor:i=>{X("strokeColor","borderColor",i)},rotation:i=>{const Z=i.detail.rotation;this.setRotation(Z),this.annotationStorage.setValue(this.data.id,{rotation:Z})}})}_dispatchEventFromSandbox(X,i){const Z=this._commonActions;for(const Q of Object.keys(i.detail))(X[Q]||Z[Q])?.(i)}_setDefaultPropertiesFromJS(X){if(!this.enableScripting)return;const i=this.annotationStorage.getRawValue(this.data.id);if(!i)return;const Z=this._commonActions;for(const[Q,G]of Object.entries(i)){const b=Z[Q];if(b){const V={detail:{[Q]:G},target:X};b(V),delete i[Q]}}}_createQuadrilaterals(){if(!this.container)return;const{quadPoints:X}=this.data;if(!X)return;const[i,Z,Q,G]=this.data.rect;if(X.length===1){const[,{x:C,y:k},{x:f,y:Fl}]=X[0];if(Q===C&&G===k&&i===f&&Z===Fl)return}const{style:b}=this.container;let V;if(this.#U){const{borderColor:C,borderWidth:k}=b;b.borderWidth=0,V=["url('data:image/svg+xml;utf8,",'',``],this.container.classList.add("hasBorder")}const M=Q-i,B=G-Z,{svgFactory:y}=this,D=y.createElement("svg");D.classList.add("quadrilateralsContainer"),D.setAttribute("width",0),D.setAttribute("height",0);const E=y.createElement("defs");D.append(E);const j=y.createElement("clipPath"),w=`clippath_${this.data.id}`;j.setAttribute("id",w),j.setAttribute("clipPathUnits","objectBoundingBox"),E.append(j);for(const[,{x:C,y:k},{x:f,y:Fl}]of X){const _=y.createElement("rect"),Zl=(f-i)/M,sl=(G-k)/B,Ql=(C-f)/M,tl=(k-Fl)/B;_.setAttribute("x",Zl),_.setAttribute("y",sl),_.setAttribute("width",Ql),_.setAttribute("height",tl),j.append(_),V?.push(``)}this.#U&&(V.push("')"),b.backgroundImage=V.join("")),this.container.append(D),this.container.style.clipPath=`url(#${w})`}_createPopup(){const{container:X,data:i}=this;X.setAttribute("aria-haspopup","dialog");const Z=new x({data:{color:i.color,titleObj:i.titleObj,modificationDate:i.modificationDate,contentsObj:i.contentsObj,richText:i.richText,parentRect:i.rect,borderStyle:0,id:`popup_${i.id}`,rotation:i.rotation},parent:this.parent,elements:[this]});this.parent.div.append(Z.render())}render(){(0,U.unreachable)("Abstract method `AnnotationElement.render` called")}_getElementsByName(X,i=null){const Z=[];if(this._fieldObjects){const Q=this._fieldObjects[X];if(Q)for(const{page:G,id:b,exportValues:V}of Q){if(G===-1||b===i)continue;const M=typeof V=="string"?V:null,B=document.querySelector(`[data-element-id="${b}"]`);if(B&&!R.has(B)){(0,U.warn)(`_getElementsByName - element not allowed: ${b}`);continue}Z.push({id:b,exportValue:M,domElement:B})}return Z}for(const Q of document.getElementsByName(X)){const{exportValue:G}=Q,b=Q.getAttribute("data-element-id");b!==i&&R.has(Q)&&Z.push({id:b,exportValue:G,domElement:Q})}return Z}show(){this.container&&(this.container.hidden=!1),this.popup?.maybeShow()}hide(){this.container&&(this.container.hidden=!0),this.popup?.forceHide()}getElementsToTriggerPopup(){return this.container}addHighlightArea(){const X=this.getElementsToTriggerPopup();if(Array.isArray(X))for(const i of X)i.classList.add("highlightArea");else X.classList.add("highlightArea")}get _isEditable(){return!1}_editOnDoubleClick(){if(!this._isEditable)return;const{annotationEditorType:X,data:{id:i}}=this;this.container.addEventListener("dblclick",()=>{this.linkService.eventBus?.dispatch("switchannotationeditormode",{source:this,mode:X,editId:i})})}}class a extends d{constructor(X,i=null){super(X,{isRenderable:!0,ignoreBorder:!!i?.ignoreBorder,createQuadrilaterals:!0}),this.isTooltipOnly=X.data.isTooltipOnly}render(){const{data:X,linkService:i}=this,Z=document.createElement("a");Z.setAttribute("data-element-id",X.id);let Q=!1;return X.url?(i.addLinkAttributes(Z,X.url,X.newWindow),Q=!0):X.action?(this._bindNamedAction(Z,X.action),Q=!0):X.attachment?(this.#U(Z,X.attachment,X.attachmentDest),Q=!0):X.setOCGState?(this.#d(Z,X.setOCGState),Q=!0):X.dest?(this._bindLink(Z,X.dest),Q=!0):(X.actions&&(X.actions.Action||X.actions["Mouse Up"]||X.actions["Mouse Down"])&&this.enableScripting&&this.hasJSActions&&(this._bindJSAction(Z,X),Q=!0),X.resetForm?(this._bindResetFormAction(Z,X.resetForm),Q=!0):this.isTooltipOnly&&!Q&&(this._bindLink(Z,""),Q=!0)),this.container.classList.add("linkAnnotation"),Q&&this.container.append(Z),this.container}#l(){this.container.setAttribute("data-internal-link","")}_bindLink(X,i){X.href=this.linkService.getDestinationHash(i),X.onclick=()=>(i&&this.linkService.goToDestination(i),!1),(i||i==="")&&this.#l()}_bindNamedAction(X,i){X.href=this.linkService.getAnchorUrl(""),X.onclick=()=>(this.linkService.executeNamedAction(i),!1),this.#l()}#U(X,i,Z=null){X.href=this.linkService.getAnchorUrl(""),X.onclick=()=>(this.downloadManager?.openOrDownloadData(i.content,i.filename,Z),!1),this.#l()}#d(X,i){X.href=this.linkService.getAnchorUrl(""),X.onclick=()=>(this.linkService.executeSetOCGState(i),!1),this.#l()}_bindJSAction(X,i){X.href=this.linkService.getAnchorUrl("");const Z=new Map([["Action","onclick"],["Mouse Up","onmouseup"],["Mouse Down","onmousedown"]]);for(const Q of Object.keys(i.actions)){const G=Z.get(Q);G&&(X[G]=()=>(this.linkService.eventBus?.dispatch("dispatcheventinsandbox",{source:this,detail:{id:i.id,name:Q}}),!1))}X.onclick||(X.onclick=()=>!1),this.#l()}_bindResetFormAction(X,i){const Z=X.onclick;if(Z||(X.href=this.linkService.getAnchorUrl("")),this.#l(),!this._fieldObjects){(0,U.warn)('_bindResetFormAction - "resetForm" action not supported, ensure that the `fieldObjects` parameter is provided.'),Z||(X.onclick=()=>!1);return}X.onclick=()=>{Z?.();const{fields:Q,refs:G,include:b}=i,V=[];if(Q.length!==0||G.length!==0){const y=new Set(G);for(const D of Q){const E=this._fieldObjects[D]||[];for(const{id:j}of E)y.add(j)}for(const D of Object.values(this._fieldObjects))for(const E of D)y.has(E.id)===b&&V.push(E)}else for(const y of Object.values(this._fieldObjects))V.push(...y);const M=this.annotationStorage,B=[];for(const y of V){const{id:D}=y;switch(B.push(D),y.type){case"text":{const j=y.defaultValue||"";M.setValue(D,{value:j});break}case"checkbox":case"radiobutton":{const j=y.defaultValue===y.exportValues;M.setValue(D,{value:j});break}case"combobox":case"listbox":{const j=y.defaultValue||"";M.setValue(D,{value:j});break}default:continue}const E=document.querySelector(`[data-element-id="${D}"]`);if(E){if(!R.has(E)){(0,U.warn)(`_bindResetFormAction - element not allowed: ${D}`);continue}}else continue;E.dispatchEvent(new Event("resetform"))}return this.enableScripting&&this.linkService.eventBus?.dispatch("dispatcheventinsandbox",{source:this,detail:{id:"app",ids:B,name:"ResetForm"}}),!1}}}class l extends d{constructor(X){super(X,{isRenderable:!0})}render(){this.container.classList.add("textAnnotation");const X=document.createElement("img");return X.src=this.imageResourcesPath+"annotation-"+this.data.name.toLowerCase()+".svg",X.setAttribute("data-l10n-id","pdfjs-text-annotation-type"),X.setAttribute("data-l10n-args",JSON.stringify({type:this.data.name})),!this.data.popupRef&&this.hasPopupData&&this._createPopup(),this.container.append(X),this.container}}class c extends d{render(){return this.container}showElementAndHideCanvas(X){this.data.hasOwnCanvas&&(X.previousSibling?.nodeName==="CANVAS"&&(X.previousSibling.hidden=!0),X.hidden=!1)}_getKeyModifier(X){return U.FeatureTest.platform.isMac?X.metaKey:X.ctrlKey}_setEventListener(X,i,Z,Q,G){Z.includes("mouse")?X.addEventListener(Z,b=>{this.linkService.eventBus?.dispatch("dispatcheventinsandbox",{source:this,detail:{id:this.data.id,name:Q,value:G(b),shift:b.shiftKey,modifier:this._getKeyModifier(b)}})}):X.addEventListener(Z,b=>{if(Z==="blur"){if(!i.focused||!b.relatedTarget)return;i.focused=!1}else if(Z==="focus"){if(i.focused)return;i.focused=!0}G&&this.linkService.eventBus?.dispatch("dispatcheventinsandbox",{source:this,detail:{id:this.data.id,name:Q,value:G(b)}})})}_setEventListeners(X,i,Z,Q){for(const[G,b]of Z)(b==="Action"||this.data.actions?.[b])&&((b==="Focus"||b==="Blur")&&(i||={focused:!1}),this._setEventListener(X,i,G,b,Q),b==="Focus"&&!this.data.actions?.Blur?this._setEventListener(X,i,"blur","Blur",null):b==="Blur"&&!this.data.actions?.Focus&&this._setEventListener(X,i,"focus","Focus",null))}_setBackgroundColor(X){const i=this.data.backgroundColor||null;X.style.backgroundColor=i===null?"transparent":U.Util.makeHexColor(i[0],i[1],i[2])}_setTextStyle(X){const i=["left","center","right"],{fontColor:Z}=this.data.defaultAppearanceData,Q=this.data.defaultAppearanceData.fontSize||F,G=X.style;let b;const V=2,M=B=>Math.round(10*B)/10;if(this.data.multiLine){const B=Math.abs(this.data.rect[3]-this.data.rect[1]-V),y=Math.round(B/(U.LINE_FACTOR*Q))||1,D=B/y;b=Math.min(Q,M(D/U.LINE_FACTOR))}else{const B=Math.abs(this.data.rect[3]-this.data.rect[1]-V);b=Math.min(Q,M(B/U.LINE_FACTOR))}G.fontSize=`calc(${b}px * var(--scale-factor))`,G.color=U.Util.makeHexColor(Z[0],Z[1],Z[2]),this.data.textAlignment!==null&&(G.textAlign=i[this.data.textAlignment])}_setRequired(X,i){i?X.setAttribute("required",!0):X.removeAttribute("required"),X.setAttribute("aria-required",i)}}class s extends c{constructor(X){const i=X.renderForms||X.data.hasOwnCanvas||!X.data.hasAppearance&&!!X.data.fieldValue;super(X,{isRenderable:i})}setPropertyOnSiblings(X,i,Z,Q){const G=this.annotationStorage;for(const b of this._getElementsByName(X.name,X.id))b.domElement&&(b.domElement[i]=Z),G.setValue(b.id,{[Q]:Z})}render(){const X=this.annotationStorage,i=this.data.id;this.container.classList.add("textWidgetAnnotation");let Z=null;if(this.renderForms){const Q=X.getValue(i,{value:this.data.fieldValue});let G=Q.value||"";const b=X.getValue(i,{charLimit:this.data.maxLen}).charLimit;b&&G.length>b&&(G=G.slice(0,b));let V=Q.formattedValue||this.data.textContent?.join(` +`)||null;V&&this.data.comb&&(V=V.replaceAll(/\s+/g,""));const M={userValue:G,formattedValue:V,lastCommittedValue:null,commitKey:1,focused:!1};this.data.multiLine?(Z=document.createElement("textarea"),Z.textContent=V??G,this.data.doNotScroll&&(Z.style.overflowY="hidden")):(Z=document.createElement("input"),Z.type="text",Z.setAttribute("value",V??G),this.data.doNotScroll&&(Z.style.overflowX="hidden")),this.data.hasOwnCanvas&&(Z.hidden=!0),R.add(Z),Z.setAttribute("data-element-id",i),Z.disabled=this.data.readOnly,Z.name=this.data.fieldName,Z.tabIndex=e,this._setRequired(Z,this.data.required),b&&(Z.maxLength=b),Z.addEventListener("input",y=>{X.setValue(i,{value:y.target.value}),this.setPropertyOnSiblings(Z,"value",y.target.value,"value"),M.formattedValue=null}),Z.addEventListener("resetform",y=>{const D=this.data.defaultFieldValue??"";Z.value=M.userValue=D,M.formattedValue=null});let B=y=>{const{formattedValue:D}=M;D!=null&&(y.target.value=D),y.target.scrollLeft=0};if(this.enableScripting&&this.hasJSActions){Z.addEventListener("focus",D=>{if(M.focused)return;const{target:E}=D;M.userValue&&(E.value=M.userValue),M.lastCommittedValue=E.value,M.commitKey=1,this.data.actions?.Focus||(M.focused=!0)}),Z.addEventListener("updatefromsandbox",D=>{this.showElementAndHideCanvas(D.target);const E={value(j){M.userValue=j.detail.value??"",X.setValue(i,{value:M.userValue.toString()}),j.target.value=M.userValue},formattedValue(j){const{formattedValue:w}=j.detail;M.formattedValue=w,w!=null&&j.target!==document.activeElement&&(j.target.value=w),X.setValue(i,{formattedValue:w})},selRange(j){j.target.setSelectionRange(...j.detail.selRange)},charLimit:j=>{const{charLimit:w}=j.detail,{target:C}=j;if(w===0){C.removeAttribute("maxLength");return}C.setAttribute("maxLength",w);let k=M.userValue;!k||k.length<=w||(k=k.slice(0,w),C.value=M.userValue=k,X.setValue(i,{value:k}),this.linkService.eventBus?.dispatch("dispatcheventinsandbox",{source:this,detail:{id:i,name:"Keystroke",value:k,willCommit:!0,commitKey:1,selStart:C.selectionStart,selEnd:C.selectionEnd}}))}};this._dispatchEventFromSandbox(E,D)}),Z.addEventListener("keydown",D=>{M.commitKey=1;let E=-1;if(D.key==="Escape"?E=0:D.key==="Enter"&&!this.data.multiLine?E=2:D.key==="Tab"&&(M.commitKey=3),E===-1)return;const{value:j}=D.target;M.lastCommittedValue!==j&&(M.lastCommittedValue=j,M.userValue=j,this.linkService.eventBus?.dispatch("dispatcheventinsandbox",{source:this,detail:{id:i,name:"Keystroke",value:j,willCommit:!0,commitKey:E,selStart:D.target.selectionStart,selEnd:D.target.selectionEnd}}))});const y=B;B=null,Z.addEventListener("blur",D=>{if(!M.focused||!D.relatedTarget)return;this.data.actions?.Blur||(M.focused=!1);const{value:E}=D.target;M.userValue=E,M.lastCommittedValue!==E&&this.linkService.eventBus?.dispatch("dispatcheventinsandbox",{source:this,detail:{id:i,name:"Keystroke",value:E,willCommit:!0,commitKey:M.commitKey,selStart:D.target.selectionStart,selEnd:D.target.selectionEnd}}),y(D)}),this.data.actions?.Keystroke&&Z.addEventListener("beforeinput",D=>{M.lastCommittedValue=null;const{data:E,target:j}=D,{value:w,selectionStart:C,selectionEnd:k}=j;let f=C,Fl=k;switch(D.inputType){case"deleteWordBackward":{const _=w.substring(0,C).match(/\w*[^\w]*$/);_&&(f-=_[0].length);break}case"deleteWordForward":{const _=w.substring(C).match(/^[^\w]*\w*/);_&&(Fl+=_[0].length);break}case"deleteContentBackward":C===k&&(f-=1);break;case"deleteContentForward":C===k&&(Fl+=1);break}D.preventDefault(),this.linkService.eventBus?.dispatch("dispatcheventinsandbox",{source:this,detail:{id:i,name:"Keystroke",value:w,change:E||"",willCommit:!1,selStart:f,selEnd:Fl}})}),this._setEventListeners(Z,M,[["focus","Focus"],["blur","Blur"],["mousedown","Mouse Down"],["mouseenter","Mouse Enter"],["mouseleave","Mouse Exit"],["mouseup","Mouse Up"]],D=>D.target.value)}if(B&&Z.addEventListener("blur",B),this.data.comb){const D=(this.data.rect[2]-this.data.rect[0])/b;Z.classList.add("comb"),Z.style.letterSpacing=`calc(${D}px * var(--scale-factor) - 1ch)`}}else Z=document.createElement("div"),Z.textContent=this.data.fieldValue,Z.style.verticalAlign="middle",Z.style.display="table-cell",this.data.hasOwnCanvas&&(Z.hidden=!0);return this._setTextStyle(Z),this._setBackgroundColor(Z),this._setDefaultPropertiesFromJS(Z),this.container.append(Z),this.container}}class h extends c{constructor(X){super(X,{isRenderable:!!X.data.hasOwnCanvas})}}class o extends c{constructor(X){super(X,{isRenderable:X.renderForms})}render(){const X=this.annotationStorage,i=this.data,Z=i.id;let Q=X.getValue(Z,{value:i.exportValue===i.fieldValue}).value;typeof Q=="string"&&(Q=Q!=="Off",X.setValue(Z,{value:Q})),this.container.classList.add("buttonWidgetAnnotation","checkBox");const G=document.createElement("input");return R.add(G),G.setAttribute("data-element-id",Z),G.disabled=i.readOnly,this._setRequired(G,this.data.required),G.type="checkbox",G.name=i.fieldName,Q&&G.setAttribute("checked",!0),G.setAttribute("exportValue",i.exportValue),G.tabIndex=e,G.addEventListener("change",b=>{const{name:V,checked:M}=b.target;for(const B of this._getElementsByName(V,Z)){const y=M&&B.exportValue===i.exportValue;B.domElement&&(B.domElement.checked=y),X.setValue(B.id,{value:y})}X.setValue(Z,{value:M})}),G.addEventListener("resetform",b=>{const V=i.defaultFieldValue||"Off";b.target.checked=V===i.exportValue}),this.enableScripting&&this.hasJSActions&&(G.addEventListener("updatefromsandbox",b=>{const V={value(M){M.target.checked=M.detail.value!=="Off",X.setValue(Z,{value:M.target.checked})}};this._dispatchEventFromSandbox(V,b)}),this._setEventListeners(G,null,[["change","Validate"],["change","Action"],["focus","Focus"],["blur","Blur"],["mousedown","Mouse Down"],["mouseenter","Mouse Enter"],["mouseleave","Mouse Exit"],["mouseup","Mouse Up"]],b=>b.target.checked)),this._setBackgroundColor(G),this._setDefaultPropertiesFromJS(G),this.container.append(G),this.container}}class u extends c{constructor(X){super(X,{isRenderable:X.renderForms})}render(){this.container.classList.add("buttonWidgetAnnotation","radioButton");const X=this.annotationStorage,i=this.data,Z=i.id;let Q=X.getValue(Z,{value:i.fieldValue===i.buttonValue}).value;if(typeof Q=="string"&&(Q=Q!==i.buttonValue,X.setValue(Z,{value:Q})),Q)for(const b of this._getElementsByName(i.fieldName,Z))X.setValue(b.id,{value:!1});const G=document.createElement("input");if(R.add(G),G.setAttribute("data-element-id",Z),G.disabled=i.readOnly,this._setRequired(G,this.data.required),G.type="radio",G.name=i.fieldName,Q&&G.setAttribute("checked",!0),G.tabIndex=e,G.addEventListener("change",b=>{const{name:V,checked:M}=b.target;for(const B of this._getElementsByName(V,Z))X.setValue(B.id,{value:!1});X.setValue(Z,{value:M})}),G.addEventListener("resetform",b=>{const V=i.defaultFieldValue;b.target.checked=V!=null&&V===i.buttonValue}),this.enableScripting&&this.hasJSActions){const b=i.buttonValue;G.addEventListener("updatefromsandbox",V=>{const M={value:B=>{const y=b===B.detail.value;for(const D of this._getElementsByName(B.target.name)){const E=y&&D.id===Z;D.domElement&&(D.domElement.checked=E),X.setValue(D.id,{value:E})}}};this._dispatchEventFromSandbox(M,V)}),this._setEventListeners(G,null,[["change","Validate"],["change","Action"],["focus","Focus"],["blur","Blur"],["mousedown","Mouse Down"],["mouseenter","Mouse Enter"],["mouseleave","Mouse Exit"],["mouseup","Mouse Up"]],V=>V.target.checked)}return this._setBackgroundColor(G),this._setDefaultPropertiesFromJS(G),this.container.append(G),this.container}}class L extends a{constructor(X){super(X,{ignoreBorder:X.data.hasAppearance})}render(){const X=super.render();X.classList.add("buttonWidgetAnnotation","pushButton");const i=X.lastChild;return this.enableScripting&&this.hasJSActions&&i&&(this._setDefaultPropertiesFromJS(i),i.addEventListener("updatefromsandbox",Z=>{this._dispatchEventFromSandbox({},Z)})),X}}class I extends c{constructor(X){super(X,{isRenderable:X.renderForms})}render(){this.container.classList.add("choiceWidgetAnnotation");const X=this.annotationStorage,i=this.data.id,Z=X.getValue(i,{value:this.data.fieldValue}),Q=document.createElement("select");R.add(Q),Q.setAttribute("data-element-id",i),Q.disabled=this.data.readOnly,this._setRequired(Q,this.data.required),Q.name=this.data.fieldName,Q.tabIndex=e;let G=this.data.combo&&this.data.options.length>0;this.data.combo||(Q.size=this.data.options.length,this.data.multiSelect&&(Q.multiple=!0)),Q.addEventListener("resetform",y=>{const D=this.data.defaultFieldValue;for(const E of Q.options)E.selected=E.value===D});for(const y of this.data.options){const D=document.createElement("option");D.textContent=y.displayValue,D.value=y.exportValue,Z.value.includes(y.exportValue)&&(D.setAttribute("selected",!0),G=!1),Q.append(D)}let b=null;if(G){const y=document.createElement("option");y.value=" ",y.setAttribute("hidden",!0),y.setAttribute("selected",!0),Q.prepend(y),b=()=>{y.remove(),Q.removeEventListener("input",b),b=null},Q.addEventListener("input",b)}const V=y=>{const D=y?"value":"textContent",{options:E,multiple:j}=Q;return j?Array.prototype.filter.call(E,w=>w.selected).map(w=>w[D]):E.selectedIndex===-1?null:E[E.selectedIndex][D]};let M=V(!1);const B=y=>{const D=y.target.options;return Array.prototype.map.call(D,E=>({displayValue:E.textContent,exportValue:E.value}))};return this.enableScripting&&this.hasJSActions?(Q.addEventListener("updatefromsandbox",y=>{const D={value(E){b?.();const j=E.detail.value,w=new Set(Array.isArray(j)?j:[j]);for(const C of Q.options)C.selected=w.has(C.value);X.setValue(i,{value:V(!0)}),M=V(!1)},multipleSelection(E){Q.multiple=!0},remove(E){const j=Q.options,w=E.detail.remove;j[w].selected=!1,Q.remove(w),j.length>0&&Array.prototype.findIndex.call(j,k=>k.selected)===-1&&(j[0].selected=!0),X.setValue(i,{value:V(!0),items:B(E)}),M=V(!1)},clear(E){for(;Q.length!==0;)Q.remove(0);X.setValue(i,{value:null,items:[]}),M=V(!1)},insert(E){const{index:j,displayValue:w,exportValue:C}=E.detail.insert,k=Q.children[j],f=document.createElement("option");f.textContent=w,f.value=C,k?k.before(f):Q.append(f),X.setValue(i,{value:V(!0),items:B(E)}),M=V(!1)},items(E){const{items:j}=E.detail;for(;Q.length!==0;)Q.remove(0);for(const w of j){const{displayValue:C,exportValue:k}=w,f=document.createElement("option");f.textContent=C,f.value=k,Q.append(f)}Q.options.length>0&&(Q.options[0].selected=!0),X.setValue(i,{value:V(!0),items:B(E)}),M=V(!1)},indices(E){const j=new Set(E.detail.indices);for(const w of E.target.options)w.selected=j.has(w.index);X.setValue(i,{value:V(!0)}),M=V(!1)},editable(E){E.target.disabled=!E.detail.editable}};this._dispatchEventFromSandbox(D,y)}),Q.addEventListener("input",y=>{const D=V(!0),E=V(!1);X.setValue(i,{value:D}),y.preventDefault(),this.linkService.eventBus?.dispatch("dispatcheventinsandbox",{source:this,detail:{id:i,name:"Keystroke",value:M,change:E,changeEx:D,willCommit:!1,commitKey:1,keyDown:!1}})}),this._setEventListeners(Q,null,[["focus","Focus"],["blur","Blur"],["mousedown","Mouse Down"],["mouseenter","Mouse Enter"],["mouseleave","Mouse Exit"],["mouseup","Mouse Up"],["input","Action"],["input","Validate"]],y=>y.target.value)):Q.addEventListener("input",function(y){X.setValue(i,{value:V(!0)})}),this.data.combo&&this._setTextStyle(Q),this._setBackgroundColor(Q),this._setDefaultPropertiesFromJS(Q),this.container.append(Q),this.container}}class x extends d{constructor(X){const{data:i,elements:Z}=X;super(X,{isRenderable:d._hasPopupData(i)}),this.elements=Z}render(){this.container.classList.add("popupAnnotation");const X=new O({container:this.container,color:this.data.color,titleObj:this.data.titleObj,modificationDate:this.data.modificationDate,contentsObj:this.data.contentsObj,richText:this.data.richText,rect:this.data.rect,parentRect:this.data.parentRect||null,parent:this.parent,elements:this.elements,open:this.data.open}),i=[];for(const Z of this.elements)Z.popup=X,i.push(Z.data.id),Z.addHighlightArea();return this.container.setAttribute("aria-controls",i.map(Z=>`${U.AnnotationPrefix}${Z}`).join(",")),this.container}}class O{#l=this.#i.bind(this);#U=this.#Y.bind(this);#d=this.#J.bind(this);#F=this.#M.bind(this);#t=null;#Z=null;#c=null;#W=null;#V=null;#N=null;#n=null;#R=!1;#Q=null;#a=null;#b=null;#s=null;#m=!1;constructor({container:X,color:i,elements:Z,titleObj:Q,modificationDate:G,contentsObj:b,richText:V,parent:M,rect:B,parentRect:y,open:D}){this.#Z=X,this.#s=Q,this.#c=b,this.#b=V,this.#N=M,this.#t=i,this.#a=B,this.#n=y,this.#V=Z,this.#W=n.PDFDateString.toDateObject(G),this.trigger=Z.flatMap(E=>E.getElementsToTriggerPopup());for(const E of this.trigger)E.addEventListener("click",this.#F),E.addEventListener("mouseenter",this.#d),E.addEventListener("mouseleave",this.#U),E.classList.add("popupTriggerArea");for(const E of Z)E.container?.addEventListener("keydown",this.#l);this.#Z.hidden=!0,D&&this.#M()}render(){if(this.#Q)return;const{page:{view:X},viewport:{rawDims:{pageWidth:i,pageHeight:Z,pageX:Q,pageY:G}}}=this.#N,b=this.#Q=document.createElement("div");if(b.className="popup",this.#t){const _=b.style.outlineColor=U.Util.makeHexColor(...this.#t);CSS.supports("background-color","color-mix(in srgb, red 30%, white)")?b.style.backgroundColor=`color-mix(in srgb, ${_} 30%, white)`:b.style.backgroundColor=U.Util.makeHexColor(...this.#t.map(sl=>Math.floor(.7*(255-sl)+sl)))}const V=document.createElement("span");V.className="header";const M=document.createElement("h1");if(V.append(M),{dir:M.dir,str:M.textContent}=this.#s,b.append(V),this.#W){const _=document.createElement("span");_.classList.add("popupDate"),_.setAttribute("data-l10n-id","pdfjs-annotation-date-string"),_.setAttribute("data-l10n-args",JSON.stringify({date:this.#W.toLocaleDateString(),time:this.#W.toLocaleTimeString()})),V.append(_)}const B=this.#c,y=this.#b;if(y?.str&&(!B?.str||B.str===y.str))p.XfaLayer.render({xfaHtml:y.html,intent:"richText",div:b}),b.lastChild.classList.add("richText","popupContent");else{const _=this._formatContents(B);b.append(_)}let D=!!this.#n,E=D?this.#n:this.#a;for(const _ of this.#V)if(!E||U.Util.intersect(_.data.rect,E)!==null){E=_.data.rect,D=!0;break}const j=U.Util.normalizeRect([E[0],X[3]-E[1]+X[1],E[2],X[3]-E[3]+X[1]]),C=D?E[2]-E[0]+5:0,k=j[0]+C,f=j[1],{style:Fl}=this.#Z;Fl.left=`${100*(k-Q)/i}%`,Fl.top=`${100*(f-G)/Z}%`,this.#Z.append(b)}_formatContents({str:X,dir:i}){const Z=document.createElement("p");Z.classList.add("popupContent"),Z.dir=i;const Q=X.split(/(?:\r\n?|\n)/);for(let G=0,b=Q.length;G{G.key==="Enter"&&(Q?G.metaKey:G.ctrlKey)&&this.#U()}),!i.popupRef&&this.hasPopupData?this._createPopup():Z.classList.add("popupTriggerArea"),X.append(Z),X}getElementsToTriggerPopup(){return this.#l}addHighlightArea(){this.container.classList.add("highlightArea")}#U(){this.downloadManager?.openOrDownloadData(this.content,this.filename)}}class Xl{#l=null;#U=null;#d=new Map;constructor({div:X,accessibilityManager:i,annotationCanvasMap:Z,annotationEditorUIManager:Q,page:G,viewport:b}){this.div=X,this.#l=i,this.#U=Z,this.page=G,this.viewport=b,this.zIndex=0,this._annotationEditorUIManager=Q}#F(X,i){const Z=X.firstChild||X;Z.id=`${U.AnnotationPrefix}${i}`,this.div.append(X),this.#l?.moveElementInDOM(this.div,X,Z,!1)}async render(X){const{annotations:i}=X,Z=this.div;(0,n.setLayerDimensions)(Z,this.viewport);const Q=new Map,G={data:null,layer:Z,linkService:X.linkService,downloadManager:X.downloadManager,imageResourcesPath:X.imageResourcesPath||"",renderForms:X.renderForms!==!1,svgFactory:new n.DOMSVGFactory,annotationStorage:X.annotationStorage||new m.AnnotationStorage,enableScripting:X.enableScripting===!0,hasJSActions:X.hasJSActions,fieldObjects:X.fieldObjects,parent:this,elements:null};for(const b of i){if(b.noHTML)continue;const V=b.annotationType===U.AnnotationType.POPUP;if(V){const y=Q.get(b.id);if(!y)continue;G.elements=y}else{const{width:y,height:D}=W(b.rect);if(y<=0||D<=0)continue}G.data=b;const M=J.create(G);if(!M.isRenderable)continue;if(!V&&b.popupRef){const y=Q.get(b.popupRef);y?y.push(M):Q.set(b.popupRef,[M])}const B=M.render();b.hidden&&(B.style.visibility="hidden"),this.#F(B,b.id),M.annotationEditorType>0&&(this.#d.set(M.data.id,M),this._annotationEditorUIManager?.renderAnnotationElement(M))}this.#t()}update({viewport:X}){const i=this.div;this.viewport=X,(0,n.setLayerDimensions)(i,{rotation:X.rotation}),this.#t(),i.hidden=!1}#t(){if(!this.#U)return;const X=this.div;for(const[i,Z]of this.#U){const Q=X.querySelector(`[data-annotation-id="${i}"]`);if(!Q)continue;Z.className="annotationContent";const{firstChild:G}=Q;G?G.nodeName==="CANVAS"?G.replaceWith(Z):G.classList.contains("annotationContent")?G.after(Z):G.before(Z):Q.append(Z)}this.#U.clear()}getEditableAnnotations(){return Array.from(this.#d.values())}getEditableAnnotation(X){return this.#d.get(X)}}},792:(T,N,t)=>{t.d(N,{AnnotationStorage:()=>Y,PrintAnnotationStorage:()=>S,SerializableEmpty:()=>z});var U=t(292),n=t(310),m=t(651);const z=Object.freeze({map:null,hash:"",transfer:void 0});class Y{#l=!1;#U=new Map;constructor(){this.onSetModified=null,this.onResetModified=null,this.onAnnotationEditor=null}getValue(e,F){const R=this.#U.get(e);return R===void 0?F:Object.assign(F,R)}getRawValue(e){return this.#U.get(e)}remove(e){if(this.#U.delete(e),this.#U.size===0&&this.resetModified(),typeof this.onAnnotationEditor=="function"){for(const F of this.#U.values())if(F instanceof n.AnnotationEditor)return;this.onAnnotationEditor(null)}}setValue(e,F){const R=this.#U.get(e);let W=!1;if(R!==void 0)for(const[J,d]of Object.entries(F))R[J]!==d&&(W=!0,R[J]=d);else W=!0,this.#U.set(e,F);W&&this.#d(),F instanceof n.AnnotationEditor&&typeof this.onAnnotationEditor=="function"&&this.onAnnotationEditor(F.constructor._type)}has(e){return this.#U.has(e)}getAll(){return this.#U.size>0?(0,U.objectFromMap)(this.#U):null}setAll(e){for(const[F,R]of Object.entries(e))this.setValue(F,R)}get size(){return this.#U.size}#d(){this.#l||(this.#l=!0,typeof this.onSetModified=="function"&&this.onSetModified())}resetModified(){this.#l&&(this.#l=!1,typeof this.onResetModified=="function"&&this.onResetModified())}get print(){return new S(this)}get serializable(){if(this.#U.size===0)return z;const e=new Map,F=new m.MurmurHash3_64,R=[],W=Object.create(null);let J=!1;for(const[d,a]of this.#U){const l=a instanceof n.AnnotationEditor?a.serialize(!1,W):a;l&&(e.set(d,l),F.update(`${d}:${JSON.stringify(l)}`),J||=!!l.bitmap)}if(J)for(const d of e.values())d.bitmap&&R.push(d.bitmap);return e.size>0?{map:e,hash:F.hexdigest(),transfer:R}:z}get editorStats(){let e=null;const F=new Map;for(const R of this.#U.values()){if(!(R instanceof n.AnnotationEditor))continue;const W=R.telemetryFinalData;if(!W)continue;const{type:J}=W;F.has(J)||F.set(J,Object.getPrototypeOf(R).constructor),e||=Object.create(null);const d=e[J]||=new Map;for(const[a,l]of Object.entries(W)){if(a==="type")continue;let c=d.get(a);c||(c=new Map,d.set(a,c));const s=c.get(l)??0;c.set(l,s+1)}}for(const[R,W]of F)e[R]=W.computeTelemetryFinalData(e[R]);return e}}class S extends Y{#l;constructor(e){super();const{map:F,hash:R,transfer:W}=e.serializable,J=structuredClone(F,W?{transfer:W}:null);this.#l={map:J,hash:R,transfer:W}}get print(){(0,U.unreachable)("Should not call PrintAnnotationStorage.print")}get serializable(){return this.#l}}},831:(T,N,t)=>{t.a(T,async(U,n)=>{try{let Nl=function(b){if(typeof b=="string"||b instanceof URL?b={url:b}:(b instanceof ArrayBuffer||ArrayBuffer.isView(b))&&(b={data:b}),typeof b!="object")throw new Error("Invalid parameter in getDocument, need parameter object.");if(!b.url&&!b.data&&!b.range)throw new Error("Invalid parameter object: need either .data, .range or .url");const V=new Vl,{docId:M}=V,B=b.url?r(b.url):null,y=b.data?P(b.data):null,D=b.httpHeaders||null,E=b.withCredentials===!0,j=b.password??null,w=b.range instanceof cl?b.range:null,C=Number.isInteger(b.rangeChunkSize)&&b.rangeChunkSize>0?b.rangeChunkSize:u;let k=b.worker instanceof ml?b.worker:null;const f=b.verbosity,Fl=typeof b.docBaseUrl=="string"&&!(0,Y.isDataScheme)(b.docBaseUrl)?b.docBaseUrl:null,_=typeof b.cMapUrl=="string"?b.cMapUrl:null,Zl=b.cMapPacked!==!1,sl=b.CMapReaderFactory||O,Ql=typeof b.standardFontDataUrl=="string"?b.standardFontDataUrl:null,tl=b.StandardFontDataFactory||Ul,nl=b.stopAtErrors!==!0,Ml=Number.isInteger(b.maxImageSize)&&b.maxImageSize>-1?b.maxImageSize:-1,ol=b.isEvalSupported!==!1,Ll=typeof b.isOffscreenCanvasSupported=="boolean"?b.isOffscreenCanvasSupported:!m.isNodeJS,Dl=Number.isInteger(b.canvasMaxAreaInBytes)?b.canvasMaxAreaInBytes:-1,yl=typeof b.disableFontFace=="boolean"?b.disableFontFace:m.isNodeJS,ql=b.fontExtraProperties===!0,Kl=b.enableXfa===!0,Al=b.ownerDocument||globalThis.document,Cl=b.disableRange===!0,vl=b.disableStream===!0,UU=b.disableAutoFetch===!0,NU=b.pdfBug===!0,hU=w?w.length:b.length??NaN,XU=typeof b.useSystemFonts=="boolean"?b.useSystemFonts:!m.isNodeJS&&!yl,nU=typeof b.useWorkerFetch=="boolean"?b.useWorkerFetch:sl===Y.DOMCMapReaderFactory&&tl===Y.DOMStandardFontDataFactory&&_&&Ql&&(0,Y.isValidFetchUrl)(_,document.baseURI)&&(0,Y.isValidFetchUrl)(Ql,document.baseURI),Pl=b.canvasFactory||new x({ownerDocument:Al}),jl=b.filterFactory||new v({docId:M,ownerDocument:Al}),YU=null;(0,m.setVerbosityLevel)(f);const mU={canvasFactory:Pl,filterFactory:jl};if(nU||(mU.cMapReaderFactory=new sl({baseUrl:_,isCompressed:Zl}),mU.standardFontDataFactory=new tl({baseUrl:Ql})),!k){const MU={verbosity:f,port:R.GlobalWorkerOptions.workerPort};k=MU.port?ml.fromPort(MU):new ml(MU),V._worker=k}const sU={docId:M,apiVersion:"4.2.67",data:y,password:j,disableAutoFetch:UU,rangeChunkSize:C,length:hU,docBaseUrl:Fl,enableXfa:Kl,evaluatorOptions:{maxImageSize:Ml,disableFontFace:yl,ignoreErrors:nl,isEvalSupported:ol,isOffscreenCanvasSupported:Ll,canvasMaxAreaInBytes:Dl,fontExtraProperties:ql,useSystemFonts:XU,cMapUrl:nU?_:null,standardFontDataUrl:nU?Ql:null}},wl={ignoreErrors:nl,disableFontFace:yl,fontExtraProperties:ql,enableXfa:Kl,ownerDocument:Al,disableAutoFetch:UU,pdfBug:NU,styleElement:YU};return k.promise.then(function(){if(V.destroyed)throw new Error("Loading aborted");const MU=q(k,sU),Sd=new Promise(function(kU){let GU;w?GU=new a.PDFDataTransportStream(w,{disableRange:Cl,disableStream:vl}):y||(GU=(FU=>m.isNodeJS?function(){return typeof fetch<"u"&&typeof Response<"u"&&"body"in Response.prototype}()&&(0,Y.isValidFetchUrl)(FU.url)?new l.PDFFetchStream(FU):new s.PDFNodeStream(FU):(0,Y.isValidFetchUrl)(FU.url)?new l.PDFFetchStream(FU):new c.PDFNetworkStream(FU))({url:B,length:hU,httpHeaders:D,withCredentials:E,rangeChunkSize:C,disableRange:Cl,disableStream:vl})),kU(GU)});return Promise.all([MU,Sd]).then(function([kU,GU]){if(V.destroyed)throw new Error("Loading aborted");const DU=new W.MessageHandler(M,kU,k.port),FU=new Xl(DU,V,GU,wl,mU);V._transport=FU,DU.send("Ready",null)})}).catch(V._capability.reject),V},r=function(b){if(b instanceof URL)return b.href;try{return new URL(b,window.location).href}catch{if(m.isNodeJS&&typeof b=="string")return b}throw new Error("Invalid PDF url data: either string or URL-object is expected in the url property.")},P=function(b){if(m.isNodeJS&&typeof Buffer<"u"&&b instanceof Buffer)throw new Error("Please provide binary data as `Uint8Array`, rather than `Buffer`.");if(b instanceof Uint8Array&&b.byteLength===b.buffer.byteLength)return b;if(typeof b=="string")return(0,m.stringToBytes)(b);if(b instanceof ArrayBuffer||ArrayBuffer.isView(b)||typeof b=="object"&&!isNaN(b?.length))return new Uint8Array(b);throw new Error("Invalid PDF binary data: either TypedArray, string, or array-like object is expected in the data property.")},ll=function(b){return typeof b=="object"&&Number.isInteger(b?.num)&&b.num>=0&&Number.isInteger(b?.gen)&&b.gen>=0};t.d(N,{PDFDataRangeTransport:()=>cl,PDFWorker:()=>ml,build:()=>G,getDocument:()=>Nl,version:()=>Q});var m=t(292),z=t(792),Y=t(419),S=t(10),p=t(573),e=t(923),F=t(814),R=t(164),W=t(178),J=t(62),d=t(626),a=t(585),l=t(94),c=t(457),s=t(786),h=t(50),o=U([p,s]);[p,s]=o.then?(await o)():o;const u=65536,L=100,I=5e3,x=m.isNodeJS?p.NodeCanvasFactory:Y.DOMCanvasFactory,O=m.isNodeJS?p.NodeCMapReaderFactory:Y.DOMCMapReaderFactory,v=m.isNodeJS?p.NodeFilterFactory:Y.DOMFilterFactory,Ul=m.isNodeJS?p.NodeStandardFontDataFactory:Y.DOMStandardFontDataFactory;async function q(b,V){if(b.destroyed)throw new Error("Worker was destroyed");const M=await b.messageHandler.sendWithPromise("GetDocRequest",V,V.data?[V.data.buffer]:null);if(b.destroyed)throw new Error("Worker was destroyed");return M}class Vl{static#l=0;constructor(){this._capability=Promise.withResolvers(),this._transport=null,this._worker=null,this.docId=`d${Vl.#l++}`,this.destroyed=!1,this.onPassword=null,this.onProgress=null}get promise(){return this._capability.promise}async destroy(){this.destroyed=!0;try{this._worker?.port&&(this._worker._pendingDestroy=!0),await this._transport?.destroy()}catch(V){throw this._worker?.port&&delete this._worker._pendingDestroy,V}this._transport=null,this._worker&&(this._worker.destroy(),this._worker=null)}}class cl{constructor(V,M,B=!1,y=null){this.length=V,this.initialData=M,this.progressiveDone=B,this.contentDispositionFilename=y,this._rangeListeners=[],this._progressListeners=[],this._progressiveReadListeners=[],this._progressiveDoneListeners=[],this._readyCapability=Promise.withResolvers()}addRangeListener(V){this._rangeListeners.push(V)}addProgressListener(V){this._progressListeners.push(V)}addProgressiveReadListener(V){this._progressiveReadListeners.push(V)}addProgressiveDoneListener(V){this._progressiveDoneListeners.push(V)}onDataRange(V,M){for(const B of this._rangeListeners)B(V,M)}onDataProgress(V,M){this._readyCapability.promise.then(()=>{for(const B of this._progressListeners)B(V,M)})}onDataProgressiveRead(V){this._readyCapability.promise.then(()=>{for(const M of this._progressiveReadListeners)M(V)})}onDataProgressiveDone(){this._readyCapability.promise.then(()=>{for(const V of this._progressiveDoneListeners)V()})}transportReady(){this._readyCapability.resolve()}requestDataRange(V,M){(0,m.unreachable)("Abstract method PDFDataRangeTransport.requestDataRange")}abort(){}}class hl{constructor(V,M){this._pdfInfo=V,this._transport=M}get annotationStorage(){return this._transport.annotationStorage}get filterFactory(){return this._transport.filterFactory}get numPages(){return this._pdfInfo.numPages}get fingerprints(){return this._pdfInfo.fingerprints}get isPureXfa(){return(0,m.shadow)(this,"isPureXfa",!!this._transport._htmlForXfa)}get allXfaHtml(){return this._transport._htmlForXfa}getPage(V){return this._transport.getPage(V)}getPageIndex(V){return this._transport.getPageIndex(V)}getDestinations(){return this._transport.getDestinations()}getDestination(V){return this._transport.getDestination(V)}getPageLabels(){return this._transport.getPageLabels()}getPageLayout(){return this._transport.getPageLayout()}getPageMode(){return this._transport.getPageMode()}getViewerPreferences(){return this._transport.getViewerPreferences()}getOpenAction(){return this._transport.getOpenAction()}getAttachments(){return this._transport.getAttachments()}getJSActions(){return this._transport.getDocJSActions()}getOutline(){return this._transport.getOutline()}getOptionalContentConfig({intent:V="display"}={}){const{renderingIntent:M}=this._transport.getRenderingIntent(V);return this._transport.getOptionalContentConfig(M)}getPermissions(){return this._transport.getPermissions()}getMetadata(){return this._transport.getMetadata()}getMarkInfo(){return this._transport.getMarkInfo()}getData(){return this._transport.getData()}saveDocument(){return this._transport.saveDocument()}getDownloadInfo(){return this._transport.downloadInfoCapability.promise}cleanup(V=!1){return this._transport.startCleanup(V||this.isPureXfa)}destroy(){return this.loadingTask.destroy()}cachedPageNumber(V){return this._transport.cachedPageNumber(V)}get loadingParams(){return this._transport.loadingParams}get loadingTask(){return this._transport.loadingTask}getFieldObjects(){return this._transport.getFieldObjects()}hasJSActions(){return this._transport.hasJSActions()}getCalculationOrderIds(){return this._transport.getCalculationOrderIds()}}class Gl{#l=null;#U=!1;constructor(V,M,B,y=!1){this._pageIndex=V,this._pageInfo=M,this._transport=B,this._stats=y?new Y.StatTimer:null,this._pdfBug=y,this.commonObjs=B.commonObjs,this.objs=new X,this._maybeCleanupAfterRender=!1,this._intentStates=new Map,this.destroyed=!1}get pageNumber(){return this._pageIndex+1}get rotate(){return this._pageInfo.rotate}get ref(){return this._pageInfo.ref}get userUnit(){return this._pageInfo.userUnit}get view(){return this._pageInfo.view}getViewport({scale:V,rotation:M=this.rotate,offsetX:B=0,offsetY:y=0,dontFlip:D=!1}={}){return new Y.PageViewport({viewBox:this.view,scale:V,rotation:M,offsetX:B,offsetY:y,dontFlip:D})}getAnnotations({intent:V="display"}={}){const{renderingIntent:M}=this._transport.getRenderingIntent(V);return this._transport.getAnnotations(this._pageIndex,M)}getJSActions(){return this._transport.getPageJSActions(this._pageIndex)}get filterFactory(){return this._transport.filterFactory}get isPureXfa(){return(0,m.shadow)(this,"isPureXfa",!!this._transport._htmlForXfa)}async getXfa(){return this._transport._htmlForXfa?.children[this._pageIndex]||null}render({canvasContext:V,viewport:M,intent:B="display",annotationMode:y=m.AnnotationMode.ENABLE,transform:D=null,background:E=null,optionalContentConfigPromise:j=null,annotationCanvasMap:w=null,pageColors:C=null,printAnnotationStorage:k=null}){this._stats?.time("Overall");const f=this._transport.getRenderingIntent(B,y,k),{renderingIntent:Fl,cacheKey:_}=f;this.#U=!1,this.#F(),j||=this._transport.getOptionalContentConfig(Fl);let Zl=this._intentStates.get(_);Zl||(Zl=Object.create(null),this._intentStates.set(_,Zl)),Zl.streamReaderCancelTimeout&&(clearTimeout(Zl.streamReaderCancelTimeout),Zl.streamReaderCancelTimeout=null);const sl=!!(Fl&m.RenderingIntentFlag.PRINT);Zl.displayReadyCapability||(Zl.displayReadyCapability=Promise.withResolvers(),Zl.operatorList={fnArray:[],argsArray:[],lastChunk:!1,separateAnnots:null},this._stats?.time("Page Request"),this._pumpOperatorList(f));const Ql=Ml=>{Zl.renderTasks.delete(tl),(this._maybeCleanupAfterRender||sl)&&(this.#U=!0),this.#d(!sl),Ml?(tl.capability.reject(Ml),this._abortOperatorList({intentState:Zl,reason:Ml instanceof Error?Ml:new Error(Ml)})):tl.capability.resolve(),this._stats?.timeEnd("Rendering"),this._stats?.timeEnd("Overall")},tl=new Z({callback:Ql,params:{canvasContext:V,viewport:M,transform:D,background:E},objs:this.objs,commonObjs:this.commonObjs,annotationCanvasMap:w,operatorList:Zl.operatorList,pageIndex:this._pageIndex,canvasFactory:this._transport.canvasFactory,filterFactory:this._transport.filterFactory,useRequestAnimationFrame:!sl,pdfBug:this._pdfBug,pageColors:C});(Zl.renderTasks||=new Set).add(tl);const nl=tl.task;return Promise.all([Zl.displayReadyCapability.promise,j]).then(([Ml,ol])=>{if(this.destroyed){Ql();return}if(this._stats?.time("Rendering"),!(ol.renderingIntent&Fl))throw new Error("Must use the same `intent`-argument when calling the `PDFPageProxy.render` and `PDFDocumentProxy.getOptionalContentConfig` methods.");tl.initializeGraphics({transparency:Ml,optionalContentConfig:ol}),tl.operatorListChanged()}).catch(Ql),nl}getOperatorList({intent:V="display",annotationMode:M=m.AnnotationMode.ENABLE,printAnnotationStorage:B=null}={}){function y(){E.operatorList.lastChunk&&(E.opListReadCapability.resolve(E.operatorList),E.renderTasks.delete(j))}const D=this._transport.getRenderingIntent(V,M,B,!0);let E=this._intentStates.get(D.cacheKey);E||(E=Object.create(null),this._intentStates.set(D.cacheKey,E));let j;return E.opListReadCapability||(j=Object.create(null),j.operatorListChanged=y,E.opListReadCapability=Promise.withResolvers(),(E.renderTasks||=new Set).add(j),E.operatorList={fnArray:[],argsArray:[],lastChunk:!1,separateAnnots:null},this._stats?.time("Page Request"),this._pumpOperatorList(D)),E.opListReadCapability.promise}streamTextContent({includeMarkedContent:V=!1,disableNormalization:M=!1}={}){return this._transport.messageHandler.sendWithStream("GetTextContent",{pageIndex:this._pageIndex,includeMarkedContent:V===!0,disableNormalization:M===!0},{highWaterMark:100,size(y){return y.items.length}})}getTextContent(V={}){if(this._transport._htmlForXfa)return this.getXfa().then(B=>h.XfaText.textContent(B));const M=this.streamTextContent(V);return new Promise(function(B,y){function D(){E.read().then(function({value:w,done:C}){if(C){B(j);return}Object.assign(j.styles,w.styles),j.items.push(...w.items),D()},y)}const E=M.getReader(),j={items:[],styles:Object.create(null)};D()})}getStructTree(){return this._transport.getStructTree(this._pageIndex)}_destroy(){this.destroyed=!0;const V=[];for(const M of this._intentStates.values())if(this._abortOperatorList({intentState:M,reason:new Error("Page was destroyed."),force:!0}),!M.opListReadCapability)for(const B of M.renderTasks)V.push(B.completed),B.cancel();return this.objs.clear(),this.#U=!1,this.#F(),Promise.all(V)}cleanup(V=!1){this.#U=!0;const M=this.#d(!1);return V&&M&&(this._stats&&=new Y.StatTimer),M}#d(V=!1){if(this.#F(),!this.#U||this.destroyed)return!1;if(V)return this.#l=setTimeout(()=>{this.#l=null,this.#d(!1)},I),!1;for(const{renderTasks:M,operatorList:B}of this._intentStates.values())if(M.size>0||!B.lastChunk)return!1;return this._intentStates.clear(),this.objs.clear(),this.#U=!1,!0}#F(){this.#l&&(clearTimeout(this.#l),this.#l=null)}_startRenderPage(V,M){const B=this._intentStates.get(M);B&&(this._stats?.timeEnd("Page Request"),B.displayReadyCapability?.resolve(V))}_renderPageChunk(V,M){for(let B=0,y=V.length;B{j.read().then(({value:k,done:f})=>{if(f){w.streamReader=null;return}this._transport.destroyed||(this._renderPageChunk(k,w),C())},k=>{if(w.streamReader=null,!this._transport.destroyed){if(w.operatorList){w.operatorList.lastChunk=!0;for(const f of w.renderTasks)f.operatorListChanged();this.#d(!0)}if(w.displayReadyCapability)w.displayReadyCapability.reject(k);else if(w.opListReadCapability)w.opListReadCapability.reject(k);else throw k}})};C()}_abortOperatorList({intentState:V,reason:M,force:B=!1}){if(V.streamReader){if(V.streamReaderCancelTimeout&&(clearTimeout(V.streamReaderCancelTimeout),V.streamReaderCancelTimeout=null),!B){if(V.renderTasks.size>0)return;if(M instanceof Y.RenderingCancelledException){let y=L;M.extraDelay>0&&M.extraDelay<1e3&&(y+=M.extraDelay),V.streamReaderCancelTimeout=setTimeout(()=>{V.streamReaderCancelTimeout=null,this._abortOperatorList({intentState:V,reason:M,force:!0})},y);return}}if(V.streamReader.cancel(new m.AbortException(M.message)).catch(()=>{}),V.streamReader=null,!this._transport.destroyed){for(const[y,D]of this._intentStates)if(D===V){this._intentStates.delete(y);break}this.cleanup()}}}get stats(){return this._stats}}class ul{#l=new Set;#U=Promise.resolve();postMessage(V,M){const B={data:structuredClone(V,M?{transfer:M}:null)};this.#U.then(()=>{for(const y of this.#l)y.call(this,B)})}addEventListener(V,M){this.#l.add(M)}removeEventListener(V,M){this.#l.delete(M)}terminate(){this.#l.clear()}}const Sl={isWorkerDisabled:!1,fakeWorkerId:0};m.isNodeJS&&(Sl.isWorkerDisabled=!0,R.GlobalWorkerOptions.workerSrc||="./pdf.worker.mjs"),Sl.isSameOrigin=function(b,V){let M;try{if(M=new URL(b),!M.origin||M.origin==="null")return!1}catch{return!1}const B=new URL(V,M);return M.origin===B.origin},Sl.createCDNWrapper=function(b){const V=`await import("${b}");`;return URL.createObjectURL(new Blob([V],{type:"text/javascript"}))};class ml{static#l;constructor({name:V=null,port:M=null,verbosity:B=(0,m.getVerbosityLevel)()}={}){if(this.name=V,this.destroyed=!1,this.verbosity=B,this._readyCapability=Promise.withResolvers(),this._port=null,this._webWorker=null,this._messageHandler=null,M){if(ml.#l?.has(M))throw new Error("Cannot use more than one PDFWorker per port.");(ml.#l||=new WeakMap).set(M,this),this._initializeFromPort(M);return}this._initialize()}get promise(){return this._readyCapability.promise}get port(){return this._port}get messageHandler(){return this._messageHandler}_initializeFromPort(V){this._port=V,this._messageHandler=new W.MessageHandler("main","worker",V),this._messageHandler.on("ready",function(){}),this._readyCapability.resolve(),this._messageHandler.send("configure",{verbosity:this.verbosity})}_initialize(){if(!Sl.isWorkerDisabled&&!ml.#U){let{workerSrc:V}=ml;try{Sl.isSameOrigin(window.location.href,V)||(V=Sl.createCDNWrapper(new URL(V,window.location).href));const M=new Worker(V,{type:"module"}),B=new W.MessageHandler("main","worker",M),y=()=>{M.removeEventListener("error",D),B.destroy(),M.terminate(),this.destroyed?this._readyCapability.reject(new Error("Worker was destroyed")):this._setupFakeWorker()},D=()=>{this._webWorker||y()};M.addEventListener("error",D),B.on("test",j=>{if(M.removeEventListener("error",D),this.destroyed){y();return}j?(this._messageHandler=B,this._port=M,this._webWorker=M,this._readyCapability.resolve(),B.send("configure",{verbosity:this.verbosity})):(this._setupFakeWorker(),B.destroy(),M.terminate())}),B.on("ready",j=>{if(M.removeEventListener("error",D),this.destroyed){y();return}try{E()}catch{this._setupFakeWorker()}});const E=()=>{const j=new Uint8Array;B.send("test",j,[j.buffer])};E();return}catch{(0,m.info)("The worker has been disabled.")}}this._setupFakeWorker()}_setupFakeWorker(){Sl.isWorkerDisabled||((0,m.warn)("Setting up fake worker."),Sl.isWorkerDisabled=!0),ml._setupFakeWorkerGlobal.then(V=>{if(this.destroyed){this._readyCapability.reject(new Error("Worker was destroyed"));return}const M=new ul;this._port=M;const B=`fake${Sl.fakeWorkerId++}`,y=new W.MessageHandler(B+"_worker",B,M);V.setup(y,M);const D=new W.MessageHandler(B,B+"_worker",M);this._messageHandler=D,this._readyCapability.resolve(),D.send("configure",{verbosity:this.verbosity})}).catch(V=>{this._readyCapability.reject(new Error(`Setting up fake worker failed: "${V.message}".`))})}destroy(){this.destroyed=!0,this._webWorker&&(this._webWorker.terminate(),this._webWorker=null),ml.#l?.delete(this._port),this._port=null,this._messageHandler&&(this._messageHandler.destroy(),this._messageHandler=null)}static fromPort(V){if(!V?.port)throw new Error("PDFWorker.fromPort - invalid method signature.");const M=this.#l?.get(V.port);if(M){if(M._pendingDestroy)throw new Error("PDFWorker.fromPort - the worker is being destroyed.\nPlease remember to await `PDFDocumentLoadingTask.destroy()`-calls.");return M}return new ml(V)}static get workerSrc(){if(R.GlobalWorkerOptions.workerSrc)return R.GlobalWorkerOptions.workerSrc;throw new Error('No "GlobalWorkerOptions.workerSrc" specified.')}static get#U(){try{return globalThis.pdfjsWorker?.WorkerMessageHandler||null}catch{return null}}static get _setupFakeWorkerGlobal(){const V=async()=>this.#U?this.#U:(await import(this.workerSrc)).WorkerMessageHandler;return(0,m.shadow)(this,"_setupFakeWorkerGlobal",V())}}class Xl{#l=new Map;#U=new Map;#d=new Map;#F=new Map;#t=null;constructor(V,M,B,y,D){this.messageHandler=V,this.loadingTask=M,this.commonObjs=new X,this.fontLoader=new S.FontLoader({ownerDocument:y.ownerDocument,styleElement:y.styleElement}),this._params=y,this.canvasFactory=D.canvasFactory,this.filterFactory=D.filterFactory,this.cMapReaderFactory=D.cMapReaderFactory,this.standardFontDataFactory=D.standardFontDataFactory,this.destroyed=!1,this.destroyCapability=null,this._networkStream=B,this._fullReader=null,this._lastProgress=null,this.downloadInfoCapability=Promise.withResolvers(),this.setupMessageHandler()}#Z(V,M=null){const B=this.#l.get(V);if(B)return B;const y=this.messageHandler.sendWithPromise(V,M);return this.#l.set(V,y),y}get annotationStorage(){return(0,m.shadow)(this,"annotationStorage",new z.AnnotationStorage)}getRenderingIntent(V,M=m.AnnotationMode.ENABLE,B=null,y=!1){let D=m.RenderingIntentFlag.DISPLAY,E=z.SerializableEmpty;switch(V){case"any":D=m.RenderingIntentFlag.ANY;break;case"display":break;case"print":D=m.RenderingIntentFlag.PRINT;break;default:(0,m.warn)(`getRenderingIntent - invalid intent: ${V}`)}switch(M){case m.AnnotationMode.DISABLE:D+=m.RenderingIntentFlag.ANNOTATIONS_DISABLE;break;case m.AnnotationMode.ENABLE:break;case m.AnnotationMode.ENABLE_FORMS:D+=m.RenderingIntentFlag.ANNOTATIONS_FORMS;break;case m.AnnotationMode.ENABLE_STORAGE:D+=m.RenderingIntentFlag.ANNOTATIONS_STORAGE,E=(D&m.RenderingIntentFlag.PRINT&&B instanceof z.PrintAnnotationStorage?B:this.annotationStorage).serializable;break;default:(0,m.warn)(`getRenderingIntent - invalid annotationMode: ${M}`)}return y&&(D+=m.RenderingIntentFlag.OPLIST),{renderingIntent:D,cacheKey:`${D}_${E.hash}`,annotationStorageSerializable:E}}destroy(){if(this.destroyCapability)return this.destroyCapability.promise;this.destroyed=!0,this.destroyCapability=Promise.withResolvers(),this.#t?.reject(new Error("Worker was destroyed during onPassword callback"));const V=[];for(const B of this.#U.values())V.push(B._destroy());this.#U.clear(),this.#d.clear(),this.#F.clear(),this.hasOwnProperty("annotationStorage")&&this.annotationStorage.resetModified();const M=this.messageHandler.sendWithPromise("Terminate",null);return V.push(M),Promise.all(V).then(()=>{this.commonObjs.clear(),this.fontLoader.clear(),this.#l.clear(),this.filterFactory.destroy(),(0,F.cleanupTextLayer)(),this._networkStream?.cancelAllRequests(new m.AbortException("Worker was terminated.")),this.messageHandler&&(this.messageHandler.destroy(),this.messageHandler=null),this.destroyCapability.resolve()},this.destroyCapability.reject),this.destroyCapability.promise}setupMessageHandler(){const{messageHandler:V,loadingTask:M}=this;V.on("GetReader",(B,y)=>{(0,m.assert)(this._networkStream,"GetReader - no `IPDFStream` instance available."),this._fullReader=this._networkStream.getFullReader(),this._fullReader.onProgress=D=>{this._lastProgress={loaded:D.loaded,total:D.total}},y.onPull=()=>{this._fullReader.read().then(function({value:D,done:E}){if(E){y.close();return}(0,m.assert)(D instanceof ArrayBuffer,"GetReader - expected an ArrayBuffer."),y.enqueue(new Uint8Array(D),1,[D])}).catch(D=>{y.error(D)})},y.onCancel=D=>{this._fullReader.cancel(D),y.ready.catch(E=>{if(!this.destroyed)throw E})}}),V.on("ReaderHeadersReady",B=>{const y=Promise.withResolvers(),D=this._fullReader;return D.headersReady.then(()=>{(!D.isStreamingSupported||!D.isRangeSupported)&&(this._lastProgress&&M.onProgress?.(this._lastProgress),D.onProgress=E=>{M.onProgress?.({loaded:E.loaded,total:E.total})}),y.resolve({isStreamingSupported:D.isStreamingSupported,isRangeSupported:D.isRangeSupported,contentLength:D.contentLength})},y.reject),y.promise}),V.on("GetRangeReader",(B,y)=>{(0,m.assert)(this._networkStream,"GetRangeReader - no `IPDFStream` instance available.");const D=this._networkStream.getRangeReader(B.begin,B.end);if(!D){y.close();return}y.onPull=()=>{D.read().then(function({value:E,done:j}){if(j){y.close();return}(0,m.assert)(E instanceof ArrayBuffer,"GetRangeReader - expected an ArrayBuffer."),y.enqueue(new Uint8Array(E),1,[E])}).catch(E=>{y.error(E)})},y.onCancel=E=>{D.cancel(E),y.ready.catch(j=>{if(!this.destroyed)throw j})}}),V.on("GetDoc",({pdfInfo:B})=>{this._numPages=B.numPages,this._htmlForXfa=B.htmlForXfa,delete B.htmlForXfa,M._capability.resolve(new hl(B,this))}),V.on("DocException",function(B){let y;switch(B.name){case"PasswordException":y=new m.PasswordException(B.message,B.code);break;case"InvalidPDFException":y=new m.InvalidPDFException(B.message);break;case"MissingPDFException":y=new m.MissingPDFException(B.message);break;case"UnexpectedResponseException":y=new m.UnexpectedResponseException(B.message,B.status);break;case"UnknownErrorException":y=new m.UnknownErrorException(B.message,B.details);break;default:(0,m.unreachable)("DocException - expected a valid Error.")}M._capability.reject(y)}),V.on("PasswordRequest",B=>{if(this.#t=Promise.withResolvers(),M.onPassword){const y=D=>{D instanceof Error?this.#t.reject(D):this.#t.resolve({password:D})};try{M.onPassword(y,B.code)}catch(D){this.#t.reject(D)}}else this.#t.reject(new m.PasswordException(B.message,B.code));return this.#t.promise}),V.on("DataLoaded",B=>{M.onProgress?.({loaded:B.length,total:B.length}),this.downloadInfoCapability.resolve(B)}),V.on("StartRenderPage",B=>{if(this.destroyed)return;this.#U.get(B.pageIndex)._startRenderPage(B.transparency,B.cacheKey)}),V.on("commonobj",([B,y,D])=>{if(this.destroyed||this.commonObjs.has(B))return null;switch(y){case"Font":const E=this._params;if("error"in D){const k=D.error;(0,m.warn)(`Error during font loading: ${k}`),this.commonObjs.resolve(B,k);break}const j=E.pdfBug&&globalThis.FontInspector?.enabled?(k,f)=>globalThis.FontInspector.fontAdded(k,f):null,w=new S.FontFaceObject(D,{disableFontFace:E.disableFontFace,ignoreErrors:E.ignoreErrors,inspectFont:j});this.fontLoader.bind(w).catch(()=>V.sendWithPromise("FontFallback",{id:B})).finally(()=>{!E.fontExtraProperties&&w.data&&(w.data=null),this.commonObjs.resolve(B,w)});break;case"CopyLocalImage":const{imageRef:C}=D;(0,m.assert)(C,"The imageRef must be defined.");for(const k of this.#U.values())for(const[,f]of k.objs)if(f.ref===C)return f.dataLen?(this.commonObjs.resolve(B,structuredClone(f)),f.dataLen):null;break;case"FontPath":case"Image":case"Pattern":this.commonObjs.resolve(B,D);break;default:throw new Error(`Got unknown common object type ${y}`)}return null}),V.on("obj",([B,y,D,E])=>{if(this.destroyed)return;const j=this.#U.get(y);if(!j.objs.has(B)){if(j._intentStates.size===0){E?.bitmap?.close();return}switch(D){case"Image":j.objs.resolve(B,E),E?.dataLen>m.MAX_IMAGE_SIZE_TO_CACHE&&(j._maybeCleanupAfterRender=!0);break;case"Pattern":j.objs.resolve(B,E);break;default:throw new Error(`Got unknown object type ${D}`)}}}),V.on("DocProgress",B=>{this.destroyed||M.onProgress?.({loaded:B.loaded,total:B.total})}),V.on("FetchBuiltInCMap",B=>this.destroyed?Promise.reject(new Error("Worker was destroyed.")):this.cMapReaderFactory?this.cMapReaderFactory.fetch(B):Promise.reject(new Error("CMapReaderFactory not initialized, see the `useWorkerFetch` parameter."))),V.on("FetchStandardFontData",B=>this.destroyed?Promise.reject(new Error("Worker was destroyed.")):this.standardFontDataFactory?this.standardFontDataFactory.fetch(B):Promise.reject(new Error("StandardFontDataFactory not initialized, see the `useWorkerFetch` parameter.")))}getData(){return this.messageHandler.sendWithPromise("GetData",null)}saveDocument(){this.annotationStorage.size<=0&&(0,m.warn)("saveDocument called while `annotationStorage` is empty, please use the getData-method instead.");const{map:V,transfer:M}=this.annotationStorage.serializable;return this.messageHandler.sendWithPromise("SaveDocument",{isPureXfa:!!this._htmlForXfa,numPages:this._numPages,annotationStorage:V,filename:this._fullReader?.filename??null},M).finally(()=>{this.annotationStorage.resetModified()})}getPage(V){if(!Number.isInteger(V)||V<=0||V>this._numPages)return Promise.reject(new Error("Invalid page request."));const M=V-1,B=this.#d.get(M);if(B)return B;const y=this.messageHandler.sendWithPromise("GetPage",{pageIndex:M}).then(D=>{if(this.destroyed)throw new Error("Transport destroyed");D.refStr&&this.#F.set(D.refStr,V);const E=new Gl(M,D,this,this._params.pdfBug);return this.#U.set(M,E),E});return this.#d.set(M,y),y}getPageIndex(V){return ll(V)?this.messageHandler.sendWithPromise("GetPageIndex",{num:V.num,gen:V.gen}):Promise.reject(new Error("Invalid pageIndex request."))}getAnnotations(V,M){return this.messageHandler.sendWithPromise("GetAnnotations",{pageIndex:V,intent:M})}getFieldObjects(){return this.#Z("GetFieldObjects")}hasJSActions(){return this.#Z("HasJSActions")}getCalculationOrderIds(){return this.messageHandler.sendWithPromise("GetCalculationOrderIds",null)}getDestinations(){return this.messageHandler.sendWithPromise("GetDestinations",null)}getDestination(V){return typeof V!="string"?Promise.reject(new Error("Invalid destination request.")):this.messageHandler.sendWithPromise("GetDestination",{id:V})}getPageLabels(){return this.messageHandler.sendWithPromise("GetPageLabels",null)}getPageLayout(){return this.messageHandler.sendWithPromise("GetPageLayout",null)}getPageMode(){return this.messageHandler.sendWithPromise("GetPageMode",null)}getViewerPreferences(){return this.messageHandler.sendWithPromise("GetViewerPreferences",null)}getOpenAction(){return this.messageHandler.sendWithPromise("GetOpenAction",null)}getAttachments(){return this.messageHandler.sendWithPromise("GetAttachments",null)}getDocJSActions(){return this.#Z("GetDocJSActions")}getPageJSActions(V){return this.messageHandler.sendWithPromise("GetPageJSActions",{pageIndex:V})}getStructTree(V){return this.messageHandler.sendWithPromise("GetStructTree",{pageIndex:V})}getOutline(){return this.messageHandler.sendWithPromise("GetOutline",null)}getOptionalContentConfig(V){return this.#Z("GetOptionalContentConfig").then(M=>new d.OptionalContentConfig(M,V))}getPermissions(){return this.messageHandler.sendWithPromise("GetPermissions",null)}getMetadata(){const V="GetMetadata",M=this.#l.get(V);if(M)return M;const B=this.messageHandler.sendWithPromise(V,null).then(y=>({info:y[0],metadata:y[1]?new J.Metadata(y[1]):null,contentDispositionFilename:this._fullReader?.filename??null,contentLength:this._fullReader?.contentLength??null}));return this.#l.set(V,B),B}getMarkInfo(){return this.messageHandler.sendWithPromise("GetMarkInfo",null)}async startCleanup(V=!1){if(!this.destroyed){await this.messageHandler.sendWithPromise("Cleanup",null);for(const M of this.#U.values())if(!M.cleanup())throw new Error(`startCleanup: Page ${M.pageNumber} is currently rendering.`);this.commonObjs.clear(),V||this.fontLoader.clear(),this.#l.clear(),this.filterFactory.destroy(!0),(0,F.cleanupTextLayer)()}}cachedPageNumber(V){if(!ll(V))return null;const M=V.gen===0?`${V.num}R`:`${V.num}R${V.gen}`;return this.#F.get(M)??null}get loadingParams(){const{disableAutoFetch:V,enableXfa:M}=this._params;return(0,m.shadow)(this,"loadingParams",{disableAutoFetch:V,enableXfa:M})}}const Wl=Symbol("INITIAL_DATA");class X{#l=Object.create(null);#U(V){return this.#l[V]||={...Promise.withResolvers(),data:Wl}}get(V,M=null){if(M){const y=this.#U(V);return y.promise.then(()=>M(y.data)),null}const B=this.#l[V];if(!B||B.data===Wl)throw new Error(`Requesting object that isn't resolved yet ${V}.`);return B.data}has(V){const M=this.#l[V];return!!M&&M.data!==Wl}resolve(V,M=null){const B=this.#U(V);B.data=M,B.resolve()}clear(){for(const V in this.#l){const{data:M}=this.#l[V];M?.bitmap?.close()}this.#l=Object.create(null)}*[Symbol.iterator](){for(const V in this.#l){const{data:M}=this.#l[V];M!==Wl&&(yield[V,M])}}}class i{#l=null;constructor(V){this.#l=V,this.onContinue=null}get promise(){return this.#l.capability.promise}cancel(V=0){this.#l.cancel(null,V)}get separateAnnots(){const{separateAnnots:V}=this.#l.operatorList;if(!V)return!1;const{annotationCanvasMap:M}=this.#l;return V.form||V.canvas&&M?.size>0}}class Z{static#l=new WeakSet;constructor({callback:V,params:M,objs:B,commonObjs:y,annotationCanvasMap:D,operatorList:E,pageIndex:j,canvasFactory:w,filterFactory:C,useRequestAnimationFrame:k=!1,pdfBug:f=!1,pageColors:Fl=null}){this.callback=V,this.params=M,this.objs=B,this.commonObjs=y,this.annotationCanvasMap=D,this.operatorListIdx=null,this.operatorList=E,this._pageIndex=j,this.canvasFactory=w,this.filterFactory=C,this._pdfBug=f,this.pageColors=Fl,this.running=!1,this.graphicsReadyCallback=null,this.graphicsReady=!1,this._useRequestAnimationFrame=k===!0&&typeof window<"u",this.cancelled=!1,this.capability=Promise.withResolvers(),this.task=new i(this),this._cancelBound=this.cancel.bind(this),this._continueBound=this._continue.bind(this),this._scheduleNextBound=this._scheduleNext.bind(this),this._nextBound=this._next.bind(this),this._canvas=M.canvasContext.canvas}get completed(){return this.capability.promise.catch(function(){})}initializeGraphics({transparency:V=!1,optionalContentConfig:M}){if(this.cancelled)return;if(this._canvas){if(Z.#l.has(this._canvas))throw new Error("Cannot use the same canvas during multiple render() operations. Use different canvas or ensure previous operations were cancelled or completed.");Z.#l.add(this._canvas)}this._pdfBug&&globalThis.StepperManager?.enabled&&(this.stepper=globalThis.StepperManager.create(this._pageIndex),this.stepper.init(this.operatorList),this.stepper.nextBreakPoint=this.stepper.getNextBreakPoint());const{canvasContext:B,viewport:y,transform:D,background:E}=this.params;this.gfx=new e.CanvasGraphics(B,this.commonObjs,this.objs,this.canvasFactory,this.filterFactory,{optionalContentConfig:M},this.annotationCanvasMap,this.pageColors),this.gfx.beginDrawing({transform:D,viewport:y,transparency:V,background:E}),this.operatorListIdx=0,this.graphicsReady=!0,this.graphicsReadyCallback?.()}cancel(V=null,M=0){this.running=!1,this.cancelled=!0,this.gfx?.endDrawing(),Z.#l.delete(this._canvas),this.callback(V||new Y.RenderingCancelledException(`Rendering cancelled, page ${this._pageIndex+1}`,M))}operatorListChanged(){if(!this.graphicsReady){this.graphicsReadyCallback||=this._continueBound;return}this.stepper?.updateOperatorList(this.operatorList),!this.running&&this._continue()}_continue(){this.running=!0,!this.cancelled&&(this.task.onContinue?this.task.onContinue(this._scheduleNextBound):this._scheduleNext())}_scheduleNext(){this._useRequestAnimationFrame?window.requestAnimationFrame(()=>{this._nextBound().catch(this._cancelBound)}):Promise.resolve().then(this._nextBound).catch(this._cancelBound)}async _next(){this.cancelled||(this.operatorListIdx=this.gfx.executeOperatorList(this.operatorList,this.operatorListIdx,this._continueBound,this.stepper),this.operatorListIdx===this.operatorList.argsArray.length&&(this.running=!1,this.operatorList.lastChunk&&(this.gfx.endDrawing(),Z.#l.delete(this._canvas),this.callback())))}}const Q="4.2.67",G="49b388101";n()}catch(u){n(u)}})},583:(T,N,t)=>{t.d(N,{BaseCMapReaderFactory:()=>z,BaseCanvasFactory:()=>m,BaseFilterFactory:()=>n,BaseSVGFactory:()=>S,BaseStandardFontDataFactory:()=>Y});var U=t(292);class n{constructor(){this.constructor===n&&(0,U.unreachable)("Cannot initialize BaseFilterFactory.")}addFilter(e){return"none"}addHCMFilter(e,F){return"none"}addHighlightHCMFilter(e,F,R,W,J){return"none"}destroy(e=!1){}}class m{constructor(){this.constructor===m&&(0,U.unreachable)("Cannot initialize BaseCanvasFactory.")}create(e,F){if(e<=0||F<=0)throw new Error("Invalid canvas size");const R=this._createCanvas(e,F);return{canvas:R,context:R.getContext("2d")}}reset(e,F,R){if(!e.canvas)throw new Error("Canvas is not specified");if(F<=0||R<=0)throw new Error("Invalid canvas size");e.canvas.width=F,e.canvas.height=R}destroy(e){if(!e.canvas)throw new Error("Canvas is not specified");e.canvas.width=0,e.canvas.height=0,e.canvas=null,e.context=null}_createCanvas(e,F){(0,U.unreachable)("Abstract method `_createCanvas` called.")}}class z{constructor({baseUrl:e=null,isCompressed:F=!0}){this.constructor===z&&(0,U.unreachable)("Cannot initialize BaseCMapReaderFactory."),this.baseUrl=e,this.isCompressed=F}async fetch({name:e}){if(!this.baseUrl)throw new Error('The CMap "baseUrl" parameter must be specified, ensure that the "cMapUrl" and "cMapPacked" API parameters are provided.');if(!e)throw new Error("CMap name must be specified.");const F=this.baseUrl+e+(this.isCompressed?".bcmap":""),R=this.isCompressed?U.CMapCompressionType.BINARY:U.CMapCompressionType.NONE;return this._fetchData(F,R).catch(W=>{throw new Error(`Unable to load ${this.isCompressed?"binary ":""}CMap at: ${F}`)})}_fetchData(e,F){(0,U.unreachable)("Abstract method `_fetchData` called.")}}class Y{constructor({baseUrl:e=null}){this.constructor===Y&&(0,U.unreachable)("Cannot initialize BaseStandardFontDataFactory."),this.baseUrl=e}async fetch({filename:e}){if(!this.baseUrl)throw new Error('The standard font "baseUrl" parameter must be specified, ensure that the "standardFontDataUrl" API parameter is provided.');if(!e)throw new Error("Font filename must be specified.");const F=`${this.baseUrl}${e}`;return this._fetchData(F).catch(R=>{throw new Error(`Unable to load font data at: ${F}`)})}_fetchData(e){(0,U.unreachable)("Abstract method `_fetchData` called.")}}class S{constructor(){this.constructor===S&&(0,U.unreachable)("Cannot initialize BaseSVGFactory.")}create(e,F,R=!1){if(e<=0||F<=0)throw new Error("Invalid SVG dimensions");const W=this._createSVG("svg:svg");return W.setAttribute("version","1.1"),R||(W.setAttribute("width",`${e}px`),W.setAttribute("height",`${F}px`)),W.setAttribute("preserveAspectRatio","none"),W.setAttribute("viewBox",`0 0 ${e} ${F}`),W}createElement(e){if(typeof e!="string")throw new Error("Invalid SVG element type");return this._createSVG(e)}_createSVG(e){(0,U.unreachable)("Abstract method `_createSVG` called.")}}},923:(T,N,t)=>{t.d(N,{CanvasGraphics:()=>X});var U=t(292),n=t(419);const m={FILL:"Fill",STROKE:"Stroke",SHADING:"Shading"};function z(i,Z){if(!Z)return;const Q=Z[2]-Z[0],G=Z[3]-Z[1],b=new Path2D;b.rect(Z[0],Z[1],Q,G),i.clip(b)}class Y{constructor(){this.constructor===Y&&(0,U.unreachable)("Cannot initialize BaseShadingPattern.")}getPattern(){(0,U.unreachable)("Abstract method `getPattern` called.")}}class S extends Y{constructor(Z){super(),this._type=Z[1],this._bbox=Z[2],this._colorStops=Z[3],this._p0=Z[4],this._p1=Z[5],this._r0=Z[6],this._r1=Z[7],this.matrix=null}_createGradient(Z){let Q;this._type==="axial"?Q=Z.createLinearGradient(this._p0[0],this._p0[1],this._p1[0],this._p1[1]):this._type==="radial"&&(Q=Z.createRadialGradient(this._p0[0],this._p0[1],this._r0,this._p1[0],this._p1[1],this._r1));for(const G of this._colorStops)Q.addColorStop(G[0],G[1]);return Q}getPattern(Z,Q,G,b){let V;if(b===m.STROKE||b===m.FILL){const M=Q.current.getClippedPathBoundingBox(b,(0,n.getCurrentTransform)(Z))||[0,0,0,0],B=Math.ceil(M[2]-M[0])||1,y=Math.ceil(M[3]-M[1])||1,D=Q.cachedCanvases.getCanvas("pattern",B,y,!0),E=D.context;E.clearRect(0,0,E.canvas.width,E.canvas.height),E.beginPath(),E.rect(0,0,E.canvas.width,E.canvas.height),E.translate(-M[0],-M[1]),G=U.Util.transform(G,[1,0,0,1,M[0],M[1]]),E.transform(...Q.baseTransform),this.matrix&&E.transform(...this.matrix),z(E,this._bbox),E.fillStyle=this._createGradient(E),E.fill(),V=Z.createPattern(D.canvas,"no-repeat");const j=new DOMMatrix(G);V.setTransform(j)}else z(Z,this._bbox),V=this._createGradient(Z);return V}}function p(i,Z,Q,G,b,V,M,B){const y=Z.coords,D=Z.colors,E=i.data,j=i.width*4;let w;y[Q+1]>y[G+1]&&(w=Q,Q=G,G=w,w=V,V=M,M=w),y[G+1]>y[b+1]&&(w=G,G=b,b=w,w=M,M=B,B=w),y[Q+1]>y[G+1]&&(w=Q,Q=G,G=w,w=V,V=M,M=w);const C=(y[Q]+Z.offsetX)*Z.scaleX,k=(y[Q+1]+Z.offsetY)*Z.scaleY,f=(y[G]+Z.offsetX)*Z.scaleX,Fl=(y[G+1]+Z.offsetY)*Z.scaleY,_=(y[b]+Z.offsetX)*Z.scaleX,Zl=(y[b+1]+Z.offsetY)*Z.scaleY;if(k>=Zl)return;const sl=D[V],Ql=D[V+1],tl=D[V+2],nl=D[M],Ml=D[M+1],ol=D[M+2],Ll=D[B],Dl=D[B+1],yl=D[B+2],ql=Math.round(k),Kl=Math.round(Zl);let Al,Cl,vl,UU,NU,hU,XU,nU;for(let Pl=ql;Pl<=Kl;Pl++){if(PlZl?wl=1:Fl===Zl?wl=0:wl=(Fl-Pl)/(Fl-Zl),Al=f-(f-_)*wl,Cl=nl-(nl-Ll)*wl,vl=Ml-(Ml-Dl)*wl,UU=ol-(ol-yl)*wl}let jl;PlZl?jl=1:jl=(k-Pl)/(k-Zl),NU=C-(C-_)*jl,hU=sl-(sl-Ll)*jl,XU=Ql-(Ql-Dl)*jl,nU=tl-(tl-yl)*jl;const YU=Math.round(Math.min(Al,NU)),mU=Math.round(Math.max(Al,NU));let sU=j*Pl+YU*4;for(let wl=YU;wl<=mU;wl++)jl=(Al-wl)/(Al-NU),jl<0?jl=0:jl>1&&(jl=1),E[sU++]=Cl-(Cl-hU)*jl|0,E[sU++]=vl-(vl-XU)*jl|0,E[sU++]=UU-(UU-nU)*jl|0,E[sU++]=255}}function e(i,Z,Q){const G=Z.coords,b=Z.colors;let V,M;switch(Z.type){case"lattice":const B=Z.verticesPerRow,y=Math.floor(G.length/B)-1,D=B-1;for(V=0;V=b?V=b:G=V/Z,{scale:G,size:V}}clipBbox(Z,Q,G,b,V){const M=b-Q,B=V-G;Z.ctx.rect(Q,G,M,B),Z.current.updateRectMinMax((0,n.getCurrentTransform)(Z.ctx),[Q,G,b,V]),Z.clip(),Z.endPath()}setFillAndStrokeStyleToContext(Z,Q,G){const b=Z.ctx,V=Z.current;switch(Q){case J.COLORED:const M=this.ctx;b.fillStyle=M.fillStyle,b.strokeStyle=M.strokeStyle,V.fillColor=M.fillStyle,V.strokeColor=M.strokeStyle;break;case J.UNCOLORED:const B=U.Util.makeHexColor(G[0],G[1],G[2]);b.fillStyle=B,b.strokeStyle=B,V.fillColor=B,V.strokeColor=B;break;default:throw new U.FormatError(`Unsupported paint type: ${Q}`)}}getPattern(Z,Q,G,b){let V=G;b!==m.SHADING&&(V=U.Util.transform(V,Q.baseTransform),this.matrix&&(V=U.Util.transform(V,this.matrix)));const M=this.createPatternCanvas(Q);let B=new DOMMatrix(V);B=B.translate(M.offsetX,M.offsetY),B=B.scale(1/M.scaleX,1/M.scaleY);const y=Z.createPattern(M.canvas,"repeat");return y.setTransform(B),y}}function a({src:i,srcPos:Z=0,dest:Q,width:G,height:b,nonBlackColor:V=4294967295,inverseDecode:M=!1}){const B=U.FeatureTest.isLittleEndian?4278190080:255,[y,D]=M?[V,B]:[B,V],E=G>>3,j=G&7,w=i.length;Q=new Uint32Array(Q.buffer);let C=0;for(let k=0;k{i.save=i.__originalSave,i.restore=i.__originalRestore,i.rotate=i.__originalRotate,i.scale=i.__originalScale,i.translate=i.__originalTranslate,i.transform=i.__originalTransform,i.setTransform=i.__originalSetTransform,i.resetTransform=i.__originalResetTransform,i.clip=i.__originalClip,i.moveTo=i.__originalMoveTo,i.lineTo=i.__originalLineTo,i.bezierCurveTo=i.__originalBezierCurveTo,i.rect=i.__originalRect,i.closePath=i.__originalClosePath,i.beginPath=i.__originalBeginPath,delete i._removeMirroring},i.save=function(){Z.save(),this.__originalSave()},i.restore=function(){Z.restore(),this.__originalRestore()},i.translate=function(G,b){Z.translate(G,b),this.__originalTranslate(G,b)},i.scale=function(G,b){Z.scale(G,b),this.__originalScale(G,b)},i.transform=function(G,b,V,M,B,y){Z.transform(G,b,V,M,B,y),this.__originalTransform(G,b,V,M,B,y)},i.setTransform=function(G,b,V,M,B,y){Z.setTransform(G,b,V,M,B,y),this.__originalSetTransform(G,b,V,M,B,y)},i.resetTransform=function(){Z.resetTransform(),this.__originalResetTransform()},i.rotate=function(G){Z.rotate(G),this.__originalRotate(G)},i.clip=function(G){Z.clip(G),this.__originalClip(G)},i.moveTo=function(Q,G){Z.moveTo(Q,G),this.__originalMoveTo(Q,G)},i.lineTo=function(Q,G){Z.lineTo(Q,G),this.__originalLineTo(Q,G)},i.bezierCurveTo=function(Q,G,b,V,M,B){Z.bezierCurveTo(Q,G,b,V,M,B),this.__originalBezierCurveTo(Q,G,b,V,M,B)},i.rect=function(Q,G,b,V){Z.rect(Q,G,b,V),this.__originalRect(Q,G,b,V)},i.closePath=function(){Z.closePath(),this.__originalClosePath()},i.beginPath=function(){Z.beginPath(),this.__originalBeginPath()}}class x{constructor(Z){this.canvasFactory=Z,this.cache=Object.create(null)}getCanvas(Z,Q,G){let b;return this.cache[Z]!==void 0?(b=this.cache[Z],this.canvasFactory.reset(b,Q,G)):(b=this.canvasFactory.create(Q,G),this.cache[Z]=b),b}delete(Z){delete this.cache[Z]}clear(){for(const Z in this.cache){const Q=this.cache[Z];this.canvasFactory.destroy(Q),delete this.cache[Z]}}}function O(i,Z,Q,G,b,V,M,B,y,D){const[E,j,w,C,k,f]=(0,n.getCurrentTransform)(i);if(j===0&&w===0){const Zl=M*E+k,sl=Math.round(Zl),Ql=B*C+f,tl=Math.round(Ql),nl=(M+y)*E+k,Ml=Math.abs(Math.round(nl)-sl)||1,ol=(B+D)*C+f,Ll=Math.abs(Math.round(ol)-tl)||1;return i.setTransform(Math.sign(E),0,0,Math.sign(C),sl,tl),i.drawImage(Z,Q,G,b,V,0,0,Ml,Ll),i.setTransform(E,j,w,C,k,f),[Ml,Ll]}if(E===0&&C===0){const Zl=B*w+k,sl=Math.round(Zl),Ql=M*j+f,tl=Math.round(Ql),nl=(B+D)*w+k,Ml=Math.abs(Math.round(nl)-sl)||1,ol=(M+y)*j+f,Ll=Math.abs(Math.round(ol)-tl)||1;return i.setTransform(0,Math.sign(j),Math.sign(w),0,sl,tl),i.drawImage(Z,Q,G,b,V,0,0,Ll,Ml),i.setTransform(E,j,w,C,k,f),[Ll,Ml]}i.drawImage(Z,Q,G,b,V,M,B,y,D);const Fl=Math.hypot(E,j),_=Math.hypot(w,C);return[Fl*y,_*D]}function v(i){const{width:Z,height:Q}=i;if(Z>u||Q>u)return null;const G=1e3,b=new Uint8Array([0,2,4,0,1,0,5,4,8,10,0,8,0,2,1,0]),V=Z+1;let M=new Uint8Array(V*(Q+1)),B,y,D;const E=Z+7&-8;let j=new Uint8Array(E*Q),w=0;for(const _ of i.data){let Zl=128;for(;Zl>0;)j[w++]=_&Zl?0:255,Zl>>=1}let C=0;for(w=0,j[w]!==0&&(M[0]=1,++C),y=1;y>2)+(j[w+1]?4:0)+(j[w-E+1]?8:0),b[_]&&(M[D+y]=b[_],++C),w++;if(j[w-E]!==j[w]&&(M[D+y]=j[w]?2:4,++C),C>G)return null}for(w=E*(Q-1),D=B*V,j[w]!==0&&(M[D]=8,++C),y=1;yG)return null;const k=new Int32Array([0,V,-1,0,-V,0,0,0,1]),f=new Path2D;for(B=0;C&&B<=Q;B++){let _=B*V;const Zl=_+Z;for(;_>4,M[_]&=Ql>>2|Ql<<2),f.lineTo(_%V,_/V|0),M[_]||--C}while(sl!==_);--B}return j=null,M=null,function(_){_.save(),_.scale(1/Z,-1/Q),_.translate(0,-Q),_.fill(f),_.beginPath(),_.restore()}}class Ul{constructor(Z,Q){this.alphaIsShape=!1,this.fontSize=0,this.fontSizeScale=1,this.textMatrix=U.IDENTITY_MATRIX,this.textMatrixScale=1,this.fontMatrix=U.FONT_IDENTITY_MATRIX,this.leading=0,this.x=0,this.y=0,this.lineX=0,this.lineY=0,this.charSpacing=0,this.wordSpacing=0,this.textHScale=1,this.textRenderingMode=U.TextRenderingMode.FILL,this.textRise=0,this.fillColor="#000000",this.strokeColor="#000000",this.patternFill=!1,this.fillAlpha=1,this.strokeAlpha=1,this.lineWidth=1,this.activeSMask=null,this.transferMaps="none",this.startNewPathAndClipBox([0,0,Z,Q])}clone(){const Z=Object.create(this);return Z.clipBox=this.clipBox.slice(),Z}setCurrentPoint(Z,Q){this.x=Z,this.y=Q}updatePathMinMax(Z,Q,G){[Q,G]=U.Util.applyTransform([Q,G],Z),this.minX=Math.min(this.minX,Q),this.minY=Math.min(this.minY,G),this.maxX=Math.max(this.maxX,Q),this.maxY=Math.max(this.maxY,G)}updateRectMinMax(Z,Q){const G=U.Util.applyTransform(Q,Z),b=U.Util.applyTransform(Q.slice(2),Z),V=U.Util.applyTransform([Q[0],Q[3]],Z),M=U.Util.applyTransform([Q[2],Q[1]],Z);this.minX=Math.min(this.minX,G[0],b[0],V[0],M[0]),this.minY=Math.min(this.minY,G[1],b[1],V[1],M[1]),this.maxX=Math.max(this.maxX,G[0],b[0],V[0],M[0]),this.maxY=Math.max(this.maxY,G[1],b[1],V[1],M[1])}updateScalingPathMinMax(Z,Q){U.Util.scaleMinMax(Z,Q),this.minX=Math.min(this.minX,Q[0]),this.minY=Math.min(this.minY,Q[1]),this.maxX=Math.max(this.maxX,Q[2]),this.maxY=Math.max(this.maxY,Q[3])}updateCurvePathMinMax(Z,Q,G,b,V,M,B,y,D,E){const j=U.Util.bezierBoundingBox(Q,G,b,V,M,B,y,D,E);E||this.updateRectMinMax(Z,j)}getPathBoundingBox(Z=m.FILL,Q=null){const G=[this.minX,this.minY,this.maxX,this.maxY];if(Z===m.STROKE){Q||(0,U.unreachable)("Stroke bounding box must include transform.");const b=U.Util.singularValueDecompose2dScale(Q),V=b[0]*this.lineWidth/2,M=b[1]*this.lineWidth/2;G[0]-=V,G[1]-=M,G[2]+=V,G[3]+=M}return G}updateClipFromPath(){const Z=U.Util.intersect(this.clipBox,this.getPathBoundingBox());this.startNewPathAndClipBox(Z||[0,0,0,0])}isEmptyClip(){return this.minX===1/0}startNewPathAndClipBox(Z){this.clipBox=Z,this.minX=1/0,this.minY=1/0,this.maxX=0,this.maxY=0}getClippedPathBoundingBox(Z=m.FILL,Q=null){return U.Util.intersect(this.clipBox,this.getPathBoundingBox(Z,Q))}}function Nl(i,Z){if(typeof ImageData<"u"&&Z instanceof ImageData){i.putImageData(Z,0,0);return}const Q=Z.height,G=Z.width,b=Q%L,V=(Q-b)/L,M=b===0?V:V+1,B=i.createImageData(G,L);let y=0,D;const E=Z.data,j=B.data;let w,C,k,f;if(Z.kind===U.ImageKind.GRAYSCALE_1BPP){const Fl=E.byteLength,_=new Uint32Array(j.buffer,0,j.byteLength>>2),Zl=_.length,sl=G+7>>3,Ql=4294967295,tl=U.FeatureTest.isLittleEndian?4278190080:255;for(w=0;wsl?G:nl*8-7,Ll=ol&-8;let Dl=0,yl=0;for(;Ml>=1}for(;D=V&&(k=b,f=G*k),D=0,C=f;C--;)j[D++]=E[y++],j[D++]=E[y++],j[D++]=E[y++],j[D++]=255;i.putImageData(B,0,w*L)}else throw new Error(`bad image kind: ${Z.kind}`)}function q(i,Z){if(Z.bitmap){i.drawImage(Z.bitmap,0,0);return}const Q=Z.height,G=Z.width,b=Q%L,V=(Q-b)/L,M=b===0?V:V+1,B=i.createImageData(G,L);let y=0;const D=Z.data,E=B.data;for(let j=0;j>8,i[V-2]=i[V-2]*M+Q*B>>8,i[V-1]=i[V-1]*M+G*B>>8}}}function Vl(i,Z,Q){const G=i.length,b=1/255;for(let V=3;V>8]>>8:Z[b]*V>>16}}function hl(i,Z,Q,G,b,V,M,B,y,D,E){const j=!!V,w=j?V[0]:0,C=j?V[1]:0,k=j?V[2]:0,f=b==="Luminosity"?cl:Vl,_=Math.min(G,Math.ceil(1048576/Q));for(let Zl=0;Zlo&&typeof G=="function",E=D?Date.now()+h:0;let j=0;const w=this.commonObjs,C=this.objs;let k;for(;;){if(b!==void 0&&B===b.nextBreakPoint)return b.breakIt(B,G),B;if(k=M[B],k!==U.OPS.dependency)this[k].apply(this,V[B]);else for(const f of V[B]){const Fl=f.startsWith("g_")?w:C;if(!Fl.has(f))return Fl.get(f,G),B}if(B++,B===y)return B;if(D&&++j>o){if(Date.now()>E)return G(),B;j=0}}}#l(){for(;this.stateStack.length||this.inSMaskMode;)this.restore();this.ctx.restore(),this.transparentCanvas&&(this.ctx=this.compositeCtx,this.ctx.save(),this.ctx.setTransform(1,0,0,1,0,0),this.ctx.drawImage(this.transparentCanvas,0,0),this.ctx.restore(),this.transparentCanvas=null)}endDrawing(){this.#l(),this.cachedCanvases.clear(),this.cachedPatterns.clear();for(const Z of this._cachedBitmapsMap.values()){for(const Q of Z.values())typeof HTMLCanvasElement<"u"&&Q instanceof HTMLCanvasElement&&(Q.width=Q.height=0);Z.clear()}this._cachedBitmapsMap.clear(),this.#U()}#U(){if(this.pageColors){const Z=this.filterFactory.addHCMFilter(this.pageColors.foreground,this.pageColors.background);if(Z!=="none"){const Q=this.ctx.filter;this.ctx.filter=Z,this.ctx.drawImage(this.ctx.canvas,0,0),this.ctx.filter=Q}}}_scaleImage(Z,Q){const G=Z.width,b=Z.height;let V=Math.max(Math.hypot(Q[0],Q[1]),1),M=Math.max(Math.hypot(Q[2],Q[3]),1),B=G,y=b,D="prescale1",E,j;for(;V>2&&B>1||M>2&&y>1;){let w=B,C=y;V>2&&B>1&&(w=B>=16384?Math.floor(B/2)-1||1:Math.ceil(B/2),V/=B/w),M>2&&y>1&&(C=y>=16384?Math.floor(y/2)-1||1:Math.ceil(y)/2,M/=y/C),E=this.cachedCanvases.getCanvas(D,w,C),j=E.context,j.clearRect(0,0,w,C),j.drawImage(Z,0,0,B,y,0,0,w,C),Z=E.canvas,B=w,y=C,D=D==="prescale1"?"prescale2":"prescale1"}return{img:Z,paintWidth:B,paintHeight:y}}_createMaskCanvas(Z){const Q=this.ctx,{width:G,height:b}=Z,V=this.current.fillColor,M=this.current.patternFill,B=(0,n.getCurrentTransform)(Q);let y,D,E,j;if((Z.bitmap||Z.data)&&Z.count>1){const ol=Z.bitmap||Z.data.buffer;D=JSON.stringify(M?B:[B.slice(0,4),V]),y=this._cachedBitmapsMap.get(ol),y||(y=new Map,this._cachedBitmapsMap.set(ol,y));const Ll=y.get(D);if(Ll&&!M){const Dl=Math.round(Math.min(B[0],B[2])+B[4]),yl=Math.round(Math.min(B[1],B[3])+B[5]);return{canvas:Ll,offsetX:Dl,offsetY:yl}}E=Ll}E||(j=this.cachedCanvases.getCanvas("maskCanvas",G,b),q(j.context,Z));let w=U.Util.transform(B,[1/G,0,0,-1/b,0,0]);w=U.Util.transform(w,[1,0,0,1,0,-b]);const[C,k,f,Fl]=U.Util.getAxialAlignedBoundingBox([0,0,G,b],w),_=Math.round(f-C)||1,Zl=Math.round(Fl-k)||1,sl=this.cachedCanvases.getCanvas("fillCanvas",_,Zl),Ql=sl.context,tl=C,nl=k;Ql.translate(-tl,-nl),Ql.transform(...w),E||(E=this._scaleImage(j.canvas,(0,n.getCurrentTransformInverse)(Ql)),E=E.img,y&&M&&y.set(D,E)),Ql.imageSmoothingEnabled=ul((0,n.getCurrentTransform)(Ql),Z.interpolate),O(Ql,E,0,0,E.width,E.height,0,0,G,b),Ql.globalCompositeOperation="source-in";const Ml=U.Util.transform((0,n.getCurrentTransformInverse)(Ql),[1,0,0,1,-tl,-nl]);return Ql.fillStyle=M?V.getPattern(Q,this,Ml,m.FILL):V,Ql.fillRect(0,0,G,b),y&&!M&&(this.cachedCanvases.delete("fillCanvas"),y.set(D,sl.canvas)),{canvas:sl.canvas,offsetX:Math.round(tl),offsetY:Math.round(nl)}}setLineWidth(Z){Z!==this.current.lineWidth&&(this._cachedScaleForStroking[0]=-1),this.current.lineWidth=Z,this.ctx.lineWidth=Z}setLineCap(Z){this.ctx.lineCap=Sl[Z]}setLineJoin(Z){this.ctx.lineJoin=ml[Z]}setMiterLimit(Z){this.ctx.miterLimit=Z}setDash(Z,Q){const G=this.ctx;G.setLineDash!==void 0&&(G.setLineDash(Z),G.lineDashOffset=Q)}setRenderingIntent(Z){}setFlatness(Z){}setGState(Z){for(const[Q,G]of Z)switch(Q){case"LW":this.setLineWidth(G);break;case"LC":this.setLineCap(G);break;case"LJ":this.setLineJoin(G);break;case"ML":this.setMiterLimit(G);break;case"D":this.setDash(G[0],G[1]);break;case"RI":this.setRenderingIntent(G);break;case"FL":this.setFlatness(G);break;case"Font":this.setFont(G[0],G[1]);break;case"CA":this.current.strokeAlpha=G;break;case"ca":this.current.fillAlpha=G,this.ctx.globalAlpha=G;break;case"BM":this.ctx.globalCompositeOperation=G;break;case"SMask":this.current.activeSMask=G?this.tempSMask:null,this.tempSMask=null,this.checkSMaskState();break;case"TR":this.ctx.filter=this.current.transferMaps=this.filterFactory.addFilter(G);break}}get inSMaskMode(){return!!this.suspendedCtx}checkSMaskState(){const Z=this.inSMaskMode;this.current.activeSMask&&!Z?this.beginSMaskMode():!this.current.activeSMask&&Z&&this.endSMaskMode()}beginSMaskMode(){if(this.inSMaskMode)throw new Error("beginSMaskMode called while already in smask mode");const Z=this.ctx.canvas.width,Q=this.ctx.canvas.height,G="smaskGroupAt"+this.groupLevel,b=this.cachedCanvases.getCanvas(G,Z,Q);this.suspendedCtx=this.ctx,this.ctx=b.context;const V=this.ctx;V.setTransform(...(0,n.getCurrentTransform)(this.suspendedCtx)),r(this.suspendedCtx,V),I(V,this.suspendedCtx),this.setGState([["BM","source-over"],["ca",1],["CA",1]])}endSMaskMode(){if(!this.inSMaskMode)throw new Error("endSMaskMode called while not in smask mode");this.ctx._removeMirroring(),r(this.ctx,this.suspendedCtx),this.ctx=this.suspendedCtx,this.suspendedCtx=null}compose(Z){if(!this.current.activeSMask)return;Z?(Z[0]=Math.floor(Z[0]),Z[1]=Math.floor(Z[1]),Z[2]=Math.ceil(Z[2]),Z[3]=Math.ceil(Z[3])):Z=[0,0,this.ctx.canvas.width,this.ctx.canvas.height];const Q=this.current.activeSMask,G=this.suspendedCtx;Gl(G,Q,this.ctx,Z),this.ctx.save(),this.ctx.setTransform(1,0,0,1,0,0),this.ctx.clearRect(0,0,this.ctx.canvas.width,this.ctx.canvas.height),this.ctx.restore()}save(){this.inSMaskMode?(r(this.ctx,this.suspendedCtx),this.suspendedCtx.save()):this.ctx.save();const Z=this.current;this.stateStack.push(Z),this.current=Z.clone()}restore(){this.stateStack.length===0&&this.inSMaskMode&&this.endSMaskMode(),this.stateStack.length!==0&&(this.current=this.stateStack.pop(),this.inSMaskMode?(this.suspendedCtx.restore(),r(this.suspendedCtx,this.ctx)):this.ctx.restore(),this.checkSMaskState(),this.pendingClip=null,this._cachedScaleForStroking[0]=-1,this._cachedGetSinglePixelWidth=null)}transform(Z,Q,G,b,V,M){this.ctx.transform(Z,Q,G,b,V,M),this._cachedScaleForStroking[0]=-1,this._cachedGetSinglePixelWidth=null}constructPath(Z,Q,G){const b=this.ctx,V=this.current;let M=V.x,B=V.y,y,D;const E=(0,n.getCurrentTransform)(b),j=E[0]===0&&E[3]===0||E[1]===0&&E[2]===0,w=j?G.slice(0):null;for(let C=0,k=0,f=Z.length;Cc&&(D=c),this.current.fontSizeScale=Q/D,this.ctx.font=`${y} ${B} ${D}px ${M}`}setTextRenderingMode(Z){this.current.textRenderingMode=Z}setTextRise(Z){this.current.textRise=Z}moveText(Z,Q){this.current.x=this.current.lineX+=Z,this.current.y=this.current.lineY+=Q}setLeadingMoveText(Z,Q){this.setLeading(-Q),this.moveText(Z,Q)}setTextMatrix(Z,Q,G,b,V,M){this.current.textMatrix=[Z,Q,G,b,V,M],this.current.textMatrixScale=Math.hypot(Z,Q),this.current.x=this.current.lineX=0,this.current.y=this.current.lineY=0}nextLine(){this.moveText(0,this.current.leading)}paintChar(Z,Q,G,b){const V=this.ctx,M=this.current,B=M.font,y=M.textRenderingMode,D=M.fontSize/M.fontSizeScale,E=y&U.TextRenderingMode.FILL_STROKE_MASK,j=!!(y&U.TextRenderingMode.ADD_TO_PATH_FLAG),w=M.patternFill&&!B.missingFile;let C;(B.disableFontFace||j||w)&&(C=B.getPathGenerator(this.commonObjs,Z)),B.disableFontFace||w?(V.save(),V.translate(Q,G),V.beginPath(),C(V,D),b&&V.setTransform(...b),(E===U.TextRenderingMode.FILL||E===U.TextRenderingMode.FILL_STROKE)&&V.fill(),(E===U.TextRenderingMode.STROKE||E===U.TextRenderingMode.FILL_STROKE)&&V.stroke(),V.restore()):((E===U.TextRenderingMode.FILL||E===U.TextRenderingMode.FILL_STROKE)&&V.fillText(Z,Q,G),(E===U.TextRenderingMode.STROKE||E===U.TextRenderingMode.FILL_STROKE)&&V.strokeText(Z,Q,G)),j&&(this.pendingTextPaths||=[]).push({transform:(0,n.getCurrentTransform)(V),x:Q,y:G,fontSize:D,addToPath:C})}get isFontSubpixelAAEnabled(){const{context:Z}=this.cachedCanvases.getCanvas("isFontSubpixelAAEnabled",10,10);Z.scale(1.5,1),Z.fillText("I",0,10);const Q=Z.getImageData(0,0,10,10).data;let G=!1;for(let b=3;b0&&Q[b]<255){G=!0;break}return(0,U.shadow)(this,"isFontSubpixelAAEnabled",G)}showText(Z){const Q=this.current,G=Q.font;if(G.isType3Font)return this.showType3Text(Z);const b=Q.fontSize;if(b===0)return;const V=this.ctx,M=Q.fontSizeScale,B=Q.charSpacing,y=Q.wordSpacing,D=Q.fontDirection,E=Q.textHScale*D,j=Z.length,w=G.vertical,C=w?1:-1,k=G.defaultVMetrics,f=b*Q.fontMatrix[0],Fl=Q.textRenderingMode===U.TextRenderingMode.FILL&&!G.disableFontFace&&!Q.patternFill;V.save(),V.transform(...Q.textMatrix),V.translate(Q.x,Q.y+Q.textRise),D>0?V.scale(E,-1):V.scale(E,1);let _;if(Q.patternFill){V.save();const nl=Q.fillColor.getPattern(V,this,(0,n.getCurrentTransformInverse)(V),m.FILL);_=(0,n.getCurrentTransform)(V),V.restore(),V.fillStyle=nl}let Zl=Q.lineWidth;const sl=Q.textMatrixScale;if(sl===0||Zl===0){const nl=Q.textRenderingMode&U.TextRenderingMode.FILL_STROKE_MASK;(nl===U.TextRenderingMode.STROKE||nl===U.TextRenderingMode.FILL_STROKE)&&(Zl=this.getSinglePixelWidth())}else Zl/=sl;if(M!==1&&(V.scale(M,M),Zl/=M),V.lineWidth=Zl,G.isInvalidPDFjsFont){const nl=[];let Ml=0;for(const ol of Z)nl.push(ol.unicode),Ml+=ol.width;V.fillText(nl.join(""),0,0),Q.x+=Ml*f*E,V.restore(),this.compose();return}let Ql=0,tl;for(tl=0;tl0){const Cl=V.measureText(Ll).width*1e3/b*M;if(Klnew X(M,this.commonObjs,this.objs,this.canvasFactory,this.filterFactory,{optionalContentConfig:this.optionalContentConfig,markedContentStack:this.markedContentStack})};Q=new d(Z,G,this.ctx,V,b)}else Q=this._getPattern(Z[1],Z[2]);return Q}setStrokeColorN(){this.current.strokeColor=this.getColorN_Pattern(arguments)}setFillColorN(){this.current.fillColor=this.getColorN_Pattern(arguments),this.current.patternFill=!0}setStrokeRGBColor(Z,Q,G){const b=U.Util.makeHexColor(Z,Q,G);this.ctx.strokeStyle=b,this.current.strokeColor=b}setFillRGBColor(Z,Q,G){const b=U.Util.makeHexColor(Z,Q,G);this.ctx.fillStyle=b,this.current.fillColor=b,this.current.patternFill=!1}_getPattern(Z,Q=null){let G;return this.cachedPatterns.has(Z)?G=this.cachedPatterns.get(Z):(G=W(this.getObject(Z)),this.cachedPatterns.set(Z,G)),Q&&(G.matrix=Q),G}shadingFill(Z){if(!this.contentVisible)return;const Q=this.ctx;this.save();const G=this._getPattern(Z);Q.fillStyle=G.getPattern(Q,this,(0,n.getCurrentTransformInverse)(Q),m.SHADING);const b=(0,n.getCurrentTransformInverse)(Q);if(b){const{width:V,height:M}=Q.canvas,[B,y,D,E]=U.Util.getAxialAlignedBoundingBox([0,0,V,M],b);this.ctx.fillRect(B,y,D-B,E-y)}else this.ctx.fillRect(-1e10,-1e10,2e10,2e10);this.compose(this.current.getClippedPathBoundingBox()),this.restore()}beginInlineImage(){(0,U.unreachable)("Should not call beginInlineImage")}beginImageData(){(0,U.unreachable)("Should not call beginImageData")}paintFormXObjectBegin(Z,Q){if(this.contentVisible&&(this.save(),this.baseTransformStack.push(this.baseTransform),Array.isArray(Z)&&Z.length===6&&this.transform(...Z),this.baseTransform=(0,n.getCurrentTransform)(this.ctx),Q)){const G=Q[2]-Q[0],b=Q[3]-Q[1];this.ctx.rect(Q[0],Q[1],G,b),this.current.updateRectMinMax((0,n.getCurrentTransform)(this.ctx),Q),this.clip(),this.endPath()}}paintFormXObjectEnd(){this.contentVisible&&(this.restore(),this.baseTransform=this.baseTransformStack.pop())}beginGroup(Z){if(!this.contentVisible)return;this.save(),this.inSMaskMode&&(this.endSMaskMode(),this.current.activeSMask=null);const Q=this.ctx;Z.isolated||(0,U.info)("TODO: Support non-isolated groups."),Z.knockout&&(0,U.warn)("Knockout groups not supported.");const G=(0,n.getCurrentTransform)(Q);if(Z.matrix&&Q.transform(...Z.matrix),!Z.bbox)throw new Error("Bounding box is required.");let b=U.Util.getAxialAlignedBoundingBox(Z.bbox,(0,n.getCurrentTransform)(Q));const V=[0,0,Q.canvas.width,Q.canvas.height];b=U.Util.intersect(b,V)||[0,0,0,0];const M=Math.floor(b[0]),B=Math.floor(b[1]);let y=Math.max(Math.ceil(b[2])-M,1),D=Math.max(Math.ceil(b[3])-B,1),E=1,j=1;y>s&&(E=y/s,y=s),D>s&&(j=D/s,D=s),this.current.startNewPathAndClipBox([0,0,y,D]);let w="groupAt"+this.groupLevel;Z.smask&&(w+="_smask_"+this.smaskCounter++%2);const C=this.cachedCanvases.getCanvas(w,y,D),k=C.context;k.scale(1/E,1/j),k.translate(-M,-B),k.transform(...G),Z.smask?this.smaskStack.push({canvas:C.canvas,context:k,offsetX:M,offsetY:B,scaleX:E,scaleY:j,subtype:Z.smask.subtype,backdrop:Z.smask.backdrop,transferMap:Z.smask.transferMap||null,startTransformInverse:null}):(Q.setTransform(1,0,0,1,0,0),Q.translate(M,B),Q.scale(E,j),Q.save()),r(Q,k),this.ctx=k,this.setGState([["BM","source-over"],["ca",1],["CA",1]]),this.groupStack.push(Q),this.groupLevel++}endGroup(Z){if(!this.contentVisible)return;this.groupLevel--;const Q=this.ctx,G=this.groupStack.pop();if(this.ctx=G,this.ctx.imageSmoothingEnabled=!1,Z.smask)this.tempSMask=this.smaskStack.pop(),this.restore();else{this.ctx.restore();const b=(0,n.getCurrentTransform)(this.ctx);this.restore(),this.ctx.save(),this.ctx.setTransform(...b);const V=U.Util.getAxialAlignedBoundingBox([0,0,Q.canvas.width,Q.canvas.height],b);this.ctx.drawImage(Q.canvas,0,0),this.ctx.restore(),this.compose(V)}}beginAnnotation(Z,Q,G,b,V){if(this.#l(),P(this.ctx),this.ctx.save(),this.save(),this.baseTransform&&this.ctx.setTransform(...this.baseTransform),Array.isArray(Q)&&Q.length===4){const M=Q[2]-Q[0],B=Q[3]-Q[1];if(V&&this.annotationCanvasMap){G=G.slice(),G[4]-=Q[0],G[5]-=Q[1],Q=Q.slice(),Q[0]=Q[1]=0,Q[2]=M,Q[3]=B;const[y,D]=U.Util.singularValueDecompose2dScale((0,n.getCurrentTransform)(this.ctx)),{viewportScale:E}=this,j=Math.ceil(M*this.outputScaleX*E),w=Math.ceil(B*this.outputScaleY*E);this.annotationCanvas=this.canvasFactory.create(j,w);const{canvas:C,context:k}=this.annotationCanvas;this.annotationCanvasMap.set(Z,C),this.annotationCanvas.savedCtx=this.ctx,this.ctx=k,this.ctx.save(),this.ctx.setTransform(y,0,0,-D,0,B*D),P(this.ctx)}else P(this.ctx),this.ctx.rect(Q[0],Q[1],M,B),this.ctx.clip(),this.endPath()}this.current=new Ul(this.ctx.canvas.width,this.ctx.canvas.height),this.transform(...G),this.transform(...b)}endAnnotation(){this.annotationCanvas&&(this.ctx.restore(),this.#U(),this.ctx=this.annotationCanvas.savedCtx,delete this.annotationCanvas.savedCtx,delete this.annotationCanvas)}paintImageMaskXObject(Z){if(!this.contentVisible)return;const Q=Z.count;Z=this.getObject(Z.data,Z),Z.count=Q;const G=this.ctx,b=this.processingType3;if(b&&(b.compiled===void 0&&(b.compiled=v(Z)),b.compiled)){b.compiled(G);return}const V=this._createMaskCanvas(Z),M=V.canvas;G.save(),G.setTransform(1,0,0,1,0,0),G.drawImage(M,V.offsetX,V.offsetY),G.restore(),this.compose()}paintImageMaskXObjectRepeat(Z,Q,G=0,b=0,V,M){if(!this.contentVisible)return;Z=this.getObject(Z.data,Z);const B=this.ctx;B.save();const y=(0,n.getCurrentTransform)(B);B.transform(Q,G,b,V,0,0);const D=this._createMaskCanvas(Z);B.setTransform(1,0,0,1,D.offsetX-y[4],D.offsetY-y[5]);for(let E=0,j=M.length;Ej?E/j:1,B=D>j?D/j:1}}this._cachedScaleForStroking[0]=M,this._cachedScaleForStroking[1]=B}return this._cachedScaleForStroking}rescaleAndStroke(Z){const{ctx:Q}=this,{lineWidth:G}=this.current,[b,V]=this.getScaleForStroking();if(Q.lineWidth=G||1,b===1&&V===1){Q.stroke();return}const M=Q.getLineDash();if(Z&&Q.save(),Q.scale(b,V),M.length>0){const B=Math.max(b,V);Q.setLineDash(M.map(y=>y/B)),Q.lineDashOffset/=B}Q.stroke(),Z&&Q.restore()}isContentVisible(){for(let Z=this.markedContentStack.length-1;Z>=0;Z--)if(!this.markedContentStack[Z].visible)return!1;return!0}}for(const i in U.OPS)X.prototype[i]!==void 0&&(X.prototype[U.OPS[i]]=X.prototype[i])},419:(T,N,t)=>{t.d(N,{DOMCMapReaderFactory:()=>e,DOMCanvasFactory:()=>S,DOMFilterFactory:()=>Y,DOMSVGFactory:()=>R,DOMStandardFontDataFactory:()=>F,PDFDateString:()=>L,PageViewport:()=>W,PixelsPerInch:()=>z,RenderingCancelledException:()=>J,StatTimer:()=>s,fetchData:()=>p,getColorValues:()=>O,getCurrentTransform:()=>v,getCurrentTransformInverse:()=>Ul,getFilenameFromUrl:()=>l,getPdfFilenameFromUrl:()=>c,getRGB:()=>x,getXfaPageViewport:()=>I,isDataScheme:()=>d,isPdfFile:()=>a,isValidFetchUrl:()=>h,noContextMenu:()=>o,setLayerDimensions:()=>Nl});var U=t(583),n=t(292);const m="http://www.w3.org/2000/svg";class z{static CSS=96;static PDF=72;static PDF_TO_CSS_UNITS=this.CSS/this.PDF}class Y extends U.BaseFilterFactory{#l;#U;#d;#F;#t;#Z=0;constructor({docId:r,ownerDocument:P=globalThis.document}={}){super(),this.#d=r,this.#F=P}get#c(){return this.#l||=new Map}get#W(){return this.#t||=new Map}get#V(){if(!this.#U){const r=this.#F.createElement("div"),{style:P}=r;P.visibility="hidden",P.contain="strict",P.width=P.height=0,P.position="absolute",P.top=P.left=0,P.zIndex=-1;const ll=this.#F.createElementNS(m,"svg");ll.setAttribute("width",0),ll.setAttribute("height",0),this.#U=this.#F.createElementNS(m,"defs"),r.append(ll),ll.append(this.#U),this.#F.body.append(r)}return this.#U}addFilter(r){if(!r)return"none";let P=this.#c.get(r);if(P)return P;let ll,Vl,cl,hl;if(r.length===1){const ml=r[0],Xl=new Array(256);for(let Wl=0;Wl<256;Wl++)Xl[Wl]=ml[Wl]/255;hl=ll=Vl=cl=Xl.join(",")}else{const[ml,Xl,Wl]=r,X=new Array(256),i=new Array(256),Z=new Array(256);for(let Q=0;Q<256;Q++)X[Q]=ml[Q]/255,i[Q]=Xl[Q]/255,Z[Q]=Wl[Q]/255;ll=X.join(","),Vl=i.join(","),cl=Z.join(","),hl=`${ll}${Vl}${cl}`}if(P=this.#c.get(hl),P)return this.#c.set(r,P),P;const Gl=`g_${this.#d}_transfer_map_${this.#Z++}`,ul=`url(#${Gl})`;this.#c.set(r,ul),this.#c.set(hl,ul);const Sl=this.#n(Gl);return this.#Q(ll,Vl,cl,Sl),ul}addHCMFilter(r,P){const ll=`${r}-${P}`,Vl="base";let cl=this.#W.get(Vl);if(cl?.key===ll||(cl?(cl.filter?.remove(),cl.key=ll,cl.url="none",cl.filter=null):(cl={key:ll,url:"none",filter:null},this.#W.set(Vl,cl)),!r||!P))return cl.url;const hl=this.#a(r);r=n.Util.makeHexColor(...hl);const Gl=this.#a(P);if(P=n.Util.makeHexColor(...Gl),this.#V.style.color="",r==="#000000"&&P==="#ffffff"||r===P)return cl.url;const ul=new Array(256);for(let X=0;X<=255;X++){const i=X/255;ul[X]=i<=.03928?i/12.92:((i+.055)/1.055)**2.4}const Sl=ul.join(","),ml=`g_${this.#d}_hcm_filter`,Xl=cl.filter=this.#n(ml);this.#Q(Sl,Sl,Sl,Xl),this.#N(Xl);const Wl=(X,i)=>{const Z=hl[X]/255,Q=Gl[X]/255,G=new Array(i+1);for(let b=0;b<=i;b++)G[b]=Z+b/i*(Q-Z);return G.join(",")};return this.#Q(Wl(0,5),Wl(1,5),Wl(2,5),Xl),cl.url=`url(#${ml})`,cl.url}addHighlightHCMFilter(r,P,ll,Vl,cl){const hl=`${P}-${ll}-${Vl}-${cl}`;let Gl=this.#W.get(r);if(Gl?.key===hl||(Gl?(Gl.filter?.remove(),Gl.key=hl,Gl.url="none",Gl.filter=null):(Gl={key:hl,url:"none",filter:null},this.#W.set(r,Gl)),!P||!ll))return Gl.url;const[ul,Sl]=[P,ll].map(this.#a.bind(this));let ml=Math.round(.2126*ul[0]+.7152*ul[1]+.0722*ul[2]),Xl=Math.round(.2126*Sl[0]+.7152*Sl[1]+.0722*Sl[2]),[Wl,X]=[Vl,cl].map(this.#a.bind(this));Xl{const M=new Array(256),B=(Xl-ml)/V,y=G/255,D=(b-G)/(255*V);let E=0;for(let j=0;j<=V;j++){const w=Math.round(ml+j*B),C=y+j*D;for(let k=E;k<=w;k++)M[k]=C;E=w+1}for(let j=E;j<256;j++)M[j]=M[E-1];return M.join(",")},Z=`g_${this.#d}_hcm_${r}_filter`,Q=Gl.filter=this.#n(Z);return this.#N(Q),this.#Q(i(Wl[0],X[0],5),i(Wl[1],X[1],5),i(Wl[2],X[2],5),Q),Gl.url=`url(#${Z})`,Gl.url}destroy(r=!1){r&&this.#W.size!==0||(this.#U&&(this.#U.parentNode.parentNode.remove(),this.#U=null),this.#l&&(this.#l.clear(),this.#l=null),this.#Z=0)}#N(r){const P=this.#F.createElementNS(m,"feColorMatrix");P.setAttribute("type","matrix"),P.setAttribute("values","0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0 0 0 1 0"),r.append(P)}#n(r){const P=this.#F.createElementNS(m,"filter");return P.setAttribute("color-interpolation-filters","sRGB"),P.setAttribute("id",r),this.#V.append(P),P}#R(r,P,ll){const Vl=this.#F.createElementNS(m,P);Vl.setAttribute("type","discrete"),Vl.setAttribute("tableValues",ll),r.append(Vl)}#Q(r,P,ll,Vl){const cl=this.#F.createElementNS(m,"feComponentTransfer");Vl.append(cl),this.#R(cl,"feFuncR",r),this.#R(cl,"feFuncG",P),this.#R(cl,"feFuncB",ll)}#a(r){return this.#V.style.color=r,x(getComputedStyle(this.#V).getPropertyValue("color"))}}class S extends U.BaseCanvasFactory{constructor({ownerDocument:r=globalThis.document}={}){super(),this._document=r}_createCanvas(r,P){const ll=this._document.createElement("canvas");return ll.width=r,ll.height=P,ll}}async function p(q,r="text"){if(h(q,document.baseURI)){const P=await fetch(q);if(!P.ok)throw new Error(P.statusText);switch(r){case"arraybuffer":return P.arrayBuffer();case"blob":return P.blob();case"json":return P.json()}return P.text()}return new Promise((P,ll)=>{const Vl=new XMLHttpRequest;Vl.open("GET",q,!0),Vl.responseType=r,Vl.onreadystatechange=()=>{if(Vl.readyState===XMLHttpRequest.DONE){if(Vl.status===200||Vl.status===0){switch(r){case"arraybuffer":case"blob":case"json":P(Vl.response);return}P(Vl.responseText);return}ll(new Error(Vl.statusText))}},Vl.send(null)})}class e extends U.BaseCMapReaderFactory{_fetchData(r,P){return p(r,this.isCompressed?"arraybuffer":"text").then(ll=>({cMapData:ll instanceof ArrayBuffer?new Uint8Array(ll):(0,n.stringToBytes)(ll),compressionType:P}))}}class F extends U.BaseStandardFontDataFactory{_fetchData(r){return p(r,"arraybuffer").then(P=>new Uint8Array(P))}}class R extends U.BaseSVGFactory{_createSVG(r){return document.createElementNS(m,r)}}class W{constructor({viewBox:r,scale:P,rotation:ll,offsetX:Vl=0,offsetY:cl=0,dontFlip:hl=!1}){this.viewBox=r,this.scale=P,this.rotation=ll,this.offsetX=Vl,this.offsetY=cl;const Gl=(r[2]+r[0])/2,ul=(r[3]+r[1])/2;let Sl,ml,Xl,Wl;switch(ll%=360,ll<0&&(ll+=360),ll){case 180:Sl=-1,ml=0,Xl=0,Wl=1;break;case 90:Sl=0,ml=1,Xl=1,Wl=0;break;case 270:Sl=0,ml=-1,Xl=-1,Wl=0;break;case 0:Sl=1,ml=0,Xl=0,Wl=-1;break;default:throw new Error("PageViewport: Invalid rotation, must be a multiple of 90 degrees.")}hl&&(Xl=-Xl,Wl=-Wl);let X,i,Z,Q;Sl===0?(X=Math.abs(ul-r[1])*P+Vl,i=Math.abs(Gl-r[0])*P+cl,Z=(r[3]-r[1])*P,Q=(r[2]-r[0])*P):(X=Math.abs(Gl-r[0])*P+Vl,i=Math.abs(ul-r[1])*P+cl,Z=(r[2]-r[0])*P,Q=(r[3]-r[1])*P),this.transform=[Sl*P,ml*P,Xl*P,Wl*P,X-Sl*P*Gl-Xl*P*ul,i-ml*P*Gl-Wl*P*ul],this.width=Z,this.height=Q}get rawDims(){const{viewBox:r}=this;return(0,n.shadow)(this,"rawDims",{pageWidth:r[2]-r[0],pageHeight:r[3]-r[1],pageX:r[0],pageY:r[1]})}clone({scale:r=this.scale,rotation:P=this.rotation,offsetX:ll=this.offsetX,offsetY:Vl=this.offsetY,dontFlip:cl=!1}={}){return new W({viewBox:this.viewBox.slice(),scale:r,rotation:P,offsetX:ll,offsetY:Vl,dontFlip:cl})}convertToViewportPoint(r,P){return n.Util.applyTransform([r,P],this.transform)}convertToViewportRectangle(r){const P=n.Util.applyTransform([r[0],r[1]],this.transform),ll=n.Util.applyTransform([r[2],r[3]],this.transform);return[P[0],P[1],ll[0],ll[1]]}convertToPdfPoint(r,P){return n.Util.applyInverseTransform([r,P],this.transform)}}class J extends n.BaseException{constructor(r,P=0){super(r,"RenderingCancelledException"),this.extraDelay=P}}function d(q){const r=q.length;let P=0;for(;P=1&&Vl<=12?Vl-1:0;let cl=parseInt(P[3],10);cl=cl>=1&&cl<=31?cl:1;let hl=parseInt(P[4],10);hl=hl>=0&&hl<=23?hl:0;let Gl=parseInt(P[5],10);Gl=Gl>=0&&Gl<=59?Gl:0;let ul=parseInt(P[6],10);ul=ul>=0&&ul<=59?ul:0;const Sl=P[7]||"Z";let ml=parseInt(P[8],10);ml=ml>=0&&ml<=23?ml:0;let Xl=parseInt(P[9],10)||0;return Xl=Xl>=0&&Xl<=59?Xl:0,Sl==="-"?(hl+=ml,Gl+=Xl):Sl==="+"&&(hl-=ml,Gl-=Xl),new Date(Date.UTC(ll,Vl,cl,hl,Gl,ul))}}function I(q,{scale:r=1,rotation:P=0}){const{width:ll,height:Vl}=q.attributes.style,cl=[0,0,parseInt(ll),parseInt(Vl)];return new W({viewBox:cl,scale:r,rotation:P})}function x(q){if(q.startsWith("#")){const r=parseInt(q.slice(1),16);return[(r&16711680)>>16,(r&65280)>>8,r&255]}return q.startsWith("rgb(")?q.slice(4,-1).split(",").map(r=>parseInt(r)):q.startsWith("rgba(")?q.slice(5,-1).split(",").map(r=>parseInt(r)).slice(0,3):((0,n.warn)(`Not a valid color format: "${q}"`),[0,0,0])}function O(q){const r=document.createElement("span");r.style.visibility="hidden",document.body.append(r);for(const P of q.keys()){r.style.color=P;const ll=window.getComputedStyle(r).color;q.set(P,x(ll))}r.remove()}function v(q){const{a:r,b:P,c:ll,d:Vl,e:cl,f:hl}=q.getTransform();return[r,P,ll,Vl,cl,hl]}function Ul(q){const{a:r,b:P,c:ll,d:Vl,e:cl,f:hl}=q.getTransform().invertSelf();return[r,P,ll,Vl,cl,hl]}function Nl(q,r,P=!1,ll=!0){if(r instanceof W){const{pageWidth:Vl,pageHeight:cl}=r.rawDims,{style:hl}=q,Gl=n.FeatureTest.isCSSRoundSupported,ul=`var(--scale-factor) * ${Vl}px`,Sl=`var(--scale-factor) * ${cl}px`,ml=Gl?`round(${ul}, 1px)`:`calc(${ul})`,Xl=Gl?`round(${Sl}, 1px)`:`calc(${Sl})`;!P||r.rotation%180===0?(hl.width=ml,hl.height=Xl):(hl.width=Xl,hl.height=ml)}ll&&q.setAttribute("data-main-rotation",r.rotation)}},47:(T,N,t)=>{t.d(N,{DrawLayer:()=>m});var U=t(419),n=t(292);class m{#l=null;#U=0;#d=new Map;#F=new Map;constructor({pageIndex:Y}){this.pageIndex=Y}setParent(Y){if(!this.#l){this.#l=Y;return}if(this.#l!==Y){if(this.#d.size>0)for(const S of this.#d.values())S.remove(),Y.append(S);this.#l=Y}}static get _svgFactory(){return(0,n.shadow)(this,"_svgFactory",new U.DOMSVGFactory)}static#t(Y,{x:S=0,y:p=0,width:e=1,height:F=1}={}){const{style:R}=Y;R.top=`${100*p}%`,R.left=`${100*S}%`,R.width=`${100*e}%`,R.height=`${100*F}%`}#Z(Y){const S=m._svgFactory.create(1,1,!0);return this.#l.append(S),S.setAttribute("aria-hidden",!0),m.#t(S,Y),S}#c(Y,S){const p=m._svgFactory.createElement("clipPath");Y.append(p);const e=`clip_${S}`;p.setAttribute("id",e),p.setAttribute("clipPathUnits","objectBoundingBox");const F=m._svgFactory.createElement("use");return p.append(F),F.setAttribute("href",`#${S}`),F.classList.add("clip"),e}highlight(Y,S,p,e=!1){const F=this.#U++,R=this.#Z(Y.box);R.classList.add("highlight"),Y.free&&R.classList.add("free");const W=m._svgFactory.createElement("defs");R.append(W);const J=m._svgFactory.createElement("path");W.append(J);const d=`path_p${this.pageIndex}_${F}`;J.setAttribute("id",d),J.setAttribute("d",Y.toSVGPath()),e&&this.#F.set(F,J);const a=this.#c(W,d),l=m._svgFactory.createElement("use");return R.append(l),R.setAttribute("fill",S),R.setAttribute("fill-opacity",p),l.setAttribute("href",`#${d}`),this.#d.set(F,R),{id:F,clipPathId:`url(#${a})`}}highlightOutline(Y){const S=this.#U++,p=this.#Z(Y.box);p.classList.add("highlightOutline");const e=m._svgFactory.createElement("defs");p.append(e);const F=m._svgFactory.createElement("path");e.append(F);const R=`path_p${this.pageIndex}_${S}`;F.setAttribute("id",R),F.setAttribute("d",Y.toSVGPath()),F.setAttribute("vector-effect","non-scaling-stroke");let W;if(Y.free){p.classList.add("free");const a=m._svgFactory.createElement("mask");e.append(a),W=`mask_p${this.pageIndex}_${S}`,a.setAttribute("id",W),a.setAttribute("maskUnits","objectBoundingBox");const l=m._svgFactory.createElement("rect");a.append(l),l.setAttribute("width","1"),l.setAttribute("height","1"),l.setAttribute("fill","white");const c=m._svgFactory.createElement("use");a.append(c),c.setAttribute("href",`#${R}`),c.setAttribute("stroke","none"),c.setAttribute("fill","black"),c.setAttribute("fill-rule","nonzero"),c.classList.add("mask")}const J=m._svgFactory.createElement("use");p.append(J),J.setAttribute("href",`#${R}`),W&&J.setAttribute("mask",`url(#${W})`);const d=J.cloneNode();return p.append(d),J.classList.add("mainOutline"),d.classList.add("secondaryOutline"),this.#d.set(S,p),S}finalizeLine(Y,S){const p=this.#F.get(Y);this.#F.delete(Y),this.updateBox(Y,S.box),p.setAttribute("d",S.toSVGPath())}updateLine(Y,S){this.#d.get(Y).firstChild.firstChild.setAttribute("d",S.toSVGPath())}removeFreeHighlight(Y){this.remove(Y),this.#F.delete(Y)}updatePath(Y,S){this.#F.get(Y).setAttribute("d",S.toSVGPath())}updateBox(Y,S){m.#t(this.#d.get(Y),S)}show(Y,S){this.#d.get(Y).classList.toggle("hidden",!S)}rotate(Y,S){this.#d.get(Y).setAttribute("data-main-rotation",S)}changeColor(Y,S){this.#d.get(Y).setAttribute("fill",S)}changeOpacity(Y,S){this.#d.get(Y).setAttribute("fill-opacity",S)}addClass(Y,S){this.#d.get(Y).classList.add(S)}removeClass(Y,S){this.#d.get(Y).classList.remove(S)}remove(Y){this.#l!==null&&(this.#d.get(Y).remove(),this.#d.delete(Y))}destroy(){this.#l=null;for(const Y of this.#d.values())Y.remove();this.#d.clear()}}},731:(T,N,t)=>{t.d(N,{AnnotationEditorLayer:()=>d});var U=t(292),n=t(310),m=t(830),z=t(976);const Y=/\r\n?|\n/g;class S extends n.AnnotationEditor{#l=this.editorDivBlur.bind(this);#U=this.editorDivFocus.bind(this);#d=this.editorDivInput.bind(this);#F=this.editorDivKeydown.bind(this);#t=this.editorDivPaste.bind(this);#Z;#c="";#W=`${this.id}-editor`;#V;#N=null;static _freeTextDefaultContent="";static _internalPadding=0;static _defaultColor=null;static _defaultFontSize=10;static get _keyboardManager(){const l=S.prototype,c=o=>o.isEmpty(),s=m.AnnotationEditorUIManager.TRANSLATE_SMALL,h=m.AnnotationEditorUIManager.TRANSLATE_BIG;return(0,U.shadow)(this,"_keyboardManager",new m.KeyboardManager([[["ctrl+s","mac+meta+s","ctrl+p","mac+meta+p"],l.commitOrRemove,{bubbles:!0}],[["ctrl+Enter","mac+meta+Enter","Escape","mac+Escape"],l.commitOrRemove],[["ArrowLeft","mac+ArrowLeft"],l._translateEmpty,{args:[-s,0],checker:c}],[["ctrl+ArrowLeft","mac+shift+ArrowLeft"],l._translateEmpty,{args:[-h,0],checker:c}],[["ArrowRight","mac+ArrowRight"],l._translateEmpty,{args:[s,0],checker:c}],[["ctrl+ArrowRight","mac+shift+ArrowRight"],l._translateEmpty,{args:[h,0],checker:c}],[["ArrowUp","mac+ArrowUp"],l._translateEmpty,{args:[0,-s],checker:c}],[["ctrl+ArrowUp","mac+shift+ArrowUp"],l._translateEmpty,{args:[0,-h],checker:c}],[["ArrowDown","mac+ArrowDown"],l._translateEmpty,{args:[0,s],checker:c}],[["ctrl+ArrowDown","mac+shift+ArrowDown"],l._translateEmpty,{args:[0,h],checker:c}]]))}static _type="freetext";static _editorType=U.AnnotationEditorType.FREETEXT;constructor(l){super({...l,name:"freeTextEditor"}),this.#Z=l.color||S._defaultColor||n.AnnotationEditor._defaultLineColor,this.#V=l.fontSize||S._defaultFontSize}static initialize(l,c){n.AnnotationEditor.initialize(l,c,{strings:["pdfjs-free-text-default-content"]});const s=getComputedStyle(document.documentElement);this._internalPadding=parseFloat(s.getPropertyValue("--freetext-padding"))}static updateDefaultParams(l,c){switch(l){case U.AnnotationEditorParamsType.FREETEXT_SIZE:S._defaultFontSize=c;break;case U.AnnotationEditorParamsType.FREETEXT_COLOR:S._defaultColor=c;break}}updateParams(l,c){switch(l){case U.AnnotationEditorParamsType.FREETEXT_SIZE:this.#n(c);break;case U.AnnotationEditorParamsType.FREETEXT_COLOR:this.#R(c);break}}static get defaultPropertiesToUpdate(){return[[U.AnnotationEditorParamsType.FREETEXT_SIZE,S._defaultFontSize],[U.AnnotationEditorParamsType.FREETEXT_COLOR,S._defaultColor||n.AnnotationEditor._defaultLineColor]]}get propertiesToUpdate(){return[[U.AnnotationEditorParamsType.FREETEXT_SIZE,this.#V],[U.AnnotationEditorParamsType.FREETEXT_COLOR,this.#Z]]}#n(l){const c=h=>{this.editorDiv.style.fontSize=`calc(${h}px * var(--scale-factor))`,this.translate(0,-(h-this.#V)*this.parentScale),this.#V=h,this.#a()},s=this.#V;this.addCommands({cmd:c.bind(this,l),undo:c.bind(this,s),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:U.AnnotationEditorParamsType.FREETEXT_SIZE,overwriteIfSameType:!0,keepUndo:!0})}#R(l){const c=h=>{this.#Z=this.editorDiv.style.color=h},s=this.#Z;this.addCommands({cmd:c.bind(this,l),undo:c.bind(this,s),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:U.AnnotationEditorParamsType.FREETEXT_COLOR,overwriteIfSameType:!0,keepUndo:!0})}_translateEmpty(l,c){this._uiManager.translateSelectedEditors(l,c,!0)}getInitialTranslation(){const l=this.parentScale;return[-S._internalPadding*l,-(S._internalPadding+this.#V)*l]}rebuild(){this.parent&&(super.rebuild(),this.div!==null&&(this.isAttachedToDOM||this.parent.add(this)))}enableEditMode(){this.isInEditMode()||(this.parent.setEditingState(!1),this.parent.updateToolbar(U.AnnotationEditorType.FREETEXT),super.enableEditMode(),this.overlayDiv.classList.remove("enabled"),this.editorDiv.contentEditable=!0,this._isDraggable=!1,this.div.removeAttribute("aria-activedescendant"),this.editorDiv.addEventListener("keydown",this.#F),this.editorDiv.addEventListener("focus",this.#U),this.editorDiv.addEventListener("blur",this.#l),this.editorDiv.addEventListener("input",this.#d),this.editorDiv.addEventListener("paste",this.#t))}disableEditMode(){this.isInEditMode()&&(this.parent.setEditingState(!0),super.disableEditMode(),this.overlayDiv.classList.add("enabled"),this.editorDiv.contentEditable=!1,this.div.setAttribute("aria-activedescendant",this.#W),this._isDraggable=!0,this.editorDiv.removeEventListener("keydown",this.#F),this.editorDiv.removeEventListener("focus",this.#U),this.editorDiv.removeEventListener("blur",this.#l),this.editorDiv.removeEventListener("input",this.#d),this.editorDiv.removeEventListener("paste",this.#t),this.div.focus({preventScroll:!0}),this.isEditing=!1,this.parent.div.classList.add("freetextEditing"))}focusin(l){this._focusEventsAllowed&&(super.focusin(l),l.target!==this.editorDiv&&this.editorDiv.focus())}onceAdded(){this.width||(this.enableEditMode(),this.editorDiv.focus(),this._initialOptions?.isCentered&&this.center(),this._initialOptions=null)}isEmpty(){return!this.editorDiv||this.editorDiv.innerText.trim()===""}remove(){this.isEditing=!1,this.parent&&(this.parent.setEditingState(!0),this.parent.div.classList.add("freetextEditing")),super.remove()}#Q(){const l=[];this.editorDiv.normalize();for(const c of this.editorDiv.childNodes)l.push(S.#b(c));return l.join(` +`)}#a(){const[l,c]=this.parentDimensions;let s;if(this.isAttachedToDOM)s=this.div.getBoundingClientRect();else{const{currentLayer:h,div:o}=this,u=o.style.display,L=o.classList.contains("hidden");o.classList.remove("hidden"),o.style.display="hidden",h.div.append(this.div),s=o.getBoundingClientRect(),o.remove(),o.style.display=u,o.classList.toggle("hidden",L)}this.rotation%180===this.parentRotation%180?(this.width=s.width/l,this.height=s.height/c):(this.width=s.height/l,this.height=s.width/c),this.fixAndSetPosition()}commit(){if(!this.isInEditMode())return;super.commit(),this.disableEditMode();const l=this.#c,c=this.#c=this.#Q().trimEnd();if(l===c)return;const s=h=>{if(this.#c=h,!h){this.remove();return}this.#s(),this._uiManager.rebuild(this),this.#a()};this.addCommands({cmd:()=>{s(c)},undo:()=>{s(l)},mustExec:!1}),this.#a()}shouldGetKeyboardEvents(){return this.isInEditMode()}enterInEditMode(){this.enableEditMode(),this.editorDiv.focus()}dblclick(l){this.enterInEditMode()}keydown(l){l.target===this.div&&l.key==="Enter"&&(this.enterInEditMode(),l.preventDefault())}editorDivKeydown(l){S._keyboardManager.exec(this,l)}editorDivFocus(l){this.isEditing=!0}editorDivBlur(l){this.isEditing=!1}editorDivInput(l){this.parent.div.classList.toggle("freetextEditing",this.isEmpty())}disableEditing(){this.editorDiv.setAttribute("role","comment"),this.editorDiv.removeAttribute("aria-multiline")}enableEditing(){this.editorDiv.setAttribute("role","textbox"),this.editorDiv.setAttribute("aria-multiline",!0)}render(){if(this.div)return this.div;let l,c;this.width&&(l=this.x,c=this.y),super.render(),this.editorDiv=document.createElement("div"),this.editorDiv.className="internal",this.editorDiv.setAttribute("id",this.#W),this.editorDiv.setAttribute("data-l10n-id","pdfjs-free-text"),this.enableEditing(),n.AnnotationEditor._l10nPromise.get("pdfjs-free-text-default-content").then(h=>this.editorDiv?.setAttribute("default-content",h)),this.editorDiv.contentEditable=!0;const{style:s}=this.editorDiv;if(s.fontSize=`calc(${this.#V}px * var(--scale-factor))`,s.color=this.#Z,this.div.append(this.editorDiv),this.overlayDiv=document.createElement("div"),this.overlayDiv.classList.add("overlay","enabled"),this.div.append(this.overlayDiv),(0,m.bindEvents)(this,this.div,["dblclick","keydown"]),this.width){const[h,o]=this.parentDimensions;if(this.annotationElementId){const{position:u}=this.#N;let[L,I]=this.getInitialTranslation();[L,I]=this.pageTranslationToScreen(L,I);const[x,O]=this.pageDimensions,[v,Ul]=this.pageTranslation;let Nl,q;switch(this.rotation){case 0:Nl=l+(u[0]-v)/x,q=c+this.height-(u[1]-Ul)/O;break;case 90:Nl=l+(u[0]-v)/x,q=c-(u[1]-Ul)/O,[L,I]=[I,-L];break;case 180:Nl=l-this.width+(u[0]-v)/x,q=c-(u[1]-Ul)/O,[L,I]=[-L,-I];break;case 270:Nl=l+(u[0]-v-this.height*O)/x,q=c+(u[1]-Ul-this.width*x)/O,[L,I]=[-I,L];break}this.setAt(Nl*h,q*o,L,I)}else this.setAt(l*h,c*o,this.width*h,this.height*o);this.#s(),this._isDraggable=!0,this.editorDiv.contentEditable=!1}else this._isDraggable=!1,this.editorDiv.contentEditable=!0;return this.div}static#b(l){return(l.nodeType===Node.TEXT_NODE?l.nodeValue:l.innerText).replaceAll(Y,"")}editorDivPaste(l){const c=l.clipboardData||window.clipboardData,{types:s}=c;if(s.length===1&&s[0]==="text/plain")return;l.preventDefault();const h=S.#i(c.getData("text")||"").replaceAll(Y,` +`);if(!h)return;const o=window.getSelection();if(!o.rangeCount)return;this.editorDiv.normalize(),o.deleteFromDocument();const u=o.getRangeAt(0);if(!h.includes(` +`)){u.insertNode(document.createTextNode(h)),this.editorDiv.normalize(),o.collapseToStart();return}const{startContainer:L,startOffset:I}=u,x=[],O=[];if(L.nodeType===Node.TEXT_NODE){const Nl=L.parentElement;if(O.push(L.nodeValue.slice(I).replaceAll(Y,"")),Nl!==this.editorDiv){let q=x;for(const r of this.editorDiv.childNodes){if(r===Nl){q=O;continue}q.push(S.#b(r))}}x.push(L.nodeValue.slice(0,I).replaceAll(Y,""))}else if(L===this.editorDiv){let Nl=x,q=0;for(const r of this.editorDiv.childNodes)q++===I&&(Nl=O),Nl.push(S.#b(r))}this.#c=`${x.join(` +`)}${h}${O.join(` +`)}`,this.#s();const v=new Range;let Ul=x.reduce((Nl,q)=>Nl+q.length,0);for(const{firstChild:Nl}of this.editorDiv.childNodes)if(Nl.nodeType===Node.TEXT_NODE){const q=Nl.nodeValue.length;if(Ul<=q){v.setStart(Nl,Ul),v.setEnd(Nl,Ul);break}Ul-=q}o.removeAllRanges(),o.addRange(v)}#s(){if(this.editorDiv.replaceChildren(),!!this.#c)for(const l of this.#c.split(` +`)){const c=document.createElement("div");c.append(l?document.createTextNode(l):document.createElement("br")),this.editorDiv.append(c)}}#m(){return this.#c.replaceAll(" "," ")}static#i(l){return l.replaceAll(" "," ")}get contentDiv(){return this.editorDiv}static deserialize(l,c,s){let h=null;if(l instanceof z.FreeTextAnnotationElement){const{data:{defaultAppearanceData:{fontSize:u,fontColor:L},rect:I,rotation:x,id:O},textContent:v,textPosition:Ul,parent:{page:{pageNumber:Nl}}}=l;if(!v||v.length===0)return null;h=l={annotationType:U.AnnotationEditorType.FREETEXT,color:Array.from(L),fontSize:u,value:v.join(` +`),position:Ul,pageIndex:Nl-1,rect:I.slice(0),rotation:x,id:O,deleted:!1}}const o=super.deserialize(l,c,s);return o.#V=l.fontSize,o.#Z=U.Util.makeHexColor(...l.color),o.#c=S.#i(l.value),o.annotationElementId=l.id||null,o.#N=h,o}serialize(l=!1){if(this.isEmpty())return null;if(this.deleted)return{pageIndex:this.pageIndex,id:this.annotationElementId,deleted:!0};const c=S._internalPadding*this.parentScale,s=this.getRect(c,c),h=n.AnnotationEditor._colorManager.convert(this.isAttachedToDOM?getComputedStyle(this.editorDiv).color:this.#Z),o={annotationType:U.AnnotationEditorType.FREETEXT,color:h,fontSize:this.#V,value:this.#m(),pageIndex:this.pageIndex,rect:s,rotation:this.rotation,structTreeParentId:this._structTreeParentId};return l?o:this.annotationElementId&&!this.#M(o)?null:(o.id=this.annotationElementId,o)}#M(l){const{value:c,fontSize:s,color:h,pageIndex:o}=this.#N;return this._hasBeenMoved||l.value!==c||l.fontSize!==s||l.color.some((u,L)=>u!==h[L])||l.pageIndex!==o}renderAnnotationElement(l){const c=super.renderAnnotationElement(l);if(this.deleted)return c;const{style:s}=c;s.fontSize=`calc(${this.#V}px * var(--scale-factor))`,s.color=this.#Z,c.replaceChildren();for(const o of this.#c.split(` +`)){const u=document.createElement("div");u.append(o?document.createTextNode(o):document.createElement("br")),c.append(u)}const h=S._internalPadding*this.parentScale;return l.updateEdited({rect:this.getRect(h,h)}),c}resetAnnotationElement(l){super.resetAnnotationElement(l),l.resetEdited()}}var p=t(61),e=t(259),F=t(419);class R extends n.AnnotationEditor{#l=null;#U=0;#d;#F=null;#t=null;#Z=null;#c=null;#W=0;#V=null;#N=null;#n=null;#R=!1;#Q=this.#T.bind(this);#a=null;#b;#s=null;#m="";#i;#M="";static _defaultColor=null;static _defaultOpacity=1;static _defaultThickness=12;static _l10nPromise;static _type="highlight";static _editorType=U.AnnotationEditorType.HIGHLIGHT;static _freeHighlightId=-1;static _freeHighlight=null;static _freeHighlightClipId="";static get _keyboardManager(){const l=R.prototype;return(0,U.shadow)(this,"_keyboardManager",new m.KeyboardManager([[["ArrowLeft","mac+ArrowLeft"],l._moveCaret,{args:[0]}],[["ArrowRight","mac+ArrowRight"],l._moveCaret,{args:[1]}],[["ArrowUp","mac+ArrowUp"],l._moveCaret,{args:[2]}],[["ArrowDown","mac+ArrowDown"],l._moveCaret,{args:[3]}]]))}constructor(l){super({...l,name:"highlightEditor"}),this.color=l.color||R._defaultColor,this.#i=l.thickness||R._defaultThickness,this.#b=l.opacity||R._defaultOpacity,this.#d=l.boxes||null,this.#M=l.methodOfCreation||"",this.#m=l.text||"",this._isDraggable=!1,l.highlightId>-1?(this.#R=!0,this.#Y(l),this.#h()):(this.#l=l.anchorNode,this.#U=l.anchorOffset,this.#c=l.focusNode,this.#W=l.focusOffset,this.#J(),this.#h(),this.rotate(this.rotation))}get telemetryInitialData(){return{action:"added",type:this.#R?"free_highlight":"highlight",color:this._uiManager.highlightColorNames.get(this.color),thickness:this.#i,methodOfCreation:this.#M}}get telemetryFinalData(){return{type:"highlight",color:this._uiManager.highlightColorNames.get(this.color)}}static computeTelemetryFinalData(l){return{numberOfColors:l.get("color").size}}#J(){const l=new p.Outliner(this.#d,.001);this.#N=l.getOutlines(),{x:this.x,y:this.y,width:this.width,height:this.height}=this.#N.box;const c=new p.Outliner(this.#d,.0025,.001,this._uiManager.direction==="ltr");this.#Z=c.getOutlines();const{lastPoint:s}=this.#Z.box;this.#a=[(s[0]-this.x)/this.width,(s[1]-this.y)/this.height]}#Y({highlightOutlines:l,highlightId:c,clipPathId:s}){this.#N=l;const h=1.5;if(this.#Z=l.getNewOutline(this.#i/2+h,.0025),c>=0)this.#n=c,this.#F=s,this.parent.drawLayer.finalizeLine(c,l),this.#s=this.parent.drawLayer.highlightOutline(this.#Z);else if(this.parent){const O=this.parent.viewport.rotation;this.parent.drawLayer.updateLine(this.#n,l),this.parent.drawLayer.updateBox(this.#n,R.#e(this.#N.box,(O-this.rotation+360)%360)),this.parent.drawLayer.updateLine(this.#s,this.#Z),this.parent.drawLayer.updateBox(this.#s,R.#e(this.#Z.box,O))}const{x:o,y:u,width:L,height:I}=l.box;switch(this.rotation){case 0:this.x=o,this.y=u,this.width=L,this.height=I;break;case 90:{const[O,v]=this.parentDimensions;this.x=u,this.y=1-o,this.width=L*v/O,this.height=I*O/v;break}case 180:this.x=1-o,this.y=1-u,this.width=L,this.height=I;break;case 270:{const[O,v]=this.parentDimensions;this.x=1-u,this.y=o,this.width=L*v/O,this.height=I*O/v;break}}const{lastPoint:x}=this.#Z.box;this.#a=[(x[0]-o)/L,(x[1]-u)/I]}static initialize(l,c){n.AnnotationEditor.initialize(l,c),R._defaultColor||=c.highlightColors?.values().next().value||"#fff066"}static updateDefaultParams(l,c){switch(l){case U.AnnotationEditorParamsType.HIGHLIGHT_DEFAULT_COLOR:R._defaultColor=c;break;case U.AnnotationEditorParamsType.HIGHLIGHT_THICKNESS:R._defaultThickness=c;break}}translateInPage(l,c){}get toolbarPosition(){return this.#a}updateParams(l,c){switch(l){case U.AnnotationEditorParamsType.HIGHLIGHT_COLOR:this.#B(c);break;case U.AnnotationEditorParamsType.HIGHLIGHT_THICKNESS:this.#L(c);break}}static get defaultPropertiesToUpdate(){return[[U.AnnotationEditorParamsType.HIGHLIGHT_DEFAULT_COLOR,R._defaultColor],[U.AnnotationEditorParamsType.HIGHLIGHT_THICKNESS,R._defaultThickness]]}get propertiesToUpdate(){return[[U.AnnotationEditorParamsType.HIGHLIGHT_COLOR,this.color||R._defaultColor],[U.AnnotationEditorParamsType.HIGHLIGHT_THICKNESS,this.#i||R._defaultThickness],[U.AnnotationEditorParamsType.HIGHLIGHT_FREE,this.#R]]}#B(l){const c=h=>{this.color=h,this.parent?.drawLayer.changeColor(this.#n,h),this.#t?.updateColor(h)},s=this.color;this.addCommands({cmd:c.bind(this,l),undo:c.bind(this,s),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:U.AnnotationEditorParamsType.HIGHLIGHT_COLOR,overwriteIfSameType:!0,keepUndo:!0}),this._reportTelemetry({action:"color_changed",color:this._uiManager.highlightColorNames.get(l)},!0)}#L(l){const c=this.#i,s=h=>{this.#i=h,this.#y(h)};this.addCommands({cmd:s.bind(this,l),undo:s.bind(this,c),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:U.AnnotationEditorParamsType.INK_THICKNESS,overwriteIfSameType:!0,keepUndo:!0}),this._reportTelemetry({action:"thickness_changed",thickness:l},!0)}async addEditToolbar(){const l=await super.addEditToolbar();return l?(this._uiManager.highlightColors&&(this.#t=new e.ColorPicker({editor:this}),l.addColorPicker(this.#t)),l):null}disableEditing(){super.disableEditing(),this.div.classList.toggle("disabled",!0)}enableEditing(){super.enableEditing(),this.div.classList.toggle("disabled",!1)}fixAndSetPosition(){return super.fixAndSetPosition(this.#X())}getBaseTranslation(){return[0,0]}getRect(l,c){return super.getRect(l,c,this.#X())}onceAdded(){this.parent.addUndoableEditor(this),this.div.focus()}remove(){this.#G(),this._reportTelemetry({action:"deleted"}),super.remove()}rebuild(){this.parent&&(super.rebuild(),this.div!==null&&(this.#h(),this.isAttachedToDOM||this.parent.add(this)))}setParent(l){let c=!1;this.parent&&!l?this.#G():l&&(this.#h(l),c=!this.parent&&this.div?.classList.contains("selectedEditor")),super.setParent(l),this.show(this._isVisible),c&&this.select()}#y(l){if(!this.#R)return;this.#Y({highlightOutlines:this.#N.getNewOutline(l/2)}),this.fixAndSetPosition();const[c,s]=this.parentDimensions;this.setDims(this.width*c,this.height*s)}#G(){this.#n===null||!this.parent||(this.parent.drawLayer.remove(this.#n),this.#n=null,this.parent.drawLayer.remove(this.#s),this.#s=null)}#h(l=this.parent){this.#n===null&&({id:this.#n,clipPathId:this.#F}=l.drawLayer.highlight(this.#N,this.color,this.#b),this.#s=l.drawLayer.highlightOutline(this.#Z),this.#V&&(this.#V.style.clipPath=this.#F))}static#e({x:l,y:c,width:s,height:h},o){switch(o){case 90:return{x:1-c-h,y:l,width:h,height:s};case 180:return{x:1-l-s,y:1-c-h,width:s,height:h};case 270:return{x:c,y:1-l-s,width:h,height:s}}return{x:l,y:c,width:s,height:h}}rotate(l){const{drawLayer:c}=this.parent;let s;this.#R?(l=(l-this.rotation+360)%360,s=R.#e(this.#N.box,l)):s=R.#e(this,l),c.rotate(this.#n,l),c.rotate(this.#s,l),c.updateBox(this.#n,s),c.updateBox(this.#s,R.#e(this.#Z.box,l))}render(){if(this.div)return this.div;const l=super.render();this.#m&&(l.setAttribute("aria-label",this.#m),l.setAttribute("role","mark")),this.#R?l.classList.add("free"):this.div.addEventListener("keydown",this.#Q);const c=this.#V=document.createElement("div");l.append(c),c.setAttribute("aria-hidden","true"),c.className="internal",c.style.clipPath=this.#F;const[s,h]=this.parentDimensions;return this.setDims(this.width*s,this.height*h),(0,m.bindEvents)(this,this.#V,["pointerover","pointerleave"]),this.enableEditing(),l}pointerover(){this.parent.drawLayer.addClass(this.#s,"hovered")}pointerleave(){this.parent.drawLayer.removeClass(this.#s,"hovered")}#T(l){R._keyboardManager.exec(this,l)}_moveCaret(l){switch(this.parent.unselect(this),l){case 0:case 2:this.#u(!0);break;case 1:case 3:this.#u(!1);break}}#u(l){if(!this.#l)return;const c=window.getSelection();l?c.setPosition(this.#l,this.#U):c.setPosition(this.#c,this.#W)}select(){super.select(),this.#s&&(this.parent?.drawLayer.removeClass(this.#s,"hovered"),this.parent?.drawLayer.addClass(this.#s,"selected"))}unselect(){super.unselect(),this.#s&&(this.parent?.drawLayer.removeClass(this.#s,"selected"),this.#R||this.#u(!1))}get _mustFixPosition(){return!this.#R}show(l=this._isVisible){super.show(l),this.parent&&(this.parent.drawLayer.show(this.#n,l),this.parent.drawLayer.show(this.#s,l))}#X(){return this.#R?this.rotation:0}#z(){if(this.#R)return null;const[l,c]=this.pageDimensions,s=this.#d,h=new Array(s.length*8);let o=0;for(const{x:u,y:L,width:I,height:x}of s){const O=u*l,v=(1-L-x)*c;h[o]=h[o+4]=O,h[o+1]=h[o+3]=v,h[o+2]=h[o+6]=O+I*l,h[o+5]=h[o+7]=v+x*c,o+=8}return h}#p(l){return this.#N.serialize(l,this.#X())}static startHighlighting(l,c,{target:s,x:h,y:o}){const{x:u,y:L,width:I,height:x}=s.getBoundingClientRect(),O=q=>{this.#k(l,q)},v={capture:!0,passive:!1},Ul=q=>{q.preventDefault(),q.stopPropagation()},Nl=q=>{s.removeEventListener("pointermove",O),window.removeEventListener("blur",Nl),window.removeEventListener("pointerup",Nl),window.removeEventListener("pointerdown",Ul,v),window.removeEventListener("contextmenu",F.noContextMenu),this.#o(l,q)};window.addEventListener("blur",Nl),window.addEventListener("pointerup",Nl),window.addEventListener("pointerdown",Ul,v),window.addEventListener("contextmenu",F.noContextMenu),s.addEventListener("pointermove",O),this._freeHighlight=new p.FreeOutliner({x:h,y:o},[u,L,I,x],l.scale,this._defaultThickness/2,c,.001),{id:this._freeHighlightId,clipPathId:this._freeHighlightClipId}=l.drawLayer.highlight(this._freeHighlight,this._defaultColor,this._defaultOpacity,!0)}static#k(l,c){this._freeHighlight.add(c)&&l.drawLayer.updatePath(this._freeHighlightId,this._freeHighlight)}static#o(l,c){this._freeHighlight.isEmpty()?l.drawLayer.removeFreeHighlight(this._freeHighlightId):l.createAndAddNewEditor(c,!1,{highlightId:this._freeHighlightId,highlightOutlines:this._freeHighlight.getOutlines(),clipPathId:this._freeHighlightClipId,methodOfCreation:"main_toolbar"}),this._freeHighlightId=-1,this._freeHighlight=null,this._freeHighlightClipId=""}static deserialize(l,c,s){const h=super.deserialize(l,c,s),{rect:[o,u,L,I],color:x,quadPoints:O}=l;h.color=U.Util.makeHexColor(...x),h.#b=l.opacity;const[v,Ul]=h.pageDimensions;h.width=(L-o)/v,h.height=(I-u)/Ul;const Nl=h.#d=[];for(let q=0;q{this.thickness=h,this.#I()},s=this.thickness;this.addCommands({cmd:c.bind(this,l),undo:c.bind(this,s),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:U.AnnotationEditorParamsType.INK_THICKNESS,overwriteIfSameType:!0,keepUndo:!0})}#m(l){const c=h=>{this.color=h,this.#T()},s=this.color;this.addCommands({cmd:c.bind(this,l),undo:c.bind(this,s),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:U.AnnotationEditorParamsType.INK_COLOR,overwriteIfSameType:!0,keepUndo:!0})}#i(l){const c=h=>{this.opacity=h,this.#T()};l/=100;const s=this.opacity;this.addCommands({cmd:c.bind(this,l),undo:c.bind(this,s),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:U.AnnotationEditorParamsType.INK_OPACITY,overwriteIfSameType:!0,keepUndo:!0})}rebuild(){this.parent&&(super.rebuild(),this.div!==null&&(this.canvas||(this.#X(),this.#z()),this.isAttachedToDOM||(this.parent.add(this),this.#p()),this.#I()))}remove(){this.canvas!==null&&(this.isEmpty()||this.commit(),this.canvas.width=this.canvas.height=0,this.canvas.remove(),this.canvas=null,this.#c&&(clearTimeout(this.#c),this.#c=null),this.#R.disconnect(),this.#R=null,super.remove())}setParent(l){!this.parent&&l?this._uiManager.removeShouldRescale(this):this.parent&&l===null&&this._uiManager.addShouldRescale(this),super.setParent(l)}onScaleChanging(){const[l,c]=this.parentDimensions,s=this.width*l,h=this.height*c;this.setDimensions(s,h)}enableEditMode(){this.#V||this.canvas===null||(super.enableEditMode(),this._isDraggable=!1,this.canvas.addEventListener("pointerdown",this.#Z))}disableEditMode(){!this.isInEditMode()||this.canvas===null||(super.disableEditMode(),this._isDraggable=!this.isEmpty(),this.div.classList.remove("editing"),this.canvas.removeEventListener("pointerdown",this.#Z))}onceAdded(){this._isDraggable=!this.isEmpty()}isEmpty(){return this.paths.length===0||this.paths.length===1&&this.paths[0].length===0}#M(){const{parentRotation:l,parentDimensions:[c,s]}=this;switch(l){case 90:return[0,s,s,c];case 180:return[c,s,c,s];case 270:return[c,0,s,c];default:return[0,0,c,s]}}#J(){const{ctx:l,color:c,opacity:s,thickness:h,parentScale:o,scaleFactor:u}=this;l.lineWidth=h*o/u,l.lineCap="round",l.lineJoin="round",l.miterLimit=10,l.strokeStyle=`${c}${(0,m.opacityToHex)(s)}`}#Y(l,c){this.canvas.addEventListener("contextmenu",F.noContextMenu),this.canvas.addEventListener("pointerleave",this.#F),this.canvas.addEventListener("pointermove",this.#d),this.canvas.addEventListener("pointerup",this.#t),this.canvas.removeEventListener("pointerdown",this.#Z),this.isEditing=!0,this.#n||(this.#n=!0,this.#p(),this.thickness||=W._defaultThickness,this.color||=W._defaultColor||n.AnnotationEditor._defaultLineColor,this.opacity??=W._defaultOpacity),this.currentPath.push([l,c]),this.#N=!1,this.#J(),this.#b=()=>{this.#G(),this.#b&&window.requestAnimationFrame(this.#b)},window.requestAnimationFrame(this.#b)}#B(l,c){const[s,h]=this.currentPath.at(-1);if(this.currentPath.length>1&&l===s&&c===h)return;const o=this.currentPath;let u=this.#W;if(o.push([l,c]),this.#N=!0,o.length<=2){u.moveTo(...o[0]),u.lineTo(l,c);return}o.length===3&&(this.#W=u=new Path2D,u.moveTo(...o[0])),this.#h(u,...o.at(-3),...o.at(-2),l,c)}#L(){if(this.currentPath.length===0)return;const l=this.currentPath.at(-1);this.#W.lineTo(...l)}#y(l,c){this.#b=null,l=Math.min(Math.max(l,0),this.canvas.width),c=Math.min(Math.max(c,0),this.canvas.height),this.#B(l,c),this.#L();let s;if(this.currentPath.length!==1)s=this.#e();else{const I=[l,c];s=[[I,I.slice(),I.slice(),I]]}const h=this.#W,o=this.currentPath;this.currentPath=[],this.#W=new Path2D;const u=()=>{this.allRawPaths.push(o),this.paths.push(s),this.bezierPath2D.push(h),this._uiManager.rebuild(this)},L=()=>{this.allRawPaths.pop(),this.paths.pop(),this.bezierPath2D.pop(),this.paths.length===0?this.remove():(this.canvas||(this.#X(),this.#z()),this.#I())};this.addCommands({cmd:u,undo:L,mustExec:!0})}#G(){if(!this.#N)return;this.#N=!1;const l=Math.ceil(this.thickness*this.parentScale),c=this.currentPath.slice(-3),s=c.map(u=>u[0]),h=c.map(u=>u[1]);Math.min(...s)-l,Math.max(...s)+l,Math.min(...h)-l,Math.max(...h)+l;const{ctx:o}=this;o.save(),o.clearRect(0,0,this.canvas.width,this.canvas.height);for(const u of this.bezierPath2D)o.stroke(u);o.stroke(this.#W),o.restore()}#h(l,c,s,h,o,u,L){const I=(c+h)/2,x=(s+o)/2,O=(h+u)/2,v=(o+L)/2;l.bezierCurveTo(I+2*(h-I)/3,x+2*(o-x)/3,O+2*(h-O)/3,v+2*(o-v)/3,O,v)}#e(){const l=this.currentPath;if(l.length<=2)return[[l[0],l[0],l.at(-1),l.at(-1)]];const c=[];let s,[h,o]=l[0];for(s=1;s{this.#c=null,this.canvas.removeEventListener("contextmenu",F.noContextMenu)},10),this.#y(l.offsetX,l.offsetY),this.addToAnnotationStorage(),this.setInBackground()}#X(){this.canvas=document.createElement("canvas"),this.canvas.width=this.canvas.height=0,this.canvas.className="inkEditorCanvas",this.canvas.setAttribute("data-l10n-id","pdfjs-ink-canvas"),this.div.append(this.canvas),this.ctx=this.canvas.getContext("2d")}#z(){this.#R=new ResizeObserver(l=>{const c=l[0].contentRect;c.width&&c.height&&this.setDimensions(c.width,c.height)}),this.#R.observe(this.div)}get isResizable(){return!this.isEmpty()&&this.#V}render(){if(this.div)return this.div;let l,c;this.width&&(l=this.x,c=this.y),super.render(),this.div.setAttribute("data-l10n-id","pdfjs-ink");const[s,h,o,u]=this.#M();if(this.setAt(s,h,0,0),this.setDims(o,u),this.#X(),this.width){const[L,I]=this.parentDimensions;this.setAspectRatio(this.width*L,this.height*I),this.setAt(l*L,c*I,this.width*L,this.height*I),this.#n=!0,this.#p(),this.setDims(this.width*L,this.height*I),this.#T(),this.div.classList.add("disabled")}else this.div.classList.add("editing"),this.enableEditMode();return this.#z(),this.div}#p(){if(!this.#n)return;const[l,c]=this.parentDimensions;this.canvas.width=Math.ceil(this.width*l),this.canvas.height=Math.ceil(this.height*c),this.#o()}setDimensions(l,c){const s=Math.round(l),h=Math.round(c);if(this.#Q===s&&this.#a===h)return;this.#Q=s,this.#a=h,this.canvas.style.visibility="hidden";const[o,u]=this.parentDimensions;this.width=l/o,this.height=c/u,this.fixAndSetPosition(),this.#V&&this.#k(l,c),this.#p(),this.#T(),this.canvas.style.visibility="visible",this.fixDims()}#k(l,c){const s=this.#w(),h=(l-s)/this.#U,o=(c-s)/this.#l;this.scaleFactor=Math.min(h,o)}#o(){const l=this.#w()/2;this.ctx.setTransform(this.scaleFactor,0,0,this.scaleFactor,this.translationX*this.scaleFactor+l,this.translationY*this.scaleFactor+l)}static#D(l){const c=new Path2D;for(let s=0,h=l.length;s`image/${c}`))}static get supportedTypesStr(){return(0,U.shadow)(this,"supportedTypesStr",this.supportedTypes.join(","))}static isHandlingMimeForPasting(l){return this.supportedTypes.includes(l)}static paste(l,c){c.pasteEditor(U.AnnotationEditorType.STAMP,{bitmapFile:l.getAsFile()})}#R(l,c=!1){if(!l){this.remove();return}this.#l=l.bitmap,c||(this.#U=l.id,this.#N=l.isSvg),l.file&&(this.#Z=l.file.name),this.#b()}#Q(){this.#d=null,this._uiManager.enableWaiting(!1),this.#c&&this.div.focus()}#a(){if(this.#U){this._uiManager.enableWaiting(!0),this._uiManager.imageManager.getFromId(this.#U).then(c=>this.#R(c,!0)).finally(()=>this.#Q());return}if(this.#F){const c=this.#F;this.#F=null,this._uiManager.enableWaiting(!0),this.#d=this._uiManager.imageManager.getFromUrl(c).then(s=>this.#R(s)).finally(()=>this.#Q());return}if(this.#t){const c=this.#t;this.#t=null,this._uiManager.enableWaiting(!0),this.#d=this._uiManager.imageManager.getFromFile(c).then(s=>this.#R(s)).finally(()=>this.#Q());return}const l=document.createElement("input");l.type="file",l.accept=J.supportedTypesStr,this.#d=new Promise(c=>{l.addEventListener("change",async()=>{if(!l.files||l.files.length===0)this.remove();else{this._uiManager.enableWaiting(!0);const s=await this._uiManager.imageManager.getFromFile(l.files[0]);this.#R(s)}c()}),l.addEventListener("cancel",()=>{this.remove(),c()})}).finally(()=>this.#Q()),l.click()}remove(){this.#U&&(this.#l=null,this._uiManager.imageManager.deleteId(this.#U),this.#c?.remove(),this.#c=null,this.#W?.disconnect(),this.#W=null,this.#V&&(clearTimeout(this.#V),this.#V=null)),super.remove()}rebuild(){if(!this.parent){this.#U&&this.#a();return}super.rebuild(),this.div!==null&&(this.#U&&this.#c===null&&this.#a(),this.isAttachedToDOM||this.parent.add(this))}onceAdded(){this._isDraggable=!0,this.div.focus()}isEmpty(){return!(this.#d||this.#l||this.#F||this.#t||this.#U)}get isResizable(){return!0}render(){if(this.div)return this.div;let l,c;if(this.width&&(l=this.x,c=this.y),super.render(),this.div.hidden=!0,this.addAltTextButton(),this.#l?this.#b():this.#a(),this.width){const[s,h]=this.parentDimensions;this.setAt(l*s,c*h,this.width*s,this.height*h)}return this.div}#b(){const{div:l}=this;let{width:c,height:s}=this.#l;const[h,o]=this.pageDimensions,u=.75;if(this.width)c=this.width*h,s=this.height*o;else if(c>u*h||s>u*o){const O=Math.min(u*h/c,u*o/s);c*=O,s*=O}const[L,I]=this.parentDimensions;this.setDims(c*L/h,s*I/o),this._uiManager.enableWaiting(!1);const x=this.#c=document.createElement("canvas");l.append(x),l.hidden=!1,this.#i(c,s),this.#J(),this.#n||(this.parent.addUndoableEditor(this),this.#n=!0),this._reportTelemetry({action:"inserted_image"}),this.#Z&&x.setAttribute("aria-label",this.#Z)}#s(l,c){const[s,h]=this.parentDimensions;this.width=l/s,this.height=c/h,this.setDims(l,c),this._initialOptions?.isCentered?this.center():this.fixAndSetPosition(),this._initialOptions=null,this.#V!==null&&clearTimeout(this.#V);const o=200;this.#V=setTimeout(()=>{this.#V=null,this.#i(l,c)},o)}#m(l,c){const{width:s,height:h}=this.#l;let o=s,u=h,L=this.#l;for(;o>2*l||u>2*c;){const I=o,x=u;o>2*l&&(o=o>=16384?Math.floor(o/2)-1:Math.ceil(o/2)),u>2*c&&(u=u>=16384?Math.floor(u/2)-1:Math.ceil(u/2));const O=new OffscreenCanvas(o,u);O.getContext("2d").drawImage(L,0,0,I,x,0,0,o,u),L=O.transferToImageBitmap()}return L}#i(l,c){l=Math.ceil(l),c=Math.ceil(c);const s=this.#c;if(!s||s.width===l&&s.height===c)return;s.width=l,s.height=c;const h=this.#N?this.#l:this.#m(l,c);if(this._uiManager.hasMLManager&&!this.hasAltText()){const u=new OffscreenCanvas(l,c);u.getContext("2d").drawImage(h,0,0,h.width,h.height,0,0,l,c),u.convertToBlob().then(I=>{const x=new FileReader;x.onload=()=>{const O=x.result;this._uiManager.mlGuess({service:"image-to-text",request:{imageData:O}}).then(v=>{const Ul=v?.output||"";this.parent&&Ul&&!this.hasAltText()&&(this.altTextData={altText:Ul,decorative:!1})})},x.readAsDataURL(I)})}const o=s.getContext("2d");o.filter=this._uiManager.hcmFilter,o.drawImage(h,0,0,h.width,h.height,0,0,l,c)}getImageForAltText(){return this.#c}#M(l){if(l){if(this.#N){const h=this._uiManager.imageManager.getSvgUrl(this.#U);if(h)return h}const c=document.createElement("canvas");return{width:c.width,height:c.height}=this.#l,c.getContext("2d").drawImage(this.#l,0,0),c.toDataURL()}if(this.#N){const[c,s]=this.pageDimensions,h=Math.round(this.width*c*F.PixelsPerInch.PDF_TO_CSS_UNITS),o=Math.round(this.height*s*F.PixelsPerInch.PDF_TO_CSS_UNITS),u=new OffscreenCanvas(h,o);return u.getContext("2d").drawImage(this.#l,0,0,this.#l.width,this.#l.height,0,0,h,o),u.transferToImageBitmap()}return structuredClone(this.#l)}#J(){this.#W=new ResizeObserver(l=>{const c=l[0].contentRect;c.width&&c.height&&this.#s(c.width,c.height)}),this.#W.observe(this.div)}static deserialize(l,c,s){if(l instanceof z.StampAnnotationElement)return null;const h=super.deserialize(l,c,s),{rect:o,bitmapUrl:u,bitmapId:L,isSvg:I,accessibilityData:x}=l;L&&s.imageManager.isValidId(L)?h.#U=L:h.#F=u,h.#N=I;const[O,v]=h.pageDimensions;return h.width=(o[2]-o[0])/O,h.height=(o[3]-o[1])/v,x&&(h.altTextData=x),h}serialize(l=!1,c=null){if(this.isEmpty())return null;const s={annotationType:U.AnnotationEditorType.STAMP,bitmapId:this.#U,pageIndex:this.pageIndex,rect:this.getRect(0,0),rotation:this.rotation,isSvg:this.#N,structTreeParentId:this._structTreeParentId};if(l)return s.bitmapUrl=this.#M(!0),s.accessibilityData=this.altTextData,s;const{decorative:h,altText:o}=this.altTextData;if(!h&&o&&(s.accessibilityData={type:"Figure",alt:o}),c===null)return s;c.stamps||=new Map;const u=this.#N?(s.rect[2]-s.rect[0])*(s.rect[3]-s.rect[1]):null;if(!c.stamps.has(this.#U))c.stamps.set(this.#U,{area:u,serialized:s}),s.bitmap=this.#M(!1);else if(this.#N){const L=c.stamps.get(this.#U);u>L.area&&(L.area=u,L.serialized.bitmap.close(),L.serialized.bitmap=this.#M(!1))}return s}}class d{#l;#U=!1;#d=null;#F=null;#t=null;#Z=null;#c=null;#W=new Map;#V=!1;#N=!1;#n=!1;#R=null;#Q;static _initialized=!1;static#a=new Map([S,W,J,R].map(l=>[l._editorType,l]));constructor({uiManager:l,pageIndex:c,div:s,accessibilityManager:h,annotationLayer:o,drawLayer:u,textLayer:L,viewport:I,l10n:x}){const O=[...d.#a.values()];if(!d._initialized){d._initialized=!0;for(const v of O)v.initialize(x,l)}l.registerEditorTypes(O),this.#Q=l,this.pageIndex=c,this.div=s,this.#l=h,this.#d=o,this.viewport=I,this.#R=L,this.drawLayer=u,this.#Q.addLayer(this)}get isEmpty(){return this.#W.size===0}get isInvisible(){return this.isEmpty&&this.#Q.getMode()===U.AnnotationEditorType.NONE}updateToolbar(l){this.#Q.updateToolbar(l)}updateMode(l=this.#Q.getMode()){switch(this.#M(),l){case U.AnnotationEditorType.NONE:this.disableTextSelection(),this.togglePointerEvents(!1),this.toggleAnnotationLayerPointerEvents(!0),this.disableClick();return;case U.AnnotationEditorType.INK:this.addInkEditorIfNeeded(!1),this.disableTextSelection(),this.togglePointerEvents(!0),this.disableClick();break;case U.AnnotationEditorType.HIGHLIGHT:this.enableTextSelection(),this.togglePointerEvents(!1),this.disableClick();break;default:this.disableTextSelection(),this.togglePointerEvents(!0),this.enableClick()}this.toggleAnnotationLayerPointerEvents(!1);const{classList:c}=this.div;for(const s of d.#a.values())c.toggle(`${s._type}Editing`,l===s._editorType);this.div.hidden=!1}hasTextLayer(l){return l===this.#R?.div}addInkEditorIfNeeded(l){if(this.#Q.getMode()!==U.AnnotationEditorType.INK)return;if(!l){for(const s of this.#W.values())if(s.isEmpty()){s.setInBackground();return}}this.createAndAddNewEditor({offsetX:0,offsetY:0},!1).setInBackground()}setEditingState(l){this.#Q.setEditingState(l)}addCommands(l){this.#Q.addCommands(l)}togglePointerEvents(l=!1){this.div.classList.toggle("disabled",!l)}toggleAnnotationLayerPointerEvents(l=!1){this.#d?.div.classList.toggle("disabled",!l)}enable(){this.div.tabIndex=0,this.togglePointerEvents(!0);const l=new Set;for(const s of this.#W.values())s.enableEditing(),s.show(!0),s.annotationElementId&&(this.#Q.removeChangedExistingAnnotation(s),l.add(s.annotationElementId));if(!this.#d)return;const c=this.#d.getEditableAnnotations();for(const s of c){if(s.hide(),this.#Q.isDeletedAnnotationElement(s.data.id)||l.has(s.data.id))continue;const h=this.deserialize(s);h&&(this.addOrRebuild(h),h.enableEditing())}}disable(){this.#n=!0,this.div.tabIndex=-1,this.togglePointerEvents(!1);const l=new Map,c=new Map;for(const h of this.#W.values())if(h.disableEditing(),!!h.annotationElementId){if(h.serialize()!==null){l.set(h.annotationElementId,h);continue}else c.set(h.annotationElementId,h);this.getEditableAnnotation(h.annotationElementId)?.show(),h.remove()}if(this.#d){const h=this.#d.getEditableAnnotations();for(const o of h){const{id:u}=o.data;if(this.#Q.isDeletedAnnotationElement(u))continue;let L=c.get(u);if(L){L.resetAnnotationElement(o),L.show(!1),o.show();continue}L=l.get(u),L&&(this.#Q.addChangedExistingAnnotation(L),L.renderAnnotationElement(o),L.show(!1)),o.show()}}this.#M(),this.isEmpty&&(this.div.hidden=!0);const{classList:s}=this.div;for(const h of d.#a.values())s.remove(`${h._type}Editing`);this.disableTextSelection(),this.toggleAnnotationLayerPointerEvents(!0),this.#n=!1}getEditableAnnotation(l){return this.#d?.getEditableAnnotation(l)||null}setActiveEditor(l){this.#Q.getActive()!==l&&this.#Q.setActiveEditor(l)}enableTextSelection(){this.div.tabIndex=-1,this.#R?.div&&!this.#Z&&(this.#Z=this.#b.bind(this),this.#R.div.addEventListener("pointerdown",this.#Z),this.#R.div.classList.add("highlighting"))}disableTextSelection(){this.div.tabIndex=0,this.#R?.div&&this.#Z&&(this.#R.div.removeEventListener("pointerdown",this.#Z),this.#Z=null,this.#R.div.classList.remove("highlighting"))}#b(l){if(this.#Q.unselectAll(),l.target===this.#R.div){const{isMac:c}=U.FeatureTest.platform;if(l.button!==0||l.ctrlKey&&c)return;this.#Q.showAllEditors("highlight",!0,!0),this.#R.div.classList.add("free"),R.startHighlighting(this,this.#Q.direction==="ltr",l),this.#R.div.addEventListener("pointerup",()=>{this.#R.div.classList.remove("free")},{once:!0}),l.preventDefault()}}enableClick(){this.#t||(this.#t=this.pointerdown.bind(this),this.#F=this.pointerup.bind(this),this.div.addEventListener("pointerdown",this.#t),this.div.addEventListener("pointerup",this.#F))}disableClick(){this.#t&&(this.div.removeEventListener("pointerdown",this.#t),this.div.removeEventListener("pointerup",this.#F),this.#t=null,this.#F=null)}attach(l){this.#W.set(l.id,l);const{annotationElementId:c}=l;c&&this.#Q.isDeletedAnnotationElement(c)&&this.#Q.removeDeletedAnnotationElement(l)}detach(l){this.#W.delete(l.id),this.#l?.removePointerInTextLayer(l.contentDiv),!this.#n&&l.annotationElementId&&this.#Q.addDeletedAnnotationElement(l)}remove(l){this.detach(l),this.#Q.removeEditor(l),l.div.remove(),l.isAttachedToDOM=!1,this.#N||this.addInkEditorIfNeeded(!1)}changeParent(l){l.parent!==this&&(l.parent&&l.annotationElementId&&(this.#Q.addDeletedAnnotationElement(l.annotationElementId),n.AnnotationEditor.deleteAnnotationElement(l),l.annotationElementId=null),this.attach(l),l.parent?.detach(l),l.setParent(this),l.div&&l.isAttachedToDOM&&(l.div.remove(),this.div.append(l.div)))}add(l){if(!(l.parent===this&&l.isAttachedToDOM)){if(this.changeParent(l),this.#Q.addEditor(l),this.attach(l),!l.isAttachedToDOM){const c=l.render();this.div.append(c),l.isAttachedToDOM=!0}l.fixAndSetPosition(),l.onceAdded(),this.#Q.addToAnnotationStorage(l),l._reportTelemetry(l.telemetryInitialData)}}moveEditorInDOM(l){if(!l.isAttachedToDOM)return;const{activeElement:c}=document;l.div.contains(c)&&!this.#c&&(l._focusEventsAllowed=!1,this.#c=setTimeout(()=>{this.#c=null,l.div.contains(document.activeElement)?l._focusEventsAllowed=!0:(l.div.addEventListener("focusin",()=>{l._focusEventsAllowed=!0},{once:!0}),c.focus())},0)),l._structTreeParentId=this.#l?.moveElementInDOM(this.div,l.div,l.contentDiv,!0)}addOrRebuild(l){l.needsToBeRebuilt()?(l.parent||=this,l.rebuild(),l.show()):this.add(l)}addUndoableEditor(l){const c=()=>l._uiManager.rebuild(l),s=()=>{l.remove()};this.addCommands({cmd:c,undo:s,mustExec:!1})}getNextId(){return this.#Q.getId()}get#s(){return d.#a.get(this.#Q.getMode())}#m(l){const c=this.#s;return c?new c.prototype.constructor(l):null}canCreateNewEmptyEditor(){return this.#s?.canCreateNewEmptyEditor()}pasteEditor(l,c){this.#Q.updateToolbar(l),this.#Q.updateMode(l);const{offsetX:s,offsetY:h}=this.#i(),o=this.getNextId(),u=this.#m({parent:this,id:o,x:s,y:h,uiManager:this.#Q,isCentered:!0,...c});u&&this.add(u)}deserialize(l){return d.#a.get(l.annotationType??l.annotationEditorType)?.deserialize(l,this,this.#Q)||null}createAndAddNewEditor(l,c,s={}){const h=this.getNextId(),o=this.#m({parent:this,id:h,x:l.offsetX,y:l.offsetY,uiManager:this.#Q,isCentered:c,...s});return o&&this.add(o),o}#i(){const{x:l,y:c,width:s,height:h}=this.div.getBoundingClientRect(),o=Math.max(0,l),u=Math.max(0,c),L=Math.min(window.innerWidth,l+s),I=Math.min(window.innerHeight,c+h),x=(o+L)/2-l,O=(u+I)/2-c,[v,Ul]=this.viewport.rotation%180===0?[x,O]:[O,x];return{offsetX:v,offsetY:Ul}}addNewEditor(){this.createAndAddNewEditor(this.#i(),!0)}setSelected(l){this.#Q.setSelected(l)}toggleSelected(l){this.#Q.toggleSelected(l)}isSelected(l){return this.#Q.isSelected(l)}unselect(l){this.#Q.unselect(l)}pointerup(l){const{isMac:c}=U.FeatureTest.platform;if(!(l.button!==0||l.ctrlKey&&c)&&l.target===this.div&&this.#V){if(this.#V=!1,!this.#U){this.#U=!0;return}if(this.#Q.getMode()===U.AnnotationEditorType.STAMP){this.#Q.unselectAll();return}this.createAndAddNewEditor(l,!1)}}pointerdown(l){if(this.#Q.getMode()===U.AnnotationEditorType.HIGHLIGHT&&this.enableTextSelection(),this.#V){this.#V=!1;return}const{isMac:c}=U.FeatureTest.platform;if(l.button!==0||l.ctrlKey&&c||l.target!==this.div)return;this.#V=!0;const s=this.#Q.getActive();this.#U=!s||s.isEmpty()}findNewParent(l,c,s){const h=this.#Q.findParent(c,s);return h===null||h===this?!1:(h.changeParent(l),!0)}destroy(){this.#Q.getActive()?.parent===this&&(this.#Q.commitOrRemove(),this.#Q.setActiveEditor(null)),this.#c&&(clearTimeout(this.#c),this.#c=null);for(const l of this.#W.values())this.#l?.removePointerInTextLayer(l.contentDiv),l.setParent(null),l.isAttachedToDOM=!1,l.div.remove();this.div=null,this.#W.clear(),this.#Q.removeLayer(this)}#M(){this.#N=!0;for(const l of this.#W.values())l.isEmpty()&&l.remove();this.#N=!1}render({viewport:l}){this.viewport=l,(0,F.setLayerDimensions)(this.div,l);for(const c of this.#Q.getEditors(this.pageIndex))this.add(c),c.rebuild();this.updateMode()}update({viewport:l}){this.#Q.commitOrRemove(),this.#M();const c=this.viewport.rotation,s=l.rotation;if(this.viewport=l,(0,F.setLayerDimensions)(this.div,{rotation:s}),c!==s)for(const h of this.#W.values())h.rotate(s);this.addInkEditorIfNeeded(!1)}get pageDimensions(){const{pageWidth:l,pageHeight:c}=this.viewport.rawDims;return[l,c]}get scale(){return this.#Q.viewParameters.realScale}}},259:(T,N,t)=>{t.d(N,{ColorPicker:()=>z});var U=t(292),n=t(830),m=t(419);class z{#l=this.#b.bind(this);#U=this.#m.bind(this);#d=null;#F=null;#t;#Z=null;#c=!1;#W=!1;#V=null;#N;#n=null;#R;static get _keyboardManager(){return(0,U.shadow)(this,"_keyboardManager",new n.KeyboardManager([[["Escape","mac+Escape"],z.prototype._hideDropdownFromKeyboard],[[" ","mac+ "],z.prototype._colorSelectFromKeyboard],[["ArrowDown","ArrowRight","mac+ArrowDown","mac+ArrowRight"],z.prototype._moveToNext],[["ArrowUp","ArrowLeft","mac+ArrowUp","mac+ArrowLeft"],z.prototype._moveToPrevious],[["Home","mac+Home"],z.prototype._moveToBeginning],[["End","mac+End"],z.prototype._moveToEnd]]))}constructor({editor:S=null,uiManager:p=null}){S?(this.#W=!1,this.#R=U.AnnotationEditorParamsType.HIGHLIGHT_COLOR,this.#V=S):(this.#W=!0,this.#R=U.AnnotationEditorParamsType.HIGHLIGHT_DEFAULT_COLOR),this.#n=S?._uiManager||p,this.#N=this.#n._eventBus,this.#t=S?.color||this.#n?.highlightColors.values().next().value||"#FFFF98"}renderButton(){const S=this.#d=document.createElement("button");S.className="colorPicker",S.tabIndex="0",S.setAttribute("data-l10n-id","pdfjs-editor-colorpicker-button"),S.setAttribute("aria-haspopup",!0),S.addEventListener("click",this.#s.bind(this)),S.addEventListener("keydown",this.#l);const p=this.#F=document.createElement("span");return p.className="swatch",p.setAttribute("aria-hidden",!0),p.style.backgroundColor=this.#t,S.append(p),S}renderMainDropdown(){const S=this.#Z=this.#Q();return S.setAttribute("aria-orientation","horizontal"),S.setAttribute("aria-labelledby","highlightColorPickerLabel"),S}#Q(){const S=document.createElement("div");S.addEventListener("contextmenu",m.noContextMenu),S.className="dropdown",S.role="listbox",S.setAttribute("aria-multiselectable",!1),S.setAttribute("aria-orientation","vertical"),S.setAttribute("data-l10n-id","pdfjs-editor-colorpicker-dropdown");for(const[p,e]of this.#n.highlightColors){const F=document.createElement("button");F.tabIndex="0",F.role="option",F.setAttribute("data-color",e),F.title=p,F.setAttribute("data-l10n-id",`pdfjs-editor-colorpicker-${p}`);const R=document.createElement("span");F.append(R),R.className="swatch",R.style.backgroundColor=e,F.setAttribute("aria-selected",e===this.#t),F.addEventListener("click",this.#a.bind(this,e)),S.append(F)}return S.addEventListener("keydown",this.#l),S}#a(S,p){p.stopPropagation(),this.#N.dispatch("switchannotationeditorparams",{source:this,type:this.#R,value:S})}_colorSelectFromKeyboard(S){if(S.target===this.#d){this.#s(S);return}const p=S.target.getAttribute("data-color");p&&this.#a(p,S)}_moveToNext(S){if(!this.#i){this.#s(S);return}if(S.target===this.#d){this.#Z.firstChild?.focus();return}S.target.nextSibling?.focus()}_moveToPrevious(S){if(S.target===this.#Z?.firstChild||S.target===this.#d){this.#i&&this._hideDropdownFromKeyboard();return}this.#i||this.#s(S),S.target.previousSibling?.focus()}_moveToBeginning(S){if(!this.#i){this.#s(S);return}this.#Z.firstChild?.focus()}_moveToEnd(S){if(!this.#i){this.#s(S);return}this.#Z.lastChild?.focus()}#b(S){z._keyboardManager.exec(this,S)}#s(S){if(this.#i){this.hideDropdown();return}if(this.#c=S.detail===0,window.addEventListener("pointerdown",this.#U),this.#Z){this.#Z.classList.remove("hidden");return}const p=this.#Z=this.#Q();this.#d.append(p)}#m(S){this.#Z?.contains(S.target)||this.hideDropdown()}hideDropdown(){this.#Z?.classList.add("hidden"),window.removeEventListener("pointerdown",this.#U)}get#i(){return this.#Z&&!this.#Z.classList.contains("hidden")}_hideDropdownFromKeyboard(){if(!this.#W){if(!this.#i){this.#V?.unselect();return}this.hideDropdown(),this.#d.focus({preventScroll:!0,focusVisible:this.#c})}}updateColor(S){if(this.#F&&(this.#F.style.backgroundColor=S),!this.#Z)return;const p=this.#n.highlightColors.values();for(const e of this.#Z.children)e.setAttribute("aria-selected",p.next().value===S)}destroy(){this.#d?.remove(),this.#d=null,this.#F=null,this.#Z?.remove(),this.#Z=null}}},310:(T,N,t)=>{t.d(N,{AnnotationEditor:()=>S});var U=t(830),n=t(292),m=t(419);class z{#l="";#U=!1;#d=null;#F=null;#t=null;#Z=!1;#c=null;static _l10nPromise=null;constructor(F){this.#c=F}static initialize(F){z._l10nPromise||=F}async render(){const F=this.#d=document.createElement("button");F.className="altText";const R=await z._l10nPromise.get("pdfjs-editor-alt-text-button-label");F.textContent=R,F.setAttribute("aria-label",R),F.tabIndex="0",F.addEventListener("contextmenu",m.noContextMenu),F.addEventListener("pointerdown",J=>J.stopPropagation());const W=J=>{J.preventDefault(),this.#c._uiManager.editAltText(this.#c)};return F.addEventListener("click",W,{capture:!0}),F.addEventListener("keydown",J=>{J.target===F&&J.key==="Enter"&&(this.#Z=!0,W(J))}),await this.#W(),F}finish(){this.#d&&(this.#d.focus({focusVisible:this.#Z}),this.#Z=!1)}isEmpty(){return!this.#l&&!this.#U}get data(){return{altText:this.#l,decorative:this.#U}}set data({altText:F,decorative:R}){this.#l===F&&this.#U===R||(this.#l=F,this.#U=R,this.#W())}toggle(F=!1){this.#d&&(!F&&this.#t&&(clearTimeout(this.#t),this.#t=null),this.#d.disabled=!F)}destroy(){this.#d?.remove(),this.#d=null,this.#F=null}async#W(){const F=this.#d;if(!F)return;if(!this.#l&&!this.#U){F.classList.remove("done"),this.#F?.remove();return}F.classList.add("done"),z._l10nPromise.get("pdfjs-editor-alt-text-edit-button-label").then(J=>{F.setAttribute("aria-label",J)});let R=this.#F;if(!R){this.#F=R=document.createElement("span"),R.className="tooltip",R.setAttribute("role","tooltip");const J=R.id=`alt-text-tooltip-${this.#c.id}`;F.setAttribute("aria-describedby",J);const d=100;F.addEventListener("mouseenter",()=>{this.#t=setTimeout(()=>{this.#t=null,this.#F.classList.add("show"),this.#c._reportTelemetry({action:"alt_text_tooltip"})},d)}),F.addEventListener("mouseleave",()=>{this.#t&&(clearTimeout(this.#t),this.#t=null),this.#F?.classList.remove("show")})}R.innerText=this.#U?await z._l10nPromise.get("pdfjs-editor-alt-text-decorative-tooltip"):this.#l,R.parentNode||F.append(R),this.#c.getImageForAltText()?.setAttribute("aria-describedby",R.id)}}var Y=t(362);class S{#l=null;#U=null;#d=!1;#F=!1;#t=null;#Z=null;#c=this.focusin.bind(this);#W=this.focusout.bind(this);#V=null;#N="";#n=!1;#R=null;#Q=!1;#a=!1;#b=!1;#s=null;#m=0;#i=0;#M=null;_initialOptions=Object.create(null);_isVisible=!0;_uiManager=null;_focusEventsAllowed=!0;_l10nPromise=null;#J=!1;#Y=S._zIndex++;static _borderLineWidth=-1;static _colorManager=new U.ColorManager;static _zIndex=1;static _telemetryTimeout=1e3;static get _resizerKeyboardManager(){const F=S.prototype._resizeWithKeyboard,R=U.AnnotationEditorUIManager.TRANSLATE_SMALL,W=U.AnnotationEditorUIManager.TRANSLATE_BIG;return(0,n.shadow)(this,"_resizerKeyboardManager",new U.KeyboardManager([[["ArrowLeft","mac+ArrowLeft"],F,{args:[-R,0]}],[["ctrl+ArrowLeft","mac+shift+ArrowLeft"],F,{args:[-W,0]}],[["ArrowRight","mac+ArrowRight"],F,{args:[R,0]}],[["ctrl+ArrowRight","mac+shift+ArrowRight"],F,{args:[W,0]}],[["ArrowUp","mac+ArrowUp"],F,{args:[0,-R]}],[["ctrl+ArrowUp","mac+shift+ArrowUp"],F,{args:[0,-W]}],[["ArrowDown","mac+ArrowDown"],F,{args:[0,R]}],[["ctrl+ArrowDown","mac+shift+ArrowDown"],F,{args:[0,W]}],[["Escape","mac+Escape"],S.prototype._stopResizingWithKeyboard]]))}constructor(F){this.constructor===S&&(0,n.unreachable)("Cannot initialize AnnotationEditor."),this.parent=F.parent,this.id=F.id,this.width=this.height=null,this.pageIndex=F.parent.pageIndex,this.name=F.name,this.div=null,this._uiManager=F.uiManager,this.annotationElementId=null,this._willKeepAspectRatio=!1,this._initialOptions.isCentered=F.isCentered,this._structTreeParentId=null;const{rotation:R,rawDims:{pageWidth:W,pageHeight:J,pageX:d,pageY:a}}=this.parent.viewport;this.rotation=R,this.pageRotation=(360+R-this._uiManager.viewParameters.rotation)%360,this.pageDimensions=[W,J],this.pageTranslation=[d,a];const[l,c]=this.parentDimensions;this.x=F.x/l,this.y=F.y/c,this.isAttachedToDOM=!1,this.deleted=!1}get editorType(){return Object.getPrototypeOf(this).constructor._type}static get _defaultLineColor(){return(0,n.shadow)(this,"_defaultLineColor",this._colorManager.getHexCode("CanvasText"))}static deleteAnnotationElement(F){const R=new p({id:F.parent.getNextId(),parent:F.parent,uiManager:F._uiManager});R.annotationElementId=F.annotationElementId,R.deleted=!0,R._uiManager.addToAnnotationStorage(R)}static initialize(F,R,W){if(S._l10nPromise||=new Map(["pdfjs-editor-alt-text-button-label","pdfjs-editor-alt-text-edit-button-label","pdfjs-editor-alt-text-decorative-tooltip","pdfjs-editor-resizer-label-topLeft","pdfjs-editor-resizer-label-topMiddle","pdfjs-editor-resizer-label-topRight","pdfjs-editor-resizer-label-middleRight","pdfjs-editor-resizer-label-bottomRight","pdfjs-editor-resizer-label-bottomMiddle","pdfjs-editor-resizer-label-bottomLeft","pdfjs-editor-resizer-label-middleLeft"].map(d=>[d,F.get(d.replaceAll(/([A-Z])/g,a=>`-${a.toLowerCase()}`))])),W?.strings)for(const d of W.strings)S._l10nPromise.set(d,F.get(d));if(S._borderLineWidth!==-1)return;const J=getComputedStyle(document.documentElement);S._borderLineWidth=parseFloat(J.getPropertyValue("--outline-width"))||0}static updateDefaultParams(F,R){}static get defaultPropertiesToUpdate(){return[]}static isHandlingMimeForPasting(F){return!1}static paste(F,R){(0,n.unreachable)("Not implemented")}get propertiesToUpdate(){return[]}get _isDraggable(){return this.#J}set _isDraggable(F){this.#J=F,this.div?.classList.toggle("draggable",F)}get isEnterHandled(){return!0}center(){const[F,R]=this.pageDimensions;switch(this.parentRotation){case 90:this.x-=this.height*R/(F*2),this.y+=this.width*F/(R*2);break;case 180:this.x+=this.width/2,this.y+=this.height/2;break;case 270:this.x+=this.height*R/(F*2),this.y-=this.width*F/(R*2);break;default:this.x-=this.width/2,this.y-=this.height/2;break}this.fixAndSetPosition()}addCommands(F){this._uiManager.addCommands(F)}get currentLayer(){return this._uiManager.currentLayer}setInBackground(){this.div.style.zIndex=0}setInForeground(){this.div.style.zIndex=this.#Y}setParent(F){F!==null?(this.pageIndex=F.pageIndex,this.pageDimensions=F.pageDimensions):this.#D(),this.parent=F}focusin(F){this._focusEventsAllowed&&(this.#n?this.#n=!1:this.parent.setSelected(this))}focusout(F){!this._focusEventsAllowed||!this.isAttachedToDOM||F.relatedTarget?.closest(`#${this.id}`)||(F.preventDefault(),this.parent?.isMultipleSelection||this.commitOrRemove())}commitOrRemove(){this.isEmpty()?this.remove():this.commit()}commit(){this.addToAnnotationStorage()}addToAnnotationStorage(){this._uiManager.addToAnnotationStorage(this)}setAt(F,R,W,J){const[d,a]=this.parentDimensions;[W,J]=this.screenToPageTranslation(W,J),this.x=(F+W)/d,this.y=(R+J)/a,this.fixAndSetPosition()}#B([F,R],W,J){[W,J]=this.screenToPageTranslation(W,J),this.x+=W/F,this.y+=J/R,this.fixAndSetPosition()}translate(F,R){this.#B(this.parentDimensions,F,R)}translateInPage(F,R){this.#R||=[this.x,this.y],this.#B(this.pageDimensions,F,R),this.div.scrollIntoView({block:"nearest"})}drag(F,R){this.#R||=[this.x,this.y];const[W,J]=this.parentDimensions;if(this.x+=F/W,this.y+=R/J,this.parent&&(this.x<0||this.x>1||this.y<0||this.y>1)){const{x:s,y:h}=this.div.getBoundingClientRect();this.parent.findNewParent(this,s,h)&&(this.x-=Math.floor(this.x),this.y-=Math.floor(this.y))}let{x:d,y:a}=this;const[l,c]=this.getBaseTranslation();d+=l,a+=c,this.div.style.left=`${(100*d).toFixed(2)}%`,this.div.style.top=`${(100*a).toFixed(2)}%`,this.div.scrollIntoView({block:"nearest"})}get _hasBeenMoved(){return!!this.#R&&(this.#R[0]!==this.x||this.#R[1]!==this.y)}getBaseTranslation(){const[F,R]=this.parentDimensions,{_borderLineWidth:W}=S,J=W/F,d=W/R;switch(this.rotation){case 90:return[-J,d];case 180:return[J,d];case 270:return[J,-d];default:return[-J,-d]}}get _mustFixPosition(){return!0}fixAndSetPosition(F=this.rotation){const[R,W]=this.pageDimensions;let{x:J,y:d,width:a,height:l}=this;if(a*=R,l*=W,J*=R,d*=W,this._mustFixPosition)switch(F){case 0:J=Math.max(0,Math.min(R-a,J)),d=Math.max(0,Math.min(W-l,d));break;case 90:J=Math.max(0,Math.min(R-l,J)),d=Math.min(W,Math.max(a,d));break;case 180:J=Math.min(R,Math.max(a,J)),d=Math.min(W,Math.max(l,d));break;case 270:J=Math.min(R,Math.max(l,J)),d=Math.max(0,Math.min(W-a,d));break}this.x=J/=R,this.y=d/=W;const[c,s]=this.getBaseTranslation();J+=c,d+=s;const{style:h}=this.div;h.left=`${(100*J).toFixed(2)}%`,h.top=`${(100*d).toFixed(2)}%`,this.moveInDOM()}static#L(F,R,W){switch(W){case 90:return[R,-F];case 180:return[-F,-R];case 270:return[-R,F];default:return[F,R]}}screenToPageTranslation(F,R){return S.#L(F,R,this.parentRotation)}pageTranslationToScreen(F,R){return S.#L(F,R,360-this.parentRotation)}#y(F){switch(F){case 90:{const[R,W]=this.pageDimensions;return[0,-R/W,W/R,0]}case 180:return[-1,0,0,-1];case 270:{const[R,W]=this.pageDimensions;return[0,R/W,-W/R,0]}default:return[1,0,0,1]}}get parentScale(){return this._uiManager.viewParameters.realScale}get parentRotation(){return(this._uiManager.viewParameters.rotation+this.pageRotation)%360}get parentDimensions(){const{parentScale:F,pageDimensions:[R,W]}=this,J=R*F,d=W*F;return n.FeatureTest.isCSSRoundSupported?[Math.round(J),Math.round(d)]:[J,d]}setDims(F,R){const[W,J]=this.parentDimensions;this.div.style.width=`${(100*F/W).toFixed(2)}%`,this.#F||(this.div.style.height=`${(100*R/J).toFixed(2)}%`)}fixDims(){const{style:F}=this.div,{height:R,width:W}=F,J=W.endsWith("%"),d=!this.#F&&R.endsWith("%");if(J&&d)return;const[a,l]=this.parentDimensions;J||(F.width=`${(100*parseFloat(W)/a).toFixed(2)}%`),!this.#F&&!d&&(F.height=`${(100*parseFloat(R)/l).toFixed(2)}%`)}getInitialTranslation(){return[0,0]}#G(){if(this.#t)return;this.#t=document.createElement("div"),this.#t.classList.add("resizers");const F=this._willKeepAspectRatio?["topLeft","topRight","bottomRight","bottomLeft"]:["topLeft","topMiddle","topRight","middleRight","bottomRight","bottomMiddle","bottomLeft","middleLeft"];for(const R of F){const W=document.createElement("div");this.#t.append(W),W.classList.add("resizer",R),W.setAttribute("data-resizer-name",R),W.addEventListener("pointerdown",this.#h.bind(this,R)),W.addEventListener("contextmenu",m.noContextMenu),W.tabIndex=-1}this.div.prepend(this.#t)}#h(F,R){R.preventDefault();const{isMac:W}=n.FeatureTest.platform;if(R.button!==0||R.ctrlKey&&W)return;this.#U?.toggle(!1);const J=this.#T.bind(this,F),d=this._isDraggable;this._isDraggable=!1;const a={passive:!0,capture:!0};this.parent.togglePointerEvents(!1),window.addEventListener("pointermove",J,a),window.addEventListener("contextmenu",m.noContextMenu);const l=this.x,c=this.y,s=this.width,h=this.height,o=this.parent.div.style.cursor,u=this.div.style.cursor;this.div.style.cursor=this.parent.div.style.cursor=window.getComputedStyle(R.target).cursor;const L=()=>{this.parent.togglePointerEvents(!0),this.#U?.toggle(!0),this._isDraggable=d,window.removeEventListener("pointerup",L),window.removeEventListener("blur",L),window.removeEventListener("pointermove",J,a),window.removeEventListener("contextmenu",m.noContextMenu),this.parent.div.style.cursor=o,this.div.style.cursor=u,this.#e(l,c,s,h)};window.addEventListener("pointerup",L),window.addEventListener("blur",L)}#e(F,R,W,J){const d=this.x,a=this.y,l=this.width,c=this.height;d===F&&a===R&&l===W&&c===J||this.addCommands({cmd:()=>{this.width=l,this.height=c,this.x=d,this.y=a;const[s,h]=this.parentDimensions;this.setDims(s*l,h*c),this.fixAndSetPosition()},undo:()=>{this.width=W,this.height=J,this.x=F,this.y=R;const[s,h]=this.parentDimensions;this.setDims(s*W,h*J),this.fixAndSetPosition()},mustExec:!0})}#T(F,R){const[W,J]=this.parentDimensions,d=this.x,a=this.y,l=this.width,c=this.height,s=S.MIN_SIZE/W,h=S.MIN_SIZE/J,o=X=>Math.round(X*1e4)/1e4,u=this.#y(this.rotation),L=(X,i)=>[u[0]*X+u[2]*i,u[1]*X+u[3]*i],I=this.#y(360-this.rotation),x=(X,i)=>[I[0]*X+I[2]*i,I[1]*X+I[3]*i];let O,v,Ul=!1,Nl=!1;switch(F){case"topLeft":Ul=!0,O=(X,i)=>[0,0],v=(X,i)=>[X,i];break;case"topMiddle":O=(X,i)=>[X/2,0],v=(X,i)=>[X/2,i];break;case"topRight":Ul=!0,O=(X,i)=>[X,0],v=(X,i)=>[0,i];break;case"middleRight":Nl=!0,O=(X,i)=>[X,i/2],v=(X,i)=>[0,i/2];break;case"bottomRight":Ul=!0,O=(X,i)=>[X,i],v=(X,i)=>[0,0];break;case"bottomMiddle":O=(X,i)=>[X/2,i],v=(X,i)=>[X/2,0];break;case"bottomLeft":Ul=!0,O=(X,i)=>[0,i],v=(X,i)=>[X,0];break;case"middleLeft":Nl=!0,O=(X,i)=>[0,i/2],v=(X,i)=>[X,i/2];break}const q=O(l,c),r=v(l,c);let P=L(...r);const ll=o(d+P[0]),Vl=o(a+P[1]);let cl=1,hl=1,[Gl,ul]=this.screenToPageTranslation(R.movementX,R.movementY);if([Gl,ul]=x(Gl/W,ul/J),Ul){const X=Math.hypot(l,c);cl=hl=Math.max(Math.min(Math.hypot(r[0]-q[0]-Gl,r[1]-q[1]-ul)/X,1/l,1/c),s/l,h/c)}else Nl?cl=Math.max(s,Math.min(1,Math.abs(r[0]-q[0]-Gl)))/l:hl=Math.max(h,Math.min(1,Math.abs(r[1]-q[1]-ul)))/c;const Sl=o(l*cl),ml=o(c*hl);P=L(...v(Sl,ml));const Xl=ll-P[0],Wl=Vl-P[1];this.width=Sl,this.height=ml,this.x=Xl,this.y=Wl,this.setDims(W*Sl,J*ml),this.fixAndSetPosition()}altTextFinish(){this.#U?.finish()}async addEditToolbar(){return this.#V||this.#a?this.#V:(this.#V=new Y.EditorToolbar(this),this.div.append(this.#V.render()),this.#U&&this.#V.addAltTextButton(await this.#U.render()),this.#V)}removeEditToolbar(){this.#V&&(this.#V.remove(),this.#V=null,this.#U?.destroy())}getClientDimensions(){return this.div.getBoundingClientRect()}async addAltTextButton(){this.#U||(z.initialize(S._l10nPromise),this.#U=new z(this),await this.addEditToolbar())}get altTextData(){return this.#U?.data}set altTextData(F){this.#U&&(this.#U.data=F)}hasAltText(){return!this.#U?.isEmpty()}render(){this.div=document.createElement("div"),this.div.setAttribute("data-editor-rotation",(360-this.rotation)%360),this.div.className=this.name,this.div.setAttribute("id",this.id),this.div.tabIndex=this.#d?-1:0,this._isVisible||this.div.classList.add("hidden"),this.setInForeground(),this.div.addEventListener("focusin",this.#c),this.div.addEventListener("focusout",this.#W);const[F,R]=this.parentDimensions;this.parentRotation%180!==0&&(this.div.style.maxWidth=`${(100*R/F).toFixed(2)}%`,this.div.style.maxHeight=`${(100*F/R).toFixed(2)}%`);const[W,J]=this.getInitialTranslation();return this.translate(W,J),(0,U.bindEvents)(this,this.div,["pointerdown"]),this.div}pointerdown(F){const{isMac:R}=n.FeatureTest.platform;if(F.button!==0||F.ctrlKey&&R){F.preventDefault();return}if(this.#n=!0,this._isDraggable){this.#X(F);return}this.#u(F)}#u(F){const{isMac:R}=n.FeatureTest.platform;F.ctrlKey&&!R||F.shiftKey||F.metaKey&&R?this.parent.toggleSelected(this):this.parent.setSelected(this)}#X(F){const R=this._uiManager.isSelected(this);this._uiManager.setUpDragSession();let W,J;R&&(this.div.classList.add("moving"),W={passive:!0,capture:!0},this.#m=F.clientX,this.#i=F.clientY,J=a=>{const{clientX:l,clientY:c}=a,[s,h]=this.screenToPageTranslation(l-this.#m,c-this.#i);this.#m=l,this.#i=c,this._uiManager.dragSelectedEditors(s,h)},window.addEventListener("pointermove",J,W));const d=()=>{window.removeEventListener("pointerup",d),window.removeEventListener("blur",d),R&&(this.div.classList.remove("moving"),window.removeEventListener("pointermove",J,W)),this.#n=!1,this._uiManager.endDragSession()||this.#u(F)};window.addEventListener("pointerup",d),window.addEventListener("blur",d)}moveInDOM(){this.#s&&clearTimeout(this.#s),this.#s=setTimeout(()=>{this.#s=null,this.parent?.moveEditorInDOM(this)},0)}_setParentAndPosition(F,R,W){F.changeParent(this),this.x=R,this.y=W,this.fixAndSetPosition()}getRect(F,R,W=this.rotation){const J=this.parentScale,[d,a]=this.pageDimensions,[l,c]=this.pageTranslation,s=F/J,h=R/J,o=this.x*d,u=this.y*a,L=this.width*d,I=this.height*a;switch(W){case 0:return[o+s+l,a-u-h-I+c,o+s+L+l,a-u-h+c];case 90:return[o+h+l,a-u+s+c,o+h+I+l,a-u+s+L+c];case 180:return[o-s-L+l,a-u+h+c,o-s+l,a-u+h+I+c];case 270:return[o-h-I+l,a-u-s-L+c,o-h+l,a-u-s+c];default:throw new Error("Invalid rotation")}}getRectInCurrentCoords(F,R){const[W,J,d,a]=F,l=d-W,c=a-J;switch(this.rotation){case 0:return[W,R-a,l,c];case 90:return[W,R-J,c,l];case 180:return[d,R-J,l,c];case 270:return[d,R-a,c,l];default:throw new Error("Invalid rotation")}}onceAdded(){}isEmpty(){return!1}enableEditMode(){this.#a=!0}disableEditMode(){this.#a=!1}isInEditMode(){return this.#a}shouldGetKeyboardEvents(){return this.#b}needsToBeRebuilt(){return this.div&&!this.isAttachedToDOM}rebuild(){this.div?.addEventListener("focusin",this.#c),this.div?.addEventListener("focusout",this.#W)}rotate(F){}serialize(F=!1,R=null){(0,n.unreachable)("An editor must be serializable")}static deserialize(F,R,W){const J=new this.prototype.constructor({parent:R,id:R.getNextId(),uiManager:W});J.rotation=F.rotation;const[d,a]=J.pageDimensions,[l,c,s,h]=J.getRectInCurrentCoords(F.rect,a);return J.x=l/d,J.y=c/a,J.width=s/d,J.height=h/a,J}get hasBeenModified(){return!!this.annotationElementId&&(this.deleted||this.serialize()!==null)}remove(){if(this.div.removeEventListener("focusin",this.#c),this.div.removeEventListener("focusout",this.#W),this.isEmpty()||this.commit(),this.parent?this.parent.remove(this):this._uiManager.removeEditor(this),this.#s&&(clearTimeout(this.#s),this.#s=null),this.#D(),this.removeEditToolbar(),this.#M){for(const F of this.#M.values())clearTimeout(F);this.#M=null}this.parent=null}get isResizable(){return!1}makeResizable(){this.isResizable&&(this.#G(),this.#t.classList.remove("hidden"),(0,U.bindEvents)(this,this.div,["keydown"]))}get toolbarPosition(){return null}keydown(F){if(!this.isResizable||F.target!==this.div||F.key!=="Enter")return;this._uiManager.setSelected(this),this.#Z={savedX:this.x,savedY:this.y,savedWidth:this.width,savedHeight:this.height};const R=this.#t.children;if(!this.#l){this.#l=Array.from(R);const a=this.#z.bind(this),l=this.#p.bind(this);for(const c of this.#l){const s=c.getAttribute("data-resizer-name");c.setAttribute("role","spinbutton"),c.addEventListener("keydown",a),c.addEventListener("blur",l),c.addEventListener("focus",this.#k.bind(this,s)),S._l10nPromise.get(`pdfjs-editor-resizer-label-${s}`).then(h=>c.setAttribute("aria-label",h))}}const W=this.#l[0];let J=0;for(const a of R){if(a===W)break;J++}const d=(360-this.rotation+this.parentRotation)%360/90*(this.#l.length/4);if(d!==J){if(dJ)for(let l=0;ll.setAttribute("aria-label",h))}}this.#o(0),this.#b=!0,this.#t.firstChild.focus({focusVisible:!0}),F.preventDefault(),F.stopImmediatePropagation()}#z(F){S._resizerKeyboardManager.exec(this,F)}#p(F){this.#b&&F.relatedTarget?.parentNode!==this.#t&&this.#D()}#k(F){this.#N=this.#b?F:""}#o(F){if(this.#l)for(const R of this.#l)R.tabIndex=F}_resizeWithKeyboard(F,R){this.#b&&this.#T(this.#N,{movementX:F,movementY:R})}#D(){if(this.#b=!1,this.#o(-1),this.#Z){const{savedX:F,savedY:R,savedWidth:W,savedHeight:J}=this.#Z;this.#e(F,R,W,J),this.#Z=null}}_stopResizingWithKeyboard(){this.#D(),this.div.focus()}select(){if(this.makeResizable(),this.div?.classList.add("selectedEditor"),!this.#V){this.addEditToolbar().then(()=>{this.div?.classList.contains("selectedEditor")&&this.#V?.show()});return}this.#V?.show()}unselect(){this.#t?.classList.add("hidden"),this.div?.classList.remove("selectedEditor"),this.div?.contains(document.activeElement)&&this._uiManager.currentLayer.div.focus({preventScroll:!0}),this.#V?.hide()}updateParams(F,R){}disableEditing(){}enableEditing(){}enterInEditMode(){}getImageForAltText(){return null}get contentDiv(){return this.div}get isEditing(){return this.#Q}set isEditing(F){this.#Q=F,this.parent&&(F?(this.parent.setSelected(this),this.parent.setActiveEditor(this)):this.parent.setActiveEditor(null))}setAspectRatio(F,R){this.#F=!0;const W=F/R,{style:J}=this.div;J.aspectRatio=W,J.height="auto"}static get MIN_SIZE(){return 16}static canCreateNewEmptyEditor(){return!0}get telemetryInitialData(){return{action:"added"}}get telemetryFinalData(){return null}_reportTelemetry(F,R=!1){if(R){this.#M||=new Map;const{action:W}=F;let J=this.#M.get(W);J&&clearTimeout(J),J=setTimeout(()=>{this._reportTelemetry(F),this.#M.delete(W),this.#M.size===0&&(this.#M=null)},S._telemetryTimeout),this.#M.set(W,J);return}F.type||=this.editorType,this._uiManager._eventBus.dispatch("reporttelemetry",{source:this,details:{type:"editing",data:F}})}show(F=this._isVisible){this.div.classList.toggle("hidden",!F),this._isVisible=F}enable(){this.div&&(this.div.tabIndex=0),this.#d=!1}disable(){this.div&&(this.div.tabIndex=-1),this.#d=!0}renderAnnotationElement(F){let R=F.container.querySelector(".annotationContent");if(!R)R=document.createElement("div"),R.classList.add("annotationContent",this.editorType),F.container.prepend(R);else if(R.nodeName==="CANVAS"){const W=R;R=document.createElement("div"),R.classList.add("annotationContent",this.editorType),W.before(R)}return R}resetAnnotationElement(F){const{firstChild:R}=F.container;R.nodeName==="DIV"&&R.classList.contains("annotationContent")&&R.remove()}}class p extends S{constructor(F){super(F),this.annotationElementId=F.annotationElementId,this.deleted=!0}serialize(){return{id:this.annotationElementId,deleted:!0,pageIndex:this.pageIndex}}}},61:(T,N,t)=>{t.d(N,{FreeOutliner:()=>Y,Outliner:()=>n});var U=t(292);class n{#l;#U=[];#d=[];constructor(e,F=0,R=0,W=!0){let J=1/0,d=-1/0,a=1/0,l=-1/0;const s=10**-4;for(const{x:O,y:v,width:Ul,height:Nl}of e){const q=Math.floor((O-F)/s)*s,r=Math.ceil((O+Ul+F)/s)*s,P=Math.floor((v-F)/s)*s,ll=Math.ceil((v+Nl+F)/s)*s,Vl=[q,P,ll,!0],cl=[r,P,ll,!1];this.#U.push(Vl,cl),J=Math.min(J,q),d=Math.max(d,r),a=Math.min(a,P),l=Math.max(l,ll)}const h=d-J+2*R,o=l-a+2*R,u=J-R,L=a-R,I=this.#U.at(W?-1:-2),x=[I[0],I[2]];for(const O of this.#U){const[v,Ul,Nl]=O;O[0]=(v-u)/h,O[1]=(Ul-L)/o,O[2]=(Nl-L)/o}this.#l={x:u,y:L,width:h,height:o,lastPoint:x}}getOutlines(){this.#U.sort((F,R)=>F[0]-R[0]||F[1]-R[1]||F[2]-R[2]);const e=[];for(const F of this.#U)F[3]?(e.push(...this.#W(F)),this.#Z(F)):(this.#c(F),e.push(...this.#W(F)));return this.#F(e)}#F(e){const F=[],R=new Set;for(const d of e){const[a,l,c]=d;F.push([a,l,d],[a,c,d])}F.sort((d,a)=>d[1]-a[1]||d[0]-a[0]);for(let d=0,a=F.length;d0;){const d=R.values().next().value;let[a,l,c,s,h]=d;R.delete(d);let o=a,u=l;for(J=[a,c],W.push(J);;){let L;if(R.has(s))L=s;else if(R.has(h))L=h;else break;R.delete(L),[a,l,c,s,h]=L,o!==a&&(J.push(o,u,a,u===l?l:c),o=a),u=u===l?c:l}J.push(o,u)}return new z(W,this.#l)}#t(e){const F=this.#d;let R=0,W=F.length-1;for(;R<=W;){const J=R+W>>1,d=F[J][0];if(d===e)return J;d=0;W--){const[J,d]=this.#d[W];if(J!==e)break;if(J===e&&d===F){this.#d.splice(W,1);return}}}#W(e){const[F,R,W]=e,J=[[F,R,W]],d=this.#t(W);for(let a=0;a=l){if(u>c)J[s][1]=c;else{if(h===1)return[];J.splice(s,1),s--,h--}continue}J[s][2]=l,u>c&&J.push([F,c,u])}}}return J}}class m{toSVGPath(){throw new Error("Abstract method `toSVGPath` must be implemented.")}get box(){throw new Error("Abstract getter `box` must be implemented.")}serialize(e,F){throw new Error("Abstract method `serialize` must be implemented.")}get free(){return this instanceof S}}class z extends m{#l;#U;constructor(e,F){super(),this.#U=e,this.#l=F}toSVGPath(){const e=[];for(const F of this.#U){let[R,W]=F;e.push(`M${R} ${W}`);for(let J=2;J=6;L-=6)isNaN(F[L])?u.push(`L${F[L+4]} ${F[L+5]}`):u.push(`C${F[L]} ${F[L+1]} ${F[L+2]} ${F[L+3]} ${F[L+4]} ${F[L+5]}`);return u.push(`L${F[4]} ${F[5]} Z`),u.join(" ")}getOutlines(){const e=this.#t,F=this.#U,R=this.#Z,W=R.subarray(4,6),J=R.subarray(16,18),[d,a,l,c]=this.#l,s=new Float64Array((this.#Q?.length??0)+2);for(let O=0,v=s.length-2;O=6;O-=6)for(let v=0;v<6;v+=2){if(isNaN(F[O+v])){I[x]=I[x+1]=NaN,x+=2;continue}I[x]=F[O+v],I[x+1]=F[O+v+1],x+=2}return I.set([NaN,NaN,NaN,NaN,F[4],F[5]],x),new S(I,s,this.#l,this.#n,this.#d,this.#F)}}class S extends m{#l;#U=null;#d;#F;#t;#Z;#c;constructor(e,F,R,W,J,d){super(),this.#c=e,this.#t=F,this.#l=R,this.#Z=W,this.#d=J,this.#F=d,this.#N(d);const{x:a,y:l,width:c,height:s}=this.#U;for(let h=0,o=e.length;h{t.d(N,{EditorToolbar:()=>n,HighlightToolbar:()=>m});var U=t(419);class n{#l=null;#U=null;#d;#F=null;constructor(Y){this.#d=Y}render(){const Y=this.#l=document.createElement("div");Y.className="editToolbar",Y.setAttribute("role","toolbar"),Y.addEventListener("contextmenu",U.noContextMenu),Y.addEventListener("pointerdown",n.#t);const S=this.#F=document.createElement("div");S.className="buttons",Y.append(S);const p=this.#d.toolbarPosition;if(p){const{style:e}=Y,F=this.#d._uiManager.direction==="ltr"?1-p[0]:p[0];e.insetInlineEnd=`${100*F}%`,e.top=`calc(${100*p[1]}% + var(--editor-toolbar-vert-offset))`}return this.#V(),Y}static#t(Y){Y.stopPropagation()}#Z(Y){this.#d._focusEventsAllowed=!1,Y.preventDefault(),Y.stopPropagation()}#c(Y){this.#d._focusEventsAllowed=!0,Y.preventDefault(),Y.stopPropagation()}#W(Y){Y.addEventListener("focusin",this.#Z.bind(this),{capture:!0}),Y.addEventListener("focusout",this.#c.bind(this),{capture:!0}),Y.addEventListener("contextmenu",U.noContextMenu)}hide(){this.#l.classList.add("hidden"),this.#U?.hideDropdown()}show(){this.#l.classList.remove("hidden")}#V(){const Y=document.createElement("button");Y.className="delete",Y.tabIndex=0,Y.setAttribute("data-l10n-id",`pdfjs-editor-remove-${this.#d.editorType}-button`),this.#W(Y),Y.addEventListener("click",S=>{this.#d._uiManager.delete()}),this.#F.append(Y)}get#N(){const Y=document.createElement("div");return Y.className="divider",Y}addAltTextButton(Y){this.#W(Y),this.#F.prepend(Y,this.#N)}addColorPicker(Y){this.#U=Y;const S=Y.renderButton();this.#W(S),this.#F.prepend(S,this.#N)}remove(){this.#l.remove(),this.#U?.destroy(),this.#U=null}}class m{#l=null;#U=null;#d;constructor(Y){this.#d=Y}#F(){const Y=this.#U=document.createElement("div");Y.className="editToolbar",Y.setAttribute("role","toolbar"),Y.addEventListener("contextmenu",U.noContextMenu);const S=this.#l=document.createElement("div");return S.className="buttons",Y.append(S),this.#Z(),Y}#t(Y,S){let p=0,e=0;for(const F of Y){const R=F.y+F.height;if(Rp){e=W,p=R;continue}S?W>e&&(e=W):W{this.#d.highlightSelection("floating_button")}),this.#l.append(Y)}}},830:(T,N,t)=>{t.d(N,{AnnotationEditorUIManager:()=>W,ColorManager:()=>R,KeyboardManager:()=>F,bindEvents:()=>z,opacityToHex:()=>Y});var U=t(292),n=t(419),m=t(362);function z(J,d,a){for(const l of a)d.addEventListener(l,J[l].bind(J))}function Y(J){return Math.round(Math.min(255,Math.max(1,255*J))).toString(16).padStart(2,"0")}class S{#l=0;constructor(){}get id(){return`${U.AnnotationEditorPrefix}${this.#l++}`}}class p{#l=(0,U.getUuid)();#U=0;#d=null;static get _isSVGFittingCanvas(){const d='data:image/svg+xml;charset=UTF-8,',l=new OffscreenCanvas(1,3).getContext("2d"),c=new Image;c.src=d;const s=c.decode().then(()=>(l.drawImage(c,0,0,1,1,0,0,1,3),new Uint32Array(l.getImageData(0,0,1,1).data.buffer)[0]===0));return(0,U.shadow)(this,"_isSVGFittingCanvas",s)}async#F(d,a){this.#d||=new Map;let l=this.#d.get(d);if(l===null)return null;if(l?.bitmap)return l.refCounter+=1,l;try{l||={bitmap:null,id:`image_${this.#l}_${this.#U++}`,refCounter:0,isSvg:!1};let c;if(typeof a=="string"?(l.url=a,c=await(0,n.fetchData)(a,"blob")):c=l.file=a,c.type==="image/svg+xml"){const s=p._isSVGFittingCanvas,h=new FileReader,o=new Image,u=new Promise((L,I)=>{o.onload=()=>{l.bitmap=o,l.isSvg=!0,L()},h.onload=async()=>{const x=l.svgUrl=h.result;o.src=await s?`${x}#svgView(preserveAspectRatio(none))`:x},o.onerror=h.onerror=I});h.readAsDataURL(c),await u}else l.bitmap=await createImageBitmap(c);l.refCounter=1}catch(c){console.error(c),l=null}return this.#d.set(d,l),l&&this.#d.set(l.id,l),l}async getFromFile(d){const{lastModified:a,name:l,size:c,type:s}=d;return this.#F(`${a}_${l}_${c}_${s}`,d)}async getFromUrl(d){return this.#F(d,d)}async getFromId(d){this.#d||=new Map;const a=this.#d.get(d);return a?a.bitmap?(a.refCounter+=1,a):a.file?this.getFromFile(a.file):this.getFromUrl(a.url):null}getSvgUrl(d){const a=this.#d.get(d);return a?.isSvg?a.svgUrl:null}deleteId(d){this.#d||=new Map;const a=this.#d.get(d);a&&(a.refCounter-=1,a.refCounter===0&&(a.bitmap=null))}isValidId(d){return d.startsWith(`image_${this.#l}_`)}}class e{#l=[];#U=!1;#d;#F=-1;constructor(d=128){this.#d=d}add({cmd:d,undo:a,post:l,mustExec:c,type:s=NaN,overwriteIfSameType:h=!1,keepUndo:o=!1}){if(c&&d(),this.#U)return;const u={cmd:d,undo:a,post:l,type:s};if(this.#F===-1){this.#l.length>0&&(this.#l.length=0),this.#F=0,this.#l.push(u);return}if(h&&this.#l[this.#F].type===s){o&&(u.undo=this.#l[this.#F].undo),this.#l[this.#F]=u;return}const L=this.#F+1;L===this.#d?this.#l.splice(0,1):(this.#F=L,Ls===a[h]))return R._colorsMapping.get(l);return a}getHexCode(d){const a=this._colors.get(d);return a?U.Util.makeHexColor(...a):d}}class W{#l=null;#U=new Map;#d=new Map;#F=null;#t=null;#Z=null;#c=new e;#W=0;#V=new Set;#N=null;#n=null;#R=new Set;#Q=!1;#a=null;#b=null;#s=null;#m=!1;#i=null;#M=new S;#J=!1;#Y=!1;#B=null;#L=null;#y=null;#G=U.AnnotationEditorType.NONE;#h=new Set;#e=null;#T=null;#u=null;#X=this.blur.bind(this);#z=this.focus.bind(this);#p=this.copy.bind(this);#k=this.cut.bind(this);#o=this.paste.bind(this);#D=this.keydown.bind(this);#j=this.keyup.bind(this);#g=this.onEditingAction.bind(this);#K=this.onPageChanging.bind(this);#O=this.onScaleChanging.bind(this);#w=this.#tl.bind(this);#I=this.onRotationChanging.bind(this);#f={isEditing:!1,isEmpty:!0,hasSomethingToUndo:!1,hasSomethingToRedo:!1,hasSelectedEditor:!1,hasSelectedText:!1};#r=[0,0];#E=null;#x=null;#A=null;static TRANSLATE_SMALL=1;static TRANSLATE_BIG=10;static get _keyboardManager(){const d=W.prototype,a=h=>h.#x.contains(document.activeElement)&&document.activeElement.tagName!=="BUTTON"&&h.hasSomethingToControl(),l=(h,{target:o})=>{if(o instanceof HTMLInputElement){const{type:u}=o;return u!=="text"&&u!=="number"}return!0},c=this.TRANSLATE_SMALL,s=this.TRANSLATE_BIG;return(0,U.shadow)(this,"_keyboardManager",new F([[["ctrl+a","mac+meta+a"],d.selectAll,{checker:l}],[["ctrl+z","mac+meta+z"],d.undo,{checker:l}],[["ctrl+y","ctrl+shift+z","mac+meta+shift+z","ctrl+shift+Z","mac+meta+shift+Z"],d.redo,{checker:l}],[["Backspace","alt+Backspace","ctrl+Backspace","shift+Backspace","mac+Backspace","mac+alt+Backspace","mac+ctrl+Backspace","Delete","ctrl+Delete","shift+Delete","mac+Delete"],d.delete,{checker:l}],[["Enter","mac+Enter"],d.addNewEditorFromKeyboard,{checker:(h,{target:o})=>!(o instanceof HTMLButtonElement)&&h.#x.contains(o)&&!h.isEnterHandled}],[[" ","mac+ "],d.addNewEditorFromKeyboard,{checker:(h,{target:o})=>!(o instanceof HTMLButtonElement)&&h.#x.contains(document.activeElement)}],[["Escape","mac+Escape"],d.unselectAll],[["ArrowLeft","mac+ArrowLeft"],d.translateSelectedEditors,{args:[-c,0],checker:a}],[["ctrl+ArrowLeft","mac+shift+ArrowLeft"],d.translateSelectedEditors,{args:[-s,0],checker:a}],[["ArrowRight","mac+ArrowRight"],d.translateSelectedEditors,{args:[c,0],checker:a}],[["ctrl+ArrowRight","mac+shift+ArrowRight"],d.translateSelectedEditors,{args:[s,0],checker:a}],[["ArrowUp","mac+ArrowUp"],d.translateSelectedEditors,{args:[0,-c],checker:a}],[["ctrl+ArrowUp","mac+shift+ArrowUp"],d.translateSelectedEditors,{args:[0,-s],checker:a}],[["ArrowDown","mac+ArrowDown"],d.translateSelectedEditors,{args:[0,c],checker:a}],[["ctrl+ArrowDown","mac+shift+ArrowDown"],d.translateSelectedEditors,{args:[0,s],checker:a}]]))}constructor(d,a,l,c,s,h,o,u,L){this.#x=d,this.#A=a,this.#F=l,this._eventBus=c,this._eventBus._on("editingaction",this.#g),this._eventBus._on("pagechanging",this.#K),this._eventBus._on("scalechanging",this.#O),this._eventBus._on("rotationchanging",this.#I),this.#cl(),this.#q(),this.#t=s.annotationStorage,this.#a=s.filterFactory,this.#T=h,this.#s=o||null,this.#Q=u,this.#y=L||null,this.viewParameters={realScale:n.PixelsPerInch.PDF_TO_CSS_UNITS,rotation:0},this.isShiftKeyDown=!1}destroy(){this.#$(),this.#_(),this._eventBus._off("editingaction",this.#g),this._eventBus._off("pagechanging",this.#K),this._eventBus._off("scalechanging",this.#O),this._eventBus._off("rotationchanging",this.#I);for(const d of this.#d.values())d.destroy();this.#d.clear(),this.#U.clear(),this.#R.clear(),this.#l=null,this.#h.clear(),this.#c.destroy(),this.#F?.destroy(),this.#i?.hide(),this.#i=null,this.#b&&(clearTimeout(this.#b),this.#b=null),this.#E&&(clearTimeout(this.#E),this.#E=null),this.#Ql()}async mlGuess(d){return this.#y?.guess(d)||null}get hasMLManager(){return!!this.#y}get hcmFilter(){return(0,U.shadow)(this,"hcmFilter",this.#T?this.#a.addHCMFilter(this.#T.foreground,this.#T.background):"none")}get direction(){return(0,U.shadow)(this,"direction",getComputedStyle(this.#x).direction)}get highlightColors(){return(0,U.shadow)(this,"highlightColors",this.#s?new Map(this.#s.split(",").map(d=>d.split("=").map(a=>a.trim()))):null)}get highlightColorNames(){return(0,U.shadow)(this,"highlightColorNames",this.highlightColors?new Map(Array.from(this.highlightColors,d=>d.reverse())):null)}setMainHighlightColorPicker(d){this.#L=d}editAltText(d){this.#F?.editAltText(this,d)}onPageChanging({pageNumber:d}){this.#W=d-1}focusMainContainer(){this.#x.focus()}findParent(d,a){for(const l of this.#d.values()){const{x:c,y:s,width:h,height:o}=l.div.getBoundingClientRect();if(d>=c&&d<=c+h&&a>=s&&a<=s+o)return l}return null}disableUserSelect(d=!1){this.#A.classList.toggle("noUserSelect",d)}addShouldRescale(d){this.#R.add(d)}removeShouldRescale(d){this.#R.delete(d)}onScaleChanging({scale:d}){this.commitOrRemove(),this.viewParameters.realScale=d*n.PixelsPerInch.PDF_TO_CSS_UNITS;for(const a of this.#R)a.onScaleChanging()}onRotationChanging({pagesRotation:d}){this.commitOrRemove(),this.viewParameters.rotation=d}#v({anchorNode:d}){return d.nodeType===Node.TEXT_NODE?d.parentElement:d}highlightSelection(d=""){const a=document.getSelection();if(!a||a.isCollapsed)return;const{anchorNode:l,anchorOffset:c,focusNode:s,focusOffset:h}=a,o=a.toString(),L=this.#v(a).closest(".textLayer"),I=this.getSelectionBoxes(L);if(I){a.empty(),this.#G===U.AnnotationEditorType.NONE&&(this._eventBus.dispatch("showannotationeditorui",{source:this,mode:U.AnnotationEditorType.HIGHLIGHT}),this.showAllEditors("highlight",!0,!0));for(const x of this.#d.values())if(x.hasTextLayer(L)){x.createAndAddNewEditor({x:0,y:0},!1,{methodOfCreation:d,boxes:I,anchorNode:l,anchorOffset:c,focusNode:s,focusOffset:h,text:o});break}}}#Fl(){const d=document.getSelection();if(!d||d.isCollapsed)return;const l=this.#v(d).closest(".textLayer"),c=this.getSelectionBoxes(l);c&&(this.#i||=new m.HighlightToolbar(this),this.#i.show(l,c,this.direction==="ltr"))}addToAnnotationStorage(d){!d.isEmpty()&&this.#t&&!this.#t.has(d.id)&&this.#t.setValue(d.id,d)}#tl(){const d=document.getSelection();if(!d||d.isCollapsed){this.#e&&(this.#i?.hide(),this.#e=null,this.#S({hasSelectedText:!1}));return}const{anchorNode:a}=d;if(a===this.#e)return;if(!this.#v(d).closest(".textLayer")){this.#e&&(this.#i?.hide(),this.#e=null,this.#S({hasSelectedText:!1}));return}if(this.#i?.hide(),this.#e=a,this.#S({hasSelectedText:!0}),!(this.#G!==U.AnnotationEditorType.HIGHLIGHT&&this.#G!==U.AnnotationEditorType.NONE)&&(this.#G===U.AnnotationEditorType.HIGHLIGHT&&this.showAllEditors("highlight",!0,!0),this.#m=this.isShiftKeyDown,!this.isShiftKeyDown)){const s=h=>{h.type==="pointerup"&&h.button!==0||(window.removeEventListener("pointerup",s),window.removeEventListener("blur",s),h.type==="pointerup"&&this.#P("main_toolbar"))};window.addEventListener("pointerup",s),window.addEventListener("blur",s)}}#P(d=""){this.#G===U.AnnotationEditorType.HIGHLIGHT?this.highlightSelection(d):this.#Q&&this.#Fl()}#cl(){document.addEventListener("selectionchange",this.#w)}#Ql(){document.removeEventListener("selectionchange",this.#w)}#Vl(){window.addEventListener("focus",this.#z),window.addEventListener("blur",this.#X)}#_(){window.removeEventListener("focus",this.#z),window.removeEventListener("blur",this.#X)}blur(){if(this.isShiftKeyDown=!1,this.#m&&(this.#m=!1,this.#P("main_toolbar")),!this.hasSelection)return;const{activeElement:d}=document;for(const a of this.#h)if(a.div.contains(d)){this.#B=[a,d],a._focusEventsAllowed=!1;break}}focus(){if(!this.#B)return;const[d,a]=this.#B;this.#B=null,a.addEventListener("focusin",()=>{d._focusEventsAllowed=!0},{once:!0}),a.focus()}#q(){window.addEventListener("keydown",this.#D),window.addEventListener("keyup",this.#j)}#$(){window.removeEventListener("keydown",this.#D),window.removeEventListener("keyup",this.#j)}#ll(){document.addEventListener("copy",this.#p),document.addEventListener("cut",this.#k),document.addEventListener("paste",this.#o)}#Ul(){document.removeEventListener("copy",this.#p),document.removeEventListener("cut",this.#k),document.removeEventListener("paste",this.#o)}addEditListeners(){this.#q(),this.#ll()}removeEditListeners(){this.#$(),this.#Ul()}copy(d){if(d.preventDefault(),this.#l?.commitOrRemove(),!this.hasSelection)return;const a=[];for(const l of this.#h){const c=l.serialize(!0);c&&a.push(c)}a.length!==0&&d.clipboardData.setData("application/pdfjs",JSON.stringify(a))}cut(d){this.copy(d),this.delete()}paste(d){d.preventDefault();const{clipboardData:a}=d;for(const s of a.items)for(const h of this.#n)if(h.isHandlingMimeForPasting(s.type)){h.paste(s,this.currentLayer);return}let l=a.getData("application/pdfjs");if(!l)return;try{l=JSON.parse(l)}catch(s){(0,U.warn)(`paste: "${s.message}".`);return}if(!Array.isArray(l))return;this.unselectAll();const c=this.currentLayer;try{const s=[];for(const u of l){const L=c.deserialize(u);if(!L)return;s.push(L)}const h=()=>{for(const u of s)this.#dl(u);this.#Zl(s)},o=()=>{for(const u of s)u.remove()};this.addCommands({cmd:h,undo:o,mustExec:!0})}catch(s){(0,U.warn)(`paste: "${s.message}".`)}}keydown(d){!this.isShiftKeyDown&&d.key==="Shift"&&(this.isShiftKeyDown=!0),this.#G!==U.AnnotationEditorType.NONE&&!this.isEditorHandlingKeyboard&&W._keyboardManager.exec(this,d)}keyup(d){this.isShiftKeyDown&&d.key==="Shift"&&(this.isShiftKeyDown=!1,this.#m&&(this.#m=!1,this.#P("main_toolbar")))}onEditingAction({name:d}){switch(d){case"undo":case"redo":case"delete":case"selectAll":this[d]();break;case"highlightSelection":this.highlightSelection("context_menu");break}}#S(d){Object.entries(d).some(([l,c])=>this.#f[l]!==c)&&(this._eventBus.dispatch("annotationeditorstateschanged",{source:this,details:Object.assign(this.#f,d)}),this.#G===U.AnnotationEditorType.HIGHLIGHT&&d.hasSelectedEditor===!1&&this.#C([[U.AnnotationEditorParamsType.HIGHLIGHT_FREE,!0]]))}#C(d){this._eventBus.dispatch("annotationeditorparamschanged",{source:this,details:d})}setEditingState(d){d?(this.#Vl(),this.#ll(),this.#S({isEditing:this.#G!==U.AnnotationEditorType.NONE,isEmpty:this.#H(),hasSomethingToUndo:this.#c.hasSomethingToUndo(),hasSomethingToRedo:this.#c.hasSomethingToRedo(),hasSelectedEditor:!1})):(this.#_(),this.#Ul(),this.#S({isEditing:!1}),this.disableUserSelect(!1))}registerEditorTypes(d){if(!this.#n){this.#n=d;for(const a of this.#n)this.#C(a.defaultPropertiesToUpdate)}}getId(){return this.#M.id}get currentLayer(){return this.#d.get(this.#W)}getLayer(d){return this.#d.get(d)}get currentPageIndex(){return this.#W}addLayer(d){this.#d.set(d.pageIndex,d),this.#J?d.enable():d.disable()}removeLayer(d){this.#d.delete(d.pageIndex)}updateMode(d,a=null,l=!1){if(this.#G!==d){if(this.#G=d,d===U.AnnotationEditorType.NONE){this.setEditingState(!1),this.#Rl();return}this.setEditingState(!0),this.#Wl(),this.unselectAll();for(const c of this.#d.values())c.updateMode(d);if(!a&&l){this.addNewEditorFromKeyboard();return}if(a){for(const c of this.#U.values())if(c.annotationElementId===a){this.setSelected(c),c.enterInEditMode();break}}}}addNewEditorFromKeyboard(){this.currentLayer.canCreateNewEmptyEditor()&&this.currentLayer.addNewEditor()}updateToolbar(d){d!==this.#G&&this._eventBus.dispatch("switchannotationeditormode",{source:this,mode:d})}updateParams(d,a){if(this.#n){switch(d){case U.AnnotationEditorParamsType.CREATE:this.currentLayer.addNewEditor();return;case U.AnnotationEditorParamsType.HIGHLIGHT_DEFAULT_COLOR:this.#L?.updateColor(a);break;case U.AnnotationEditorParamsType.HIGHLIGHT_SHOW_ALL:this._eventBus.dispatch("reporttelemetry",{source:this,details:{type:"editing",data:{type:"highlight",action:"toggle_visibility"}}}),(this.#u||=new Map).set(d,a),this.showAllEditors("highlight",a);break}for(const l of this.#h)l.updateParams(d,a);for(const l of this.#n)l.updateDefaultParams(d,a)}}showAllEditors(d,a,l=!1){for(const s of this.#U.values())s.editorType===d&&s.show(a);(this.#u?.get(U.AnnotationEditorParamsType.HIGHLIGHT_SHOW_ALL)??!0)!==a&&this.#C([[U.AnnotationEditorParamsType.HIGHLIGHT_SHOW_ALL,a]])}enableWaiting(d=!1){if(this.#Y!==d){this.#Y=d;for(const a of this.#d.values())d?a.disableClick():a.enableClick(),a.div.classList.toggle("waiting",d)}}#Wl(){if(!this.#J){this.#J=!0;for(const d of this.#d.values())d.enable();for(const d of this.#U.values())d.enable()}}#Rl(){if(this.unselectAll(),this.#J){this.#J=!1;for(const d of this.#d.values())d.disable();for(const d of this.#U.values())d.disable()}}getEditors(d){const a=[];for(const l of this.#U.values())l.pageIndex===d&&a.push(l);return a}getEditor(d){return this.#U.get(d)}addEditor(d){this.#U.set(d.id,d)}removeEditor(d){d.div.contains(document.activeElement)&&(this.#b&&clearTimeout(this.#b),this.#b=setTimeout(()=>{this.focusMainContainer(),this.#b=null},0)),this.#U.delete(d.id),this.unselect(d),(!d.annotationElementId||!this.#V.has(d.annotationElementId))&&this.#t?.remove(d.id)}addDeletedAnnotationElement(d){this.#V.add(d.annotationElementId),this.addChangedExistingAnnotation(d),d.deleted=!0}isDeletedAnnotationElement(d){return this.#V.has(d)}removeDeletedAnnotationElement(d){this.#V.delete(d.annotationElementId),this.removeChangedExistingAnnotation(d),d.deleted=!1}#dl(d){const a=this.#d.get(d.pageIndex);a?a.addOrRebuild(d):(this.addEditor(d),this.addToAnnotationStorage(d))}setActiveEditor(d){this.#l!==d&&(this.#l=d,d&&this.#C(d.propertiesToUpdate))}get#Nl(){let d=null;for(d of this.#h);return d}updateUI(d){this.#Nl===d&&this.#C(d.propertiesToUpdate)}toggleSelected(d){if(this.#h.has(d)){this.#h.delete(d),d.unselect(),this.#S({hasSelectedEditor:this.hasSelection});return}this.#h.add(d),d.select(),this.#C(d.propertiesToUpdate),this.#S({hasSelectedEditor:!0})}setSelected(d){for(const a of this.#h)a!==d&&a.unselect();this.#h.clear(),this.#h.add(d),d.select(),this.#C(d.propertiesToUpdate),this.#S({hasSelectedEditor:!0})}isSelected(d){return this.#h.has(d)}get firstSelectedEditor(){return this.#h.values().next().value}unselect(d){d.unselect(),this.#h.delete(d),this.#S({hasSelectedEditor:this.hasSelection})}get hasSelection(){return this.#h.size!==0}get isEnterHandled(){return this.#h.size===1&&this.firstSelectedEditor.isEnterHandled}undo(){this.#c.undo(),this.#S({hasSomethingToUndo:this.#c.hasSomethingToUndo(),hasSomethingToRedo:!0,isEmpty:this.#H()})}redo(){this.#c.redo(),this.#S({hasSomethingToUndo:!0,hasSomethingToRedo:this.#c.hasSomethingToRedo(),isEmpty:this.#H()})}addCommands(d){this.#c.add(d),this.#S({hasSomethingToUndo:!0,hasSomethingToRedo:!1,isEmpty:this.#H()})}#H(){if(this.#U.size===0)return!0;if(this.#U.size===1)for(const d of this.#U.values())return d.isEmpty();return!1}delete(){if(this.commitOrRemove(),!this.hasSelection)return;const d=[...this.#h],a=()=>{for(const c of d)c.remove()},l=()=>{for(const c of d)this.#dl(c)};this.addCommands({cmd:a,undo:l,mustExec:!0})}commitOrRemove(){this.#l?.commitOrRemove()}hasSomethingToControl(){return this.#l||this.hasSelection}#Zl(d){for(const a of this.#h)a.unselect();this.#h.clear();for(const a of d)a.isEmpty()||(this.#h.add(a),a.select());this.#S({hasSelectedEditor:this.hasSelection})}selectAll(){for(const d of this.#h)d.commit();this.#Zl(this.#U.values())}unselectAll(){if(!(this.#l&&(this.#l.commitOrRemove(),this.#G!==U.AnnotationEditorType.NONE))&&this.hasSelection){for(const d of this.#h)d.unselect();this.#h.clear(),this.#S({hasSelectedEditor:!1})}}translateSelectedEditors(d,a,l=!1){if(l||this.commitOrRemove(),!this.hasSelection)return;this.#r[0]+=d,this.#r[1]+=a;const[c,s]=this.#r,h=[...this.#h],o=1e3;this.#E&&clearTimeout(this.#E),this.#E=setTimeout(()=>{this.#E=null,this.#r[0]=this.#r[1]=0,this.addCommands({cmd:()=>{for(const u of h)this.#U.has(u.id)&&u.translateInPage(c,s)},undo:()=>{for(const u of h)this.#U.has(u.id)&&u.translateInPage(-c,-s)},mustExec:!1})},o);for(const u of h)u.translateInPage(d,a)}setUpDragSession(){if(this.hasSelection){this.disableUserSelect(!0),this.#N=new Map;for(const d of this.#h)this.#N.set(d,{savedX:d.x,savedY:d.y,savedPageIndex:d.pageIndex,newX:0,newY:0,newPageIndex:-1})}}endDragSession(){if(!this.#N)return!1;this.disableUserSelect(!1);const d=this.#N;this.#N=null;let a=!1;for(const[{x:c,y:s,pageIndex:h},o]of d)o.newX=c,o.newY=s,o.newPageIndex=h,a||=c!==o.savedX||s!==o.savedY||h!==o.savedPageIndex;if(!a)return!1;const l=(c,s,h,o)=>{if(this.#U.has(c.id)){const u=this.#d.get(o);u?c._setParentAndPosition(u,s,h):(c.pageIndex=o,c.x=s,c.y=h)}};return this.addCommands({cmd:()=>{for(const[c,{newX:s,newY:h,newPageIndex:o}]of d)l(c,s,h,o)},undo:()=>{for(const[c,{savedX:s,savedY:h,savedPageIndex:o}]of d)l(c,s,h,o)},mustExec:!0}),!0}dragSelectedEditors(d,a){if(this.#N)for(const l of this.#N.keys())l.drag(d,a)}rebuild(d){if(d.parent===null){const a=this.getLayer(d.pageIndex);a?(a.changeParent(d),a.addOrRebuild(d)):(this.addEditor(d),this.addToAnnotationStorage(d),d.rebuild())}else d.parent.addOrRebuild(d)}get isEditorHandlingKeyboard(){return this.getActive()?.shouldGetKeyboardEvents()||this.#h.size===1&&this.firstSelectedEditor.shouldGetKeyboardEvents()}isActive(d){return this.#l===d}getActive(){return this.#l}getMode(){return this.#G}get imageManager(){return(0,U.shadow)(this,"imageManager",new p)}getSelectionBoxes(d){if(!d)return null;const a=document.getSelection();for(let L=0,I=a.rangeCount;L({x:(I-c)/h,y:1-(L+x-l)/s,width:O/h,height:x/s});break;case"180":o=(L,I,x,O)=>({x:1-(L+x-l)/s,y:1-(I+O-c)/h,width:x/s,height:O/h});break;case"270":o=(L,I,x,O)=>({x:1-(I+O-c)/h,y:(L-l)/s,width:O/h,height:x/s});break;default:o=(L,I,x,O)=>({x:(L-l)/s,y:(I-c)/h,width:x/s,height:O/h});break}const u=[];for(let L=0,I=a.rangeCount;L{t.d(N,{PDFFetchStream:()=>S});var U=t(292),n=t(490);function m(F,R,W){return{method:"GET",headers:F,signal:W.signal,mode:"cors",credentials:R?"include":"same-origin",redirect:"follow"}}function z(F){const R=new Headers;for(const W in F){const J=F[W];J!==void 0&&R.append(W,J)}return R}function Y(F){return F instanceof Uint8Array?F.buffer:F instanceof ArrayBuffer?F:((0,U.warn)(`getArrayBuffer - unexpected data format: ${F}`),new Uint8Array(F).buffer)}class S{constructor(R){this.source=R,this.isHttp=/^https?:/i.test(R.url),this.httpHeaders=this.isHttp&&R.httpHeaders||{},this._fullRequestReader=null,this._rangeRequestReaders=[]}get _progressiveDataLength(){return this._fullRequestReader?._loaded??0}getFullReader(){return(0,U.assert)(!this._fullRequestReader,"PDFFetchStream.getFullReader can only be called once."),this._fullRequestReader=new p(this),this._fullRequestReader}getRangeReader(R,W){if(W<=this._progressiveDataLength)return null;const J=new e(this,R,W);return this._rangeRequestReaders.push(J),J}cancelAllRequests(R){this._fullRequestReader?.cancel(R);for(const W of this._rangeRequestReaders.slice(0))W.cancel(R)}}class p{constructor(R){this._stream=R,this._reader=null,this._loaded=0,this._filename=null;const W=R.source;this._withCredentials=W.withCredentials||!1,this._contentLength=W.length,this._headersCapability=Promise.withResolvers(),this._disableRange=W.disableRange||!1,this._rangeChunkSize=W.rangeChunkSize,!this._rangeChunkSize&&!this._disableRange&&(this._disableRange=!0),this._abortController=new AbortController,this._isStreamingSupported=!W.disableStream,this._isRangeSupported=!W.disableRange,this._headers=z(this._stream.httpHeaders);const J=W.url;fetch(J,m(this._headers,this._withCredentials,this._abortController)).then(d=>{if(!(0,n.validateResponseStatus)(d.status))throw(0,n.createResponseStatusError)(d.status,J);this._reader=d.body.getReader(),this._headersCapability.resolve();const a=s=>d.headers.get(s),{allowRangeRequests:l,suggestedLength:c}=(0,n.validateRangeRequestCapabilities)({getResponseHeader:a,isHttp:this._stream.isHttp,rangeChunkSize:this._rangeChunkSize,disableRange:this._disableRange});this._isRangeSupported=l,this._contentLength=c||this._contentLength,this._filename=(0,n.extractFilenameFromHeader)(a),!this._isStreamingSupported&&this._isRangeSupported&&this.cancel(new U.AbortException("Streaming is disabled."))}).catch(this._headersCapability.reject),this.onProgress=null}get headersReady(){return this._headersCapability.promise}get filename(){return this._filename}get contentLength(){return this._contentLength}get isRangeSupported(){return this._isRangeSupported}get isStreamingSupported(){return this._isStreamingSupported}async read(){await this._headersCapability.promise;const{value:R,done:W}=await this._reader.read();return W?{value:R,done:W}:(this._loaded+=R.byteLength,this.onProgress?.({loaded:this._loaded,total:this._contentLength}),{value:Y(R),done:!1})}cancel(R){this._reader?.cancel(R),this._abortController.abort()}}class e{constructor(R,W,J){this._stream=R,this._reader=null,this._loaded=0;const d=R.source;this._withCredentials=d.withCredentials||!1,this._readCapability=Promise.withResolvers(),this._isStreamingSupported=!d.disableStream,this._abortController=new AbortController,this._headers=z(this._stream.httpHeaders),this._headers.append("Range",`bytes=${W}-${J-1}`);const a=d.url;fetch(a,m(this._headers,this._withCredentials,this._abortController)).then(l=>{if(!(0,n.validateResponseStatus)(l.status))throw(0,n.createResponseStatusError)(l.status,a);this._readCapability.resolve(),this._reader=l.body.getReader()}).catch(this._readCapability.reject),this.onProgress=null}get isStreamingSupported(){return this._isStreamingSupported}async read(){await this._readCapability.promise;const{value:R,done:W}=await this._reader.read();return W?{value:R,done:W}:(this._loaded+=R.byteLength,this.onProgress?.({loaded:this._loaded}),{value:Y(R),done:!1})}cancel(R){this._reader?.cancel(R),this._abortController.abort()}}},10:(T,N,t)=>{t.d(N,{FontFaceObject:()=>m,FontLoader:()=>n});var U=t(292);class n{#l=new Set;constructor({ownerDocument:Y=globalThis.document,styleElement:S=null}){this._document=Y,this.nativeFontFaces=new Set,this.styleElement=null,this.loadingRequests=[],this.loadTestFontId=0}addNativeFontFace(Y){this.nativeFontFaces.add(Y),this._document.fonts.add(Y)}removeNativeFontFace(Y){this.nativeFontFaces.delete(Y),this._document.fonts.delete(Y)}insertRule(Y){this.styleElement||(this.styleElement=this._document.createElement("style"),this._document.documentElement.getElementsByTagName("head")[0].append(this.styleElement));const S=this.styleElement.sheet;S.insertRule(Y,S.cssRules.length)}clear(){for(const Y of this.nativeFontFaces)this._document.fonts.delete(Y);this.nativeFontFaces.clear(),this.#l.clear(),this.styleElement&&(this.styleElement.remove(),this.styleElement=null)}async loadSystemFont({systemFontInfo:Y,_inspectFont:S}){if(!(!Y||this.#l.has(Y.loadedName))){if((0,U.assert)(!this.disableFontFace,"loadSystemFont shouldn't be called when `disableFontFace` is set."),this.isFontLoadingAPISupported){const{loadedName:p,src:e,style:F}=Y,R=new FontFace(p,e,F);this.addNativeFontFace(R);try{await R.load(),this.#l.add(p),S?.(Y)}catch{(0,U.warn)(`Cannot load system font: ${Y.baseFontName}, installing it could help to improve PDF rendering.`),this.removeNativeFontFace(R)}return}(0,U.unreachable)("Not implemented: loadSystemFont without the Font Loading API.")}}async bind(Y){if(Y.attached||Y.missingFile&&!Y.systemFontInfo)return;if(Y.attached=!0,Y.systemFontInfo){await this.loadSystemFont(Y);return}if(this.isFontLoadingAPISupported){const p=Y.createNativeFontFace();if(p){this.addNativeFontFace(p);try{await p.loaded}catch(e){throw(0,U.warn)(`Failed to load font '${p.family}': '${e}'.`),Y.disableFontFace=!0,e}}return}const S=Y.createFontFaceRule();if(S){if(this.insertRule(S),this.isSyncFontLoadingSupported)return;await new Promise(p=>{const e=this._queueLoadingCallback(p);this._prepareFontLoadEvent(Y,e)})}}get isFontLoadingAPISupported(){const Y=!!this._document?.fonts;return(0,U.shadow)(this,"isFontLoadingAPISupported",Y)}get isSyncFontLoadingSupported(){let Y=!1;return(U.isNodeJS||typeof navigator<"u"&&typeof navigator?.userAgent=="string"&&/Mozilla\/5.0.*?rv:\d+.*? Gecko/.test(navigator.userAgent))&&(Y=!0),(0,U.shadow)(this,"isSyncFontLoadingSupported",Y)}_queueLoadingCallback(Y){function S(){for((0,U.assert)(!e.done,"completeRequest() cannot be called twice."),e.done=!0;p.length>0&&p[0].done;){const F=p.shift();setTimeout(F.callback,0)}}const{loadingRequests:p}=this,e={done:!1,complete:S,callback:Y};return p.push(e),e}get _loadTestFont(){const Y=atob("T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQAFQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAAALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgAAAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACMAooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4DIP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAAAAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUAAQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgABAAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABYAAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAAAC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAAAAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQACAQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTjFQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA==");return(0,U.shadow)(this,"_loadTestFont",Y)}_prepareFontLoadEvent(Y,S){function p(O,v){return O.charCodeAt(v)<<24|O.charCodeAt(v+1)<<16|O.charCodeAt(v+2)<<8|O.charCodeAt(v+3)&255}function e(O,v,Ul,Nl){const q=O.substring(0,v),r=O.substring(v+Ul);return q+Nl+r}let F,R;const W=this._document.createElement("canvas");W.width=1,W.height=1;const J=W.getContext("2d");let d=0;function a(O,v){if(++d>30){(0,U.warn)("Load test font never loaded."),v();return}if(J.font="30px "+O,J.fillText(".",0,20),J.getImageData(0,0,1,1).data[3]>0){v();return}setTimeout(a.bind(null,O,v))}const l=`lt${Date.now()}${this.loadTestFontId++}`;let c=this._loadTestFont;c=e(c,976,l.length,l);const h=16,o=1482184792;let u=p(c,h);for(F=0,R=l.length-3;F{x.remove(),S.complete()})}}class m{constructor(Y,{disableFontFace:S=!1,ignoreErrors:p=!1,inspectFont:e=null}){this.compiledGlyphs=Object.create(null);for(const F in Y)this[F]=Y[F];this.disableFontFace=S===!0,this.ignoreErrors=p===!0,this._inspectFont=e}createNativeFontFace(){if(!this.data||this.disableFontFace)return null;let Y;if(!this.cssFontInfo)Y=new FontFace(this.loadedName,this.data,{});else{const S={weight:this.cssFontInfo.fontWeight};this.cssFontInfo.italicAngle&&(S.style=`oblique ${this.cssFontInfo.italicAngle}deg`),Y=new FontFace(this.cssFontInfo.fontFamily,this.data,S)}return this._inspectFont?.(this),Y}createFontFaceRule(){if(!this.data||this.disableFontFace)return null;const Y=(0,U.bytesToString)(this.data),S=`url(data:${this.mimetype};base64,${btoa(Y)});`;let p;if(!this.cssFontInfo)p=`@font-face {font-family:"${this.loadedName}";src:${S}}`;else{let e=`font-weight: ${this.cssFontInfo.fontWeight};`;this.cssFontInfo.italicAngle&&(e+=`font-style: oblique ${this.cssFontInfo.italicAngle}deg;`),p=`@font-face {font-family:"${this.cssFontInfo.fontFamily}";${e}src:${S}}`}return this._inspectFont?.(this,S),p}getPathGenerator(Y,S){if(this.compiledGlyphs[S]!==void 0)return this.compiledGlyphs[S];let p;try{p=Y.get(this.loadedName+"_path_"+S)}catch(F){if(!this.ignoreErrors)throw F;(0,U.warn)(`getPathGenerator - ignoring character: "${F}".`)}if(!Array.isArray(p)||p.length===0)return this.compiledGlyphs[S]=function(F,R){};const e=[];for(let F=0,R=p.length;Fs.bezierCurveTo(W,J,d,a,l,c)),F+=6}break;case U.FontRenderOps.MOVE_TO:{const[W,J]=p.slice(F,F+2);e.push(d=>d.moveTo(W,J)),F+=2}break;case U.FontRenderOps.LINE_TO:{const[W,J]=p.slice(F,F+2);e.push(d=>d.lineTo(W,J)),F+=2}break;case U.FontRenderOps.QUADRATIC_CURVE_TO:{const[W,J,d,a]=p.slice(F,F+4);e.push(l=>l.quadraticCurveTo(W,J,d,a)),F+=4}break;case U.FontRenderOps.RESTORE:e.push(W=>W.restore());break;case U.FontRenderOps.SAVE:e.push(W=>W.save());break;case U.FontRenderOps.SCALE:(0,U.assert)(e.length===2,"Scale command is only valid at the third position.");break;case U.FontRenderOps.TRANSFORM:{const[W,J,d,a,l,c]=p.slice(F,F+6);e.push(s=>s.transform(W,J,d,a,l,c)),F+=6}break;case U.FontRenderOps.TRANSLATE:{const[W,J]=p.slice(F,F+2);e.push(d=>d.translate(W,J)),F+=2}break}return this.compiledGlyphs[S]=function(R,W){e[0](R),e[1](R),R.scale(W,-W);for(let J=2,d=e.length;J{t.d(N,{Metadata:()=>n});var U=t(292);class n{#l;#U;constructor({parsedData:z,rawData:Y}){this.#l=z,this.#U=Y}getRaw(){return this.#U}get(z){return this.#l.get(z)??null}getAll(){return(0,U.objectFromMap)(this.#l)}has(z){return this.#l.has(z)}}},457:(T,N,t)=>{t.d(N,{PDFNetworkStream:()=>p});var U=t(292),n=t(490);const m=200,z=206;function Y(R){const W=R.response;return typeof W!="string"?W:(0,U.stringToBytes)(W).buffer}class S{constructor(W,J={}){this.url=W,this.isHttp=/^https?:/i.test(W),this.httpHeaders=this.isHttp&&J.httpHeaders||Object.create(null),this.withCredentials=J.withCredentials||!1,this.currXhrId=0,this.pendingRequests=Object.create(null)}requestRange(W,J,d){const a={begin:W,end:J};for(const l in d)a[l]=d[l];return this.request(a)}requestFull(W){return this.request(W)}request(W){const J=new XMLHttpRequest,d=this.currXhrId++,a=this.pendingRequests[d]={xhr:J};J.open("GET",this.url),J.withCredentials=this.withCredentials;for(const l in this.httpHeaders){const c=this.httpHeaders[l];c!==void 0&&J.setRequestHeader(l,c)}return this.isHttp&&"begin"in W&&"end"in W?(J.setRequestHeader("Range",`bytes=${W.begin}-${W.end-1}`),a.expectedStatus=z):a.expectedStatus=m,J.responseType="arraybuffer",W.onError&&(J.onerror=function(l){W.onError(J.status)}),J.onreadystatechange=this.onStateChange.bind(this,d),J.onprogress=this.onProgress.bind(this,d),a.onHeadersReceived=W.onHeadersReceived,a.onDone=W.onDone,a.onError=W.onError,a.onProgress=W.onProgress,J.send(null),d}onProgress(W,J){const d=this.pendingRequests[W];d&&d.onProgress?.(J)}onStateChange(W,J){const d=this.pendingRequests[W];if(!d)return;const a=d.xhr;if(a.readyState>=2&&d.onHeadersReceived&&(d.onHeadersReceived(),delete d.onHeadersReceived),a.readyState!==4||!(W in this.pendingRequests))return;if(delete this.pendingRequests[W],a.status===0&&this.isHttp){d.onError?.(a.status);return}const l=a.status||m;if(!(l===m&&d.expectedStatus===z)&&l!==d.expectedStatus){d.onError?.(a.status);return}const s=Y(a);if(l===z){const h=a.getResponseHeader("Content-Range"),o=/bytes (\d+)-(\d+)\/(\d+)/.exec(h);d.onDone({begin:parseInt(o[1],10),chunk:s})}else s?d.onDone({begin:0,chunk:s}):d.onError?.(a.status)}getRequestXhr(W){return this.pendingRequests[W].xhr}isPendingRequest(W){return W in this.pendingRequests}abortRequest(W){const J=this.pendingRequests[W].xhr;delete this.pendingRequests[W],J.abort()}}class p{constructor(W){this._source=W,this._manager=new S(W.url,{httpHeaders:W.httpHeaders,withCredentials:W.withCredentials}),this._rangeChunkSize=W.rangeChunkSize,this._fullRequestReader=null,this._rangeRequestReaders=[]}_onRangeRequestReaderClosed(W){const J=this._rangeRequestReaders.indexOf(W);J>=0&&this._rangeRequestReaders.splice(J,1)}getFullReader(){return(0,U.assert)(!this._fullRequestReader,"PDFNetworkStream.getFullReader can only be called once."),this._fullRequestReader=new e(this._manager,this._source),this._fullRequestReader}getRangeReader(W,J){const d=new F(this._manager,W,J);return d.onClosed=this._onRangeRequestReaderClosed.bind(this),this._rangeRequestReaders.push(d),d}cancelAllRequests(W){this._fullRequestReader?.cancel(W);for(const J of this._rangeRequestReaders.slice(0))J.cancel(W)}}class e{constructor(W,J){this._manager=W;const d={onHeadersReceived:this._onHeadersReceived.bind(this),onDone:this._onDone.bind(this),onError:this._onError.bind(this),onProgress:this._onProgress.bind(this)};this._url=J.url,this._fullRequestId=W.requestFull(d),this._headersReceivedCapability=Promise.withResolvers(),this._disableRange=J.disableRange||!1,this._contentLength=J.length,this._rangeChunkSize=J.rangeChunkSize,!this._rangeChunkSize&&!this._disableRange&&(this._disableRange=!0),this._isStreamingSupported=!1,this._isRangeSupported=!1,this._cachedChunks=[],this._requests=[],this._done=!1,this._storedError=void 0,this._filename=null,this.onProgress=null}_onHeadersReceived(){const W=this._fullRequestId,J=this._manager.getRequestXhr(W),d=c=>J.getResponseHeader(c),{allowRangeRequests:a,suggestedLength:l}=(0,n.validateRangeRequestCapabilities)({getResponseHeader:d,isHttp:this._manager.isHttp,rangeChunkSize:this._rangeChunkSize,disableRange:this._disableRange});a&&(this._isRangeSupported=!0),this._contentLength=l||this._contentLength,this._filename=(0,n.extractFilenameFromHeader)(d),this._isRangeSupported&&this._manager.abortRequest(W),this._headersReceivedCapability.resolve()}_onDone(W){if(W&&(this._requests.length>0?this._requests.shift().resolve({value:W.chunk,done:!1}):this._cachedChunks.push(W.chunk)),this._done=!0,!(this._cachedChunks.length>0)){for(const J of this._requests)J.resolve({value:void 0,done:!0});this._requests.length=0}}_onError(W){this._storedError=(0,n.createResponseStatusError)(W,this._url),this._headersReceivedCapability.reject(this._storedError);for(const J of this._requests)J.reject(this._storedError);this._requests.length=0,this._cachedChunks.length=0}_onProgress(W){this.onProgress?.({loaded:W.loaded,total:W.lengthComputable?W.total:this._contentLength})}get filename(){return this._filename}get isRangeSupported(){return this._isRangeSupported}get isStreamingSupported(){return this._isStreamingSupported}get contentLength(){return this._contentLength}get headersReady(){return this._headersReceivedCapability.promise}async read(){if(this._storedError)throw this._storedError;if(this._cachedChunks.length>0)return{value:this._cachedChunks.shift(),done:!1};if(this._done)return{value:void 0,done:!0};const W=Promise.withResolvers();return this._requests.push(W),W.promise}cancel(W){this._done=!0,this._headersReceivedCapability.reject(W);for(const J of this._requests)J.resolve({value:void 0,done:!0});this._requests.length=0,this._manager.isPendingRequest(this._fullRequestId)&&this._manager.abortRequest(this._fullRequestId),this._fullRequestReader=null}}class F{constructor(W,J,d){this._manager=W;const a={onDone:this._onDone.bind(this),onError:this._onError.bind(this),onProgress:this._onProgress.bind(this)};this._url=W.url,this._requestId=W.requestRange(J,d,a),this._requests=[],this._queuedChunk=null,this._done=!1,this._storedError=void 0,this.onProgress=null,this.onClosed=null}_close(){this.onClosed?.(this)}_onDone(W){const J=W.chunk;this._requests.length>0?this._requests.shift().resolve({value:J,done:!1}):this._queuedChunk=J,this._done=!0;for(const d of this._requests)d.resolve({value:void 0,done:!0});this._requests.length=0,this._close()}_onError(W){this._storedError=(0,n.createResponseStatusError)(W,this._url);for(const J of this._requests)J.reject(this._storedError);this._requests.length=0,this._queuedChunk=null}_onProgress(W){this.isStreamingSupported||this.onProgress?.({loaded:W.loaded})}get isStreamingSupported(){return!1}async read(){if(this._storedError)throw this._storedError;if(this._queuedChunk!==null){const J=this._queuedChunk;return this._queuedChunk=null,{value:J,done:!1}}if(this._done)return{value:void 0,done:!0};const W=Promise.withResolvers();return this._requests.push(W),W.promise}cancel(W){this._done=!0;for(const J of this._requests)J.resolve({value:void 0,done:!0});this._requests.length=0,this._manager.isPendingRequest(this._requestId)&&this._manager.abortRequest(this._requestId),this._close()}}},490:(T,N,t)=>{t.d(N,{createResponseStatusError:()=>S,extractFilenameFromHeader:()=>Y,validateRangeRequestCapabilities:()=>z,validateResponseStatus:()=>p});var U=t(292);function n(e){let F=!0,R=W("filename\\*","i").exec(e);if(R){R=R[1];let h=l(R);return h=unescape(h),h=c(h),h=s(h),d(h)}if(R=a(e),R){const h=s(R);return d(h)}if(R=W("filename","i").exec(e),R){R=R[1];let h=l(R);return h=s(h),d(h)}function W(h,o){return new RegExp("(?:^|;)\\s*"+h+'\\s*=\\s*([^";\\s][^;\\s]*|"(?:[^"\\\\]|\\\\"?)+"?)',o)}function J(h,o){if(h){if(!/^[\x00-\xFF]+$/.test(o))return o;try{const u=new TextDecoder(h,{fatal:!0}),L=(0,U.stringToBytes)(o);o=u.decode(L),F=!1}catch{}}return o}function d(h){return F&&/[\x80-\xff]/.test(h)&&(h=J("utf-8",h),F&&(h=J("iso-8859-1",h))),h}function a(h){const o=[];let u;const L=W("filename\\*((?!0\\d)\\d+)(\\*?)","ig");for(;(u=L.exec(h))!==null;){let[,x,O,v]=u;if(x=parseInt(x,10),x in o){if(x===0)break;continue}o[x]=[O,v]}const I=[];for(let x=0;x{t.a(T,async(U,n)=>{try{let R=function(o){const u=e.parse(o);return u.protocol==="file:"||u.host?u:/^[a-z]:[/\\]/i.test(o)?e.parse(`file:///${o}`):(u.host||(u.protocol="file:"),u)},a=function(o,u){return{protocol:o.protocol,auth:o.auth,host:o.hostname,port:o.port,path:o.path,method:"GET",headers:u}};t.d(N,{PDFNodeStream:()=>W});var m=t(292),z=t(490);let Y,S,p,e;m.isNodeJS&&(Y=await tU(()=>import("./vite-browser-external.BIHI7g3E.js"),[]),S=await tU(()=>import("./vite-browser-external.BIHI7g3E.js"),[]),p=await tU(()=>import("./vite-browser-external.BIHI7g3E.js"),[]),e=await tU(()=>import("./vite-browser-external.BIHI7g3E.js"),[]));const F=/^file:\/\/\/[a-zA-Z]:\//;class W{constructor(u){this.source=u,this.url=R(u.url),this.isHttp=this.url.protocol==="http:"||this.url.protocol==="https:",this.isFsUrl=this.url.protocol==="file:",this.httpHeaders=this.isHttp&&u.httpHeaders||{},this._fullRequestReader=null,this._rangeRequestReaders=[]}get _progressiveDataLength(){return this._fullRequestReader?._loaded??0}getFullReader(){return(0,m.assert)(!this._fullRequestReader,"PDFNodeStream.getFullReader can only be called once."),this._fullRequestReader=this.isFsUrl?new s(this):new l(this),this._fullRequestReader}getRangeReader(u,L){if(L<=this._progressiveDataLength)return null;const I=this.isFsUrl?new h(this,u,L):new c(this,u,L);return this._rangeRequestReaders.push(I),I}cancelAllRequests(u){this._fullRequestReader?.cancel(u);for(const L of this._rangeRequestReaders.slice(0))L.cancel(u)}}class J{constructor(u){this._url=u.url,this._done=!1,this._storedError=null,this.onProgress=null;const L=u.source;this._contentLength=L.length,this._loaded=0,this._filename=null,this._disableRange=L.disableRange||!1,this._rangeChunkSize=L.rangeChunkSize,!this._rangeChunkSize&&!this._disableRange&&(this._disableRange=!0),this._isStreamingSupported=!L.disableStream,this._isRangeSupported=!L.disableRange,this._readableStream=null,this._readCapability=Promise.withResolvers(),this._headersCapability=Promise.withResolvers()}get headersReady(){return this._headersCapability.promise}get filename(){return this._filename}get contentLength(){return this._contentLength}get isRangeSupported(){return this._isRangeSupported}get isStreamingSupported(){return this._isStreamingSupported}async read(){if(await this._readCapability.promise,this._done)return{value:void 0,done:!0};if(this._storedError)throw this._storedError;const u=this._readableStream.read();return u===null?(this._readCapability=Promise.withResolvers(),this.read()):(this._loaded+=u.length,this.onProgress?.({loaded:this._loaded,total:this._contentLength}),{value:new Uint8Array(u).buffer,done:!1})}cancel(u){if(!this._readableStream){this._error(u);return}this._readableStream.destroy(u)}_error(u){this._storedError=u,this._readCapability.resolve()}_setReadableStream(u){this._readableStream=u,u.on("readable",()=>{this._readCapability.resolve()}),u.on("end",()=>{u.destroy(),this._done=!0,this._readCapability.resolve()}),u.on("error",L=>{this._error(L)}),!this._isStreamingSupported&&this._isRangeSupported&&this._error(new m.AbortException("streaming is disabled")),this._storedError&&this._readableStream.destroy(this._storedError)}}class d{constructor(u){this._url=u.url,this._done=!1,this._storedError=null,this.onProgress=null,this._loaded=0,this._readableStream=null,this._readCapability=Promise.withResolvers();const L=u.source;this._isStreamingSupported=!L.disableStream}get isStreamingSupported(){return this._isStreamingSupported}async read(){if(await this._readCapability.promise,this._done)return{value:void 0,done:!0};if(this._storedError)throw this._storedError;const u=this._readableStream.read();return u===null?(this._readCapability=Promise.withResolvers(),this.read()):(this._loaded+=u.length,this.onProgress?.({loaded:this._loaded}),{value:new Uint8Array(u).buffer,done:!1})}cancel(u){if(!this._readableStream){this._error(u);return}this._readableStream.destroy(u)}_error(u){this._storedError=u,this._readCapability.resolve()}_setReadableStream(u){this._readableStream=u,u.on("readable",()=>{this._readCapability.resolve()}),u.on("end",()=>{u.destroy(),this._done=!0,this._readCapability.resolve()}),u.on("error",L=>{this._error(L)}),this._storedError&&this._readableStream.destroy(this._storedError)}}class l extends J{constructor(u){super(u);const L=I=>{if(I.statusCode===404){const Ul=new m.MissingPDFException(`Missing PDF "${this._url}".`);this._storedError=Ul,this._headersCapability.reject(Ul);return}this._headersCapability.resolve(),this._setReadableStream(I);const x=Ul=>this._readableStream.headers[Ul.toLowerCase()],{allowRangeRequests:O,suggestedLength:v}=(0,z.validateRangeRequestCapabilities)({getResponseHeader:x,isHttp:u.isHttp,rangeChunkSize:this._rangeChunkSize,disableRange:this._disableRange});this._isRangeSupported=O,this._contentLength=v||this._contentLength,this._filename=(0,z.extractFilenameFromHeader)(x)};this._request=null,this._url.protocol==="http:"?this._request=S.request(a(this._url,u.httpHeaders),L):this._request=p.request(a(this._url,u.httpHeaders),L),this._request.on("error",I=>{this._storedError=I,this._headersCapability.reject(I)}),this._request.end()}}class c extends d{constructor(u,L,I){super(u),this._httpHeaders={};for(const O in u.httpHeaders){const v=u.httpHeaders[O];v!==void 0&&(this._httpHeaders[O]=v)}this._httpHeaders.Range=`bytes=${L}-${I-1}`;const x=O=>{if(O.statusCode===404){const v=new m.MissingPDFException(`Missing PDF "${this._url}".`);this._storedError=v;return}this._setReadableStream(O)};this._request=null,this._url.protocol==="http:"?this._request=S.request(a(this._url,this._httpHeaders),x):this._request=p.request(a(this._url,this._httpHeaders),x),this._request.on("error",O=>{this._storedError=O}),this._request.end()}}class s extends J{constructor(u){super(u);let L=decodeURIComponent(this._url.path);F.test(this._url.href)&&(L=L.replace(/^\//,"")),Y.promises.lstat(L).then(I=>{this._contentLength=I.size,this._setReadableStream(Y.createReadStream(L)),this._headersCapability.resolve()},I=>{I.code==="ENOENT"&&(I=new m.MissingPDFException(`Missing PDF "${L}".`)),this._storedError=I,this._headersCapability.reject(I)})}}class h extends d{constructor(u,L,I){super(u);let x=decodeURIComponent(this._url.path);F.test(this._url.href)&&(x=x.replace(/^\//,"")),this._setReadableStream(Y.createReadStream(x,{start:L,end:I-1}))}}n()}catch(Y){n(Y)}},1)},573:(T,N,t)=>{t.a(T,async(U,n)=>{try{t.d(N,{NodeCMapReaderFactory:()=>W,NodeCanvasFactory:()=>R,NodeFilterFactory:()=>F,NodeStandardFontDataFactory:()=>J});var m=t(583),z=t(292);let Y,S,p;if(z.isNodeJS){Y=await tU(()=>import("./vite-browser-external.BIHI7g3E.js"),[]);try{S=await tU(()=>import("./vite-browser-external.BIHI7g3E.js"),[])}catch{}try{p=await tU(()=>import("./index.-EVKqUhF.js"),[])}catch{}}const e=function(d){return Y.promises.readFile(d).then(a=>new Uint8Array(a))};class F extends m.BaseFilterFactory{}class R extends m.BaseCanvasFactory{_createCanvas(a,l){return S.createCanvas(a,l)}}class W extends m.BaseCMapReaderFactory{_fetchData(a,l){return e(a).then(c=>({cMapData:c,compressionType:l}))}}class J extends m.BaseStandardFontDataFactory{_fetchData(a){return e(a)}}n()}catch(Y){n(Y)}},1)},626:(T,N,t)=>{t.d(N,{OptionalContentConfig:()=>Y});var U=t(292),n=t(651);const m=Symbol("INTERNAL");class z{#l=!1;#U=!1;#d=!1;#F=!0;constructor(p,{name:e,intent:F,usage:R}){this.#l=!!(p&U.RenderingIntentFlag.DISPLAY),this.#U=!!(p&U.RenderingIntentFlag.PRINT),this.name=e,this.intent=F,this.usage=R}get visible(){if(this.#d)return this.#F;if(!this.#F)return!1;const{print:p,view:e}=this.usage;return this.#l?e?.viewState!=="OFF":this.#U?p?.printState!=="OFF":!0}_setVisible(p,e,F=!1){p!==m&&(0,U.unreachable)("Internal method `_setVisible` called."),this.#d=F,this.#F=e}}class Y{#l=null;#U=new Map;#d=null;#F=null;constructor(p,e=U.RenderingIntentFlag.DISPLAY){if(this.renderingIntent=e,this.name=null,this.creator=null,p!==null){this.name=p.name,this.creator=p.creator,this.#F=p.order;for(const F of p.groups)this.#U.set(F.id,new z(e,F));if(p.baseState==="OFF")for(const F of this.#U.values())F._setVisible(m,!1);for(const F of p.on)this.#U.get(F)._setVisible(m,!0);for(const F of p.off)this.#U.get(F)._setVisible(m,!1);this.#d=this.getHash()}}#t(p){const e=p.length;if(e<2)return!0;const F=p[0];for(let R=1;R0?(0,U.objectFromMap)(this.#U):null}getGroup(p){return this.#U.get(p)||null}getHash(){if(this.#l!==null)return this.#l;const p=new n.MurmurHash3_64;for(const[e,F]of this.#U)p.update(`${e}:${F.visible}`);return this.#l=p.hexdigest()}}},814:(T,N,t)=>{t.d(N,{cleanupTextLayer:()=>F,renderTextLayer:()=>l,updateTextLayer:()=>c});var U=t(292),n=t(419);const m=1e5,z=30,Y=.8,S=new Map;let p=null;function e(){if(!p){const s=document.createElement("canvas");s.className="hiddenCanvasElement",document.body.append(s),p=s.getContext("2d",{alpha:!1})}return p}function F(){p?.canvas.remove(),p=null}function R(s){const h=S.get(s);if(h)return h;const o=e(),u=o.font;o.canvas.width=o.canvas.height=z,o.font=`${z}px ${s}`;const L=o.measureText("");let I=L.fontBoundingBoxAscent,x=Math.abs(L.fontBoundingBoxDescent);if(I){const v=I/(I+x);return S.set(s,v),o.canvas.width=o.canvas.height=0,o.font=u,v}o.strokeStyle="red",o.clearRect(0,0,z,z),o.strokeText("g",0,0);let O=o.getImageData(0,0,z,z).data;x=0;for(let v=O.length-1-3;v>=0;v-=4)if(O[v]>0){x=Math.ceil(v/4/z);break}o.clearRect(0,0,z,z),o.strokeText("A",0,z),O=o.getImageData(0,0,z,z).data,I=0;for(let v=0,Ul=O.length;v0){I=z-Math.floor(v/4/z);break}if(o.canvas.width=o.canvas.height=0,o.font=u,I){const v=I/(I+x);return S.set(s,v),v}return S.set(s,Y),Y}function W(s,h,o){const u=document.createElement("span"),L={angle:0,canvasWidth:0,hasText:h.str!=="",hasEOL:h.hasEOL,fontSize:0};s._textDivs.push(u);const I=U.Util.transform(s._transform,h.transform);let x=Math.atan2(I[1],I[0]);const O=o[h.fontName];O.vertical&&(x+=Math.PI/2);const v=s._fontInspectorEnabled&&O.fontSubstitution||O.fontFamily,Ul=Math.hypot(I[2],I[3]),Nl=Ul*R(v);let q,r;x===0?(q=I[4],r=I[5]-Nl):(q=I[4]+Nl*Math.sin(x),r=I[5]-Nl*Math.cos(x));const P="calc(var(--scale-factor)*",ll=u.style;s._container===s._rootContainer?(ll.left=`${(100*q/s._pageWidth).toFixed(2)}%`,ll.top=`${(100*r/s._pageHeight).toFixed(2)}%`):(ll.left=`${P}${q.toFixed(2)}px)`,ll.top=`${P}${r.toFixed(2)}px)`),ll.fontSize=`${P}${Ul.toFixed(2)}px)`,ll.fontFamily=v,L.fontSize=Ul,u.setAttribute("role","presentation"),u.textContent=h.str,u.dir=h.dir,s._fontInspectorEnabled&&(u.dataset.fontName=O.fontSubstitutionLoadedName||h.fontName),x!==0&&(L.angle=x*(180/Math.PI));let Vl=!1;if(h.str.length>1)Vl=!0;else if(h.str!==" "&&h.transform[0]!==h.transform[3]){const cl=Math.abs(h.transform[0]),hl=Math.abs(h.transform[3]);cl!==hl&&Math.max(cl,hl)/Math.min(cl,hl)>1.5&&(Vl=!0)}Vl&&(L.canvasWidth=O.vertical?h.height:h.width),s._textDivProperties.set(u,L),s._isReadableStream&&s._layoutText(u)}function J(s){const{div:h,scale:o,properties:u,ctx:L,prevFontSize:I,prevFontFamily:x}=s,{style:O}=h;let v="";if(u.canvasWidth!==0&&u.hasText){const{fontFamily:Ul}=O,{canvasWidth:Nl,fontSize:q}=u;(I!==q||x!==Ul)&&(L.font=`${q*o}px ${Ul}`,s.prevFontSize=q,s.prevFontFamily=Ul);const{width:r}=L.measureText(h.textContent);r>0&&(v=`scaleX(${Nl*o/r})`)}u.angle!==0&&(v=`rotate(${u.angle}deg) ${v}`),v.length>0&&(O.transform=v)}function d(s){if(s._canceled)return;const h=s._textDivs,o=s._capability;if(h.length>m){o.resolve();return}if(!s._isReadableStream)for(const L of h)s._layoutText(L);o.resolve()}class a{constructor({textContentSource:h,container:o,viewport:u,textDivs:L,textDivProperties:I,textContentItemsStr:x}){this._textContentSource=h,this._isReadableStream=h instanceof ReadableStream,this._container=this._rootContainer=o,this._textDivs=L||[],this._textContentItemsStr=x||[],this._fontInspectorEnabled=!!globalThis.FontInspector?.enabled,this._reader=null,this._textDivProperties=I||new WeakMap,this._canceled=!1,this._capability=Promise.withResolvers(),this._layoutTextParams={prevFontSize:null,prevFontFamily:null,div:null,scale:u.scale*(globalThis.devicePixelRatio||1),properties:null,ctx:e()};const{pageWidth:O,pageHeight:v,pageX:Ul,pageY:Nl}=u.rawDims;this._transform=[1,0,0,-1,-Ul,Nl+v],this._pageWidth=O,this._pageHeight=v,(0,n.setLayerDimensions)(o,u),this._capability.promise.finally(()=>{this._layoutTextParams=null}).catch(()=>{})}get promise(){return this._capability.promise}cancel(){this._canceled=!0,this._reader&&(this._reader.cancel(new U.AbortException("TextLayer task cancelled.")).catch(()=>{}),this._reader=null),this._capability.reject(new U.AbortException("TextLayer task cancelled."))}_processItems(h,o){for(const u of h){if(u.str===void 0){if(u.type==="beginMarkedContentProps"||u.type==="beginMarkedContent"){const L=this._container;this._container=document.createElement("span"),this._container.classList.add("markedContent"),u.id!==null&&this._container.setAttribute("id",`${u.id}`),L.append(this._container)}else u.type==="endMarkedContent"&&(this._container=this._container.parentNode);continue}this._textContentItemsStr.push(u.str),W(this,u,o)}}_layoutText(h){const o=this._layoutTextParams.properties=this._textDivProperties.get(h);if(this._layoutTextParams.div=h,J(this._layoutTextParams),o.hasText&&this._container.append(h),o.hasEOL){const u=document.createElement("br");u.setAttribute("role","presentation"),this._container.append(u)}}_render(){const{promise:h,resolve:o,reject:u}=Promise.withResolvers();let L=Object.create(null);if(this._isReadableStream){const I=()=>{this._reader.read().then(({value:x,done:O})=>{if(O){o();return}Object.assign(L,x.styles),this._processItems(x.items,L),I()},u)};this._reader=this._textContentSource.getReader(),I()}else if(this._textContentSource){const{items:I,styles:x}=this._textContentSource;this._processItems(I,x),o()}else throw new Error('No "textContentSource" parameter specified.');h.then(()=>{L=null,d(this)},this._capability.reject)}}function l(s){const h=new a(s);return h._render(),h}function c({container:s,viewport:h,textDivs:o,textDivProperties:u,mustRotate:L=!0,mustRescale:I=!0}){if(L&&(0,n.setLayerDimensions)(s,{rotation:h.rotation}),I){const x=e(),v={prevFontSize:null,prevFontFamily:null,div:null,scale:h.scale*(globalThis.devicePixelRatio||1),properties:null,ctx:x};for(const Ul of o)v.properties=u.get(Ul),v.div=Ul,J(v)}}},585:(T,N,t)=>{t.d(N,{PDFDataTransportStream:()=>m});var U=t(292),n=t(419);class m{constructor(p,{disableRange:e=!1,disableStream:F=!1}){(0,U.assert)(p,'PDFDataTransportStream - missing required "pdfDataRangeTransport" argument.');const{length:R,initialData:W,progressiveDone:J,contentDispositionFilename:d}=p;if(this._queuedChunks=[],this._progressiveDone=J,this._contentDispositionFilename=d,W?.length>0){const a=W instanceof Uint8Array&&W.byteLength===W.buffer.byteLength?W.buffer:new Uint8Array(W).buffer;this._queuedChunks.push(a)}this._pdfDataRangeTransport=p,this._isStreamingSupported=!F,this._isRangeSupported=!e,this._contentLength=R,this._fullRequestReader=null,this._rangeReaders=[],p.addRangeListener((a,l)=>{this._onReceiveData({begin:a,chunk:l})}),p.addProgressListener((a,l)=>{this._onProgress({loaded:a,total:l})}),p.addProgressiveReadListener(a=>{this._onReceiveData({chunk:a})}),p.addProgressiveDoneListener(()=>{this._onProgressiveDone()}),p.transportReady()}_onReceiveData({begin:p,chunk:e}){const F=e instanceof Uint8Array&&e.byteLength===e.buffer.byteLength?e.buffer:new Uint8Array(e).buffer;if(p===void 0)this._fullRequestReader?this._fullRequestReader._enqueue(F):this._queuedChunks.push(F);else{const R=this._rangeReaders.some(function(W){return W._begin!==p?!1:(W._enqueue(F),!0)});(0,U.assert)(R,"_onReceiveData - no `PDFDataTransportStreamRangeReader` instance found.")}}get _progressiveDataLength(){return this._fullRequestReader?._loaded??0}_onProgress(p){p.total===void 0?this._rangeReaders[0]?.onProgress?.({loaded:p.loaded}):this._fullRequestReader?.onProgress?.({loaded:p.loaded,total:p.total})}_onProgressiveDone(){this._fullRequestReader?.progressiveDone(),this._progressiveDone=!0}_removeRangeReader(p){const e=this._rangeReaders.indexOf(p);e>=0&&this._rangeReaders.splice(e,1)}getFullReader(){(0,U.assert)(!this._fullRequestReader,"PDFDataTransportStream.getFullReader can only be called once.");const p=this._queuedChunks;return this._queuedChunks=null,new z(this,p,this._progressiveDone,this._contentDispositionFilename)}getRangeReader(p,e){if(e<=this._progressiveDataLength)return null;const F=new Y(this,p,e);return this._pdfDataRangeTransport.requestDataRange(p,e),this._rangeReaders.push(F),F}cancelAllRequests(p){this._fullRequestReader?.cancel(p);for(const e of this._rangeReaders.slice(0))e.cancel(p);this._pdfDataRangeTransport.abort()}}class z{constructor(p,e,F=!1,R=null){this._stream=p,this._done=F||!1,this._filename=(0,n.isPdfFile)(R)?R:null,this._queuedChunks=e||[],this._loaded=0;for(const W of this._queuedChunks)this._loaded+=W.byteLength;this._requests=[],this._headersReady=Promise.resolve(),p._fullRequestReader=this,this.onProgress=null}_enqueue(p){this._done||(this._requests.length>0?this._requests.shift().resolve({value:p,done:!1}):this._queuedChunks.push(p),this._loaded+=p.byteLength)}get headersReady(){return this._headersReady}get filename(){return this._filename}get isRangeSupported(){return this._stream._isRangeSupported}get isStreamingSupported(){return this._stream._isStreamingSupported}get contentLength(){return this._stream._contentLength}async read(){if(this._queuedChunks.length>0)return{value:this._queuedChunks.shift(),done:!1};if(this._done)return{value:void 0,done:!0};const p=Promise.withResolvers();return this._requests.push(p),p.promise}cancel(p){this._done=!0;for(const e of this._requests)e.resolve({value:void 0,done:!0});this._requests.length=0}progressiveDone(){this._done||(this._done=!0)}}class Y{constructor(p,e,F){this._stream=p,this._begin=e,this._end=F,this._queuedChunk=null,this._requests=[],this._done=!1,this.onProgress=null}_enqueue(p){if(!this._done){if(this._requests.length===0)this._queuedChunk=p;else{this._requests.shift().resolve({value:p,done:!1});for(const F of this._requests)F.resolve({value:void 0,done:!0});this._requests.length=0}this._done=!0,this._stream._removeRangeReader(this)}}get isStreamingSupported(){return!1}async read(){if(this._queuedChunk){const e=this._queuedChunk;return this._queuedChunk=null,{value:e,done:!1}}if(this._done)return{value:void 0,done:!0};const p=Promise.withResolvers();return this._requests.push(p),p.promise}cancel(p){this._done=!0;for(const e of this._requests)e.resolve({value:void 0,done:!0});this._requests.length=0,this._stream._removeRangeReader(this)}}},164:(T,N,t)=>{t.d(N,{GlobalWorkerOptions:()=>U});class U{static#l=null;static#U="";static get workerPort(){return this.#l}static set workerPort(m){if(!(typeof Worker<"u"&&m instanceof Worker)&&m!==null)throw new Error("Invalid `workerPort` type.");this.#l=m}static get workerSrc(){return this.#U}static set workerSrc(m){if(typeof m!="string")throw new Error("Invalid `workerSrc` type.");this.#U=m}}},284:(T,N,t)=>{t.d(N,{XfaLayer:()=>n});var U=t(50);class n{static setupStorage(z,Y,S,p,e){const F=p.getValue(Y,{value:null});switch(S.name){case"textarea":if(F.value!==null&&(z.textContent=F.value),e==="print")break;z.addEventListener("input",R=>{p.setValue(Y,{value:R.target.value})});break;case"input":if(S.attributes.type==="radio"||S.attributes.type==="checkbox"){if(F.value===S.attributes.xfaOn?z.setAttribute("checked",!0):F.value===S.attributes.xfaOff&&z.removeAttribute("checked"),e==="print")break;z.addEventListener("change",R=>{p.setValue(Y,{value:R.target.checked?R.target.getAttribute("xfaOn"):R.target.getAttribute("xfaOff")})})}else{if(F.value!==null&&z.setAttribute("value",F.value),e==="print")break;z.addEventListener("input",R=>{p.setValue(Y,{value:R.target.value})})}break;case"select":if(F.value!==null){z.setAttribute("value",F.value);for(const R of S.children)R.attributes.value===F.value?R.attributes.selected=!0:R.attributes.hasOwnProperty("selected")&&delete R.attributes.selected}z.addEventListener("input",R=>{const W=R.target.options,J=W.selectedIndex===-1?"":W[W.selectedIndex].value;p.setValue(Y,{value:J})});break}}static setAttributes({html:z,element:Y,storage:S=null,intent:p,linkService:e}){const{attributes:F}=Y,R=z instanceof HTMLAnchorElement;F.type==="radio"&&(F.name=`${F.name}-${p}`);for(const[W,J]of Object.entries(F))if(J!=null)switch(W){case"class":J.length&&z.setAttribute(W,J.join(" "));break;case"dataId":break;case"id":z.setAttribute("data-element-id",J);break;case"style":Object.assign(z.style,J);break;case"textContent":z.textContent=J;break;default:(!R||W!=="href"&&W!=="newWindow")&&z.setAttribute(W,J)}R&&e.addLinkAttributes(z,F.href,F.newWindow),S&&F.dataId&&this.setupStorage(z,F.dataId,Y,S)}static render(z){const Y=z.annotationStorage,S=z.linkService,p=z.xfaHtml,e=z.intent||"display",F=document.createElement(p.name);p.attributes&&this.setAttributes({html:F,element:p,intent:e,linkService:S});const R=e!=="richText",W=z.div;if(W.append(F),z.viewport){const a=`matrix(${z.viewport.transform.join(",")})`;W.style.transform=a}R&&W.setAttribute("class","xfaLayer xfaFont");const J=[];if(p.children.length===0){if(p.value){const a=document.createTextNode(p.value);F.append(a),R&&U.XfaText.shouldBuildText(p.name)&&J.push(a)}return{textDivs:J}}const d=[[p,-1,F]];for(;d.length>0;){const[a,l,c]=d.at(-1);if(l+1===a.children.length){d.pop();continue}const s=a.children[++d.at(-1)[1]];if(s===null)continue;const{name:h}=s;if(h==="#text"){const u=document.createTextNode(s.value);J.push(u),c.append(u);continue}const o=s?.attributes?.xmlns?document.createElementNS(s.attributes.xmlns,h):document.createElement(h);if(c.append(o),s.attributes&&this.setAttributes({html:o,element:s,storage:Y,intent:e,linkService:S}),s.children?.length>0)d.push([s,-1,o]);else if(s.value){const u=document.createTextNode(s.value);R&&U.XfaText.shouldBuildText(h)&&J.push(u),o.append(u)}}for(const a of W.querySelectorAll(".xfaNonInteractive input, .xfaNonInteractive textarea"))a.setAttribute("readOnly",!0);return{textDivs:J}}static update(z){const Y=`matrix(${z.viewport.transform.join(",")})`;z.div.style.transform=Y,z.div.hidden=!1}}},50:(T,N,t)=>{t.d(N,{XfaText:()=>U});class U{static textContent(m){const z=[],Y={items:z,styles:Object.create(null)};function S(p){if(!p)return;let e=null;const F=p.name;if(F==="#text")e=p.value;else if(U.shouldBuildText(F))p?.attributes?.textContent?e=p.attributes.textContent:p.value&&(e=p.value);else return;if(e!==null&&z.push({str:e}),!!p.children)for(const R of p.children)S(R)}return S(m),Y}static shouldBuildText(m){return!(m==="textarea"||m==="input"||m==="option"||m==="select")}}},228:(T,N,t)=>{t.a(T,async(U,n)=>{try{t.d(N,{AbortException:()=>m.AbortException,AnnotationEditorLayer:()=>p.AnnotationEditorLayer,AnnotationEditorParamsType:()=>m.AnnotationEditorParamsType,AnnotationEditorType:()=>m.AnnotationEditorType,AnnotationEditorUIManager:()=>e.AnnotationEditorUIManager,AnnotationLayer:()=>F.AnnotationLayer,AnnotationMode:()=>m.AnnotationMode,CMapCompressionType:()=>m.CMapCompressionType,ColorPicker:()=>R.ColorPicker,DOMSVGFactory:()=>Y.DOMSVGFactory,DrawLayer:()=>W.DrawLayer,FeatureTest:()=>m.FeatureTest,GlobalWorkerOptions:()=>J.GlobalWorkerOptions,ImageKind:()=>m.ImageKind,InvalidPDFException:()=>m.InvalidPDFException,MissingPDFException:()=>m.MissingPDFException,OPS:()=>m.OPS,Outliner:()=>d.Outliner,PDFDataRangeTransport:()=>z.PDFDataRangeTransport,PDFDateString:()=>Y.PDFDateString,PDFWorker:()=>z.PDFWorker,PasswordResponses:()=>m.PasswordResponses,PermissionFlag:()=>m.PermissionFlag,PixelsPerInch:()=>Y.PixelsPerInch,RenderingCancelledException:()=>Y.RenderingCancelledException,UnexpectedResponseException:()=>m.UnexpectedResponseException,Util:()=>m.Util,VerbosityLevel:()=>m.VerbosityLevel,XfaLayer:()=>a.XfaLayer,build:()=>z.build,createValidAbsoluteUrl:()=>m.createValidAbsoluteUrl,fetchData:()=>Y.fetchData,getDocument:()=>z.getDocument,getFilenameFromUrl:()=>Y.getFilenameFromUrl,getPdfFilenameFromUrl:()=>Y.getPdfFilenameFromUrl,getXfaPageViewport:()=>Y.getXfaPageViewport,isDataScheme:()=>Y.isDataScheme,isPdfFile:()=>Y.isPdfFile,noContextMenu:()=>Y.noContextMenu,normalizeUnicode:()=>m.normalizeUnicode,renderTextLayer:()=>S.renderTextLayer,setLayerDimensions:()=>Y.setLayerDimensions,shadow:()=>m.shadow,updateTextLayer:()=>S.updateTextLayer,version:()=>z.version});var m=t(292),z=t(831),Y=t(419),S=t(814),p=t(731),e=t(830),F=t(976),R=t(259),W=t(47),J=t(164),d=t(61),a=t(284),l=U([z]);z=(l.then?(await l)():l)[0];const c="4.2.67",s="49b388101";n()}catch(c){n(c)}})},178:(T,N,t)=>{t.d(N,{MessageHandler:()=>Y});var U=t(292);const n={UNKNOWN:0,DATA:1,ERROR:2},m={UNKNOWN:0,CANCEL:1,CANCEL_COMPLETE:2,CLOSE:3,ENQUEUE:4,ERROR:5,PULL:6,PULL_COMPLETE:7,START_COMPLETE:8};function z(S){switch(S instanceof Error||typeof S=="object"&&S!==null||(0,U.unreachable)('wrapReason: Expected "reason" to be a (possibly cloned) Error.'),S.name){case"AbortException":return new U.AbortException(S.message);case"MissingPDFException":return new U.MissingPDFException(S.message);case"PasswordException":return new U.PasswordException(S.message,S.code);case"UnexpectedResponseException":return new U.UnexpectedResponseException(S.message,S.status);case"UnknownErrorException":return new U.UnknownErrorException(S.message,S.details);default:return new U.UnknownErrorException(S.message,S.toString())}}class Y{constructor(p,e,F){this.sourceName=p,this.targetName=e,this.comObj=F,this.callbackId=1,this.streamId=1,this.streamSinks=Object.create(null),this.streamControllers=Object.create(null),this.callbackCapabilities=Object.create(null),this.actionHandler=Object.create(null),this._onComObjOnMessage=R=>{const W=R.data;if(W.targetName!==this.sourceName)return;if(W.stream){this.#U(W);return}if(W.callback){const d=W.callbackId,a=this.callbackCapabilities[d];if(!a)throw new Error(`Cannot resolve callback ${d}`);if(delete this.callbackCapabilities[d],W.callback===n.DATA)a.resolve(W.data);else if(W.callback===n.ERROR)a.reject(z(W.reason));else throw new Error("Unexpected callback case");return}const J=this.actionHandler[W.action];if(!J)throw new Error(`Unknown action from worker: ${W.action}`);if(W.callbackId){const d=this.sourceName,a=W.sourceName;new Promise(function(l){l(J(W.data))}).then(function(l){F.postMessage({sourceName:d,targetName:a,callback:n.DATA,callbackId:W.callbackId,data:l})},function(l){F.postMessage({sourceName:d,targetName:a,callback:n.ERROR,callbackId:W.callbackId,reason:z(l)})});return}if(W.streamId){this.#l(W);return}J(W.data)},F.addEventListener("message",this._onComObjOnMessage)}on(p,e){const F=this.actionHandler;if(F[p])throw new Error(`There is already an actionName called "${p}"`);F[p]=e}send(p,e,F){this.comObj.postMessage({sourceName:this.sourceName,targetName:this.targetName,action:p,data:e},F)}sendWithPromise(p,e,F){const R=this.callbackId++,W=Promise.withResolvers();this.callbackCapabilities[R]=W;try{this.comObj.postMessage({sourceName:this.sourceName,targetName:this.targetName,action:p,callbackId:R,data:e},F)}catch(J){W.reject(J)}return W.promise}sendWithStream(p,e,F,R){const W=this.streamId++,J=this.sourceName,d=this.targetName,a=this.comObj;return new ReadableStream({start:l=>{const c=Promise.withResolvers();return this.streamControllers[W]={controller:l,startCall:c,pullCall:null,cancelCall:null,isClosed:!1},a.postMessage({sourceName:J,targetName:d,action:p,streamId:W,data:e,desiredSize:l.desiredSize},R),c.promise},pull:l=>{const c=Promise.withResolvers();return this.streamControllers[W].pullCall=c,a.postMessage({sourceName:J,targetName:d,stream:m.PULL,streamId:W,desiredSize:l.desiredSize}),c.promise},cancel:l=>{(0,U.assert)(l instanceof Error,"cancel must have a valid reason");const c=Promise.withResolvers();return this.streamControllers[W].cancelCall=c,this.streamControllers[W].isClosed=!0,a.postMessage({sourceName:J,targetName:d,stream:m.CANCEL,streamId:W,reason:z(l)}),c.promise}},F)}#l(p){const e=p.streamId,F=this.sourceName,R=p.sourceName,W=this.comObj,J=this,d=this.actionHandler[p.action],a={enqueue(l,c=1,s){if(this.isCancelled)return;const h=this.desiredSize;this.desiredSize-=c,h>0&&this.desiredSize<=0&&(this.sinkCapability=Promise.withResolvers(),this.ready=this.sinkCapability.promise),W.postMessage({sourceName:F,targetName:R,stream:m.ENQUEUE,streamId:e,chunk:l},s)},close(){this.isCancelled||(this.isCancelled=!0,W.postMessage({sourceName:F,targetName:R,stream:m.CLOSE,streamId:e}),delete J.streamSinks[e])},error(l){(0,U.assert)(l instanceof Error,"error must have a valid reason"),!this.isCancelled&&(this.isCancelled=!0,W.postMessage({sourceName:F,targetName:R,stream:m.ERROR,streamId:e,reason:z(l)}))},sinkCapability:Promise.withResolvers(),onPull:null,onCancel:null,isCancelled:!1,desiredSize:p.desiredSize,ready:null};a.sinkCapability.resolve(),a.ready=a.sinkCapability.promise,this.streamSinks[e]=a,new Promise(function(l){l(d(p.data,a))}).then(function(){W.postMessage({sourceName:F,targetName:R,stream:m.START_COMPLETE,streamId:e,success:!0})},function(l){W.postMessage({sourceName:F,targetName:R,stream:m.START_COMPLETE,streamId:e,reason:z(l)})})}#U(p){const e=p.streamId,F=this.sourceName,R=p.sourceName,W=this.comObj,J=this.streamControllers[e],d=this.streamSinks[e];switch(p.stream){case m.START_COMPLETE:p.success?J.startCall.resolve():J.startCall.reject(z(p.reason));break;case m.PULL_COMPLETE:p.success?J.pullCall.resolve():J.pullCall.reject(z(p.reason));break;case m.PULL:if(!d){W.postMessage({sourceName:F,targetName:R,stream:m.PULL_COMPLETE,streamId:e,success:!0});break}d.desiredSize<=0&&p.desiredSize>0&&d.sinkCapability.resolve(),d.desiredSize=p.desiredSize,new Promise(function(a){a(d.onPull?.())}).then(function(){W.postMessage({sourceName:F,targetName:R,stream:m.PULL_COMPLETE,streamId:e,success:!0})},function(a){W.postMessage({sourceName:F,targetName:R,stream:m.PULL_COMPLETE,streamId:e,reason:z(a)})});break;case m.ENQUEUE:if((0,U.assert)(J,"enqueue should have stream controller"),J.isClosed)break;J.controller.enqueue(p.chunk);break;case m.CLOSE:if((0,U.assert)(J,"close should have stream controller"),J.isClosed)break;J.isClosed=!0,J.controller.close(),this.#d(J,e);break;case m.ERROR:(0,U.assert)(J,"error should have stream controller"),J.controller.error(z(p.reason)),this.#d(J,e);break;case m.CANCEL_COMPLETE:p.success?J.cancelCall.resolve():J.cancelCall.reject(z(p.reason)),this.#d(J,e);break;case m.CANCEL:if(!d)break;new Promise(function(a){a(d.onCancel?.(z(p.reason)))}).then(function(){W.postMessage({sourceName:F,targetName:R,stream:m.CANCEL_COMPLETE,streamId:e,success:!0})},function(a){W.postMessage({sourceName:F,targetName:R,stream:m.CANCEL_COMPLETE,streamId:e,reason:z(a)})}),d.sinkCapability.reject(z(p.reason)),d.isCancelled=!0,delete this.streamSinks[e];break;default:throw new Error("Unexpected stream case")}}async#d(p,e){await Promise.allSettled([p.startCall?.promise,p.pullCall?.promise,p.cancelCall?.promise]),delete this.streamControllers[e]}destroy(){this.comObj.removeEventListener("message",this._onComObjOnMessage)}}},651:(T,N,t)=>{t.d(N,{MurmurHash3_64:()=>z});const U=3285377520,n=4294901760,m=65535;class z{constructor(S){this.h1=S?S&4294967295:U,this.h2=S?S&4294967295:U}update(S){let p,e;if(typeof S=="string"){p=new Uint8Array(S.length*2),e=0;for(let u=0,L=S.length;u>>8,p[e++]=I&255)}}else if(ArrayBuffer.isView(S))p=S.slice(),e=p.byteLength;else throw new Error("Invalid data format, must be a string or TypedArray.");const F=e>>2,R=e-F*4,W=new Uint32Array(p.buffer,0,F);let J=0,d=0,a=this.h1,l=this.h2;const c=3432918353,s=461845907,h=c&m,o=s&m;for(let u=0;u>>17,J=J*s&n|J*o&m,a^=J,a=a<<13|a>>>19,a=a*5+3864292196):(d=W[u],d=d*c&n|d*h&m,d=d<<15|d>>>17,d=d*s&n|d*o&m,l^=d,l=l<<13|l>>>19,l=l*5+3864292196);switch(J=0,R){case 3:J^=p[F*4+2]<<16;case 2:J^=p[F*4+1]<<8;case 1:J^=p[F*4],J=J*c&n|J*h&m,J=J<<15|J>>>17,J=J*s&n|J*o&m,F&1?a^=J:l^=J}this.h1=a,this.h2=l}hexdigest(){let S=this.h1,p=this.h2;return S^=p>>>1,S=S*3981806797&n|S*36045&m,p=p*4283543511&n|((p<<16|S>>>16)*2950163797&n)>>>16,S^=p>>>1,S=S*444984403&n|S*60499&m,p=p*3301882366&n|((p<<16|S>>>16)*3120437893&n)>>>16,S^=p>>>1,(S>>>0).toString(16).padStart(8,"0")+(p>>>0).toString(16).padStart(8,"0")}}},292:(T,N,t)=>{t.d(N,{AbortException:()=>Sl,AnnotationBorderStyleType:()=>l,AnnotationEditorParamsType:()=>R,AnnotationEditorPrefix:()=>e,AnnotationEditorType:()=>F,AnnotationMode:()=>p,AnnotationPrefix:()=>E,AnnotationType:()=>a,BaseException:()=>P,CMapCompressionType:()=>s,FONT_IDENTITY_MATRIX:()=>m,FeatureTest:()=>Q,FontRenderOps:()=>j,FormatError:()=>ul,IDENTITY_MATRIX:()=>n,ImageKind:()=>d,InvalidPDFException:()=>cl,LINE_FACTOR:()=>Y,MAX_IMAGE_SIZE_TO_CACHE:()=>z,MissingPDFException:()=>hl,OPS:()=>h,PasswordException:()=>ll,PasswordResponses:()=>o,PermissionFlag:()=>W,RenderingIntentFlag:()=>S,TextRenderingMode:()=>J,UnexpectedResponseException:()=>Gl,UnknownErrorException:()=>Vl,Util:()=>b,VerbosityLevel:()=>c,assert:()=>Ul,bytesToString:()=>ml,createValidAbsoluteUrl:()=>q,getUuid:()=>D,getVerbosityLevel:()=>I,info:()=>x,isNodeJS:()=>U,normalizeUnicode:()=>y,objectFromMap:()=>X,setVerbosityLevel:()=>L,shadow:()=>r,string32:()=>Wl,stringToBytes:()=>Xl,unreachable:()=>v,warn:()=>O});const U=typeof process=="object"&&process+""=="[object process]"&&!process.versions.nw&&!(process.versions.electron&&process.type&&process.type!=="browser"),n=[1,0,0,1,0,0],m=[.001,0,0,.001,0,0],z=1e7,Y=1.35,S={ANY:1,DISPLAY:2,PRINT:4,SAVE:8,ANNOTATIONS_FORMS:16,ANNOTATIONS_STORAGE:32,ANNOTATIONS_DISABLE:64,OPLIST:256},p={DISABLE:0,ENABLE:1,ENABLE_FORMS:2,ENABLE_STORAGE:3},e="pdfjs_internal_editor_",F={DISABLE:-1,NONE:0,FREETEXT:3,HIGHLIGHT:9,STAMP:13,INK:15},R={RESIZE:1,CREATE:2,FREETEXT_SIZE:11,FREETEXT_COLOR:12,FREETEXT_OPACITY:13,INK_COLOR:21,INK_THICKNESS:22,INK_OPACITY:23,HIGHLIGHT_COLOR:31,HIGHLIGHT_DEFAULT_COLOR:32,HIGHLIGHT_THICKNESS:33,HIGHLIGHT_FREE:34,HIGHLIGHT_SHOW_ALL:35},W={PRINT:4,MODIFY_CONTENTS:8,COPY:16,MODIFY_ANNOTATIONS:32,FILL_INTERACTIVE_FORMS:256,COPY_FOR_ACCESSIBILITY:512,ASSEMBLE:1024,PRINT_HIGH_QUALITY:2048},J={FILL:0,STROKE:1,FILL_STROKE:2,INVISIBLE:3,FILL_ADD_TO_PATH:4,STROKE_ADD_TO_PATH:5,FILL_STROKE_ADD_TO_PATH:6,ADD_TO_PATH:7,FILL_STROKE_MASK:3,ADD_TO_PATH_FLAG:4},d={GRAYSCALE_1BPP:1,RGB_24BPP:2,RGBA_32BPP:3},a={TEXT:1,LINK:2,FREETEXT:3,LINE:4,SQUARE:5,CIRCLE:6,POLYGON:7,POLYLINE:8,HIGHLIGHT:9,UNDERLINE:10,SQUIGGLY:11,STRIKEOUT:12,STAMP:13,CARET:14,INK:15,POPUP:16,FILEATTACHMENT:17,SOUND:18,MOVIE:19,WIDGET:20,SCREEN:21,PRINTERMARK:22,TRAPNET:23,WATERMARK:24,THREED:25,REDACT:26},l={SOLID:1,DASHED:2,BEVELED:3,INSET:4,UNDERLINE:5},c={ERRORS:0,WARNINGS:1,INFOS:5},s={NONE:0,BINARY:1},h={dependency:1,setLineWidth:2,setLineCap:3,setLineJoin:4,setMiterLimit:5,setDash:6,setRenderingIntent:7,setFlatness:8,setGState:9,save:10,restore:11,transform:12,moveTo:13,lineTo:14,curveTo:15,curveTo2:16,curveTo3:17,closePath:18,rectangle:19,stroke:20,closeStroke:21,fill:22,eoFill:23,fillStroke:24,eoFillStroke:25,closeFillStroke:26,closeEOFillStroke:27,endPath:28,clip:29,eoClip:30,beginText:31,endText:32,setCharSpacing:33,setWordSpacing:34,setHScale:35,setLeading:36,setFont:37,setTextRenderingMode:38,setTextRise:39,moveText:40,setLeadingMoveText:41,setTextMatrix:42,nextLine:43,showText:44,showSpacedText:45,nextLineShowText:46,nextLineSetSpacingShowText:47,setCharWidth:48,setCharWidthAndBounds:49,setStrokeColorSpace:50,setFillColorSpace:51,setStrokeColor:52,setStrokeColorN:53,setFillColor:54,setFillColorN:55,setStrokeGray:56,setFillGray:57,setStrokeRGBColor:58,setFillRGBColor:59,setStrokeCMYKColor:60,setFillCMYKColor:61,shadingFill:62,beginInlineImage:63,beginImageData:64,endInlineImage:65,paintXObject:66,markPoint:67,markPointProps:68,beginMarkedContent:69,beginMarkedContentProps:70,endMarkedContent:71,beginCompat:72,endCompat:73,paintFormXObjectBegin:74,paintFormXObjectEnd:75,beginGroup:76,endGroup:77,beginAnnotation:80,endAnnotation:81,paintImageMaskXObject:83,paintImageMaskXObjectGroup:84,paintImageXObject:85,paintInlineImageXObject:86,paintInlineImageXObjectGroup:87,paintImageXObjectRepeat:88,paintImageMaskXObjectRepeat:89,paintSolidColorImageMask:90,constructPath:91},o={NEED_PASSWORD:1,INCORRECT_PASSWORD:2};let u=c.WARNINGS;function L(w){Number.isInteger(w)&&(u=w)}function I(){return u}function x(w){u>=c.INFOS&&console.log(`Info: ${w}`)}function O(w){u>=c.WARNINGS&&console.log(`Warning: ${w}`)}function v(w){throw new Error(w)}function Ul(w,C){w||v(C)}function Nl(w){switch(w?.protocol){case"http:":case"https:":case"ftp:":case"mailto:":case"tel:":return!0;default:return!1}}function q(w,C=null,k=null){if(!w)return null;try{if(k&&typeof w=="string"&&(k.addDefaultProtocol&&w.startsWith("www.")&&w.match(/\./g)?.length>=2&&(w=`http://${w}`),k.tryConvertEncoding))try{w=V(w)}catch{}const f=C?new URL(w,C):new URL(w);if(Nl(f))return f}catch{}return null}function r(w,C,k,f=!1){return Object.defineProperty(w,C,{value:k,enumerable:!f,configurable:!0,writable:!1}),k}const P=function(){function C(k,f){this.constructor===C&&v("Cannot initialize BaseException."),this.message=k,this.name=f}return C.prototype=new Error,C.constructor=C,C}();class ll extends P{constructor(C,k){super(C,"PasswordException"),this.code=k}}class Vl extends P{constructor(C,k){super(C,"UnknownErrorException"),this.details=k}}class cl extends P{constructor(C){super(C,"InvalidPDFException")}}class hl extends P{constructor(C){super(C,"MissingPDFException")}}class Gl extends P{constructor(C,k){super(C,"UnexpectedResponseException"),this.status=k}}class ul extends P{constructor(C){super(C,"FormatError")}}class Sl extends P{constructor(C){super(C,"AbortException")}}function ml(w){(typeof w!="object"||w?.length===void 0)&&v("Invalid argument for bytesToString");const C=w.length,k=8192;if(C>24&255,w>>16&255,w>>8&255,w&255)}function X(w){const C=Object.create(null);for(const[k,f]of w)C[k]=f;return C}function i(){const w=new Uint8Array(4);return w[0]=1,new Uint32Array(w.buffer,0,1)[0]===1}function Z(){try{return new Function(""),!0}catch{return!1}}class Q{static get isLittleEndian(){return r(this,"isLittleEndian",i())}static get isEvalSupported(){return r(this,"isEvalSupported",Z())}static get isOffscreenCanvasSupported(){return r(this,"isOffscreenCanvasSupported",typeof OffscreenCanvas<"u")}static get platform(){return typeof navigator<"u"&&typeof navigator?.platform=="string"?r(this,"platform",{isMac:navigator.platform.includes("Mac")}):r(this,"platform",{isMac:!1})}static get isCSSRoundSupported(){return r(this,"isCSSRoundSupported",globalThis.CSS?.supports?.("width: round(1.5px, 1px)"))}}const G=Array.from(Array(256).keys(),w=>w.toString(16).padStart(2,"0"));class b{static makeHexColor(C,k,f){return`#${G[C]}${G[k]}${G[f]}`}static scaleMinMax(C,k){let f;C[0]?(C[0]<0&&(f=k[0],k[0]=k[2],k[2]=f),k[0]*=C[0],k[2]*=C[0],C[3]<0&&(f=k[1],k[1]=k[3],k[3]=f),k[1]*=C[3],k[3]*=C[3]):(f=k[0],k[0]=k[1],k[1]=f,f=k[2],k[2]=k[3],k[3]=f,C[1]<0&&(f=k[1],k[1]=k[3],k[3]=f),k[1]*=C[1],k[3]*=C[1],C[2]<0&&(f=k[0],k[0]=k[2],k[2]=f),k[0]*=C[2],k[2]*=C[2]),k[0]+=C[4],k[1]+=C[5],k[2]+=C[4],k[3]+=C[5]}static transform(C,k){return[C[0]*k[0]+C[2]*k[1],C[1]*k[0]+C[3]*k[1],C[0]*k[2]+C[2]*k[3],C[1]*k[2]+C[3]*k[3],C[0]*k[4]+C[2]*k[5]+C[4],C[1]*k[4]+C[3]*k[5]+C[5]]}static applyTransform(C,k){const f=C[0]*k[0]+C[1]*k[2]+k[4],Fl=C[0]*k[1]+C[1]*k[3]+k[5];return[f,Fl]}static applyInverseTransform(C,k){const f=k[0]*k[3]-k[1]*k[2],Fl=(C[0]*k[3]-C[1]*k[2]+k[2]*k[5]-k[4]*k[3])/f,_=(-C[0]*k[1]+C[1]*k[0]+k[4]*k[1]-k[5]*k[0])/f;return[Fl,_]}static getAxialAlignedBoundingBox(C,k){const f=this.applyTransform(C,k),Fl=this.applyTransform(C.slice(2,4),k),_=this.applyTransform([C[0],C[3]],k),Zl=this.applyTransform([C[2],C[1]],k);return[Math.min(f[0],Fl[0],_[0],Zl[0]),Math.min(f[1],Fl[1],_[1],Zl[1]),Math.max(f[0],Fl[0],_[0],Zl[0]),Math.max(f[1],Fl[1],_[1],Zl[1])]}static inverseTransform(C){const k=C[0]*C[3]-C[1]*C[2];return[C[3]/k,-C[1]/k,-C[2]/k,C[0]/k,(C[2]*C[5]-C[4]*C[3])/k,(C[4]*C[1]-C[5]*C[0])/k]}static singularValueDecompose2dScale(C){const k=[C[0],C[2],C[1],C[3]],f=C[0]*k[0]+C[1]*k[2],Fl=C[0]*k[1]+C[1]*k[3],_=C[2]*k[0]+C[3]*k[2],Zl=C[2]*k[1]+C[3]*k[3],sl=(f+Zl)/2,Ql=Math.sqrt((f+Zl)**2-4*(f*Zl-_*Fl))/2,tl=sl+Ql||1,nl=sl-Ql||1;return[Math.sqrt(tl),Math.sqrt(nl)]}static normalizeRect(C){const k=C.slice(0);return C[0]>C[2]&&(k[0]=C[2],k[2]=C[0]),C[1]>C[3]&&(k[1]=C[3],k[3]=C[1]),k}static intersect(C,k){const f=Math.max(Math.min(C[0],C[2]),Math.min(k[0],k[2])),Fl=Math.min(Math.max(C[0],C[2]),Math.max(k[0],k[2]));if(f>Fl)return null;const _=Math.max(Math.min(C[1],C[3]),Math.min(k[1],k[3])),Zl=Math.min(Math.max(C[1],C[3]),Math.max(k[1],k[3]));return _>Zl?null:[f,_,Fl,Zl]}static#l(C,k,f,Fl,_,Zl,sl,Ql,tl,nl){if(tl<=0||tl>=1)return;const Ml=1-tl,ol=tl*tl,Ll=ol*tl,Dl=Ml*(Ml*(Ml*C+3*tl*k)+3*ol*f)+Ll*Fl,yl=Ml*(Ml*(Ml*_+3*tl*Zl)+3*ol*sl)+Ll*Ql;nl[0]=Math.min(nl[0],Dl),nl[1]=Math.min(nl[1],yl),nl[2]=Math.max(nl[2],Dl),nl[3]=Math.max(nl[3],yl)}static#U(C,k,f,Fl,_,Zl,sl,Ql,tl,nl,Ml,ol){if(Math.abs(tl)<1e-12){Math.abs(nl)>=1e-12&&this.#l(C,k,f,Fl,_,Zl,sl,Ql,-Ml/nl,ol);return}const Ll=nl**2-4*Ml*tl;if(Ll<0)return;const Dl=Math.sqrt(Ll),yl=2*tl;this.#l(C,k,f,Fl,_,Zl,sl,Ql,(-nl+Dl)/yl,ol),this.#l(C,k,f,Fl,_,Zl,sl,Ql,(-nl-Dl)/yl,ol)}static bezierBoundingBox(C,k,f,Fl,_,Zl,sl,Ql,tl){return tl?(tl[0]=Math.min(tl[0],C,sl),tl[1]=Math.min(tl[1],k,Ql),tl[2]=Math.max(tl[2],C,sl),tl[3]=Math.max(tl[3],k,Ql)):tl=[Math.min(C,sl),Math.min(k,Ql),Math.max(C,sl),Math.max(k,Ql)],this.#U(C,f,_,sl,k,Fl,Zl,Ql,3*(-C+3*(f-_)+sl),6*(C-2*f+_),3*(f-C),tl),this.#U(C,f,_,sl,k,Fl,Zl,Ql,3*(-k+3*(Fl-Zl)+Ql),6*(k-2*Fl+Zl),3*(Fl-k),tl),tl}}function V(w){return decodeURIComponent(escape(w))}let M=null,B=null;function y(w){return M||(M=/([\u00a0\u00b5\u037e\u0eb3\u2000-\u200a\u202f\u2126\ufb00-\ufb04\ufb06\ufb20-\ufb36\ufb38-\ufb3c\ufb3e\ufb40-\ufb41\ufb43-\ufb44\ufb46-\ufba1\ufba4-\ufba9\ufbae-\ufbb1\ufbd3-\ufbdc\ufbde-\ufbe7\ufbea-\ufbf8\ufbfc-\ufbfd\ufc00-\ufc5d\ufc64-\ufcf1\ufcf5-\ufd3d\ufd88\ufdf4\ufdfa-\ufdfb\ufe71\ufe77\ufe79\ufe7b\ufe7d]+)|(\ufb05+)/gu,B=new Map([["ſt","ſt"]])),w.replaceAll(M,(C,k,f)=>k?k.normalize("NFKC"):B.get(f))}function D(){if(typeof crypto<"u"&&typeof crypto?.randomUUID=="function")return crypto.randomUUID();const w=new Uint8Array(32);if(typeof crypto<"u"&&typeof crypto?.getRandomValues=="function")crypto.getRandomValues(w);else for(let C=0;C<32;C++)w[C]=Math.floor(Math.random()*255);return ml(w)}const E="pdfjs_internal_id_",j={BEZIER_CURVE_TO:0,MOVE_TO:1,LINE_TO:2,QUADRATIC_CURVE_TO:3,RESTORE:4,SAVE:5,SCALE:6,TRANSFORM:7,TRANSLATE:8}}},$U={};function WU(T){var N=$U[T];if(N!==void 0)return N.exports;var t=$U[T]={exports:{}};return _c[T](t,t.exports,WU),t.exports}(()=>{var T=typeof Symbol=="function"?Symbol("webpack queues"):"__webpack_queues__",N=typeof Symbol=="function"?Symbol("webpack exports"):"__webpack_exports__",t=typeof Symbol=="function"?Symbol("webpack error"):"__webpack_error__",U=m=>{m&&m.d<1&&(m.d=1,m.forEach(z=>z.r--),m.forEach(z=>z.r--?z.r++:z()))},n=m=>m.map(z=>{if(z!==null&&typeof z=="object"){if(z[T])return z;if(z.then){var Y=[];Y.d=0,z.then(e=>{S[N]=e,U(Y)},e=>{S[t]=e,U(Y)});var S={};return S[T]=e=>e(Y),S}}var p={};return p[T]=e=>{},p[N]=z,p});WU.a=(m,z,Y)=>{var S;Y&&((S=[]).d=-1);var p=new Set,e=m.exports,F,R,W,J=new Promise((d,a)=>{W=a,R=d});J[N]=e,J[T]=d=>(S&&d(S),p.forEach(d),J.catch(a=>{})),m.exports=J,z(d=>{F=n(d);var a,l=()=>F.map(s=>{if(s[t])throw s[t];return s[N]}),c=new Promise(s=>{a=()=>s(l),a.r=0;var h=o=>o!==S&&!p.has(o)&&(p.add(o),o&&!o.d&&(a.r++,o.push(a)));F.map(o=>o[T](h))});return a.r?c:l()},d=>(d?W(J[t]=d):R(e),U(S))),S&&S.d<0&&(S.d=0)}})();WU.d=(T,N)=>{for(var t in N)WU.o(N,t)&&!WU.o(T,t)&&Object.defineProperty(T,t,{enumerable:!0,get:N[t]})};WU.o=(T,N)=>Object.prototype.hasOwnProperty.call(T,N);var Yl=WU(228);Yl=globalThis.pdfjsLib=await(globalThis.pdfjsLibPromise=Yl);Yl.AbortException;Yl.AnnotationEditorLayer;Yl.AnnotationEditorParamsType;Yl.AnnotationEditorType;Yl.AnnotationEditorUIManager;var qc=Yl.AnnotationLayer,ld=Yl.AnnotationMode;Yl.CMapCompressionType;Yl.ColorPicker;Yl.DOMSVGFactory;Yl.DrawLayer;Yl.FeatureTest;var ed=Yl.GlobalWorkerOptions;Yl.ImageKind;Yl.InvalidPDFException;Yl.MissingPDFException;Yl.OPS;Yl.Outliner;Yl.PDFDataRangeTransport;Yl.PDFDateString;Yl.PDFWorker;Yl.PasswordResponses;Yl.PermissionFlag;Yl.PixelsPerInch;Yl.RenderingCancelledException;Yl.UnexpectedResponseException;Yl.Util;Yl.VerbosityLevel;var $c=Yl.XfaLayer;Yl.build;Yl.createValidAbsoluteUrl;Yl.fetchData;var Ud=Yl.getDocument;Yl.getFilenameFromUrl;Yl.getPdfFilenameFromUrl;Yl.getXfaPageViewport;Yl.isDataScheme;Yl.isPdfFile;Yl.noContextMenu;Yl.normalizeUnicode;var lQ=Yl.renderTextLayer;Yl.setLayerDimensions;Yl.shadow;Yl.updateTextLayer;Yl.version;var UQ=Object.defineProperty,dQ=(T,N,t)=>N in T?UQ(T,N,{enumerable:!0,configurable:!0,writable:!0,value:t}):T[N]=t,ZQ=(T,N,t)=>(dQ(T,N+"",t),t);const dd="internal-link",FQ="link",tQ="file-attachment",cQ="form-text",QQ="form-select",VQ="form-checkbox",WQ="form-radio",RQ="form-button",Zd=["click","dblclick","mouseover","input","change"];function JU(T,N,t){const U=[];if(t)for(const n of t)n[T]===N&&U.push(n);return U}function dU(T,N){return{type:T,data:N}}function aU(T,N){switch(T.type){case"textarea":case"text":return dU(cQ,{fieldName:T.name,value:T.value});case"select-one":case"select-multiple":const t=[];for(const n of T.options)t.push({value:n.value,label:n.label});const U=[];for(const n of T.selectedOptions)U.push({value:n.value,label:n.label});return dU(QQ,{fieldName:T.name,value:U,options:t});case"checkbox":return dU(VQ,{fieldName:T.name,checked:T.checked});case"radio":return dU(WQ,{fieldName:T.name,...N});case"button":return dU(RQ,{fieldName:T.name,...N})}}function NQ(T){return dU(tQ,T.file)}async function nQ(T,N){if(T.dest){if(typeof T.dest=="string")return dU(dd,{referencedPage:Number(T.dest.substring(1,T.dest.length)),offset:null});{const t=await N.getPageIndex(T.dest[0]);return dU(dd,{referencedPage:t+1,offset:{left:T.dest[2],bottom:T.dest[3]}})}}else if(T.url)return dU(FQ,{url:T.url,unsafeUrl:T.unsafeUrl})}function Fd(T){for(const N of T.getElementsByTagName("span")){let t=N.textContent;const U=JSON.parse(N.dataset.l10nArgs??"{}");if(t)for(const n in U)t=t.replace(`{{${n}}}`,U[n]);N.textContent=t}}function sQ(T,N,t){var U;let n=T.target.parentNode;if(n.tagName==="DIV"&&(n=n.firstChild),n.className==="linkAnnotation"&&T.type==="click"){const m=(U=n.dataset)==null?void 0:U.annotationId;if(m)return nQ(JU("id",m,t)[0],N)}else if(n.className.includes("popupAnnotation")||n.className.includes("textAnnotation"))Fd(n);else if(n.className.includes("fileAttachmentAnnotation")){Fd(n);const m=n.dataset.annotationId;if(m&&T.type==="dblclick")return NQ(JU("id",m,t)[0])}else if(n.className.includes("textWidgetAnnotation")&&T.type==="input"){let m=n.getElementsByTagName("input")[0];return m||(m=n.getElementsByTagName("textarea")[0]),aU(m)}else{if(n.className.includes("choiceWidgetAnnotation")&&T.type==="input")return aU(n.getElementsByTagName("select")[0]);if(n.className.includes("buttonWidgetAnnotation checkBox")&&T.type==="change")return aU(n.getElementsByTagName("input")[0]);if(n.className.includes("buttonWidgetAnnotation radioButton")&&T.type==="change"){const m=n.dataset.annotationId;if(m){const z=JU("id",m,t)[0],Y=[];for(const S of JU("fieldName",z.fieldName,t))S.buttonValue&&Y.push(S.buttonValue);return aU(n.getElementsByTagName("input")[0],{value:z.buttonValue,defaultValue:z.fieldValue,options:Y})}}else if(n.className.includes("buttonWidgetAnnotation pushButton")&&T.type==="click"){const m=n.dataset.annotationId;if(m){const z=JU("id",m,t)[0];return z.resetForm?aU({name:z.fieldName,type:"button"},{actions:z.actions,reset:!0}):aU({name:z.fieldName,type:"button"},{actions:z.actions,reset:!1})}}}}class Td{constructor(){ZQ(this,"externalLinkEnabled"),this.externalLinkEnabled=!0}get pagesCount(){return 0}get page(){return 0}set page(N){}get rotation(){return 0}set rotation(N){}get isInPresentationMode(){return!1}async goToDestination(N){}goToPage(N){}addLinkAttributes(N,t,U=!1){}getDestinationHash(N){return"#"}getAnchorUrl(N){return"#"}setHash(N){}executeNamedAction(N){}executeSetOCGState(N){}cachePageRef(N,t){}}const aQ=il({__name:"AnnotationLayer",props:{page:{},viewport:{},document:{},annotationsFilter:{},annotationsMap:{},imageResourcesPath:{},hideForms:{type:Boolean},enableScripting:{type:Boolean},intent:{}},emits:["annotation","annotationLoaded"],setup(T,{emit:N}){const t=T,U=bl(),n=bl();function m(e){const F=sQ(e,t.document,n.value);Promise.resolve(F).then(R=>{R&&N("annotation",R)})}async function z(){var e;return await((e=eU(t.document))==null?void 0:e.getFieldObjects())}async function Y(){var e;return await((e=eU(t.document))==null?void 0:e.hasJSActions())}async function S(){const e=t.page;let F=await e?.getAnnotations({intent:t.intent});if(t.annotationsFilter){const R=t.annotationsFilter;F=F.filter(W=>{const J=W.subtype,d=W.fieldType?`${J}.${W.fieldType}`:null;return R?.includes(J)||d!==null&&R?.includes(d)})}return F}async function p(){var e,F;(F=(e=U.value).replaceChildren)==null||F.call(e);for(const s of Zd)U.value.removeEventListener(s,m);const R=eU(t.document),W=t.page,J=t.viewport;n.value=await S();const d=new Map([]);for(const s of n.value)if(s.subtype==="Widget"&&s.fieldType==="Btn"&&s.pushButton){const h=s.rect[2]-s.rect[0],o=s.rect[3]-s.rect[1],u=document.createElement("canvas");u.setAttribute("width",(h*J.scale).toString()),u.setAttribute("height",(o*J.scale).toString()),d.set(s.id,u)}const a=R.annotationStorage;if(t.annotationsMap)for(const[s,h]of Object.entries(t.annotationsMap))a.setValue(s,h);const l={accessibilityManager:void 0,annotationCanvasMap:d,div:U.value,page:W,viewport:J.clone({dontFlip:!0}),annotationEditorUIManager:null},c={annotations:n.value,viewport:J.clone({dontFlip:!0}),linkService:new Td,annotationCanvasMap:d,div:U.value,annotationStorage:a,renderForms:!t.hideForms,page:W,enableScripting:!1,hasJSActions:await Y(),fieldObjects:await z(),downloadManager:null,imageResourcesPath:t.imageResourcesPath};new qc(l).render(c).then(async()=>{N("annotationLoaded",await S())});for(const s of Zd)U.value.addEventListener(s,m)}return Hl(()=>t.viewport,()=>{t.page&&t.viewport&&U.value&&p()}),lU(()=>{t.page&&t.viewport&&U.value&&p()}),(e,F)=>(K(),A("div",{ref_key:"layer",ref:U,class:"annotationLayer",style:{display:"block"}},null,512))}});function bQ(T,N,t){const U=[];for(const e of T.items)U.push(e.str),e.hasEOL&&U.push(` +`);const n=U.join("").replace(/\n/g," "),m=["g"];t.ignoreCase&&m.push("i");let z=N.trim();t.completeWords&&(z=`\\b${z}\\b`);const Y=new RegExp(z,m.join("")),S=[];let p;for(;(p=Y.exec(n))!==null;)S.push([p.index,p[0].length,p[0]]);return S}function iQ(T,N){let t=0,U=0;const n=N.items,m=n.length-1,z=[];for(let Y=0;Y=U+n[t].str.length;)U+=n[t].str.length+(n[t].hasEOL?1:0),t++;const p={idx:t,offset:S-U};for(S+=T[Y][1];t!==m&&S>U+n[t].str.length;)U+=n[t].str.length+(n[t].hasEOL?1:0),t++;const e={idx:t,offset:S-U};z.push({start:p,end:e,str:T[Y][2],oindex:T[Y][0]})}return z}function hQ(T,N,t){function U(n,m=-1,z=-1){const Y=N.items[n],S=[];let p="",e="",F="",R=t[n];if(!R)return;if(R.nodeType===Node.TEXT_NODE){const d=document.createElement("span");R.before(d),d.append(R),t[n]=d,R=d}m>=0&&z>=0?p=Y.str.substring(m,z):m<0&&z<0?p=Y.str:m>=0?p=Y.str.substring(m):z>=0&&(p=Y.str.substring(0,z));const W=document.createTextNode(p),J=document.createElement("span");if(J.className="highlight appended",J.append(W),S.push(J),m>0)if(R.childNodes.length===1&&R.childNodes[0].nodeType===Node.TEXT_NODE){e=Y.str.substring(0,m);const d=document.createTextNode(e);S.unshift(d)}else{let d=0;const a=[];for(const l of R.childNodes){const c=l.nodeType===Node.TEXT_NODE?l.nodeValue:l.firstChild.nodeValue;d+=c.length,d<=m?a.push(l):m>=d-c.length&&z<=d&&a.push(document.createTextNode(c.substring(0,m-(d-c.length))))}S.unshift(...a)}if(z>0){F=Y.str.substring(z);const d=document.createTextNode(F);S.push(d)}R.replaceChildren(...S)}for(const n of T)if(n.start.idx===n.end.idx)U(n.start.idx,n.start.offset,n.end.offset);else for(let m=n.start.idx,z=n.end.idx;m<=z;m++)m===n.start.idx?U(m,n.start.offset):m===n.end.idx?U(m,-1,n.end.offset):U(m)}function mQ(T,N){const t=T.items.map(U=>U.str);for(let U=0;U{var a;const l=await W?.getTextContent();N("textLoaded",{textDivs:m,textContent:l});const c=document.createElement("div");c.className="endOfContent",(a=U.value)==null||a.appendChild(c),n.value=c,Y()})}function p(){n.value&&n.value.classList.add("active")}function e(){n.value&&n.value.classList.remove("active")}return Hl(()=>t.viewport,F=>{t.page&&t.viewport&&U.value&&S()}),Hl(()=>[t.highlightText,t.highlightOptions],F=>{Y(!0)},{deep:!0}),lU(()=>{t.page&&t.viewport&&U.value&&S()}),(F,R)=>(K(),A("div",{ref_key:"layer",ref:U,class:"textLayer",style:{display:"block"},onMousedown:p,onMouseup:e},null,544))}}),JQ=il({__name:"XFALayer",props:{page:{},document:{},viewport:{}},emits:["xfaLoaded"],setup(T,{emit:N}){const t=T,U=bl();async function n(){var m,z;(z=(m=U.value).replaceChildren)==null||z.call(m);const Y=eU(t.document),S=t.page,p=t.viewport;if(Y.isPureXfa){const e=await S.getXfa(),F={div:U.value,viewport:p.clone({dontFlip:!0}),linkService:new Td,annotationStorage:Y?.annotationStorage,xfaHtml:e};$c.render(F),N("xfaLoaded")}}return Hl(()=>t.viewport,m=>{t.page&&t.viewport&&U.value&&n()}),lU(()=>{t.page&&t.viewport&&U.value&&n()}),(m,z)=>(K(),A("div",{ref_key:"layer",ref:U,style:{display:"block"}},null,512))}}),eQ=g("canvas",{dir:"ltr",style:{display:"block"},role:"main"},null,-1),Il=il({__name:"VuePDF",props:{pdf:{},page:{default:1},scale:{default:1},rotation:{},fitParent:{type:Boolean},width:{},height:{},textLayer:{type:Boolean},imageResourcesPath:{},hideForms:{type:Boolean},intent:{default:"display"},annotationLayer:{type:Boolean},annotationsFilter:{},annotationsMap:{},watermarkText:{},watermarkOptions:{},highlightText:{},highlightOptions:{}},emits:["annotation","highlight","loaded","textLoaded","annotationLoaded","xfaLoaded"],setup(T,{expose:N,emit:t}){const U=T,n=bl(),m=bl(),z=bl(!1);let Y;const S=Tl(()=>({viewport:void 0,document:void 0,page:void 0})),p=Tl(()=>({annotationsMap:U.annotationsMap,annotationsFilter:U.annotationsFilter,imageResourcesPath:U.imageResourcesPath,hideForms:U.hideForms,intent:U.intent})),e=Tl(()=>({highlightText:U.highlightText,highlightOptions:U.highlightOptions}));function F(){return Object.assign({},{columns:4,rows:4,rotation:45,fontSize:18,color:"rgba(211, 210, 211, 0.4)"},U.watermarkOptions)}function R(u){if(!(typeof u=="number"&&u%90===0))return 0;const L=u/90;return L>4?R(u-360):L<0?R(u+360):u}function W(u){let L=U.scale;if(U.fitParent){const I=n.value.parentNode.clientWidth,x=u.getViewport({scale:1}).width;L=I/x}else if(U.width){const I=u.getViewport({scale:1}).width;L=U.width/I}else if(U.height){const I=u.getViewport({scale:1}).height;L=U.height/I}return L}function J(u=1){if(!U.watermarkText)return;const L=d();if(!L)return;const I=L.getContext("2d");if(!I)return;const x=F(),O=U.watermarkText,v=x.columns,Ul=x.rows,Nl=v*Ul,q=x.rotation,r=x.fontSize*u;I.font=`${r}px Trebuchet MS`,I.fillStyle=x.color;for(let P=0;P{I.tagName==="CANVAS"&&(L=I)}),L}function a(u){var L;let I;const x=d();x&&x?.getAttribute("role")==="main"?I=x:(I=document.createElement("canvas"),I.style.display="block",I.setAttribute("dir","ltr"));const O=window.devicePixelRatio||1;return I.width=Math.floor(u.width*O),I.height=Math.floor(u.height*O),I.style.width=`${Math.floor(u.width)}px`,I.style.height=`${Math.floor(u.height)}px`,(L=n.value)==null||L.style.setProperty("--scale-factor",`${u.scale}`),m.value.style.width=`${Math.floor(u.width)}px`,m.value.style.height=`${Math.floor(u.height)}px`,m.value.style.top="0",m.value.style.left="0",z.value=!0,I}function l(){Y&&Y.cancel()}function c(u){var L;(L=eU(S.value.document))==null||L.getPage(u).then(I=>{var x;l();const O=I.getViewport(),v={scale:W(I),rotation:R((U.rotation||0)+O.rotation)},Ul=I.getViewport(v),Nl=d(),q=a(Ul),r=window.devicePixelRatio||1,P=r!==1?[r,0,0,r,0,0]:void 0,ll={canvasContext:q.getContext("2d"),viewport:Ul,annotationMode:U.hideForms?ld.ENABLE:ld.ENABLE_FORMS,transform:P,intent:U.intent};q?.getAttribute("role")!=="main"?Nl&&((x=n.value)==null||x.replaceChild(q,Nl)):q.removeAttribute("role"),S.value.page=I,S.value.viewport=Ul,Y=I.render(ll),Y.promise.then(()=>{z.value=!1,J(Ul.scale),t("loaded",S.value.viewport)}).catch(()=>{})})}function s(u){u.promise.then(async L=>{S.value.document=L,c(U.page)})}Hl(()=>U.pdf,u=>{u!==void 0&&s(u)}),Hl(()=>[U.scale,U.width,U.height,U.rotation,U.page,U.hideForms,U.intent],()=>{c(U.page)}),lU(()=>{U.pdf!==void 0&&s(U.pdf)});function h(){c(U.page)}function o(){l()}return N({reload:h,cancel:o}),(u,L)=>(K(),A("div",{ref_key:"container",ref:n,style:{position:"relative",display:"block"}},[eQ,u.annotationLayer?(K(),Jl(aQ,VU({key:0},{...S.value,...p.value},{onAnnotation:L[0]||(L[0]=I=>t("annotation",I)),onAnnotationLoaded:L[1]||(L[1]=I=>t("annotationLoaded",I))}),null,16)):al("",!0),u.textLayer?(K(),Jl(GQ,VU({key:1},{...S.value,...e.value},{onHighlight:L[2]||(L[2]=I=>t("highlight",I)),onTextLoaded:L[3]||(L[3]=I=>t("textLoaded",I))}),null,16)):al("",!0),Rl(JQ,VU({...S.value},{onXfaLoaded:L[4]||(L[4]=I=>t("xfaLoaded"))}),null,16),_l(g("div",{ref_key:"loadingLayer",ref:m,style:{position:"absolute"}},[$(u.$slots,"default")],512),[[Cd,z.value]])],512))}}),TQ="data:application/javascript;base64,LyoqCiAqIEBsaWNzdGFydCBUaGUgZm9sbG93aW5nIGlzIHRoZSBlbnRpcmUgbGljZW5zZSBub3RpY2UgZm9yIHRoZQogKiBKYXZhU2NyaXB0IGNvZGUgaW4gdGhpcyBwYWdlCiAqCiAqIENvcHlyaWdodCAyMDIzIE1vemlsbGEgRm91bmRhdGlvbgogKgogKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKICoKICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogKgogKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgogKgogKiBAbGljZW5kIFRoZSBhYm92ZSBpcyB0aGUgZW50aXJlIGxpY2Vuc2Ugbm90aWNlIGZvciB0aGUKICogSmF2YVNjcmlwdCBjb2RlIGluIHRoaXMgcGFnZQogKi92YXIgZT17ZDoodCxpKT0+e2Zvcih2YXIgYSBpbiBpKWUubyhpLGEpJiYhZS5vKHQsYSkmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGEse2VudW1lcmFibGU6ITAsZ2V0OmlbYV19KX0sbzooZSx0KT0+T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsdCl9LF9fd2VicGFja19leHBvcnRzX189Z2xvYmFsVGhpcy5wZGZqc1dvcmtlcj17fTtlLmQoX193ZWJwYWNrX2V4cG9ydHNfXyx7V29ya2VyTWVzc2FnZUhhbmRsZXI6KCk9Pldvcmtlck1lc3NhZ2VIYW5kbGVyfSk7Y29uc3QgdD0hKCJvYmplY3QiIT10eXBlb2YgcHJvY2Vzc3x8cHJvY2VzcysiIiE9IltvYmplY3QgcHJvY2Vzc10ifHxwcm9jZXNzLnZlcnNpb25zLm53fHxwcm9jZXNzLnZlcnNpb25zLmVsZWN0cm9uJiZwcm9jZXNzLnR5cGUmJiJicm93c2VyIiE9PXByb2Nlc3MudHlwZSksaT1bMSwwLDAsMSwwLDBdLGE9Wy4wMDEsMCwwLC4wMDEsMCwwXSxzPTEuMzUscj0uMzUsbj0uMjU5MjU5MjU5MjU5MjU5MjQsbz0xLGc9MixjPTQsQz04LGg9MTYsbD02NCxRPTI1NixFPSJwZGZqc19pbnRlcm5hbF9lZGl0b3JfIix1PTMsZD05LGY9MTMscD0xNSxtPXtQUklOVDo0LE1PRElGWV9DT05URU5UUzo4LENPUFk6MTYsTU9ESUZZX0FOTk9UQVRJT05TOjMyLEZJTExfSU5URVJBQ1RJVkVfRk9STVM6MjU2LENPUFlfRk9SX0FDQ0VTU0lCSUxJVFk6NTEyLEFTU0VNQkxFOjEwMjQsUFJJTlRfSElHSF9RVUFMSVRZOjIwNDh9LHk9MCx3PTQsYj0xLEQ9MixGPTMsUz0xLGs9MixOPTMsUj00LEc9NSx4PTYsVT03LE09OCxMPTksSD0xMCxKPTExLFk9MTIsdj0xMyxLPTE0LFQ9MTUscT0xNixPPTE3LFc9MjAsaj0iR3JvdXAiLFg9IlIiLFo9MSxWPTIsej00LF89MTYsJD0zMixBQT0xMjgsZUE9NTEyLHRBPTEsaUE9MixhQT00MDk2LHNBPTgxOTIsckE9MzI3NjgsbkE9NjU1MzYsb0E9MTMxMDcyLGdBPTEwNDg1NzYsSUE9MjA5NzE1MixjQT04Mzg4NjA4LENBPTE2Nzc3MjE2LGhBPTEsbEE9MixCQT0zLFFBPTQsRUE9NSx1QT17RToiTW91c2UgRW50ZXIiLFg6Ik1vdXNlIEV4aXQiLEQ6Ik1vdXNlIERvd24iLFU6Ik1vdXNlIFVwIixGbzoiRm9jdXMiLEJsOiJCbHVyIixQTzoiUGFnZU9wZW4iLFBDOiJQYWdlQ2xvc2UiLFBWOiJQYWdlVmlzaWJsZSIsUEk6IlBhZ2VJbnZpc2libGUiLEs6IktleXN0cm9rZSIsRjoiRm9ybWF0IixWOiJWYWxpZGF0ZSIsQzoiQ2FsY3VsYXRlIn0sZEE9e1dDOiJXaWxsQ2xvc2UiLFdTOiJXaWxsU2F2ZSIsRFM6IkRpZFNhdmUiLFdQOiJXaWxsUHJpbnQiLERQOiJEaWRQcmludCJ9LGZBPXtPOiJQYWdlT3BlbiIsQzoiUGFnZUNsb3NlIn0scEE9e0VSUk9SUzowLFdBUk5JTkdTOjEsSU5GT1M6NX0sbUE9e05PTkU6MCxCSU5BUlk6MX0seUE9MSx3QT0yLGJBPTMsREE9NCxGQT01LFNBPTYsa0E9NyxOQT04LFJBPTksR0E9MTAseEE9MTEsVUE9MTIsTUE9MTMsTEE9MTQsSEE9MTUsSkE9MTYsWUE9MTcsdkE9MTgsS0E9MTksVEE9MjAscUE9MjEsT0E9MjIsUEE9MjMsV0E9MjQsakE9MjUsWEE9MjYsWkE9MjcsVkE9MjgsekE9MjksX0E9MzAsJEE9MzEsQWU9MzIsZWU9MzMsdGU9MzQsaWU9MzUsYWU9MzYsc2U9MzcscmU9MzgsbmU9Mzksb2U9NDAsZ2U9NDEsSWU9NDIsY2U9NDMsQ2U9NDQsaGU9NDUsbGU9NDYsQmU9NDcsUWU9NDgsRWU9NDksdWU9NTAsZGU9NTEsZmU9NTIscGU9NTMsbWU9NTQseWU9NTUsd2U9NTYsYmU9NTcsRGU9NTgsRmU9NTksU2U9NjAsa2U9NjEsTmU9NjIsUmU9NjMsR2U9NjQseGU9NjUsVWU9NjYsTWU9NjcsTGU9NjgsSGU9NjksSmU9NzAsWWU9NzEsdmU9NzIsS2U9NzMsVGU9NzQscWU9NzUsT2U9NzYsUGU9NzcsV2U9ODAsamU9ODEsWGU9ODMsWmU9ODQsVmU9ODUsemU9ODYsX2U9ODcsJGU9ODgsQXQ9ODksZXQ9OTAsdHQ9OTEsaXQ9MSxhdD0yO2xldCBzdD1wQS5XQVJOSU5HUztmdW5jdGlvbiBnZXRWZXJib3NpdHlMZXZlbCgpe3JldHVybiBzdH1mdW5jdGlvbiBpbmZvKGUpe3N0Pj1wQS5JTkZPUyYmY29uc29sZS5sb2coYEluZm86ICR7ZX1gKX1mdW5jdGlvbiB3YXJuKGUpe3N0Pj1wQS5XQVJOSU5HUyYmY29uc29sZS5sb2coYFdhcm5pbmc6ICR7ZX1gKX1mdW5jdGlvbiB1bnJlYWNoYWJsZShlKXt0aHJvdyBuZXcgRXJyb3IoZSl9ZnVuY3Rpb24gYXNzZXJ0KGUsdCl7ZXx8dW5yZWFjaGFibGUodCl9ZnVuY3Rpb24gY3JlYXRlVmFsaWRBYnNvbHV0ZVVybChlLHQ9bnVsbCxpPW51bGwpe2lmKCFlKXJldHVybiBudWxsO3RyeXtpZihpJiYic3RyaW5nIj09dHlwZW9mIGUpe2lmKGkuYWRkRGVmYXVsdFByb3RvY29sJiZlLnN0YXJ0c1dpdGgoInd3dy4iKSl7Y29uc3QgdD1lLm1hdGNoKC9cLi9nKTt0Py5sZW5ndGg+PTImJihlPWBodHRwOi8vJHtlfWApfWlmKGkudHJ5Q29udmVydEVuY29kaW5nKXRyeXtlPXN0cmluZ1RvVVRGOFN0cmluZyhlKX1jYXRjaHt9fWNvbnN0IGE9dD9uZXcgVVJMKGUsdCk6bmV3IFVSTChlKTtpZihmdW5jdGlvbiBfaXNWYWxpZFByb3RvY29sKGUpe3N3aXRjaChlPy5wcm90b2NvbCl7Y2FzZSJodHRwOiI6Y2FzZSJodHRwczoiOmNhc2UiZnRwOiI6Y2FzZSJtYWlsdG86IjpjYXNlInRlbDoiOnJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9fShhKSlyZXR1cm4gYX1jYXRjaHt9cmV0dXJuIG51bGx9ZnVuY3Rpb24gc2hhZG93KGUsdCxpLGE9ITEpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOmksZW51bWVyYWJsZTohYSxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITF9KTtyZXR1cm4gaX1jb25zdCBydD1mdW5jdGlvbiBCYXNlRXhjZXB0aW9uQ2xvc3VyZSgpe2Z1bmN0aW9uIEJhc2VFeGNlcHRpb24oZSx0KXt0aGlzLmNvbnN0cnVjdG9yPT09QmFzZUV4Y2VwdGlvbiYmdW5yZWFjaGFibGUoIkNhbm5vdCBpbml0aWFsaXplIEJhc2VFeGNlcHRpb24uIik7dGhpcy5tZXNzYWdlPWU7dGhpcy5uYW1lPXR9QmFzZUV4Y2VwdGlvbi5wcm90b3R5cGU9bmV3IEVycm9yO0Jhc2VFeGNlcHRpb24uY29uc3RydWN0b3I9QmFzZUV4Y2VwdGlvbjtyZXR1cm4gQmFzZUV4Y2VwdGlvbn0oKTtjbGFzcyBQYXNzd29yZEV4Y2VwdGlvbiBleHRlbmRzIHJ0e2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSwiUGFzc3dvcmRFeGNlcHRpb24iKTt0aGlzLmNvZGU9dH19Y2xhc3MgVW5rbm93bkVycm9yRXhjZXB0aW9uIGV4dGVuZHMgcnR7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLCJVbmtub3duRXJyb3JFeGNlcHRpb24iKTt0aGlzLmRldGFpbHM9dH19Y2xhc3MgSW52YWxpZFBERkV4Y2VwdGlvbiBleHRlbmRzIHJ0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsIkludmFsaWRQREZFeGNlcHRpb24iKX19Y2xhc3MgTWlzc2luZ1BERkV4Y2VwdGlvbiBleHRlbmRzIHJ0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsIk1pc3NpbmdQREZFeGNlcHRpb24iKX19Y2xhc3MgVW5leHBlY3RlZFJlc3BvbnNlRXhjZXB0aW9uIGV4dGVuZHMgcnR7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLCJVbmV4cGVjdGVkUmVzcG9uc2VFeGNlcHRpb24iKTt0aGlzLnN0YXR1cz10fX1jbGFzcyBGb3JtYXRFcnJvciBleHRlbmRzIHJ0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsIkZvcm1hdEVycm9yIil9fWNsYXNzIEFib3J0RXhjZXB0aW9uIGV4dGVuZHMgcnR7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiQWJvcnRFeGNlcHRpb24iKX19ZnVuY3Rpb24gYnl0ZXNUb1N0cmluZyhlKXsib2JqZWN0Ij09dHlwZW9mIGUmJnZvaWQgMCE9PWU/Lmxlbmd0aHx8dW5yZWFjaGFibGUoIkludmFsaWQgYXJndW1lbnQgZm9yIGJ5dGVzVG9TdHJpbmciKTtjb25zdCB0PWUubGVuZ3RoLGk9ODE5MjtpZih0PGkpcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCxlKTtjb25zdCBhPVtdO2ZvcihsZXQgcz0wO3M8dDtzKz1pKXtjb25zdCByPU1hdGgubWluKHMraSx0KSxuPWUuc3ViYXJyYXkocyxyKTthLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLG4pKX1yZXR1cm4gYS5qb2luKCIiKX1mdW5jdGlvbiBzdHJpbmdUb0J5dGVzKGUpeyJzdHJpbmciIT10eXBlb2YgZSYmdW5yZWFjaGFibGUoIkludmFsaWQgYXJndW1lbnQgZm9yIHN0cmluZ1RvQnl0ZXMiKTtjb25zdCB0PWUubGVuZ3RoLGk9bmV3IFVpbnQ4QXJyYXkodCk7Zm9yKGxldCBhPTA7YTx0OysrYSlpW2FdPTI1NSZlLmNoYXJDb2RlQXQoYSk7cmV0dXJuIGl9ZnVuY3Rpb24gc3RyaW5nMzIoZSl7cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoZT4+MjQmMjU1LGU+PjE2JjI1NSxlPj44JjI1NSwyNTUmZSl9ZnVuY3Rpb24gb2JqZWN0U2l6ZShlKXtyZXR1cm4gT2JqZWN0LmtleXMoZSkubGVuZ3RofWNsYXNzIEZlYXR1cmVUZXN0e3N0YXRpYyBnZXQgaXNMaXR0bGVFbmRpYW4oKXtyZXR1cm4gc2hhZG93KHRoaXMsImlzTGl0dGxlRW5kaWFuIixmdW5jdGlvbiBpc0xpdHRsZUVuZGlhbigpe2NvbnN0IGU9bmV3IFVpbnQ4QXJyYXkoNCk7ZVswXT0xO3JldHVybiAxPT09bmV3IFVpbnQzMkFycmF5KGUuYnVmZmVyLDAsMSlbMF19KCkpfXN0YXRpYyBnZXQgaXNFdmFsU3VwcG9ydGVkKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJpc0V2YWxTdXBwb3J0ZWQiLGZ1bmN0aW9uIGlzRXZhbFN1cHBvcnRlZCgpe3RyeXtuZXcgRnVuY3Rpb24oIiIpO3JldHVybiEwfWNhdGNoe3JldHVybiExfX0oKSl9c3RhdGljIGdldCBpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZCgpe3JldHVybiBzaGFkb3codGhpcywiaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQiLCJ1bmRlZmluZWQiIT10eXBlb2YgT2Zmc2NyZWVuQ2FudmFzKX1zdGF0aWMgZ2V0IHBsYXRmb3JtKCl7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBuYXZpZ2F0b3ImJiJzdHJpbmciPT10eXBlb2YgbmF2aWdhdG9yPy5wbGF0Zm9ybT9zaGFkb3codGhpcywicGxhdGZvcm0iLHtpc01hYzpuYXZpZ2F0b3IucGxhdGZvcm0uaW5jbHVkZXMoIk1hYyIpfSk6c2hhZG93KHRoaXMsInBsYXRmb3JtIix7aXNNYWM6ITF9KX1zdGF0aWMgZ2V0IGlzQ1NTUm91bmRTdXBwb3J0ZWQoKXtyZXR1cm4gc2hhZG93KHRoaXMsImlzQ1NTUm91bmRTdXBwb3J0ZWQiLGdsb2JhbFRoaXMuQ1NTPy5zdXBwb3J0cz8uKCJ3aWR0aDogcm91bmQoMS41cHgsIDFweCkiKSl9fWNvbnN0IG50PUFycmF5LmZyb20oQXJyYXkoMjU2KS5rZXlzKCksKGU9PmUudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsIjAiKSkpO2NsYXNzIFV0aWx7c3RhdGljIG1ha2VIZXhDb2xvcihlLHQsaSl7cmV0dXJuYCMke250W2VdfSR7bnRbdF19JHtudFtpXX1gfXN0YXRpYyBzY2FsZU1pbk1heChlLHQpe2xldCBpO2lmKGVbMF0pe2lmKGVbMF08MCl7aT10WzBdO3RbMF09dFsyXTt0WzJdPWl9dFswXSo9ZVswXTt0WzJdKj1lWzBdO2lmKGVbM108MCl7aT10WzFdO3RbMV09dFszXTt0WzNdPWl9dFsxXSo9ZVszXTt0WzNdKj1lWzNdfWVsc2V7aT10WzBdO3RbMF09dFsxXTt0WzFdPWk7aT10WzJdO3RbMl09dFszXTt0WzNdPWk7aWYoZVsxXTwwKXtpPXRbMV07dFsxXT10WzNdO3RbM109aX10WzFdKj1lWzFdO3RbM10qPWVbMV07aWYoZVsyXTwwKXtpPXRbMF07dFswXT10WzJdO3RbMl09aX10WzBdKj1lWzJdO3RbMl0qPWVbMl19dFswXSs9ZVs0XTt0WzFdKz1lWzVdO3RbMl0rPWVbNF07dFszXSs9ZVs1XX1zdGF0aWMgdHJhbnNmb3JtKGUsdCl7cmV0dXJuW2VbMF0qdFswXStlWzJdKnRbMV0sZVsxXSp0WzBdK2VbM10qdFsxXSxlWzBdKnRbMl0rZVsyXSp0WzNdLGVbMV0qdFsyXStlWzNdKnRbM10sZVswXSp0WzRdK2VbMl0qdFs1XStlWzRdLGVbMV0qdFs0XStlWzNdKnRbNV0rZVs1XV19c3RhdGljIGFwcGx5VHJhbnNmb3JtKGUsdCl7cmV0dXJuW2VbMF0qdFswXStlWzFdKnRbMl0rdFs0XSxlWzBdKnRbMV0rZVsxXSp0WzNdK3RbNV1dfXN0YXRpYyBhcHBseUludmVyc2VUcmFuc2Zvcm0oZSx0KXtjb25zdCBpPXRbMF0qdFszXS10WzFdKnRbMl07cmV0dXJuWyhlWzBdKnRbM10tZVsxXSp0WzJdK3RbMl0qdFs1XS10WzRdKnRbM10pL2ksKC1lWzBdKnRbMV0rZVsxXSp0WzBdK3RbNF0qdFsxXS10WzVdKnRbMF0pL2ldfXN0YXRpYyBnZXRBeGlhbEFsaWduZWRCb3VuZGluZ0JveChlLHQpe2NvbnN0IGk9dGhpcy5hcHBseVRyYW5zZm9ybShlLHQpLGE9dGhpcy5hcHBseVRyYW5zZm9ybShlLnNsaWNlKDIsNCksdCkscz10aGlzLmFwcGx5VHJhbnNmb3JtKFtlWzBdLGVbM11dLHQpLHI9dGhpcy5hcHBseVRyYW5zZm9ybShbZVsyXSxlWzFdXSx0KTtyZXR1cm5bTWF0aC5taW4oaVswXSxhWzBdLHNbMF0sclswXSksTWF0aC5taW4oaVsxXSxhWzFdLHNbMV0sclsxXSksTWF0aC5tYXgoaVswXSxhWzBdLHNbMF0sclswXSksTWF0aC5tYXgoaVsxXSxhWzFdLHNbMV0sclsxXSldfXN0YXRpYyBpbnZlcnNlVHJhbnNmb3JtKGUpe2NvbnN0IHQ9ZVswXSplWzNdLWVbMV0qZVsyXTtyZXR1cm5bZVszXS90LC1lWzFdL3QsLWVbMl0vdCxlWzBdL3QsKGVbMl0qZVs1XS1lWzRdKmVbM10pL3QsKGVbNF0qZVsxXS1lWzVdKmVbMF0pL3RdfXN0YXRpYyBzaW5ndWxhclZhbHVlRGVjb21wb3NlMmRTY2FsZShlKXtjb25zdCB0PVtlWzBdLGVbMl0sZVsxXSxlWzNdXSxpPWVbMF0qdFswXStlWzFdKnRbMl0sYT1lWzBdKnRbMV0rZVsxXSp0WzNdLHM9ZVsyXSp0WzBdK2VbM10qdFsyXSxyPWVbMl0qdFsxXStlWzNdKnRbM10sbj0oaStyKS8yLG89TWF0aC5zcXJ0KChpK3IpKioyLTQqKGkqci1zKmEpKS8yLGc9bitvfHwxLGM9bi1vfHwxO3JldHVybltNYXRoLnNxcnQoZyksTWF0aC5zcXJ0KGMpXX1zdGF0aWMgbm9ybWFsaXplUmVjdChlKXtjb25zdCB0PWUuc2xpY2UoMCk7aWYoZVswXT5lWzJdKXt0WzBdPWVbMl07dFsyXT1lWzBdfWlmKGVbMV0+ZVszXSl7dFsxXT1lWzNdO3RbM109ZVsxXX1yZXR1cm4gdH1zdGF0aWMgaW50ZXJzZWN0KGUsdCl7Y29uc3QgaT1NYXRoLm1heChNYXRoLm1pbihlWzBdLGVbMl0pLE1hdGgubWluKHRbMF0sdFsyXSkpLGE9TWF0aC5taW4oTWF0aC5tYXgoZVswXSxlWzJdKSxNYXRoLm1heCh0WzBdLHRbMl0pKTtpZihpPmEpcmV0dXJuIG51bGw7Y29uc3Qgcz1NYXRoLm1heChNYXRoLm1pbihlWzFdLGVbM10pLE1hdGgubWluKHRbMV0sdFszXSkpLHI9TWF0aC5taW4oTWF0aC5tYXgoZVsxXSxlWzNdKSxNYXRoLm1heCh0WzFdLHRbM10pKTtyZXR1cm4gcz5yP251bGw6W2kscyxhLHJdfXN0YXRpYyNBKGUsdCxpLGEscyxyLG4sbyxnLGMpe2lmKGc8PTB8fGc+PTEpcmV0dXJuO2NvbnN0IEM9MS1nLGg9ZypnLGw9aCpnLFE9QyooQyooQyplKzMqZyp0KSszKmgqaSkrbCphLEU9QyooQyooQypzKzMqZypyKSszKmgqbikrbCpvO2NbMF09TWF0aC5taW4oY1swXSxRKTtjWzFdPU1hdGgubWluKGNbMV0sRSk7Y1syXT1NYXRoLm1heChjWzJdLFEpO2NbM109TWF0aC5tYXgoY1szXSxFKX1zdGF0aWMjZShlLHQsaSxhLHMscixuLG8sZyxjLEMsaCl7aWYoTWF0aC5hYnMoZyk8MWUtMTIpe01hdGguYWJzKGMpPj0xZS0xMiYmdGhpcy4jQShlLHQsaSxhLHMscixuLG8sLUMvYyxoKTtyZXR1cm59Y29uc3QgbD1jKioyLTQqQypnO2lmKGw8MClyZXR1cm47Y29uc3QgUT1NYXRoLnNxcnQobCksRT0yKmc7dGhpcy4jQShlLHQsaSxhLHMscixuLG8sKC1jK1EpL0UsaCk7dGhpcy4jQShlLHQsaSxhLHMscixuLG8sKC1jLVEpL0UsaCl9c3RhdGljIGJlemllckJvdW5kaW5nQm94KGUsdCxpLGEscyxyLG4sbyxnKXtpZihnKXtnWzBdPU1hdGgubWluKGdbMF0sZSxuKTtnWzFdPU1hdGgubWluKGdbMV0sdCxvKTtnWzJdPU1hdGgubWF4KGdbMl0sZSxuKTtnWzNdPU1hdGgubWF4KGdbM10sdCxvKX1lbHNlIGc9W01hdGgubWluKGUsbiksTWF0aC5taW4odCxvKSxNYXRoLm1heChlLG4pLE1hdGgubWF4KHQsbyldO3RoaXMuI2UoZSxpLHMsbix0LGEscixvLDMqKDMqKGktcyktZStuKSw2KihlLTIqaStzKSwzKihpLWUpLGcpO3RoaXMuI2UoZSxpLHMsbix0LGEscixvLDMqKDMqKGEtciktdCtvKSw2Kih0LTIqYStyKSwzKihhLXQpLGcpO3JldHVybiBnfX1jb25zdCBvdD1bMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNzI4LDcxMSw3MTAsNzI5LDczMyw3MzEsNzMwLDczMiwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw4MjI2LDgyMjQsODIyNSw4MjMwLDgyMTIsODIxMSw0MDIsODI2MCw4MjQ5LDgyNTAsODcyMiw4MjQwLDgyMjIsODIyMCw4MjIxLDgyMTYsODIxNyw4MjE4LDg0ODIsNjQyNTcsNjQyNTgsMzIxLDMzOCwzNTIsMzc2LDM4MSwzMDUsMzIyLDMzOSwzNTMsMzgyLDAsODM2NF07ZnVuY3Rpb24gc3RyaW5nVG9QREZTdHJpbmcoZSl7aWYoZVswXT49IsOvIil7bGV0IHQ7aWYoIsO+Ij09PWVbMF0mJiLDvyI9PT1lWzFdKXt0PSJ1dGYtMTZiZSI7ZS5sZW5ndGglMj09MSYmKGU9ZS5zbGljZSgwLC0xKSl9ZWxzZSBpZigiw78iPT09ZVswXSYmIsO+Ij09PWVbMV0pe3Q9InV0Zi0xNmxlIjtlLmxlbmd0aCUyPT0xJiYoZT1lLnNsaWNlKDAsLTEpKX1lbHNlIsOvIj09PWVbMF0mJiLCuyI9PT1lWzFdJiYiwr8iPT09ZVsyXSYmKHQ9InV0Zi04Iik7aWYodCl0cnl7Y29uc3QgaT1uZXcgVGV4dERlY29kZXIodCx7ZmF0YWw6ITB9KSxhPXN0cmluZ1RvQnl0ZXMoZSkscz1pLmRlY29kZShhKTtyZXR1cm4gcy5pbmNsdWRlcygiGyIpP3MucmVwbGFjZUFsbCgvXHgxYlteXHgxYl0qKD86XHgxYnwkKS9nLCIiKTpzfWNhdGNoKGUpe3dhcm4oYHN0cmluZ1RvUERGU3RyaW5nOiAiJHtlfSIuYCl9fWNvbnN0IHQ9W107Zm9yKGxldCBpPTAsYT1lLmxlbmd0aDtpPGE7aSsrKXtjb25zdCBzPWUuY2hhckNvZGVBdChpKTtpZigyNz09PXMpe2Zvcig7KytpPGEmJjI3IT09ZS5jaGFyQ29kZUF0KGkpOyk7Y29udGludWV9Y29uc3Qgcj1vdFtzXTt0LnB1c2gocj9TdHJpbmcuZnJvbUNoYXJDb2RlKHIpOmUuY2hhckF0KGkpKX1yZXR1cm4gdC5qb2luKCIiKX1mdW5jdGlvbiBzdHJpbmdUb1VURjhTdHJpbmcoZSl7cmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChlc2NhcGUoZSkpfWZ1bmN0aW9uIHV0ZjhTdHJpbmdUb1N0cmluZyhlKXtyZXR1cm4gdW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KGUpKX1mdW5jdGlvbiBpc0FycmF5RXF1YWwoZSx0KXtpZihlLmxlbmd0aCE9PXQubGVuZ3RoKXJldHVybiExO2ZvcihsZXQgaT0wLGE9ZS5sZW5ndGg7aTxhO2krKylpZihlW2ldIT09dFtpXSlyZXR1cm4hMTtyZXR1cm4hMH1mdW5jdGlvbiBnZXRNb2RpZmljYXRpb25EYXRlKGU9bmV3IERhdGUpe3JldHVybltlLmdldFVUQ0Z1bGxZZWFyKCkudG9TdHJpbmcoKSwoZS5nZXRVVENNb250aCgpKzEpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwiMCIpLGUuZ2V0VVRDRGF0ZSgpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwiMCIpLGUuZ2V0VVRDSG91cnMoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKSxlLmdldFVUQ01pbnV0ZXMoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKSxlLmdldFVUQ1NlY29uZHMoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKV0uam9pbigiIil9bGV0IGd0PW51bGwsSXQ9bnVsbDtjb25zdCBjdD0wLEN0PTEsaHQ9MixsdD0zLEJ0PTQsUXQ9NSxFdD02LHV0PTcsZHQ9OCxmdD1TeW1ib2woIkNJUkNVTEFSX1JFRiIpLHB0PVN5bWJvbCgiRU9GIik7bGV0IG10PU9iamVjdC5jcmVhdGUobnVsbCkseXQ9T2JqZWN0LmNyZWF0ZShudWxsKSx3dD1PYmplY3QuY3JlYXRlKG51bGwpO2NsYXNzIE5hbWV7Y29uc3RydWN0b3IoZSl7dGhpcy5uYW1lPWV9c3RhdGljIGdldChlKXtyZXR1cm4geXRbZV18fD1uZXcgTmFtZShlKX19Y2xhc3MgQ21ke2NvbnN0cnVjdG9yKGUpe3RoaXMuY21kPWV9c3RhdGljIGdldChlKXtyZXR1cm4gbXRbZV18fD1uZXcgQ21kKGUpfX1jb25zdCBidD1mdW5jdGlvbiBub25TZXJpYWxpemFibGVDbG9zdXJlKCl7cmV0dXJuIGJ0fTtjbGFzcyBEaWN0e2NvbnN0cnVjdG9yKGU9bnVsbCl7dGhpcy5fbWFwPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy54cmVmPWU7dGhpcy5vYmpJZD1udWxsO3RoaXMuc3VwcHJlc3NFbmNyeXB0aW9uPSExO3RoaXMuX19ub25TZXJpYWxpemFibGVfXz1idH1hc3NpZ25YcmVmKGUpe3RoaXMueHJlZj1lfWdldCBzaXplKCl7cmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuX21hcCkubGVuZ3RofWdldChlLHQsaSl7bGV0IGE9dGhpcy5fbWFwW2VdO2lmKHZvaWQgMD09PWEmJnZvaWQgMCE9PXQpe2E9dGhpcy5fbWFwW3RdO3ZvaWQgMD09PWEmJnZvaWQgMCE9PWkmJihhPXRoaXMuX21hcFtpXSl9cmV0dXJuIGEgaW5zdGFuY2VvZiBSZWYmJnRoaXMueHJlZj90aGlzLnhyZWYuZmV0Y2goYSx0aGlzLnN1cHByZXNzRW5jcnlwdGlvbik6YX1hc3luYyBnZXRBc3luYyhlLHQsaSl7bGV0IGE9dGhpcy5fbWFwW2VdO2lmKHZvaWQgMD09PWEmJnZvaWQgMCE9PXQpe2E9dGhpcy5fbWFwW3RdO3ZvaWQgMD09PWEmJnZvaWQgMCE9PWkmJihhPXRoaXMuX21hcFtpXSl9cmV0dXJuIGEgaW5zdGFuY2VvZiBSZWYmJnRoaXMueHJlZj90aGlzLnhyZWYuZmV0Y2hBc3luYyhhLHRoaXMuc3VwcHJlc3NFbmNyeXB0aW9uKTphfWdldEFycmF5KGUsdCxpKXtsZXQgYT10aGlzLl9tYXBbZV07aWYodm9pZCAwPT09YSYmdm9pZCAwIT09dCl7YT10aGlzLl9tYXBbdF07dm9pZCAwPT09YSYmdm9pZCAwIT09aSYmKGE9dGhpcy5fbWFwW2ldKX1hIGluc3RhbmNlb2YgUmVmJiZ0aGlzLnhyZWYmJihhPXRoaXMueHJlZi5mZXRjaChhLHRoaXMuc3VwcHJlc3NFbmNyeXB0aW9uKSk7aWYoQXJyYXkuaXNBcnJheShhKSl7YT1hLnNsaWNlKCk7Zm9yKGxldCBlPTAsdD1hLmxlbmd0aDtlPHQ7ZSsrKWFbZV1pbnN0YW5jZW9mIFJlZiYmdGhpcy54cmVmJiYoYVtlXT10aGlzLnhyZWYuZmV0Y2goYVtlXSx0aGlzLnN1cHByZXNzRW5jcnlwdGlvbikpfXJldHVybiBhfWdldFJhdyhlKXtyZXR1cm4gdGhpcy5fbWFwW2VdfWdldEtleXMoKXtyZXR1cm4gT2JqZWN0LmtleXModGhpcy5fbWFwKX1nZXRSYXdWYWx1ZXMoKXtyZXR1cm4gT2JqZWN0LnZhbHVlcyh0aGlzLl9tYXApfXNldChlLHQpe3RoaXMuX21hcFtlXT10fWhhcyhlKXtyZXR1cm4gdm9pZCAwIT09dGhpcy5fbWFwW2VdfWZvckVhY2goZSl7Zm9yKGNvbnN0IHQgaW4gdGhpcy5fbWFwKWUodCx0aGlzLmdldCh0KSl9c3RhdGljIGdldCBlbXB0eSgpe2NvbnN0IGU9bmV3IERpY3QobnVsbCk7ZS5zZXQ9KGUsdCk9Pnt1bnJlYWNoYWJsZSgiU2hvdWxkIG5vdCBjYWxsIGBzZXRgIG9uIHRoZSBlbXB0eSBkaWN0aW9uYXJ5LiIpfTtyZXR1cm4gc2hhZG93KHRoaXMsImVtcHR5IixlKX1zdGF0aWMgbWVyZ2Uoe3hyZWY6ZSxkaWN0QXJyYXk6dCxtZXJnZVN1YkRpY3RzOmk9ITF9KXtjb25zdCBhPW5ldyBEaWN0KGUpLHM9bmV3IE1hcDtmb3IoY29uc3QgZSBvZiB0KWlmKGUgaW5zdGFuY2VvZiBEaWN0KWZvcihjb25zdFt0LGFdb2YgT2JqZWN0LmVudHJpZXMoZS5fbWFwKSl7bGV0IGU9cy5nZXQodCk7aWYodm9pZCAwPT09ZSl7ZT1bXTtzLnNldCh0LGUpfWVsc2UgaWYoIShpJiZhIGluc3RhbmNlb2YgRGljdCkpY29udGludWU7ZS5wdXNoKGEpfWZvcihjb25zdFt0LGldb2Ygcyl7aWYoMT09PWkubGVuZ3RofHwhKGlbMF1pbnN0YW5jZW9mIERpY3QpKXthLl9tYXBbdF09aVswXTtjb250aW51ZX1jb25zdCBzPW5ldyBEaWN0KGUpO2Zvcihjb25zdCBlIG9mIGkpZm9yKGNvbnN0W3QsaV1vZiBPYmplY3QuZW50cmllcyhlLl9tYXApKXZvaWQgMD09PXMuX21hcFt0XSYmKHMuX21hcFt0XT1pKTtzLnNpemU+MCYmKGEuX21hcFt0XT1zKX1zLmNsZWFyKCk7cmV0dXJuIGEuc2l6ZT4wP2E6RGljdC5lbXB0eX1jbG9uZSgpe2NvbnN0IGU9bmV3IERpY3QodGhpcy54cmVmKTtmb3IoY29uc3QgdCBvZiB0aGlzLmdldEtleXMoKSllLnNldCh0LHRoaXMuZ2V0UmF3KHQpKTtyZXR1cm4gZX19Y2xhc3MgUmVme2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5udW09ZTt0aGlzLmdlbj10fXRvU3RyaW5nKCl7cmV0dXJuIDA9PT10aGlzLmdlbj9gJHt0aGlzLm51bX1SYDpgJHt0aGlzLm51bX1SJHt0aGlzLmdlbn1gfXN0YXRpYyBmcm9tU3RyaW5nKGUpe2NvbnN0IHQ9d3RbZV07aWYodClyZXR1cm4gdDtjb25zdCBpPS9eKFxkKylSKFxkKikkLy5leGVjKGUpO3JldHVybiBpJiYiMCIhPT1pWzFdP3d0W2VdPW5ldyBSZWYocGFyc2VJbnQoaVsxXSksaVsyXT9wYXJzZUludChpWzJdKTowKTpudWxsfXN0YXRpYyBnZXQoZSx0KXtjb25zdCBpPTA9PT10P2Ake2V9UmA6YCR7ZX1SJHt0fWA7cmV0dXJuIHd0W2ldfHw9bmV3IFJlZihlLHQpfX1jbGFzcyBSZWZTZXR7Y29uc3RydWN0b3IoZT1udWxsKXt0aGlzLl9zZXQ9bmV3IFNldChlPy5fc2V0KX1oYXMoZSl7cmV0dXJuIHRoaXMuX3NldC5oYXMoZS50b1N0cmluZygpKX1wdXQoZSl7dGhpcy5fc2V0LmFkZChlLnRvU3RyaW5nKCkpfXJlbW92ZShlKXt0aGlzLl9zZXQuZGVsZXRlKGUudG9TdHJpbmcoKSl9W1N5bWJvbC5pdGVyYXRvcl0oKXtyZXR1cm4gdGhpcy5fc2V0LnZhbHVlcygpfWNsZWFyKCl7dGhpcy5fc2V0LmNsZWFyKCl9fWNsYXNzIFJlZlNldENhY2hle2NvbnN0cnVjdG9yKCl7dGhpcy5fbWFwPW5ldyBNYXB9Z2V0IHNpemUoKXtyZXR1cm4gdGhpcy5fbWFwLnNpemV9Z2V0KGUpe3JldHVybiB0aGlzLl9tYXAuZ2V0KGUudG9TdHJpbmcoKSl9aGFzKGUpe3JldHVybiB0aGlzLl9tYXAuaGFzKGUudG9TdHJpbmcoKSl9cHV0KGUsdCl7dGhpcy5fbWFwLnNldChlLnRvU3RyaW5nKCksdCl9cHV0QWxpYXMoZSx0KXt0aGlzLl9tYXAuc2V0KGUudG9TdHJpbmcoKSx0aGlzLmdldCh0KSl9W1N5bWJvbC5pdGVyYXRvcl0oKXtyZXR1cm4gdGhpcy5fbWFwLnZhbHVlcygpfWNsZWFyKCl7dGhpcy5fbWFwLmNsZWFyKCl9Kml0ZW1zKCl7Zm9yKGNvbnN0W2UsdF1vZiB0aGlzLl9tYXApeWllbGRbUmVmLmZyb21TdHJpbmcoZSksdF19fWZ1bmN0aW9uIGlzTmFtZShlLHQpe3JldHVybiBlIGluc3RhbmNlb2YgTmFtZSYmKHZvaWQgMD09PXR8fGUubmFtZT09PXQpfWZ1bmN0aW9uIGlzQ21kKGUsdCl7cmV0dXJuIGUgaW5zdGFuY2VvZiBDbWQmJih2b2lkIDA9PT10fHxlLmNtZD09PXQpfWZ1bmN0aW9uIGlzRGljdChlLHQpe3JldHVybiBlIGluc3RhbmNlb2YgRGljdCYmKHZvaWQgMD09PXR8fGlzTmFtZShlLmdldCgiVHlwZSIpLHQpKX1mdW5jdGlvbiBpc1JlZnNFcXVhbChlLHQpe3JldHVybiBlLm51bT09PXQubnVtJiZlLmdlbj09PXQuZ2VufWNsYXNzIEJhc2VTdHJlYW17Y29uc3RydWN0b3IoKXt0aGlzLmNvbnN0cnVjdG9yPT09QmFzZVN0cmVhbSYmdW5yZWFjaGFibGUoIkNhbm5vdCBpbml0aWFsaXplIEJhc2VTdHJlYW0uIil9Z2V0IGxlbmd0aCgpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBnZXR0ZXIgYGxlbmd0aGAgYWNjZXNzZWQiKX1nZXQgaXNFbXB0eSgpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBnZXR0ZXIgYGlzRW1wdHlgIGFjY2Vzc2VkIil9Z2V0IGlzRGF0YUxvYWRlZCgpe3JldHVybiBzaGFkb3codGhpcywiaXNEYXRhTG9hZGVkIiwhMCl9Z2V0Qnl0ZSgpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYGdldEJ5dGVgIGNhbGxlZCIpfWdldEJ5dGVzKGUpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYGdldEJ5dGVzYCBjYWxsZWQiKX1wZWVrQnl0ZSgpe2NvbnN0IGU9dGhpcy5nZXRCeXRlKCk7LTEhPT1lJiZ0aGlzLnBvcy0tO3JldHVybiBlfXBlZWtCeXRlcyhlKXtjb25zdCB0PXRoaXMuZ2V0Qnl0ZXMoZSk7dGhpcy5wb3MtPXQubGVuZ3RoO3JldHVybiB0fWdldFVpbnQxNigpe2NvbnN0IGU9dGhpcy5nZXRCeXRlKCksdD10aGlzLmdldEJ5dGUoKTtyZXR1cm4tMT09PWV8fC0xPT09dD8tMTooZTw8OCkrdH1nZXRJbnQzMigpe3JldHVybih0aGlzLmdldEJ5dGUoKTw8MjQpKyh0aGlzLmdldEJ5dGUoKTw8MTYpKyh0aGlzLmdldEJ5dGUoKTw8OCkrdGhpcy5nZXRCeXRlKCl9Z2V0Qnl0ZVJhbmdlKGUsdCl7dW5yZWFjaGFibGUoIkFic3RyYWN0IG1ldGhvZCBgZ2V0Qnl0ZVJhbmdlYCBjYWxsZWQiKX1nZXRTdHJpbmcoZSl7cmV0dXJuIGJ5dGVzVG9TdHJpbmcodGhpcy5nZXRCeXRlcyhlKSl9c2tpcChlKXt0aGlzLnBvcys9ZXx8MX1yZXNldCgpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYHJlc2V0YCBjYWxsZWQiKX1tb3ZlU3RhcnQoKXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgbWV0aG9kIGBtb3ZlU3RhcnRgIGNhbGxlZCIpfW1ha2VTdWJTdHJlYW0oZSx0LGk9bnVsbCl7dW5yZWFjaGFibGUoIkFic3RyYWN0IG1ldGhvZCBgbWFrZVN1YlN0cmVhbWAgY2FsbGVkIil9Z2V0QmFzZVN0cmVhbXMoKXtyZXR1cm4gbnVsbH19Y29uc3QgRHQ9L15bMS05XVwuXGQkLztmdW5jdGlvbiBnZXRMb29rdXBUYWJsZUZhY3RvcnkoZSl7bGV0IHQ7cmV0dXJuIGZ1bmN0aW9uKCl7aWYoZSl7dD1PYmplY3QuY3JlYXRlKG51bGwpO2UodCk7ZT1udWxsfXJldHVybiB0fX1jbGFzcyBNaXNzaW5nRGF0YUV4Y2VwdGlvbiBleHRlbmRzIHJ0e2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoYE1pc3NpbmcgZGF0YSBbJHtlfSwgJHt0fSlgLCJNaXNzaW5nRGF0YUV4Y2VwdGlvbiIpO3RoaXMuYmVnaW49ZTt0aGlzLmVuZD10fX1jbGFzcyBQYXJzZXJFT0ZFeGNlcHRpb24gZXh0ZW5kcyBydHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJQYXJzZXJFT0ZFeGNlcHRpb24iKX19Y2xhc3MgWFJlZkVudHJ5RXhjZXB0aW9uIGV4dGVuZHMgcnR7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiWFJlZkVudHJ5RXhjZXB0aW9uIil9fWNsYXNzIFhSZWZQYXJzZUV4Y2VwdGlvbiBleHRlbmRzIHJ0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsIlhSZWZQYXJzZUV4Y2VwdGlvbiIpfX1mdW5jdGlvbiBhcnJheUJ1ZmZlcnNUb0J5dGVzKGUpe2NvbnN0IHQ9ZS5sZW5ndGg7aWYoMD09PXQpcmV0dXJuIG5ldyBVaW50OEFycmF5KDApO2lmKDE9PT10KXJldHVybiBuZXcgVWludDhBcnJheShlWzBdKTtsZXQgaT0wO2ZvcihsZXQgYT0wO2E8dDthKyspaSs9ZVthXS5ieXRlTGVuZ3RoO2NvbnN0IGE9bmV3IFVpbnQ4QXJyYXkoaSk7bGV0IHM9MDtmb3IobGV0IGk9MDtpPHQ7aSsrKXtjb25zdCB0PW5ldyBVaW50OEFycmF5KGVbaV0pO2Euc2V0KHQscyk7cys9dC5ieXRlTGVuZ3RofXJldHVybiBhfWZ1bmN0aW9uIGdldEluaGVyaXRhYmxlUHJvcGVydHkoe2RpY3Q6ZSxrZXk6dCxnZXRBcnJheTppPSExLHN0b3BXaGVuRm91bmQ6YT0hMH0pe2xldCBzO2NvbnN0IHI9bmV3IFJlZlNldDtmb3IoO2UgaW5zdGFuY2VvZiBEaWN0JiYoIWUub2JqSWR8fCFyLmhhcyhlLm9iaklkKSk7KXtlLm9iaklkJiZyLnB1dChlLm9iaklkKTtjb25zdCBuPWk/ZS5nZXRBcnJheSh0KTplLmdldCh0KTtpZih2b2lkIDAhPT1uKXtpZihhKXJldHVybiBuOyhzfHw9W10pLnB1c2gobil9ZT1lLmdldCgiUGFyZW50Iil9cmV0dXJuIHN9Y29uc3QgRnQ9WyIiLCJDIiwiQ0MiLCJDQ0MiLCJDRCIsIkQiLCJEQyIsIkRDQyIsIkRDQ0MiLCJDTSIsIiIsIlgiLCJYWCIsIlhYWCIsIlhMIiwiTCIsIkxYIiwiTFhYIiwiTFhYWCIsIlhDIiwiIiwiSSIsIklJIiwiSUlJIiwiSVYiLCJWIiwiVkkiLCJWSUkiLCJWSUlJIiwiSVgiXTtmdW5jdGlvbiB0b1JvbWFuTnVtZXJhbHMoZSx0PSExKXthc3NlcnQoTnVtYmVyLmlzSW50ZWdlcihlKSYmZT4wLCJUaGUgbnVtYmVyIHNob3VsZCBiZSBhIHBvc2l0aXZlIGludGVnZXIuIik7Y29uc3QgaT1bXTtsZXQgYTtmb3IoO2U+PTFlMzspe2UtPTFlMztpLnB1c2goIk0iKX1hPWUvMTAwfDA7ZSU9MTAwO2kucHVzaChGdFthXSk7YT1lLzEwfDA7ZSU9MTA7aS5wdXNoKEZ0WzEwK2FdKTtpLnB1c2goRnRbMjArZV0pO2NvbnN0IHM9aS5qb2luKCIiKTtyZXR1cm4gdD9zLnRvTG93ZXJDYXNlKCk6c31mdW5jdGlvbiBsb2cyKGUpe3JldHVybiBlPD0wPzA6TWF0aC5jZWlsKE1hdGgubG9nMihlKSl9ZnVuY3Rpb24gcmVhZEludDgoZSx0KXtyZXR1cm4gZVt0XTw8MjQ+PjI0fWZ1bmN0aW9uIHJlYWRVaW50MTYoZSx0KXtyZXR1cm4gZVt0XTw8OHxlW3QrMV19ZnVuY3Rpb24gcmVhZFVpbnQzMihlLHQpe3JldHVybihlW3RdPDwyNHxlW3QrMV08PDE2fGVbdCsyXTw8OHxlW3QrM10pPj4+MH1mdW5jdGlvbiBpc1doaXRlU3BhY2UoZSl7cmV0dXJuIDMyPT09ZXx8OT09PWV8fDEzPT09ZXx8MTA9PT1lfWZ1bmN0aW9uIGlzTnVtYmVyQXJyYXkoZSx0KXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKSYmKG51bGw9PT10fHxlLmxlbmd0aD09PXQpJiZlLmV2ZXJ5KChlPT4ibnVtYmVyIj09dHlwZW9mIGUpKX1mdW5jdGlvbiBwYXJzZVhGQVBhdGgoZSl7Y29uc3QgdD0vKC4rKVxbKFxkKylcXSQvO3JldHVybiBlLnNwbGl0KCIuIikubWFwKChlPT57Y29uc3QgaT1lLm1hdGNoKHQpO3JldHVybiBpP3tuYW1lOmlbMV0scG9zOnBhcnNlSW50KGlbMl0sMTApfTp7bmFtZTplLHBvczowfX0pKX1mdW5jdGlvbiBlc2NhcGVQREZOYW1lKGUpe2NvbnN0IHQ9W107bGV0IGk9MDtmb3IobGV0IGE9MCxzPWUubGVuZ3RoO2E8czthKyspe2NvbnN0IHM9ZS5jaGFyQ29kZUF0KGEpO2lmKHM8MzN8fHM+MTI2fHwzNT09PXN8fDQwPT09c3x8NDE9PT1zfHw2MD09PXN8fDYyPT09c3x8OTE9PT1zfHw5Mz09PXN8fDEyMz09PXN8fDEyNT09PXN8fDQ3PT09c3x8Mzc9PT1zKXtpPGEmJnQucHVzaChlLnN1YnN0cmluZyhpLGEpKTt0LnB1c2goYCMke3MudG9TdHJpbmcoMTYpfWApO2k9YSsxfX1pZigwPT09dC5sZW5ndGgpcmV0dXJuIGU7aTxlLmxlbmd0aCYmdC5wdXNoKGUuc3Vic3RyaW5nKGksZS5sZW5ndGgpKTtyZXR1cm4gdC5qb2luKCIiKX1mdW5jdGlvbiBlc2NhcGVTdHJpbmcoZSl7cmV0dXJuIGUucmVwbGFjZUFsbCgvKFsoKVxcXG5ccl0pL2csKGU9PiJcbiI9PT1lPyJcXG4iOiJcciI9PT1lPyJcXHIiOmBcXCR7ZX1gKSl9ZnVuY3Rpb24gX2NvbGxlY3RKUyhlLHQsaSxhKXtpZighZSlyZXR1cm47bGV0IHM9bnVsbDtpZihlIGluc3RhbmNlb2YgUmVmKXtpZihhLmhhcyhlKSlyZXR1cm47cz1lO2EucHV0KHMpO2U9dC5mZXRjaChlKX1pZihBcnJheS5pc0FycmF5KGUpKWZvcihjb25zdCBzIG9mIGUpX2NvbGxlY3RKUyhzLHQsaSxhKTtlbHNlIGlmKGUgaW5zdGFuY2VvZiBEaWN0KXtpZihpc05hbWUoZS5nZXQoIlMiKSwiSmF2YVNjcmlwdCIpKXtjb25zdCB0PWUuZ2V0KCJKUyIpO2xldCBhO3QgaW5zdGFuY2VvZiBCYXNlU3RyZWFtP2E9dC5nZXRTdHJpbmcoKToic3RyaW5nIj09dHlwZW9mIHQmJihhPXQpO2EmJj1zdHJpbmdUb1BERlN0cmluZyhhKS5yZXBsYWNlQWxsKCJcMCIsIiIpO2EmJmkucHVzaChhKX1fY29sbGVjdEpTKGUuZ2V0UmF3KCJOZXh0IiksdCxpLGEpfXMmJmEucmVtb3ZlKHMpfWZ1bmN0aW9uIGNvbGxlY3RBY3Rpb25zKGUsdCxpKXtjb25zdCBhPU9iamVjdC5jcmVhdGUobnVsbCkscz1nZXRJbmhlcml0YWJsZVByb3BlcnR5KHtkaWN0OnQsa2V5OiJBQSIsc3RvcFdoZW5Gb3VuZDohMX0pO2lmKHMpZm9yKGxldCB0PXMubGVuZ3RoLTE7dD49MDt0LS0pe2NvbnN0IHI9c1t0XTtpZihyIGluc3RhbmNlb2YgRGljdClmb3IoY29uc3QgdCBvZiByLmdldEtleXMoKSl7Y29uc3Qgcz1pW3RdO2lmKCFzKWNvbnRpbnVlO2NvbnN0IG49W107X2NvbGxlY3RKUyhyLmdldFJhdyh0KSxlLG4sbmV3IFJlZlNldCk7bi5sZW5ndGg+MCYmKGFbc109bil9fWlmKHQuaGFzKCJBIikpe2NvbnN0IGk9W107X2NvbGxlY3RKUyh0LmdldCgiQSIpLGUsaSxuZXcgUmVmU2V0KTtpLmxlbmd0aD4wJiYoYS5BY3Rpb249aSl9cmV0dXJuIG9iamVjdFNpemUoYSk+MD9hOm51bGx9Y29uc3QgU3Q9ezYwOiImbHQ7Iiw2MjoiJmd0OyIsMzg6IiZhbXA7IiwzNDoiJnF1b3Q7IiwzOToiJmFwb3M7In07ZnVuY3Rpb24qY29kZVBvaW50SXRlcihlKXtmb3IobGV0IHQ9MCxpPWUubGVuZ3RoO3Q8aTt0Kyspe2NvbnN0IGk9ZS5jb2RlUG9pbnRBdCh0KTtpPjU1Mjk1JiYoaTw1NzM0NHx8aT42NTUzMykmJnQrKzt5aWVsZCBpfX1mdW5jdGlvbiBlbmNvZGVUb1htbFN0cmluZyhlKXtjb25zdCB0PVtdO2xldCBpPTA7Zm9yKGxldCBhPTAscz1lLmxlbmd0aDthPHM7YSsrKXtjb25zdCBzPWUuY29kZVBvaW50QXQoYSk7aWYoMzI8PXMmJnM8PTEyNil7Y29uc3Qgcj1TdFtzXTtpZihyKXtpPGEmJnQucHVzaChlLnN1YnN0cmluZyhpLGEpKTt0LnB1c2gocik7aT1hKzF9fWVsc2V7aTxhJiZ0LnB1c2goZS5zdWJzdHJpbmcoaSxhKSk7dC5wdXNoKGAmI3gke3MudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCl9O2ApO3M+NTUyOTUmJihzPDU3MzQ0fHxzPjY1NTMzKSYmYSsrO2k9YSsxfX1pZigwPT09dC5sZW5ndGgpcmV0dXJuIGU7aTxlLmxlbmd0aCYmdC5wdXNoKGUuc3Vic3RyaW5nKGksZS5sZW5ndGgpKTtyZXR1cm4gdC5qb2luKCIiKX1mdW5jdGlvbiB2YWxpZGF0ZUZvbnROYW1lKGUsdD0hMSl7Y29uc3QgaT0vXigifCcpLiooInwnKSQvLmV4ZWMoZSk7aWYoaSYmaVsxXT09PWlbMl0pe2lmKG5ldyBSZWdFeHAoYFteXFxcXF0ke2lbMV19YCkudGVzdChlLnNsaWNlKDEsLTEpKSl7dCYmd2FybihgRm9udEZhbWlseSBjb250YWlucyB1bmVzY2FwZWQgJHtpWzFdfTogJHtlfS5gKTtyZXR1cm4hMX19ZWxzZSBmb3IoY29uc3QgaSBvZiBlLnNwbGl0KC9bIFx0XSsvKSlpZigvXihcZHwoLShcZHwtKSkpLy50ZXN0KGkpfHwhL15bXHctXFxdKyQvLnRlc3QoaSkpe3QmJndhcm4oYEZvbnRGYW1pbHkgY29udGFpbnMgaW52YWxpZCA8Y3VzdG9tLWlkZW50PjogJHtlfS5gKTtyZXR1cm4hMX1yZXR1cm4hMH1mdW5jdGlvbiB2YWxpZGF0ZUNTU0ZvbnQoZSl7Y29uc3QgdD1uZXcgU2V0KFsiMTAwIiwiMjAwIiwiMzAwIiwiNDAwIiwiNTAwIiwiNjAwIiwiNzAwIiwiODAwIiwiOTAwIiwiMTAwMCIsIm5vcm1hbCIsImJvbGQiLCJib2xkZXIiLCJsaWdodGVyIl0pLHtmb250RmFtaWx5OmksZm9udFdlaWdodDphLGl0YWxpY0FuZ2xlOnN9PWU7aWYoIXZhbGlkYXRlRm9udE5hbWUoaSwhMCkpcmV0dXJuITE7Y29uc3Qgcj1hP2EudG9TdHJpbmcoKToiIjtlLmZvbnRXZWlnaHQ9dC5oYXMocik/cjoiNDAwIjtjb25zdCBuPXBhcnNlRmxvYXQocyk7ZS5pdGFsaWNBbmdsZT1pc05hTihuKXx8bjwtOTB8fG4+OTA/IjE0IjpzLnRvU3RyaW5nKCk7cmV0dXJuITB9ZnVuY3Rpb24gcmVjb3ZlckpzVVJMKGUpe2NvbnN0IHQ9bmV3IFJlZ0V4cCgiXlxccyooIitbImFwcC5sYXVuY2hVUkwiLCJ3aW5kb3cub3BlbiIsInhmYS5ob3N0LmdvdG9VUkwiXS5qb2luKCJ8IikucmVwbGFjZUFsbCgiLiIsIlxcLiIpKyIpXFwoKD86J3xcIikoW14nXCJdKikoPzonfFwiKSg/OixcXHMqKFxcdyspXFwpfFxcKSkiLCJpIikuZXhlYyhlKTtpZih0Py5bMl0pe2NvbnN0IGU9dFsyXTtsZXQgaT0hMTsidHJ1ZSI9PT10WzNdJiYiYXBwLmxhdW5jaFVSTCI9PT10WzFdJiYoaT0hMCk7cmV0dXJue3VybDplLG5ld1dpbmRvdzppfX1yZXR1cm4gbnVsbH1mdW5jdGlvbiBudW1iZXJUb1N0cmluZyhlKXtpZihOdW1iZXIuaXNJbnRlZ2VyKGUpKXJldHVybiBlLnRvU3RyaW5nKCk7Y29uc3QgdD1NYXRoLnJvdW5kKDEwMCplKTtyZXR1cm4gdCUxMDA9PTA/KHQvMTAwKS50b1N0cmluZygpOnQlMTA9PTA/ZS50b0ZpeGVkKDEpOmUudG9GaXhlZCgyKX1mdW5jdGlvbiBnZXROZXdBbm5vdGF0aW9uc01hcChlKXtpZighZSlyZXR1cm4gbnVsbDtjb25zdCB0PW5ldyBNYXA7Zm9yKGNvbnN0W2ksYV1vZiBlKXtpZighaS5zdGFydHNXaXRoKEUpKWNvbnRpbnVlO2xldCBlPXQuZ2V0KGEucGFnZUluZGV4KTtpZighZSl7ZT1bXTt0LnNldChhLnBhZ2VJbmRleCxlKX1lLnB1c2goYSl9cmV0dXJuIHQuc2l6ZT4wP3Q6bnVsbH1mdW5jdGlvbiBpc0FzY2lpKGUpe3JldHVybi9eW1x4MDAtXHg3Rl0qJC8udGVzdChlKX1mdW5jdGlvbiBzdHJpbmdUb1VURjE2SGV4U3RyaW5nKGUpe2NvbnN0IHQ9W107Zm9yKGxldCBpPTAsYT1lLmxlbmd0aDtpPGE7aSsrKXtjb25zdCBhPWUuY2hhckNvZGVBdChpKTt0LnB1c2goKGE+PjgmMjU1KS50b1N0cmluZygxNikucGFkU3RhcnQoMiwiMCIpLCgyNTUmYSkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsIjAiKSl9cmV0dXJuIHQuam9pbigiIil9ZnVuY3Rpb24gc3RyaW5nVG9VVEYxNlN0cmluZyhlLHQ9ITEpe2NvbnN0IGk9W107dCYmaS5wdXNoKCLDvsO/Iik7Zm9yKGxldCB0PTAsYT1lLmxlbmd0aDt0PGE7dCsrKXtjb25zdCBhPWUuY2hhckNvZGVBdCh0KTtpLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShhPj44JjI1NSksU3RyaW5nLmZyb21DaGFyQ29kZSgyNTUmYSkpfXJldHVybiBpLmpvaW4oIiIpfWZ1bmN0aW9uIGdldFJvdGF0aW9uTWF0cml4KGUsdCxpKXtzd2l0Y2goZSl7Y2FzZSA5MDpyZXR1cm5bMCwxLC0xLDAsdCwwXTtjYXNlIDE4MDpyZXR1cm5bLTEsMCwwLC0xLHQsaV07Y2FzZSAyNzA6cmV0dXJuWzAsLTEsMSwwLDAsaV07ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgcm90YXRpb24iKX19ZnVuY3Rpb24gZ2V0U2l6ZUluQnl0ZXMoZSl7cmV0dXJuIE1hdGguY2VpbChNYXRoLmNlaWwoTWF0aC5sb2cyKDErZSkpLzgpfWNsYXNzIFN0cmVhbSBleHRlbmRzIEJhc2VTdHJlYW17Y29uc3RydWN0b3IoZSx0LGksYSl7c3VwZXIoKTt0aGlzLmJ5dGVzPWUgaW5zdGFuY2VvZiBVaW50OEFycmF5P2U6bmV3IFVpbnQ4QXJyYXkoZSk7dGhpcy5zdGFydD10fHwwO3RoaXMucG9zPXRoaXMuc3RhcnQ7dGhpcy5lbmQ9dCtpfHx0aGlzLmJ5dGVzLmxlbmd0aDt0aGlzLmRpY3Q9YX1nZXQgbGVuZ3RoKCl7cmV0dXJuIHRoaXMuZW5kLXRoaXMuc3RhcnR9Z2V0IGlzRW1wdHkoKXtyZXR1cm4gMD09PXRoaXMubGVuZ3RofWdldEJ5dGUoKXtyZXR1cm4gdGhpcy5wb3M+PXRoaXMuZW5kPy0xOnRoaXMuYnl0ZXNbdGhpcy5wb3MrK119Z2V0Qnl0ZXMoZSl7Y29uc3QgdD10aGlzLmJ5dGVzLGk9dGhpcy5wb3MsYT10aGlzLmVuZDtpZighZSlyZXR1cm4gdC5zdWJhcnJheShpLGEpO2xldCBzPWkrZTtzPmEmJihzPWEpO3RoaXMucG9zPXM7cmV0dXJuIHQuc3ViYXJyYXkoaSxzKX1nZXRCeXRlUmFuZ2UoZSx0KXtlPDAmJihlPTApO3Q+dGhpcy5lbmQmJih0PXRoaXMuZW5kKTtyZXR1cm4gdGhpcy5ieXRlcy5zdWJhcnJheShlLHQpfXJlc2V0KCl7dGhpcy5wb3M9dGhpcy5zdGFydH1tb3ZlU3RhcnQoKXt0aGlzLnN0YXJ0PXRoaXMucG9zfW1ha2VTdWJTdHJlYW0oZSx0LGk9bnVsbCl7cmV0dXJuIG5ldyBTdHJlYW0odGhpcy5ieXRlcy5idWZmZXIsZSx0LGkpfX1jbGFzcyBTdHJpbmdTdHJlYW0gZXh0ZW5kcyBTdHJlYW17Y29uc3RydWN0b3IoZSl7c3VwZXIoc3RyaW5nVG9CeXRlcyhlKSl9fWNsYXNzIE51bGxTdHJlYW0gZXh0ZW5kcyBTdHJlYW17Y29uc3RydWN0b3IoKXtzdXBlcihuZXcgVWludDhBcnJheSgwKSl9fWNsYXNzIENodW5rZWRTdHJlYW0gZXh0ZW5kcyBTdHJlYW17Y29uc3RydWN0b3IoZSx0LGkpe3N1cGVyKG5ldyBVaW50OEFycmF5KGUpLDAsZSxudWxsKTt0aGlzLmNodW5rU2l6ZT10O3RoaXMuX2xvYWRlZENodW5rcz1uZXcgU2V0O3RoaXMubnVtQ2h1bmtzPU1hdGguY2VpbChlL3QpO3RoaXMubWFuYWdlcj1pO3RoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoPTA7dGhpcy5sYXN0U3VjY2Vzc2Z1bEVuc3VyZUJ5dGVDaHVuaz0tMX1nZXRNaXNzaW5nQ2h1bmtzKCl7Y29uc3QgZT1bXTtmb3IobGV0IHQ9MCxpPXRoaXMubnVtQ2h1bmtzO3Q8aTsrK3QpdGhpcy5fbG9hZGVkQ2h1bmtzLmhhcyh0KXx8ZS5wdXNoKHQpO3JldHVybiBlfWdldCBudW1DaHVua3NMb2FkZWQoKXtyZXR1cm4gdGhpcy5fbG9hZGVkQ2h1bmtzLnNpemV9Z2V0IGlzRGF0YUxvYWRlZCgpe3JldHVybiB0aGlzLm51bUNodW5rc0xvYWRlZD09PXRoaXMubnVtQ2h1bmtzfW9uUmVjZWl2ZURhdGEoZSx0KXtjb25zdCBpPXRoaXMuY2h1bmtTaXplO2lmKGUlaSE9MCl0aHJvdyBuZXcgRXJyb3IoYEJhZCBiZWdpbiBvZmZzZXQ6ICR7ZX1gKTtjb25zdCBhPWUrdC5ieXRlTGVuZ3RoO2lmKGElaSE9MCYmYSE9PXRoaXMuYnl0ZXMubGVuZ3RoKXRocm93IG5ldyBFcnJvcihgQmFkIGVuZCBvZmZzZXQ6ICR7YX1gKTt0aGlzLmJ5dGVzLnNldChuZXcgVWludDhBcnJheSh0KSxlKTtjb25zdCBzPU1hdGguZmxvb3IoZS9pKSxyPU1hdGguZmxvb3IoKGEtMSkvaSkrMTtmb3IobGV0IGU9cztlPHI7KytlKXRoaXMuX2xvYWRlZENodW5rcy5hZGQoZSl9b25SZWNlaXZlUHJvZ3Jlc3NpdmVEYXRhKGUpe2xldCB0PXRoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoO2NvbnN0IGk9TWF0aC5mbG9vcih0L3RoaXMuY2h1bmtTaXplKTt0aGlzLmJ5dGVzLnNldChuZXcgVWludDhBcnJheShlKSx0KTt0Kz1lLmJ5dGVMZW5ndGg7dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGg9dDtjb25zdCBhPXQ+PXRoaXMuZW5kP3RoaXMubnVtQ2h1bmtzOk1hdGguZmxvb3IodC90aGlzLmNodW5rU2l6ZSk7Zm9yKGxldCBlPWk7ZTxhOysrZSl0aGlzLl9sb2FkZWRDaHVua3MuYWRkKGUpfWVuc3VyZUJ5dGUoZSl7aWYoZTx0aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aClyZXR1cm47Y29uc3QgdD1NYXRoLmZsb29yKGUvdGhpcy5jaHVua1NpemUpO2lmKCEodD50aGlzLm51bUNodW5rcykmJnQhPT10aGlzLmxhc3RTdWNjZXNzZnVsRW5zdXJlQnl0ZUNodW5rKXtpZighdGhpcy5fbG9hZGVkQ2h1bmtzLmhhcyh0KSl0aHJvdyBuZXcgTWlzc2luZ0RhdGFFeGNlcHRpb24oZSxlKzEpO3RoaXMubGFzdFN1Y2Nlc3NmdWxFbnN1cmVCeXRlQ2h1bms9dH19ZW5zdXJlUmFuZ2UoZSx0KXtpZihlPj10KXJldHVybjtpZih0PD10aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aClyZXR1cm47Y29uc3QgaT1NYXRoLmZsb29yKGUvdGhpcy5jaHVua1NpemUpO2lmKGk+dGhpcy5udW1DaHVua3MpcmV0dXJuO2NvbnN0IGE9TWF0aC5taW4oTWF0aC5mbG9vcigodC0xKS90aGlzLmNodW5rU2l6ZSkrMSx0aGlzLm51bUNodW5rcyk7Zm9yKGxldCBzPWk7czxhOysrcylpZighdGhpcy5fbG9hZGVkQ2h1bmtzLmhhcyhzKSl0aHJvdyBuZXcgTWlzc2luZ0RhdGFFeGNlcHRpb24oZSx0KX1uZXh0RW1wdHlDaHVuayhlKXtjb25zdCB0PXRoaXMubnVtQ2h1bmtzO2ZvcihsZXQgaT0wO2k8dDsrK2kpe2NvbnN0IGE9KGUraSkldDtpZighdGhpcy5fbG9hZGVkQ2h1bmtzLmhhcyhhKSlyZXR1cm4gYX1yZXR1cm4gbnVsbH1oYXNDaHVuayhlKXtyZXR1cm4gdGhpcy5fbG9hZGVkQ2h1bmtzLmhhcyhlKX1nZXRCeXRlKCl7Y29uc3QgZT10aGlzLnBvcztpZihlPj10aGlzLmVuZClyZXR1cm4tMTtlPj10aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aCYmdGhpcy5lbnN1cmVCeXRlKGUpO3JldHVybiB0aGlzLmJ5dGVzW3RoaXMucG9zKytdfWdldEJ5dGVzKGUpe2NvbnN0IHQ9dGhpcy5ieXRlcyxpPXRoaXMucG9zLGE9dGhpcy5lbmQ7aWYoIWUpe2E+dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGgmJnRoaXMuZW5zdXJlUmFuZ2UoaSxhKTtyZXR1cm4gdC5zdWJhcnJheShpLGEpfWxldCBzPWkrZTtzPmEmJihzPWEpO3M+dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGgmJnRoaXMuZW5zdXJlUmFuZ2UoaSxzKTt0aGlzLnBvcz1zO3JldHVybiB0LnN1YmFycmF5KGkscyl9Z2V0Qnl0ZVJhbmdlKGUsdCl7ZTwwJiYoZT0wKTt0PnRoaXMuZW5kJiYodD10aGlzLmVuZCk7dD50aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aCYmdGhpcy5lbnN1cmVSYW5nZShlLHQpO3JldHVybiB0aGlzLmJ5dGVzLnN1YmFycmF5KGUsdCl9bWFrZVN1YlN0cmVhbShlLHQsaT1udWxsKXt0P2UrdD50aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aCYmdGhpcy5lbnN1cmVSYW5nZShlLGUrdCk6ZT49dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGgmJnRoaXMuZW5zdXJlQnl0ZShlKTtmdW5jdGlvbiBDaHVua2VkU3RyZWFtU3Vic3RyZWFtKCl7fUNodW5rZWRTdHJlYW1TdWJzdHJlYW0ucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodGhpcyk7Q2h1bmtlZFN0cmVhbVN1YnN0cmVhbS5wcm90b3R5cGUuZ2V0TWlzc2luZ0NodW5rcz1mdW5jdGlvbigpe2NvbnN0IGU9dGhpcy5jaHVua1NpemUsdD1NYXRoLmZsb29yKHRoaXMuc3RhcnQvZSksaT1NYXRoLmZsb29yKCh0aGlzLmVuZC0xKS9lKSsxLGE9W107Zm9yKGxldCBlPXQ7ZTxpOysrZSl0aGlzLl9sb2FkZWRDaHVua3MuaGFzKGUpfHxhLnB1c2goZSk7cmV0dXJuIGF9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShDaHVua2VkU3RyZWFtU3Vic3RyZWFtLnByb3RvdHlwZSwiaXNEYXRhTG9hZGVkIix7Z2V0KCl7cmV0dXJuIHRoaXMubnVtQ2h1bmtzTG9hZGVkPT09dGhpcy5udW1DaHVua3N8fDA9PT10aGlzLmdldE1pc3NpbmdDaHVua3MoKS5sZW5ndGh9LGNvbmZpZ3VyYWJsZTohMH0pO2NvbnN0IGE9bmV3IENodW5rZWRTdHJlYW1TdWJzdHJlYW07YS5wb3M9YS5zdGFydD1lO2EuZW5kPWUrdHx8dGhpcy5lbmQ7YS5kaWN0PWk7cmV0dXJuIGF9Z2V0QmFzZVN0cmVhbXMoKXtyZXR1cm5bdGhpc119fWNsYXNzIENodW5rZWRTdHJlYW1NYW5hZ2Vye2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5sZW5ndGg9dC5sZW5ndGg7dGhpcy5jaHVua1NpemU9dC5yYW5nZUNodW5rU2l6ZTt0aGlzLnN0cmVhbT1uZXcgQ2h1bmtlZFN0cmVhbSh0aGlzLmxlbmd0aCx0aGlzLmNodW5rU2l6ZSx0aGlzKTt0aGlzLnBkZk5ldHdvcmtTdHJlYW09ZTt0aGlzLmRpc2FibGVBdXRvRmV0Y2g9dC5kaXNhYmxlQXV0b0ZldGNoO3RoaXMubXNnSGFuZGxlcj10Lm1zZ0hhbmRsZXI7dGhpcy5jdXJyUmVxdWVzdElkPTA7dGhpcy5fY2h1bmtzTmVlZGVkQnlSZXF1ZXN0PW5ldyBNYXA7dGhpcy5fcmVxdWVzdHNCeUNodW5rPW5ldyBNYXA7dGhpcy5fcHJvbWlzZXNCeVJlcXVlc3Q9bmV3IE1hcDt0aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aD0wO3RoaXMuYWJvcnRlZD0hMTt0aGlzLl9sb2FkZWRTdHJlYW1DYXBhYmlsaXR5PVByb21pc2Uud2l0aFJlc29sdmVycygpfXNlbmRSZXF1ZXN0KGUsdCl7Y29uc3QgaT10aGlzLnBkZk5ldHdvcmtTdHJlYW0uZ2V0UmFuZ2VSZWFkZXIoZSx0KTtpLmlzU3RyZWFtaW5nU3VwcG9ydGVkfHwoaS5vblByb2dyZXNzPXRoaXMub25Qcm9ncmVzcy5iaW5kKHRoaXMpKTtsZXQgYT1bXSxzPTA7cmV0dXJuIG5ldyBQcm9taXNlKCgoZSx0KT0+e2NvbnN0IHJlYWRDaHVuaz0oe3ZhbHVlOnIsZG9uZTpufSk9Pnt0cnl7aWYobil7Y29uc3QgdD1hcnJheUJ1ZmZlcnNUb0J5dGVzKGEpO2E9bnVsbDtlKHQpO3JldHVybn1zKz1yLmJ5dGVMZW5ndGg7aS5pc1N0cmVhbWluZ1N1cHBvcnRlZCYmdGhpcy5vblByb2dyZXNzKHtsb2FkZWQ6c30pO2EucHVzaChyKTtpLnJlYWQoKS50aGVuKHJlYWRDaHVuayx0KX1jYXRjaChlKXt0KGUpfX07aS5yZWFkKCkudGhlbihyZWFkQ2h1bmssdCl9KSkudGhlbigodD0+e3RoaXMuYWJvcnRlZHx8dGhpcy5vblJlY2VpdmVEYXRhKHtjaHVuazp0LGJlZ2luOmV9KX0pKX1yZXF1ZXN0QWxsQ2h1bmtzKGU9ITEpe2lmKCFlKXtjb25zdCBlPXRoaXMuc3RyZWFtLmdldE1pc3NpbmdDaHVua3MoKTt0aGlzLl9yZXF1ZXN0Q2h1bmtzKGUpfXJldHVybiB0aGlzLl9sb2FkZWRTdHJlYW1DYXBhYmlsaXR5LnByb21pc2V9X3JlcXVlc3RDaHVua3MoZSl7Y29uc3QgdD10aGlzLmN1cnJSZXF1ZXN0SWQrKyxpPW5ldyBTZXQ7dGhpcy5fY2h1bmtzTmVlZGVkQnlSZXF1ZXN0LnNldCh0LGkpO2Zvcihjb25zdCB0IG9mIGUpdGhpcy5zdHJlYW0uaGFzQ2h1bmsodCl8fGkuYWRkKHQpO2lmKDA9PT1pLnNpemUpcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO2NvbnN0IGE9UHJvbWlzZS53aXRoUmVzb2x2ZXJzKCk7dGhpcy5fcHJvbWlzZXNCeVJlcXVlc3Quc2V0KHQsYSk7Y29uc3Qgcz1bXTtmb3IoY29uc3QgZSBvZiBpKXtsZXQgaT10aGlzLl9yZXF1ZXN0c0J5Q2h1bmsuZ2V0KGUpO2lmKCFpKXtpPVtdO3RoaXMuX3JlcXVlc3RzQnlDaHVuay5zZXQoZSxpKTtzLnB1c2goZSl9aS5wdXNoKHQpfWlmKHMubGVuZ3RoPjApe2NvbnN0IGU9dGhpcy5ncm91cENodW5rcyhzKTtmb3IoY29uc3QgdCBvZiBlKXtjb25zdCBlPXQuYmVnaW5DaHVuayp0aGlzLmNodW5rU2l6ZSxpPU1hdGgubWluKHQuZW5kQ2h1bmsqdGhpcy5jaHVua1NpemUsdGhpcy5sZW5ndGgpO3RoaXMuc2VuZFJlcXVlc3QoZSxpKS5jYXRjaChhLnJlamVjdCl9fXJldHVybiBhLnByb21pc2UuY2F0Y2goKGU9PntpZighdGhpcy5hYm9ydGVkKXRocm93IGV9KSl9Z2V0U3RyZWFtKCl7cmV0dXJuIHRoaXMuc3RyZWFtfXJlcXVlc3RSYW5nZShlLHQpe3Q9TWF0aC5taW4odCx0aGlzLmxlbmd0aCk7Y29uc3QgaT10aGlzLmdldEJlZ2luQ2h1bmsoZSksYT10aGlzLmdldEVuZENodW5rKHQpLHM9W107Zm9yKGxldCBlPWk7ZTxhOysrZSlzLnB1c2goZSk7cmV0dXJuIHRoaXMuX3JlcXVlc3RDaHVua3Mocyl9cmVxdWVzdFJhbmdlcyhlPVtdKXtjb25zdCB0PVtdO2Zvcihjb25zdCBpIG9mIGUpe2NvbnN0IGU9dGhpcy5nZXRCZWdpbkNodW5rKGkuYmVnaW4pLGE9dGhpcy5nZXRFbmRDaHVuayhpLmVuZCk7Zm9yKGxldCBpPWU7aTxhOysraSl0LmluY2x1ZGVzKGkpfHx0LnB1c2goaSl9dC5zb3J0KChmdW5jdGlvbihlLHQpe3JldHVybiBlLXR9KSk7cmV0dXJuIHRoaXMuX3JlcXVlc3RDaHVua3ModCl9Z3JvdXBDaHVua3MoZSl7Y29uc3QgdD1bXTtsZXQgaT0tMSxhPS0xO2ZvcihsZXQgcz0wLHI9ZS5sZW5ndGg7czxyOysrcyl7Y29uc3Qgcj1lW3NdO2k8MCYmKGk9cik7aWYoYT49MCYmYSsxIT09cil7dC5wdXNoKHtiZWdpbkNodW5rOmksZW5kQ2h1bms6YSsxfSk7aT1yfXMrMT09PWUubGVuZ3RoJiZ0LnB1c2goe2JlZ2luQ2h1bms6aSxlbmRDaHVuazpyKzF9KTthPXJ9cmV0dXJuIHR9b25Qcm9ncmVzcyhlKXt0aGlzLm1zZ0hhbmRsZXIuc2VuZCgiRG9jUHJvZ3Jlc3MiLHtsb2FkZWQ6dGhpcy5zdHJlYW0ubnVtQ2h1bmtzTG9hZGVkKnRoaXMuY2h1bmtTaXplK2UubG9hZGVkLHRvdGFsOnRoaXMubGVuZ3RofSl9b25SZWNlaXZlRGF0YShlKXtjb25zdCB0PWUuY2h1bmssaT12b2lkIDA9PT1lLmJlZ2luLGE9aT90aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aDplLmJlZ2luLHM9YSt0LmJ5dGVMZW5ndGgscj1NYXRoLmZsb29yKGEvdGhpcy5jaHVua1NpemUpLG49czx0aGlzLmxlbmd0aD9NYXRoLmZsb29yKHMvdGhpcy5jaHVua1NpemUpOk1hdGguY2VpbChzL3RoaXMuY2h1bmtTaXplKTtpZihpKXt0aGlzLnN0cmVhbS5vblJlY2VpdmVQcm9ncmVzc2l2ZURhdGEodCk7dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGg9c31lbHNlIHRoaXMuc3RyZWFtLm9uUmVjZWl2ZURhdGEoYSx0KTt0aGlzLnN0cmVhbS5pc0RhdGFMb2FkZWQmJnRoaXMuX2xvYWRlZFN0cmVhbUNhcGFiaWxpdHkucmVzb2x2ZSh0aGlzLnN0cmVhbSk7Y29uc3Qgbz1bXTtmb3IobGV0IGU9cjtlPG47KytlKXtjb25zdCB0PXRoaXMuX3JlcXVlc3RzQnlDaHVuay5nZXQoZSk7aWYodCl7dGhpcy5fcmVxdWVzdHNCeUNodW5rLmRlbGV0ZShlKTtmb3IoY29uc3QgaSBvZiB0KXtjb25zdCB0PXRoaXMuX2NodW5rc05lZWRlZEJ5UmVxdWVzdC5nZXQoaSk7dC5oYXMoZSkmJnQuZGVsZXRlKGUpO3Quc2l6ZT4wfHxvLnB1c2goaSl9fX1pZighdGhpcy5kaXNhYmxlQXV0b0ZldGNoJiYwPT09dGhpcy5fcmVxdWVzdHNCeUNodW5rLnNpemUpe2xldCBlO2lmKDE9PT10aGlzLnN0cmVhbS5udW1DaHVua3NMb2FkZWQpe2NvbnN0IHQ9dGhpcy5zdHJlYW0ubnVtQ2h1bmtzLTE7dGhpcy5zdHJlYW0uaGFzQ2h1bmsodCl8fChlPXQpfWVsc2UgZT10aGlzLnN0cmVhbS5uZXh0RW1wdHlDaHVuayhuKTtOdW1iZXIuaXNJbnRlZ2VyKGUpJiZ0aGlzLl9yZXF1ZXN0Q2h1bmtzKFtlXSl9Zm9yKGNvbnN0IGUgb2Ygbyl7Y29uc3QgdD10aGlzLl9wcm9taXNlc0J5UmVxdWVzdC5nZXQoZSk7dGhpcy5fcHJvbWlzZXNCeVJlcXVlc3QuZGVsZXRlKGUpO3QucmVzb2x2ZSgpfXRoaXMubXNnSGFuZGxlci5zZW5kKCJEb2NQcm9ncmVzcyIse2xvYWRlZDp0aGlzLnN0cmVhbS5udW1DaHVua3NMb2FkZWQqdGhpcy5jaHVua1NpemUsdG90YWw6dGhpcy5sZW5ndGh9KX1vbkVycm9yKGUpe3RoaXMuX2xvYWRlZFN0cmVhbUNhcGFiaWxpdHkucmVqZWN0KGUpfWdldEJlZ2luQ2h1bmsoZSl7cmV0dXJuIE1hdGguZmxvb3IoZS90aGlzLmNodW5rU2l6ZSl9Z2V0RW5kQ2h1bmsoZSl7cmV0dXJuIE1hdGguZmxvb3IoKGUtMSkvdGhpcy5jaHVua1NpemUpKzF9YWJvcnQoZSl7dGhpcy5hYm9ydGVkPSEwO3RoaXMucGRmTmV0d29ya1N0cmVhbT8uY2FuY2VsQWxsUmVxdWVzdHMoZSk7Zm9yKGNvbnN0IHQgb2YgdGhpcy5fcHJvbWlzZXNCeVJlcXVlc3QudmFsdWVzKCkpdC5yZWplY3QoZSl9fWNsYXNzIENvbG9yU3BhY2V7Y29uc3RydWN0b3IoZSx0KXt0aGlzLmNvbnN0cnVjdG9yPT09Q29sb3JTcGFjZSYmdW5yZWFjaGFibGUoIkNhbm5vdCBpbml0aWFsaXplIENvbG9yU3BhY2UuIik7dGhpcy5uYW1lPWU7dGhpcy5udW1Db21wcz10fWdldFJnYihlLHQpe2NvbnN0IGk9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDMpO3RoaXMuZ2V0UmdiSXRlbShlLHQsaSwwKTtyZXR1cm4gaX1nZXRSZ2JJdGVtKGUsdCxpLGEpe3VucmVhY2hhYmxlKCJTaG91bGQgbm90IGNhbGwgQ29sb3JTcGFjZS5nZXRSZ2JJdGVtIil9Z2V0UmdiQnVmZmVyKGUsdCxpLGEscyxyLG4pe3VucmVhY2hhYmxlKCJTaG91bGQgbm90IGNhbGwgQ29sb3JTcGFjZS5nZXRSZ2JCdWZmZXIiKX1nZXRPdXRwdXRMZW5ndGgoZSx0KXt1bnJlYWNoYWJsZSgiU2hvdWxkIG5vdCBjYWxsIENvbG9yU3BhY2UuZ2V0T3V0cHV0TGVuZ3RoIil9aXNQYXNzdGhyb3VnaChlKXtyZXR1cm4hMX1pc0RlZmF1bHREZWNvZGUoZSx0KXtyZXR1cm4gQ29sb3JTcGFjZS5pc0RlZmF1bHREZWNvZGUoZSx0aGlzLm51bUNvbXBzKX1maWxsUmdiKGUsdCxpLGEscyxyLG4sbyxnKXtjb25zdCBjPXQqaTtsZXQgQz1udWxsO2NvbnN0IGg9MTw8bixsPWkhPT1zfHx0IT09YTtpZih0aGlzLmlzUGFzc3Rocm91Z2gobikpQz1vO2Vsc2UgaWYoMT09PXRoaXMubnVtQ29tcHMmJmM+aCYmIkRldmljZUdyYXkiIT09dGhpcy5uYW1lJiYiRGV2aWNlUkdCIiE9PXRoaXMubmFtZSl7Y29uc3QgdD1uPD04P25ldyBVaW50OEFycmF5KGgpOm5ldyBVaW50MTZBcnJheShoKTtmb3IobGV0IGU9MDtlPGg7ZSsrKXRbZV09ZTtjb25zdCBpPW5ldyBVaW50OENsYW1wZWRBcnJheSgzKmgpO3RoaXMuZ2V0UmdiQnVmZmVyKHQsMCxoLGksMCxuLDApO2lmKGwpe0M9bmV3IFVpbnQ4QXJyYXkoMypjKTtsZXQgZT0wO2ZvcihsZXQgdD0wO3Q8YzsrK3Qpe2NvbnN0IGE9MypvW3RdO0NbZSsrXT1pW2FdO0NbZSsrXT1pW2ErMV07Q1tlKytdPWlbYSsyXX19ZWxzZXtsZXQgdD0wO2ZvcihsZXQgYT0wO2E8YzsrK2Epe2NvbnN0IHM9MypvW2FdO2VbdCsrXT1pW3NdO2VbdCsrXT1pW3MrMV07ZVt0KytdPWlbcysyXTt0Kz1nfX19ZWxzZSBpZihsKXtDPW5ldyBVaW50OENsYW1wZWRBcnJheSgzKmMpO3RoaXMuZ2V0UmdiQnVmZmVyKG8sMCxjLEMsMCxuLDApfWVsc2UgdGhpcy5nZXRSZ2JCdWZmZXIobywwLGEqcixlLDAsbixnKTtpZihDKWlmKGwpIWZ1bmN0aW9uIHJlc2l6ZVJnYkltYWdlKGUsdCxpLGEscyxyLG4pe249MSE9PW4/MDpuO2NvbnN0IG89aS9zLGc9YS9yO2xldCBjLEM9MDtjb25zdCBoPW5ldyBVaW50MTZBcnJheShzKSxsPTMqaTtmb3IobGV0IGU9MDtlPHM7ZSsrKWhbZV09MypNYXRoLmZsb29yKGUqbyk7Zm9yKGxldCBpPTA7aTxyO2krKyl7Y29uc3QgYT1NYXRoLmZsb29yKGkqZykqbDtmb3IobGV0IGk9MDtpPHM7aSsrKXtjPWEraFtpXTt0W0MrK109ZVtjKytdO3RbQysrXT1lW2MrK107dFtDKytdPWVbYysrXTtDKz1ufX19KEMsZSx0LGksYSxzLGcpO2Vsc2V7bGV0IHQ9MCxpPTA7Zm9yKGxldCBzPTAsbj1hKnI7czxuO3MrKyl7ZVt0KytdPUNbaSsrXTtlW3QrK109Q1tpKytdO2VbdCsrXT1DW2krK107dCs9Z319fWdldCB1c2VzWmVyb1RvT25lUmFuZ2UoKXtyZXR1cm4gc2hhZG93KHRoaXMsInVzZXNaZXJvVG9PbmVSYW5nZSIsITApfXN0YXRpYyBfY2FjaGUoZSx0LGksYSl7aWYoIWkpdGhyb3cgbmV3IEVycm9yKCdDb2xvclNwYWNlLl9jYWNoZSAtIGV4cGVjdGVkICJsb2NhbENvbG9yU3BhY2VDYWNoZSIgYXJndW1lbnQuJyk7aWYoIWEpdGhyb3cgbmV3IEVycm9yKCdDb2xvclNwYWNlLl9jYWNoZSAtIGV4cGVjdGVkICJwYXJzZWRDb2xvclNwYWNlIiBhcmd1bWVudC4nKTtsZXQgcyxyO2lmKGUgaW5zdGFuY2VvZiBSZWYpe3I9ZTtlPXQuZmV0Y2goZSl9ZSBpbnN0YW5jZW9mIE5hbWUmJihzPWUubmFtZSk7KHN8fHIpJiZpLnNldChzLHIsYSl9c3RhdGljIGdldENhY2hlZChlLHQsaSl7aWYoIWkpdGhyb3cgbmV3IEVycm9yKCdDb2xvclNwYWNlLmdldENhY2hlZCAtIGV4cGVjdGVkICJsb2NhbENvbG9yU3BhY2VDYWNoZSIgYXJndW1lbnQuJyk7aWYoZSBpbnN0YW5jZW9mIFJlZil7Y29uc3QgYT1pLmdldEJ5UmVmKGUpO2lmKGEpcmV0dXJuIGE7dHJ5e2U9dC5mZXRjaChlKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZX19aWYoZSBpbnN0YW5jZW9mIE5hbWUpe2NvbnN0IHQ9aS5nZXRCeU5hbWUoZS5uYW1lKTtpZih0KXJldHVybiB0fXJldHVybiBudWxsfXN0YXRpYyBhc3luYyBwYXJzZUFzeW5jKHtjczplLHhyZWY6dCxyZXNvdXJjZXM6aT1udWxsLHBkZkZ1bmN0aW9uRmFjdG9yeTphLGxvY2FsQ29sb3JTcGFjZUNhY2hlOnN9KXtjb25zdCByPXRoaXMuX3BhcnNlKGUsdCxpLGEpO3RoaXMuX2NhY2hlKGUsdCxzLHIpO3JldHVybiByfXN0YXRpYyBwYXJzZSh7Y3M6ZSx4cmVmOnQscmVzb3VyY2VzOmk9bnVsbCxwZGZGdW5jdGlvbkZhY3Rvcnk6YSxsb2NhbENvbG9yU3BhY2VDYWNoZTpzfSl7Y29uc3Qgcj10aGlzLmdldENhY2hlZChlLHQscyk7aWYocilyZXR1cm4gcjtjb25zdCBuPXRoaXMuX3BhcnNlKGUsdCxpLGEpO3RoaXMuX2NhY2hlKGUsdCxzLG4pO3JldHVybiBufXN0YXRpYyBfcGFyc2UoZSx0LGk9bnVsbCxhKXtpZigoZT10LmZldGNoSWZSZWYoZSkpaW5zdGFuY2VvZiBOYW1lKXN3aXRjaChlLm5hbWUpe2Nhc2UiRyI6Y2FzZSJEZXZpY2VHcmF5IjpyZXR1cm4gdGhpcy5zaW5nbGV0b25zLmdyYXk7Y2FzZSJSR0IiOmNhc2UiRGV2aWNlUkdCIjpyZXR1cm4gdGhpcy5zaW5nbGV0b25zLnJnYjtjYXNlIkNNWUsiOmNhc2UiRGV2aWNlQ01ZSyI6cmV0dXJuIHRoaXMuc2luZ2xldG9ucy5jbXlrO2Nhc2UiUGF0dGVybiI6cmV0dXJuIG5ldyBQYXR0ZXJuQ1MobnVsbCk7ZGVmYXVsdDppZihpIGluc3RhbmNlb2YgRGljdCl7Y29uc3Qgcz1pLmdldCgiQ29sb3JTcGFjZSIpO2lmKHMgaW5zdGFuY2VvZiBEaWN0KXtjb25zdCByPXMuZ2V0KGUubmFtZSk7aWYocil7aWYociBpbnN0YW5jZW9mIE5hbWUpcmV0dXJuIHRoaXMuX3BhcnNlKHIsdCxpLGEpO2U9cjticmVha319fXRocm93IG5ldyBGb3JtYXRFcnJvcihgVW5yZWNvZ25pemVkIENvbG9yU3BhY2U6ICR7ZS5uYW1lfWApfWlmKEFycmF5LmlzQXJyYXkoZSkpe2NvbnN0IHM9dC5mZXRjaElmUmVmKGVbMF0pLm5hbWU7bGV0IHIsbixvLGcsYyxDO3N3aXRjaChzKXtjYXNlIkciOmNhc2UiRGV2aWNlR3JheSI6cmV0dXJuIHRoaXMuc2luZ2xldG9ucy5ncmF5O2Nhc2UiUkdCIjpjYXNlIkRldmljZVJHQiI6cmV0dXJuIHRoaXMuc2luZ2xldG9ucy5yZ2I7Y2FzZSJDTVlLIjpjYXNlIkRldmljZUNNWUsiOnJldHVybiB0aGlzLnNpbmdsZXRvbnMuY215aztjYXNlIkNhbEdyYXkiOnI9dC5mZXRjaElmUmVmKGVbMV0pO2c9ci5nZXRBcnJheSgiV2hpdGVQb2ludCIpO2M9ci5nZXRBcnJheSgiQmxhY2tQb2ludCIpO0M9ci5nZXQoIkdhbW1hIik7cmV0dXJuIG5ldyBDYWxHcmF5Q1MoZyxjLEMpO2Nhc2UiQ2FsUkdCIjpyPXQuZmV0Y2hJZlJlZihlWzFdKTtnPXIuZ2V0QXJyYXkoIldoaXRlUG9pbnQiKTtjPXIuZ2V0QXJyYXkoIkJsYWNrUG9pbnQiKTtDPXIuZ2V0QXJyYXkoIkdhbW1hIik7Y29uc3QgaD1yLmdldEFycmF5KCJNYXRyaXgiKTtyZXR1cm4gbmV3IENhbFJHQkNTKGcsYyxDLGgpO2Nhc2UiSUNDQmFzZWQiOmNvbnN0IGw9dC5mZXRjaElmUmVmKGVbMV0pLmRpY3Q7bj1sLmdldCgiTiIpO2NvbnN0IFE9bC5nZXQoIkFsdGVybmF0ZSIpO2lmKFEpe2NvbnN0IGU9dGhpcy5fcGFyc2UoUSx0LGksYSk7aWYoZS5udW1Db21wcz09PW4pcmV0dXJuIGU7d2FybigiSUNDQmFzZWQgY29sb3Igc3BhY2U6IElnbm9yaW5nIGluY29ycmVjdCAvQWx0ZXJuYXRlIGVudHJ5LiIpfWlmKDE9PT1uKXJldHVybiB0aGlzLnNpbmdsZXRvbnMuZ3JheTtpZigzPT09bilyZXR1cm4gdGhpcy5zaW5nbGV0b25zLnJnYjtpZig0PT09bilyZXR1cm4gdGhpcy5zaW5nbGV0b25zLmNteWs7YnJlYWs7Y2FzZSJQYXR0ZXJuIjpvPWVbMV18fG51bGw7byYmKG89dGhpcy5fcGFyc2Uobyx0LGksYSkpO3JldHVybiBuZXcgUGF0dGVybkNTKG8pO2Nhc2UiSSI6Y2FzZSJJbmRleGVkIjpvPXRoaXMuX3BhcnNlKGVbMV0sdCxpLGEpO2NvbnN0IEU9dC5mZXRjaElmUmVmKGVbMl0pKzEsdT10LmZldGNoSWZSZWYoZVszXSk7cmV0dXJuIG5ldyBJbmRleGVkQ1MobyxFLHUpO2Nhc2UiU2VwYXJhdGlvbiI6Y2FzZSJEZXZpY2VOIjpjb25zdCBkPXQuZmV0Y2hJZlJlZihlWzFdKTtuPUFycmF5LmlzQXJyYXkoZCk/ZC5sZW5ndGg6MTtvPXRoaXMuX3BhcnNlKGVbMl0sdCxpLGEpO2NvbnN0IGY9YS5jcmVhdGUoZVszXSk7cmV0dXJuIG5ldyBBbHRlcm5hdGVDUyhuLG8sZik7Y2FzZSJMYWIiOnI9dC5mZXRjaElmUmVmKGVbMV0pO2c9ci5nZXRBcnJheSgiV2hpdGVQb2ludCIpO2M9ci5nZXRBcnJheSgiQmxhY2tQb2ludCIpO2NvbnN0IHA9ci5nZXRBcnJheSgiUmFuZ2UiKTtyZXR1cm4gbmV3IExhYkNTKGcsYyxwKTtkZWZhdWx0OnRocm93IG5ldyBGb3JtYXRFcnJvcihgVW5pbXBsZW1lbnRlZCBDb2xvclNwYWNlIG9iamVjdDogJHtzfWApfX10aHJvdyBuZXcgRm9ybWF0RXJyb3IoYFVucmVjb2duaXplZCBDb2xvclNwYWNlIG9iamVjdDogJHtlfWApfXN0YXRpYyBpc0RlZmF1bHREZWNvZGUoZSx0KXtpZighQXJyYXkuaXNBcnJheShlKSlyZXR1cm4hMDtpZigyKnQhPT1lLmxlbmd0aCl7d2FybigiVGhlIGRlY29kZSBtYXAgaXMgbm90IHRoZSBjb3JyZWN0IGxlbmd0aCIpO3JldHVybiEwfWZvcihsZXQgdD0wLGk9ZS5sZW5ndGg7dDxpO3QrPTIpaWYoMCE9PWVbdF18fDEhPT1lW3QrMV0pcmV0dXJuITE7cmV0dXJuITB9c3RhdGljIGdldCBzaW5nbGV0b25zKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJzaW5nbGV0b25zIix7Z2V0IGdyYXkoKXtyZXR1cm4gc2hhZG93KHRoaXMsImdyYXkiLG5ldyBEZXZpY2VHcmF5Q1MpfSxnZXQgcmdiKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJyZ2IiLG5ldyBEZXZpY2VSZ2JDUyl9LGdldCBjbXlrKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJjbXlrIixuZXcgRGV2aWNlQ215a0NTKX19KX19Y2xhc3MgQWx0ZXJuYXRlQ1MgZXh0ZW5kcyBDb2xvclNwYWNle2NvbnN0cnVjdG9yKGUsdCxpKXtzdXBlcigiQWx0ZXJuYXRlIixlKTt0aGlzLmJhc2U9dDt0aGlzLnRpbnRGbj1pO3RoaXMudG1wQnVmPW5ldyBGbG9hdDMyQXJyYXkodC5udW1Db21wcyl9Z2V0UmdiSXRlbShlLHQsaSxhKXtjb25zdCBzPXRoaXMudG1wQnVmO3RoaXMudGludEZuKGUsdCxzLDApO3RoaXMuYmFzZS5nZXRSZ2JJdGVtKHMsMCxpLGEpfWdldFJnYkJ1ZmZlcihlLHQsaSxhLHMscixuKXtjb25zdCBvPXRoaXMudGludEZuLGc9dGhpcy5iYXNlLGM9MS8oKDE8PHIpLTEpLEM9Zy5udW1Db21wcyxoPWcudXNlc1plcm9Ub09uZVJhbmdlLGw9KGcuaXNQYXNzdGhyb3VnaCg4KXx8IWgpJiYwPT09bjtsZXQgUT1sP3M6MDtjb25zdCBFPWw/YTpuZXcgVWludDhDbGFtcGVkQXJyYXkoQyppKSx1PXRoaXMubnVtQ29tcHMsZD1uZXcgRmxvYXQzMkFycmF5KHUpLGY9bmV3IEZsb2F0MzJBcnJheShDKTtsZXQgcCxtO2ZvcihwPTA7cDxpO3ArKyl7Zm9yKG09MDttPHU7bSsrKWRbbV09ZVt0KytdKmM7byhkLDAsZiwwKTtpZihoKWZvcihtPTA7bTxDO20rKylFW1ErK109MjU1KmZbbV07ZWxzZXtnLmdldFJnYkl0ZW0oZiwwLEUsUSk7USs9Q319bHx8Zy5nZXRSZ2JCdWZmZXIoRSwwLGksYSxzLDgsbil9Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7cmV0dXJuIHRoaXMuYmFzZS5nZXRPdXRwdXRMZW5ndGgoZSp0aGlzLmJhc2UubnVtQ29tcHMvdGhpcy5udW1Db21wcyx0KX19Y2xhc3MgUGF0dGVybkNTIGV4dGVuZHMgQ29sb3JTcGFjZXtjb25zdHJ1Y3RvcihlKXtzdXBlcigiUGF0dGVybiIsbnVsbCk7dGhpcy5iYXNlPWV9aXNEZWZhdWx0RGVjb2RlKGUsdCl7dW5yZWFjaGFibGUoIlNob3VsZCBub3QgY2FsbCBQYXR0ZXJuQ1MuaXNEZWZhdWx0RGVjb2RlIil9fWNsYXNzIEluZGV4ZWRDUyBleHRlbmRzIENvbG9yU3BhY2V7Y29uc3RydWN0b3IoZSx0LGkpe3N1cGVyKCJJbmRleGVkIiwxKTt0aGlzLmJhc2U9ZTt0aGlzLmhpZ2hWYWw9dDtjb25zdCBhPWUubnVtQ29tcHMqdDt0aGlzLmxvb2t1cD1uZXcgVWludDhBcnJheShhKTtpZihpIGluc3RhbmNlb2YgQmFzZVN0cmVhbSl7Y29uc3QgZT1pLmdldEJ5dGVzKGEpO3RoaXMubG9va3VwLnNldChlKX1lbHNle2lmKCJzdHJpbmciIT10eXBlb2YgaSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEluZGV4ZWRDUyAtIHVucmVjb2duaXplZCBsb29rdXAgdGFibGU6ICR7aX1gKTtmb3IobGV0IGU9MDtlPGE7KytlKXRoaXMubG9va3VwW2VdPTI1NSZpLmNoYXJDb2RlQXQoZSl9fWdldFJnYkl0ZW0oZSx0LGksYSl7Y29uc3Qgcz10aGlzLmJhc2UubnVtQ29tcHMscj1lW3RdKnM7dGhpcy5iYXNlLmdldFJnYkJ1ZmZlcih0aGlzLmxvb2t1cCxyLDEsaSxhLDgsMCl9Z2V0UmdiQnVmZmVyKGUsdCxpLGEscyxyLG4pe2NvbnN0IG89dGhpcy5iYXNlLGc9by5udW1Db21wcyxjPW8uZ2V0T3V0cHV0TGVuZ3RoKGcsbiksQz10aGlzLmxvb2t1cDtmb3IobGV0IHI9MDtyPGk7KytyKXtjb25zdCBpPWVbdCsrXSpnO28uZ2V0UmdiQnVmZmVyKEMsaSwxLGEscyw4LG4pO3MrPWN9fWdldE91dHB1dExlbmd0aChlLHQpe3JldHVybiB0aGlzLmJhc2UuZ2V0T3V0cHV0TGVuZ3RoKGUqdGhpcy5iYXNlLm51bUNvbXBzLHQpfWlzRGVmYXVsdERlY29kZShlLHQpe2lmKCFBcnJheS5pc0FycmF5KGUpKXJldHVybiEwO2lmKDIhPT1lLmxlbmd0aCl7d2FybigiRGVjb2RlIG1hcCBsZW5ndGggaXMgbm90IGNvcnJlY3QiKTtyZXR1cm4hMH1pZighTnVtYmVyLmlzSW50ZWdlcih0KXx8dDwxKXt3YXJuKCJCaXRzIHBlciBjb21wb25lbnQgaXMgbm90IGNvcnJlY3QiKTtyZXR1cm4hMH1yZXR1cm4gMD09PWVbMF0mJmVbMV09PT0oMTw8dCktMX19Y2xhc3MgRGV2aWNlR3JheUNTIGV4dGVuZHMgQ29sb3JTcGFjZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKCJEZXZpY2VHcmF5IiwxKX1nZXRSZ2JJdGVtKGUsdCxpLGEpe2NvbnN0IHM9MjU1KmVbdF07aVthXT1pW2ErMV09aVthKzJdPXN9Z2V0UmdiQnVmZmVyKGUsdCxpLGEscyxyLG4pe2NvbnN0IG89MjU1LygoMTw8ciktMSk7bGV0IGc9dCxjPXM7Zm9yKGxldCB0PTA7dDxpOysrdCl7Y29uc3QgdD1vKmVbZysrXTthW2MrK109dDthW2MrK109dDthW2MrK109dDtjKz1ufX1nZXRPdXRwdXRMZW5ndGgoZSx0KXtyZXR1cm4gZSooMyt0KX19Y2xhc3MgRGV2aWNlUmdiQ1MgZXh0ZW5kcyBDb2xvclNwYWNle2NvbnN0cnVjdG9yKCl7c3VwZXIoIkRldmljZVJHQiIsMyl9Z2V0UmdiSXRlbShlLHQsaSxhKXtpW2FdPTI1NSplW3RdO2lbYSsxXT0yNTUqZVt0KzFdO2lbYSsyXT0yNTUqZVt0KzJdfWdldFJnYkJ1ZmZlcihlLHQsaSxhLHMscixuKXtpZig4PT09ciYmMD09PW4pe2Euc2V0KGUuc3ViYXJyYXkodCx0KzMqaSkscyk7cmV0dXJufWNvbnN0IG89MjU1LygoMTw8ciktMSk7bGV0IGc9dCxjPXM7Zm9yKGxldCB0PTA7dDxpOysrdCl7YVtjKytdPW8qZVtnKytdO2FbYysrXT1vKmVbZysrXTthW2MrK109byplW2crK107Yys9bn19Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7cmV0dXJuIGUqKDMrdCkvM3wwfWlzUGFzc3Rocm91Z2goZSl7cmV0dXJuIDg9PT1lfX1jbGFzcyBEZXZpY2VDbXlrQ1MgZXh0ZW5kcyBDb2xvclNwYWNle2NvbnN0cnVjdG9yKCl7c3VwZXIoIkRldmljZUNNWUsiLDQpfSN0KGUsdCxpLGEscyl7Y29uc3Qgcj1lW3RdKmksbj1lW3QrMV0qaSxvPWVbdCsyXSppLGc9ZVt0KzNdKmk7YVtzXT0yNTUrciooLTQuMzg3MzMyMzg0NjA5OTg4KnIrNTQuNDg2MTUxOTQxODkxNzYqbisxOC44MjI5MDUwMjE2NTMwMipvKzIxMi4yNTY2MjQ1MTYzOTU4NSpnLTI4NS4yMzMxMDI2MTM3MDA0KStuKigxLjcxNDk3NjM0NzczNjIxMzQqbi01LjYwOTY3MzY5MDQwNDczMTUqbystMTcuODczODcwODYxNDE1NDQ0KmctNS40OTcwMDY0MjcxOTYzNjYpK28qKC0yLjUyMTczNDAxMzE2ODMwMzMqby0yMS4yNDg5MjMzMzczNTMwNzMqZysxNy41MTE5MjcwODQxODEzKStnKigtMjEuODYxMjIxNDc0NjM2MDUqZy0xODkuNDgxODA4MzU5MjI3NDcpO2FbcysxXT0yNTUrciooOC44NDEwNDE0MjIwMzYxNDkqcis2MC4xMTgwMjcwNDU1OTczNjYqbis2Ljg3MTQyNTU5MjA0OTAwNypvKzMxLjE1OTEwMDEzMDA1NTkyMipnLTc5LjI5NzA4NDQ4MTY1NDgpK24qKC0xNS4zMTAzNjEzMDY5Njc4MTcqbisxNy41NzUyNTEyNjExMDk0ODIqbysxMzEuMzUyNTA5MTI0OTM5NzYqZy0xOTAuOTQ1MzMwMjU4ODk1MSkrbyooNC40NDQzMzkxMDI4NTI3Mzkqbys5Ljg2MzI4NjE0OTM0MDUqZy0yNC44Njc0MTU4MjU1NTg3OCkrZyooLTIwLjczNzMyNTQ3MTE4MTAzNCpnLTE4Ny44MDQ1MzcwOTcxOTU3OCk7YVtzKzJdPTI1NStyKiguODg0MjUyMjQzMDAwMzI5NipyKzguMDc4Njc3NTAzMTEyOTI4Km4rMzAuODk5NzgzMDk3MDM3Mjkqby0uMjM4ODMyMzg2ODkxNzg5MzQqZy0xNC4xODM1NzY3OTk2NzMyODYpK24qKDEwLjQ5NTkzMjczNDMyMDcyKm4rNjMuMDIzNzg0OTQ3NTQwNTIqbys1MC42MDY5NTc2NTYzNjA3MzQqZy0xMTIuMjM4ODQyNTM3MTkyNDgpK28qKC4wMzI5NjA0MTExNDg3MzIxNypvKzExNS42MDM4NDQ0OTY0NjY0MSpnLTE5My41ODIwOTM1Njg2MTUwNSkrZyooLTIyLjMzODE2ODA3MzA5ODg2KmctMTgwLjEyNjEzOTc0NzA4MzY3KX1nZXRSZ2JJdGVtKGUsdCxpLGEpe3RoaXMuI3QoZSx0LDEsaSxhKX1nZXRSZ2JCdWZmZXIoZSx0LGksYSxzLHIsbil7Y29uc3Qgbz0xLygoMTw8ciktMSk7Zm9yKGxldCByPTA7cjxpO3IrKyl7dGhpcy4jdChlLHQsbyxhLHMpO3QrPTQ7cys9MytufX1nZXRPdXRwdXRMZW5ndGgoZSx0KXtyZXR1cm4gZS80KigzK3QpfDB9fWNsYXNzIENhbEdyYXlDUyBleHRlbmRzIENvbG9yU3BhY2V7Y29uc3RydWN0b3IoZSx0LGkpe3N1cGVyKCJDYWxHcmF5IiwxKTtpZighZSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIldoaXRlUG9pbnQgbWlzc2luZyAtIHJlcXVpcmVkIGZvciBjb2xvciBzcGFjZSBDYWxHcmF5Iik7W3RoaXMuWFcsdGhpcy5ZVyx0aGlzLlpXXT1lO1t0aGlzLlhCLHRoaXMuWUIsdGhpcy5aQl09dHx8WzAsMCwwXTt0aGlzLkc9aXx8MTtpZih0aGlzLlhXPDB8fHRoaXMuWlc8MHx8MSE9PXRoaXMuWVcpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbnZhbGlkIFdoaXRlUG9pbnQgY29tcG9uZW50cyBmb3IgJHt0aGlzLm5hbWV9LCBubyBmYWxsYmFjayBhdmFpbGFibGVgKTtpZih0aGlzLlhCPDB8fHRoaXMuWUI8MHx8dGhpcy5aQjwwKXtpbmZvKGBJbnZhbGlkIEJsYWNrUG9pbnQgZm9yICR7dGhpcy5uYW1lfSwgZmFsbGluZyBiYWNrIHRvIGRlZmF1bHQuYCk7dGhpcy5YQj10aGlzLllCPXRoaXMuWkI9MH0wPT09dGhpcy5YQiYmMD09PXRoaXMuWUImJjA9PT10aGlzLlpCfHx3YXJuKGAke3RoaXMubmFtZX0sIEJsYWNrUG9pbnQ6IFhCOiAke3RoaXMuWEJ9LCBZQjogJHt0aGlzLllCfSwgWkI6ICR7dGhpcy5aQn0sIG9ubHkgZGVmYXVsdCB2YWx1ZXMgYXJlIHN1cHBvcnRlZC5gKTtpZih0aGlzLkc8MSl7aW5mbyhgSW52YWxpZCBHYW1tYTogJHt0aGlzLkd9IGZvciAke3RoaXMubmFtZX0sIGZhbGxpbmcgYmFjayB0byBkZWZhdWx0LmApO3RoaXMuRz0xfX0jdChlLHQsaSxhLHMpe2NvbnN0IHI9KGVbdF0qcykqKnRoaXMuRyxuPXRoaXMuWVcqcixvPU1hdGgubWF4KDI5NS44Km4qKi4zMzMzMzMzMzMzMzMzMzMzLTQwLjgsMCk7aVthXT1vO2lbYSsxXT1vO2lbYSsyXT1vfWdldFJnYkl0ZW0oZSx0LGksYSl7dGhpcy4jdChlLHQsaSxhLDEpfWdldFJnYkJ1ZmZlcihlLHQsaSxhLHMscixuKXtjb25zdCBvPTEvKCgxPDxyKS0xKTtmb3IobGV0IHI9MDtyPGk7KytyKXt0aGlzLiN0KGUsdCxhLHMsbyk7dCs9MTtzKz0zK259fWdldE91dHB1dExlbmd0aChlLHQpe3JldHVybiBlKigzK3QpfX1jbGFzcyBDYWxSR0JDUyBleHRlbmRzIENvbG9yU3BhY2V7c3RhdGljI2k9bmV3IEZsb2F0MzJBcnJheShbLjg5NTEsLjI2NjQsLS4xNjE0LC0uNzUwMiwxLjcxMzUsLjAzNjcsLjAzODksLS4wNjg1LDEuMDI5Nl0pO3N0YXRpYyNhPW5ldyBGbG9hdDMyQXJyYXkoWy45ODY5OTI5LC0uMTQ3MDU0MywuMTU5OTYyNywuNDMyMzA1MywuNTE4MzYwMywuMDQ5MjkxMiwtLjAwODUyODcsLjA0MDA0MjgsLjk2ODQ4NjddKTtzdGF0aWMjcz1uZXcgRmxvYXQzMkFycmF5KFszLjI0MDQ1NDIsLTEuNTM3MTM4NSwtLjQ5ODUzMTQsLS45NjkyNjYsMS44NzYwMTA4LC4wNDE1NTYsLjA1NTY0MzQsLS4yMDQwMjU5LDEuMDU3MjI1Ml0pO3N0YXRpYyNyPW5ldyBGbG9hdDMyQXJyYXkoWzEsMSwxXSk7c3RhdGljI249bmV3IEZsb2F0MzJBcnJheSgzKTtzdGF0aWMjbz1uZXcgRmxvYXQzMkFycmF5KDMpO3N0YXRpYyNnPW5ldyBGbG9hdDMyQXJyYXkoMyk7c3RhdGljI0k9KDI0LzExNikqKjMvODtjb25zdHJ1Y3RvcihlLHQsaSxhKXtzdXBlcigiQ2FsUkdCIiwzKTtpZighZSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIldoaXRlUG9pbnQgbWlzc2luZyAtIHJlcXVpcmVkIGZvciBjb2xvciBzcGFjZSBDYWxSR0IiKTtjb25zdFtzLHIsbl09dGhpcy53aGl0ZVBvaW50PWUsW28sZyxjXT10aGlzLmJsYWNrUG9pbnQ9dHx8bmV3IEZsb2F0MzJBcnJheSgzKTtbdGhpcy5HUix0aGlzLkdHLHRoaXMuR0JdPWl8fG5ldyBGbG9hdDMyQXJyYXkoWzEsMSwxXSk7W3RoaXMuTVhBLHRoaXMuTVlBLHRoaXMuTVpBLHRoaXMuTVhCLHRoaXMuTVlCLHRoaXMuTVpCLHRoaXMuTVhDLHRoaXMuTVlDLHRoaXMuTVpDXT1hfHxuZXcgRmxvYXQzMkFycmF5KFsxLDAsMCwwLDEsMCwwLDAsMV0pO2lmKHM8MHx8bjwwfHwxIT09cil0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEludmFsaWQgV2hpdGVQb2ludCBjb21wb25lbnRzIGZvciAke3RoaXMubmFtZX0sIG5vIGZhbGxiYWNrIGF2YWlsYWJsZWApO2lmKG88MHx8ZzwwfHxjPDApe2luZm8oYEludmFsaWQgQmxhY2tQb2ludCBmb3IgJHt0aGlzLm5hbWV9IFske299LCAke2d9LCAke2N9XSwgZmFsbGluZyBiYWNrIHRvIGRlZmF1bHQuYCk7dGhpcy5ibGFja1BvaW50PW5ldyBGbG9hdDMyQXJyYXkoMyl9aWYodGhpcy5HUjwwfHx0aGlzLkdHPDB8fHRoaXMuR0I8MCl7aW5mbyhgSW52YWxpZCBHYW1tYSBbJHt0aGlzLkdSfSwgJHt0aGlzLkdHfSwgJHt0aGlzLkdCfV0gZm9yICR7dGhpcy5uYW1lfSwgZmFsbGluZyBiYWNrIHRvIGRlZmF1bHQuYCk7dGhpcy5HUj10aGlzLkdHPXRoaXMuR0I9MX19I2MoZSx0LGkpe2lbMF09ZVswXSp0WzBdK2VbMV0qdFsxXStlWzJdKnRbMl07aVsxXT1lWzNdKnRbMF0rZVs0XSp0WzFdK2VbNV0qdFsyXTtpWzJdPWVbNl0qdFswXStlWzddKnRbMV0rZVs4XSp0WzJdfSNDKGUsdCxpKXtpWzBdPTEqdFswXS9lWzBdO2lbMV09MSp0WzFdL2VbMV07aVsyXT0xKnRbMl0vZVsyXX0jaChlLHQsaSl7aVswXT0uOTUwNDcqdFswXS9lWzBdO2lbMV09MSp0WzFdL2VbMV07aVsyXT0xLjA4ODgzKnRbMl0vZVsyXX0jbChlKXtyZXR1cm4gZTw9LjAwMzEzMDg/dGhpcy4jQigwLDEsMTIuOTIqZSk6ZT49Ljk5NTU0NTI1PzE6dGhpcy4jQigwLDEsMS4wNTUqZSoqKDEvMi40KS0uMDU1KX0jQihlLHQsaSl7cmV0dXJuIE1hdGgubWF4KGUsTWF0aC5taW4odCxpKSl9I1EoZSl7cmV0dXJuIGU8MD8tdGhpcy4jUSgtZSk6ZT44PygoZSsxNikvMTE2KSoqMzplKkNhbFJHQkNTLiNJfSNFKGUsdCxpKXtpZigwPT09ZVswXSYmMD09PWVbMV0mJjA9PT1lWzJdKXtpWzBdPXRbMF07aVsxXT10WzFdO2lbMl09dFsyXTtyZXR1cm59Y29uc3QgYT10aGlzLiNRKDApLHM9KDEtYSkvKDEtdGhpcy4jUShlWzBdKSkscj0xLXMsbj0oMS1hKS8oMS10aGlzLiNRKGVbMV0pKSxvPTEtbixnPSgxLWEpLygxLXRoaXMuI1EoZVsyXSkpLGM9MS1nO2lbMF09dFswXSpzK3I7aVsxXT10WzFdKm4rbztpWzJdPXRbMl0qZytjfSN1KGUsdCxpKXtpZigxPT09ZVswXSYmMT09PWVbMl0pe2lbMF09dFswXTtpWzFdPXRbMV07aVsyXT10WzJdO3JldHVybn1jb25zdCBhPWk7dGhpcy4jYyhDYWxSR0JDUy4jaSx0LGEpO2NvbnN0IHM9Q2FsUkdCQ1MuI247dGhpcy4jQyhlLGEscyk7dGhpcy4jYyhDYWxSR0JDUy4jYSxzLGkpfSNkKGUsdCxpKXtjb25zdCBhPWk7dGhpcy4jYyhDYWxSR0JDUy4jaSx0LGEpO2NvbnN0IHM9Q2FsUkdCQ1MuI247dGhpcy4jaChlLGEscyk7dGhpcy4jYyhDYWxSR0JDUy4jYSxzLGkpfSN0KGUsdCxpLGEscyl7Y29uc3Qgcj10aGlzLiNCKDAsMSxlW3RdKnMpLG49dGhpcy4jQigwLDEsZVt0KzFdKnMpLG89dGhpcy4jQigwLDEsZVt0KzJdKnMpLGc9MT09PXI/MTpyKip0aGlzLkdSLGM9MT09PW4/MTpuKip0aGlzLkdHLEM9MT09PW8/MTpvKip0aGlzLkdCLGg9dGhpcy5NWEEqZyt0aGlzLk1YQipjK3RoaXMuTVhDKkMsbD10aGlzLk1ZQSpnK3RoaXMuTVlCKmMrdGhpcy5NWUMqQyxRPXRoaXMuTVpBKmcrdGhpcy5NWkIqYyt0aGlzLk1aQypDLEU9Q2FsUkdCQ1MuI287RVswXT1oO0VbMV09bDtFWzJdPVE7Y29uc3QgdT1DYWxSR0JDUy4jZzt0aGlzLiN1KHRoaXMud2hpdGVQb2ludCxFLHUpO2NvbnN0IGQ9Q2FsUkdCQ1MuI287dGhpcy4jRSh0aGlzLmJsYWNrUG9pbnQsdSxkKTtjb25zdCBmPUNhbFJHQkNTLiNnO3RoaXMuI2QoQ2FsUkdCQ1MuI3IsZCxmKTtjb25zdCBwPUNhbFJHQkNTLiNvO3RoaXMuI2MoQ2FsUkdCQ1MuI3MsZixwKTtpW2FdPTI1NSp0aGlzLiNsKHBbMF0pO2lbYSsxXT0yNTUqdGhpcy4jbChwWzFdKTtpW2ErMl09MjU1KnRoaXMuI2wocFsyXSl9Z2V0UmdiSXRlbShlLHQsaSxhKXt0aGlzLiN0KGUsdCxpLGEsMSl9Z2V0UmdiQnVmZmVyKGUsdCxpLGEscyxyLG4pe2NvbnN0IG89MS8oKDE8PHIpLTEpO2ZvcihsZXQgcj0wO3I8aTsrK3Ipe3RoaXMuI3QoZSx0LGEscyxvKTt0Kz0zO3MrPTMrbn19Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7cmV0dXJuIGUqKDMrdCkvM3wwfX1jbGFzcyBMYWJDUyBleHRlbmRzIENvbG9yU3BhY2V7Y29uc3RydWN0b3IoZSx0LGkpe3N1cGVyKCJMYWIiLDMpO2lmKCFlKXRocm93IG5ldyBGb3JtYXRFcnJvcigiV2hpdGVQb2ludCBtaXNzaW5nIC0gcmVxdWlyZWQgZm9yIGNvbG9yIHNwYWNlIExhYiIpO1t0aGlzLlhXLHRoaXMuWVcsdGhpcy5aV109ZTtbdGhpcy5hbWluLHRoaXMuYW1heCx0aGlzLmJtaW4sdGhpcy5ibWF4XT1pfHxbLTEwMCwxMDAsLTEwMCwxMDBdO1t0aGlzLlhCLHRoaXMuWUIsdGhpcy5aQl09dHx8WzAsMCwwXTtpZih0aGlzLlhXPDB8fHRoaXMuWlc8MHx8MSE9PXRoaXMuWVcpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIFdoaXRlUG9pbnQgY29tcG9uZW50cywgbm8gZmFsbGJhY2sgYXZhaWxhYmxlIik7aWYodGhpcy5YQjwwfHx0aGlzLllCPDB8fHRoaXMuWkI8MCl7aW5mbygiSW52YWxpZCBCbGFja1BvaW50LCBmYWxsaW5nIGJhY2sgdG8gZGVmYXVsdCIpO3RoaXMuWEI9dGhpcy5ZQj10aGlzLlpCPTB9aWYodGhpcy5hbWluPnRoaXMuYW1heHx8dGhpcy5ibWluPnRoaXMuYm1heCl7aW5mbygiSW52YWxpZCBSYW5nZSwgZmFsbGluZyBiYWNrIHRvIGRlZmF1bHRzIik7dGhpcy5hbWluPS0xMDA7dGhpcy5hbWF4PTEwMDt0aGlzLmJtaW49LTEwMDt0aGlzLmJtYXg9MTAwfX0jZihlKXtyZXR1cm4gZT49Ni8yOT9lKiozOjEwOC84NDEqKGUtNC8yOSl9I3AoZSx0LGksYSl7cmV0dXJuIGkrZSooYS1pKS90fSN0KGUsdCxpLGEscyl7bGV0IHI9ZVt0XSxuPWVbdCsxXSxvPWVbdCsyXTtpZighMSE9PWkpe3I9dGhpcy4jcChyLGksMCwxMDApO249dGhpcy4jcChuLGksdGhpcy5hbWluLHRoaXMuYW1heCk7bz10aGlzLiNwKG8saSx0aGlzLmJtaW4sdGhpcy5ibWF4KX1uPnRoaXMuYW1heD9uPXRoaXMuYW1heDpuPHRoaXMuYW1pbiYmKG49dGhpcy5hbWluKTtvPnRoaXMuYm1heD9vPXRoaXMuYm1heDpvPHRoaXMuYm1pbiYmKG89dGhpcy5ibWluKTtjb25zdCBnPShyKzE2KS8xMTYsYz1nK24vNTAwLEM9Zy1vLzIwMCxoPXRoaXMuWFcqdGhpcy4jZihjKSxsPXRoaXMuWVcqdGhpcy4jZihnKSxRPXRoaXMuWlcqdGhpcy4jZihDKTtsZXQgRSx1LGQ7aWYodGhpcy5aVzwxKXtFPTMuMTMzOSpoKy0xLjYxNypsKy0uNDkwNipRO3U9LS45Nzg1KmgrMS45MTYqbCsuMDMzMypRO2Q9LjA3MipoKy0uMjI5KmwrMS40MDU3KlF9ZWxzZXtFPTMuMjQwNipoKy0xLjUzNzIqbCstLjQ5ODYqUTt1PS0uOTY4OSpoKzEuODc1OCpsKy4wNDE1KlE7ZD0uMDU1NypoKy0uMjA0KmwrMS4wNTcqUX1hW3NdPTI1NSpNYXRoLnNxcnQoRSk7YVtzKzFdPTI1NSpNYXRoLnNxcnQodSk7YVtzKzJdPTI1NSpNYXRoLnNxcnQoZCl9Z2V0UmdiSXRlbShlLHQsaSxhKXt0aGlzLiN0KGUsdCwhMSxpLGEpfWdldFJnYkJ1ZmZlcihlLHQsaSxhLHMscixuKXtjb25zdCBvPSgxPDxyKS0xO2ZvcihsZXQgcj0wO3I8aTtyKyspe3RoaXMuI3QoZSx0LG8sYSxzKTt0Kz0zO3MrPTMrbn19Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7cmV0dXJuIGUqKDMrdCkvM3wwfWlzRGVmYXVsdERlY29kZShlLHQpe3JldHVybiEwfWdldCB1c2VzWmVyb1RvT25lUmFuZ2UoKXtyZXR1cm4gc2hhZG93KHRoaXMsInVzZXNaZXJvVG9PbmVSYW5nZSIsITEpfX1mdW5jdGlvbiBoZXhUb0ludChlLHQpe2xldCBpPTA7Zm9yKGxldCBhPTA7YTw9dDthKyspaT1pPDw4fGVbYV07cmV0dXJuIGk+Pj4wfWZ1bmN0aW9uIGhleFRvU3RyKGUsdCl7cmV0dXJuIDE9PT10P1N0cmluZy5mcm9tQ2hhckNvZGUoZVswXSxlWzFdKTozPT09dD9TdHJpbmcuZnJvbUNoYXJDb2RlKGVbMF0sZVsxXSxlWzJdLGVbM10pOlN0cmluZy5mcm9tQ2hhckNvZGUoLi4uZS5zdWJhcnJheSgwLHQrMSkpfWZ1bmN0aW9uIGFkZEhleChlLHQsaSl7bGV0IGE9MDtmb3IobGV0IHM9aTtzPj0wO3MtLSl7YSs9ZVtzXSt0W3NdO2Vbc109MjU1JmE7YT4+PTh9fWZ1bmN0aW9uIGluY0hleChlLHQpe2xldCBpPTE7Zm9yKGxldCBhPXQ7YT49MCYmaT4wO2EtLSl7aSs9ZVthXTtlW2FdPTI1NSZpO2k+Pj04fX1jb25zdCBrdD0xNjtjbGFzcyBCaW5hcnlDTWFwU3RyZWFte2NvbnN0cnVjdG9yKGUpe3RoaXMuYnVmZmVyPWU7dGhpcy5wb3M9MDt0aGlzLmVuZD1lLmxlbmd0aDt0aGlzLnRtcEJ1Zj1uZXcgVWludDhBcnJheSgxOSl9cmVhZEJ5dGUoKXtyZXR1cm4gdGhpcy5wb3M+PXRoaXMuZW5kPy0xOnRoaXMuYnVmZmVyW3RoaXMucG9zKytdfXJlYWROdW1iZXIoKXtsZXQgZSx0PTA7ZG97Y29uc3QgaT10aGlzLnJlYWRCeXRlKCk7aWYoaTwwKXRocm93IG5ldyBGb3JtYXRFcnJvcigidW5leHBlY3RlZCBFT0YgaW4gYmNtYXAiKTtlPSEoMTI4JmkpO3Q9dDw8N3wxMjcmaX13aGlsZSghZSk7cmV0dXJuIHR9cmVhZFNpZ25lZCgpe2NvbnN0IGU9dGhpcy5yZWFkTnVtYmVyKCk7cmV0dXJuIDEmZT9+KGU+Pj4xKTplPj4+MX1yZWFkSGV4KGUsdCl7ZS5zZXQodGhpcy5idWZmZXIuc3ViYXJyYXkodGhpcy5wb3MsdGhpcy5wb3MrdCsxKSk7dGhpcy5wb3MrPXQrMX1yZWFkSGV4TnVtYmVyKGUsdCl7bGV0IGk7Y29uc3QgYT10aGlzLnRtcEJ1ZjtsZXQgcz0wO2Rve2NvbnN0IGU9dGhpcy5yZWFkQnl0ZSgpO2lmKGU8MCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoInVuZXhwZWN0ZWQgRU9GIGluIGJjbWFwIik7aT0hKDEyOCZlKTthW3MrK109MTI3JmV9d2hpbGUoIWkpO2xldCByPXQsbj0wLG89MDtmb3IoO3I+PTA7KXtmb3IoO288OCYmYS5sZW5ndGg+MDspe258PWFbLS1zXTw8bztvKz03fWVbcl09MjU1Jm47ci0tO24+Pj04O28tPTh9fXJlYWRIZXhTaWduZWQoZSx0KXt0aGlzLnJlYWRIZXhOdW1iZXIoZSx0KTtjb25zdCBpPTEmZVt0XT8yNTU6MDtsZXQgYT0wO2ZvcihsZXQgcz0wO3M8PXQ7cysrKXthPSgxJmEpPDw4fGVbc107ZVtzXT1hPj4xXml9fXJlYWRTdHJpbmcoKXtjb25zdCBlPXRoaXMucmVhZE51bWJlcigpLHQ9bmV3IEFycmF5KGUpO2ZvcihsZXQgaT0wO2k8ZTtpKyspdFtpXT10aGlzLnJlYWROdW1iZXIoKTtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZSguLi50KX19Y2xhc3MgQmluYXJ5Q01hcFJlYWRlcnthc3luYyBwcm9jZXNzKGUsdCxpKXtjb25zdCBhPW5ldyBCaW5hcnlDTWFwU3RyZWFtKGUpLHM9YS5yZWFkQnl0ZSgpO3QudmVydGljYWw9ISEoMSZzKTtsZXQgcj1udWxsO2NvbnN0IG49bmV3IFVpbnQ4QXJyYXkoa3QpLG89bmV3IFVpbnQ4QXJyYXkoa3QpLGc9bmV3IFVpbnQ4QXJyYXkoa3QpLGM9bmV3IFVpbnQ4QXJyYXkoa3QpLEM9bmV3IFVpbnQ4QXJyYXkoa3QpO2xldCBoLGw7Zm9yKDsobD1hLnJlYWRCeXRlKCkpPj0wOyl7Y29uc3QgZT1sPj41O2lmKDc9PT1lKXtzd2l0Y2goMzEmbCl7Y2FzZSAwOmEucmVhZFN0cmluZygpO2JyZWFrO2Nhc2UgMTpyPWEucmVhZFN0cmluZygpfWNvbnRpbnVlfWNvbnN0IGk9ISEoMTYmbCkscz0xNSZsO2lmKHMrMT5rdCl0aHJvdyBuZXcgRXJyb3IoIkJpbmFyeUNNYXBSZWFkZXIucHJvY2VzczogSW52YWxpZCBkYXRhU2l6ZS4iKTtjb25zdCBRPTEsRT1hLnJlYWROdW1iZXIoKTtzd2l0Y2goZSl7Y2FzZSAwOmEucmVhZEhleChuLHMpO2EucmVhZEhleE51bWJlcihvLHMpO2FkZEhleChvLG4scyk7dC5hZGRDb2Rlc3BhY2VSYW5nZShzKzEsaGV4VG9JbnQobixzKSxoZXhUb0ludChvLHMpKTtmb3IobGV0IGU9MTtlPEU7ZSsrKXtpbmNIZXgobyxzKTthLnJlYWRIZXhOdW1iZXIobixzKTthZGRIZXgobixvLHMpO2EucmVhZEhleE51bWJlcihvLHMpO2FkZEhleChvLG4scyk7dC5hZGRDb2Rlc3BhY2VSYW5nZShzKzEsaGV4VG9JbnQobixzKSxoZXhUb0ludChvLHMpKX1icmVhaztjYXNlIDE6YS5yZWFkSGV4KG4scyk7YS5yZWFkSGV4TnVtYmVyKG8scyk7YWRkSGV4KG8sbixzKTthLnJlYWROdW1iZXIoKTtmb3IobGV0IGU9MTtlPEU7ZSsrKXtpbmNIZXgobyxzKTthLnJlYWRIZXhOdW1iZXIobixzKTthZGRIZXgobixvLHMpO2EucmVhZEhleE51bWJlcihvLHMpO2FkZEhleChvLG4scyk7YS5yZWFkTnVtYmVyKCl9YnJlYWs7Y2FzZSAyOmEucmVhZEhleChnLHMpO2g9YS5yZWFkTnVtYmVyKCk7dC5tYXBPbmUoaGV4VG9JbnQoZyxzKSxoKTtmb3IobGV0IGU9MTtlPEU7ZSsrKXtpbmNIZXgoZyxzKTtpZighaSl7YS5yZWFkSGV4TnVtYmVyKEMscyk7YWRkSGV4KGcsQyxzKX1oPWEucmVhZFNpZ25lZCgpKyhoKzEpO3QubWFwT25lKGhleFRvSW50KGcscyksaCl9YnJlYWs7Y2FzZSAzOmEucmVhZEhleChuLHMpO2EucmVhZEhleE51bWJlcihvLHMpO2FkZEhleChvLG4scyk7aD1hLnJlYWROdW1iZXIoKTt0Lm1hcENpZFJhbmdlKGhleFRvSW50KG4scyksaGV4VG9JbnQobyxzKSxoKTtmb3IobGV0IGU9MTtlPEU7ZSsrKXtpbmNIZXgobyxzKTtpZihpKW4uc2V0KG8pO2Vsc2V7YS5yZWFkSGV4TnVtYmVyKG4scyk7YWRkSGV4KG4sbyxzKX1hLnJlYWRIZXhOdW1iZXIobyxzKTthZGRIZXgobyxuLHMpO2g9YS5yZWFkTnVtYmVyKCk7dC5tYXBDaWRSYW5nZShoZXhUb0ludChuLHMpLGhleFRvSW50KG8scyksaCl9YnJlYWs7Y2FzZSA0OmEucmVhZEhleChnLFEpO2EucmVhZEhleChjLHMpO3QubWFwT25lKGhleFRvSW50KGcsUSksaGV4VG9TdHIoYyxzKSk7Zm9yKGxldCBlPTE7ZTxFO2UrKyl7aW5jSGV4KGcsUSk7aWYoIWkpe2EucmVhZEhleE51bWJlcihDLFEpO2FkZEhleChnLEMsUSl9aW5jSGV4KGMscyk7YS5yZWFkSGV4U2lnbmVkKEMscyk7YWRkSGV4KGMsQyxzKTt0Lm1hcE9uZShoZXhUb0ludChnLFEpLGhleFRvU3RyKGMscykpfWJyZWFrO2Nhc2UgNTphLnJlYWRIZXgobixRKTthLnJlYWRIZXhOdW1iZXIobyxRKTthZGRIZXgobyxuLFEpO2EucmVhZEhleChjLHMpO3QubWFwQmZSYW5nZShoZXhUb0ludChuLFEpLGhleFRvSW50KG8sUSksaGV4VG9TdHIoYyxzKSk7Zm9yKGxldCBlPTE7ZTxFO2UrKyl7aW5jSGV4KG8sUSk7aWYoaSluLnNldChvKTtlbHNle2EucmVhZEhleE51bWJlcihuLFEpO2FkZEhleChuLG8sUSl9YS5yZWFkSGV4TnVtYmVyKG8sUSk7YWRkSGV4KG8sbixRKTthLnJlYWRIZXgoYyxzKTt0Lm1hcEJmUmFuZ2UoaGV4VG9JbnQobixRKSxoZXhUb0ludChvLFEpLGhleFRvU3RyKGMscykpfWJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGBCaW5hcnlDTWFwUmVhZGVyLnByb2Nlc3MgLSB1bmtub3duIHR5cGU6ICR7ZX1gKX19cmV0dXJuIHI/aShyKTp0fX1jb25zdCBOdD1uZXcgVWludDhBcnJheSgwKTtjbGFzcyBEZWNvZGVTdHJlYW0gZXh0ZW5kcyBCYXNlU3RyZWFte2NvbnN0cnVjdG9yKGUpe3N1cGVyKCk7dGhpcy5fcmF3TWluQnVmZmVyTGVuZ3RoPWV8fDA7dGhpcy5wb3M9MDt0aGlzLmJ1ZmZlckxlbmd0aD0wO3RoaXMuZW9mPSExO3RoaXMuYnVmZmVyPU50O3RoaXMubWluQnVmZmVyTGVuZ3RoPTUxMjtpZihlKWZvcig7dGhpcy5taW5CdWZmZXJMZW5ndGg8ZTspdGhpcy5taW5CdWZmZXJMZW5ndGgqPTJ9Z2V0IGlzRW1wdHkoKXtmb3IoOyF0aGlzLmVvZiYmMD09PXRoaXMuYnVmZmVyTGVuZ3RoOyl0aGlzLnJlYWRCbG9jaygpO3JldHVybiAwPT09dGhpcy5idWZmZXJMZW5ndGh9ZW5zdXJlQnVmZmVyKGUpe2NvbnN0IHQ9dGhpcy5idWZmZXI7aWYoZTw9dC5ieXRlTGVuZ3RoKXJldHVybiB0O2xldCBpPXRoaXMubWluQnVmZmVyTGVuZ3RoO2Zvcig7aTxlOylpKj0yO2NvbnN0IGE9bmV3IFVpbnQ4QXJyYXkoaSk7YS5zZXQodCk7cmV0dXJuIHRoaXMuYnVmZmVyPWF9Z2V0Qnl0ZSgpe2NvbnN0IGU9dGhpcy5wb3M7Zm9yKDt0aGlzLmJ1ZmZlckxlbmd0aDw9ZTspe2lmKHRoaXMuZW9mKXJldHVybi0xO3RoaXMucmVhZEJsb2NrKCl9cmV0dXJuIHRoaXMuYnVmZmVyW3RoaXMucG9zKytdfWdldEJ5dGVzKGUsdD0hMSl7Y29uc3QgaT10aGlzLnBvcztsZXQgYTtpZihlKXt0aGlzLmVuc3VyZUJ1ZmZlcihpK2UpO2E9aStlO2Zvcig7IXRoaXMuZW9mJiZ0aGlzLmJ1ZmZlckxlbmd0aDxhOyl0aGlzLnJlYWRCbG9jayh0KTtjb25zdCBzPXRoaXMuYnVmZmVyTGVuZ3RoO2E+cyYmKGE9cyl9ZWxzZXtmb3IoOyF0aGlzLmVvZjspdGhpcy5yZWFkQmxvY2sodCk7YT10aGlzLmJ1ZmZlckxlbmd0aH10aGlzLnBvcz1hO3JldHVybiB0aGlzLmJ1ZmZlci5zdWJhcnJheShpLGEpfXJlc2V0KCl7dGhpcy5wb3M9MH1tYWtlU3ViU3RyZWFtKGUsdCxpPW51bGwpe2lmKHZvaWQgMD09PXQpZm9yKDshdGhpcy5lb2Y7KXRoaXMucmVhZEJsb2NrKCk7ZWxzZXtjb25zdCBpPWUrdDtmb3IoO3RoaXMuYnVmZmVyTGVuZ3RoPD1pJiYhdGhpcy5lb2Y7KXRoaXMucmVhZEJsb2NrKCl9cmV0dXJuIG5ldyBTdHJlYW0odGhpcy5idWZmZXIsZSx0LGkpfWdldEJhc2VTdHJlYW1zKCl7cmV0dXJuIHRoaXMuc3RyP3RoaXMuc3RyLmdldEJhc2VTdHJlYW1zKCk6bnVsbH19Y2xhc3MgU3RyZWFtc1NlcXVlbmNlU3RyZWFtIGV4dGVuZHMgRGVjb2RlU3RyZWFte2NvbnN0cnVjdG9yKGUsdD1udWxsKXtsZXQgaT0wO2Zvcihjb25zdCB0IG9mIGUpaSs9dCBpbnN0YW5jZW9mIERlY29kZVN0cmVhbT90Ll9yYXdNaW5CdWZmZXJMZW5ndGg6dC5sZW5ndGg7c3VwZXIoaSk7dGhpcy5zdHJlYW1zPWU7dGhpcy5fb25FcnJvcj10fXJlYWRCbG9jaygpe2NvbnN0IGU9dGhpcy5zdHJlYW1zO2lmKDA9PT1lLmxlbmd0aCl7dGhpcy5lb2Y9ITA7cmV0dXJufWNvbnN0IHQ9ZS5zaGlmdCgpO2xldCBpO3RyeXtpPXQuZ2V0Qnl0ZXMoKX1jYXRjaChlKXtpZih0aGlzLl9vbkVycm9yKXt0aGlzLl9vbkVycm9yKGUsdC5kaWN0Py5vYmpJZCk7cmV0dXJufXRocm93IGV9Y29uc3QgYT10aGlzLmJ1ZmZlckxlbmd0aCxzPWEraS5sZW5ndGg7dGhpcy5lbnN1cmVCdWZmZXIocykuc2V0KGksYSk7dGhpcy5idWZmZXJMZW5ndGg9c31nZXRCYXNlU3RyZWFtcygpe2NvbnN0IGU9W107Zm9yKGNvbnN0IHQgb2YgdGhpcy5zdHJlYW1zKXtjb25zdCBpPXQuZ2V0QmFzZVN0cmVhbXMoKTtpJiZlLnB1c2goLi4uaSl9cmV0dXJuIGUubGVuZ3RoPjA/ZTpudWxsfX1jbGFzcyBBc2NpaTg1U3RyZWFtIGV4dGVuZHMgRGVjb2RlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCl7dCYmKHQqPS44KTtzdXBlcih0KTt0aGlzLnN0cj1lO3RoaXMuZGljdD1lLmRpY3Q7dGhpcy5pbnB1dD1uZXcgVWludDhBcnJheSg1KX1yZWFkQmxvY2soKXtjb25zdCBlPXRoaXMuc3RyO2xldCB0PWUuZ2V0Qnl0ZSgpO2Zvcig7aXNXaGl0ZVNwYWNlKHQpOyl0PWUuZ2V0Qnl0ZSgpO2lmKC0xPT09dHx8MTI2PT09dCl7dGhpcy5lb2Y9ITA7cmV0dXJufWNvbnN0IGk9dGhpcy5idWZmZXJMZW5ndGg7bGV0IGEscztpZigxMjI9PT10KXthPXRoaXMuZW5zdXJlQnVmZmVyKGkrNCk7Zm9yKHM9MDtzPDQ7KytzKWFbaStzXT0wO3RoaXMuYnVmZmVyTGVuZ3RoKz00fWVsc2V7Y29uc3Qgcj10aGlzLmlucHV0O3JbMF09dDtmb3Iocz0xO3M8NTsrK3Mpe3Q9ZS5nZXRCeXRlKCk7Zm9yKDtpc1doaXRlU3BhY2UodCk7KXQ9ZS5nZXRCeXRlKCk7cltzXT10O2lmKC0xPT09dHx8MTI2PT09dClicmVha31hPXRoaXMuZW5zdXJlQnVmZmVyKGkrcy0xKTt0aGlzLmJ1ZmZlckxlbmd0aCs9cy0xO2lmKHM8NSl7Zm9yKDtzPDU7KytzKXJbc109MTE3O3RoaXMuZW9mPSEwfWxldCBuPTA7Zm9yKHM9MDtzPDU7KytzKW49ODUqbisocltzXS0zMyk7Zm9yKHM9MztzPj0wOy0tcyl7YVtpK3NdPTI1NSZuO24+Pj04fX19fWNsYXNzIEFzY2lpSGV4U3RyZWFtIGV4dGVuZHMgRGVjb2RlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCl7dCYmKHQqPS41KTtzdXBlcih0KTt0aGlzLnN0cj1lO3RoaXMuZGljdD1lLmRpY3Q7dGhpcy5maXJzdERpZ2l0PS0xfXJlYWRCbG9jaygpe2NvbnN0IGU9dGhpcy5zdHIuZ2V0Qnl0ZXMoOGUzKTtpZighZS5sZW5ndGgpe3RoaXMuZW9mPSEwO3JldHVybn1jb25zdCB0PWUubGVuZ3RoKzE+PjEsaT10aGlzLmVuc3VyZUJ1ZmZlcih0aGlzLmJ1ZmZlckxlbmd0aCt0KTtsZXQgYT10aGlzLmJ1ZmZlckxlbmd0aCxzPXRoaXMuZmlyc3REaWdpdDtmb3IoY29uc3QgdCBvZiBlKXtsZXQgZTtpZih0Pj00OCYmdDw9NTcpZT0xNSZ0O2Vsc2V7aWYoISh0Pj02NSYmdDw9NzB8fHQ+PTk3JiZ0PD0xMDIpKXtpZig2Mj09PXQpe3RoaXMuZW9mPSEwO2JyZWFrfWNvbnRpbnVlfWU9OSsoMTUmdCl9aWYoczwwKXM9ZTtlbHNle2lbYSsrXT1zPDw0fGU7cz0tMX19aWYocz49MCYmdGhpcy5lb2Ype2lbYSsrXT1zPDw0O3M9LTF9dGhpcy5maXJzdERpZ2l0PXM7dGhpcy5idWZmZXJMZW5ndGg9YX19Y29uc3QgUnQ9LTEsR3Q9W1stMSwtMV0sWy0xLC0xXSxbNyw4XSxbNyw3XSxbNiw2XSxbNiw2XSxbNiw1XSxbNiw1XSxbNCwwXSxbNCwwXSxbNCwwXSxbNCwwXSxbNCwwXSxbNCwwXSxbNCwwXSxbNCwwXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXV0seHQ9W1stMSwtMV0sWzEyLC0yXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWzExLDE3OTJdLFsxMSwxNzkyXSxbMTIsMTk4NF0sWzEyLDIwNDhdLFsxMiwyMTEyXSxbMTIsMjE3Nl0sWzEyLDIyNDBdLFsxMiwyMzA0XSxbMTEsMTg1Nl0sWzExLDE4NTZdLFsxMSwxOTIwXSxbMTEsMTkyMF0sWzEyLDIzNjhdLFsxMiwyNDMyXSxbMTIsMjQ5Nl0sWzEyLDI1NjBdXSxVdD1bWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbOCwyOV0sWzgsMjldLFs4LDMwXSxbOCwzMF0sWzgsNDVdLFs4LDQ1XSxbOCw0Nl0sWzgsNDZdLFs3LDIyXSxbNywyMl0sWzcsMjJdLFs3LDIyXSxbNywyM10sWzcsMjNdLFs3LDIzXSxbNywyM10sWzgsNDddLFs4LDQ3XSxbOCw0OF0sWzgsNDhdLFs2LDEzXSxbNiwxM10sWzYsMTNdLFs2LDEzXSxbNiwxM10sWzYsMTNdLFs2LDEzXSxbNiwxM10sWzcsMjBdLFs3LDIwXSxbNywyMF0sWzcsMjBdLFs4LDMzXSxbOCwzM10sWzgsMzRdLFs4LDM0XSxbOCwzNV0sWzgsMzVdLFs4LDM2XSxbOCwzNl0sWzgsMzddLFs4LDM3XSxbOCwzOF0sWzgsMzhdLFs3LDE5XSxbNywxOV0sWzcsMTldLFs3LDE5XSxbOCwzMV0sWzgsMzFdLFs4LDMyXSxbOCwzMl0sWzYsMV0sWzYsMV0sWzYsMV0sWzYsMV0sWzYsMV0sWzYsMV0sWzYsMV0sWzYsMV0sWzYsMTJdLFs2LDEyXSxbNiwxMl0sWzYsMTJdLFs2LDEyXSxbNiwxMl0sWzYsMTJdLFs2LDEyXSxbOCw1M10sWzgsNTNdLFs4LDU0XSxbOCw1NF0sWzcsMjZdLFs3LDI2XSxbNywyNl0sWzcsMjZdLFs4LDM5XSxbOCwzOV0sWzgsNDBdLFs4LDQwXSxbOCw0MV0sWzgsNDFdLFs4LDQyXSxbOCw0Ml0sWzgsNDNdLFs4LDQzXSxbOCw0NF0sWzgsNDRdLFs3LDIxXSxbNywyMV0sWzcsMjFdLFs3LDIxXSxbNywyOF0sWzcsMjhdLFs3LDI4XSxbNywyOF0sWzgsNjFdLFs4LDYxXSxbOCw2Ml0sWzgsNjJdLFs4LDYzXSxbOCw2M10sWzgsMF0sWzgsMF0sWzgsMzIwXSxbOCwzMjBdLFs4LDM4NF0sWzgsMzg0XSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs3LDI3XSxbNywyN10sWzcsMjddLFs3LDI3XSxbOCw1OV0sWzgsNTldLFs4LDYwXSxbOCw2MF0sWzksMTQ3Ml0sWzksMTUzNl0sWzksMTYwMF0sWzksMTcyOF0sWzcsMThdLFs3LDE4XSxbNywxOF0sWzcsMThdLFs3LDI0XSxbNywyNF0sWzcsMjRdLFs3LDI0XSxbOCw0OV0sWzgsNDldLFs4LDUwXSxbOCw1MF0sWzgsNTFdLFs4LDUxXSxbOCw1Ml0sWzgsNTJdLFs3LDI1XSxbNywyNV0sWzcsMjVdLFs3LDI1XSxbOCw1NV0sWzgsNTVdLFs4LDU2XSxbOCw1Nl0sWzgsNTddLFs4LDU3XSxbOCw1OF0sWzgsNThdLFs2LDE5Ml0sWzYsMTkyXSxbNiwxOTJdLFs2LDE5Ml0sWzYsMTkyXSxbNiwxOTJdLFs2LDE5Ml0sWzYsMTkyXSxbNiwxNjY0XSxbNiwxNjY0XSxbNiwxNjY0XSxbNiwxNjY0XSxbNiwxNjY0XSxbNiwxNjY0XSxbNiwxNjY0XSxbNiwxNjY0XSxbOCw0NDhdLFs4LDQ0OF0sWzgsNTEyXSxbOCw1MTJdLFs5LDcwNF0sWzksNzY4XSxbOCw2NDBdLFs4LDY0MF0sWzgsNTc2XSxbOCw1NzZdLFs5LDgzMl0sWzksODk2XSxbOSw5NjBdLFs5LDEwMjRdLFs5LDEwODhdLFs5LDExNTJdLFs5LDEyMTZdLFs5LDEyODBdLFs5LDEzNDRdLFs5LDE0MDhdLFs3LDI1Nl0sWzcsMjU2XSxbNywyNTZdLFs3LDI1Nl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNiwxNl0sWzYsMTZdLFs2LDE2XSxbNiwxNl0sWzYsMTZdLFs2LDE2XSxbNiwxNl0sWzYsMTZdLFs2LDE3XSxbNiwxN10sWzYsMTddLFs2LDE3XSxbNiwxN10sWzYsMTddLFs2LDE3XSxbNiwxN10sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzYsMTRdLFs2LDE0XSxbNiwxNF0sWzYsMTRdLFs2LDE0XSxbNiwxNF0sWzYsMTRdLFs2LDE0XSxbNiwxNV0sWzYsMTVdLFs2LDE1XSxbNiwxNV0sWzYsMTVdLFs2LDE1XSxbNiwxNV0sWzYsMTVdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XV0sTXQ9W1stMSwtMV0sWy0xLC0xXSxbMTIsLTJdLFsxMiwtMl0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbMTEsMTc5Ml0sWzExLDE3OTJdLFsxMSwxNzkyXSxbMTEsMTc5Ml0sWzEyLDE5ODRdLFsxMiwxOTg0XSxbMTIsMjA0OF0sWzEyLDIwNDhdLFsxMiwyMTEyXSxbMTIsMjExMl0sWzEyLDIxNzZdLFsxMiwyMTc2XSxbMTIsMjI0MF0sWzEyLDIyNDBdLFsxMiwyMzA0XSxbMTIsMjMwNF0sWzExLDE4NTZdLFsxMSwxODU2XSxbMTEsMTg1Nl0sWzExLDE4NTZdLFsxMSwxOTIwXSxbMTEsMTkyMF0sWzExLDE5MjBdLFsxMSwxOTIwXSxbMTIsMjM2OF0sWzEyLDIzNjhdLFsxMiwyNDMyXSxbMTIsMjQzMl0sWzEyLDI0OTZdLFsxMiwyNDk2XSxbMTIsMjU2MF0sWzEyLDI1NjBdLFsxMCwxOF0sWzEwLDE4XSxbMTAsMThdLFsxMCwxOF0sWzEwLDE4XSxbMTAsMThdLFsxMCwxOF0sWzEwLDE4XSxbMTIsNTJdLFsxMiw1Ml0sWzEzLDY0MF0sWzEzLDcwNF0sWzEzLDc2OF0sWzEzLDgzMl0sWzEyLDU1XSxbMTIsNTVdLFsxMiw1Nl0sWzEyLDU2XSxbMTMsMTI4MF0sWzEzLDEzNDRdLFsxMywxNDA4XSxbMTMsMTQ3Ml0sWzEyLDU5XSxbMTIsNTldLFsxMiw2MF0sWzEyLDYwXSxbMTMsMTUzNl0sWzEzLDE2MDBdLFsxMSwyNF0sWzExLDI0XSxbMTEsMjRdLFsxMSwyNF0sWzExLDI1XSxbMTEsMjVdLFsxMSwyNV0sWzExLDI1XSxbMTMsMTY2NF0sWzEzLDE3MjhdLFsxMiwzMjBdLFsxMiwzMjBdLFsxMiwzODRdLFsxMiwzODRdLFsxMiw0NDhdLFsxMiw0NDhdLFsxMyw1MTJdLFsxMyw1NzZdLFsxMiw1M10sWzEyLDUzXSxbMTIsNTRdLFsxMiw1NF0sWzEzLDg5Nl0sWzEzLDk2MF0sWzEzLDEwMjRdLFsxMywxMDg4XSxbMTMsMTE1Ml0sWzEzLDEyMTZdLFsxMCw2NF0sWzEwLDY0XSxbMTAsNjRdLFsxMCw2NF0sWzEwLDY0XSxbMTAsNjRdLFsxMCw2NF0sWzEwLDY0XV0sTHQ9W1s4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbMTEsMjNdLFsxMSwyM10sWzEyLDUwXSxbMTIsNTFdLFsxMiw0NF0sWzEyLDQ1XSxbMTIsNDZdLFsxMiw0N10sWzEyLDU3XSxbMTIsNThdLFsxMiw2MV0sWzEyLDI1Nl0sWzEwLDE2XSxbMTAsMTZdLFsxMCwxNl0sWzEwLDE2XSxbMTAsMTddLFsxMCwxN10sWzEwLDE3XSxbMTAsMTddLFsxMiw0OF0sWzEyLDQ5XSxbMTIsNjJdLFsxMiw2M10sWzEyLDMwXSxbMTIsMzFdLFsxMiwzMl0sWzEyLDMzXSxbMTIsNDBdLFsxMiw0MV0sWzExLDIyXSxbMTEsMjJdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzksMTVdLFs5LDE1XSxbOSwxNV0sWzksMTVdLFs5LDE1XSxbOSwxNV0sWzksMTVdLFs5LDE1XSxbMTIsMTI4XSxbMTIsMTkyXSxbMTIsMjZdLFsxMiwyN10sWzEyLDI4XSxbMTIsMjldLFsxMSwxOV0sWzExLDE5XSxbMTEsMjBdLFsxMSwyMF0sWzEyLDM0XSxbMTIsMzVdLFsxMiwzNl0sWzEyLDM3XSxbMTIsMzhdLFsxMiwzOV0sWzExLDIxXSxbMTEsMjFdLFsxMiw0Ml0sWzEyLDQzXSxbMTAsMF0sWzEwLDBdLFsxMCwwXSxbMTAsMF0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXV0sSHQ9W1stMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWzYsOV0sWzYsOF0sWzUsN10sWzUsN10sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl1dO2NsYXNzIENDSVRURmF4RGVjb2Rlcntjb25zdHJ1Y3RvcihlLHQ9e30pe2lmKCFlfHwiZnVuY3Rpb24iIT10eXBlb2YgZS5uZXh0KXRocm93IG5ldyBFcnJvcignQ0NJVFRGYXhEZWNvZGVyIC0gaW52YWxpZCAic291cmNlIiBwYXJhbWV0ZXIuJyk7dGhpcy5zb3VyY2U9ZTt0aGlzLmVvZj0hMTt0aGlzLmVuY29kaW5nPXQuS3x8MDt0aGlzLmVvbGluZT10LkVuZE9mTGluZXx8ITE7dGhpcy5ieXRlQWxpZ249dC5FbmNvZGVkQnl0ZUFsaWdufHwhMTt0aGlzLmNvbHVtbnM9dC5Db2x1bW5zfHwxNzI4O3RoaXMucm93cz10LlJvd3N8fDA7dGhpcy5lb2Jsb2NrPXQuRW5kT2ZCbG9jaz8/ITA7dGhpcy5ibGFjaz10LkJsYWNrSXMxfHwhMTt0aGlzLmNvZGluZ0xpbmU9bmV3IFVpbnQzMkFycmF5KHRoaXMuY29sdW1ucysxKTt0aGlzLnJlZkxpbmU9bmV3IFVpbnQzMkFycmF5KHRoaXMuY29sdW1ucysyKTt0aGlzLmNvZGluZ0xpbmVbMF09dGhpcy5jb2x1bW5zO3RoaXMuY29kaW5nUG9zPTA7dGhpcy5yb3c9MDt0aGlzLm5leHRMaW5lMkQ9dGhpcy5lbmNvZGluZzwwO3RoaXMuaW5wdXRCaXRzPTA7dGhpcy5pbnB1dEJ1Zj0wO3RoaXMub3V0cHV0Qml0cz0wO3RoaXMucm93c0RvbmU9ITE7bGV0IGk7Zm9yKDswPT09KGk9dGhpcy5fbG9va0JpdHMoMTIpKTspdGhpcy5fZWF0Qml0cygxKTsxPT09aSYmdGhpcy5fZWF0Qml0cygxMik7aWYodGhpcy5lbmNvZGluZz4wKXt0aGlzLm5leHRMaW5lMkQ9IXRoaXMuX2xvb2tCaXRzKDEpO3RoaXMuX2VhdEJpdHMoMSl9fXJlYWROZXh0Q2hhcigpe2lmKHRoaXMuZW9mKXJldHVybi0xO2NvbnN0IGU9dGhpcy5yZWZMaW5lLHQ9dGhpcy5jb2RpbmdMaW5lLGk9dGhpcy5jb2x1bW5zO2xldCBhLHMscixuLG87aWYoMD09PXRoaXMub3V0cHV0Qml0cyl7dGhpcy5yb3dzRG9uZSYmKHRoaXMuZW9mPSEwKTtpZih0aGlzLmVvZilyZXR1cm4tMTt0aGlzLmVycj0hMTtsZXQgcixvLGc7aWYodGhpcy5uZXh0TGluZTJEKXtmb3Iobj0wO3Rbbl08aTsrK24pZVtuXT10W25dO2VbbisrXT1pO2Vbbl09aTt0WzBdPTA7dGhpcy5jb2RpbmdQb3M9MDthPTA7cz0wO2Zvcig7dFt0aGlzLmNvZGluZ1Bvc108aTspe3I9dGhpcy5fZ2V0VHdvRGltQ29kZSgpO3N3aXRjaChyKXtjYXNlIDA6dGhpcy5fYWRkUGl4ZWxzKGVbYSsxXSxzKTtlW2ErMV08aSYmKGErPTIpO2JyZWFrO2Nhc2UgMTpyPW89MDtpZihzKXtkb3tyKz1nPXRoaXMuX2dldEJsYWNrQ29kZSgpfXdoaWxlKGc+PTY0KTtkb3tvKz1nPXRoaXMuX2dldFdoaXRlQ29kZSgpfXdoaWxlKGc+PTY0KX1lbHNle2Rve3IrPWc9dGhpcy5fZ2V0V2hpdGVDb2RlKCl9d2hpbGUoZz49NjQpO2Rve28rPWc9dGhpcy5fZ2V0QmxhY2tDb2RlKCl9d2hpbGUoZz49NjQpfXRoaXMuX2FkZFBpeGVscyh0W3RoaXMuY29kaW5nUG9zXStyLHMpO3RbdGhpcy5jb2RpbmdQb3NdPGkmJnRoaXMuX2FkZFBpeGVscyh0W3RoaXMuY29kaW5nUG9zXStvLDFecyk7Zm9yKDtlW2FdPD10W3RoaXMuY29kaW5nUG9zXSYmZVthXTxpOylhKz0yO2JyZWFrO2Nhc2UgNzp0aGlzLl9hZGRQaXhlbHMoZVthXSszLHMpO3NePTE7aWYodFt0aGlzLmNvZGluZ1Bvc108aSl7KythO2Zvcig7ZVthXTw9dFt0aGlzLmNvZGluZ1Bvc10mJmVbYV08aTspYSs9Mn1icmVhaztjYXNlIDU6dGhpcy5fYWRkUGl4ZWxzKGVbYV0rMixzKTtzXj0xO2lmKHRbdGhpcy5jb2RpbmdQb3NdPGkpeysrYTtmb3IoO2VbYV08PXRbdGhpcy5jb2RpbmdQb3NdJiZlW2FdPGk7KWErPTJ9YnJlYWs7Y2FzZSAzOnRoaXMuX2FkZFBpeGVscyhlW2FdKzEscyk7c149MTtpZih0W3RoaXMuY29kaW5nUG9zXTxpKXsrK2E7Zm9yKDtlW2FdPD10W3RoaXMuY29kaW5nUG9zXSYmZVthXTxpOylhKz0yfWJyZWFrO2Nhc2UgMjp0aGlzLl9hZGRQaXhlbHMoZVthXSxzKTtzXj0xO2lmKHRbdGhpcy5jb2RpbmdQb3NdPGkpeysrYTtmb3IoO2VbYV08PXRbdGhpcy5jb2RpbmdQb3NdJiZlW2FdPGk7KWErPTJ9YnJlYWs7Y2FzZSA4OnRoaXMuX2FkZFBpeGVsc05lZyhlW2FdLTMscyk7c149MTtpZih0W3RoaXMuY29kaW5nUG9zXTxpKXthPjA/LS1hOisrYTtmb3IoO2VbYV08PXRbdGhpcy5jb2RpbmdQb3NdJiZlW2FdPGk7KWErPTJ9YnJlYWs7Y2FzZSA2OnRoaXMuX2FkZFBpeGVsc05lZyhlW2FdLTIscyk7c149MTtpZih0W3RoaXMuY29kaW5nUG9zXTxpKXthPjA/LS1hOisrYTtmb3IoO2VbYV08PXRbdGhpcy5jb2RpbmdQb3NdJiZlW2FdPGk7KWErPTJ9YnJlYWs7Y2FzZSA0OnRoaXMuX2FkZFBpeGVsc05lZyhlW2FdLTEscyk7c149MTtpZih0W3RoaXMuY29kaW5nUG9zXTxpKXthPjA/LS1hOisrYTtmb3IoO2VbYV08PXRbdGhpcy5jb2RpbmdQb3NdJiZlW2FdPGk7KWErPTJ9YnJlYWs7Y2FzZSBSdDp0aGlzLl9hZGRQaXhlbHMoaSwwKTt0aGlzLmVvZj0hMDticmVhaztkZWZhdWx0OmluZm8oImJhZCAyZCBjb2RlIik7dGhpcy5fYWRkUGl4ZWxzKGksMCk7dGhpcy5lcnI9ITB9fX1lbHNle3RbMF09MDt0aGlzLmNvZGluZ1Bvcz0wO3M9MDtmb3IoO3RbdGhpcy5jb2RpbmdQb3NdPGk7KXtyPTA7aWYocylkb3tyKz1nPXRoaXMuX2dldEJsYWNrQ29kZSgpfXdoaWxlKGc+PTY0KTtlbHNlIGRve3IrPWc9dGhpcy5fZ2V0V2hpdGVDb2RlKCl9d2hpbGUoZz49NjQpO3RoaXMuX2FkZFBpeGVscyh0W3RoaXMuY29kaW5nUG9zXStyLHMpO3NePTF9fWxldCBjPSExO3RoaXMuYnl0ZUFsaWduJiYodGhpcy5pbnB1dEJpdHMmPS04KTtpZih0aGlzLmVvYmxvY2t8fHRoaXMucm93IT09dGhpcy5yb3dzLTEpe3I9dGhpcy5fbG9va0JpdHMoMTIpO2lmKHRoaXMuZW9saW5lKWZvcig7ciE9PVJ0JiYxIT09cjspe3RoaXMuX2VhdEJpdHMoMSk7cj10aGlzLl9sb29rQml0cygxMil9ZWxzZSBmb3IoOzA9PT1yOyl7dGhpcy5fZWF0Qml0cygxKTtyPXRoaXMuX2xvb2tCaXRzKDEyKX1pZigxPT09cil7dGhpcy5fZWF0Qml0cygxMik7Yz0hMH1lbHNlIHI9PT1SdCYmKHRoaXMuZW9mPSEwKX1lbHNlIHRoaXMucm93c0RvbmU9ITA7aWYoIXRoaXMuZW9mJiZ0aGlzLmVuY29kaW5nPjAmJiF0aGlzLnJvd3NEb25lKXt0aGlzLm5leHRMaW5lMkQ9IXRoaXMuX2xvb2tCaXRzKDEpO3RoaXMuX2VhdEJpdHMoMSl9aWYodGhpcy5lb2Jsb2NrJiZjJiZ0aGlzLmJ5dGVBbGlnbil7cj10aGlzLl9sb29rQml0cygxMik7aWYoMT09PXIpe3RoaXMuX2VhdEJpdHMoMTIpO2lmKHRoaXMuZW5jb2Rpbmc+MCl7dGhpcy5fbG9va0JpdHMoMSk7dGhpcy5fZWF0Qml0cygxKX1pZih0aGlzLmVuY29kaW5nPj0wKWZvcihuPTA7bjw0Oysrbil7cj10aGlzLl9sb29rQml0cygxMik7MSE9PXImJmluZm8oImJhZCBydGMgY29kZTogIityKTt0aGlzLl9lYXRCaXRzKDEyKTtpZih0aGlzLmVuY29kaW5nPjApe3RoaXMuX2xvb2tCaXRzKDEpO3RoaXMuX2VhdEJpdHMoMSl9fXRoaXMuZW9mPSEwfX1lbHNlIGlmKHRoaXMuZXJyJiZ0aGlzLmVvbGluZSl7Zm9yKDs7KXtyPXRoaXMuX2xvb2tCaXRzKDEzKTtpZihyPT09UnQpe3RoaXMuZW9mPSEwO3JldHVybi0xfWlmKHI+PjE9PTEpYnJlYWs7dGhpcy5fZWF0Qml0cygxKX10aGlzLl9lYXRCaXRzKDEyKTtpZih0aGlzLmVuY29kaW5nPjApe3RoaXMuX2VhdEJpdHMoMSk7dGhpcy5uZXh0TGluZTJEPSEoMSZyKX19dGhpcy5vdXRwdXRCaXRzPXRbMF0+MD90W3RoaXMuY29kaW5nUG9zPTBdOnRbdGhpcy5jb2RpbmdQb3M9MV07dGhpcy5yb3crK31pZih0aGlzLm91dHB1dEJpdHM+PTgpe289MSZ0aGlzLmNvZGluZ1Bvcz8wOjI1NTt0aGlzLm91dHB1dEJpdHMtPTg7aWYoMD09PXRoaXMub3V0cHV0Qml0cyYmdFt0aGlzLmNvZGluZ1Bvc108aSl7dGhpcy5jb2RpbmdQb3MrKzt0aGlzLm91dHB1dEJpdHM9dFt0aGlzLmNvZGluZ1Bvc10tdFt0aGlzLmNvZGluZ1Bvcy0xXX19ZWxzZXtyPTg7bz0wO2Rve2lmKCJudW1iZXIiIT10eXBlb2YgdGhpcy5vdXRwdXRCaXRzKXRocm93IG5ldyBGb3JtYXRFcnJvcignSW52YWxpZCAvQ0NJVFRGYXhEZWNvZGUgZGF0YSwgIm91dHB1dEJpdHMiIG11c3QgYmUgYSBudW1iZXIuJyk7aWYodGhpcy5vdXRwdXRCaXRzPnIpe288PD1yOzEmdGhpcy5jb2RpbmdQb3N8fChvfD0yNTU+Pjgtcik7dGhpcy5vdXRwdXRCaXRzLT1yO3I9MH1lbHNle288PD10aGlzLm91dHB1dEJpdHM7MSZ0aGlzLmNvZGluZ1Bvc3x8KG98PTI1NT4+OC10aGlzLm91dHB1dEJpdHMpO3ItPXRoaXMub3V0cHV0Qml0czt0aGlzLm91dHB1dEJpdHM9MDtpZih0W3RoaXMuY29kaW5nUG9zXTxpKXt0aGlzLmNvZGluZ1BvcysrO3RoaXMub3V0cHV0Qml0cz10W3RoaXMuY29kaW5nUG9zXS10W3RoaXMuY29kaW5nUG9zLTFdfWVsc2UgaWYocj4wKXtvPDw9cjtyPTB9fX13aGlsZShyKX10aGlzLmJsYWNrJiYob149MjU1KTtyZXR1cm4gb31fYWRkUGl4ZWxzKGUsdCl7Y29uc3QgaT10aGlzLmNvZGluZ0xpbmU7bGV0IGE9dGhpcy5jb2RpbmdQb3M7aWYoZT5pW2FdKXtpZihlPnRoaXMuY29sdW1ucyl7aW5mbygicm93IGlzIHdyb25nIGxlbmd0aCIpO3RoaXMuZXJyPSEwO2U9dGhpcy5jb2x1bW5zfTEmYV50JiYrK2E7aVthXT1lfXRoaXMuY29kaW5nUG9zPWF9X2FkZFBpeGVsc05lZyhlLHQpe2NvbnN0IGk9dGhpcy5jb2RpbmdMaW5lO2xldCBhPXRoaXMuY29kaW5nUG9zO2lmKGU+aVthXSl7aWYoZT50aGlzLmNvbHVtbnMpe2luZm8oInJvdyBpcyB3cm9uZyBsZW5ndGgiKTt0aGlzLmVycj0hMDtlPXRoaXMuY29sdW1uc30xJmFedCYmKythO2lbYV09ZX1lbHNlIGlmKGU8aVthXSl7aWYoZTwwKXtpbmZvKCJpbnZhbGlkIGNvZGUiKTt0aGlzLmVycj0hMDtlPTB9Zm9yKDthPjAmJmU8aVthLTFdOyktLWE7aVthXT1lfXRoaXMuY29kaW5nUG9zPWF9X2ZpbmRUYWJsZUNvZGUoZSx0LGksYSl7Y29uc3Qgcz1hfHwwO2ZvcihsZXQgYT1lO2E8PXQ7KythKXtsZXQgZT10aGlzLl9sb29rQml0cyhhKTtpZihlPT09UnQpcmV0dXJuWyEwLDEsITFdO2E8dCYmKGU8PD10LWEpO2lmKCFzfHxlPj1zKXtjb25zdCB0PWlbZS1zXTtpZih0WzBdPT09YSl7dGhpcy5fZWF0Qml0cyhhKTtyZXR1cm5bITAsdFsxXSwhMF19fX1yZXR1cm5bITEsMCwhMV19X2dldFR3b0RpbUNvZGUoKXtsZXQgZSx0PTA7aWYodGhpcy5lb2Jsb2NrKXt0PXRoaXMuX2xvb2tCaXRzKDcpO2U9R3RbdF07aWYoZT8uWzBdPjApe3RoaXMuX2VhdEJpdHMoZVswXSk7cmV0dXJuIGVbMV19fWVsc2V7Y29uc3QgZT10aGlzLl9maW5kVGFibGVDb2RlKDEsNyxHdCk7aWYoZVswXSYmZVsyXSlyZXR1cm4gZVsxXX1pbmZvKCJCYWQgdHdvIGRpbSBjb2RlIik7cmV0dXJuIFJ0fV9nZXRXaGl0ZUNvZGUoKXtsZXQgZSx0PTA7aWYodGhpcy5lb2Jsb2NrKXt0PXRoaXMuX2xvb2tCaXRzKDEyKTtpZih0PT09UnQpcmV0dXJuIDE7ZT10Pj41PT0wP3h0W3RdOlV0W3Q+PjNdO2lmKGVbMF0+MCl7dGhpcy5fZWF0Qml0cyhlWzBdKTtyZXR1cm4gZVsxXX19ZWxzZXtsZXQgZT10aGlzLl9maW5kVGFibGVDb2RlKDEsOSxVdCk7aWYoZVswXSlyZXR1cm4gZVsxXTtlPXRoaXMuX2ZpbmRUYWJsZUNvZGUoMTEsMTIseHQpO2lmKGVbMF0pcmV0dXJuIGVbMV19aW5mbygiYmFkIHdoaXRlIGNvZGUiKTt0aGlzLl9lYXRCaXRzKDEpO3JldHVybiAxfV9nZXRCbGFja0NvZGUoKXtsZXQgZSx0O2lmKHRoaXMuZW9ibG9jayl7ZT10aGlzLl9sb29rQml0cygxMyk7aWYoZT09PVJ0KXJldHVybiAxO3Q9ZT4+Nz09MD9NdFtlXTplPj45PT0wJiZlPj43IT0wP0x0WyhlPj4xKS02NF06SHRbZT4+N107aWYodFswXT4wKXt0aGlzLl9lYXRCaXRzKHRbMF0pO3JldHVybiB0WzFdfX1lbHNle2xldCBlPXRoaXMuX2ZpbmRUYWJsZUNvZGUoMiw2LEh0KTtpZihlWzBdKXJldHVybiBlWzFdO2U9dGhpcy5fZmluZFRhYmxlQ29kZSg3LDEyLEx0LDY0KTtpZihlWzBdKXJldHVybiBlWzFdO2U9dGhpcy5fZmluZFRhYmxlQ29kZSgxMCwxMyxNdCk7aWYoZVswXSlyZXR1cm4gZVsxXX1pbmZvKCJiYWQgYmxhY2sgY29kZSIpO3RoaXMuX2VhdEJpdHMoMSk7cmV0dXJuIDF9X2xvb2tCaXRzKGUpe2xldCB0O2Zvcig7dGhpcy5pbnB1dEJpdHM8ZTspe2lmKC0xPT09KHQ9dGhpcy5zb3VyY2UubmV4dCgpKSlyZXR1cm4gMD09PXRoaXMuaW5wdXRCaXRzP1J0OnRoaXMuaW5wdXRCdWY8PGUtdGhpcy5pbnB1dEJpdHMmNjU1MzU+PjE2LWU7dGhpcy5pbnB1dEJ1Zj10aGlzLmlucHV0QnVmPDw4fHQ7dGhpcy5pbnB1dEJpdHMrPTh9cmV0dXJuIHRoaXMuaW5wdXRCdWY+PnRoaXMuaW5wdXRCaXRzLWUmNjU1MzU+PjE2LWV9X2VhdEJpdHMoZSl7KHRoaXMuaW5wdXRCaXRzLT1lKTwwJiYodGhpcy5pbnB1dEJpdHM9MCl9fWNsYXNzIENDSVRURmF4U3RyZWFtIGV4dGVuZHMgRGVjb2RlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCxpKXtzdXBlcih0KTt0aGlzLnN0cj1lO3RoaXMuZGljdD1lLmRpY3Q7aSBpbnN0YW5jZW9mIERpY3R8fChpPURpY3QuZW1wdHkpO2NvbnN0IGE9e25leHQ6KCk9PmUuZ2V0Qnl0ZSgpfTt0aGlzLmNjaXR0RmF4RGVjb2Rlcj1uZXcgQ0NJVFRGYXhEZWNvZGVyKGEse0s6aS5nZXQoIksiKSxFbmRPZkxpbmU6aS5nZXQoIkVuZE9mTGluZSIpLEVuY29kZWRCeXRlQWxpZ246aS5nZXQoIkVuY29kZWRCeXRlQWxpZ24iKSxDb2x1bW5zOmkuZ2V0KCJDb2x1bW5zIiksUm93czppLmdldCgiUm93cyIpLEVuZE9mQmxvY2s6aS5nZXQoIkVuZE9mQmxvY2siKSxCbGFja0lzMTppLmdldCgiQmxhY2tJczEiKX0pfXJlYWRCbG9jaygpe2Zvcig7IXRoaXMuZW9mOyl7Y29uc3QgZT10aGlzLmNjaXR0RmF4RGVjb2Rlci5yZWFkTmV4dENoYXIoKTtpZigtMT09PWUpe3RoaXMuZW9mPSEwO3JldHVybn10aGlzLmVuc3VyZUJ1ZmZlcih0aGlzLmJ1ZmZlckxlbmd0aCsxKTt0aGlzLmJ1ZmZlclt0aGlzLmJ1ZmZlckxlbmd0aCsrXT1lfX19Y29uc3QgSnQ9bmV3IEludDMyQXJyYXkoWzE2LDE3LDE4LDAsOCw3LDksNiwxMCw1LDExLDQsMTIsMywxMywyLDE0LDEsMTVdKSxZdD1uZXcgSW50MzJBcnJheShbMyw0LDUsNiw3LDgsOSwxMCw2NTU0Nyw2NTU0OSw2NTU1MSw2NTU1MywxMzEwOTEsMTMxMDk1LDEzMTA5OSwxMzExMDMsMTk2NjQzLDE5NjY1MSwxOTY2NTksMTk2NjY3LDI2MjIxMSwyNjIyMjcsMjYyMjQzLDI2MjI1OSwzMjc4MTEsMzI3ODQzLDMyNzg3NSwzMjc5MDcsMjU4LDI1OCwyNThdKSx2dD1uZXcgSW50MzJBcnJheShbMSwyLDMsNCw2NTU0MSw2NTU0MywxMzEwODEsMTMxMDg1LDE5NjYyNSwxOTY2MzMsMjYyMTc3LDI2MjE5MywzMjc3NDUsMzI3Nzc3LDM5MzM0NSwzOTM0MDksNDU5MDA5LDQ1OTEzNyw1MjQ4MDEsNTI1MDU3LDU5MDg0OSw1OTEzNjEsNjU3NDA5LDY1ODQzMyw3MjQ5OTMsNzI3MDQxLDc5NDYyNSw3OTg3MjEsODY4MzUzLDg3NjU0NV0pLEt0PVtuZXcgSW50MzJBcnJheShbNDU5MDA4LDUyNDM2OCw1MjQzMDQsNTI0NTY4LDQ1OTAyNCw1MjQ0MDAsNTI0MzM2LDU5MDAxNiw0NTkwMTYsNTI0Mzg0LDUyNDMyMCw1ODk5ODQsNTI0Mjg4LDUyNDQxNiw1MjQzNTIsNTkwMDQ4LDQ1OTAxMiw1MjQzNzYsNTI0MzEyLDU4OTk2OCw0NTkwMjgsNTI0NDA4LDUyNDM0NCw1OTAwMzIsNDU5MDIwLDUyNDM5Miw1MjQzMjgsNTllNCw1MjQyOTYsNTI0NDI0LDUyNDM2MCw1OTAwNjQsNDU5MDEwLDUyNDM3Miw1MjQzMDgsNTI0NTcyLDQ1OTAyNiw1MjQ0MDQsNTI0MzQwLDU5MDAyNCw0NTkwMTgsNTI0Mzg4LDUyNDMyNCw1ODk5OTIsNTI0MjkyLDUyNDQyMCw1MjQzNTYsNTkwMDU2LDQ1OTAxNCw1MjQzODAsNTI0MzE2LDU4OTk3Niw0NTkwMzAsNTI0NDEyLDUyNDM0OCw1OTAwNDAsNDU5MDIyLDUyNDM5Niw1MjQzMzIsNTkwMDA4LDUyNDMwMCw1MjQ0MjgsNTI0MzY0LDU5MDA3Miw0NTkwMDksNTI0MzcwLDUyNDMwNiw1MjQ1NzAsNDU5MDI1LDUyNDQwMiw1MjQzMzgsNTkwMDIwLDQ1OTAxNyw1MjQzODYsNTI0MzIyLDU4OTk4OCw1MjQyOTAsNTI0NDE4LDUyNDM1NCw1OTAwNTIsNDU5MDEzLDUyNDM3OCw1MjQzMTQsNTg5OTcyLDQ1OTAyOSw1MjQ0MTAsNTI0MzQ2LDU5MDAzNiw0NTkwMjEsNTI0Mzk0LDUyNDMzMCw1OTAwMDQsNTI0Mjk4LDUyNDQyNiw1MjQzNjIsNTkwMDY4LDQ1OTAxMSw1MjQzNzQsNTI0MzEwLDUyNDU3NCw0NTkwMjcsNTI0NDA2LDUyNDM0Miw1OTAwMjgsNDU5MDE5LDUyNDM5MCw1MjQzMjYsNTg5OTk2LDUyNDI5NCw1MjQ0MjIsNTI0MzU4LDU5MDA2MCw0NTkwMTUsNTI0MzgyLDUyNDMxOCw1ODk5ODAsNDU5MDMxLDUyNDQxNCw1MjQzNTAsNTkwMDQ0LDQ1OTAyMyw1MjQzOTgsNTI0MzM0LDU5MDAxMiw1MjQzMDIsNTI0NDMwLDUyNDM2Niw1OTAwNzYsNDU5MDA4LDUyNDM2OSw1MjQzMDUsNTI0NTY5LDQ1OTAyNCw1MjQ0MDEsNTI0MzM3LDU5MDAxOCw0NTkwMTYsNTI0Mzg1LDUyNDMyMSw1ODk5ODYsNTI0Mjg5LDUyNDQxNyw1MjQzNTMsNTkwMDUwLDQ1OTAxMiw1MjQzNzcsNTI0MzEzLDU4OTk3MCw0NTkwMjgsNTI0NDA5LDUyNDM0NSw1OTAwMzQsNDU5MDIwLDUyNDM5Myw1MjQzMjksNTkwMDAyLDUyNDI5Nyw1MjQ0MjUsNTI0MzYxLDU5MDA2Niw0NTkwMTAsNTI0MzczLDUyNDMwOSw1MjQ1NzMsNDU5MDI2LDUyNDQwNSw1MjQzNDEsNTkwMDI2LDQ1OTAxOCw1MjQzODksNTI0MzI1LDU4OTk5NCw1MjQyOTMsNTI0NDIxLDUyNDM1Nyw1OTAwNTgsNDU5MDE0LDUyNDM4MSw1MjQzMTcsNTg5OTc4LDQ1OTAzMCw1MjQ0MTMsNTI0MzQ5LDU5MDA0Miw0NTkwMjIsNTI0Mzk3LDUyNDMzMyw1OTAwMTAsNTI0MzAxLDUyNDQyOSw1MjQzNjUsNTkwMDc0LDQ1OTAwOSw1MjQzNzEsNTI0MzA3LDUyNDU3MSw0NTkwMjUsNTI0NDAzLDUyNDMzOSw1OTAwMjIsNDU5MDE3LDUyNDM4Nyw1MjQzMjMsNTg5OTkwLDUyNDI5MSw1MjQ0MTksNTI0MzU1LDU5MDA1NCw0NTkwMTMsNTI0Mzc5LDUyNDMxNSw1ODk5NzQsNDU5MDI5LDUyNDQxMSw1MjQzNDcsNTkwMDM4LDQ1OTAyMSw1MjQzOTUsNTI0MzMxLDU5MDAwNiw1MjQyOTksNTI0NDI3LDUyNDM2Myw1OTAwNzAsNDU5MDExLDUyNDM3NSw1MjQzMTEsNTI0NTc1LDQ1OTAyNyw1MjQ0MDcsNTI0MzQzLDU5MDAzMCw0NTkwMTksNTI0MzkxLDUyNDMyNyw1ODk5OTgsNTI0Mjk1LDUyNDQyMyw1MjQzNTksNTkwMDYyLDQ1OTAxNSw1MjQzODMsNTI0MzE5LDU4OTk4Miw0NTkwMzEsNTI0NDE1LDUyNDM1MSw1OTAwNDYsNDU5MDIzLDUyNDM5OSw1MjQzMzUsNTkwMDE0LDUyNDMwMyw1MjQ0MzEsNTI0MzY3LDU5MDA3OCw0NTkwMDgsNTI0MzY4LDUyNDMwNCw1MjQ1NjgsNDU5MDI0LDUyNDQwMCw1MjQzMzYsNTkwMDE3LDQ1OTAxNiw1MjQzODQsNTI0MzIwLDU4OTk4NSw1MjQyODgsNTI0NDE2LDUyNDM1Miw1OTAwNDksNDU5MDEyLDUyNDM3Niw1MjQzMTIsNTg5OTY5LDQ1OTAyOCw1MjQ0MDgsNTI0MzQ0LDU5MDAzMyw0NTkwMjAsNTI0MzkyLDUyNDMyOCw1OTAwMDEsNTI0Mjk2LDUyNDQyNCw1MjQzNjAsNTkwMDY1LDQ1OTAxMCw1MjQzNzIsNTI0MzA4LDUyNDU3Miw0NTkwMjYsNTI0NDA0LDUyNDM0MCw1OTAwMjUsNDU5MDE4LDUyNDM4OCw1MjQzMjQsNTg5OTkzLDUyNDI5Miw1MjQ0MjAsNTI0MzU2LDU5MDA1Nyw0NTkwMTQsNTI0MzgwLDUyNDMxNiw1ODk5NzcsNDU5MDMwLDUyNDQxMiw1MjQzNDgsNTkwMDQxLDQ1OTAyMiw1MjQzOTYsNTI0MzMyLDU5MDAwOSw1MjQzMDAsNTI0NDI4LDUyNDM2NCw1OTAwNzMsNDU5MDA5LDUyNDM3MCw1MjQzMDYsNTI0NTcwLDQ1OTAyNSw1MjQ0MDIsNTI0MzM4LDU5MDAyMSw0NTkwMTcsNTI0Mzg2LDUyNDMyMiw1ODk5ODksNTI0MjkwLDUyNDQxOCw1MjQzNTQsNTkwMDUzLDQ1OTAxMyw1MjQzNzgsNTI0MzE0LDU4OTk3Myw0NTkwMjksNTI0NDEwLDUyNDM0Niw1OTAwMzcsNDU5MDIxLDUyNDM5NCw1MjQzMzAsNTkwMDA1LDUyNDI5OCw1MjQ0MjYsNTI0MzYyLDU5MDA2OSw0NTkwMTEsNTI0Mzc0LDUyNDMxMCw1MjQ1NzQsNDU5MDI3LDUyNDQwNiw1MjQzNDIsNTkwMDI5LDQ1OTAxOSw1MjQzOTAsNTI0MzI2LDU4OTk5Nyw1MjQyOTQsNTI0NDIyLDUyNDM1OCw1OTAwNjEsNDU5MDE1LDUyNDM4Miw1MjQzMTgsNTg5OTgxLDQ1OTAzMSw1MjQ0MTQsNTI0MzUwLDU5MDA0NSw0NTkwMjMsNTI0Mzk4LDUyNDMzNCw1OTAwMTMsNTI0MzAyLDUyNDQzMCw1MjQzNjYsNTkwMDc3LDQ1OTAwOCw1MjQzNjksNTI0MzA1LDUyNDU2OSw0NTkwMjQsNTI0NDAxLDUyNDMzNyw1OTAwMTksNDU5MDE2LDUyNDM4NSw1MjQzMjEsNTg5OTg3LDUyNDI4OSw1MjQ0MTcsNTI0MzUzLDU5MDA1MSw0NTkwMTIsNTI0Mzc3LDUyNDMxMyw1ODk5NzEsNDU5MDI4LDUyNDQwOSw1MjQzNDUsNTkwMDM1LDQ1OTAyMCw1MjQzOTMsNTI0MzI5LDU5MDAwMyw1MjQyOTcsNTI0NDI1LDUyNDM2MSw1OTAwNjcsNDU5MDEwLDUyNDM3Myw1MjQzMDksNTI0NTczLDQ1OTAyNiw1MjQ0MDUsNTI0MzQxLDU5MDAyNyw0NTkwMTgsNTI0Mzg5LDUyNDMyNSw1ODk5OTUsNTI0MjkzLDUyNDQyMSw1MjQzNTcsNTkwMDU5LDQ1OTAxNCw1MjQzODEsNTI0MzE3LDU4OTk3OSw0NTkwMzAsNTI0NDEzLDUyNDM0OSw1OTAwNDMsNDU5MDIyLDUyNDM5Nyw1MjQzMzMsNTkwMDExLDUyNDMwMSw1MjQ0MjksNTI0MzY1LDU5MDA3NSw0NTkwMDksNTI0MzcxLDUyNDMwNyw1MjQ1NzEsNDU5MDI1LDUyNDQwMyw1MjQzMzksNTkwMDIzLDQ1OTAxNyw1MjQzODcsNTI0MzIzLDU4OTk5MSw1MjQyOTEsNTI0NDE5LDUyNDM1NSw1OTAwNTUsNDU5MDEzLDUyNDM3OSw1MjQzMTUsNTg5OTc1LDQ1OTAyOSw1MjQ0MTEsNTI0MzQ3LDU5MDAzOSw0NTkwMjEsNTI0Mzk1LDUyNDMzMSw1OTAwMDcsNTI0Mjk5LDUyNDQyNyw1MjQzNjMsNTkwMDcxLDQ1OTAxMSw1MjQzNzUsNTI0MzExLDUyNDU3NSw0NTkwMjcsNTI0NDA3LDUyNDM0Myw1OTAwMzEsNDU5MDE5LDUyNDM5MSw1MjQzMjcsNTg5OTk5LDUyNDI5NSw1MjQ0MjMsNTI0MzU5LDU5MDA2Myw0NTkwMTUsNTI0MzgzLDUyNDMxOSw1ODk5ODMsNDU5MDMxLDUyNDQxNSw1MjQzNTEsNTkwMDQ3LDQ1OTAyMyw1MjQzOTksNTI0MzM1LDU5MDAxNSw1MjQzMDMsNTI0NDMxLDUyNDM2Nyw1OTAwNzldKSw5XSxUdD1bbmV3IEludDMyQXJyYXkoWzMyNzY4MCwzMjc2OTYsMzI3Njg4LDMyNzcwNCwzMjc2ODQsMzI3NzAwLDMyNzY5MiwzMjc3MDgsMzI3NjgyLDMyNzY5OCwzMjc2OTAsMzI3NzA2LDMyNzY4NiwzMjc3MDIsMzI3Njk0LDAsMzI3NjgxLDMyNzY5NywzMjc2ODksMzI3NzA1LDMyNzY4NSwzMjc3MDEsMzI3NjkzLDMyNzcwOSwzMjc2ODMsMzI3Njk5LDMyNzY5MSwzMjc3MDcsMzI3Njg3LDMyNzcwMywzMjc2OTUsMF0pLDVdO2NsYXNzIEZsYXRlU3RyZWFtIGV4dGVuZHMgRGVjb2RlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIodCk7dGhpcy5zdHI9ZTt0aGlzLmRpY3Q9ZS5kaWN0O2NvbnN0IGk9ZS5nZXRCeXRlKCksYT1lLmdldEJ5dGUoKTtpZigtMT09PWl8fC0xPT09YSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEludmFsaWQgaGVhZGVyIGluIGZsYXRlIHN0cmVhbTogJHtpfSwgJHthfWApO2lmKDghPSgxNSZpKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYFVua25vd24gY29tcHJlc3Npb24gbWV0aG9kIGluIGZsYXRlIHN0cmVhbTogJHtpfSwgJHthfWApO2lmKCgoaTw8OCkrYSklMzEhPTApdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBCYWQgRkNIRUNLIGluIGZsYXRlIHN0cmVhbTogJHtpfSwgJHthfWApO2lmKDMyJmEpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBGRElDVCBiaXQgc2V0IGluIGZsYXRlIHN0cmVhbTogJHtpfSwgJHthfWApO3RoaXMuY29kZVNpemU9MDt0aGlzLmNvZGVCdWY9MH1nZXRCaXRzKGUpe2NvbnN0IHQ9dGhpcy5zdHI7bGV0IGksYT10aGlzLmNvZGVTaXplLHM9dGhpcy5jb2RlQnVmO2Zvcig7YTxlOyl7aWYoLTE9PT0oaT10LmdldEJ5dGUoKSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJCYWQgZW5jb2RpbmcgaW4gZmxhdGUgc3RyZWFtIik7c3w9aTw8YTthKz04fWk9cyYoMTw8ZSktMTt0aGlzLmNvZGVCdWY9cz4+ZTt0aGlzLmNvZGVTaXplPWEtPWU7cmV0dXJuIGl9Z2V0Q29kZShlKXtjb25zdCB0PXRoaXMuc3RyLGk9ZVswXSxhPWVbMV07bGV0IHMscj10aGlzLmNvZGVTaXplLG49dGhpcy5jb2RlQnVmO2Zvcig7cjxhJiYtMSE9PShzPXQuZ2V0Qnl0ZSgpKTspe258PXM8PHI7cis9OH1jb25zdCBvPWlbbiYoMTw8YSktMV0sZz1vPj4xNixjPTY1NTM1Jm87aWYoZzwxfHxyPGcpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJCYWQgZW5jb2RpbmcgaW4gZmxhdGUgc3RyZWFtIik7dGhpcy5jb2RlQnVmPW4+Pmc7dGhpcy5jb2RlU2l6ZT1yLWc7cmV0dXJuIGN9Z2VuZXJhdGVIdWZmbWFuVGFibGUoZSl7Y29uc3QgdD1lLmxlbmd0aDtsZXQgaSxhPTA7Zm9yKGk9MDtpPHQ7KytpKWVbaV0+YSYmKGE9ZVtpXSk7Y29uc3Qgcz0xPDxhLHI9bmV3IEludDMyQXJyYXkocyk7Zm9yKGxldCBuPTEsbz0wLGc9MjtuPD1hOysrbixvPDw9MSxnPDw9MSlmb3IobGV0IGE9MDthPHQ7KythKWlmKGVbYV09PT1uKXtsZXQgZT0wLHQ9bztmb3IoaT0wO2k8bjsrK2kpe2U9ZTw8MXwxJnQ7dD4+PTF9Zm9yKGk9ZTtpPHM7aSs9ZylyW2ldPW48PDE2fGE7KytvfXJldHVybltyLGFdfSNtKGUpe2luZm8oZSk7dGhpcy5lb2Y9ITB9cmVhZEJsb2NrKCl7bGV0IGUsdDtjb25zdCBpPXRoaXMuc3RyO2xldCBhLHMscj10aGlzLmdldEJpdHMoMyk7MSZyJiYodGhpcy5lb2Y9ITApO3I+Pj0xO2lmKDA9PT1yKXtsZXQgdDtpZigtMT09PSh0PWkuZ2V0Qnl0ZSgpKSl7dGhpcy4jbSgiQmFkIGJsb2NrIGhlYWRlciBpbiBmbGF0ZSBzdHJlYW0iKTtyZXR1cm59bGV0IGE9dDtpZigtMT09PSh0PWkuZ2V0Qnl0ZSgpKSl7dGhpcy4jbSgiQmFkIGJsb2NrIGhlYWRlciBpbiBmbGF0ZSBzdHJlYW0iKTtyZXR1cm59YXw9dDw8ODtpZigtMT09PSh0PWkuZ2V0Qnl0ZSgpKSl7dGhpcy4jbSgiQmFkIGJsb2NrIGhlYWRlciBpbiBmbGF0ZSBzdHJlYW0iKTtyZXR1cm59bGV0IHM9dDtpZigtMT09PSh0PWkuZ2V0Qnl0ZSgpKSl7dGhpcy4jbSgiQmFkIGJsb2NrIGhlYWRlciBpbiBmbGF0ZSBzdHJlYW0iKTtyZXR1cm59c3w9dDw8ODtpZihzIT09KDY1NTM1Jn5hKSYmKDAhPT1hfHwwIT09cykpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJCYWQgdW5jb21wcmVzc2VkIGJsb2NrIGxlbmd0aCBpbiBmbGF0ZSBzdHJlYW0iKTt0aGlzLmNvZGVCdWY9MDt0aGlzLmNvZGVTaXplPTA7Y29uc3Qgcj10aGlzLmJ1ZmZlckxlbmd0aCxuPXIrYTtlPXRoaXMuZW5zdXJlQnVmZmVyKG4pO3RoaXMuYnVmZmVyTGVuZ3RoPW47aWYoMD09PWEpLTE9PT1pLnBlZWtCeXRlKCkmJih0aGlzLmVvZj0hMCk7ZWxzZXtjb25zdCB0PWkuZ2V0Qnl0ZXMoYSk7ZS5zZXQodCxyKTt0Lmxlbmd0aDxhJiYodGhpcy5lb2Y9ITApfXJldHVybn1pZigxPT09cil7YT1LdDtzPVR0fWVsc2V7aWYoMiE9PXIpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJVbmtub3duIGJsb2NrIHR5cGUgaW4gZmxhdGUgc3RyZWFtIik7e2NvbnN0IGU9dGhpcy5nZXRCaXRzKDUpKzI1NyxpPXRoaXMuZ2V0Qml0cyg1KSsxLHI9dGhpcy5nZXRCaXRzKDQpKzQsbj1uZXcgVWludDhBcnJheShKdC5sZW5ndGgpO2xldCBvO2ZvcihvPTA7bzxyOysrbyluW0p0W29dXT10aGlzLmdldEJpdHMoMyk7Y29uc3QgZz10aGlzLmdlbmVyYXRlSHVmZm1hblRhYmxlKG4pO3Q9MDtvPTA7Y29uc3QgYz1lK2ksQz1uZXcgVWludDhBcnJheShjKTtsZXQgaCxsLFE7Zm9yKDtvPGM7KXtjb25zdCBlPXRoaXMuZ2V0Q29kZShnKTtpZigxNj09PWUpe2g9MjtsPTM7UT10fWVsc2UgaWYoMTc9PT1lKXtoPTM7bD0zO1E9dD0wfWVsc2V7aWYoMTghPT1lKXtDW28rK109dD1lO2NvbnRpbnVlfWg9NztsPTExO1E9dD0wfWxldCBpPXRoaXMuZ2V0Qml0cyhoKStsO2Zvcig7aS0tID4wOylDW28rK109UX1hPXRoaXMuZ2VuZXJhdGVIdWZmbWFuVGFibGUoQy5zdWJhcnJheSgwLGUpKTtzPXRoaXMuZ2VuZXJhdGVIdWZmbWFuVGFibGUoQy5zdWJhcnJheShlLGMpKX19ZT10aGlzLmJ1ZmZlcjtsZXQgbj1lP2UubGVuZ3RoOjAsbz10aGlzLmJ1ZmZlckxlbmd0aDtmb3IoOzspe2xldCBpPXRoaXMuZ2V0Q29kZShhKTtpZihpPDI1Nil7aWYobysxPj1uKXtlPXRoaXMuZW5zdXJlQnVmZmVyKG8rMSk7bj1lLmxlbmd0aH1lW28rK109aTtjb250aW51ZX1pZigyNTY9PT1pKXt0aGlzLmJ1ZmZlckxlbmd0aD1vO3JldHVybn1pLT0yNTc7aT1ZdFtpXTtsZXQgcj1pPj4xNjtyPjAmJihyPXRoaXMuZ2V0Qml0cyhyKSk7dD0oNjU1MzUmaSkrcjtpPXRoaXMuZ2V0Q29kZShzKTtpPXZ0W2ldO3I9aT4+MTY7cj4wJiYocj10aGlzLmdldEJpdHMocikpO2NvbnN0IGc9KDY1NTM1JmkpK3I7aWYobyt0Pj1uKXtlPXRoaXMuZW5zdXJlQnVmZmVyKG8rdCk7bj1lLmxlbmd0aH1mb3IobGV0IGk9MDtpPHQ7KytpLCsrbyllW29dPWVbby1nXX19fWNvbnN0IHF0PVt7cWU6MjIwMTcsbm1wczoxLG5scHM6MSxzd2l0Y2hGbGFnOjF9LHtxZToxMzMxMyxubXBzOjIsbmxwczo2LHN3aXRjaEZsYWc6MH0se3FlOjYxNDUsbm1wczozLG5scHM6OSxzd2l0Y2hGbGFnOjB9LHtxZToyNzUzLG5tcHM6NCxubHBzOjEyLHN3aXRjaEZsYWc6MH0se3FlOjEzMTMsbm1wczo1LG5scHM6Mjksc3dpdGNoRmxhZzowfSx7cWU6NTQ1LG5tcHM6MzgsbmxwczozMyxzd2l0Y2hGbGFnOjB9LHtxZToyMjAxNyxubXBzOjcsbmxwczo2LHN3aXRjaEZsYWc6MX0se3FlOjIxNTA1LG5tcHM6OCxubHBzOjE0LHN3aXRjaEZsYWc6MH0se3FlOjE4NDMzLG5tcHM6OSxubHBzOjE0LHN3aXRjaEZsYWc6MH0se3FlOjE0MzM3LG5tcHM6MTAsbmxwczoxNCxzd2l0Y2hGbGFnOjB9LHtxZToxMjI4OSxubXBzOjExLG5scHM6MTcsc3dpdGNoRmxhZzowfSx7cWU6OTIxNyxubXBzOjEyLG5scHM6MTgsc3dpdGNoRmxhZzowfSx7cWU6NzE2OSxubXBzOjEzLG5scHM6MjAsc3dpdGNoRmxhZzowfSx7cWU6NTYzMyxubXBzOjI5LG5scHM6MjEsc3dpdGNoRmxhZzowfSx7cWU6MjIwMTcsbm1wczoxNSxubHBzOjE0LHN3aXRjaEZsYWc6MX0se3FlOjIxNTA1LG5tcHM6MTYsbmxwczoxNCxzd2l0Y2hGbGFnOjB9LHtxZToyMDczNyxubXBzOjE3LG5scHM6MTUsc3dpdGNoRmxhZzowfSx7cWU6MTg0MzMsbm1wczoxOCxubHBzOjE2LHN3aXRjaEZsYWc6MH0se3FlOjE0MzM3LG5tcHM6MTksbmxwczoxNyxzd2l0Y2hGbGFnOjB9LHtxZToxMzMxMyxubXBzOjIwLG5scHM6MTgsc3dpdGNoRmxhZzowfSx7cWU6MTIyODksbm1wczoyMSxubHBzOjE5LHN3aXRjaEZsYWc6MH0se3FlOjEwMjQxLG5tcHM6MjIsbmxwczoxOSxzd2l0Y2hGbGFnOjB9LHtxZTo5MjE3LG5tcHM6MjMsbmxwczoyMCxzd2l0Y2hGbGFnOjB9LHtxZTo4NzA1LG5tcHM6MjQsbmxwczoyMSxzd2l0Y2hGbGFnOjB9LHtxZTo3MTY5LG5tcHM6MjUsbmxwczoyMixzd2l0Y2hGbGFnOjB9LHtxZTo2MTQ1LG5tcHM6MjYsbmxwczoyMyxzd2l0Y2hGbGFnOjB9LHtxZTo1NjMzLG5tcHM6MjcsbmxwczoyNCxzd2l0Y2hGbGFnOjB9LHtxZTo1MTIxLG5tcHM6MjgsbmxwczoyNSxzd2l0Y2hGbGFnOjB9LHtxZTo0NjA5LG5tcHM6MjksbmxwczoyNixzd2l0Y2hGbGFnOjB9LHtxZTo0MzUzLG5tcHM6MzAsbmxwczoyNyxzd2l0Y2hGbGFnOjB9LHtxZToyNzUzLG5tcHM6MzEsbmxwczoyOCxzd2l0Y2hGbGFnOjB9LHtxZToyNDk3LG5tcHM6MzIsbmxwczoyOSxzd2l0Y2hGbGFnOjB9LHtxZToyMjA5LG5tcHM6MzMsbmxwczozMCxzd2l0Y2hGbGFnOjB9LHtxZToxMzEzLG5tcHM6MzQsbmxwczozMSxzd2l0Y2hGbGFnOjB9LHtxZToxMDg5LG5tcHM6MzUsbmxwczozMixzd2l0Y2hGbGFnOjB9LHtxZTo2NzMsbm1wczozNixubHBzOjMzLHN3aXRjaEZsYWc6MH0se3FlOjU0NSxubXBzOjM3LG5scHM6MzQsc3dpdGNoRmxhZzowfSx7cWU6MzIxLG5tcHM6MzgsbmxwczozNSxzd2l0Y2hGbGFnOjB9LHtxZToyNzMsbm1wczozOSxubHBzOjM2LHN3aXRjaEZsYWc6MH0se3FlOjEzMyxubXBzOjQwLG5scHM6Mzcsc3dpdGNoRmxhZzowfSx7cWU6NzMsbm1wczo0MSxubHBzOjM4LHN3aXRjaEZsYWc6MH0se3FlOjM3LG5tcHM6NDIsbmxwczozOSxzd2l0Y2hGbGFnOjB9LHtxZToyMSxubXBzOjQzLG5scHM6NDAsc3dpdGNoRmxhZzowfSx7cWU6OSxubXBzOjQ0LG5scHM6NDEsc3dpdGNoRmxhZzowfSx7cWU6NSxubXBzOjQ1LG5scHM6NDIsc3dpdGNoRmxhZzowfSx7cWU6MSxubXBzOjQ1LG5scHM6NDMsc3dpdGNoRmxhZzowfSx7cWU6MjIwMTcsbm1wczo0NixubHBzOjQ2LHN3aXRjaEZsYWc6MH1dO2NsYXNzIEFyaXRobWV0aWNEZWNvZGVye2NvbnN0cnVjdG9yKGUsdCxpKXt0aGlzLmRhdGE9ZTt0aGlzLmJwPXQ7dGhpcy5kYXRhRW5kPWk7dGhpcy5jaGlnaD1lW3RdO3RoaXMuY2xvdz0wO3RoaXMuYnl0ZUluKCk7dGhpcy5jaGlnaD10aGlzLmNoaWdoPDw3JjY1NTM1fHRoaXMuY2xvdz4+OSYxMjc7dGhpcy5jbG93PXRoaXMuY2xvdzw8NyY2NTUzNTt0aGlzLmN0LT03O3RoaXMuYT0zMjc2OH1ieXRlSW4oKXtjb25zdCBlPXRoaXMuZGF0YTtsZXQgdD10aGlzLmJwO2lmKDI1NT09PWVbdF0paWYoZVt0KzFdPjE0Myl7dGhpcy5jbG93Kz02NTI4MDt0aGlzLmN0PTh9ZWxzZXt0Kys7dGhpcy5jbG93Kz1lW3RdPDw5O3RoaXMuY3Q9Nzt0aGlzLmJwPXR9ZWxzZXt0Kys7dGhpcy5jbG93Kz10PHRoaXMuZGF0YUVuZD9lW3RdPDw4OjY1MjgwO3RoaXMuY3Q9ODt0aGlzLmJwPXR9aWYodGhpcy5jbG93PjY1NTM1KXt0aGlzLmNoaWdoKz10aGlzLmNsb3c+PjE2O3RoaXMuY2xvdyY9NjU1MzV9fXJlYWRCaXQoZSx0KXtsZXQgaT1lW3RdPj4xLGE9MSZlW3RdO2NvbnN0IHM9cXRbaV0scj1zLnFlO2xldCBuLG89dGhpcy5hLXI7aWYodGhpcy5jaGlnaDxyKWlmKG88cil7bz1yO249YTtpPXMubm1wc31lbHNle289cjtuPTFeYTsxPT09cy5zd2l0Y2hGbGFnJiYoYT1uKTtpPXMubmxwc31lbHNle3RoaXMuY2hpZ2gtPXI7aWYoMCE9KDMyNzY4Jm8pKXt0aGlzLmE9bztyZXR1cm4gYX1pZihvPHIpe249MV5hOzE9PT1zLnN3aXRjaEZsYWcmJihhPW4pO2k9cy5ubHBzfWVsc2V7bj1hO2k9cy5ubXBzfX1kb3swPT09dGhpcy5jdCYmdGhpcy5ieXRlSW4oKTtvPDw9MTt0aGlzLmNoaWdoPXRoaXMuY2hpZ2g8PDEmNjU1MzV8dGhpcy5jbG93Pj4xNSYxO3RoaXMuY2xvdz10aGlzLmNsb3c8PDEmNjU1MzU7dGhpcy5jdC0tfXdoaWxlKDA9PSgzMjc2OCZvKSk7dGhpcy5hPW87ZVt0XT1pPDwxfGE7cmV0dXJuIG59fWNsYXNzIEpiaWcyRXJyb3IgZXh0ZW5kcyBydHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJKYmlnMkVycm9yIil9fWNsYXNzIENvbnRleHRDYWNoZXtnZXRDb250ZXh0cyhlKXtyZXR1cm4gZSBpbiB0aGlzP3RoaXNbZV06dGhpc1tlXT1uZXcgSW50OEFycmF5KDY1NTM2KX19Y2xhc3MgRGVjb2RpbmdDb250ZXh0e2NvbnN0cnVjdG9yKGUsdCxpKXt0aGlzLmRhdGE9ZTt0aGlzLnN0YXJ0PXQ7dGhpcy5lbmQ9aX1nZXQgZGVjb2Rlcigpe3JldHVybiBzaGFkb3codGhpcywiZGVjb2RlciIsbmV3IEFyaXRobWV0aWNEZWNvZGVyKHRoaXMuZGF0YSx0aGlzLnN0YXJ0LHRoaXMuZW5kKSl9Z2V0IGNvbnRleHRDYWNoZSgpe3JldHVybiBzaGFkb3codGhpcywiY29udGV4dENhY2hlIixuZXcgQ29udGV4dENhY2hlKX19Y29uc3QgT3Q9MioqMzEtMSxQdD0tKDIqKjMxKTtmdW5jdGlvbiBkZWNvZGVJbnRlZ2VyKGUsdCxpKXtjb25zdCBhPWUuZ2V0Q29udGV4dHModCk7bGV0IHM9MTtmdW5jdGlvbiByZWFkQml0cyhlKXtsZXQgdD0wO2ZvcihsZXQgcj0wO3I8ZTtyKyspe2NvbnN0IGU9aS5yZWFkQml0KGEscyk7cz1zPDI1Nj9zPDwxfGU6NTExJihzPDwxfGUpfDI1Njt0PXQ8PDF8ZX1yZXR1cm4gdD4+PjB9Y29uc3Qgcj1yZWFkQml0cygxKSxuPXJlYWRCaXRzKDEpP3JlYWRCaXRzKDEpP3JlYWRCaXRzKDEpP3JlYWRCaXRzKDEpP3JlYWRCaXRzKDEpP3JlYWRCaXRzKDMyKSs0NDM2OnJlYWRCaXRzKDEyKSszNDA6cmVhZEJpdHMoOCkrODQ6cmVhZEJpdHMoNikrMjA6cmVhZEJpdHMoNCkrNDpyZWFkQml0cygyKTtsZXQgbzswPT09cj9vPW46bj4wJiYobz0tbik7cmV0dXJuIG8+PVB0JiZvPD1PdD9vOm51bGx9ZnVuY3Rpb24gZGVjb2RlSUFJRChlLHQsaSl7Y29uc3QgYT1lLmdldENvbnRleHRzKCJJQUlEIik7bGV0IHM9MTtmb3IobGV0IGU9MDtlPGk7ZSsrKXtzPXM8PDF8dC5yZWFkQml0KGEscyl9cmV0dXJuIGk8MzE/cyYoMTw8aSktMToyMTQ3NDgzNjQ3JnN9Y29uc3QgV3Q9WyJTeW1ib2xEaWN0aW9uYXJ5IixudWxsLG51bGwsbnVsbCwiSW50ZXJtZWRpYXRlVGV4dFJlZ2lvbiIsbnVsbCwiSW1tZWRpYXRlVGV4dFJlZ2lvbiIsIkltbWVkaWF0ZUxvc3NsZXNzVGV4dFJlZ2lvbiIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLCJQYXR0ZXJuRGljdGlvbmFyeSIsbnVsbCxudWxsLG51bGwsIkludGVybWVkaWF0ZUhhbGZ0b25lUmVnaW9uIixudWxsLCJJbW1lZGlhdGVIYWxmdG9uZVJlZ2lvbiIsIkltbWVkaWF0ZUxvc3NsZXNzSGFsZnRvbmVSZWdpb24iLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLCJJbnRlcm1lZGlhdGVHZW5lcmljUmVnaW9uIixudWxsLCJJbW1lZGlhdGVHZW5lcmljUmVnaW9uIiwiSW1tZWRpYXRlTG9zc2xlc3NHZW5lcmljUmVnaW9uIiwiSW50ZXJtZWRpYXRlR2VuZXJpY1JlZmluZW1lbnRSZWdpb24iLG51bGwsIkltbWVkaWF0ZUdlbmVyaWNSZWZpbmVtZW50UmVnaW9uIiwiSW1tZWRpYXRlTG9zc2xlc3NHZW5lcmljUmVmaW5lbWVudFJlZ2lvbiIsbnVsbCxudWxsLG51bGwsbnVsbCwiUGFnZUluZm9ybWF0aW9uIiwiRW5kT2ZQYWdlIiwiRW5kT2ZTdHJpcGUiLCJFbmRPZkZpbGUiLCJQcm9maWxlcyIsIlRhYmxlcyIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLCJFeHRlbnNpb24iXSxqdD1bW3t4Oi0xLHk6LTJ9LHt4OjAseTotMn0se3g6MSx5Oi0yfSx7eDotMix5Oi0xfSx7eDotMSx5Oi0xfSx7eDowLHk6LTF9LHt4OjEseTotMX0se3g6Mix5Oi0xfSx7eDotNCx5OjB9LHt4Oi0zLHk6MH0se3g6LTIseTowfSx7eDotMSx5OjB9XSxbe3g6LTEseTotMn0se3g6MCx5Oi0yfSx7eDoxLHk6LTJ9LHt4OjIseTotMn0se3g6LTIseTotMX0se3g6LTEseTotMX0se3g6MCx5Oi0xfSx7eDoxLHk6LTF9LHt4OjIseTotMX0se3g6LTMseTowfSx7eDotMix5OjB9LHt4Oi0xLHk6MH1dLFt7eDotMSx5Oi0yfSx7eDowLHk6LTJ9LHt4OjEseTotMn0se3g6LTIseTotMX0se3g6LTEseTotMX0se3g6MCx5Oi0xfSx7eDoxLHk6LTF9LHt4Oi0yLHk6MH0se3g6LTEseTowfV0sW3t4Oi0zLHk6LTF9LHt4Oi0yLHk6LTF9LHt4Oi0xLHk6LTF9LHt4OjAseTotMX0se3g6MSx5Oi0xfSx7eDotNCx5OjB9LHt4Oi0zLHk6MH0se3g6LTIseTowfSx7eDotMSx5OjB9XV0sWHQ9W3tjb2Rpbmc6W3t4OjAseTotMX0se3g6MSx5Oi0xfSx7eDotMSx5OjB9XSxyZWZlcmVuY2U6W3t4OjAseTotMX0se3g6MSx5Oi0xfSx7eDotMSx5OjB9LHt4OjAseTowfSx7eDoxLHk6MH0se3g6LTEseToxfSx7eDowLHk6MX0se3g6MSx5OjF9XX0se2NvZGluZzpbe3g6LTEseTotMX0se3g6MCx5Oi0xfSx7eDoxLHk6LTF9LHt4Oi0xLHk6MH1dLHJlZmVyZW5jZTpbe3g6MCx5Oi0xfSx7eDotMSx5OjB9LHt4OjAseTowfSx7eDoxLHk6MH0se3g6MCx5OjF9LHt4OjEseToxfV19XSxadD1bMzk3MTcsMTk0MSwyMjksNDA1XSxWdD1bMzIsOF07ZnVuY3Rpb24gZGVjb2RlQml0bWFwKGUsdCxpLGEscyxyLG4sbyl7aWYoZSl7cmV0dXJuIGRlY29kZU1NUkJpdG1hcChuZXcgUmVhZGVyKG8uZGF0YSxvLnN0YXJ0LG8uZW5kKSx0LGksITEpfWlmKDA9PT1hJiYhciYmIXMmJjQ9PT1uLmxlbmd0aCYmMz09PW5bMF0ueCYmLTE9PT1uWzBdLnkmJi0zPT09blsxXS54JiYtMT09PW5bMV0ueSYmMj09PW5bMl0ueCYmLTI9PT1uWzJdLnkmJi0yPT09blszXS54JiYtMj09PW5bM10ueSlyZXR1cm4gZnVuY3Rpb24gZGVjb2RlQml0bWFwVGVtcGxhdGUwKGUsdCxpKXtjb25zdCBhPWkuZGVjb2RlcixzPWkuY29udGV4dENhY2hlLmdldENvbnRleHRzKCJHQiIpLHI9W107bGV0IG4sbyxnLGMsQyxoLGw7Zm9yKG89MDtvPHQ7bysrKXtDPXJbb109bmV3IFVpbnQ4QXJyYXkoZSk7aD1vPDE/QzpyW28tMV07bD1vPDI/QzpyW28tMl07bj1sWzBdPDwxM3xsWzFdPDwxMnxsWzJdPDwxMXxoWzBdPDw3fGhbMV08PDZ8aFsyXTw8NXxoWzNdPDw0O2ZvcihnPTA7ZzxlO2crKyl7Q1tnXT1jPWEucmVhZEJpdChzLG4pO249KDMxNzM1Jm4pPDwxfChnKzM8ZT9sW2crM108PDExOjApfChnKzQ8ZT9oW2crNF08PDQ6MCl8Y319cmV0dXJuIHJ9KHQsaSxvKTtjb25zdCBnPSEhcixjPWp0W2FdLmNvbmNhdChuKTtjLnNvcnQoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUueS10Lnl8fGUueC10Lnh9KSk7Y29uc3QgQz1jLmxlbmd0aCxoPW5ldyBJbnQ4QXJyYXkoQyksbD1uZXcgSW50OEFycmF5KEMpLFE9W107bGV0IEUsdSxkPTAsZj0wLHA9MCxtPTA7Zm9yKHU9MDt1PEM7dSsrKXtoW3VdPWNbdV0ueDtsW3VdPWNbdV0ueTtmPU1hdGgubWluKGYsY1t1XS54KTtwPU1hdGgubWF4KHAsY1t1XS54KTttPU1hdGgubWluKG0sY1t1XS55KTt1PEMtMSYmY1t1XS55PT09Y1t1KzFdLnkmJmNbdV0ueD09PWNbdSsxXS54LTE/ZHw9MTw8Qy0xLXU6US5wdXNoKHUpfWNvbnN0IHk9US5sZW5ndGgsdz1uZXcgSW50OEFycmF5KHkpLGI9bmV3IEludDhBcnJheSh5KSxEPW5ldyBVaW50MTZBcnJheSh5KTtmb3IoRT0wO0U8eTtFKyspe3U9UVtFXTt3W0VdPWNbdV0ueDtiW0VdPWNbdV0ueTtEW0VdPTE8PEMtMS11fWNvbnN0IEY9LWYsUz0tbSxrPXQtcCxOPVp0W2FdO2xldCBSPW5ldyBVaW50OEFycmF5KHQpO2NvbnN0IEc9W10seD1vLmRlY29kZXIsVT1vLmNvbnRleHRDYWNoZS5nZXRDb250ZXh0cygiR0IiKTtsZXQgTSxMLEgsSixZLHY9MCxLPTA7Zm9yKGxldCBlPTA7ZTxpO2UrKyl7aWYocyl7dl49eC5yZWFkQml0KFUsTik7aWYodil7Ry5wdXNoKFIpO2NvbnRpbnVlfX1SPW5ldyBVaW50OEFycmF5KFIpO0cucHVzaChSKTtmb3IoTT0wO008dDtNKyspe2lmKGcmJnJbZV1bTV0pe1JbTV09MDtjb250aW51ZX1pZihNPj1GJiZNPGsmJmU+PVMpe0s9Szw8MSZkO2Zvcih1PTA7dTx5O3UrKyl7TD1lK2JbdV07SD1NK3dbdV07Sj1HW0xdW0hdO2lmKEope0o9RFt1XTtLfD1KfX19ZWxzZXtLPTA7WT1DLTE7Zm9yKHU9MDt1PEM7dSsrLFktLSl7SD1NK2hbdV07aWYoSD49MCYmSDx0KXtMPWUrbFt1XTtpZihMPj0wKXtKPUdbTF1bSF07SiYmKEt8PUo8PFkpfX19fWNvbnN0IGk9eC5yZWFkQml0KFUsSyk7UltNXT1pfX1yZXR1cm4gR31mdW5jdGlvbiBkZWNvZGVSZWZpbmVtZW50KGUsdCxpLGEscyxyLG4sbyxnKXtsZXQgYz1YdFtpXS5jb2Rpbmc7MD09PWkmJihjPWMuY29uY2F0KFtvWzBdXSkpO2NvbnN0IEM9Yy5sZW5ndGgsaD1uZXcgSW50MzJBcnJheShDKSxsPW5ldyBJbnQzMkFycmF5KEMpO2xldCBRO2ZvcihRPTA7UTxDO1ErKyl7aFtRXT1jW1FdLng7bFtRXT1jW1FdLnl9bGV0IEU9WHRbaV0ucmVmZXJlbmNlOzA9PT1pJiYoRT1FLmNvbmNhdChbb1sxXV0pKTtjb25zdCB1PUUubGVuZ3RoLGQ9bmV3IEludDMyQXJyYXkodSksZj1uZXcgSW50MzJBcnJheSh1KTtmb3IoUT0wO1E8dTtRKyspe2RbUV09RVtRXS54O2ZbUV09RVtRXS55fWNvbnN0IHA9YVswXS5sZW5ndGgsbT1hLmxlbmd0aCx5PVZ0W2ldLHc9W10sYj1nLmRlY29kZXIsRD1nLmNvbnRleHRDYWNoZS5nZXRDb250ZXh0cygiR1IiKTtsZXQgRj0wO2ZvcihsZXQgaT0wO2k8dDtpKyspe2lmKG4pe0ZePWIucmVhZEJpdChELHkpO2lmKEYpdGhyb3cgbmV3IEpiaWcyRXJyb3IoInByZWRpY3Rpb24gaXMgbm90IHN1cHBvcnRlZCIpfWNvbnN0IHQ9bmV3IFVpbnQ4QXJyYXkoZSk7dy5wdXNoKHQpO2ZvcihsZXQgbj0wO248ZTtuKyspe2xldCBvLGcsYz0wO2ZvcihRPTA7UTxDO1ErKyl7bz1pK2xbUV07Zz1uK2hbUV07bzwwfHxnPDB8fGc+PWU/Yzw8PTE6Yz1jPDwxfHdbb11bZ119Zm9yKFE9MDtRPHU7USsrKXtvPWkrZltRXS1yO2c9bitkW1FdLXM7bzwwfHxvPj1tfHxnPDB8fGc+PXA/Yzw8PTE6Yz1jPDwxfGFbb11bZ119Y29uc3QgRT1iLnJlYWRCaXQoRCxjKTt0W25dPUV9fXJldHVybiB3fWZ1bmN0aW9uIGRlY29kZVRleHRSZWdpb24oZSx0LGksYSxzLHIsbixvLGcsYyxDLGgsbCxRLEUsdSxkLGYscCl7aWYoZSYmdCl0aHJvdyBuZXcgSmJpZzJFcnJvcigicmVmaW5lbWVudCB3aXRoIEh1ZmZtYW4gaXMgbm90IHN1cHBvcnRlZCIpO2NvbnN0IG09W107bGV0IHksdztmb3IoeT0wO3k8YTt5Kyspe3c9bmV3IFVpbnQ4QXJyYXkoaSk7aWYocylmb3IobGV0IGU9MDtlPGk7ZSsrKXdbZV09czttLnB1c2godyl9Y29uc3QgYj1kLmRlY29kZXIsRD1kLmNvbnRleHRDYWNoZTtsZXQgRj1lPy1RLnRhYmxlRGVsdGFULmRlY29kZShwKTotZGVjb2RlSW50ZWdlcihELCJJQURUIixiKSxTPTA7eT0wO2Zvcig7eTxyOyl7Ris9ZT9RLnRhYmxlRGVsdGFULmRlY29kZShwKTpkZWNvZGVJbnRlZ2VyKEQsIklBRFQiLGIpO1MrPWU/US50YWJsZUZpcnN0Uy5kZWNvZGUocCk6ZGVjb2RlSW50ZWdlcihELCJJQUZTIixiKTtsZXQgYT1TO2Zvcig7Oyl7bGV0IHM9MDtuPjEmJihzPWU/cC5yZWFkQml0cyhmKTpkZWNvZGVJbnRlZ2VyKEQsIklBSVQiLGIpKTtjb25zdCByPW4qRitzLFM9ZT9RLnN5bWJvbElEVGFibGUuZGVjb2RlKHApOmRlY29kZUlBSUQoRCxiLGcpLGs9dCYmKGU/cC5yZWFkQml0KCk6ZGVjb2RlSW50ZWdlcihELCJJQVJJIixiKSk7bGV0IE49b1tTXSxSPU5bMF0ubGVuZ3RoLEc9Ti5sZW5ndGg7aWYoayl7Y29uc3QgZT1kZWNvZGVJbnRlZ2VyKEQsIklBUkRXIixiKSx0PWRlY29kZUludGVnZXIoRCwiSUFSREgiLGIpO1IrPWU7Rys9dDtOPWRlY29kZVJlZmluZW1lbnQoUixHLEUsTiwoZT4+MSkrZGVjb2RlSW50ZWdlcihELCJJQVJEWCIsYiksKHQ+PjEpK2RlY29kZUludGVnZXIoRCwiSUFSRFkiLGIpLCExLHUsZCl9bGV0IHg9MDtjPzEmaD94PUctMTphKz1HLTE6aD4xP2ErPVItMTp4PVItMTtjb25zdCBVPXItKDEmaD8wOkctMSksTT1hLSgyJmg/Ui0xOjApO2xldCBMLEgsSjtpZihjKWZvcihMPTA7TDxHO0wrKyl7dz1tW00rTF07aWYoIXcpY29udGludWU7Sj1OW0xdO2NvbnN0IGU9TWF0aC5taW4oaS1VLFIpO3N3aXRjaChsKXtjYXNlIDA6Zm9yKEg9MDtIPGU7SCsrKXdbVStIXXw9SltIXTticmVhaztjYXNlIDI6Zm9yKEg9MDtIPGU7SCsrKXdbVStIXV49SltIXTticmVhaztkZWZhdWx0OnRocm93IG5ldyBKYmlnMkVycm9yKGBvcGVyYXRvciAke2x9IGlzIG5vdCBzdXBwb3J0ZWRgKX19ZWxzZSBmb3IoSD0wO0g8RztIKyspe3c9bVtVK0hdO2lmKHcpe0o9TltIXTtzd2l0Y2gobCl7Y2FzZSAwOmZvcihMPTA7TDxSO0wrKyl3W00rTF18PUpbTF07YnJlYWs7Y2FzZSAyOmZvcihMPTA7TDxSO0wrKyl3W00rTF1ePUpbTF07YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgSmJpZzJFcnJvcihgb3BlcmF0b3IgJHtsfSBpcyBub3Qgc3VwcG9ydGVkYCl9fX15Kys7Y29uc3QgWT1lP1EudGFibGVEZWx0YVMuZGVjb2RlKHApOmRlY29kZUludGVnZXIoRCwiSUFEUyIsYik7aWYobnVsbD09PVkpYnJlYWs7YSs9eCtZK0N9fXJldHVybiBtfWZ1bmN0aW9uIHJlYWRTZWdtZW50SGVhZGVyKGUsdCl7Y29uc3QgaT17fTtpLm51bWJlcj1yZWFkVWludDMyKGUsdCk7Y29uc3QgYT1lW3QrNF0scz02MyZhO2lmKCFXdFtzXSl0aHJvdyBuZXcgSmJpZzJFcnJvcigiaW52YWxpZCBzZWdtZW50IHR5cGU6ICIrcyk7aS50eXBlPXM7aS50eXBlTmFtZT1XdFtzXTtpLmRlZmVycmVkTm9uUmV0YWluPSEhKDEyOCZhKTtjb25zdCByPSEhKDY0JmEpLG49ZVt0KzVdO2xldCBvPW4+PjUmNztjb25zdCBnPVszMSZuXTtsZXQgYz10KzY7aWYoNz09PW4pe289NTM2ODcwOTExJnJlYWRVaW50MzIoZSxjLTEpO2MrPTM7bGV0IHQ9bys3Pj4zO2dbMF09ZVtjKytdO2Zvcig7LS10PjA7KWcucHVzaChlW2MrK10pfWVsc2UgaWYoNT09PW58fDY9PT1uKXRocm93IG5ldyBKYmlnMkVycm9yKCJpbnZhbGlkIHJlZmVycmVkLXRvIGZsYWdzIik7aS5yZXRhaW5CaXRzPWc7bGV0IEM9NDtpLm51bWJlcjw9MjU2P0M9MTppLm51bWJlcjw9NjU1MzYmJihDPTIpO2NvbnN0IGg9W107bGV0IGwsUTtmb3IobD0wO2w8bztsKyspe2xldCB0O3Q9MT09PUM/ZVtjXToyPT09Qz9yZWFkVWludDE2KGUsYyk6cmVhZFVpbnQzMihlLGMpO2gucHVzaCh0KTtjKz1DfWkucmVmZXJyZWRUbz1oO2lmKHIpe2kucGFnZUFzc29jaWF0aW9uPXJlYWRVaW50MzIoZSxjKTtjKz00fWVsc2UgaS5wYWdlQXNzb2NpYXRpb249ZVtjKytdO2kubGVuZ3RoPXJlYWRVaW50MzIoZSxjKTtjKz00O2lmKDQyOTQ5NjcyOTU9PT1pLmxlbmd0aCl7aWYoMzghPT1zKXRocm93IG5ldyBKYmlnMkVycm9yKCJpbnZhbGlkIHVua25vd24gc2VnbWVudCBsZW5ndGgiKTt7Y29uc3QgdD1yZWFkUmVnaW9uU2VnbWVudEluZm9ybWF0aW9uKGUsYyksYT0hISgxJmVbYyt6dF0pLHM9NixyPW5ldyBVaW50OEFycmF5KHMpO2lmKCFhKXtyWzBdPTI1NTtyWzFdPTE3Mn1yWzJdPXQuaGVpZ2h0Pj4+MjQmMjU1O3JbM109dC5oZWlnaHQ+PjE2JjI1NTtyWzRdPXQuaGVpZ2h0Pj44JjI1NTtyWzVdPTI1NSZ0LmhlaWdodDtmb3IobD1jLFE9ZS5sZW5ndGg7bDxRO2wrKyl7bGV0IHQ9MDtmb3IoO3Q8cyYmclt0XT09PWVbbCt0XTspdCsrO2lmKHQ9PT1zKXtpLmxlbmd0aD1sK3M7YnJlYWt9fWlmKDQyOTQ5NjcyOTU9PT1pLmxlbmd0aCl0aHJvdyBuZXcgSmJpZzJFcnJvcigic2VnbWVudCBlbmQgd2FzIG5vdCBmb3VuZCIpfX1pLmhlYWRlckVuZD1jO3JldHVybiBpfWZ1bmN0aW9uIHJlYWRTZWdtZW50cyhlLHQsaSxhKXtjb25zdCBzPVtdO2xldCByPWk7Zm9yKDtyPGE7KXtjb25zdCBpPXJlYWRTZWdtZW50SGVhZGVyKHQscik7cj1pLmhlYWRlckVuZDtjb25zdCBhPXtoZWFkZXI6aSxkYXRhOnR9O2lmKCFlLnJhbmRvbUFjY2Vzcyl7YS5zdGFydD1yO3IrPWkubGVuZ3RoO2EuZW5kPXJ9cy5wdXNoKGEpO2lmKDUxPT09aS50eXBlKWJyZWFrfWlmKGUucmFuZG9tQWNjZXNzKWZvcihsZXQgZT0wLHQ9cy5sZW5ndGg7ZTx0O2UrKyl7c1tlXS5zdGFydD1yO3IrPXNbZV0uaGVhZGVyLmxlbmd0aDtzW2VdLmVuZD1yfXJldHVybiBzfWZ1bmN0aW9uIHJlYWRSZWdpb25TZWdtZW50SW5mb3JtYXRpb24oZSx0KXtyZXR1cm57d2lkdGg6cmVhZFVpbnQzMihlLHQpLGhlaWdodDpyZWFkVWludDMyKGUsdCs0KSx4OnJlYWRVaW50MzIoZSx0KzgpLHk6cmVhZFVpbnQzMihlLHQrMTIpLGNvbWJpbmF0aW9uT3BlcmF0b3I6NyZlW3QrMTZdfX1jb25zdCB6dD0xNztmdW5jdGlvbiBwcm9jZXNzU2VnbWVudChlLHQpe2NvbnN0IGk9ZS5oZWFkZXIsYT1lLmRhdGEscz1lLmVuZDtsZXQgcixuLG8sZyxjPWUuc3RhcnQ7c3dpdGNoKGkudHlwZSl7Y2FzZSAwOmNvbnN0IGU9e30sdD1yZWFkVWludDE2KGEsYyk7ZS5odWZmbWFuPSEhKDEmdCk7ZS5yZWZpbmVtZW50PSEhKDImdCk7ZS5odWZmbWFuREhTZWxlY3Rvcj10Pj4yJjM7ZS5odWZmbWFuRFdTZWxlY3Rvcj10Pj40JjM7ZS5iaXRtYXBTaXplU2VsZWN0b3I9dD4+NiYxO2UuYWdncmVnYXRpb25JbnN0YW5jZXNTZWxlY3Rvcj10Pj43JjE7ZS5iaXRtYXBDb2RpbmdDb250ZXh0VXNlZD0hISgyNTYmdCk7ZS5iaXRtYXBDb2RpbmdDb250ZXh0UmV0YWluZWQ9ISEoNTEyJnQpO2UudGVtcGxhdGU9dD4+MTAmMztlLnJlZmluZW1lbnRUZW1wbGF0ZT10Pj4xMiYxO2MrPTI7aWYoIWUuaHVmZm1hbil7Zz0wPT09ZS50ZW1wbGF0ZT80OjE7bj1bXTtmb3Iobz0wO288ZztvKyspe24ucHVzaCh7eDpyZWFkSW50OChhLGMpLHk6cmVhZEludDgoYSxjKzEpfSk7Yys9Mn1lLmF0PW59aWYoZS5yZWZpbmVtZW50JiYhZS5yZWZpbmVtZW50VGVtcGxhdGUpe249W107Zm9yKG89MDtvPDI7bysrKXtuLnB1c2goe3g6cmVhZEludDgoYSxjKSx5OnJlYWRJbnQ4KGEsYysxKX0pO2MrPTJ9ZS5yZWZpbmVtZW50QXQ9bn1lLm51bWJlck9mRXhwb3J0ZWRTeW1ib2xzPXJlYWRVaW50MzIoYSxjKTtjKz00O2UubnVtYmVyT2ZOZXdTeW1ib2xzPXJlYWRVaW50MzIoYSxjKTtjKz00O3I9W2UsaS5udW1iZXIsaS5yZWZlcnJlZFRvLGEsYyxzXTticmVhaztjYXNlIDY6Y2FzZSA3OmNvbnN0IEM9e307Qy5pbmZvPXJlYWRSZWdpb25TZWdtZW50SW5mb3JtYXRpb24oYSxjKTtjKz16dDtjb25zdCBoPXJlYWRVaW50MTYoYSxjKTtjKz0yO0MuaHVmZm1hbj0hISgxJmgpO0MucmVmaW5lbWVudD0hISgyJmgpO0MubG9nU3RyaXBTaXplPWg+PjImMztDLnN0cmlwU2l6ZT0xPDxDLmxvZ1N0cmlwU2l6ZTtDLnJlZmVyZW5jZUNvcm5lcj1oPj40JjM7Qy50cmFuc3Bvc2VkPSEhKDY0JmgpO0MuY29tYmluYXRpb25PcGVyYXRvcj1oPj43JjM7Qy5kZWZhdWx0UGl4ZWxWYWx1ZT1oPj45JjE7Qy5kc09mZnNldD1oPDwxNz4+Mjc7Qy5yZWZpbmVtZW50VGVtcGxhdGU9aD4+MTUmMTtpZihDLmh1ZmZtYW4pe2NvbnN0IGU9cmVhZFVpbnQxNihhLGMpO2MrPTI7Qy5odWZmbWFuRlM9MyZlO0MuaHVmZm1hbkRTPWU+PjImMztDLmh1ZmZtYW5EVD1lPj40JjM7Qy5odWZmbWFuUmVmaW5lbWVudERXPWU+PjYmMztDLmh1ZmZtYW5SZWZpbmVtZW50REg9ZT4+OCYzO0MuaHVmZm1hblJlZmluZW1lbnREWD1lPj4xMCYzO0MuaHVmZm1hblJlZmluZW1lbnREWT1lPj4xMiYzO0MuaHVmZm1hblJlZmluZW1lbnRTaXplU2VsZWN0b3I9ISEoMTYzODQmZSl9aWYoQy5yZWZpbmVtZW50JiYhQy5yZWZpbmVtZW50VGVtcGxhdGUpe249W107Zm9yKG89MDtvPDI7bysrKXtuLnB1c2goe3g6cmVhZEludDgoYSxjKSx5OnJlYWRJbnQ4KGEsYysxKX0pO2MrPTJ9Qy5yZWZpbmVtZW50QXQ9bn1DLm51bWJlck9mU3ltYm9sSW5zdGFuY2VzPXJlYWRVaW50MzIoYSxjKTtjKz00O3I9W0MsaS5yZWZlcnJlZFRvLGEsYyxzXTticmVhaztjYXNlIDE2OmNvbnN0IGw9e30sUT1hW2MrK107bC5tbXI9ISEoMSZRKTtsLnRlbXBsYXRlPVE+PjEmMztsLnBhdHRlcm5XaWR0aD1hW2MrK107bC5wYXR0ZXJuSGVpZ2h0PWFbYysrXTtsLm1heFBhdHRlcm5JbmRleD1yZWFkVWludDMyKGEsYyk7Yys9NDtyPVtsLGkubnVtYmVyLGEsYyxzXTticmVhaztjYXNlIDIyOmNhc2UgMjM6Y29uc3QgRT17fTtFLmluZm89cmVhZFJlZ2lvblNlZ21lbnRJbmZvcm1hdGlvbihhLGMpO2MrPXp0O2NvbnN0IHU9YVtjKytdO0UubW1yPSEhKDEmdSk7RS50ZW1wbGF0ZT11Pj4xJjM7RS5lbmFibGVTa2lwPSEhKDgmdSk7RS5jb21iaW5hdGlvbk9wZXJhdG9yPXU+PjQmNztFLmRlZmF1bHRQaXhlbFZhbHVlPXU+PjcmMTtFLmdyaWRXaWR0aD1yZWFkVWludDMyKGEsYyk7Yys9NDtFLmdyaWRIZWlnaHQ9cmVhZFVpbnQzMihhLGMpO2MrPTQ7RS5ncmlkT2Zmc2V0WD00Mjk0OTY3Mjk1JnJlYWRVaW50MzIoYSxjKTtjKz00O0UuZ3JpZE9mZnNldFk9NDI5NDk2NzI5NSZyZWFkVWludDMyKGEsYyk7Yys9NDtFLmdyaWRWZWN0b3JYPXJlYWRVaW50MTYoYSxjKTtjKz0yO0UuZ3JpZFZlY3Rvclk9cmVhZFVpbnQxNihhLGMpO2MrPTI7cj1bRSxpLnJlZmVycmVkVG8sYSxjLHNdO2JyZWFrO2Nhc2UgMzg6Y2FzZSAzOTpjb25zdCBkPXt9O2QuaW5mbz1yZWFkUmVnaW9uU2VnbWVudEluZm9ybWF0aW9uKGEsYyk7Yys9enQ7Y29uc3QgZj1hW2MrK107ZC5tbXI9ISEoMSZmKTtkLnRlbXBsYXRlPWY+PjEmMztkLnByZWRpY3Rpb249ISEoOCZmKTtpZighZC5tbXIpe2c9MD09PWQudGVtcGxhdGU/NDoxO249W107Zm9yKG89MDtvPGc7bysrKXtuLnB1c2goe3g6cmVhZEludDgoYSxjKSx5OnJlYWRJbnQ4KGEsYysxKX0pO2MrPTJ9ZC5hdD1ufXI9W2QsYSxjLHNdO2JyZWFrO2Nhc2UgNDg6Y29uc3QgcD17d2lkdGg6cmVhZFVpbnQzMihhLGMpLGhlaWdodDpyZWFkVWludDMyKGEsYys0KSxyZXNvbHV0aW9uWDpyZWFkVWludDMyKGEsYys4KSxyZXNvbHV0aW9uWTpyZWFkVWludDMyKGEsYysxMil9OzQyOTQ5NjcyOTU9PT1wLmhlaWdodCYmZGVsZXRlIHAuaGVpZ2h0O2NvbnN0IG09YVtjKzE2XTtyZWFkVWludDE2KGEsYysxNyk7cC5sb3NzbGVzcz0hISgxJm0pO3AucmVmaW5lbWVudD0hISgyJm0pO3AuZGVmYXVsdFBpeGVsVmFsdWU9bT4+MiYxO3AuY29tYmluYXRpb25PcGVyYXRvcj1tPj4zJjM7cC5yZXF1aXJlc0J1ZmZlcj0hISgzMiZtKTtwLmNvbWJpbmF0aW9uT3BlcmF0b3JPdmVycmlkZT0hISg2NCZtKTtyPVtwXTticmVhaztjYXNlIDQ5OmNhc2UgNTA6Y2FzZSA1MTpjYXNlIDYyOmJyZWFrO2Nhc2UgNTM6cj1baS5udW1iZXIsYSxjLHNdO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEpiaWcyRXJyb3IoYHNlZ21lbnQgdHlwZSAke2kudHlwZU5hbWV9KCR7aS50eXBlfSkgaXMgbm90IGltcGxlbWVudGVkYCl9Y29uc3QgQz0ib24iK2kudHlwZU5hbWU7QyBpbiB0JiZ0W0NdLmFwcGx5KHQscil9ZnVuY3Rpb24gcHJvY2Vzc1NlZ21lbnRzKGUsdCl7Zm9yKGxldCBpPTAsYT1lLmxlbmd0aDtpPGE7aSsrKXByb2Nlc3NTZWdtZW50KGVbaV0sdCl9Y2xhc3MgU2ltcGxlU2VnbWVudFZpc2l0b3J7b25QYWdlSW5mb3JtYXRpb24oZSl7dGhpcy5jdXJyZW50UGFnZUluZm89ZTtjb25zdCB0PWUud2lkdGgrNz4+MyxpPW5ldyBVaW50OENsYW1wZWRBcnJheSh0KmUuaGVpZ2h0KTtlLmRlZmF1bHRQaXhlbFZhbHVlJiZpLmZpbGwoMjU1KTt0aGlzLmJ1ZmZlcj1pfWRyYXdCaXRtYXAoZSx0KXtjb25zdCBpPXRoaXMuY3VycmVudFBhZ2VJbmZvLGE9ZS53aWR0aCxzPWUuaGVpZ2h0LHI9aS53aWR0aCs3Pj4zLG49aS5jb21iaW5hdGlvbk9wZXJhdG9yT3ZlcnJpZGU/ZS5jb21iaW5hdGlvbk9wZXJhdG9yOmkuY29tYmluYXRpb25PcGVyYXRvcixvPXRoaXMuYnVmZmVyLGc9MTI4Pj4oNyZlLngpO2xldCBjLEMsaCxsLFE9ZS55KnIrKGUueD4+Myk7c3dpdGNoKG4pe2Nhc2UgMDpmb3IoYz0wO2M8cztjKyspe2g9ZztsPVE7Zm9yKEM9MDtDPGE7QysrKXt0W2NdW0NdJiYob1tsXXw9aCk7aD4+PTE7aWYoIWgpe2g9MTI4O2wrK319USs9cn1icmVhaztjYXNlIDI6Zm9yKGM9MDtjPHM7YysrKXtoPWc7bD1RO2ZvcihDPTA7QzxhO0MrKyl7dFtjXVtDXSYmKG9bbF1ePWgpO2g+Pj0xO2lmKCFoKXtoPTEyODtsKyt9fVErPXJ9YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgSmJpZzJFcnJvcihgb3BlcmF0b3IgJHtufSBpcyBub3Qgc3VwcG9ydGVkYCl9fW9uSW1tZWRpYXRlR2VuZXJpY1JlZ2lvbihlLHQsaSxhKXtjb25zdCBzPWUuaW5mbyxyPW5ldyBEZWNvZGluZ0NvbnRleHQodCxpLGEpLG49ZGVjb2RlQml0bWFwKGUubW1yLHMud2lkdGgscy5oZWlnaHQsZS50ZW1wbGF0ZSxlLnByZWRpY3Rpb24sbnVsbCxlLmF0LHIpO3RoaXMuZHJhd0JpdG1hcChzLG4pfW9uSW1tZWRpYXRlTG9zc2xlc3NHZW5lcmljUmVnaW9uKCl7dGhpcy5vbkltbWVkaWF0ZUdlbmVyaWNSZWdpb24oLi4uYXJndW1lbnRzKX1vblN5bWJvbERpY3Rpb25hcnkoZSx0LGksYSxzLHIpe2xldCBuLG87aWYoZS5odWZmbWFuKXtuPWZ1bmN0aW9uIGdldFN5bWJvbERpY3Rpb25hcnlIdWZmbWFuVGFibGVzKGUsdCxpKXtsZXQgYSxzLHIsbixvPTA7c3dpdGNoKGUuaHVmZm1hbkRIU2VsZWN0b3Ipe2Nhc2UgMDpjYXNlIDE6YT1nZXRTdGFuZGFyZFRhYmxlKGUuaHVmZm1hbkRIU2VsZWN0b3IrNCk7YnJlYWs7Y2FzZSAzOmE9Z2V0Q3VzdG9tSHVmZm1hblRhYmxlKG8sdCxpKTtvKys7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgSmJpZzJFcnJvcigiaW52YWxpZCBIdWZmbWFuIERIIHNlbGVjdG9yIil9c3dpdGNoKGUuaHVmZm1hbkRXU2VsZWN0b3Ipe2Nhc2UgMDpjYXNlIDE6cz1nZXRTdGFuZGFyZFRhYmxlKGUuaHVmZm1hbkRXU2VsZWN0b3IrMik7YnJlYWs7Y2FzZSAzOnM9Z2V0Q3VzdG9tSHVmZm1hblRhYmxlKG8sdCxpKTtvKys7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgSmJpZzJFcnJvcigiaW52YWxpZCBIdWZmbWFuIERXIHNlbGVjdG9yIil9aWYoZS5iaXRtYXBTaXplU2VsZWN0b3Ipe3I9Z2V0Q3VzdG9tSHVmZm1hblRhYmxlKG8sdCxpKTtvKyt9ZWxzZSByPWdldFN0YW5kYXJkVGFibGUoMSk7bj1lLmFnZ3JlZ2F0aW9uSW5zdGFuY2VzU2VsZWN0b3I/Z2V0Q3VzdG9tSHVmZm1hblRhYmxlKG8sdCxpKTpnZXRTdGFuZGFyZFRhYmxlKDEpO3JldHVybnt0YWJsZURlbHRhSGVpZ2h0OmEsdGFibGVEZWx0YVdpZHRoOnMsdGFibGVCaXRtYXBTaXplOnIsdGFibGVBZ2dyZWdhdGVJbnN0YW5jZXM6bn19KGUsaSx0aGlzLmN1c3RvbVRhYmxlcyk7bz1uZXcgUmVhZGVyKGEscyxyKX1sZXQgZz10aGlzLnN5bWJvbHM7Z3x8KHRoaXMuc3ltYm9scz1nPXt9KTtjb25zdCBjPVtdO2Zvcihjb25zdCBlIG9mIGkpe2NvbnN0IHQ9Z1tlXTt0JiZjLnB1c2goLi4udCl9Y29uc3QgQz1uZXcgRGVjb2RpbmdDb250ZXh0KGEscyxyKTtnW3RdPWZ1bmN0aW9uIGRlY29kZVN5bWJvbERpY3Rpb25hcnkoZSx0LGksYSxzLHIsbixvLGcsYyxDLGgpe2lmKGUmJnQpdGhyb3cgbmV3IEpiaWcyRXJyb3IoInN5bWJvbCByZWZpbmVtZW50IHdpdGggSHVmZm1hbiBpcyBub3Qgc3VwcG9ydGVkIik7Y29uc3QgbD1bXTtsZXQgUT0wLEU9bG9nMihpLmxlbmd0aCthKTtjb25zdCB1PUMuZGVjb2RlcixkPUMuY29udGV4dENhY2hlO2xldCBmLHA7aWYoZSl7Zj1nZXRTdGFuZGFyZFRhYmxlKDEpO3A9W107RT1NYXRoLm1heChFLDEpfWZvcig7bC5sZW5ndGg8YTspe1ErPWU/ci50YWJsZURlbHRhSGVpZ2h0LmRlY29kZShoKTpkZWNvZGVJbnRlZ2VyKGQsIklBREgiLHUpO2xldCBhPTAscz0wO2NvbnN0IGY9ZT9wLmxlbmd0aDowO2Zvcig7Oyl7Y29uc3QgZj1lP3IudGFibGVEZWx0YVdpZHRoLmRlY29kZShoKTpkZWNvZGVJbnRlZ2VyKGQsIklBRFciLHUpO2lmKG51bGw9PT1mKWJyZWFrO2ErPWY7cys9YTtsZXQgbTtpZih0KXtjb25zdCBzPWRlY29kZUludGVnZXIoZCwiSUFBSSIsdSk7aWYocz4xKW09ZGVjb2RlVGV4dFJlZ2lvbihlLHQsYSxRLDAscywxLGkuY29uY2F0KGwpLEUsMCwwLDEsMCxyLGcsYyxDLDAsaCk7ZWxzZXtjb25zdCBlPWRlY29kZUlBSUQoZCx1LEUpLHQ9ZGVjb2RlSW50ZWdlcihkLCJJQVJEWCIsdSkscz1kZWNvZGVJbnRlZ2VyKGQsIklBUkRZIix1KTttPWRlY29kZVJlZmluZW1lbnQoYSxRLGcsZTxpLmxlbmd0aD9pW2VdOmxbZS1pLmxlbmd0aF0sdCxzLCExLGMsQyl9bC5wdXNoKG0pfWVsc2UgaWYoZSlwLnB1c2goYSk7ZWxzZXttPWRlY29kZUJpdG1hcCghMSxhLFEsbiwhMSxudWxsLG8sQyk7bC5wdXNoKG0pfX1pZihlJiYhdCl7Y29uc3QgZT1yLnRhYmxlQml0bWFwU2l6ZS5kZWNvZGUoaCk7aC5ieXRlQWxpZ24oKTtsZXQgdDtpZigwPT09ZSl0PXJlYWRVbmNvbXByZXNzZWRCaXRtYXAoaCxzLFEpO2Vsc2V7Y29uc3QgaT1oLmVuZCxhPWgucG9zaXRpb24rZTtoLmVuZD1hO3Q9ZGVjb2RlTU1SQml0bWFwKGgscyxRLCExKTtoLmVuZD1pO2gucG9zaXRpb249YX1jb25zdCBpPXAubGVuZ3RoO2lmKGY9PT1pLTEpbC5wdXNoKHQpO2Vsc2V7bGV0IGUsYSxzLHIsbixvPTA7Zm9yKGU9ZjtlPGk7ZSsrKXtyPXBbZV07cz1vK3I7bj1bXTtmb3IoYT0wO2E8UTthKyspbi5wdXNoKHRbYV0uc3ViYXJyYXkobyxzKSk7bC5wdXNoKG4pO289c319fX1jb25zdCBtPVtdLHk9W107bGV0IHcsYixEPSExO2NvbnN0IEY9aS5sZW5ndGgrYTtmb3IoO3kubGVuZ3RoPEY7KXtsZXQgdD1lP2YuZGVjb2RlKGgpOmRlY29kZUludGVnZXIoZCwiSUFFWCIsdSk7Zm9yKDt0LS07KXkucHVzaChEKTtEPSFEfWZvcih3PTAsYj1pLmxlbmd0aDt3PGI7dysrKXlbd10mJm0ucHVzaChpW3ddKTtmb3IobGV0IGU9MDtlPGE7dysrLGUrKyl5W3ddJiZtLnB1c2gobFtlXSk7cmV0dXJuIG19KGUuaHVmZm1hbixlLnJlZmluZW1lbnQsYyxlLm51bWJlck9mTmV3U3ltYm9scyxlLm51bWJlck9mRXhwb3J0ZWRTeW1ib2xzLG4sZS50ZW1wbGF0ZSxlLmF0LGUucmVmaW5lbWVudFRlbXBsYXRlLGUucmVmaW5lbWVudEF0LEMsbyl9b25JbW1lZGlhdGVUZXh0UmVnaW9uKGUsdCxpLGEscyl7Y29uc3Qgcj1lLmluZm87bGV0IG4sbztjb25zdCBnPXRoaXMuc3ltYm9scyxjPVtdO2Zvcihjb25zdCBlIG9mIHQpe2NvbnN0IHQ9Z1tlXTt0JiZjLnB1c2goLi4udCl9Y29uc3QgQz1sb2cyKGMubGVuZ3RoKTtpZihlLmh1ZmZtYW4pe289bmV3IFJlYWRlcihpLGEscyk7bj1mdW5jdGlvbiBnZXRUZXh0UmVnaW9uSHVmZm1hblRhYmxlcyhlLHQsaSxhLHMpe2NvbnN0IHI9W107Zm9yKGxldCBlPTA7ZTw9MzQ7ZSsrKXtjb25zdCB0PXMucmVhZEJpdHMoNCk7ci5wdXNoKG5ldyBIdWZmbWFuTGluZShbZSx0LDAsMF0pKX1jb25zdCBuPW5ldyBIdWZmbWFuVGFibGUociwhMSk7ci5sZW5ndGg9MDtmb3IobGV0IGU9MDtlPGE7KXtjb25zdCB0PW4uZGVjb2RlKHMpO2lmKHQ+PTMyKXtsZXQgaSxhLG47c3dpdGNoKHQpe2Nhc2UgMzI6aWYoMD09PWUpdGhyb3cgbmV3IEpiaWcyRXJyb3IoIm5vIHByZXZpb3VzIHZhbHVlIGluIHN5bWJvbCBJRCB0YWJsZSIpO2E9cy5yZWFkQml0cygyKSszO2k9cltlLTFdLnByZWZpeExlbmd0aDticmVhaztjYXNlIDMzOmE9cy5yZWFkQml0cygzKSszO2k9MDticmVhaztjYXNlIDM0OmE9cy5yZWFkQml0cyg3KSsxMTtpPTA7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgSmJpZzJFcnJvcigiaW52YWxpZCBjb2RlIGxlbmd0aCBpbiBzeW1ib2wgSUQgdGFibGUiKX1mb3Iobj0wO248YTtuKyspe3IucHVzaChuZXcgSHVmZm1hbkxpbmUoW2UsaSwwLDBdKSk7ZSsrfX1lbHNle3IucHVzaChuZXcgSHVmZm1hbkxpbmUoW2UsdCwwLDBdKSk7ZSsrfX1zLmJ5dGVBbGlnbigpO2NvbnN0IG89bmV3IEh1ZmZtYW5UYWJsZShyLCExKTtsZXQgZyxjLEMsaD0wO3N3aXRjaChlLmh1ZmZtYW5GUyl7Y2FzZSAwOmNhc2UgMTpnPWdldFN0YW5kYXJkVGFibGUoZS5odWZmbWFuRlMrNik7YnJlYWs7Y2FzZSAzOmc9Z2V0Q3VzdG9tSHVmZm1hblRhYmxlKGgsdCxpKTtoKys7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgSmJpZzJFcnJvcigiaW52YWxpZCBIdWZmbWFuIEZTIHNlbGVjdG9yIil9c3dpdGNoKGUuaHVmZm1hbkRTKXtjYXNlIDA6Y2FzZSAxOmNhc2UgMjpjPWdldFN0YW5kYXJkVGFibGUoZS5odWZmbWFuRFMrOCk7YnJlYWs7Y2FzZSAzOmM9Z2V0Q3VzdG9tSHVmZm1hblRhYmxlKGgsdCxpKTtoKys7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgSmJpZzJFcnJvcigiaW52YWxpZCBIdWZmbWFuIERTIHNlbGVjdG9yIil9c3dpdGNoKGUuaHVmZm1hbkRUKXtjYXNlIDA6Y2FzZSAxOmNhc2UgMjpDPWdldFN0YW5kYXJkVGFibGUoZS5odWZmbWFuRFQrMTEpO2JyZWFrO2Nhc2UgMzpDPWdldEN1c3RvbUh1ZmZtYW5UYWJsZShoLHQsaSk7aCsrO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEpiaWcyRXJyb3IoImludmFsaWQgSHVmZm1hbiBEVCBzZWxlY3RvciIpfWlmKGUucmVmaW5lbWVudCl0aHJvdyBuZXcgSmJpZzJFcnJvcigicmVmaW5lbWVudCB3aXRoIEh1ZmZtYW4gaXMgbm90IHN1cHBvcnRlZCIpO3JldHVybntzeW1ib2xJRFRhYmxlOm8sdGFibGVGaXJzdFM6Zyx0YWJsZURlbHRhUzpjLHRhYmxlRGVsdGFUOkN9fShlLHQsdGhpcy5jdXN0b21UYWJsZXMsYy5sZW5ndGgsbyl9Y29uc3QgaD1uZXcgRGVjb2RpbmdDb250ZXh0KGksYSxzKSxsPWRlY29kZVRleHRSZWdpb24oZS5odWZmbWFuLGUucmVmaW5lbWVudCxyLndpZHRoLHIuaGVpZ2h0LGUuZGVmYXVsdFBpeGVsVmFsdWUsZS5udW1iZXJPZlN5bWJvbEluc3RhbmNlcyxlLnN0cmlwU2l6ZSxjLEMsZS50cmFuc3Bvc2VkLGUuZHNPZmZzZXQsZS5yZWZlcmVuY2VDb3JuZXIsZS5jb21iaW5hdGlvbk9wZXJhdG9yLG4sZS5yZWZpbmVtZW50VGVtcGxhdGUsZS5yZWZpbmVtZW50QXQsaCxlLmxvZ1N0cmlwU2l6ZSxvKTt0aGlzLmRyYXdCaXRtYXAocixsKX1vbkltbWVkaWF0ZUxvc3NsZXNzVGV4dFJlZ2lvbigpe3RoaXMub25JbW1lZGlhdGVUZXh0UmVnaW9uKC4uLmFyZ3VtZW50cyl9b25QYXR0ZXJuRGljdGlvbmFyeShlLHQsaSxhLHMpe2xldCByPXRoaXMucGF0dGVybnM7cnx8KHRoaXMucGF0dGVybnM9cj17fSk7Y29uc3Qgbj1uZXcgRGVjb2RpbmdDb250ZXh0KGksYSxzKTtyW3RdPWZ1bmN0aW9uIGRlY29kZVBhdHRlcm5EaWN0aW9uYXJ5KGUsdCxpLGEscyxyKXtjb25zdCBuPVtdO2lmKCFlKXtuLnB1c2goe3g6LXQseTowfSk7MD09PXMmJm4ucHVzaCh7eDotMyx5Oi0xfSx7eDoyLHk6LTJ9LHt4Oi0yLHk6LTJ9KX1jb25zdCBvPWRlY29kZUJpdG1hcChlLChhKzEpKnQsaSxzLCExLG51bGwsbixyKSxnPVtdO2ZvcihsZXQgZT0wO2U8PWE7ZSsrKXtjb25zdCBhPVtdLHM9dCplLHI9cyt0O2ZvcihsZXQgZT0wO2U8aTtlKyspYS5wdXNoKG9bZV0uc3ViYXJyYXkocyxyKSk7Zy5wdXNoKGEpfXJldHVybiBnfShlLm1tcixlLnBhdHRlcm5XaWR0aCxlLnBhdHRlcm5IZWlnaHQsZS5tYXhQYXR0ZXJuSW5kZXgsZS50ZW1wbGF0ZSxuKX1vbkltbWVkaWF0ZUhhbGZ0b25lUmVnaW9uKGUsdCxpLGEscyl7Y29uc3Qgcj10aGlzLnBhdHRlcm5zW3RbMF1dLG49ZS5pbmZvLG89bmV3IERlY29kaW5nQ29udGV4dChpLGEscyksZz1mdW5jdGlvbiBkZWNvZGVIYWxmdG9uZVJlZ2lvbihlLHQsaSxhLHMscixuLG8sZyxjLEMsaCxsLFEsRSl7aWYobil0aHJvdyBuZXcgSmJpZzJFcnJvcigic2tpcCBpcyBub3Qgc3VwcG9ydGVkIik7aWYoMCE9PW8pdGhyb3cgbmV3IEpiaWcyRXJyb3IoYG9wZXJhdG9yICIke299IiBpcyBub3Qgc3VwcG9ydGVkIGluIGhhbGZ0b25lIHJlZ2lvbmApO2NvbnN0IHU9W107bGV0IGQsZixwO2ZvcihkPTA7ZDxzO2QrKyl7cD1uZXcgVWludDhBcnJheShhKTtpZihyKWZvcihmPTA7ZjxhO2YrKylwW2ZdPXI7dS5wdXNoKHApfWNvbnN0IG09dC5sZW5ndGgseT10WzBdLHc9eVswXS5sZW5ndGgsYj15Lmxlbmd0aCxEPWxvZzIobSksRj1bXTtpZighZSl7Ri5wdXNoKHt4Omk8PTE/MzoyLHk6LTF9KTswPT09aSYmRi5wdXNoKHt4Oi0zLHk6LTF9LHt4OjIseTotMn0se3g6LTIseTotMn0pfWNvbnN0IFM9W107bGV0IGssTixSLEcseCxVLE0sTCxILEosWTtlJiYoaz1uZXcgUmVhZGVyKEUuZGF0YSxFLnN0YXJ0LEUuZW5kKSk7Zm9yKGQ9RC0xO2Q+PTA7ZC0tKXtOPWU/ZGVjb2RlTU1SQml0bWFwKGssZyxjLCEwKTpkZWNvZGVCaXRtYXAoITEsZyxjLGksITEsbnVsbCxGLEUpO1NbZF09Tn1mb3IoUj0wO1I8YztSKyspZm9yKEc9MDtHPGc7RysrKXt4PTA7VT0wO2ZvcihmPUQtMTtmPj0wO2YtLSl7eF49U1tmXVtSXVtHXTtVfD14PDxmfU09dFtVXTtMPUMrUipRK0cqbD4+ODtIPWgrUipsLUcqUT4+ODtpZihMPj0wJiZMK3c8PWEmJkg+PTAmJkgrYjw9cylmb3IoZD0wO2Q8YjtkKyspe1k9dVtIK2RdO0o9TVtkXTtmb3IoZj0wO2Y8dztmKyspWVtMK2ZdfD1KW2ZdfWVsc2V7bGV0IGUsdDtmb3IoZD0wO2Q8YjtkKyspe3Q9SCtkO2lmKCEodDwwfHx0Pj1zKSl7WT11W3RdO0o9TVtkXTtmb3IoZj0wO2Y8dztmKyspe2U9TCtmO2U+PTAmJmU8YSYmKFlbZV18PUpbZl0pfX19fX1yZXR1cm4gdX0oZS5tbXIscixlLnRlbXBsYXRlLG4ud2lkdGgsbi5oZWlnaHQsZS5kZWZhdWx0UGl4ZWxWYWx1ZSxlLmVuYWJsZVNraXAsZS5jb21iaW5hdGlvbk9wZXJhdG9yLGUuZ3JpZFdpZHRoLGUuZ3JpZEhlaWdodCxlLmdyaWRPZmZzZXRYLGUuZ3JpZE9mZnNldFksZS5ncmlkVmVjdG9yWCxlLmdyaWRWZWN0b3JZLG8pO3RoaXMuZHJhd0JpdG1hcChuLGcpfW9uSW1tZWRpYXRlTG9zc2xlc3NIYWxmdG9uZVJlZ2lvbigpe3RoaXMub25JbW1lZGlhdGVIYWxmdG9uZVJlZ2lvbiguLi5hcmd1bWVudHMpfW9uVGFibGVzKGUsdCxpLGEpe2xldCBzPXRoaXMuY3VzdG9tVGFibGVzO3N8fCh0aGlzLmN1c3RvbVRhYmxlcz1zPXt9KTtzW2VdPWZ1bmN0aW9uIGRlY29kZVRhYmxlc1NlZ21lbnQoZSx0LGkpe2NvbnN0IGE9ZVt0XSxzPTQyOTQ5NjcyOTUmcmVhZFVpbnQzMihlLHQrMSkscj00Mjk0OTY3Mjk1JnJlYWRVaW50MzIoZSx0KzUpLG49bmV3IFJlYWRlcihlLHQrOSxpKSxvPTErKGE+PjEmNyksZz0xKyhhPj40JjcpLGM9W107bGV0IEMsaCxsPXM7ZG97Qz1uLnJlYWRCaXRzKG8pO2g9bi5yZWFkQml0cyhnKTtjLnB1c2gobmV3IEh1ZmZtYW5MaW5lKFtsLEMsaCwwXSkpO2wrPTE8PGh9d2hpbGUobDxyKTtDPW4ucmVhZEJpdHMobyk7Yy5wdXNoKG5ldyBIdWZmbWFuTGluZShbcy0xLEMsMzIsMCwibG93ZXIiXSkpO0M9bi5yZWFkQml0cyhvKTtjLnB1c2gobmV3IEh1ZmZtYW5MaW5lKFtyLEMsMzIsMF0pKTtpZigxJmEpe0M9bi5yZWFkQml0cyhvKTtjLnB1c2gobmV3IEh1ZmZtYW5MaW5lKFtDLDBdKSl9cmV0dXJuIG5ldyBIdWZmbWFuVGFibGUoYywhMSl9KHQsaSxhKX19Y2xhc3MgSHVmZm1hbkxpbmV7Y29uc3RydWN0b3IoZSl7aWYoMj09PWUubGVuZ3RoKXt0aGlzLmlzT09CPSEwO3RoaXMucmFuZ2VMb3c9MDt0aGlzLnByZWZpeExlbmd0aD1lWzBdO3RoaXMucmFuZ2VMZW5ndGg9MDt0aGlzLnByZWZpeENvZGU9ZVsxXTt0aGlzLmlzTG93ZXJSYW5nZT0hMX1lbHNle3RoaXMuaXNPT0I9ITE7dGhpcy5yYW5nZUxvdz1lWzBdO3RoaXMucHJlZml4TGVuZ3RoPWVbMV07dGhpcy5yYW5nZUxlbmd0aD1lWzJdO3RoaXMucHJlZml4Q29kZT1lWzNdO3RoaXMuaXNMb3dlclJhbmdlPSJsb3dlciI9PT1lWzRdfX19Y2xhc3MgSHVmZm1hblRyZWVOb2Rle2NvbnN0cnVjdG9yKGUpe3RoaXMuY2hpbGRyZW49W107aWYoZSl7dGhpcy5pc0xlYWY9ITA7dGhpcy5yYW5nZUxlbmd0aD1lLnJhbmdlTGVuZ3RoO3RoaXMucmFuZ2VMb3c9ZS5yYW5nZUxvdzt0aGlzLmlzTG93ZXJSYW5nZT1lLmlzTG93ZXJSYW5nZTt0aGlzLmlzT09CPWUuaXNPT0J9ZWxzZSB0aGlzLmlzTGVhZj0hMX1idWlsZFRyZWUoZSx0KXtjb25zdCBpPWUucHJlZml4Q29kZT4+dCYxO2lmKHQ8PTApdGhpcy5jaGlsZHJlbltpXT1uZXcgSHVmZm1hblRyZWVOb2RlKGUpO2Vsc2V7bGV0IGE9dGhpcy5jaGlsZHJlbltpXTthfHwodGhpcy5jaGlsZHJlbltpXT1hPW5ldyBIdWZmbWFuVHJlZU5vZGUobnVsbCkpO2EuYnVpbGRUcmVlKGUsdC0xKX19ZGVjb2RlTm9kZShlKXtpZih0aGlzLmlzTGVhZil7aWYodGhpcy5pc09PQilyZXR1cm4gbnVsbDtjb25zdCB0PWUucmVhZEJpdHModGhpcy5yYW5nZUxlbmd0aCk7cmV0dXJuIHRoaXMucmFuZ2VMb3crKHRoaXMuaXNMb3dlclJhbmdlPy10OnQpfWNvbnN0IHQ9dGhpcy5jaGlsZHJlbltlLnJlYWRCaXQoKV07aWYoIXQpdGhyb3cgbmV3IEpiaWcyRXJyb3IoImludmFsaWQgSHVmZm1hbiBkYXRhIik7cmV0dXJuIHQuZGVjb2RlTm9kZShlKX19Y2xhc3MgSHVmZm1hblRhYmxle2NvbnN0cnVjdG9yKGUsdCl7dHx8dGhpcy5hc3NpZ25QcmVmaXhDb2RlcyhlKTt0aGlzLnJvb3ROb2RlPW5ldyBIdWZmbWFuVHJlZU5vZGUobnVsbCk7Zm9yKGxldCB0PTAsaT1lLmxlbmd0aDt0PGk7dCsrKXtjb25zdCBpPWVbdF07aS5wcmVmaXhMZW5ndGg+MCYmdGhpcy5yb290Tm9kZS5idWlsZFRyZWUoaSxpLnByZWZpeExlbmd0aC0xKX19ZGVjb2RlKGUpe3JldHVybiB0aGlzLnJvb3ROb2RlLmRlY29kZU5vZGUoZSl9YXNzaWduUHJlZml4Q29kZXMoZSl7Y29uc3QgdD1lLmxlbmd0aDtsZXQgaT0wO2ZvcihsZXQgYT0wO2E8dDthKyspaT1NYXRoLm1heChpLGVbYV0ucHJlZml4TGVuZ3RoKTtjb25zdCBhPW5ldyBVaW50MzJBcnJheShpKzEpO2ZvcihsZXQgaT0wO2k8dDtpKyspYVtlW2ldLnByZWZpeExlbmd0aF0rKztsZXQgcyxyLG4sbz0xLGc9MDthWzBdPTA7Zm9yKDtvPD1pOyl7Zz1nK2Fbby0xXTw8MTtzPWc7cj0wO2Zvcig7cjx0Oyl7bj1lW3JdO2lmKG4ucHJlZml4TGVuZ3RoPT09byl7bi5wcmVmaXhDb2RlPXM7cysrfXIrK31vKyt9fX1jb25zdCBfdD17fTtmdW5jdGlvbiBnZXRTdGFuZGFyZFRhYmxlKGUpe2xldCB0LGk9X3RbZV07aWYoaSlyZXR1cm4gaTtzd2l0Y2goZSl7Y2FzZSAxOnQ9W1swLDEsNCwwXSxbMTYsMiw4LDJdLFsyNzIsMywxNiw2XSxbNjU4MDgsMywzMiw3XV07YnJlYWs7Y2FzZSAyOnQ9W1swLDEsMCwwXSxbMSwyLDAsMl0sWzIsMywwLDZdLFszLDQsMywxNF0sWzExLDUsNiwzMF0sWzc1LDYsMzIsNjJdLFs2LDYzXV07YnJlYWs7Y2FzZSAzOnQ9W1stMjU2LDgsOCwyNTRdLFswLDEsMCwwXSxbMSwyLDAsMl0sWzIsMywwLDZdLFszLDQsMywxNF0sWzExLDUsNiwzMF0sWy0yNTcsOCwzMiwyNTUsImxvd2VyIl0sWzc1LDcsMzIsMTI2XSxbNiw2Ml1dO2JyZWFrO2Nhc2UgNDp0PVtbMSwxLDAsMF0sWzIsMiwwLDJdLFszLDMsMCw2XSxbNCw0LDMsMTRdLFsxMiw1LDYsMzBdLFs3Niw1LDMyLDMxXV07YnJlYWs7Y2FzZSA1OnQ9W1stMjU1LDcsOCwxMjZdLFsxLDEsMCwwXSxbMiwyLDAsMl0sWzMsMywwLDZdLFs0LDQsMywxNF0sWzEyLDUsNiwzMF0sWy0yNTYsNywzMiwxMjcsImxvd2VyIl0sWzc2LDYsMzIsNjJdXTticmVhaztjYXNlIDY6dD1bWy0yMDQ4LDUsMTAsMjhdLFstMTAyNCw0LDksOF0sWy01MTIsNCw4LDldLFstMjU2LDQsNywxMF0sWy0xMjgsNSw2LDI5XSxbLTY0LDUsNSwzMF0sWy0zMiw0LDUsMTFdLFswLDIsNywwXSxbMTI4LDMsNywyXSxbMjU2LDMsOCwzXSxbNTEyLDQsOSwxMl0sWzEwMjQsNCwxMCwxM10sWy0yMDQ5LDYsMzIsNjIsImxvd2VyIl0sWzIwNDgsNiwzMiw2M11dO2JyZWFrO2Nhc2UgNzp0PVtbLTEwMjQsNCw5LDhdLFstNTEyLDMsOCwwXSxbLTI1Niw0LDcsOV0sWy0xMjgsNSw2LDI2XSxbLTY0LDUsNSwyN10sWy0zMiw0LDUsMTBdLFswLDQsNSwxMV0sWzMyLDUsNSwyOF0sWzY0LDUsNiwyOV0sWzEyOCw0LDcsMTJdLFsyNTYsMyw4LDFdLFs1MTIsMyw5LDJdLFsxMDI0LDMsMTAsM10sWy0xMDI1LDUsMzIsMzAsImxvd2VyIl0sWzIwNDgsNSwzMiwzMV1dO2JyZWFrO2Nhc2UgODp0PVtbLTE1LDgsMywyNTJdLFstNyw5LDEsNTA4XSxbLTUsOCwxLDI1M10sWy0zLDksMCw1MDldLFstMiw3LDAsMTI0XSxbLTEsNCwwLDEwXSxbMCwyLDEsMF0sWzIsNSwwLDI2XSxbMyw2LDAsNThdLFs0LDMsNCw0XSxbMjAsNiwxLDU5XSxbMjIsNCw0LDExXSxbMzgsNCw1LDEyXSxbNzAsNSw2LDI3XSxbMTM0LDUsNywyOF0sWzI2Miw2LDcsNjBdLFszOTAsNyw4LDEyNV0sWzY0Niw2LDEwLDYxXSxbLTE2LDksMzIsNTEwLCJsb3dlciJdLFsxNjcwLDksMzIsNTExXSxbMiwxXV07YnJlYWs7Y2FzZSA5OnQ9W1stMzEsOCw0LDI1Ml0sWy0xNSw5LDIsNTA4XSxbLTExLDgsMiwyNTNdLFstNyw5LDEsNTA5XSxbLTUsNywxLDEyNF0sWy0zLDQsMSwxMF0sWy0xLDMsMSwyXSxbMSwzLDEsM10sWzMsNSwxLDI2XSxbNSw2LDEsNThdLFs3LDMsNSw0XSxbMzksNiwyLDU5XSxbNDMsNCw1LDExXSxbNzUsNCw2LDEyXSxbMTM5LDUsNywyN10sWzI2Nyw1LDgsMjhdLFs1MjMsNiw4LDYwXSxbNzc5LDcsOSwxMjVdLFsxMjkxLDYsMTEsNjFdLFstMzIsOSwzMiw1MTAsImxvd2VyIl0sWzMzMzksOSwzMiw1MTFdLFsyLDBdXTticmVhaztjYXNlIDEwOnQ9W1stMjEsNyw0LDEyMl0sWy01LDgsMCwyNTJdLFstNCw3LDAsMTIzXSxbLTMsNSwwLDI0XSxbLTIsMiwyLDBdLFsyLDUsMCwyNV0sWzMsNiwwLDU0XSxbNCw3LDAsMTI0XSxbNSw4LDAsMjUzXSxbNiwyLDYsMV0sWzcwLDUsNSwyNl0sWzEwMiw2LDUsNTVdLFsxMzQsNiw2LDU2XSxbMTk4LDYsNyw1N10sWzMyNiw2LDgsNThdLFs1ODIsNiw5LDU5XSxbMTA5NCw2LDEwLDYwXSxbMjExOCw3LDExLDEyNV0sWy0yMiw4LDMyLDI1NCwibG93ZXIiXSxbNDE2Niw4LDMyLDI1NV0sWzIsMl1dO2JyZWFrO2Nhc2UgMTE6dD1bWzEsMSwwLDBdLFsyLDIsMSwyXSxbNCw0LDAsMTJdLFs1LDQsMSwxM10sWzcsNSwxLDI4XSxbOSw1LDIsMjldLFsxMyw2LDIsNjBdLFsxNyw3LDIsMTIyXSxbMjEsNywzLDEyM10sWzI5LDcsNCwxMjRdLFs0NSw3LDUsMTI1XSxbNzcsNyw2LDEyNl0sWzE0MSw3LDMyLDEyN11dO2JyZWFrO2Nhc2UgMTI6dD1bWzEsMSwwLDBdLFsyLDIsMCwyXSxbMywzLDEsNl0sWzUsNSwwLDI4XSxbNiw1LDEsMjldLFs4LDYsMSw2MF0sWzEwLDcsMCwxMjJdLFsxMSw3LDEsMTIzXSxbMTMsNywyLDEyNF0sWzE3LDcsMywxMjVdLFsyNSw3LDQsMTI2XSxbNDEsOCw1LDI1NF0sWzczLDgsMzIsMjU1XV07YnJlYWs7Y2FzZSAxMzp0PVtbMSwxLDAsMF0sWzIsMywwLDRdLFszLDQsMCwxMl0sWzQsNSwwLDI4XSxbNSw0LDEsMTNdLFs3LDMsMyw1XSxbMTUsNiwxLDU4XSxbMTcsNiwyLDU5XSxbMjEsNiwzLDYwXSxbMjksNiw0LDYxXSxbNDUsNiw1LDYyXSxbNzcsNyw2LDEyNl0sWzE0MSw3LDMyLDEyN11dO2JyZWFrO2Nhc2UgMTQ6dD1bWy0yLDMsMCw0XSxbLTEsMywwLDVdLFswLDEsMCwwXSxbMSwzLDAsNl0sWzIsMywwLDddXTticmVhaztjYXNlIDE1OnQ9W1stMjQsNyw0LDEyNF0sWy04LDYsMiw2MF0sWy00LDUsMSwyOF0sWy0yLDQsMCwxMl0sWy0xLDMsMCw0XSxbMCwxLDAsMF0sWzEsMywwLDVdLFsyLDQsMCwxM10sWzMsNSwxLDI5XSxbNSw2LDIsNjFdLFs5LDcsNCwxMjVdLFstMjUsNywzMiwxMjYsImxvd2VyIl0sWzI1LDcsMzIsMTI3XV07YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgSmJpZzJFcnJvcihgc3RhbmRhcmQgdGFibGUgQi4ke2V9IGRvZXMgbm90IGV4aXN0YCl9Zm9yKGxldCBlPTAsaT10Lmxlbmd0aDtlPGk7ZSsrKXRbZV09bmV3IEh1ZmZtYW5MaW5lKHRbZV0pO2k9bmV3IEh1ZmZtYW5UYWJsZSh0LCEwKTtfdFtlXT1pO3JldHVybiBpfWNsYXNzIFJlYWRlcntjb25zdHJ1Y3RvcihlLHQsaSl7dGhpcy5kYXRhPWU7dGhpcy5zdGFydD10O3RoaXMuZW5kPWk7dGhpcy5wb3NpdGlvbj10O3RoaXMuc2hpZnQ9LTE7dGhpcy5jdXJyZW50Qnl0ZT0wfXJlYWRCaXQoKXtpZih0aGlzLnNoaWZ0PDApe2lmKHRoaXMucG9zaXRpb24+PXRoaXMuZW5kKXRocm93IG5ldyBKYmlnMkVycm9yKCJlbmQgb2YgZGF0YSB3aGlsZSByZWFkaW5nIGJpdCIpO3RoaXMuY3VycmVudEJ5dGU9dGhpcy5kYXRhW3RoaXMucG9zaXRpb24rK107dGhpcy5zaGlmdD03fWNvbnN0IGU9dGhpcy5jdXJyZW50Qnl0ZT4+dGhpcy5zaGlmdCYxO3RoaXMuc2hpZnQtLTtyZXR1cm4gZX1yZWFkQml0cyhlKXtsZXQgdCxpPTA7Zm9yKHQ9ZS0xO3Q+PTA7dC0tKWl8PXRoaXMucmVhZEJpdCgpPDx0O3JldHVybiBpfWJ5dGVBbGlnbigpe3RoaXMuc2hpZnQ9LTF9bmV4dCgpe3JldHVybiB0aGlzLnBvc2l0aW9uPj10aGlzLmVuZD8tMTp0aGlzLmRhdGFbdGhpcy5wb3NpdGlvbisrXX19ZnVuY3Rpb24gZ2V0Q3VzdG9tSHVmZm1hblRhYmxlKGUsdCxpKXtsZXQgYT0wO2ZvcihsZXQgcz0wLHI9dC5sZW5ndGg7czxyO3MrKyl7Y29uc3Qgcj1pW3Rbc11dO2lmKHIpe2lmKGU9PT1hKXJldHVybiByO2ErK319dGhyb3cgbmV3IEpiaWcyRXJyb3IoImNhbid0IGZpbmQgY3VzdG9tIEh1ZmZtYW4gdGFibGUiKX1mdW5jdGlvbiByZWFkVW5jb21wcmVzc2VkQml0bWFwKGUsdCxpKXtjb25zdCBhPVtdO2ZvcihsZXQgcz0wO3M8aTtzKyspe2NvbnN0IGk9bmV3IFVpbnQ4QXJyYXkodCk7YS5wdXNoKGkpO2ZvcihsZXQgYT0wO2E8dDthKyspaVthXT1lLnJlYWRCaXQoKTtlLmJ5dGVBbGlnbigpfXJldHVybiBhfWZ1bmN0aW9uIGRlY29kZU1NUkJpdG1hcChlLHQsaSxhKXtjb25zdCBzPW5ldyBDQ0lUVEZheERlY29kZXIoZSx7SzotMSxDb2x1bW5zOnQsUm93czppLEJsYWNrSXMxOiEwLEVuZE9mQmxvY2s6YX0pLHI9W107bGV0IG4sbz0hMTtmb3IobGV0IGU9MDtlPGk7ZSsrKXtjb25zdCBlPW5ldyBVaW50OEFycmF5KHQpO3IucHVzaChlKTtsZXQgaT0tMTtmb3IobGV0IGE9MDthPHQ7YSsrKXtpZihpPDApe249cy5yZWFkTmV4dENoYXIoKTtpZigtMT09PW4pe249MDtvPSEwfWk9N31lW2FdPW4+PmkmMTtpLS19fWlmKGEmJiFvKXtjb25zdCBlPTU7Zm9yKGxldCB0PTA7dDxlJiYtMSE9PXMucmVhZE5leHRDaGFyKCk7dCsrKTt9cmV0dXJuIHJ9Y2xhc3MgSmJpZzJJbWFnZXtwYXJzZUNodW5rcyhlKXtyZXR1cm4gZnVuY3Rpb24gcGFyc2VKYmlnMkNodW5rcyhlKXtjb25zdCB0PW5ldyBTaW1wbGVTZWdtZW50VmlzaXRvcjtmb3IobGV0IGk9MCxhPWUubGVuZ3RoO2k8YTtpKyspe2NvbnN0IGE9ZVtpXTtwcm9jZXNzU2VnbWVudHMocmVhZFNlZ21lbnRzKHt9LGEuZGF0YSxhLnN0YXJ0LGEuZW5kKSx0KX1yZXR1cm4gdC5idWZmZXJ9KGUpfXBhcnNlKGUpe3Rocm93IG5ldyBFcnJvcigiTm90IGltcGxlbWVudGVkOiBKYmlnMkltYWdlLnBhcnNlIil9fWNsYXNzIEpiaWcyU3RyZWFtIGV4dGVuZHMgRGVjb2RlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCxpKXtzdXBlcih0KTt0aGlzLnN0cmVhbT1lO3RoaXMuZGljdD1lLmRpY3Q7dGhpcy5tYXliZUxlbmd0aD10O3RoaXMucGFyYW1zPWl9Z2V0IGJ5dGVzKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJieXRlcyIsdGhpcy5zdHJlYW0uZ2V0Qnl0ZXModGhpcy5tYXliZUxlbmd0aCkpfWVuc3VyZUJ1ZmZlcihlKXt9cmVhZEJsb2NrKCl7aWYodGhpcy5lb2YpcmV0dXJuO2NvbnN0IGU9bmV3IEpiaWcySW1hZ2UsdD1bXTtpZih0aGlzLnBhcmFtcyBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IGU9dGhpcy5wYXJhbXMuZ2V0KCJKQklHMkdsb2JhbHMiKTtpZihlIGluc3RhbmNlb2YgQmFzZVN0cmVhbSl7Y29uc3QgaT1lLmdldEJ5dGVzKCk7dC5wdXNoKHtkYXRhOmksc3RhcnQ6MCxlbmQ6aS5sZW5ndGh9KX19dC5wdXNoKHtkYXRhOnRoaXMuYnl0ZXMsc3RhcnQ6MCxlbmQ6dGhpcy5ieXRlcy5sZW5ndGh9KTtjb25zdCBpPWUucGFyc2VDaHVua3ModCksYT1pLmxlbmd0aDtmb3IobGV0IGU9MDtlPGE7ZSsrKWlbZV1ePTI1NTt0aGlzLmJ1ZmZlcj1pO3RoaXMuYnVmZmVyTGVuZ3RoPWE7dGhpcy5lb2Y9ITB9fWZ1bmN0aW9uIGNvbnZlcnRUb1JHQkEoZSl7c3dpdGNoKGUua2luZCl7Y2FzZSBiOnJldHVybiBjb252ZXJ0QmxhY2tBbmRXaGl0ZVRvUkdCQShlKTtjYXNlIEQ6cmV0dXJuIGZ1bmN0aW9uIGNvbnZlcnRSR0JUb1JHQkEoe3NyYzplLHNyY1Bvczp0PTAsZGVzdDppLGRlc3RQb3M6YT0wLHdpZHRoOnMsaGVpZ2h0OnJ9KXtsZXQgbj0wO2NvbnN0IG89ZS5sZW5ndGg+PjIsZz1uZXcgVWludDMyQXJyYXkoZS5idWZmZXIsdCxvKTtpZihGZWF0dXJlVGVzdC5pc0xpdHRsZUVuZGlhbil7Zm9yKDtuPG8tMjtuKz0zLGErPTQpe2NvbnN0IGU9Z1tuXSx0PWdbbisxXSxzPWdbbisyXTtpW2FdPTQyNzgxOTAwODB8ZTtpW2ErMV09ZT4+PjI0fHQ8PDh8NDI3ODE5MDA4MDtpW2ErMl09dD4+PjE2fHM8PDE2fDQyNzgxOTAwODA7aVthKzNdPXM+Pj44fDQyNzgxOTAwODB9Zm9yKGxldCB0PTQqbixzPWUubGVuZ3RoO3Q8czt0Kz0zKWlbYSsrXT1lW3RdfGVbdCsxXTw8OHxlW3QrMl08PDE2fDQyNzgxOTAwODB9ZWxzZXtmb3IoO248by0yO24rPTMsYSs9NCl7Y29uc3QgZT1nW25dLHQ9Z1tuKzFdLHM9Z1tuKzJdO2lbYV09MjU1fGU7aVthKzFdPWU8PDI0fHQ+Pj44fDI1NTtpW2ErMl09dDw8MTZ8cz4+PjE2fDI1NTtpW2ErM109czw8OHwyNTV9Zm9yKGxldCB0PTQqbixzPWUubGVuZ3RoO3Q8czt0Kz0zKWlbYSsrXT1lW3RdPDwyNHxlW3QrMV08PDE2fGVbdCsyXTw8OHwyNTV9cmV0dXJue3NyY1Bvczp0LGRlc3RQb3M6YX19KGUpfXJldHVybiBudWxsfWZ1bmN0aW9uIGNvbnZlcnRCbGFja0FuZFdoaXRlVG9SR0JBKHtzcmM6ZSxzcmNQb3M6dD0wLGRlc3Q6aSx3aWR0aDphLGhlaWdodDpzLG5vbkJsYWNrQ29sb3I6cj00Mjk0OTY3Mjk1LGludmVyc2VEZWNvZGU6bj0hMX0pe2NvbnN0IG89RmVhdHVyZVRlc3QuaXNMaXR0bGVFbmRpYW4/NDI3ODE5MDA4MDoyNTUsW2csY109bj9bcixvXTpbbyxyXSxDPWE+PjMsaD03JmEsbD1lLmxlbmd0aDtpPW5ldyBVaW50MzJBcnJheShpLmJ1ZmZlcik7bGV0IFE9MDtmb3IobGV0IGE9MDthPHM7YSsrKXtmb3IoY29uc3QgYT10K0M7dDxhO3QrKyl7Y29uc3QgYT10PGw/ZVt0XToyNTU7aVtRKytdPTEyOCZhP2M6ZztpW1ErK109NjQmYT9jOmc7aVtRKytdPTMyJmE/YzpnO2lbUSsrXT0xNiZhP2M6ZztpW1ErK109OCZhP2M6ZztpW1ErK109NCZhP2M6ZztpW1ErK109MiZhP2M6ZztpW1ErK109MSZhP2M6Z31pZigwPT09aCljb250aW51ZTtjb25zdCBhPXQ8bD9lW3QrK106MjU1O2ZvcihsZXQgZT0wO2U8aDtlKyspaVtRKytdPWEmMTw8Ny1lP2M6Z31yZXR1cm57c3JjUG9zOnQsZGVzdFBvczpRfX1jbGFzcyBKcGVnRXJyb3IgZXh0ZW5kcyBydHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJKcGVnRXJyb3IiKX19Y2xhc3MgRE5MTWFya2VyRXJyb3IgZXh0ZW5kcyBydHtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsIkROTE1hcmtlckVycm9yIik7dGhpcy5zY2FuTGluZXM9dH19Y2xhc3MgRU9JTWFya2VyRXJyb3IgZXh0ZW5kcyBydHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJFT0lNYXJrZXJFcnJvciIpfX1jb25zdCAkdD1uZXcgVWludDhBcnJheShbMCwxLDgsMTYsOSwyLDMsMTAsMTcsMjQsMzIsMjUsMTgsMTEsNCw1LDEyLDE5LDI2LDMzLDQwLDQ4LDQxLDM0LDI3LDIwLDEzLDYsNywxNCwyMSwyOCwzNSw0Miw0OSw1Niw1Nyw1MCw0MywzNiwyOSwyMiwxNSwyMywzMCwzNyw0NCw1MSw1OCw1OSw1Miw0NSwzOCwzMSwzOSw0Niw1Myw2MCw2MSw1NCw0Nyw1NSw2Miw2M10pLEFpPTQwMTcsZWk9Nzk5LHRpPTM0MDYsaWk9MjI3NixhaT0xNTY3LHNpPTM3ODQscmk9NTc5MyxuaT0yODk2O2Z1bmN0aW9uIGJ1aWxkSHVmZm1hblRhYmxlKGUsdCl7bGV0IGksYSxzPTAscj0xNjtmb3IoO3I+MCYmIWVbci0xXTspci0tO2NvbnN0IG49W3tjaGlsZHJlbjpbXSxpbmRleDowfV07bGV0IG8sZz1uWzBdO2ZvcihpPTA7aTxyO2krKyl7Zm9yKGE9MDthPGVbaV07YSsrKXtnPW4ucG9wKCk7Zy5jaGlsZHJlbltnLmluZGV4XT10W3NdO2Zvcig7Zy5pbmRleD4wOylnPW4ucG9wKCk7Zy5pbmRleCsrO24ucHVzaChnKTtmb3IoO24ubGVuZ3RoPD1pOyl7bi5wdXNoKG89e2NoaWxkcmVuOltdLGluZGV4OjB9KTtnLmNoaWxkcmVuW2cuaW5kZXhdPW8uY2hpbGRyZW47Zz1vfXMrK31pZihpKzE8cil7bi5wdXNoKG89e2NoaWxkcmVuOltdLGluZGV4OjB9KTtnLmNoaWxkcmVuW2cuaW5kZXhdPW8uY2hpbGRyZW47Zz1vfX1yZXR1cm4gblswXS5jaGlsZHJlbn1mdW5jdGlvbiBnZXRCbG9ja0J1ZmZlck9mZnNldChlLHQsaSl7cmV0dXJuIDY0KigoZS5ibG9ja3NQZXJMaW5lKzEpKnQraSl9ZnVuY3Rpb24gZGVjb2RlU2NhbihlLHQsaSxhLHMscixuLG8sZyxjPSExKXtjb25zdCBDPWkubWN1c1BlckxpbmUsaD1pLnByb2dyZXNzaXZlLGw9dDtsZXQgUT0wLEU9MDtmdW5jdGlvbiByZWFkQml0KCl7aWYoRT4wKXtFLS07cmV0dXJuIFE+PkUmMX1RPWVbdCsrXTtpZigyNTU9PT1RKXtjb25zdCBhPWVbdCsrXTtpZihhKXtpZigyMjA9PT1hJiZjKXtjb25zdCBhPXJlYWRVaW50MTYoZSx0Kz0yKTt0Kz0yO2lmKGE+MCYmYSE9PWkuc2NhbkxpbmVzKXRocm93IG5ldyBETkxNYXJrZXJFcnJvcigiRm91bmQgRE5MIG1hcmtlciAoMHhGRkRDKSB3aGlsZSBwYXJzaW5nIHNjYW4gZGF0YSIsYSl9ZWxzZSBpZigyMTc9PT1hKXtpZihjKXtjb25zdCBlPXAqKDg9PT1pLnByZWNpc2lvbj84OjApO2lmKGU+MCYmTWF0aC5yb3VuZChpLnNjYW5MaW5lcy9lKT49NSl0aHJvdyBuZXcgRE5MTWFya2VyRXJyb3IoIkZvdW5kIEVPSSBtYXJrZXIgKDB4RkZEOSkgd2hpbGUgcGFyc2luZyBzY2FuIGRhdGEsIHBvc3NpYmx5IGNhdXNlZCBieSBpbmNvcnJlY3QgYHNjYW5MaW5lc2AgcGFyYW1ldGVyIixlKX10aHJvdyBuZXcgRU9JTWFya2VyRXJyb3IoIkZvdW5kIEVPSSBtYXJrZXIgKDB4RkZEOSkgd2hpbGUgcGFyc2luZyBzY2FuIGRhdGEiKX10aHJvdyBuZXcgSnBlZ0Vycm9yKGB1bmV4cGVjdGVkIG1hcmtlciAkeyhRPDw4fGEpLnRvU3RyaW5nKDE2KX1gKX19RT03O3JldHVybiBRPj4+N31mdW5jdGlvbiBkZWNvZGVIdWZmbWFuKGUpe2xldCB0PWU7Zm9yKDs7KXt0PXRbcmVhZEJpdCgpXTtzd2l0Y2godHlwZW9mIHQpe2Nhc2UibnVtYmVyIjpyZXR1cm4gdDtjYXNlIm9iamVjdCI6Y29udGludWV9dGhyb3cgbmV3IEpwZWdFcnJvcigiaW52YWxpZCBodWZmbWFuIHNlcXVlbmNlIil9fWZ1bmN0aW9uIHJlY2VpdmUoZSl7bGV0IHQ9MDtmb3IoO2U+MDspe3Q9dDw8MXxyZWFkQml0KCk7ZS0tfXJldHVybiB0fWZ1bmN0aW9uIHJlY2VpdmVBbmRFeHRlbmQoZSl7aWYoMT09PWUpcmV0dXJuIDE9PT1yZWFkQml0KCk/MTotMTtjb25zdCB0PXJlY2VpdmUoZSk7cmV0dXJuIHQ+PTE8PGUtMT90OnQrKC0xPDxlKSsxfWxldCB1PTA7bGV0IGQsZj0wO2xldCBwPTA7ZnVuY3Rpb24gZGVjb2RlTWN1KGUsdCxpLGEscyl7Y29uc3Qgcj1pJUM7cD0oaS9DfDApKmUudithO2NvbnN0IG49ciplLmgrczt0KGUsZ2V0QmxvY2tCdWZmZXJPZmZzZXQoZSxwLG4pKX1mdW5jdGlvbiBkZWNvZGVCbG9jayhlLHQsaSl7cD1pL2UuYmxvY2tzUGVyTGluZXwwO2NvbnN0IGE9aSVlLmJsb2Nrc1BlckxpbmU7dChlLGdldEJsb2NrQnVmZmVyT2Zmc2V0KGUscCxhKSl9Y29uc3QgbT1hLmxlbmd0aDtsZXQgeSx3LGIsRCxGLFM7Uz1oPzA9PT1yPzA9PT1vP2Z1bmN0aW9uIGRlY29kZURDRmlyc3QoZSx0KXtjb25zdCBpPWRlY29kZUh1ZmZtYW4oZS5odWZmbWFuVGFibGVEQyksYT0wPT09aT8wOnJlY2VpdmVBbmRFeHRlbmQoaSk8PGc7ZS5ibG9ja0RhdGFbdF09ZS5wcmVkKz1hfTpmdW5jdGlvbiBkZWNvZGVEQ1N1Y2Nlc3NpdmUoZSx0KXtlLmJsb2NrRGF0YVt0XXw9cmVhZEJpdCgpPDxnfTowPT09bz9mdW5jdGlvbiBkZWNvZGVBQ0ZpcnN0KGUsdCl7aWYodT4wKXt1LS07cmV0dXJufWxldCBpPXI7Y29uc3QgYT1uO2Zvcig7aTw9YTspe2NvbnN0IGE9ZGVjb2RlSHVmZm1hbihlLmh1ZmZtYW5UYWJsZUFDKSxzPTE1JmEscj1hPj40O2lmKDA9PT1zKXtpZihyPDE1KXt1PXJlY2VpdmUocikrKDE8PHIpLTE7YnJlYWt9aSs9MTY7Y29udGludWV9aSs9cjtjb25zdCBuPSR0W2ldO2UuYmxvY2tEYXRhW3Qrbl09cmVjZWl2ZUFuZEV4dGVuZChzKSooMTw8Zyk7aSsrfX06ZnVuY3Rpb24gZGVjb2RlQUNTdWNjZXNzaXZlKGUsdCl7bGV0IGk9cjtjb25zdCBhPW47bGV0IHMsbyxjPTA7Zm9yKDtpPD1hOyl7Y29uc3QgYT10KyR0W2ldLHI9ZS5ibG9ja0RhdGFbYV08MD8tMToxO3N3aXRjaChmKXtjYXNlIDA6bz1kZWNvZGVIdWZmbWFuKGUuaHVmZm1hblRhYmxlQUMpO3M9MTUmbztjPW8+PjQ7aWYoMD09PXMpaWYoYzwxNSl7dT1yZWNlaXZlKGMpKygxPDxjKTtmPTR9ZWxzZXtjPTE2O2Y9MX1lbHNle2lmKDEhPT1zKXRocm93IG5ldyBKcGVnRXJyb3IoImludmFsaWQgQUNuIGVuY29kaW5nIik7ZD1yZWNlaXZlQW5kRXh0ZW5kKHMpO2Y9Yz8yOjN9Y29udGludWU7Y2FzZSAxOmNhc2UgMjppZihlLmJsb2NrRGF0YVthXSllLmJsb2NrRGF0YVthXSs9cioocmVhZEJpdCgpPDxnKTtlbHNle2MtLTswPT09YyYmKGY9Mj09PWY/MzowKX1icmVhaztjYXNlIDM6aWYoZS5ibG9ja0RhdGFbYV0pZS5ibG9ja0RhdGFbYV0rPXIqKHJlYWRCaXQoKTw8Zyk7ZWxzZXtlLmJsb2NrRGF0YVthXT1kPDxnO2Y9MH1icmVhaztjYXNlIDQ6ZS5ibG9ja0RhdGFbYV0mJihlLmJsb2NrRGF0YVthXSs9cioocmVhZEJpdCgpPDxnKSl9aSsrfWlmKDQ9PT1mKXt1LS07MD09PXUmJihmPTApfX06ZnVuY3Rpb24gZGVjb2RlQmFzZWxpbmUoZSx0KXtjb25zdCBpPWRlY29kZUh1ZmZtYW4oZS5odWZmbWFuVGFibGVEQyksYT0wPT09aT8wOnJlY2VpdmVBbmRFeHRlbmQoaSk7ZS5ibG9ja0RhdGFbdF09ZS5wcmVkKz1hO2xldCBzPTE7Zm9yKDtzPDY0Oyl7Y29uc3QgaT1kZWNvZGVIdWZmbWFuKGUuaHVmZm1hblRhYmxlQUMpLGE9MTUmaSxyPWk+PjQ7aWYoMD09PWEpe2lmKHI8MTUpYnJlYWs7cys9MTY7Y29udGludWV9cys9cjtjb25zdCBuPSR0W3NdO2UuYmxvY2tEYXRhW3Qrbl09cmVjZWl2ZUFuZEV4dGVuZChhKTtzKyt9fTtsZXQgayxOPTA7Y29uc3QgUj0xPT09bT9hWzBdLmJsb2Nrc1BlckxpbmUqYVswXS5ibG9ja3NQZXJDb2x1bW46QyppLm1jdXNQZXJDb2x1bW47bGV0IEcseDtmb3IoO048PVI7KXtjb25zdCBpPXM/TWF0aC5taW4oUi1OLHMpOlI7aWYoaT4wKXtmb3Iodz0wO3c8bTt3KyspYVt3XS5wcmVkPTA7dT0wO2lmKDE9PT1tKXt5PWFbMF07Zm9yKEY9MDtGPGk7RisrKXtkZWNvZGVCbG9jayh5LFMsTik7TisrfX1lbHNlIGZvcihGPTA7RjxpO0YrKyl7Zm9yKHc9MDt3PG07dysrKXt5PWFbd107Rz15Lmg7eD15LnY7Zm9yKGI9MDtiPHg7YisrKWZvcihEPTA7RDxHO0QrKylkZWNvZGVNY3UoeSxTLE4sYixEKX1OKyt9fUU9MDtrPWZpbmROZXh0RmlsZU1hcmtlcihlLHQpO2lmKCFrKWJyZWFrO2lmKGsuaW52YWxpZCl7d2FybihgZGVjb2RlU2NhbiAtICR7aT4wPyJ1bmV4cGVjdGVkIjoiZXhjZXNzaXZlIn0gTUNVIGRhdGEsIGN1cnJlbnQgbWFya2VyIGlzOiAke2suaW52YWxpZH1gKTt0PWsub2Zmc2V0fWlmKCEoay5tYXJrZXI+PTY1NDg4JiZrLm1hcmtlcjw9NjU0OTUpKWJyZWFrO3QrPTJ9cmV0dXJuIHQtbH1mdW5jdGlvbiBxdWFudGl6ZUFuZEludmVyc2UoZSx0LGkpe2NvbnN0IGE9ZS5xdWFudGl6YXRpb25UYWJsZSxzPWUuYmxvY2tEYXRhO2xldCByLG4sbyxnLGMsQyxoLGwsUSxFLHUsZCxmLHAsbSx5LHc7aWYoIWEpdGhyb3cgbmV3IEpwZWdFcnJvcigibWlzc2luZyByZXF1aXJlZCBRdWFudGl6YXRpb24gVGFibGUuIik7Zm9yKGxldCBlPTA7ZTw2NDtlKz04KXtRPXNbdCtlXTtFPXNbdCtlKzFdO3U9c1t0K2UrMl07ZD1zW3QrZSszXTtmPXNbdCtlKzRdO3A9c1t0K2UrNV07bT1zW3QrZSs2XTt5PXNbdCtlKzddO1EqPWFbZV07aWYoMCE9KEV8dXxkfGZ8cHxtfHkpKXtFKj1hW2UrMV07dSo9YVtlKzJdO2QqPWFbZSszXTtmKj1hW2UrNF07cCo9YVtlKzVdO20qPWFbZSs2XTt5Kj1hW2UrN107cj1yaSpRKzEyOD4+ODtuPXJpKmYrMTI4Pj44O289dTtnPW07Yz1uaSooRS15KSsxMjg+Pjg7bD1uaSooRSt5KSsxMjg+Pjg7Qz1kPDw0O2g9cDw8NDtyPXIrbisxPj4xO249ci1uO3c9bypzaStnKmFpKzEyOD4+ODtvPW8qYWktZypzaSsxMjg+Pjg7Zz13O2M9YytoKzE+PjE7aD1jLWg7bD1sK0MrMT4+MTtDPWwtQztyPXIrZysxPj4xO2c9ci1nO249bitvKzE+PjE7bz1uLW87dz1jKmlpK2wqdGkrMjA0OD4+MTI7Yz1jKnRpLWwqaWkrMjA0OD4+MTI7bD13O3c9QyplaStoKkFpKzIwNDg+PjEyO0M9QypBaS1oKmVpKzIwNDg+PjEyO2g9dztpW2VdPXIrbDtpW2UrN109ci1sO2lbZSsxXT1uK2g7aVtlKzZdPW4taDtpW2UrMl09bytDO2lbZSs1XT1vLUM7aVtlKzNdPWcrYztpW2UrNF09Zy1jfWVsc2V7dz1yaSpRKzUxMj4+MTA7aVtlXT13O2lbZSsxXT13O2lbZSsyXT13O2lbZSszXT13O2lbZSs0XT13O2lbZSs1XT13O2lbZSs2XT13O2lbZSs3XT13fX1mb3IobGV0IGU9MDtlPDg7KytlKXtRPWlbZV07RT1pW2UrOF07dT1pW2UrMTZdO2Q9aVtlKzI0XTtmPWlbZSszMl07cD1pW2UrNDBdO209aVtlKzQ4XTt5PWlbZSs1Nl07aWYoMCE9KEV8dXxkfGZ8cHxtfHkpKXtyPXJpKlErMjA0OD4+MTI7bj1yaSpmKzIwNDg+PjEyO289dTtnPW07Yz1uaSooRS15KSsyMDQ4Pj4xMjtsPW5pKihFK3kpKzIwNDg+PjEyO0M9ZDtoPXA7cj00MTEyKyhyK24rMT4+MSk7bj1yLW47dz1vKnNpK2cqYWkrMjA0OD4+MTI7bz1vKmFpLWcqc2krMjA0OD4+MTI7Zz13O2M9YytoKzE+PjE7aD1jLWg7bD1sK0MrMT4+MTtDPWwtQztyPXIrZysxPj4xO2c9ci1nO249bitvKzE+PjE7bz1uLW87dz1jKmlpK2wqdGkrMjA0OD4+MTI7Yz1jKnRpLWwqaWkrMjA0OD4+MTI7bD13O3c9QyplaStoKkFpKzIwNDg+PjEyO0M9QypBaS1oKmVpKzIwNDg+PjEyO2g9dztRPXIrbDt5PXItbDtFPW4raDttPW4taDt1PW8rQztwPW8tQztkPWcrYztmPWctYztRPDE2P1E9MDpRPj00MDgwP1E9MjU1OlE+Pj00O0U8MTY/RT0wOkU+PTQwODA/RT0yNTU6RT4+PTQ7dTwxNj91PTA6dT49NDA4MD91PTI1NTp1Pj49NDtkPDE2P2Q9MDpkPj00MDgwP2Q9MjU1OmQ+Pj00O2Y8MTY/Zj0wOmY+PTQwODA/Zj0yNTU6Zj4+PTQ7cDwxNj9wPTA6cD49NDA4MD9wPTI1NTpwPj49NDttPDE2P209MDptPj00MDgwP209MjU1Om0+Pj00O3k8MTY/eT0wOnk+PTQwODA/eT0yNTU6eT4+PTQ7c1t0K2VdPVE7c1t0K2UrOF09RTtzW3QrZSsxNl09dTtzW3QrZSsyNF09ZDtzW3QrZSszMl09ZjtzW3QrZSs0MF09cDtzW3QrZSs0OF09bTtzW3QrZSs1Nl09eX1lbHNle3c9cmkqUSs4MTkyPj4xNDt3PXc8LTIwNDA/MDp3Pj0yMDI0PzI1NTp3KzIwNTY+PjQ7c1t0K2VdPXc7c1t0K2UrOF09dztzW3QrZSsxNl09dztzW3QrZSsyNF09dztzW3QrZSszMl09dztzW3QrZSs0MF09dztzW3QrZSs0OF09dztzW3QrZSs1Nl09d319fWZ1bmN0aW9uIGJ1aWxkQ29tcG9uZW50RGF0YShlLHQpe2NvbnN0IGk9dC5ibG9ja3NQZXJMaW5lLGE9dC5ibG9ja3NQZXJDb2x1bW4scz1uZXcgSW50MTZBcnJheSg2NCk7Zm9yKGxldCBlPTA7ZTxhO2UrKylmb3IobGV0IGE9MDthPGk7YSsrKXtxdWFudGl6ZUFuZEludmVyc2UodCxnZXRCbG9ja0J1ZmZlck9mZnNldCh0LGUsYSkscyl9cmV0dXJuIHQuYmxvY2tEYXRhfWZ1bmN0aW9uIGZpbmROZXh0RmlsZU1hcmtlcihlLHQsaT10KXtjb25zdCBhPWUubGVuZ3RoLTE7bGV0IHM9aTx0P2k6dDtpZih0Pj1hKXJldHVybiBudWxsO2NvbnN0IHI9cmVhZFVpbnQxNihlLHQpO2lmKHI+PTY1NDcyJiZyPD02NTUzNClyZXR1cm57aW52YWxpZDpudWxsLG1hcmtlcjpyLG9mZnNldDp0fTtsZXQgbj1yZWFkVWludDE2KGUscyk7Zm9yKDshKG4+PTY1NDcyJiZuPD02NTUzNCk7KXtpZigrK3M+PWEpcmV0dXJuIG51bGw7bj1yZWFkVWludDE2KGUscyl9cmV0dXJue2ludmFsaWQ6ci50b1N0cmluZygxNiksbWFya2VyOm4sb2Zmc2V0OnN9fWNsYXNzIEpwZWdJbWFnZXtjb25zdHJ1Y3Rvcih7ZGVjb2RlVHJhbnNmb3JtOmU9bnVsbCxjb2xvclRyYW5zZm9ybTp0PS0xfT17fSl7dGhpcy5fZGVjb2RlVHJhbnNmb3JtPWU7dGhpcy5fY29sb3JUcmFuc2Zvcm09dH1wYXJzZShlLHtkbmxTY2FuTGluZXM6dD1udWxsfT17fSl7ZnVuY3Rpb24gcmVhZERhdGFCbG9jaygpe2NvbnN0IHQ9cmVhZFVpbnQxNihlLHMpO3MrPTI7bGV0IGk9cyt0LTI7Y29uc3QgYT1maW5kTmV4dEZpbGVNYXJrZXIoZSxpLHMpO2lmKGE/LmludmFsaWQpe3dhcm4oInJlYWREYXRhQmxvY2sgLSBpbmNvcnJlY3QgbGVuZ3RoLCBjdXJyZW50IG1hcmtlciBpczogIithLmludmFsaWQpO2k9YS5vZmZzZXR9Y29uc3Qgcj1lLnN1YmFycmF5KHMsaSk7cys9ci5sZW5ndGg7cmV0dXJuIHJ9ZnVuY3Rpb24gcHJlcGFyZUNvbXBvbmVudHMoZSl7Y29uc3QgdD1NYXRoLmNlaWwoZS5zYW1wbGVzUGVyTGluZS84L2UubWF4SCksaT1NYXRoLmNlaWwoZS5zY2FuTGluZXMvOC9lLm1heFYpO2Zvcihjb25zdCBhIG9mIGUuY29tcG9uZW50cyl7Y29uc3Qgcz1NYXRoLmNlaWwoTWF0aC5jZWlsKGUuc2FtcGxlc1BlckxpbmUvOCkqYS5oL2UubWF4SCkscj1NYXRoLmNlaWwoTWF0aC5jZWlsKGUuc2NhbkxpbmVzLzgpKmEudi9lLm1heFYpLG49dCphLmgsbz02NCooaSphLnYpKihuKzEpO2EuYmxvY2tEYXRhPW5ldyBJbnQxNkFycmF5KG8pO2EuYmxvY2tzUGVyTGluZT1zO2EuYmxvY2tzUGVyQ29sdW1uPXJ9ZS5tY3VzUGVyTGluZT10O2UubWN1c1BlckNvbHVtbj1pfWxldCBpLGEscz0wLHI9bnVsbCxuPW51bGwsbz0wO2NvbnN0IGc9W10sYz1bXSxDPVtdO2xldCBoPXJlYWRVaW50MTYoZSxzKTtzKz0yO2lmKDY1NDk2IT09aCl0aHJvdyBuZXcgSnBlZ0Vycm9yKCJTT0kgbm90IGZvdW5kIik7aD1yZWFkVWludDE2KGUscyk7cys9MjtBOmZvcig7NjU0OTchPT1oOyl7bGV0IGwsUSxFO3N3aXRjaChoKXtjYXNlIDY1NTA0OmNhc2UgNjU1MDU6Y2FzZSA2NTUwNjpjYXNlIDY1NTA3OmNhc2UgNjU1MDg6Y2FzZSA2NTUwOTpjYXNlIDY1NTEwOmNhc2UgNjU1MTE6Y2FzZSA2NTUxMjpjYXNlIDY1NTEzOmNhc2UgNjU1MTQ6Y2FzZSA2NTUxNTpjYXNlIDY1NTE2OmNhc2UgNjU1MTc6Y2FzZSA2NTUxODpjYXNlIDY1NTE5OmNhc2UgNjU1MzQ6Y29uc3QgdT1yZWFkRGF0YUJsb2NrKCk7NjU1MDQ9PT1oJiY3ND09PXVbMF0mJjcwPT09dVsxXSYmNzM9PT11WzJdJiY3MD09PXVbM10mJjA9PT11WzRdJiYocj17dmVyc2lvbjp7bWFqb3I6dVs1XSxtaW5vcjp1WzZdfSxkZW5zaXR5VW5pdHM6dVs3XSx4RGVuc2l0eTp1WzhdPDw4fHVbOV0seURlbnNpdHk6dVsxMF08PDh8dVsxMV0sdGh1bWJXaWR0aDp1WzEyXSx0aHVtYkhlaWdodDp1WzEzXSx0aHVtYkRhdGE6dS5zdWJhcnJheSgxNCwxNCszKnVbMTJdKnVbMTNdKX0pOzY1NTE4PT09aCYmNjU9PT11WzBdJiYxMDA9PT11WzFdJiYxMTE9PT11WzJdJiY5OD09PXVbM10mJjEwMT09PXVbNF0mJihuPXt2ZXJzaW9uOnVbNV08PDh8dVs2XSxmbGFnczA6dVs3XTw8OHx1WzhdLGZsYWdzMTp1WzldPDw4fHVbMTBdLHRyYW5zZm9ybUNvZGU6dVsxMV19KTticmVhaztjYXNlIDY1NDk5OmNvbnN0IGQ9cmVhZFVpbnQxNihlLHMpO3MrPTI7Y29uc3QgZj1kK3MtMjtsZXQgcDtmb3IoO3M8Zjspe2NvbnN0IHQ9ZVtzKytdLGk9bmV3IFVpbnQxNkFycmF5KDY0KTtpZih0Pj40PT0wKWZvcihRPTA7UTw2NDtRKyspe3A9JHRbUV07aVtwXT1lW3MrK119ZWxzZXtpZih0Pj40IT0xKXRocm93IG5ldyBKcGVnRXJyb3IoIkRRVCAtIGludmFsaWQgdGFibGUgc3BlYyIpO2ZvcihRPTA7UTw2NDtRKyspe3A9JHRbUV07aVtwXT1yZWFkVWludDE2KGUscyk7cys9Mn19Z1sxNSZ0XT1pfWJyZWFrO2Nhc2UgNjU0NzI6Y2FzZSA2NTQ3MzpjYXNlIDY1NDc0OmlmKGkpdGhyb3cgbmV3IEpwZWdFcnJvcigiT25seSBzaW5nbGUgZnJhbWUgSlBFR3Mgc3VwcG9ydGVkIik7cys9MjtpPXt9O2kuZXh0ZW5kZWQ9NjU0NzM9PT1oO2kucHJvZ3Jlc3NpdmU9NjU0NzQ9PT1oO2kucHJlY2lzaW9uPWVbcysrXTtjb25zdCBtPXJlYWRVaW50MTYoZSxzKTtzKz0yO2kuc2NhbkxpbmVzPXR8fG07aS5zYW1wbGVzUGVyTGluZT1yZWFkVWludDE2KGUscyk7cys9MjtpLmNvbXBvbmVudHM9W107aS5jb21wb25lbnRJZHM9e307Y29uc3QgeT1lW3MrK107bGV0IHc9MCxiPTA7Zm9yKGw9MDtsPHk7bCsrKXtjb25zdCB0PWVbc10sYT1lW3MrMV0+PjQscj0xNSZlW3MrMV07dzxhJiYodz1hKTtiPHImJihiPXIpO2NvbnN0IG49ZVtzKzJdO0U9aS5jb21wb25lbnRzLnB1c2goe2g6YSx2OnIscXVhbnRpemF0aW9uSWQ6bixxdWFudGl6YXRpb25UYWJsZTpudWxsfSk7aS5jb21wb25lbnRJZHNbdF09RS0xO3MrPTN9aS5tYXhIPXc7aS5tYXhWPWI7cHJlcGFyZUNvbXBvbmVudHMoaSk7YnJlYWs7Y2FzZSA2NTQ3Njpjb25zdCBEPXJlYWRVaW50MTYoZSxzKTtzKz0yO2ZvcihsPTI7bDxEOyl7Y29uc3QgdD1lW3MrK10saT1uZXcgVWludDhBcnJheSgxNik7bGV0IGE9MDtmb3IoUT0wO1E8MTY7USsrLHMrKylhKz1pW1FdPWVbc107Y29uc3Qgcj1uZXcgVWludDhBcnJheShhKTtmb3IoUT0wO1E8YTtRKysscysrKXJbUV09ZVtzXTtsKz0xNythOyh0Pj40PT0wP0M6YylbMTUmdF09YnVpbGRIdWZmbWFuVGFibGUoaSxyKX1icmVhaztjYXNlIDY1NTAxOnMrPTI7YT1yZWFkVWludDE2KGUscyk7cys9MjticmVhaztjYXNlIDY1NDk4OmNvbnN0IEY9MT09KytvJiYhdDtzKz0yO2NvbnN0IFM9ZVtzKytdLGs9W107Zm9yKGw9MDtsPFM7bCsrKXtjb25zdCB0PWVbcysrXSxhPWkuY29tcG9uZW50SWRzW3RdLHI9aS5jb21wb25lbnRzW2FdO3IuaW5kZXg9dDtjb25zdCBuPWVbcysrXTtyLmh1ZmZtYW5UYWJsZURDPUNbbj4+NF07ci5odWZmbWFuVGFibGVBQz1jWzE1Jm5dO2sucHVzaChyKX1jb25zdCBOPWVbcysrXSxSPWVbcysrXSxHPWVbcysrXTt0cnl7Y29uc3QgdD1kZWNvZGVTY2FuKGUscyxpLGssYSxOLFIsRz4+NCwxNSZHLEYpO3MrPXR9Y2F0Y2godCl7aWYodCBpbnN0YW5jZW9mIEROTE1hcmtlckVycm9yKXt3YXJuKGAke3QubWVzc2FnZX0gLS0gYXR0ZW1wdGluZyB0byByZS1wYXJzZSB0aGUgSlBFRyBpbWFnZS5gKTtyZXR1cm4gdGhpcy5wYXJzZShlLHtkbmxTY2FuTGluZXM6dC5zY2FuTGluZXN9KX1pZih0IGluc3RhbmNlb2YgRU9JTWFya2VyRXJyb3Ipe3dhcm4oYCR7dC5tZXNzYWdlfSAtLSBpZ25vcmluZyB0aGUgcmVzdCBvZiB0aGUgaW1hZ2UgZGF0YS5gKTticmVhayBBfXRocm93IHR9YnJlYWs7Y2FzZSA2NTUwMDpzKz00O2JyZWFrO2Nhc2UgNjU1MzU6MjU1IT09ZVtzXSYmcy0tO2JyZWFrO2RlZmF1bHQ6Y29uc3QgeD1maW5kTmV4dEZpbGVNYXJrZXIoZSxzLTIscy0zKTtpZih4Py5pbnZhbGlkKXt3YXJuKCJKcGVnSW1hZ2UucGFyc2UgLSB1bmV4cGVjdGVkIGRhdGEsIGN1cnJlbnQgbWFya2VyIGlzOiAiK3guaW52YWxpZCk7cz14Lm9mZnNldDticmVha31pZigheHx8cz49ZS5sZW5ndGgtMSl7d2FybigiSnBlZ0ltYWdlLnBhcnNlIC0gcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBpbWFnZSBkYXRhIHdpdGhvdXQgZmluZGluZyBhbiBFT0kgbWFya2VyICgweEZGRDkpLiIpO2JyZWFrIEF9dGhyb3cgbmV3IEpwZWdFcnJvcigiSnBlZ0ltYWdlLnBhcnNlIC0gdW5rbm93biBtYXJrZXI6ICIraC50b1N0cmluZygxNikpfWg9cmVhZFVpbnQxNihlLHMpO3MrPTJ9aWYoIWkpdGhyb3cgbmV3IEpwZWdFcnJvcigiSnBlZ0ltYWdlLnBhcnNlIC0gbm8gZnJhbWUgZGF0YSBmb3VuZC4iKTt0aGlzLndpZHRoPWkuc2FtcGxlc1BlckxpbmU7dGhpcy5oZWlnaHQ9aS5zY2FuTGluZXM7dGhpcy5qZmlmPXI7dGhpcy5hZG9iZT1uO3RoaXMuY29tcG9uZW50cz1bXTtmb3IoY29uc3QgZSBvZiBpLmNvbXBvbmVudHMpe2NvbnN0IHQ9Z1tlLnF1YW50aXphdGlvbklkXTt0JiYoZS5xdWFudGl6YXRpb25UYWJsZT10KTt0aGlzLmNvbXBvbmVudHMucHVzaCh7aW5kZXg6ZS5pbmRleCxvdXRwdXQ6YnVpbGRDb21wb25lbnREYXRhKDAsZSksc2NhbGVYOmUuaC9pLm1heEgsc2NhbGVZOmUudi9pLm1heFYsYmxvY2tzUGVyTGluZTplLmJsb2Nrc1BlckxpbmUsYmxvY2tzUGVyQ29sdW1uOmUuYmxvY2tzUGVyQ29sdW1ufSl9dGhpcy5udW1Db21wb25lbnRzPXRoaXMuY29tcG9uZW50cy5sZW5ndGh9X2dldExpbmVhcml6ZWRCbG9ja0RhdGEoZSx0LGk9ITEpe2NvbnN0IGE9dGhpcy53aWR0aC9lLHM9dGhpcy5oZWlnaHQvdDtsZXQgcixuLG8sZyxjLEMsaCxsLFEsRSx1LGQ9MDtjb25zdCBmPXRoaXMuY29tcG9uZW50cy5sZW5ndGgscD1lKnQqZixtPW5ldyBVaW50OENsYW1wZWRBcnJheShwKSx5PW5ldyBVaW50MzJBcnJheShlKSx3PTQyOTQ5NjcyODg7bGV0IGI7Zm9yKGg9MDtoPGY7aCsrKXtyPXRoaXMuY29tcG9uZW50c1toXTtuPXIuc2NhbGVYKmE7bz1yLnNjYWxlWSpzO2Q9aDt1PXIub3V0cHV0O2c9ci5ibG9ja3NQZXJMaW5lKzE8PDM7aWYobiE9PWIpe2ZvcihjPTA7YzxlO2MrKyl7bD0wfGMqbjt5W2NdPShsJncpPDwzfDcmbH1iPW59Zm9yKEM9MDtDPHQ7QysrKXtsPTB8QypvO0U9ZyoobCZ3KXwoNyZsKTw8Mztmb3IoYz0wO2M8ZTtjKyspe21bZF09dVtFK3lbY11dO2QrPWZ9fX1sZXQgRD10aGlzLl9kZWNvZGVUcmFuc2Zvcm07aXx8NCE9PWZ8fER8fChEPW5ldyBJbnQzMkFycmF5KFstMjU2LDI1NSwtMjU2LDI1NSwtMjU2LDI1NSwtMjU2LDI1NV0pKTtpZihEKWZvcihoPTA7aDxwOylmb3IobD0wLFE9MDtsPGY7bCsrLGgrKyxRKz0yKW1baF09KG1baF0qRFtRXT4+OCkrRFtRKzFdO3JldHVybiBtfWdldCBfaXNDb2xvckNvbnZlcnNpb25OZWVkZWQoKXtyZXR1cm4gdGhpcy5hZG9iZT8hIXRoaXMuYWRvYmUudHJhbnNmb3JtQ29kZTozPT09dGhpcy5udW1Db21wb25lbnRzPzAhPT10aGlzLl9jb2xvclRyYW5zZm9ybSYmKDgyIT09dGhpcy5jb21wb25lbnRzWzBdLmluZGV4fHw3MSE9PXRoaXMuY29tcG9uZW50c1sxXS5pbmRleHx8NjYhPT10aGlzLmNvbXBvbmVudHNbMl0uaW5kZXgpOjE9PT10aGlzLl9jb2xvclRyYW5zZm9ybX1fY29udmVydFljY1RvUmdiKGUpe2xldCB0LGksYTtmb3IobGV0IHM9MCxyPWUubGVuZ3RoO3M8cjtzKz0zKXt0PWVbc107aT1lW3MrMV07YT1lW3MrMl07ZVtzXT10LTE3OS40NTYrMS40MDIqYTtlW3MrMV09dCsxMzUuNDU5LS4zNDQqaS0uNzE0KmE7ZVtzKzJdPXQtMjI2LjgxNisxLjc3MippfXJldHVybiBlfV9jb252ZXJ0WWNjVG9SZ2JhKGUsdCl7Zm9yKGxldCBpPTAsYT0wLHM9ZS5sZW5ndGg7aTxzO2krPTMsYSs9NCl7Y29uc3Qgcz1lW2ldLHI9ZVtpKzFdLG49ZVtpKzJdO3RbYV09cy0xNzkuNDU2KzEuNDAyKm47dFthKzFdPXMrMTM1LjQ1OS0uMzQ0KnItLjcxNCpuO3RbYSsyXT1zLTIyNi44MTYrMS43NzIqcjt0W2ErM109MjU1fXJldHVybiB0fV9jb252ZXJ0WWNja1RvUmdiKGUpe2xldCB0LGksYSxzLHI9MDtmb3IobGV0IG49MCxvPWUubGVuZ3RoO248bztuKz00KXt0PWVbbl07aT1lW24rMV07YT1lW24rMl07cz1lW24rM107ZVtyKytdPWkqKC02NjA2MzU2Njk0MjAzNjRlLTE5KmkrLjAwMDQzNzEzMDQ3NTkyNjIzMiphLTU0MDgwNjEwMDY0NTk5ZS0xOCp0Ky4wMDA0ODQ0OTc5NzEyMDI4MSpzLS4xNTQzNjIxNTE4NzExMjYpLTEyMi42NzE5NTQwNjg5NCthKigtLjAwMDk1Nzk2NDM3ODQ0NTc3MyphKy4wMDA4MTcwNzY5MTEzNDY2MjUqdC0uMDA0NzcyNzE0MDU0MDg3NDcqcysxLjUzMzgwMjUzMjIxNzM0KSt0KiguMDAwOTYxMjUwMTg0MTMwNjg4KnQtLjAwMjY2MjU3MzMyMjgzOTMzKnMrLjQ4MzU3MDg4NDUxMjY1KStzKigtLjAwMDMzNjE5NzE3NzYxODM5NCpzKy40ODQ3OTE1NjE0OTA3NzYpO2VbcisrXT0xMDcuMjY4MDM5Mzk3NzI0K2kqKDIxOTkyNzEwNDUyNTc0MWUtMTkqaS0uMDAwNjQwOTkyMDE4Mjk3OTQ1KmErLjAwMDY1OTM5NzAwMTI0NTU3Nyp0Ky4wMDA0MjYxMDU2NTI5Mzg4Mzcqcy0uMTc2NDkxNzkyNDYyODc1KSthKigtLjAwMDc3ODI2OTk0MTUxMzY4MyphKy4wMDEzMDg3MjI2MTQwODI3NSp0Ky4wMDA3NzA0ODI2MzE4MDExMzIqcy0uMTUxMDUxNDkyNzc1NTYyKSt0KiguMDAxMjY5MzUzNjgxMTQ4NDMqdC0uMDAyNjUwOTAxODkwMTA4OTgqcysuMjU4MDI5MTAyMDY4NDUpK3MqKC0uMDAwMzE4OTEzMTE3NTg4MzI4KnMtLjIxMzc0MjQwMDMyMzY2NSk7ZVtyKytdPWkqKC0uMDAwNTcwMTE1MTk2OTczNjc3KmktMjYzNDA5MDUxMDA0NTg5ZS0xOSphKy4wMDIwNzQxMDg4MTE1MDEyKnQtLjAwMjg4MjYwMjM2ODUzNDQyKnMrLjgxNDI3Mjk2ODM1OTI5NSktMjAuODEwMDEyNTQ2OTQ3K2EqKC0xNTM0OTYwNTc0NDA5NzVlLTE5KmEtLjAwMDEzMjY4OTA0Mzk2MTQ0Nip0Ky4wMDA1NjA4MzM2OTEyNDI4MTIqcy0uMTk1MTUyMDI3NTM0MDQ5KSt0KiguMDAxNzQ0MTgxMzI5Mjc1ODIqdC0uMDAyNTUyNDMzMjE0MzkzNDcqcysuMTE2OTM1MDIwNDY1MTQ1KStzKigtLjAwMDM0MzUzMTk5NjUxMDU1NSpzKy4yNDE2NTI2MDIzMjQwNyl9cmV0dXJuIGUuc3ViYXJyYXkoMCxyKX1fY29udmVydFljY2tUb1JnYmEoZSl7Zm9yKGxldCB0PTAsaT1lLmxlbmd0aDt0PGk7dCs9NCl7Y29uc3QgaT1lW3RdLGE9ZVt0KzFdLHM9ZVt0KzJdLHI9ZVt0KzNdO2VbdF09YSooLTY2MDYzNTY2OTQyMDM2NGUtMTkqYSsuMDAwNDM3MTMwNDc1OTI2MjMyKnMtNTQwODA2MTAwNjQ1OTllLTE4KmkrLjAwMDQ4NDQ5Nzk3MTIwMjgxKnItLjE1NDM2MjE1MTg3MTEyNiktMTIyLjY3MTk1NDA2ODk0K3MqKC0uMDAwOTU3OTY0Mzc4NDQ1NzczKnMrLjAwMDgxNzA3NjkxMTM0NjYyNSppLS4wMDQ3NzI3MTQwNTQwODc0NypyKzEuNTMzODAyNTMyMjE3MzQpK2kqKC4wMDA5NjEyNTAxODQxMzA2ODgqaS0uMDAyNjYyNTczMzIyODM5MzMqcisuNDgzNTcwODg0NTEyNjUpK3IqKC0uMDAwMzM2MTk3MTc3NjE4Mzk0KnIrLjQ4NDc5MTU2MTQ5MDc3Nik7ZVt0KzFdPTEwNy4yNjgwMzkzOTc3MjQrYSooMjE5OTI3MTA0NTI1NzQxZS0xOSphLS4wMDA2NDA5OTIwMTgyOTc5NDUqcysuMDAwNjU5Mzk3MDAxMjQ1NTc3KmkrLjAwMDQyNjEwNTY1MjkzODgzNypyLS4xNzY0OTE3OTI0NjI4NzUpK3MqKC0uMDAwNzc4MjY5OTQxNTEzNjgzKnMrLjAwMTMwODcyMjYxNDA4Mjc1KmkrLjAwMDc3MDQ4MjYzMTgwMTEzMipyLS4xNTEwNTE0OTI3NzU1NjIpK2kqKC4wMDEyNjkzNTM2ODExNDg0MyppLS4wMDI2NTA5MDE4OTAxMDg5OCpyKy4yNTgwMjkxMDIwNjg0NSkrciooLS4wMDAzMTg5MTMxMTc1ODgzMjgqci0uMjEzNzQyNDAwMzIzNjY1KTtlW3QrMl09YSooLS4wMDA1NzAxMTUxOTY5NzM2NzcqYS0yNjM0MDkwNTEwMDQ1ODllLTE5KnMrLjAwMjA3NDEwODgxMTUwMTIqaS0uMDAyODgyNjAyMzY4NTM0NDIqcisuODE0MjcyOTY4MzU5Mjk1KS0yMC44MTAwMTI1NDY5NDcrcyooLTE1MzQ5NjA1NzQ0MDk3NWUtMTkqcy0uMDAwMTMyNjg5MDQzOTYxNDQ2KmkrLjAwMDU2MDgzMzY5MTI0MjgxMipyLS4xOTUxNTIwMjc1MzQwNDkpK2kqKC4wMDE3NDQxODEzMjkyNzU4MippLS4wMDI1NTI0MzMyMTQzOTM0NypyKy4xMTY5MzUwMjA0NjUxNDUpK3IqKC0uMDAwMzQzNTMxOTk2NTEwNTU1KnIrLjI0MTY1MjYwMjMyNDA3KTtlW3QrM109MjU1fXJldHVybiBlfV9jb252ZXJ0WWNja1RvQ215ayhlKXtsZXQgdCxpLGE7Zm9yKGxldCBzPTAscj1lLmxlbmd0aDtzPHI7cys9NCl7dD1lW3NdO2k9ZVtzKzFdO2E9ZVtzKzJdO2Vbc109NDM0LjQ1Ni10LTEuNDAyKmE7ZVtzKzFdPTExOS41NDEtdCsuMzQ0KmkrLjcxNCphO2VbcysyXT00ODEuODE2LXQtMS43NzIqaX1yZXR1cm4gZX1fY29udmVydENteWtUb1JnYihlKXtsZXQgdCxpLGEscyxyPTA7Zm9yKGxldCBuPTAsbz1lLmxlbmd0aDtuPG87bis9NCl7dD1lW25dO2k9ZVtuKzFdO2E9ZVtuKzJdO3M9ZVtuKzNdO2VbcisrXT0yNTUrdCooLTY3NDcxNDcwNzM2MDI0NDFlLTIwKnQrLjAwMDgzNzkyNjIxMjEwMTM3MjcqaSsuMDAwMjg5NDcxODE4ODY0MzI5NCphKy4wMDMyNjQyMzEwNTc1Mzc4MDYqcy0xLjExODU2MTE4NjcyMDM5MzcpK2kqKDI2Mzc0MTA3NjE2MDg5NDA1ZS0yMSppLTg2MjY5NDkxNTg2Mzg1NzJlLTIwKmEtLjAwMDI3NDg3NjkwNjc0OTk0OTEqcy0uMDIxNTU2ODg3OTQ5Nzg5NjcpK2EqKC0zODc4MDk5MjEyODY5MzYzZS0yMCphLS4wMDAzMjY3ODA4Mjc5NDg1Mjg2KnMrLjA2ODY3NDIyMzg1OTUzNDUpLXMqKC4wMDAzMzYxOTcxNzc2MTgzOTM3KnMrLjc0MzA2NTkxNTEzNDIyNTQpO2VbcisrXT0yNTUrdCooLjAwMDEzNTk2MzcyODEzNTg4ODQ4KnQrLjAwMDkyNDUzNzEzMjU3MzU4NSppKy4wMDAxMDU2NzM1OTYxODY4MzU5MyphKy4wMDA0NzkxODY0Njg3NDM2NTEyKnMtLjMxMDk2ODk1ODc1MTU4NzUpK2kqKC0uMDAwMjM1NDUzNDYxMDgzNzAzNDQqaSsuMDAwMjcwMjg0NTI1MzUzNDcxNCphKy4wMDIwMjAwMzA4OTc3MzA3MTU2KnMtLjc0ODgwNTIxNjcwMTU0OTQpK2EqKDY4MzQ4MTU5OTgyMzU2NjJlLTIwKmErLjAwMDE1MTY4NDUyMzYzNDYwOTczKnMtLjA5NzUxOTI3Nzc0NzI4OTMzKS1zKiguMDAwMzE4OTEzMTE3NTg4MzI4MSpzKy43MzY0ODgzODA3NzMzMTY4KTtlW3IrK109MjU1K3QqKDEzNTk4NjUwNDExMzg1MzA3ZS0yMSp0Ky4wMDAxMjQyMzk1NjE3NTQ5MDg1MSppKy4wMDA0NzUxOTg1MDk3NTgzNTg5KmEtMzY3MjkzMTc0NzY2MzA0MjJlLTIyKnMtLjA1NTYyMTg2OTgwMjY0MDM0KStpKiguMDAwMTYxNDEzODA1OTg3MjQ2NzYqaSsuMDAwOTY5MjIzOTEzMDcyNTE4NiphKy4wMDA3NzgyNjkyNDUwMDM2MjUzKnMtLjQ0MDE1MjMyMzY3NTI2NDYzKSthKig1LjA2ODg4MjkxNDA2ODc2OWUtNyphKy4wMDE3Nzc4MzY5MDExMzc1MDcxKnMtLjc1OTE0NTQ2NDk3NDk2MDkpLXMqKC4wMDAzNDM1MzE5OTY1MTA1NTUzKnMrLjcwNjM3NzAxODYxNjAxNDQpfXJldHVybiBlLnN1YmFycmF5KDAscil9X2NvbnZlcnRDbXlrVG9SZ2JhKGUpe2ZvcihsZXQgdD0wLGk9ZS5sZW5ndGg7dDxpO3QrPTQpe2NvbnN0IGk9ZVt0XSxhPWVbdCsxXSxzPWVbdCsyXSxyPWVbdCszXTtlW3RdPTI1NStpKigtNjc0NzE0NzA3MzYwMjQ0MWUtMjAqaSsuMDAwODM3OTI2MjEyMTAxMzcyNyphKy4wMDAyODk0NzE4MTg4NjQzMjk0KnMrLjAwMzI2NDIzMTA1NzUzNzgwNipyLTEuMTE4NTYxMTg2NzIwMzkzNykrYSooMjYzNzQxMDc2MTYwODk0MDVlLTIxKmEtODYyNjk0OTE1ODYzODU3MmUtMjAqcy0uMDAwMjc0ODc2OTA2NzQ5OTQ5MSpyLS4wMjE1NTY4ODc5NDk3ODk2NykrcyooLTM4NzgwOTkyMTI4NjkzNjNlLTIwKnMtLjAwMDMyNjc4MDgyNzk0ODUyODYqcisuMDY4Njc0MjIzODU5NTM0NSktciooLjAwMDMzNjE5NzE3NzYxODM5MzcqcisuNzQzMDY1OTE1MTM0MjI1NCk7ZVt0KzFdPTI1NStpKiguMDAwMTM1OTYzNzI4MTM1ODg4NDgqaSsuMDAwOTI0NTM3MTMyNTczNTg1KmErLjAwMDEwNTY3MzU5NjE4NjgzNTkzKnMrLjAwMDQ3OTE4NjQ2ODc0MzY1MTIqci0uMzEwOTY4OTU4NzUxNTg3NSkrYSooLS4wMDAyMzU0NTM0NjEwODM3MDM0NCphKy4wMDAyNzAyODQ1MjUzNTM0NzE0KnMrLjAwMjAyMDAzMDg5NzczMDcxNTYqci0uNzQ4ODA1MjE2NzAxNTQ5NCkrcyooNjgzNDgxNTk5ODIzNTY2MmUtMjAqcysuMDAwMTUxNjg0NTIzNjM0NjA5NzMqci0uMDk3NTE5Mjc3NzQ3Mjg5MzMpLXIqKC4wMDAzMTg5MTMxMTc1ODgzMjgxKnIrLjczNjQ4ODM4MDc3MzMxNjgpO2VbdCsyXT0yNTUraSooMTM1OTg2NTA0MTEzODUzMDdlLTIxKmkrLjAwMDEyNDIzOTU2MTc1NDkwODUxKmErLjAwMDQ3NTE5ODUwOTc1ODM1ODkqcy0zNjcyOTMxNzQ3NjYzMDQyMmUtMjIqci0uMDU1NjIxODY5ODAyNjQwMzQpK2EqKC4wMDAxNjE0MTM4MDU5ODcyNDY3NiphKy4wMDA5NjkyMjM5MTMwNzI1MTg2KnMrLjAwMDc3ODI2OTI0NTAwMzYyNTMqci0uNDQwMTUyMzIzNjc1MjY0NjMpK3MqKDUuMDY4ODgyOTE0MDY4NzY5ZS03KnMrLjAwMTc3NzgzNjkwMTEzNzUwNzEqci0uNzU5MTQ1NDY0OTc0OTYwOSktciooLjAwMDM0MzUzMTk5NjUxMDU1NTMqcisuNzA2Mzc3MDE4NjE2MDE0NCk7ZVt0KzNdPTI1NX1yZXR1cm4gZX1nZXREYXRhKHt3aWR0aDplLGhlaWdodDp0LGZvcmNlUkdCQTppPSExLGZvcmNlUkdCOmE9ITEsaXNTb3VyY2VQREY6cz0hMX0pe2lmKHRoaXMubnVtQ29tcG9uZW50cz40KXRocm93IG5ldyBKcGVnRXJyb3IoIlVuc3VwcG9ydGVkIGNvbG9yIG1vZGUiKTtjb25zdCByPXRoaXMuX2dldExpbmVhcml6ZWRCbG9ja0RhdGEoZSx0LHMpO2lmKDE9PT10aGlzLm51bUNvbXBvbmVudHMmJihpfHxhKSl7Y29uc3QgZT1yLmxlbmd0aCooaT80OjMpLHQ9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KGUpO2xldCBhPTA7aWYoaSkhZnVuY3Rpb24gZ3JheVRvUkdCQShlLHQpe2lmKEZlYXR1cmVUZXN0LmlzTGl0dGxlRW5kaWFuKWZvcihsZXQgaT0wLGE9ZS5sZW5ndGg7aTxhO2krKyl0W2ldPTY1NzkzKmVbaV18NDI3ODE5MDA4MDtlbHNlIGZvcihsZXQgaT0wLGE9ZS5sZW5ndGg7aTxhO2krKyl0W2ldPTE2ODQzMDA4KmVbaV18MjU1fShyLG5ldyBVaW50MzJBcnJheSh0LmJ1ZmZlcikpO2Vsc2UgZm9yKGNvbnN0IGUgb2Ygcil7dFthKytdPWU7dFthKytdPWU7dFthKytdPWV9cmV0dXJuIHR9aWYoMz09PXRoaXMubnVtQ29tcG9uZW50cyYmdGhpcy5faXNDb2xvckNvbnZlcnNpb25OZWVkZWQpe2lmKGkpe2NvbnN0IGU9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KHIubGVuZ3RoLzMqNCk7cmV0dXJuIHRoaXMuX2NvbnZlcnRZY2NUb1JnYmEocixlKX1yZXR1cm4gdGhpcy5fY29udmVydFljY1RvUmdiKHIpfWlmKDQ9PT10aGlzLm51bUNvbXBvbmVudHMpe2lmKHRoaXMuX2lzQ29sb3JDb252ZXJzaW9uTmVlZGVkKXJldHVybiBpP3RoaXMuX2NvbnZlcnRZY2NrVG9SZ2JhKHIpOmE/dGhpcy5fY29udmVydFljY2tUb1JnYihyKTp0aGlzLl9jb252ZXJ0WWNja1RvQ215ayhyKTtpZihpKXJldHVybiB0aGlzLl9jb252ZXJ0Q215a1RvUmdiYShyKTtpZihhKXJldHVybiB0aGlzLl9jb252ZXJ0Q215a1RvUmdiKHIpfXJldHVybiByfX1jbGFzcyBKcGVnU3RyZWFtIGV4dGVuZHMgRGVjb2RlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCxpKXtsZXQgYTtmb3IoOy0xIT09KGE9ZS5nZXRCeXRlKCkpOylpZigyNTU9PT1hKXtlLnNraXAoLTEpO2JyZWFrfXN1cGVyKHQpO3RoaXMuc3RyZWFtPWU7dGhpcy5kaWN0PWUuZGljdDt0aGlzLm1heWJlTGVuZ3RoPXQ7dGhpcy5wYXJhbXM9aX1nZXQgYnl0ZXMoKXtyZXR1cm4gc2hhZG93KHRoaXMsImJ5dGVzIix0aGlzLnN0cmVhbS5nZXRCeXRlcyh0aGlzLm1heWJlTGVuZ3RoKSl9ZW5zdXJlQnVmZmVyKGUpe31yZWFkQmxvY2soKXtpZih0aGlzLmVvZilyZXR1cm47Y29uc3QgZT17ZGVjb2RlVHJhbnNmb3JtOnZvaWQgMCxjb2xvclRyYW5zZm9ybTp2b2lkIDB9LHQ9dGhpcy5kaWN0LmdldEFycmF5KCJEIiwiRGVjb2RlIik7aWYoKHRoaXMuZm9yY2VSR0JBfHx0aGlzLmZvcmNlUkdCKSYmQXJyYXkuaXNBcnJheSh0KSl7Y29uc3QgaT10aGlzLmRpY3QuZ2V0KCJCUEMiLCJCaXRzUGVyQ29tcG9uZW50Iil8fDgsYT10Lmxlbmd0aCxzPW5ldyBJbnQzMkFycmF5KGEpO2xldCByPSExO2NvbnN0IG49KDE8PGkpLTE7Zm9yKGxldCBlPTA7ZTxhO2UrPTIpe3NbZV09MjU2Kih0W2UrMV0tdFtlXSl8MDtzW2UrMV09dFtlXSpufDA7MjU2PT09c1tlXSYmMD09PXNbZSsxXXx8KHI9ITApfXImJihlLmRlY29kZVRyYW5zZm9ybT1zKX1pZih0aGlzLnBhcmFtcyBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IHQ9dGhpcy5wYXJhbXMuZ2V0KCJDb2xvclRyYW5zZm9ybSIpO051bWJlci5pc0ludGVnZXIodCkmJihlLmNvbG9yVHJhbnNmb3JtPXQpfWNvbnN0IGk9bmV3IEpwZWdJbWFnZShlKTtpLnBhcnNlKHRoaXMuYnl0ZXMpO2NvbnN0IGE9aS5nZXREYXRhKHt3aWR0aDp0aGlzLmRyYXdXaWR0aCxoZWlnaHQ6dGhpcy5kcmF3SGVpZ2h0LGZvcmNlUkdCQTp0aGlzLmZvcmNlUkdCQSxmb3JjZVJHQjp0aGlzLmZvcmNlUkdCLGlzU291cmNlUERGOiEwfSk7dGhpcy5idWZmZXI9YTt0aGlzLmJ1ZmZlckxlbmd0aD1hLmxlbmd0aDt0aGlzLmVvZj0hMH19dmFyIG9pLGdpPShvaT0iZmlsZTovLy9DOi9wZGZqcy9ib3Rpby1maWxlcy1wZGZqcy9wcml2YXRlL2Q2OTE5YmVkMDNjNjY3Ny9leHRlcm5hbC9vcGVuanBlZy9vcGVuanBlZy5qcyIsZnVuY3Rpb24oZT17fSl7dmFyIHQsaSxhPWU7bmV3IFByb21pc2UoKChlLGEpPT57dD1lO2k9YX0pKTthLmRlY29kZT1mdW5jdGlvbihlLHQpe2NvbnN0IGk9ZS5sZW5ndGgscz1hLl9tYWxsb2MoaSk7YS5IRUFQVTguc2V0KGUscyk7Y29uc3Qgcj1hLl9qcDJfZGVjb2RlKHMsaSx0PzE6MCk7YS5fZnJlZShzKTtpZihyKXtjb25zdHtlcnJvck1lc3NhZ2VzOmV9PWE7aWYoZSl7ZGVsZXRlIGEuZXJyb3JNZXNzYWdlcztyZXR1cm4gZX1yZXR1cm4iVW5rbm93biBlcnJvciJ9Y29uc3R7aW1hZ2VEYXRhOm59PWE7YS5pbWFnZURhdGE9bnVsbDtyZXR1cm4gbn07dmFyIHMscj1PYmplY3QuYXNzaWduKHt9LGEpLG49Ii4vdGhpcy5wcm9ncmFtIixvPSIiOyJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQmJmRvY3VtZW50LmN1cnJlbnRTY3JpcHQmJihvPWRvY3VtZW50LmN1cnJlbnRTY3JpcHQuc3JjKTtvaSYmKG89b2kpO289by5zdGFydHNXaXRoKCJibG9iOiIpPyIiOm8uc3Vic3RyKDAsby5yZXBsYWNlKC9bPyNdLiovLCIiKS5sYXN0SW5kZXhPZigiLyIpKzEpO3ZhciBnLGMsQyxoLGwsUT1hLnByaW50fHxjb25zb2xlLmxvZy5iaW5kKGNvbnNvbGUpLEU9YS5wcmludEVycnx8Y29uc29sZS5lcnJvci5iaW5kKGNvbnNvbGUpO09iamVjdC5hc3NpZ24oYSxyKTtyPW51bGw7YS5hcmd1bWVudHMmJmEuYXJndW1lbnRzO2EudGhpc1Byb2dyYW0mJihuPWEudGhpc1Byb2dyYW0pO2EucXVpdCYmYS5xdWl0O2Eud2FzbUJpbmFyeSYmKGc9YS53YXNtQmluYXJ5KTtmdW5jdGlvbiB0cnlQYXJzZUFzRGF0YVVSSShlKXtpZihpc0RhdGFVUkkoZSkpcmV0dXJuIGZ1bmN0aW9uIGludEFycmF5RnJvbUJhc2U2NChlKXtmb3IodmFyIHQ9YXRvYihlKSxpPW5ldyBVaW50OEFycmF5KHQubGVuZ3RoKSxhPTA7YTx0Lmxlbmd0aDsrK2EpaVthXT10LmNoYXJDb2RlQXQoYSk7cmV0dXJuIGl9KGUuc2xpY2UoYi5sZW5ndGgpKX1mdW5jdGlvbiB1cGRhdGVNZW1vcnlWaWV3cygpe3ZhciBlPWMuYnVmZmVyO2EuSEVBUDg9Qz1uZXcgSW50OEFycmF5KGUpO2EuSEVBUDE2PW5ldyBJbnQxNkFycmF5KGUpO2EuSEVBUFU4PWg9bmV3IFVpbnQ4QXJyYXkoZSk7YS5IRUFQVTE2PW5ldyBVaW50MTZBcnJheShlKTthLkhFQVAzMj1uZXcgSW50MzJBcnJheShlKTthLkhFQVBVMzI9bD1uZXcgVWludDMyQXJyYXkoZSk7YS5IRUFQRjMyPW5ldyBGbG9hdDMyQXJyYXkoZSk7YS5IRUFQRjY0PW5ldyBGbG9hdDY0QXJyYXkoZSl9dmFyIHUsZD1bXSxmPVtdLHA9W10sbT0wLHk9bnVsbCx3PW51bGwsYj0iZGF0YTphcHBsaWNhdGlvbi9vY3RldC1zdHJlYW07YmFzZTY0LCIsaXNEYXRhVVJJPWU9PmUuc3RhcnRzV2l0aChiKTt1PSJkYXRhOmFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbTtiYXNlNjQsQUdGemJRRUFBQUFCemdFYVlBTi9mMzhCZjJBRWYzOS9md0YvWUFGL0FHQUNmMzhBWUFGL0FYOWdBMzkvZndCZ0FuOS9BWDlnQkg5L2YzOEFZQU4vZm44QmZtQUNmbjhCZjJBRmYzOS9mMzhCZjJBQ2ZuOEJmbUFEZjM1L0FYOWdBQUYvWUFkL2YzOS9mMzkvQVg5Z0JYOS9mMzkvQUdBSmYzOS9mMzkvZjM5L0FYOWdDMzkvZjM5L2YzOS9mMzkvQVg5Z0JuOS9mMzkvZndGL1lBWi9mSDkvZjM4QmYyQUlmMzkvZjM5L2YzOEFZQWgvZjM5L2YzOS9md0YvWUFBQVlBWi9mMzkvZjM4QVlBZC9mMzkvZjM5L0FHQUNmSDhCZkFJeENBRmhBV0VBQWdGaEFXSUFCQUZoQVdNQUJnRmhBV1FBQmdGaEFXVUFBUUZoQVdZQUJRRmhBV2NBQWdGaEFXZ0FBd08rQWJ3QkJ3SUZBQVlFQUFVR0JRRUVEd1VFRkFJR0FnWUNBZ0FRRVFRQ0NSSUNCUUlDQWdRSEJBSU5EQVlDRlFNSEFBQUVBd0VXQ2dvREFBb0dBUVFFQlFVTkRnRUJBd0FEQmdJUUJCY1lBZ2NHQXdjSEFRRUNBQVFFR1FZSEJBNFBBQVFDQWdJQUJnQUdBUUVCQVFFQkFRRUFBQUFBQUFZREFnSUNBd01EQXdNQUF4TUlCQTBBQXdNQUJBZ0pDd2dBQUFFQkFRRUJBUUVCREFFQUJBUUZDZzRCRWhFQkFBQUdBd01CQlFVRkJRVUZCUVVCQ3dFQkFRRUJBUUVCQVFrRUJRRndBV3hzQlFjQkFZSUNnSUFDQmdnQmZ3RkJnTmdGQ3djYkJnRnBBZ0FCYWdBNkFXc0Fqd0VCYkFBSkFXMEJBQUZ1QUk0QkNiSUJBUUJCQVF0clNzTUJ1UUZzYkMrZUFaTUJrQUdFQVlNQmdnR0JBWUFCZjM1OVMzcDVlSGQyZFhSemNuRndiMjdDQWNFQndBRy9BYjRCdlFFNXZBRzdBVGs1dWdHNEFiY0J0Z0cxQWJRQnN3R3lBYkVCc0FHcUFaOEJuUUdjQVpzQm1nR1pBWmdCbHdHV0FaVUJsQUdTQVpFQlFrTkZTMEY4VERGSmUwZytQMGNrSUtJQm9RR2pBYXNCcndHc0FhWUJvQUdrQWFVQnJRR3VBV21uQWFnQnFRRktqUUdNQVlVQmh3R0dBWWtCaXdHSUFRcW11QTI4QVlJQ0FRTi9Jd0JCa0FScklnUWtBQUpBSUFCRkRRQUNRQUpBQWtBQ1FDQUJRUUZyRGdRQUFRUUNCQXNnQUVFTWFpRUJEQUlMSUFCQkVHb2hBU0FBUVFScUlRQU1BUXNnQUVFVWFpRUJJQUJCQ0dvaEFBc2dBU2dDQUNJRlJRMEFJQUpGRFFBZ0FDZ0NBQ0VHSUFSQkFFR0FCQkFPSWdFZ0F6WUNqQVFqQUVHZ0FXc2lBQ1FBSUFBZ0FUWUNsQUVnQUVIL0F6WUNtQUVnQUVFQVFaQUJFQTRpQUVGL05nSk1JQUJCNWdBMkFpUWdBRUYvTmdKUUlBQWdBRUdmQVdvMkFpd2dBQ0FBUVpRQmFqWUNWQ0FCUVFBNkFBQWdBQ0FDSUFOQjV3QkI2QUFRWkNBQVFhQUJhaVFBSUFGQkFEb0Evd01nQVNBR0lBVVJBd0FMSUFSQmtBUnFKQUFMMEFJQkJYOGdBQVJBSUFCQkJHc2lBeWdDQUNJRUlRRWdBeUVDSUFCQkNHc29BZ0FpQUNBQVFYNXhJZ0JIQkVBZ0FpQUFheUlDS0FJRUlnRWdBaWdDQ0NJRk5nSUlJQVVnQVRZQ0JDQUFJQVJxSVFFTElBTWdCR29pQUNnQ0FDSURJQUFnQTJwQkJHc29BZ0JIQkVBZ0FDZ0NCQ0lFSUFBb0FnZ2lBRFlDQ0NBQUlBUTJBZ1FnQVNBRGFpRUJDeUFDSUFFMkFnQWdBaUFCUVh4eGFrRUVheUFCUVFGeU5nSUFJQUlDZnlBQ0tBSUFRUWhySWdCQi93Qk5CRUFnQUVFRGRrRUJhd3dCQ3lBQVp5RURJQUJCSFNBRGEzWkJCSE1nQTBFQ2RHdEI3Z0JxSUFCQi94OU5EUUFhUVQ4Z0FFRWVJQU5yZGtFQ2N5QURRUUYwYTBISEFHb2lBQ0FBUVQ5UEd3c2lBVUVFZENJQVFhREdBV28yQWdRZ0FpQUFRYWpHQVdvaUFDZ0NBRFlDQ0NBQUlBSTJBZ0FnQWlnQ0NDQUNOZ0lFUWFqT0FVR296Z0VwQXdCQ0FTQUJyWWFFTndNQUN3dkpBZ0VFZnlBQlFRQTJBZ0FDUUNBQ1JRMEFJQUVnQW1vaEF3SkFJQUpCRUVrRVFDQUFJUUVNQVFzQ1FDQUFJQUpxSUFGTkRRQWdBQ0FEVHcwQUlBQWhBUXdCQ3lBRFFSQnJJUVlnQUNBQ1FYQnhJZ1ZxSVFFZ0F5QUZheUVEQTBBZ0JpQUVheUFBSUFScS9RQUFBUDBNQUFBQUFBQUFBQUFBQUFBQUFBQUFBUDBORHc0TkRBc0tDUWdIQmdVRUF3SUJBUDBMQUFBZ0JFRVFhaUlFSUFWSERRQUxJQUlnQlVZTkFRc0NRQ0FDUVFOeElnWkZCRUFnQlNFRURBRUxRUUFoQUNBRklRUURRQ0FEUVFGcklnTWdBUzBBQURvQUFDQUVRUUZxSVFRZ0FVRUJhaUVCSUFCQkFXb2lBQ0FHUncwQUN3c2dCU0FDYTBGOFN3MEFBMEFnQTBFQmF5QUJMUUFBT2dBQUlBTkJBbXNnQVMwQUFUb0FBQ0FEUVFOcklBRXRBQUk2QUFBZ0EwRUVheUlESUFFdEFBTTZBQUFnQVVFRWFpRUJJQVJCQkdvaUJDQUNSdzBBQ3dzTGdBUUJBMzhnQWtHQUJFOEVRQ0FBSUFFZ0FoQUZJQUFQQ3lBQUlBSnFJUU1DUUNBQUlBRnpRUU54UlFSQUFrQWdBRUVEY1VVRVFDQUFJUUlNQVFzZ0FrVUVRQ0FBSVFJTUFRc2dBQ0VDQTBBZ0FpQUJMUUFBT2dBQUlBRkJBV29oQVNBQ1FRRnFJZ0pCQTNGRkRRRWdBaUFEU1EwQUN3c0NRQ0FEUVh4eElnUkJ3QUJKRFFBZ0FpQUVRVUJxSWdWTERRQURRQ0FDSUFFb0FnQTJBZ0FnQWlBQktBSUVOZ0lFSUFJZ0FTZ0NDRFlDQ0NBQ0lBRW9BZ3cyQWd3Z0FpQUJLQUlRTmdJUUlBSWdBU2dDRkRZQ0ZDQUNJQUVvQWhnMkFoZ2dBaUFCS0FJY05nSWNJQUlnQVNnQ0lEWUNJQ0FDSUFFb0FpUTJBaVFnQWlBQktBSW9OZ0lvSUFJZ0FTZ0NMRFlDTENBQ0lBRW9BakEyQWpBZ0FpQUJLQUkwTmdJMElBSWdBU2dDT0RZQ09DQUNJQUVvQWp3MkFqd2dBVUZBYXlFQklBSkJRR3NpQWlBRlRRMEFDd3NnQWlBRVR3MEJBMEFnQWlBQktBSUFOZ0lBSUFGQkJHb2hBU0FDUVFScUlnSWdCRWtOQUFzTUFRc2dBMEVFU1FSQUlBQWhBZ3dCQ3lBQUlBTkJCR3NpQkVzRVFDQUFJUUlNQVFzZ0FDRUNBMEFnQWlBQkxRQUFPZ0FBSUFJZ0FTMEFBVG9BQVNBQ0lBRXRBQUk2QUFJZ0FpQUJMUUFET2dBRElBRkJCR29oQVNBQ1FRUnFJZ0lnQkUwTkFBc0xJQUlnQTBrRVFBTkFJQUlnQVMwQUFEb0FBQ0FCUVFGcUlRRWdBa0VCYWlJQ0lBTkhEUUFMQ3lBQUN6QUJBWDhDUUNBQVJRMEFJQUZGRFFCQkNDQUFJQUZzSWdFUUd5SUFCRUFnQUVFQUlBRVFEaG9MSUFBaEFnc2dBZ3NSQUNBQVJRUkFRUUFQQzBFSUlBQVFHd3Z5QWdJQ2Z3RitBa0FnQWtVTkFDQUFJQUU2QUFBZ0FDQUNhaUlEUVFGcklBRTZBQUFnQWtFRFNRMEFJQUFnQVRvQUFpQUFJQUU2QUFFZ0EwRURheUFCT2dBQUlBTkJBbXNnQVRvQUFDQUNRUWRKRFFBZ0FDQUJPZ0FESUFOQkJHc2dBVG9BQUNBQ1FRbEpEUUFnQUVFQUlBQnJRUU54SWdScUlnTWdBVUgvQVhGQmdZS0VDR3dpQVRZQ0FDQURJQUlnQkd0QmZIRWlCR29pQWtFRWF5QUJOZ0lBSUFSQkNVa05BQ0FESUFFMkFnZ2dBeUFCTmdJRUlBSkJDR3NnQVRZQ0FDQUNRUXhySUFFMkFnQWdCRUVaU1EwQUlBTWdBVFlDR0NBRElBRTJBaFFnQXlBQk5nSVFJQU1nQVRZQ0RDQUNRUkJySUFFMkFnQWdBa0VVYXlBQk5nSUFJQUpCR0dzZ0FUWUNBQ0FDUVJ4cklBRTJBZ0FnQkNBRFFRUnhRUmh5SWdScklnSkJJRWtOQUNBQnJVS0JnSUNBRUg0aEJTQURJQVJxSVFFRFFDQUJJQVUzQXhnZ0FTQUZOd01RSUFFZ0JUY0RDQ0FCSUFVM0F3QWdBVUVnYWlFQklBSkJJR3NpQWtFZlN3MEFDd3NnQUFzbkFRRi9Jd0JCRUdzaUF5UUFJQU1nQWpZQ0RDQUFJQUVnQWtFQVFRQVFaQ0FEUVJCcUpBQUw2QVVCQ1g4Z0FVVUVRRUVBRHdzQ2Z5QUFSUVJBUVFnZ0FSQWJEQUVMSUFGRkJFQWdBQkFKUVFBTUFRc0NRQ0FCUVVkTERRQWdBQUovUVFnZ0FVRURha0Y4Y1NBQlFRaE5HeUlIUVFocUlRRUNRQUovQWtBZ0FFRUVheUlLSWdRb0FnQWlCU0FFYWlJQ0tBSUFJZ2tnQWlBSmFpSUlRUVJyS0FJQVJ3UkFJQWdnQVNBRWFpSURRUkJxVHdSQUlBSW9BZ1FpQlNBQ0tBSUlJZ0kyQWdnZ0FpQUZOZ0lFSUFNZ0NDQURheUlDTmdJQUlBTWdBa0Y4Y1dwQkJHc2dBa0VCY2pZQ0FDQURBbjhnQXlnQ0FFRUlheUlDUWY4QVRRUkFJQUpCQTNaQkFXc01BUXNnQWtFZElBSm5JZ1ZyZGtFRWN5QUZRUUowYTBIdUFHb2dBa0gvSDAwTkFCcEJQeUFDUVI0Z0JXdDJRUUp6SUFWQkFYUnJRY2NBYWlJQ0lBSkJQMDhiQ3lJQ1FRUjBJZ1ZCb01ZQmFqWUNCQ0FESUFWQnFNWUJhaUlGS0FJQU5nSUlJQVVnQXpZQ0FDQURLQUlJSUFNMkFnUkJxTTRCUWFqT0FTa0RBRUlCSUFLdGhvUTNBd0FnQkNBQk5nSUFEQVFMSUFNZ0NFc05BU0FDS0FJRUlnRWdBaWdDQ0NJRE5nSUlJQU1nQVRZQ0JDQUVJQVVnQ1dvaUFUWUNBQXdEQ3lBRklBRkJFR3BQQkVBZ0JDQUJOZ0lBSUFRZ0FVRjhjV3BCQkdzZ0FUWUNBQ0FCSUFScUlnTWdCU0FCYXlJQk5nSUFJQU1nQVVGOGNXcEJCR3NnQVVFQmNqWUNBQ0FEQW44Z0F5Z0NBRUVJYXlJQlFmOEFUUVJBSUFGQkEzWkJBV3NNQVFzZ0FVRWRJQUZuSWdScmRrRUVjeUFFUVFKMGEwSHVBR29nQVVIL0gwME5BQnBCUHlBQlFSNGdCR3QyUVFKeklBUkJBWFJyUWNjQWFpSUJJQUZCUDA4YkN5SUJRUVIwSWdSQm9NWUJhallDQkNBRElBUkJxTVlCYWlJRUtBSUFOZ0lJSUFRZ0F6WUNBQ0FES0FJSUlBTTJBZ1JCcU00QlFhak9BU2tEQUVJQklBR3Rob1EzQXdCQkFRd0VDMEVCSUFFZ0JVME5BUm9MUVFBTERBRUxJQVFnQVVGOGNXcEJCR3NnQVRZQ0FFRUJDdzBCR2tFSUlBY1FHeUlCUlEwQUlBRWdBQ0FISUFvb0FnQkJDR3NpQmlBR0lBZExHeEFMR2lBQUVBa2dBU0VHQ3lBR0N3c1hBQ0FBTFFBQVFTQnhSUVJBSUFFZ0FpQUFFRFlhQ3d1OEJBRUZmeUFDSUFBb0FqQWlCVTBFUUNBQklBQW9BaVFnQWhBTEdpQUFJQUFvQWlRZ0FtbzJBaVFnQUNBQUtBSXdJQUpyTmdJd0lBQWdBQ2tET0NBQ3JYdzNBemdnQWc4TElBQXRBRVJCQkhFRVFDQUJJQUFvQWlRZ0JSQUxHaUFBS0FJd0lRRWdBRUVBTmdJd0lBQWdBU0FBS0FJa2FqWUNKQ0FBSUFBcEF6Z2dBYTE4TndNNElBVkJmeUFGR3c4TEFrQWdCUVJBSUFFZ0FDZ0NKQ0FGRUFzaEJDQUFJQUFvQWlBaUJ6WUNKQ0FBS0FJd0lRRWdBRUVBTmdJd0lBQWdBQ2tET0NBQnJYdzNBemdnQWlBQmF5RUNJQUVnQkdvaEFRd0JDeUFBSUFBb0FpQWlCellDSkFzQ1FBSkFBMEFDUUNBQUtBSUFJUVFnQUNnQ0VDRUdBa0FnQUNnQ1FDSUlJQUpMQkVBZ0FDQUhJQWdnQkNBR0VRQUFJZ1kyQWpBZ0JrRi9SZ1JBREFZTElBSWdCazBOQWlBQklBQW9BaVFnQmhBTEdpQUFJQUFvQWlBaUJ6WUNKQ0FBS0FJd0lRUU1BUXNnQUNBQklBSWdCQ0FHRVFBQUlnUTJBakFnQkVGL1JnUkFEQVVMSUFJZ0JFME5BeUFBSUFBb0FpQWlCellDSkNBRUlRWUxJQUJCQURZQ01DQUFJQUFwQXpnZ0JLMThOd000SUFFZ0JHb2hBU0FDSUFScklRSWdCU0FHYWlFRkRBRUxDeUFCSUFBb0FpUWdBaEFMR2lBQUlBQW9BaVFnQW1vMkFpUWdBQ0FBS0FJd0lBSnJOZ0l3SUFBZ0FDa0RPQ0FDclh3M0F6Z2dBaUFGYWc4TElBQkJBRFlDTUNBQUlBQW9BaUEyQWlRZ0FDQUFLUU00SUFTdGZEY0RPQ0FFSUFWcUR3c2dBMEVFUWF2MUFFRUFFQWdnQUVFQU5nSXdJQUFnQUNnQ1JFRUVjallDUkNBRlFYOGdCUnNMaXdjQ0RYOEJmaUFBS0FJUUlnZEJJRThFUUNBQUtRTUlwdzhMQWtBZ0FDZ0NHQ0lDUVFST0JFQWdBQ2dDQUNJQktBSUFJUVFnQUNBQ1FRUnJJZ1UyQWhnZ0FDQUJRUVJxTmdJQURBRUxRWDlCQUNBQUtBSWNHeUVFSUFKQkFFd0VRQ0FDSVFVTUFRc2dBa0VCY1NFTUlBQW9BZ0FoQVFKQUlBSkJBVVlFUUNBQklRWU1BUXNnQWtIKy8vLy9CM0VoQ2dOQUlBQWdBVUVCYWpZQ0FDQUJMUUFBSVFrZ0FDQUJRUUpxSWdZMkFnQWdBQ0FDUVFGck5nSVlJQUV0QUFFaEFTQUFJQUpCQW1zaUFqWUNHQ0FFUWY4QklBTjBRWDl6Y1NBSklBTjBja0dBL2dNZ0EzUkJmM054SUFFZ0EwRUljblJ5SVFRZ0EwRVFhaUVESUFZaEFTQUZRUUpxSWdVZ0NrY05BQXNMUVFBaEJTQU1SUTBBSUFBZ0JrRUJhallDQUNBR0xRQUFJUUVnQUNBQ1FRRnJOZ0lZSUFSQi93RWdBM1JCZjNOeElBRWdBM1J5SVFRTElBQW9BaFFoQVNBQUlBUkJHSFlpQ2tIL0FVWTJBaFFnQUVFSFFRZ2dBUnNpQVVFSFFRZ2dCRUgvQVhFaUJrSC9BVVliYWlJQ1FRZEJDQ0FFUVFoMlFmOEJjU0lEUWY4QlJodHFJZ2xCQjBFSUlBUkJFSFpCL3dGeElnUkIvd0ZHR3lBSGFtb2lDRFlDRUNBQUlBQXBBd2dnQXlBQmRDQUVJQUowY2lBS0lBbDBjaUFHY3EwZ0I2MkdoQ0lPTndNSUlBaEJIMDBFUUFKQUlBVkJCRTRFUUNBQUtBSUFJZ0VvQWdBaEFpQUFJQVZCQkdzMkFoZ2dBQ0FCUVFScU5nSUFEQUVMUVFBaEEwRi9RUUFnQUNnQ0hCc2hBaUFGUVFCTURRQWdCVUVCY1NFTklBQW9BZ0FoQVFKQUlBVkJBVVlFUUNBQklRUU1BUXNnQlVIKy8vLy9CM0VoQ1VFQUlRWURRQ0FBSUFGQkFXbzJBZ0FnQVMwQUFDRUxJQUFnQVVFQ2FpSUVOZ0lBSUFBZ0JVRUJhellDR0NBQkxRQUJJUUVnQUNBRlFRSnJJZ1UyQWhnZ0FrSC9BU0FEZEVGL2MzRWdDeUFEZEhKQmdQNERJQU4wUVg5emNTQUJJQU5CQ0hKMGNpRUNJQU5CRUdvaEF5QUVJUUVnQmtFQ2FpSUdJQWxIRFFBTEN5QU5SUTBBSUFBZ0JFRUJhallDQUNBRUxRQUFJUUVnQUNBRlFRRnJOZ0lZSUFKQi93RWdBM1JCZjNOeElBRWdBM1J5SVFJTElBQWdBa0VZZGlJQlFmOEJSallDRkNBQVFRZEJDQ0FLUWY4QlJoc2lCRUVIUVFnZ0FrSC9BWEVpQmtIL0FVWWJhaUlGUVFkQkNDQUNRUWgyUWY4QmNTSURRZjhCUmh0cUlnZEJCMEVJSUFKQkVIWkIvd0Z4SWdKQi93RkdHeUFJYW1vMkFoQWdBQ0FESUFSMElBSWdCWFJ5SUFFZ0IzUnlJQVp5clNBSXJZWWdEb1FpRGpjRENBc2dEcWNMYXdFQmZ5TUFRWUFDYXlJRkpBQUNRQ0FDSUFOTURRQWdCRUdBd0FSeERRQWdCU0FCSUFJZ0Eyc2lBMEdBQWlBRFFZQUNTU0lCR3hBT0dpQUJSUVJBQTBBZ0FDQUZRWUFDRUJFZ0EwR0FBbXNpQTBIL0FVc05BQXNMSUFBZ0JTQURFQkVMSUFWQmdBSnFKQUFMTVFBZ0FRSi9JQUlvQWt4QkFFZ0VRQ0FBSUFFZ0FoQTJEQUVMSUFBZ0FTQUNFRFlMSWdCR0JFQVBDeUFBSUFGdUdnczNBUUovSXdCQkVHc2lBU1FBSUFBRWZ5QUJRUXhxUVJBZ0FCQmxJUUJCQUNBQktBSU1JQUFiQlVFQUN5RUNJQUZCRUdva0FDQUNDeGNBSUFBZ0FTQUNJQU1nQkNBRklBWWdCMEVCRUI4YUMyb0JBMzhnQUFSQUlBQW9BaGdpQVFSQUlBQW9BaEFpQWdSL1FRQWhBUU5BSUFBb0FoZ2dBVUUwYkdvb0Fpd2lBd1JBSUFNUUNTQUFLQUlRSVFJTElBRkJBV29pQVNBQ1NRMEFDeUFBS0FJWUJTQUJDeEFKQ3lBQUtBSWNJZ0VFUUNBQkVBa0xJQUFRQ1FzTG9RRUJCSDhnQVVFQVRBUkFRUUFQQ3lBQUtBSU1JUUlnQUNnQ0VDRURBMEFnQVNFRkFrQWdBdzBBSUFBZ0FrRUlkRUdBL2dOeElnSTJBZ3dnQUVFSFFRZ2dBa0dBL2dOR0d5SUROZ0lRSUFBb0FnZ2lBU0FBS0FJRVR3MEFJQUFnQVVFQmFqWUNDQ0FBSUFJZ0FTMEFBSElpQWpZQ0RBc2dBQ0FEUVFGcklnTTJBaEFnQWlBRGRrRUJjU0FGUVFGcklnRjBJQVJ5SVFRZ0JVRUJTdzBBQ3lBRUN4NEFJQUFvQWd3RVFDQUFRUUEyQWlnRFFDQUFLQUlZUVFCS0RRQUxDd3VYQkFJR2Z3SitBa0FDUUFOQUlBQWdBRUVCYTNFTkFTQUJRVWRMRFFFZ0FFRUlJQUJCQ0VzaUJ4c2hBRUdvemdFcEF3QWlDQUovUVFnZ0FVRURha0Y4Y1NBQlFRaE5HeUlCUWY4QVRRUkFJQUZCQTNaQkFXc01BUXNnQVdjaEFpQUJRUjBnQW10MlFRUnpJQUpCQW5SclFlNEFhaUFCUWY4ZlRRMEFHa0UvSUFGQkhpQUNhM1pCQW5NZ0FrRUJkR3RCeHdCcUlnSWdBa0UvVHhzTElnU3RpQ0lKUWdCU0JFQURRQ0FKSUFsNklnaUlJUWtDZmlBRUlBaW5haUlFUVFSMElnTkJxTVlCYWlnQ0FDSUNJQU5Cb01ZQmFpSURSd1JBSUFJZ0FDQUJFRFVpQlEwR0lBSW9BZ1FpQlNBQ0tBSUlJZ1kyQWdnZ0JpQUZOZ0lFSUFJZ0F6WUNDQ0FDSUFNb0FnUTJBZ1FnQXlBQ05nSUVJQUlvQWdRZ0FqWUNDQ0FFUVFGcUlRUWdDVUlCaUF3QkMwR296Z0ZCcU00QktRTUFRbjRnQksySmd6Y0RBQ0FKUWdHRkN5SUpRZ0JTRFFBTFFhak9BU2tEQUNFSUMwRS9JQWg1cDJzaEJnSkFJQWhRQkVCQkFDRUNEQUVMSUFaQkJIUWlBMEdveGdGcUtBSUFJUUlnQ0VLQWdJQ0FCRlFOQUVIakFDRUVJQUlnQTBHZ3hnRnFJZ05HRFFBRFFDQUVSUTBCSUFJZ0FDQUJFRFVpQlEwRUlBUkJBV3NoQkNBQ0tBSUlJZ0lnQTBjTkFBc2dBeUVDQ3lBQklBQkJNR3BCTUNBSEcyb1FaZzBBQ3lBQ1JRMEFJQUlnQmtFRWRFR2d4Z0ZxSWdOR0RRQURRQ0FDSUFBZ0FSQTFJZ1VOQWlBQ0tBSUlJZ0lnQTBjTkFBc0xRUUFoQlFzZ0JRdVNGUUVQZndKQUFrQWdBQ2dDREVVRVFFRUJJUThnQUNnQ0JFRUFTZzBCSUFBb0FnaEJBVW9OQVF3Q0MwRUJJUTBnQUNnQ0NFRUFTZzBBSUFBb0FnUkJBa2dOQVFzZ0FDZ0NBQ0lJSUExQkJYUnFJUVFDUUNBQUtBSVFJZ2NnQUNnQ0ZDSUtUdzBBSUFRZ0IwRUdkR29oQVFKQUlBb2dCMnRCQTNFaUJrVUVRQ0FISVFJTUFRc2dCeUVDQTBBZ0FTQUIvUUFFQVAwTVdIYWRQMWgyblQ5WWRwMC9XSGFkUC8zbUFmMExCQUFnQVNBQi9RQUVFUDBNV0hhZFAxaDJuVDlZZHAwL1dIYWRQLzNtQWYwTEJCQWdBVUZBYXlFQklBSkJBV29oQWlBRFFRRnFJZ01nQmtjTkFBc0xJQWNnQ210QmZFc05BQU5BSUFFZ0FmMEFCQUQ5REZoMm5UOVlkcDAvV0hhZFAxaDJuVC85NWdIOUN3UUFJQUVnQWYwQUJCRDlERmgyblQ5WWRwMC9XSGFkUDFoMm5ULzk1Z0g5Q3dRUUlBRWdBZjBBQkVEOURGaDJuVDlZZHAwL1dIYWRQMWgyblQvOTVnSDlDd1JBSUFFZ0FmMEFCRkQ5REZoMm5UOVlkcDAvV0hhZFAxaDJuVC85NWdIOUN3UlFJQUVnQWYwQUJJQUIvUXhZZHAwL1dIYWRQMWgyblQ5WWRwMC8vZVlCL1FzRWdBRWdBU0FCL1FBRWtBSDlERmgyblQ5WWRwMC9XSGFkUDFoMm5ULzk1Z0g5Q3dTUUFTQUJJQUg5QUFUQUFmME1XSGFkUDFoMm5UOVlkcDAvV0hhZFAvM21BZjBMQk1BQklBRWdBZjBBQk5BQi9ReFlkcDAvV0hhZFAxaDJuVDlZZHAwLy9lWUIvUXNFMEFFZ0FVR0FBbW9oQVNBQ1FRUnFJZ0lnQ2tjTkFBc0xJQWdnRDBFRmRHb2hCUUpBSUFBb0FoZ2lCaUFBS0FJY0lndFBEUUFnQlNBR1FRWjBhaUVCQWtBZ0N5QUdhMEVEY1NJSVJRUkFJQVloQWd3QkMwRUFJUU1nQmlFQ0EwQWdBU0FCL1FBRUFQME1BQmpRUHdBWTBEOEFHTkEvQUJqUVAvM21BZjBMQkFBZ0FTQUIvUUFFRVAwTUFCalFQd0FZMEQ4QUdOQS9BQmpRUC8zbUFmMExCQkFnQVVGQWF5RUJJQUpCQVdvaEFpQURRUUZxSWdNZ0NFY05BQXNMSUFZZ0MydEJmRXNOQUFOQUlBRWdBZjBBQkFEOURBQVkwRDhBR05BL0FCalFQd0FZMEQvOTVnSDlDd1FBSUFFZ0FmMEFCQkQ5REFBWTBEOEFHTkEvQUJqUVB3QVkwRC85NWdIOUN3UVFJQUVnQWYwQUJFRDlEQUFZMEQ4QUdOQS9BQmpRUHdBWTBELzk1Z0g5Q3dSQUlBRWdBZjBBQkZEOURBQVkwRDhBR05BL0FCalFQd0FZMEQvOTVnSDlDd1JRSUFFZ0FmMEFCSUFCL1F3QUdOQS9BQmpRUHdBWTBEOEFHTkEvL2VZQi9Rc0VnQUVnQVNBQi9RQUVrQUg5REFBWTBEOEFHTkEvQUJqUVB3QVkwRC85NWdIOUN3U1FBU0FCSUFIOUFBVEFBZjBNQUJqUVB3QVkwRDhBR05BL0FCalFQLzNtQWYwTEJNQUJJQUVnQWYwQUJOQUIvUXdBR05BL0FCalFQd0FZMEQ4QUdOQS8vZVlCL1FzRTBBRWdBVUdBQW1vaEFTQUNRUVJxSWdJZ0MwY05BQXNMSUFvZ0FDZ0NDQ0lKSUFBb0FnUWlEaUFOYXlJQUlBQWdDVW9iSWdnZ0NDQUtTeHNoRENBRVFTQnFJUUVDZnlBSFJRUkFJQXhGQkVCQkFDRURJQUVNQWdzZ0JDQUUvUUFFQUNBRi9RQUVBQ0FFL1FBRUlQM2tBZjBNVlJQalBsVVQ0ejVWRStNK1ZSUGpQdjNtQWYzbEFmMExCQUFnQkNBRS9RQUVFQ0FGL1FBRUVDQUUvUUFFTVAza0FmME1WUlBqUGxVVDR6NVZFK00rVlJQalB2M21BZjNsQWYwTEJCQkJBU0VESUFSQjRBQnFEQUVMSUFFZ0J5SURRUVowYWdzaEFpQURJQXhKQkVBRFFDQUNRU0JySWdBZ0FQMEFCQUFnQWtGQWF2MEFCQUFnQXYwQUJBRDk1QUg5REZVVDR6NVZFK00rVlJQalBsVVQ0ejc5NWdIOTVRSDlDd1FBSUFKQkVHc2lBQ0FBL1FBRUFDQUNRVEJyL1FBRUFDQUMvUUFFRVAza0FmME1WUlBqUGxVVDR6NVZFK00rVlJQalB2M21BZjNsQWYwTEJBQWdBa0ZBYXlFQ0lBTkJBV29pQXlBTVJ3MEFDd3NnQ0NBS1R5SU5SUVJBSUFKQklHc2lBQ0FBL1FBRUFDQUNRVUJxL1FBRUFQME1WUk5qUDFVVFl6OVZFMk0vVlJOalAvM21BZjNsQWYwTEJBQWdBa0VRYXlJQUlBRDlBQVFBSUFKQk1HdjlBQVFBL1F4VkUyTS9WUk5qUDFVVFl6OVZFMk0vL2VZQi9lVUIvUXNFQUFzZ0N5QU9JQWtnRDJzaUFDQUFJQTVLR3lJT0lBc2dEa2tiSVFrZ0JVRWdhaUVDSUFrQ2Z5QUdSUVJBSUFsRkJFQWdBaUVEUVFBTUFnc2dCU0FGL1FBRUFDQUUvUUFFQUNBRi9RQUVJUDNrQWYwTWRnWmlQM1lHWWo5MkJtSS9kZ1ppUC8zbUFmM2xBZjBMQkFBZ0JTQUYvUUFFRUNBRS9RQUVFQ0FGL1FBRU1QM2tBZjBNZGdaaVAzWUdZajkyQm1JL2RnWmlQLzNtQWYzbEFmMExCQkFnQlVIZ0FHb2hBMEVCREFFTElBSWdCa0VHZEdvaEF5QUdDeUlBU3dSQUEwQWdBMEVnYXlJSUlBajlBQVFBSUFOQlFHcjlBQVFBSUFQOUFBUUEvZVFCL1F4MkJtSS9kZ1ppUDNZR1lqOTJCbUkvL2VZQi9lVUIvUXNFQUNBRFFSQnJJZ2dnQ1AwQUJBQWdBMEV3YS8wQUJBQWdBLzBBQkJEOTVBSDlESFlHWWo5MkJtSS9kZ1ppUDNZR1lqLzk1Z0g5NVFIOUN3UUFJQU5CUUdzaEF5QUFRUUZxSWdBZ0NVY05BQXNMSUFzZ0RrMGlDRVVFUUNBRFFTQnJJZ0FnQVAwQUJBQWdBMEZBYXYwQUJBRDlESFlHNGo5MkJ1SS9kZ2JpUDNZRzRqLzk1Z0g5NVFIOUN3UUFJQU5CRUdzaUFDQUEvUUFFQUNBRFFUQnIvUUFFQVAwTWRnYmlQM1lHNGo5MkJ1SS9kZ2JpUC8zbUFmM2xBZjBMQkFBTEFrQWdCMFVFUUNBTVJRUkFRUUFoQnd3Q0N5QUVJQVQ5QUFRQUlBWDlBQVFBSUFUOUFBUWcvZVFCL1F5dUFWazlyZ0ZaUGE0QldUMnVBVms5L2VZQi9lUUIvUXNFQUNBRUlBVDlBQVFRSUFYOUFBUVFJQVQ5QUFRdy9lUUIvUXl1QVZrOXJnRlpQYTRCV1QydUFWazkvZVlCL2VRQi9Rc0VFQ0FFUWVBQWFpRUJRUUVoQnd3QkN5QUJJQWRCQm5ScUlRRUxJQWNnREVrRVFBTkFJQUZCSUdzaUFDQUEvUUFFQUNBQlFVQnEvUUFFQUNBQi9RQUVBUDNrQWYwTXJnRlpQYTRCV1QydUFWazlyZ0ZaUGYzbUFmM2tBZjBMQkFBZ0FVRVFheUlBSUFEOUFBUUFJQUZCTUd2OUFBUUFJQUg5QUFRUS9lUUIvUXl1QVZrOXJnRlpQYTRCV1QydUFWazkvZVlCL2VRQi9Rc0VBQ0FCUVVCcklRRWdCMEVCYWlJSElBeEhEUUFMQ3lBTlJRUkFJQUZCSUdzaUFDQUEvUUFFQUNBQlFVQnEvUUFFQVAwTXJnSFpQYTRCMlQydUFkazlyZ0haUGYzbUFmM2tBZjBMQkFBZ0FVRVFheUlBSUFEOUFBUUFJQUZCTUd2OUFBUUEvUXl1QWRrOXJnSFpQYTRCMlQydUFkazkvZVlCL2VRQi9Rc0VBQXNDUUNBR1JRUkFJQWxGQkVCQkFDRUdEQUlMSUFVZ0JmMEFCQUFnQlAwQUJBQWdCZjBBQkNEOTVBSDlESE1HeXo5ekJzcy9jd2JMUDNNR3l6Lzk1Z0g5NUFIOUN3UUFJQVVnQmYwQUJCQWdCUDBBQkJBZ0JmMEFCREQ5NUFIOURITUd5ejl6QnNzL2N3YkxQM01HeXovOTVnSDk1QUg5Q3dRUUlBVkI0QUJxSVFKQkFTRUdEQUVMSUFJZ0JrRUdkR29oQWdzZ0JpQUpTUVJBQTBBZ0FrRWdheUlBSUFEOUFBUUFJQUpCUUdyOUFBUUFJQUw5QUFRQS9lUUIvUXh6QnNzL2N3YkxQM01HeXo5ekJzcy8vZVlCL2VRQi9Rc0VBQ0FDUVJCcklnQWdBUDBBQkFBZ0FrRXdhLzBBQkFBZ0F2MEFCQkQ5NUFIOURITUd5ejl6QnNzL2N3YkxQM01HeXovOTVnSDk1QUg5Q3dRQUlBSkJRR3NoQWlBR1FRRnFJZ1lnQ1VjTkFBc0xJQWdOQUNBQ1FTQnJJZ0FnQVAwQUJBQWdBa0ZBYXYwQUJBRDlESE1HUzBCekJrdEFjd1pMUUhNR1MwRDk1Z0g5NUFIOUN3UUFJQUpCRUdzaUFDQUEvUUFFQUNBQ1FUQnIvUUFFQVAwTWN3WkxRSE1HUzBCekJrdEFjd1pMUVAzbUFmM2tBZjBMQkFBTEMxMEJCSDhnQUFSQUlBQW9BaFFpQVNBQUtBSVFJZ0pzQkVBRFFDQUFLQUlZSUFOQkFuUnFLQUlBSWdRRVFDQUVFQWtnQUNnQ0VDRUNJQUFvQWhRaEFRc2dBMEVCYWlJRElBRWdBbXhKRFFBTEN5QUFLQUlZRUFrZ0FCQUpDd3VGQVFFQ2Z3SkFBa0FnQUNnQ0JDSURJQUFvQWdBaUJFY0VRQ0FBS0FJSUlRTU1BUXNnQUNBRFFRcHFJZ1EyQWdRZ0FDZ0NDQ0FFUVFKMEVCQWlBMFVOQVNBQUlBTTJBZ2dnQUNnQ0FDRUVDeUFESUFSQkFuUnFJQUUyQWdBZ0FDQUVRUUZxTmdJQVFRRVBDeUFBS0FJSUVBa2dBRUlBTndJQUlBSkJBVUhTTGtFQUVBaEJBQXZZSXdJcWZ3TjdBa0FnQUNnQ0FDSUpJQU5KRFFBZ0FTQURUdzBBSUFFZ0NVOE5BQ0FBS0FJRUlna2dCRWtOQUNBQ0lBUlBEUUFnQWlBSlR3MEFJQVZCSEdzaEtDQUFLQUlJSWhsQkFuUWhFU0FIUVFKMElROGdCa0VDZENFZklBVkJCR3NoS1NBQ0lBQW9BZ3h1SVI0Z0FTQVpiaUVqSUFaQkNFY2hKQ0FDSVIwRFFDQUFLQUlNSWdraENpQUNJQjFHQkVBZ0NTQUNJQWx3YXlFS0N5QUtJQVFnSFdzaURDQUtJQXhKR3lJVFFYeHhJUnNnRTBFRGNTRVdJQk5CZUhFaEtpQVRRUWR4SVNVZ0UwRUJheUVhSUJrZ0NVRUNkQ0FLUVFKMGEwRUVhbXdoSUNBR1FRSkdJQk5CQVVaeElTc2dDU0FLYXlBWmJDRW1JQ2dnRHlBZElBSnJJZ3hzSWdscUlTY2dDU0FwYWlFc0lBVWdDV29oTFNBRklBY2dER3hCQW5ScUlSd2dJeUVoSUFFaEdBTkFJQmtnR1NBamJDQUJhMm9nR1NBQklCaEdHeUlNSUFNZ0dHc2lDU0FKSUF4TEd5RVFJQmtnREdzaENTQWhRUUowSWcwZ0FDZ0NHQ0FBS0FJUUlCNXNRUUowYW1vb0FnQWhFZ0pBQWtBZ0NBUkFBa0FDUUFKQUFrQUNRQ0FTQkVBZ0VpQW1RUUowYWlBSlFRSjBhaUVLSUJnZ0FXc2hEU0FHUVFGR0RRUWdIQ0FHSUExc1FRSjBhaUVMSUJCQkFVWU5BeUFyRFFJZ0pBMEJJQkJCQjAwTkFTQVRSUTBJSUNjZ0RTQWZiR29nRUVFRmRHb2hGU0FTSUNBZ0VFRUNkR29nREVFQ2RHdHFJU0lnRUVGOGNTRU5RUUFoRWd3RkN5QUdRUUZIQkVBZ0UwVU5DQ0FRUVh4eElRMGdFRUVEY1NFTUlCd2dHQ0FCYXlBR2JFRUNkR29oQzBFQUlSSWdFRUVCYTBFRFNTRVVBMEFDUUNBUVJRMEFRUUFoQ1VFQUlRcEJBQ0VPSUJSRkJFQURRQ0FMSUFZZ0NteEJBblJxUVFBMkFnQWdDeUFLUVFGeUlBWnNRUUowYWtFQU5nSUFJQXNnQ2tFQ2NpQUdiRUVDZEdwQkFEWUNBQ0FMSUFwQkEzSWdCbXhCQW5ScVFRQTJBZ0FnQ2tFRWFpRUtJQTVCQkdvaURpQU5SdzBBQ3dzZ0RFVU5BQU5BSUFzZ0JpQUtiRUVDZEdwQkFEWUNBQ0FLUVFGcUlRb2dDVUVCYWlJSklBeEhEUUFMQ3lBTElBOXFJUXNnRXlBU1FRRnFJaEpIRFFBTERBZ0xJQk5GRFFjZ0VFRUNkQ0VNSUJ3Z0dDQUJhMEVDZEdvaEMwRUFJUWtnR2tFSFR3UkFBMEFnQzBFQUlBd1FEaUFQYWtFQUlBd1FEaUFQYWtFQUlBd1FEaUFQYWtFQUlBd1FEaUFQYWtFQUlBd1FEaUFQYWtFQUlBd1FEaUFQYWtFQUlBd1FEaUFQYWtFQUlBd1FEaUFQYWlFTElBbEJDR29pQ1NBcVJ3MEFDd3RCQUNFSklDVkZEUWNEUUNBTFFRQWdEQkFPSUE5cUlRc2dDVUVCYWlJSklDVkhEUUFMREFjTElCTkZEUVlnRUVGOGNTRVVJQkJCQTNFaEVrRUFJUTBnRUVFQmEwRURTU0VYREFVTFFRQWhDU0FRUVh4eElnNEVRQU5BSUFzZ0NVRURkR29nQ2lBSlFRSjBhaWdDQURZQ0FDQUxJQWxCQVhJaUZFRURkR29nQ2lBVVFRSjBhaWdDQURZQ0FDQUxJQWxCQW5JaUZFRURkR29nQ2lBVVFRSjBhaWdDQURZQ0FDQUxJQWxCQTNJaUZFRURkR29nQ2lBVVFRSjBhaWdDQURZQ0FDQUpRUVJxSWdrZ0Rra05BQXNMSUFrZ0VFOE5CUUpBSUJBZ0NXc2lGRUVRU1EwQUlDMGdEU0FmYkNJTmFpQUpRUU4wYWlBU0lDQnFJZzRnRUNBTWEwRUNkR3BKQkVBZ0RpQUpJQXhyUVFKMGFpQU5JQ3hxSUJCQkEzUnFTUTBCQ3lBS0lBbEJBblJxSVEwZ0NmMFIvUXdBQUFBQUFRQUFBQUlBQUFBREFBQUEvYTRCSVRNZ0NTQVVRWHh4SWd4cUlRbEJBQ0VPQTBBZ0N5QXpRUUg5cXdFaU5QMGJBRUVDZEdvZ0RTQU9RUUowYXYwQUFnQWlOZjFhQWdBQUlBc2dOUDBiQVVFQ2RHb2dOZjFhQWdBQklBc2dOUDBiQWtFQ2RHb2dOZjFhQWdBQ0lBc2dOUDBiQTBFQ2RHb2dOZjFhQWdBRElEUDlEQVFBQUFBRUFBQUFCQUFBQUFRQUFBRDlyZ0VoTXlBT1FRUnFJZzRnREVjTkFBc2dEQ0FVUmcwR0MwRUFJUXdnQ1NFT0lCQWdDV3RCQTNFaURRUkFBMEFnQ3lBT1FRTjBhaUFLSUE1QkFuUnFLQUlBTmdJQUlBNUJBV29oRGlBTVFRRnFJZ3dnRFVjTkFBc0xJQWtnRUd0QmZFc05CUU5BSUFzZ0RrRURkR29nQ2lBT1FRSjBhaWdDQURZQ0FDQUxJQTVCQVdvaUNVRURkR29nQ2lBSlFRSjBhaWdDQURZQ0FDQUxJQTVCQW1vaUNVRURkR29nQ2lBSlFRSjBhaWdDQURZQ0FDQUxJQTVCQTJvaUNVRURkR29nQ2lBSlFRSjBhaWdDQURZQ0FDQU9RUVJxSWc0Z0VFY05BQXNNQlFzZ0UwVU5CRUVBSVFrZ0drRURUd1JBQTBBZ0N5QUtLQUlBTmdJQUlBc2dEMm9pRENBS0lCRnFJZzBvQWdBMkFnQWdEQ0FQYWlJTUlBMGdFV29pRFNnQ0FEWUNBQ0FNSUE5cUlnd2dEU0FSYWlJTktBSUFOZ0lBSUEwZ0VXb2hDaUFNSUE5cUlRc2dDVUVFYWlJSklCdEhEUUFMQzBFQUlRa2dGa1VOQkFOQUlBc2dDaWdDQURZQ0FDQUtJQkZxSVFvZ0N5QVBhaUVMSUFsQkFXb2lDU0FXUncwQUN3d0VDeUFjSUExQkFuUnFJUXNnRUVFRVJ3UkFJQk5GRFFRZ0VFRUNkQ0VKUVFBaERpQWFRUU5QQkVBRFFDQUxJQW9nQ1JBTElTOGdDaUFSYWlJTklCRnFJZ3NnRVdvaUVpQVJhaUVLSUM4Z0Qyb2dEU0FKRUFzZ0Qyb2dDeUFKRUFzZ0Qyb2dFaUFKRUFzZ0Qyb2hDeUFPUVFScUlnNGdHMGNOQUFzTFFRQWhEaUFXUlEwRUEwQWdDeUFLSUFrUUN5RXdJQW9nRVdvaENpQXdJQTlxSVFzZ0RrRUJhaUlPSUJaSERRQUxEQVFMSUJORkRRTkJBQ0VKSUJwQkEwOEVRQU5BSUFzZ0N2MEFBZ0Q5Q3dJQUlBc2dEMm9pRENBS0lCRnFJZzM5QUFJQS9Rc0NBQ0FNSUE5cUlnd2dEU0FSYWlJTi9RQUNBUDBMQWdBZ0RDQVBhaUlNSUEwZ0VXb2lEZjBBQWdEOUN3SUFJQTBnRVdvaENpQU1JQTlxSVFzZ0NVRUVhaUlKSUJ0SERRQUxDMEVBSVFrZ0ZrVU5Bd05BSUFzZ0N2MEFBZ0Q5Q3dJQUlBb2dFV29oQ2lBTElBOXFJUXNnQ1VFQmFpSUpJQlpIRFFBTERBTUxBMEJCQUNFSklBMEVRQU5BSUFzZ0NVRUZkR29nQ2lBSlFRSjBhaWdDQURZQ0FDQUxJQWxCQVhJaURFRUZkR29nQ2lBTVFRSjBhaWdDQURZQ0FDQUxJQWxCQW5JaURFRUZkR29nQ2lBTVFRSjBhaWdDQURZQ0FDQUxJQWxCQTNJaURFRUZkR29nQ2lBTVFRSjBhaWdDQURZQ0FDQUpRUVJxSWdrZ0RVa05BQXNMQWtBZ0NTQVFUdzBBQWtBZ0VDQUpheUlVUVFoUEJFQUNRQ0FMSUFsQkJYUnFJQ0lnRVNBU2JHcFBEUUFnQ2lBSlFRSjBhaUFWSUE4Z0VteHFUdzBBSUFraERBd0NDeUFKL1JIOURBQUFBQUFCQUFBQUFnQUFBQU1BQUFEOXJnRWhNeUFKSUJSQmZIRWlGMm9oREVFQUlRNERRQ0FMSUROQkEvMnJBU0kwL1JzQVFRSjBhaUFLSUFrZ0RtcEJBblJxL1FBQ0FDSTEvVm9DQUFBZ0N5QTAvUnNCUVFKMGFpQTEvVm9DQUFFZ0N5QTAvUnNDUVFKMGFpQTEvVm9DQUFJZ0N5QTAvUnNEUVFKMGFpQTEvVm9DQUFNZ00vME1CQUFBQUFRQUFBQUVBQUFBQkFBQUFQMnVBU0V6SUE1QkJHb2lEaUFYUncwQUN5QVVJQmRHRFFJTUFRc2dDU0VNQzBFQUlRNGdFQ0FNSWdsclFRTnhJaFFFUUFOQUlBc2dDVUVGZEdvZ0NpQUpRUUowYWlnQ0FEWUNBQ0FKUVFGcUlRa2dEa0VCYWlJT0lCUkhEUUFMQ3lBTUlCQnJRWHhMRFFBRFFDQUxJQWxCQlhScUlBb2dDVUVDZEdvb0FnQTJBZ0FnQ3lBSlFRRnFJZ3hCQlhScUlBb2dERUVDZEdvb0FnQTJBZ0FnQ3lBSlFRSnFJZ3hCQlhScUlBb2dERUVDZEdvb0FnQTJBZ0FnQ3lBSlFRTnFJZ3hCQlhScUlBb2dERUVDZEdvb0FnQTJBZ0FnQ1VFRWFpSUpJQkJIRFFBTEN5QUtJQkZxSVFvZ0N5QVBhaUVMSUJNZ0VrRUJhaUlTUncwQUN3d0NDeUFTUlFSQVFRRWdBQ2dDQ0NBQUtBSU1iRUVDZEJBTUloSkZCRUJCQUE4TElBQW9BaGdnQUNnQ0VDQWViRUVDZEdvZ0RXb2dFallDQUFzZ0VpQW1RUUowYWlBSlFRSjBhaUVMSUJnZ0FXc2hDUUpBQWtBQ1FBSkFJQVpCQVVjRVFDQWNJQVlnQ1d4QkFuUnFJUW9nRUVFQlJnMEJJQ1FOQWlBUVFRZE5EUUlnRTBVTkJpQW5JQWtnSDJ4cUlCQkJCWFJxSVNJZ0lDQVFRUUowYWlBTVFRSjBheUV1SUJCQmZIRWhGRUVBSVF3RFFFRUFJUWtnRkFSQUEwQWdDeUFKUVFKMGFpQUtJQWxCQlhScUtBSUFOZ0lBSUFzZ0NVRUJjaUlOUVFKMGFpQUtJQTFCQlhScUtBSUFOZ0lBSUFzZ0NVRUNjaUlOUVFKMGFpQUtJQTFCQlhScUtBSUFOZ0lBSUFzZ0NVRURjaUlOUVFKMGFpQUtJQTFCQlhScUtBSUFOZ0lBSUFsQkJHb2lDU0FVU1EwQUN3c0NRQ0FKSUJCUERRQUNRQ0FRSUFsckloZEJDRThFUUFKQUlBc2dDVUVDZEdvZ0lpQU1JQTlzYWs4TkFDQUtJQWxCQlhScUlCSWdMaUFNSUJGc2FtcFBEUUFnQ1NFTkRBSUxJQW45RWYwTUFBQUFBQUVBQUFBQ0FBQUFBd0FBQVAydUFTRXpJQWtnRjBGOGNTSVZhaUVOUVFBaERnTkFJQXNnQ1NBT2FrRUNkR29nQ2lBelFRUDlxd0VpTlAwYkEwRUNkR29nQ2lBMC9Sc0NRUUowYWlBS0lEVDlHd0ZCQW5ScUlBb2dOUDBiQUVFQ2RHcjlDUUlBL1ZZQ0FBSDlWZ0lBQXYxV0FnQUQvUXNDQUNBei9Rd0VBQUFBQkFBQUFBUUFBQUFFQUFBQS9hNEJJVE1nRGtFRWFpSU9JQlZIRFFBTElCVWdGMFlOQWd3QkN5QUpJUTBMUVFBaERpQVFJQTBpQ1d0QkEzRWlGd1JBQTBBZ0N5QUpRUUowYWlBS0lBbEJCWFJxS0FJQU5nSUFJQWxCQVdvaENTQU9RUUZxSWc0Z0YwY05BQXNMSUEwZ0VHdEJmRXNOQUFOQUlBc2dDVUVDZEdvZ0NpQUpRUVYwYWlnQ0FEWUNBQ0FMSUFsQkFXb2lEVUVDZEdvZ0NpQU5RUVYwYWlnQ0FEWUNBQ0FMSUFsQkFtb2lEVUVDZEdvZ0NpQU5RUVYwYWlnQ0FEWUNBQ0FMSUFsQkEyb2lEVUVDZEdvZ0NpQU5RUVYwYWlnQ0FEWUNBQ0FKUVFScUlna2dFRWNOQUFzTElBc2dFV29oQ3lBS0lBOXFJUW9nRXlBTVFRRnFJZ3hIRFFBTERBWUxJQndnQ1VFQ2RHb2hDaUFRUVFSR0RRSWdFMFVOQlNBUVFRSjBJUWxCQUNFT0lCcEJBMDhFUUFOQUlBc2dDaUFKRUFzaE1TQUtJQTlxSWcwZ0Qyb2lDeUFQYWlJU0lBOXFJUW9nTVNBUmFpQU5JQWtRQ3lBUmFpQUxJQWtRQ3lBUmFpQVNJQWtRQ3lBUmFpRUxJQTVCQkdvaURpQWJSdzBBQ3d0QkFDRU9JQlpGRFFVRFFDQUxJQW9nQ1JBTElUSWdDaUFQYWlFS0lESWdFV29oQ3lBT1FRRnFJZzRnRmtjTkFBc01CUXNnRTBVTkJFRUFJUWtnR2tFRFR3UkFBMEFnQ3lBS0tBSUFOZ0lBSUFzZ0VXb2lEQ0FLSUE5cUlnMG9BZ0EyQWdBZ0RDQVJhaUlNSUEwZ0Qyb2lEU2dDQURZQ0FDQU1JQkZxSWd3Z0RTQVBhaUlOS0FJQU5nSUFJQXdnRVdvaEN5QU5JQTlxSVFvZ0NVRUVhaUlKSUJ0SERRQUxDMEVBSVFrZ0ZrVU5CQU5BSUFzZ0NpZ0NBRFlDQUNBTElCRnFJUXNnQ2lBUGFpRUtJQWxCQVdvaUNTQVdSdzBBQ3d3RUN5QVRSUTBESUJCQmZIRWhGQ0FRUVFOeElSSkJBQ0VOSUJCQkFXdEJBMGtoRnd3QkN5QVRSUTBDUVFBaENTQWFRUU5QQkVBRFFDQUxJQXI5QUFJQS9Rc0NBQ0FMSUJGcUlnd2dDaUFQYWlJTi9RQUNBUDBMQWdBZ0RDQVJhaUlNSUEwZ0Qyb2lEZjBBQWdEOUN3SUFJQXdnRVdvaURDQU5JQTlxSWczOUFBSUEvUXNDQUNBTklBOXFJUW9nRENBUmFpRUxJQWxCQkdvaUNTQWJSdzBBQ3d0QkFDRUpJQlpGRFFJRFFDQUxJQXI5QUFJQS9Rc0NBQ0FLSUE5cUlRb2dDeUFSYWlFTElBbEJBV29pQ1NBV1J3MEFDd3dDQ3dOQUFrQWdFRVVOQUVFQUlRNUJBQ0VKUVFBaERDQVhSUVJBQTBBZ0N5QUpRUUowYWlBS0lBWWdDV3hCQW5ScUtBSUFOZ0lBSUFzZ0NVRUJjaUlWUVFKMGFpQUtJQVlnRld4QkFuUnFLQUlBTmdJQUlBc2dDVUVDY2lJVlFRSjBhaUFLSUFZZ0ZXeEJBblJxS0FJQU5nSUFJQXNnQ1VFRGNpSVZRUUowYWlBS0lBWWdGV3hCQW5ScUtBSUFOZ0lBSUFsQkJHb2hDU0FNUVFScUlnd2dGRWNOQUFzTElCSkZEUUFEUUNBTElBbEJBblJxSUFvZ0JpQUpiRUVDZEdvb0FnQTJBZ0FnQ1VFQmFpRUpJQTVCQVdvaURpQVNSdzBBQ3dzZ0N5QVJhaUVMSUFvZ0Qyb2hDaUFUSUExQkFXb2lEVWNOQUFzTUFRc0RRQUpBSUJCRkRRQkJBQ0VPUVFBaENVRUFJUXdnRjBVRVFBTkFJQXNnQmlBSmJFRUNkR29nQ2lBSlFRSjBhaWdDQURZQ0FDQUxJQWxCQVhJaUZTQUdiRUVDZEdvZ0NpQVZRUUowYWlnQ0FEWUNBQ0FMSUFsQkFuSWlGU0FHYkVFQ2RHb2dDaUFWUVFKMGFpZ0NBRFlDQUNBTElBbEJBM0lpRlNBR2JFRUNkR29nQ2lBVlFRSjBhaWdDQURZQ0FDQUpRUVJxSVFrZ0RFRUVhaUlNSUJSSERRQUxDeUFTUlEwQUEwQWdDeUFHSUFsc1FRSjBhaUFLSUFsQkFuUnFLQUlBTmdJQUlBbEJBV29oQ1NBT1FRRnFJZzRnRWtjTkFBc0xJQW9nRVdvaENpQUxJQTlxSVFzZ0RVRUJhaUlOSUJOSERRQUxDeUFoUVFGcUlTRWdFQ0FZYWlJWUlBTkpEUUFMSUI1QkFXb2hIaUFUSUIxcUloMGdCRWtOQUFzTFFRRUx5RE1GSm44UGZnRjdBWDBCZkNNQVFkQUFheUlQSkFBZ0QwR1Evd00yQWlnZ0FDZ0NiQ0FBS0FKb2JDRVhBbjhDUUFKQUFrQWdBQ2dDQ0NJTFFRaEhCRUJCQUNBTFFZQUNSdzBFR2lBUFFkbi9BellDS0F3QkN5QUFMUUJFUVFGeERRQWdGMEVCY1NFaUlCZEJmSEVoRFNBWFFRRnJyVUtNTEg0aU1VSWdpS2RCQUVjaEl5QXhweUVrSUE5QnpRQnFJU1VnRDBITUFHb2hLQ0FQUWNnQWFpRXBJQmRCSkVraEtrR1Evd01oQ3dKQUFrQUNRQU5BQWtBZ0MwR1Qvd05HRFFBQ1FBTkFJQWtwQXdnaU1WQUVma0lBQlNBeElBa3BBemg5QzFBRVFDQUFRY0FBTmdJSURBTUxJQWtnQUNnQ0VFRUNJQW9RRWtFQ1J3UkFJQXBCQVVHV0VrRUFFQWhCQUF3TEN5QUFLQUlRSUE5QkpHcEJBaEFLSUE4b0FpUWlDMEVCVFFSQUlBcEJBVUdITGtFQUVBaEJBQXdMQ3dKQUlBOG9BaWhCZ0lFQ1JnUkFJQWtwQXdnaU1WQUVma0lBQlNBeElBa3BBemg5QzFBTkFTQVBLQUlrSVFzTElBQW9BZ2dpRkVFUWNRUkFJQUFnQUNnQ0dDQUxhMEVDYXpZQ0dBc2dEeUFMUVFKckloSTJBaVJCOEwwQklRd2dEeWdDS0NFT0EwQWdEQ0lMS0FJQUloZ0VRQ0FMUVF4cUlRd2dEaUFZUncwQkN3c2dDeWdDQkNBVWNVVUVRQ0FLUVFGQi9DaEJBQkFJUVFBTURBc0NRQ0FBS0FJVUlCSlBCRUFnQUNnQ0VDRU1EQUVMSUFrcEF3Z2lNVkFFZmtJQUJTQXhJQWtwQXpoOUN5QVNyVk1FUUNBS1FRRkJqQ3hCQUJBSVFRQU1EUXNnQUNnQ0VDQVBLQUlrRUJBaURFVUVRQ0FBS0FJUUVBa2dBRUlBTndNUUlBcEJBVUhVSlVFQUVBaEJBQXdOQ3lBQUlBdzJBaEFnQUNBUEtBSWtJaEkyQWhRTElBa2dEQ0FTSUFvUUVpSU1JQThvQWlSSEJFQWdDa0VCUVpZU1FRQVFDRUVBREF3TElBc29BZ2dpQzBVRVFDQUtRUUZCNnRZQVFRQVFDRUVBREF3TElBQWdBQ2dDRUNBTUlBb2dDeEVCQUVVRVFDQVBJQThvQWlnMkFpQWdDa0VCUWFUb0FDQVBRU0JxRUFoQkFBd01DeUFKS1FNNElURWdEeWdDSkNFUklBQW9Bc2dCSWhRb0FpZ2lFaUFBS0FMTUFTSU1RU2hzSWc1cUloWW9BaFFpSEVFQmFpSWRJQllvQWh3aUMwc0VRQ0FXQW44Z0M3TkRBQURJUXBJaVFVTUFBSUJQWFNCQlF3QUFBQUJnY1FSQUlFR3BEQUVMUVFBTElnczJBaHdnRmlnQ0dDQUxRUmhzRUJBaEN5QVVLQUlvSWhJZ0Rtb2hGaUFMUlEwRElCWWdDellDR0NBV0tBSVVJaHhCQVdvaEhRc2dEaUFTYWlJT0tBSVlJQnhCR0d4cUlnc2dFVUVFYWpZQ0VDQUxJREduSUJGclFRUnJJZ3lzTndNSUlBc2dHRHNCQUNBT0lCMDJBaFFDUUNBWVFaRC9BMGNOQUNBT0tBSVFJZ3NFUUNBTElBNG9BZ3hCR0d4cUlBeXROd01BQ3lBSktRTTRweUFQS0FJa2EwRUVhNjBpTVNBQUtRTXdWdzBBSUFBZ01UY0RNQXNnQUMwQVJFRUVjUVJBSUFrZ0FEVUNHQ0FLSUFrb0FpZ1JDQUFnQURVQ0dGSUVRQ0FLUVFGQmxoSkJBQkFJUVFBTURRc2dEMEdUL3dNMkFpZ01CQXNnQ1NBQUtBSVFRUUlnQ2hBU1FRSkhCRUFnQ2tFQlFaWVNRUUFRQ0VFQURBd0xJQUFvQWhBZ0QwRW9ha0VDRUFvZ0R5Z0NLRUdUL3dOSERRRU1Bd3NMSUFCQndBQTJBZ2dNQVFzZ0ZpZ0NHQkFKSUJRb0FpZ2dERUVvYkdvaUFFRUFOZ0ljSUFCQ0FEY0NGQ0FLUVFGQmhSMUJBQkFJUVFBTUNBc0NRQ0FKS1FNSUlqRlFCSDVDQUFVZ01TQUpLUU00ZlF0UUJFQWdBQ2dDQ0VIQUFFWU5BUXNDUUFKQUlBQXRBRVFpQzBFRWNVVUVRQ0FBS0FMTUFVR01MR3doRENBQUtBS2NBU0V1QWtBQ1FDQUFLQUk0QkVBZ0NTa0RDQ0l4VUFSK1FnQUZJREVnQ1NrRE9IMExweUVUREFFTElBQW9BaGdpRTBFQ1NRMEJDeUFBSUJOQkFtc2lFellDR0FzZ0xpQU1haUVZSUJORkRRRWdDU2tEQ0NJeFVBUitRZ0FGSURFZ0NTa0RPSDBMSUJPdFV3UkFJQUFvQXJnQkJFQWdDa0VCUWJrc1FRQVFDRUVBREEwTElBcEJBa0c1TEVFQUVBZ0xJQUFvQWhnaURrRitUd1JBSUFwQkFVSCtDa0VBRUFoQkFBd01Dd0pBSUJnb0F0d3JJZ3dFUUNBWUtBTGdLeUlMUVgwZ0RtdExCRUFnQ2tFQlFic0pRUUFRQ0VFQURBNExJQXdnQ3lBT2FrRUNhaEFRSWdzRVFDQVlJQXMyQXR3ckRBUUxJQmdvQXR3ckVBa2dHRUVBTmdMY0t3d0JDeUFZSUE1QkFtb1FEU0lMTmdMY0t5QUxEUUlMSUFwQkFVR0hMMEVBRUFoQkFBd0xDeUFBUVFnMkFnZ2dBQ0FMUWZvQmNUb0FSQXdCQ3lBQUtBTElBU0lXQkVBZ0ZpZ0NLQ0lTSUFBb0Fzd0JJaFJCS0d3aUVXb2lEQ2dDRUNBTUtBSU1RUmhzYWlJTElBa3BBemdpTWtJQ2ZTSXhOd01JSUFzZ01pQUFOUUlZZkRjREVDQUFLQUlZSVE0Q1FDQU1LQUlVSWh4QkFXb2lIU0FNS0FJY0lndE5CRUFnRENnQ0dDRU1EQUVMSUF3Q2Z5QUxzME1BQU1oQ2tpSkJRd0FBZ0U5ZElFRkRBQUFBQUdCeEJFQWdRYWtNQVF0QkFBc2lDellDSENBTUtBSVlJQXRCR0d3UUVDRU1JQllvQWlnaUVpQVJhaUVMSUF4RkRRWWdDeUFNTmdJWUlBc29BaFFpSEVFQmFpRWRDeUFNSUJ4QkdHeHFJZ3NnRGtFQ2FqWUNFQ0FMSURIRU53TUlJQXRCay84RE93RUFJQkVnRW1vZ0hUWUNGQXNnQUNnQ0dDRU1Ba0FnRTBVRVFFRUFJUk1NQVFzZ0NTQVlLQUxjS3lBWUtBTGdLMm9nRENBS0VCSWhFeUFBS0FJWUlRd0xJQUJCQ0VIQUFDQU1JQk5HR3pZQ0NDQVlJQmdvQXVBcklCTnFOZ0xnS3lBQUxRQkVJZ3RCQ1hGQkFVY05BQ0FBSUF0QkNISTZBRVFnQUNnQ3pBRWhEaUFKS0FJY1FRSkdEUUFnQ1NrRE9DSXhRbjlSRFFBQ1FBTkFRUUFoRENBSklBOUJ4Z0JxSWd0QkFpQUtFQkpCQWtjTkFTQUxJQTlCUUd0QkFoQUtJQThvQWtCQmtQOERSdzBCUVpZU0lSSWdDU0FMUVFJZ0NoQVNRUUpIRFFrZ0N5QVBRVHhxUVFJUUNpQVBLQUk4UVFwSEJFQkJoeTRoRWd3S0N5QVBRUWcyQWp3Z0NTQVBRY1lBYWtFSUlBb1FFaUlMSUE4b0FqeEhEUWtnQzBFSVJ3UkFRYjBlSVJJTUNnc2dEMEhHQUdvZ0QwRTRha0VDRUFvZ0tTQVBRVFJxUVFRUUNpQW9JQTlCTUdwQkFSQUtJQ1VnRDBFc2FrRUJFQW9nRGlBUEtBSTRSd1JBSUE4b0FqUWlDMEVPU1EwQ0lBOGdDMEVNYXlJTE5nSTBJQWtnQzYwZ0NpQUpLQUlvRVFnQUlBODFBalJSRFFFTUFnc0xJQThvQWpBZ0R5Z0NMRVloREFzZ0NTQXhJQW9nQ1NnQ0xCRU1BRVVOQ0NBTVJRMEFJQUFnQUMwQVJFSHVBWEZCRUhJNkFFUUNRQ0FYUlEwQUlBQW9BcHdCSVJOQkFDRUxBa0FnS2cwQUlCTkIyQ3RxSWd3Z0pHb2dERWtnSTNJTkFBTkFJQk1nQzBHTUxHeHFJaHdvQXRnckloMzlFU0FUSUF0QkFYSkJqQ3hzYWlJWUtBTFlLeUlXL1J3QklCTWdDMEVDY2tHTUxHeHFJaEVvQXRnckloVDlIQUlnRXlBTFFRTnlRWXdzYkdvaURpZ0MyQ3NpRFAwY0EvME1BQUFBQUFBQUFBQUFBQUFBQUFBQUFQMDRJa0Q5R3dCQkFYRUVRQ0FjUWRncmFpQWRRUUZxTmdJQUN5QkEvUnNCUVFGeEJFQWdHRUhZSzJvZ0ZrRUJhallDQUFzZ1FQMGJBa0VCY1FSQUlCRkIyQ3RxSUJSQkFXbzJBZ0FMSUVEOUd3TkJBWEVFUUNBT1FkZ3JhaUFNUVFGcU5nSUFDeUFMUVFScUlnc2dEVWNOQUFzZ0Z5QU5JZ3RHRFFFTElBdEJBWEloRENBaUJFQWdFeUFMUVl3c2JHb2lEaWdDMkNzaUN3UkFJQTVCMkN0cUlBdEJBV28yQWdBTElBd2hDd3NnRENBWFJnMEFBMEFnRXlBTFFZd3NiR29pRGlnQzJDc2lEQVJBSUE1QjJDdHFJQXhCQVdvMkFnQUxJQTVCNU5jQWFpSU9LQUlBSWd3RVFDQU9JQXhCQVdvMkFnQUxJQXRCQW1vaUN5QVhSdzBBQ3dzZ0NrRUNRWlhEQUVFQUVBZ0xJQUF0QUVSQkFYRU5BQ0FKSUFBb0FoQkJBaUFLRUJKQkFrY0VRQUpBSUFBb0Fzd0JRUUZxSUJkSERRQWdGMFVOQUNBQUtBS2NBU0VNUVFBaEN3TkFJQXdnQzBHTUxHeHFJZ2tvQXRRclJRUkFJQWtvQXRnclJRMElDeUFMUVFGcUlnc2dGMGNOQUFzTElBcEJBVUdXRWtFQUVBaEJBQXdKQ3lBQUtBSVFJQTlCS0dwQkFoQUtJQThvQWlnaEN5QUFMUUJFUVFGeERRSWdDMEhaL3dOSERRRU1BZ3NMSUE4b0FpZ2hDd3NnQzBIWi93TkhEUUlnQUNnQ0NFR0FBa1lOQWlBQVFZQUNOZ0lJSUFCQkFEWUN6QUVNQWdzZ0N5Z0NHQkFKSUJZb0FpZ2dGRUVvYkdvaUFFRUFOZ0ljSUFCQ0FEY0NGQ0FLUVFGQmhSMUJBQkFJUVFBTUJBc2dEeUFMTmdJUUlBcEJCRUhDMFFBZ0QwRVFhaEFJSUFBZ0N6WUN6QUVnRDBIWi93TTJBaWdnQUVHQUFqWUNDQXNnQUNnQ3pBRWhDeUFBS0FLY0FTRUpBa0FDUUNBQUxRQkVRUUZ4RFFBQ1FBSkFJQXNnRjA4TkFDQUpJQXRCakN4c2FpRVRBMEFnRXlnQzNDc05BU0FBSUF0QkFXb2lDellDekFFZ0UwR01MR29oRXlBTElCZEhEUUFMREFFTElBc2dGMGNOQVFzZ0NFRUFOZ0lBREFFTEFrQUNRQ0FLUVFFZ0NTQUxRWXdzYkdvaUVTZ0N0Q2dFZjBHY05BVWdFUzBBaUN4QkFuRkZEUUlDUUNBUktBS29LQ0lOUlFSQVFRQWhEQXdCQ3lBUktBS3NLQ0VKUVFBaERFRUFJUXNnRFVFRVR3UkFJQTFCZkhFaEMvME1BQUFBQUFBQUFBQUFBQUFBQUFBQUFDRkFRUUFoRWdOQUlBa2dFa0VEZEdvaURFRWNhaUFNUVJScUlBeEJER29nRFAwSkFnVDlWZ0lBQWYxV0FnQUMvVllDQUFNZ1FQMnVBU0ZBSUJKQkJHb2lFaUFMUncwQUN5QkFJRUFnUVAwTkNBa0tDd3dORGc4QUFRSURBQUVDQS8ydUFTSkFJRUFnUVAwTkJBVUdCd0FCQWdNQUFRSURBQUVDQS8ydUFmMGJBQ0VNSUFzZ0RVWU5BUXNEUUNBSklBdEJBM1JxS0FJRUlBeHFJUXdnQzBFQmFpSUxJQTFIRFFBTEN5QVJJQXdRRFNJSk5nSzBLQ0FKRFFGQmx4NExRUUFRQ0NBS1FRRkI5VHhCQUJBSVFRQU1CUXNnRVNBTU5nSzhLQ0FSS0FLc0tDRUpJQkVvQXFnb0lnd0VRRUVBSVJKQkFDRUxBMEFnQ1NBTFFRTjBJaFJxSWc0b0FnQWlEUVJBSUJFb0FyUW9JQkpxSUEwZ0RpZ0NCQkFMR2lBUktBS3NLQ0FVYWlJSktBSUVJUzhnQ1NnQ0FCQUpJQkVvQXF3b0lna2dGR3BDQURjQ0FDQXZJQkpxSVJJZ0VTZ0NxQ2doREFzZ0MwRUJhaUlMSUF4SkRRQUxDeUFSUVFBMkFxZ29JQWtRQ1NBUlFRQTJBcXdvSUJFZ0VTZ0N0Q2cyQXJBb0lCRWdFU2dDdkNnMkFyZ29Dd0ovUVFBaEtDQUFLQUxRQVNJTEtBSWNJaVlvQWt3Z0FDZ0N6QUVpQ1VHTUxHeHFLQUxRS3lFYklBc29BaGdpRkNnQ0dDRW5JQXNvQWhRb0FnQWlIaUFtS0FJRUlDWW9BZ3dpQ3lBSklBa2dKaWdDR0NJSmJpSU1JQWxzYTJ4cUlnNGdGQ2dDQUNJSklBa2dEa2tiSWcwMkFnQWdIa0YvSUFzZ0Rtb2lDU0FKSUE1Skd5SUxJQlFvQWdnaUNTQUpJQXRMR3lJSk5nSUlBa0FnQ1NBTlNpQU5RUUJPY1VVRVFDQUtRUUZCZ1ROQkFCQUlEQUVMSUI0b0FoUWhFQ0FlSUNZb0FnZ2dEQ0FtS0FJUUlndHNhaUlOSUJRb0FnUWlDU0FKSUExSkd5SU1OZ0lFSUI1QmZ5QUxJQTFxSWdrZ0NTQU5TUnNpQ3lBVUtBSU1JZ2tnQ1NBTFN4c2lDVFlDRENBSklBeEtJQXhCQUU1eFJRUkFJQXBCQVVIYk1rRUFFQWdNQVFzQ1FDQWJLQUlFQkVBZ0hpZ0NFQTBCUVFFTUF3c2dDa0VCUWRVb1FRQVFDQXdCQ3dKQUFrQURRQ0FuUVFBMkFpUWdFQ0FuTkFJQUlqVkNBWDBpTVNBZU5BSUFmQ0ExZno0Q0FDQVFJQ2MwQWdRaU5FSUJmU0l5SUI0MEFnUjhJRFIvUGdJRUlCQWdNU0FlTkFJSWZDQTFmejRDQ0NBZU5BSU1JVEVnRUNBb05nSVFJQkFnTVNBeWZDQTBmejRDRENBUUlCc29BZ1FpQ3pZQ0ZDQVFRUUVnQ3lBbUtBSlFJZ2xySUFrZ0Mwc2JOZ0lZSUJBb0FqUVFDU0FRUVFBMkFrUWdFUDBNQUFBQUFBQUFBQUFBQUFBQUFBQUFBUDBMQWpRZ0MwR1lBV3doREFKQUlCQW9BaHdpQ1VVRVFDQVFJQXdRRFNJSk5nSWNJQWxGRFFVZ0VDQU1OZ0lnSUFsQkFDQU1FQTRhREFFTElBd2dFQ2dDSUUwTkFDQUpJQXdRRUNJTFJRUkFJQXBCQVVHQUYwRUFFQWdnRUNnQ0hCQUpJQkJDQURjQ0hBd0ZDeUFRSUFzMkFod2dDeUFRS0FJZ0lnbHFRUUFnRENBSmF4QU9HaUFRSUF3MkFpQUxJQkFvQWhRaUN3UkFJQnRCc0FkcUlSMGdHMEdzQm1vaEdDQWJRUnhxSVNzZ0VDZ0NIQ0VhUVFBaExBTkFJQnBDZnlBTFFRRnJJZ210SWpPR1FuK0ZJaklnRURRQ0FId2dNNGVuSWhZMkFnQWdHaUF5SUJBMEFnUjhJRE9IcHlJUk5nSUVJQm9nTWlBUU5BSUlmQ0F6aHlJeHB5SVVOZ0lJSUJvZ01pQVFOQUlNZkNBemh5STBweUlPTmdJTUlESEVRZ0VnR0NBc1FRSjBJZ3hxS0FJQUloK3RJakdHZkVJQmZTQXhoNmNnSDNRaURVRUFTQTBFSURURVFuOGdEQ0FkYWlnQ0FDSWdyU0l4aGtKL2hYd2dNWWVuSUNCMElneEJBRWdOQkNBYUlBeEJmeUFnZENBUmNTSVRheUFnZFVFQUlBNGdFVWNiSWd3MkFoUWdHaUFOUVg4Z0gzUWdGbkVpSW1zZ0gzVkJBQ0FVSUJaSEd5SU5OZ0lRQWtBZ0RVVU5BQ0FOclNBTXJYNUNJSWhRRFFBTUJBc2dEQ0FOYkNJalFlZk1tVE5QRFFNZ0kwRW9iQ0VoSUJvZ0xBUi9JQ0JCQVdzaElDQWZRUUZySVI4Z0U2eENBWHhDQVlpbklSTWdJcXhDQVh4Q0FZaW5JU0pCQXdWQkFRczJBaGdnR2tFY2FpRVZRZ0VnQzYwaU5vWWhOMEovSUJzb0Fnd2lDeUFnSUFzZ0lFa2JJaTJ0SWp5R1FuK0ZJVDFDZnlBYktBSUlJZ3NnSHlBTElCOUpHeUlTclNJK2hrSi9oU0UvUVFBaEtRTkFBbjRnTEVVRVFDQXlJQkEwQWdSOElET0hJVGdnTWlBUU5BSUFmQ0F6aHlFNVFRQWhDeUF5SWpFaE9pQXpEQUVMSURjZ0tVRUJhaUlMUVFGMnJTQXpoa0ovaFh3aU9pQVFOQUlFZkNBMmh5RTRJRGNnQzBFQmNhMGdNNFpDZjRWOElqRWdFRFFDQUh3Z05vY2hPU0EyQ3lFN0lCQTBBZ2doTlNBUU5BSU1JVFFnRlNBNFBnSUVJQlVnT1Q0Q0FDQVZJQXMyQWhBZ0ZTQTBJRHA4SUR1SFBnSU1JQlVnTVNBMWZDQTdoejRDQ0VFQUlRMENRQ0FiS0FJVVJRMEFJQXRGRFFCQkFrRUJJQXRCQTBZYklRMExJQ3NvQWdRaERFUUFBQUFBQUFEd1B5RkNBa0FnSnlnQ0dDQU5haUFyS0FJQWF5SUxRWUFJVGdSQVJBQUFBQUFBQU9CL0lVSWdDMEgvRDBrRVFDQUxRZjhIYXlFTERBSUxSQUFBQUFBQUFQQi9JVUpCL1JjZ0N5QUxRZjBYVHh0Qi9nOXJJUXNNQVFzZ0MwR0JlRW9OQUVRQUFBQUFBQUJnQXlGQ0lBdEJ1SEJMQkVBZ0MwSEpCMm9oQ3d3QkMwUUFBQUFBQUFBQUFDRkNRZkJvSUFzZ0MwSHdhRTBiUVpJUGFpRUxDeUFWSUVJZ0MwSC9CMnF0UWpTR3Y2SWdETGRFQUFBQUFBQUFRRCtpUkFBQUFBQUFBUEEvb0tLMk9BSWdJQlVnS3lnQ0FDQWJLQUtrQm1wQkFXczJBaHdnRlNnQ0ZDRUxBa0FDUUFKQUlDTkZEUUFnQ3cwQUlCVWdJUkFOSWdzMkFoUWdDMFVFUUNBS1FRRkJsQlZCQUJBSURBb0xJQXRCQUNBaEVBNGFJQlVnSVRZQ0dBd0JDeUFoSUJVb0FoaExCRUFnQ3lBaEVCQWlERVVFUUNBS1FRRkJsQlZCQUJBSUlCVW9BaFFRQ1NBVlFnQTNBaFFNQ2dzZ0ZTQU1OZ0lVSUF3Z0ZTZ0NHQ0lMYWtFQUlDRWdDMnNRRGhvZ0ZTQWhOZ0lZQ3lBalJRMEJDeUFWS0FJVUlRdEJBQ0VrQTBBZ0N5QWtJQ1FnR2lnQ0VDSU1iaUlXSUF4c2F5SU9JQjkwSUNKcUlnMGdGU2dDQUNJTUlBd2dEVWdiSWhFMkFnQWdDeUFXSUNCMElCTnFJZzBnRlNnQ0JDSU1JQXdnRFVnYkloUTJBZ1FnQ3lBT1FRRnFJQjkwSUNKcUlnMGdGU2dDQ0NJTUlBd2dEVW9iSWc0MkFnZ2dDeUFXUVFGcUlDQjBJQk5xSWcwZ0ZTZ0NEQ0lNSUF3Z0RVb2JJZ3cyQWd3Z0N5QS9JQTZzZkNBK2g2Y2dFU0FTZFNJV2F5QVNkQ0FTZFNJTk5nSVFJQXNnUFNBTXJId2dQSWVuSUJRZ0xYVWlFV3NnTFhRZ0xYVWlERFlDRkNBTUlBMXNJaVd0UWdhR1FpQ0lRZ0JTQkVBZ0NrRUJRZVVWUVFBUUNBd0pDeUFsUVFaMElRNENRQUovQWtBZ0N5Z0NHQ0lNRFFBZ0pVVU5BQ0FMSUE0UURTSU1OZ0lZSUF4RkRRc2dERUVBSUE0UURob2dDMEVjYWd3QkN5QU9JQXNvQWh4TkRRRWdEQ0FPRUJBaURVVUVRQ0FMS0FJWUVBa2dDMElBTndJWUlBcEJBVUhqRWtFQUVBZ01Dd3NnQ3lBTk5nSVlJQTBnQ3lnQ0hDSU1ha0VBSUE0Z0RHc1FEaG9nQzBFY2Fnc2dEallDQUFzZ0N5Z0NGQ0VPSUFzb0FoQWhEU0FMQW44Z0N5Z0NJQ0lNUlFSQUlBMGdEaUFLRUZ3TUFRc2dEQ0FOSUE0Z0NoQmFDellDSUNBTEtBSVVJUTRnQ3lnQ0VDRU5JQXNDZnlBTEtBSWtJZ3hGQkVBZ0RTQU9JQW9RWEF3QkN5QU1JQTBnRGlBS0VGb0xOZ0lrSUNVRVFFRUFJUmNEUUNBWElBc29BaEFpRG00aEhBSkFJQXNvQWhnZ0YwRUdkR29pR1NnQ0FDSVVCRUFnR1NnQ09DRU5JQmtvQWdRaERDQVpLQUl3SVNvZ0dTZ0NQQkFKSUJuOURBQUFBQUFBQUFBQUFBQUFBQUFBQUFEOUN3SW9JQmxDQURjQ09DQVovUXdBQUFBQUFBQUFBQUFBQUFBQUFBQUEvUXNDR0NBWi9Rd0FBQUFBQUFBQUFBQUFBQUFBQUFBQS9Rc0NDQ0FaSUJRMkFnQWdHU0FxTmdJd0lDb0VRQ0FVUVFBZ0trRVliQkFPR2dzZ0dTQU5OZ0k0SUJrZ0REWUNCQXdCQ3lBWlFRcEJHQkFNSWd3MkFnQWdERVVOQ3lBWlFRbzJBakFMSUJrZ0Z5QU9JQnhzYXlBV2FpSVVJQkowSWcwZ0N5Z0NBQ0lNSUF3Z0RVZ2JOZ0lJSUJrZ0VTQWNhaUlPSUMxMElnMGdDeWdDQkNJTUlBd2dEVWdiTmdJTUlCa2dGRUVCYWlBU2RDSU5JQXNvQWdnaURDQU1JQTFLR3pZQ0VDQVpJQTVCQVdvZ0xYUWlEU0FMS0FJTUlnd2dEQ0FOU2hzMkFoUWdGMEVCYWlJWElDVkhEUUFMQ3lBTFFTaHFJUXNnSkVFQmFpSWtJQ05IRFFBTEN5QXJRUWhxSVNzZ0ZVRWthaUVWSUNsQkFXb2lLU0FhS0FJWVNRMEFDeUFhUVpnQmFpRWFJQWtoQ3lBc1FRRnFJaXdnRUNnQ0ZFa05BQXNMSUNkQk5Hb2hKeUFRUWN3QWFpRVFJQnRCdUFocUlSc2dLRUVCYWlJb0lCNG9BaEJKRFFBTFFRRU1Bd3NnQ2tFQlFaUVdRUUFRQ0F3QkN5QUtRUUZCc3hGQkFCQUlDMEVBQzBVRVFDQUtRUUZCd2h0QkFCQUlRUUFNQkFzZ0FDZ0N6QUVoQ1NBUElBQW9BbWdnQUNnQ2JHdzJBZ1FnRHlBSlFRRnFOZ0lBSUFwQkJFSE8xd0FnRHhBSUlBRWdBQ2dDekFFMkFnQWdDRUVCTmdJQUlBSUVRQ0FDSUFBb0F0QUJRUUFRVFNJQk5nSUFRUUFnQVVGL1JnMEVHZ3NnQXlBQUtBTFFBU2dDRkNnQ0FDSUJLQUlBTmdJQUlBUWdBU2dDQkRZQ0FDQUZJQUVvQWdnMkFnQWdCaUFCS0FJTU5nSUFJQWNnQVNnQ0VEWUNBQ0FBSUFBb0FnaEJnQUZ5TmdJSUMwRUJEQUlMSUFwQkFTQVNRUUFRQ0FzZ0NrRUJRZVFiUVFBUUNFRUFDeUV3SUE5QjBBQnFKQUFnTUF2ZUVBSU5md0orQWtBZ0FDZ0NJQ0lGRFFBQ1FDQUFLQUlRSWdsQkJVb0VRQ0FKSVFNTUFRc0NRQUpBSUFBb0FoUWlBa0VGVGdSQUlBQW9BZ0FpQVNnQ0FDRUZJQUFnQVVFRWFqWUNBQ0FDUVFScklRY01BUXNnQWtFQVRBUkFRWDhoQlF3Q0N5QUFLQUlBSVFFQ2Z5QUNRUUZHQkVCQmZ5RUdRUUFNQVF0QmZ5RUdJQUpCQVdzaUEwRUJjU0VOQWtBZ0FrRUNSZ1JBUVFBaEJTQUNJUVFNQVFzZ0EwRitjU0VMUVFBaEJTQUJJUU1nQWlFRUEwQWdBQ0FEUVFGcU5nSUFJQU10QUFBaERDQUFJQU5CQW1vaUFUWUNBQ0FBSUFSQkFXczJBaFFnQXkwQUFTRURJQUFnQkVFQ2F5SUVOZ0lVSUFaQi93RWdCWFJCZjNOeElBd2dCWFJ5UVlEK0F5QUZkRUYvYzNFZ0F5QUZRUWh5ZEhJaEJpQUZRUkJxSVFVZ0FTRURJQWhCQW1vaUNDQUxSdzBBQ3dzZ0RRUkFJQUFnQVVFQmFpSUROZ0lBSUFFdEFBQWhBU0FBSUFSQkFXczJBaFFnQmtIL0FTQUZkRUYvYzNFZ0FTQUZkSEloQmlBRElRRUxJQUpCQTNSQkNHc0xJUVVnQUNBQlFRRnFOZ0lBSUFaQi93RWdCWFJCZjNOeElBRXRBQUJCRDNJZ0JYUnlJUVVMSUFBZ0J6WUNGQXNnQUNnQ0dDRUJJQUFnQlVFWWRpSUhRZjhCUmpZQ0dDQUFJQWtnQlVFUWRrSC9BWEVpQ0VIL0FVWWlDaUFGUVFoMlFmOEJjU0lMUWY4QlJpSU1JQUVnQlVIL0FYRWlCRUgvQVVZaUFtcHFhaUlCYTBFZ2FpSUROZ0lRSUFBZ0FDa0RDQ0FFUVFkQkNDQUNHM1FnQzNKQkIwRUlJQXdiZENBSWNrRUhRUWdnQ2h0MElBZHlyU0FCSUFsclFTQnFyWWFFTndNSVFRQWhCU0FEUVFaSURRRUxJQUFvQWh3aUFVRUNkRUd3blFGcUtBSUFJUUlDZmlBQUtRTUlJZzVDQUZNRVFFRU1JQUZCQVdvZ0FVRUxUaHNoQkNBRFFRRnJJUU5CZnlBQ2RFRi9jMEVCZENFQlFnRU1BUXNnQVVFQmEwRUFJQUZCQVVvYklRUWdEa0UvSUFKcnJZaW5RWDhnQW5SQmYzTnhRUUYwUVFGeUlRRWdBeUFDUVFGcUlnSnJJUU1nQXEwTElROGdBQ0FETmdJUUlBQWdCRFlDSENBQUlBNGdENFkzQXdnZ0FDQUJyQ0FBS1FNb1FrQ0RoRGNES0VFQklRVWdBMEVHU0EwQUlBQW9BaHdpQVVFQ2RFR3duUUZxS0FJQUlRSUNmaUFBS1FNSUlnNUNBRk1FUUVFTUlBRkJBV29nQVVFTFRoc2hCQ0FEUVFGcklRTkJmeUFDZEVGL2MwRUJkQ0VCUWdFTUFRc2dBVUVCYTBFQUlBRkJBVW9iSVFRZ0RrRS9JQUpycllpblFYOGdBblJCZjNOeFFRRjBRUUZ5SVFFZ0F5QUNRUUZxSWdKcklRTWdBcTBMSVE4Z0FDQUROZ0lRSUFBZ0JEWUNIQ0FBSUE0Z0Q0WTNBd2dnQUNBQUtRTW9RdjlBZ3lBQnJFSUhob1EzQXloQkFpRUZJQU5CQmtnTkFDQUFLQUljSWdGQkFuUkJzSjBCYWlnQ0FDRUNBbjRnQUNrRENDSU9RZ0JUQkVCQkRDQUJRUUZxSUFGQkMwNGJJUVFnQTBFQmF5RURRWDhnQW5SQmYzTkJBWFFoQVVJQkRBRUxJQUZCQVd0QkFDQUJRUUZLR3lFRUlBNUJQeUFDYTYySXAwRi9JQUowUVg5emNVRUJkRUVCY2lFQklBTWdBa0VCYWlJQ2F5RURJQUt0Q3lFUElBQWdBellDRUNBQUlBUTJBaHdnQUNBT0lBK0dOd01JSUFBZ0FDa0RLRUwvLzBDRElBR3NRZzZHaERjREtFRURJUVVnQTBFR1NBMEFJQUFvQWh3aUFVRUNkRUd3blFGcUtBSUFJUUlDZmlBQUtRTUlJZzVDQUZNRVFFRU1JQUZCQVdvZ0FVRUxUaHNoQkNBRFFRRnJJUU5CZnlBQ2RFRi9jMEVCZENFQlFnRU1BUXNnQVVFQmEwRUFJQUZCQVVvYklRUWdEa0UvSUFKcnJZaW5RWDhnQW5SQmYzTnhRUUYwUVFGeUlRRWdBeUFDUVFGcUlnSnJJUU1nQXEwTElROGdBQ0FETmdJUUlBQWdCRFlDSENBQUlBNGdENFkzQXdnZ0FDQUFLUU1vUXYvLy8wQ0RJQUdzUWhXR2hEY0RLRUVFSVFVZ0EwRUdTQTBBSUFBb0Fod2lBVUVDZEVHd25RRnFLQUlBSVFJQ2ZpQUFLUU1JSWc1Q0FGTUVRRUVNSUFGQkFXb2dBVUVMVGhzaEJDQURRUUZySVFOQmZ5QUNkRUYvYzBFQmRDRUJRZ0VNQVFzZ0FVRUJhMEVBSUFGQkFVb2JJUVFnRGtFL0lBSnJyWWluUVg4Z0FuUkJmM054UVFGMFFRRnlJUUVnQXlBQ1FRRnFJZ0pySVFNZ0FxMExJUThnQUNBRE5nSVFJQUFnQkRZQ0hDQUFJQTRnRDRZM0F3Z2dBQ0FBS1FNb1F2Ly8vLzlBZ3lBQnJFSWNob1EzQXloQkJTRUZJQU5CQmtnTkFDQUFLQUljSWdGQkFuUkJzSjBCYWlnQ0FDRUNBbjRnQUNrRENDSU9RZ0JUQkVCQkRDQUJRUUZxSUFGQkMwNGJJUVFnQTBFQmF5RURRWDhnQW5SQmYzTkJBWFFoQVVJQkRBRUxJQUZCQVd0QkFDQUJRUUZLR3lFRUlBNUJQeUFDYTYySXAwRi9JQUowUVg5emNVRUJkRUVCY2lFQklBTWdBa0VCYWlJQ2F5RURJQUt0Q3lFUElBQWdBellDRUNBQUlBUTJBaHdnQUNBT0lBK0dOd01JSUFBZ0FDa0RLRUwvLy8vLy8wQ0RJQUd0UWlPR2hEY0RLRUVHSVFVZ0EwRUdTQTBBSUFBb0Fod2lBVUVDZEVHd25RRnFLQUlBSVFJQ2ZpQUFLUU1JSWc1Q0FGTUVRRUVNSUFGQkFXb2dBVUVMVGhzaEJDQURRUUZySVFOQmZ5QUNkRUYvYzBFQmRDRUJRZ0VNQVFzZ0FVRUJhMEVBSUFGQkFVb2JJUVFnRGtFL0lBSnJyWWluUVg4Z0FuUkJmM054UVFGMFFRRnlJUUVnQXlBQ1FRRnFJZ0pySVFNZ0FxMExJUThnQUNBRE5nSVFJQUFnQkRZQ0hDQUFJQTRnRDRZM0F3Z2dBQ0FBS1FNb1F2Ly8vLy8vLzBDRElBR3RRaXFHaERjREtFRUhJUVVnQTBFR1NBMEFJQUFvQWh3aUFVRUNkRUd3blFGcUtBSUFJUUlDZmlBQUtRTUlJZzVDQUZNRVFFRU1JQUZCQVdvZ0FVRUxUaHNoQkNBRFFRRnJJUU5CZnlBQ2RFRi9jMEVCZENFQlFnRU1BUXNnQVVFQmEwRUFJQUZCQVVvYklRUWdEa0UvSUFKcnJZaW5RWDhnQW5SQmYzTnhRUUYwUVFGeUlRRWdBeUFDUVFGcUlnSnJJUU1nQXEwTElROGdBQ0FETmdJUUlBQWdCRFlDSENBQUlBNGdENFkzQXdnZ0FDQUFLUU1vUXYvLy8vLy8vLzlBZ3lBQnJVSXhob1EzQXloQkNDRUZDeUFBSUFWQkFXczJBaUFnQUNBQUtRTW9JZzVDQjRnM0F5Z2dEcWRCL3dCeEN5SUJBWDhnQUFSQUlBQW9BZ3dpQVFSQUlBRVFDU0FBUVFBMkFnd0xJQUFRQ1FzTGhRRUNCWDhCZmdKQUlBQkNnSUNBZ0JCVUJFQWdBQ0VIREFFTEEwQWdBVUVCYXlJQklBQkNDb0FpQjBMMkFYNGdBSHluUVRCeU9nQUFJQUJDLy8vLy81OEJWaUVGSUFjaEFDQUZEUUFMQ3lBSHB5SUNCRUFEUUNBQlFRRnJJZ0VnQWtFS2JpSURRZllCYkNBQ2FrRXdjam9BQUNBQ1FRbExJUVlnQXlFQ0lBWU5BQXNMSUFFTCtlSUJCSHAvQm5zSWZnRjlJd0JCRUdzaVRpUUFBa0FnQUMwQUNFR0FBWEZGRFFBZ0FDZ0N6QUVnQVVjTkFDQUFLQUtjQVNBQlFZd3NiR29pVHlnQzNDc2lGVVVFUUNCUEVDa01BUXNnQUNnQ3lBRWFJQUFvQXRBQklSa2dBQ2dDVENJSFJRUkFJQUFvQWtnaEJ3c2dCeWdDQUNFR0lBY29BZ1FoQ3lBSEtBSUlJUWtnQnlnQ0RDRU5JQUFvQWp3aEJ5QUFLQUpBSVFnZ1R5Z0M0Q3NoQ2lNQVFSQnJJa0FrQUNBWklBRTJBaVFnR1NnQ0hDZ0NUQ0VNSUJsQkFUWUNRQ0FaSUEwMkFqd2dHU0FKTmdJNElCa2dDellDTkNBWklBWTJBakFnR1NBTUlBRkJqQ3hzYWpZQ0lDQVpLQUpFRUFsQkFDRUxJQmxCQURZQ1JBSkFJQWNFUUVFRUlCa29BaGdvQWhBUURDSUxSUVJBREFJTFFRQWhEVUVBSVFrZ0IwRUVUd1JBSUFkQmZIRWhERUVBSVFFRFFDQUxJQWdnQ1VFQ2RHb2lCaWdDQUVFQ2RHcEJBVFlDQUNBTElBWW9BZ1JCQW5ScVFRRTJBZ0FnQ3lBR0tBSUlRUUowYWtFQk5nSUFJQXNnQmlnQ0RFRUNkR3BCQVRZQ0FDQUpRUVJxSVFrZ0FVRUVhaUlCSUF4SERRQUxDeUFIUVFOeElnRUVRQU5BSUFzZ0NDQUpRUUowYWlnQ0FFRUNkR3BCQVRZQ0FDQUpRUUZxSVFrZ0RVRUJhaUlOSUFGSERRQUxDeUFaSUFzMkFrUUxBa0FDUUNBWktBSVlJZ1lvQWhBaURVVU5BRUVBSVFrQ1FBTkFBa0FnQ3dSQUlBc2dDVUVDZEdvb0FnQkZEUUVMSUFZb0FoZ2dDVUUwYkdvaUFUVUNCQ0tHQVVJQmZTS0tBU0FaTlFJOGZDQ0dBWUFoaXdFZ0FUVUNBQ0tIQVVJQmZTS0lBU0FaTlFJNGZDQ0hBWUFoakFFZ2lnRWdHVFVDTkh3Z2hnR0FJWVlCSUJrb0FoUW9BZ0FvQWhRZ0NVSE1BR3hxSWdFb0FoUWdBU2dDR0dzaUIwRWZTdzBBQWtBZ2lBRWdHVFVDTUh3Z2h3R0FweUlJSUFFb0FnQnJJZ3hCQUNBSUlBeFBHeUFIZGcwQUlJWUJweUlJSUFFb0FnUnJJZ3hCQUNBSUlBeFBHeUFIZGcwQUlBRW9BZ2dpQ0NDTUFhZHJJZ3hCQUNBSUlBeFBHeUFIZGcwQUlBRW9BZ3dpQVNDTEFhZHJJZ2hCQUNBQklBaFBHeUFIZGtVTkFRc2dHVUVBTmdKQURBSUxJQWxCQVdvaUNTQU5SdzBBQ3lBWktBSkFSUTBBSUExRkRRRkJBQ0VOQTBBZ0dTZ0NGQ2dDQUNnQ0ZDQU5RY3dBYkdvaUFTZ0NIQ0FCS0FJWVFaZ0JiR29pQjBHVUFXc29BZ0FoQmlBSFFZd0JheWdDQUNFTElBZEJtQUZyS0FJQUlRa2dCMEdRQVdzb0FnQWhDQUpBSUJrb0FrUWlCd1JBSUFjZ0RVRUNkR29vQWdCRkRRRUxJQXNnQm1zaEJ5QUlJQWxySVFrQ1FDQUdJQXRHRFFBZ0I2MGdDYTErUWlDSVVBMEFJQVZCQVVHVUZrRUFFQWdNQmdzZ0J5QUpiQ0lIUVlDQWdJQUVUd1JBSUFWQkFVR1VGa0VBRUFnTUJnc2dBU0FIUVFKMElnYzJBaXdDZndKQUFrQUNRQ0FCS0FJa0lnWUVRQ0FISUFFb0FqQk5EUVVnQVNnQ0tBMEJDeUFCSUFjUUZpSUhOZ0lrSUFkQkFTQUJLQUlzSWdjYlJRMEJJQUVnQnpZQ01DQUJRU2hxREFNTElBWVFDU0FCSUFFb0Fpd1FGaUlITmdJa0lBY05BU0FCUVFBMkFqQWdBVUlBTndJb0N5QUZRUUZCbEJaQkFCQUlEQWNMSUFFZ0FTZ0NMRFlDTUNBQlFTaHFDMEVCTmdJQUN5QU5RUUZxSWcwZ0dTZ0NHQ0lHS0FJUVNRMEFDd3dCQ3lBTlJRMEFJQVlvQWhnaER5QVpLQUlVS0FJQUtBSVVJUlpCQUNFQkEwQUNRQ0FMQkVBZ0N5QUJRUUowYWlnQ0FFVU5BUXNnRmlBQlFjd0FiR29pQnlBSEtBSUFJZ2tnRHlBQlFUUnNhaUlJTlFJQUlvWUJRZ0Y5SW9vQklCazFBakI4SUlZQmdLY2lEQ0FKSUF4TEd5SUpOZ0k0SUFjZ0J5Z0NCQ0lNSUFnMUFnUWlod0ZDQVgwaWl3RWdHVFVDTkh3Z2h3R0FweUlJSUFnZ0RFa2JJZ2cyQWp3Z0J5QUhLQUlJSWd3Z2lnRWdHVFVDT0h3Z2hnR0FweUlYSUF3Z0Ywa2JJZ3cyQWtBZ0J5QUhLQUlNSWhjZ2l3RWdHVFVDUEh3Z2h3R0FweUlPSUE0Z0Ywc2JJaGMyQWtRZ0NTQU1TdzBESUFnZ0Ywc05BeUFIS0FJVUlnNUZEUUFnRHEwaGl3RWdGNjBoaUFFZ0RLMGhqQUVnQ0swaGpRRWdDYTBoaVFFZ0J5Z0NIQ0VKUWdBaGh3RURRQ0FKSUljQnB5SUlRWmdCYkdvaUIwSi9JQTRnQ0VGL2MycXRJb1lCaGtKL2hTS0tBU0NJQVh3Z2hnR0lQZ0tVQVNBSElJb0JJSXdCZkNDR0FZZytBcEFCSUFjZ2lnRWdqUUY4SUlZQmlENENqQUVnQnlDSkFTQ0tBWHdnaGdHSVBnS0lBU0NIQVVJQmZDS0hBU0NMQVZJTkFBc0xJQUZCQVdvaUFTQU5SdzBBQ3dzZ1FFRUFOZ0lJSUJrb0Fod2hBVUVCUVFnUURDSWJCRUFnR3lBQk5nSUVJQnNnQmpZQ0FBc2dHMFVOQVNBWktBSWtJUkVnR1NnQ0ZDZ0NBQ0VnSXdCQjhBQnJJaE1rQUNBUlFZd3NiQ0lCSUJzb0FnUWlDQ2dDVEdvaUhDZ0NwQU1oS0FKL0lCc29BZ0FpSGlFWElBVWhNMEVBSVEwakFFRWdheUlQSkFBZ0FTQUlLQUpNYWlJZEtBS2tBeUVZQWtBZ0Z5Z0NFQ0lXUVpBRWJCQU5JZ3hGRFFBQ1FDQVdRUUowRUEwaUMwVUVRQ0FNSVFzTUFRc0NmeUFJS0FKTUlCRkJqQ3hzYWlJSktBS2tBeUlhUVFGcUlnRkI4QUVRRENJSEJFQUNRQ0FCQkVBZ0Z5Z0NFQ0VPSUFjaEFRTkFJQUVnTXpZQzdBRWdBU0FPUVJBUURDSUdOZ0xJQVNBR1JRMENJQUVnRnlnQ0VDSWZOZ0xFQVVFQUlRWkJBQ0VPSUI4RVFBTkFJQUVvQXNnQklBWkJCSFJxSWc0Z0NTZ0MwQ3NnQmtHNENHeHFJaDhvQWdSQkVCQU1JaUUyQWd3Z0lVVU5CQ0FPSUI4b0FnUTJBZ2dnQmtFQmFpSUdJQmNvQWhBaURra05BQXNMSUFGQjhBRnFJUUVnRWlBYVJpRnpJQkpCQVdvaEVpQnpSUTBBQ3dzZ0J3d0NDeUFIS0FJRUlnRUVRQ0FCRUFrZ0IwRUFOZ0lFQ3lBSElRRkJBQ0VKQTBBZ0FTZ0N5QUVpQmdSQVFRQWhEaUFCS0FMRUFTSVNCSDhEUUNBR0tBSU1JaDhFUUNBZkVBa2dCa0VBTmdJTUlBRW9Bc1FCSVJJTElBWkJFR29oQmlBT1FRRnFJZzRnRWtrTkFBc2dBU2dDeUFFRklBWUxFQWtnQVVFQU5nTElBUXNnQVVId0FXb2hBU0FKSUJwR0lYUWdDVUVCYWlFSklIUkZEUUFMSUFjUUNRdEJBQXNpQndSQUFrQWdGa1VOQUVFQUlRa2dEQ0VHSUJaQkJFOEVRQ0FHSUJaQmZIRWlDVUdRQkd4cUlRWWdEQ0VCQTBBZ0N5QVFRUUowYWlBQi9SSDlEQUFBQUFBUUFnQUFJQVFBQURBR0FBRDlyZ0g5Q3dJQUlBRkJ3QkJxSVFFZ0VFRUVhaUlRSUFsSERRQUxJQWtnRmtZTkFRc0RRQ0FMSUFsQkFuUnFJQVkyQWdBZ0JrR1FCR29oQmlBSlFRRnFJZ2tnRmtjTkFBc0xJQXNoRGtFQUlSSWdDQ2dDVENBUlFZd3NiR29vQXRBcklRRWdGeWdDR0NFSklBOGdDQ2dDQkNBSUtBSU1JQkVnRVNBSUtBSVlJZ1p1SWdzZ0JteHJiR29pQmlBWEtBSUFJaEFnQmlBUVN4czJBaFFnRDBGL0lBWWdDQ2dDREdvaUVDQUdJQkJMR3lJR0lCY29BZ2dpRUNBR0lCQkpHellDRUNBUElBZ29BZ2dnQ0NnQ0VDQUxiR29pQmlBWEtBSUVJZ3NnQmlBTFN4czJBZ3dnRDBGL0lBWWdDQ2dDRUdvaUN5QUdJQXRMR3lJR0lCY29BZ3dpQ3lBR0lBdEpHellDQ0NBUFFRQTJBaGdnRDBFQU5nSWNJQTlCLy8vLy93YzJBZ1FnRDBILy8vLy9CellDQUNBWEtBSVFCRUFEUUNBT0JIOGdEaUFTUVFKMGFpZ0NBQVZCQUFzaEN5QUpOUUlFSW9ZQlFnRjlJb29CSUE4MUFnaDhJSVlCZ0NHTEFTQUpOUUlBSW9jQlFnRjlJb2dCSUE4MUFoQjhJSWNCZ0NHTUFTQ0tBU0FQTlFJTWZDQ0dBWUFoaGdFZ2lBRWdEelVDRkh3Z2h3R0FJWWNCSUFFb0FnUWlDQ0FQS0FJY1N3UkFJQThnQ0RZQ0hDQUJLQUlFSVFnTElBZ0VRQ0NMQVVMLy8vLy9ENE1oaWdFZ2pBRkMvLy8vL3crRElZc0JJSVlCUXYvLy8vOFBneUdJQVNDSEFVTC8vLy8vRDRNaGpBRWdBVUd3QjJvaEh5QUJRYXdHYWlFaFFRQWhHZ05BSUI4Z0drRUNkQ0lRYWlnQ0FDRUdJQkFnSVdvb0FnQWhFVUVBSVJBZ0N3UkFJQXNnQmpZQ0JDQUxJQkUyQWdBZ0MwRUlhaUVRQ3dKQUlCRWdDRUVCYXlJSWFpSUxRUjlMRFFBZ0NTZ0NBQ0lpUVg4Z0MzWkxEUUFnRHlBUEtBSUVJaWNnSWlBTGRDSUxJQXNnSjBzYk5nSUVDd0pBSUFZZ0NHb2lDMEVmU3cwQUlBa29BZ1FpSWtGL0lBdDJTdzBBSUE4Z0R5Z0NBQ0luSUNJZ0MzUWlDeUFMSUNkTEd6WUNBQXRCQUNFTElJb0JRbjhnQ0swaWhnR0dRbitGSW9jQmZDQ0dBWWdpalFGQy8vLy8vdytEUWdFZ0JxMGlpUUdHZkVJQmZTQ0pBWWluSUljQklJZ0JmQ0NHQVlpbklpSWdCblpyUVg4Z0JuWnhRUUFnSWlDTkFhZEhHeUVHSUljQklJc0JmQ0NHQVlnaWpRRkMvLy8vL3crRFFnRWdFYTBpaVFHR2ZFSUJmU0NKQVlpbklJY0JJSXdCZkNDR0FZaW5JaUlnRVhaclFYOGdFWFp4UVFBZ0lpQ05BYWRIR3lFUklCQUVRQ0FRSUFZMkFnUWdFQ0FSTmdJQUlCQkJDR29oQ3dzZ0JpQVJiQ0lHSUE4b0FoaExCRUFnRHlBR05nSVlDeUFhUVFGcUlob2dBU2dDQkVrTkFBc0xJQWxCTkdvaENTQUJRYmdJYWlFQklCSkJBV29pRWlBWEtBSVFTUTBBQ3dzZ0dFRUJhaUVoSUE4b0Fod2hFU0FQS0FJWUlSSWdCMEVBTmdJRUFrQWdIU2dDQ0VFQmFpSUJyU0FSSUJJZ0Ztd2lJbXdpR3ExK1FpQ0lVQVJBSUFjZ0FTQWFiQ0lCTmdJSUlBY2dBVUVDRUF3aUFUWUNCQ0FCRFFFTElBd1FDU0FPRUFrZ0J5Z0NCQ0lCQkVBZ0FSQUpJQWRCQURZQ0JBc2dJVVVFUUNBSElRc01Bd3RCQUNFTElBY2hBUU5BSUFFb0FzZ0JJZ2tFUUVFQUlRWWdBU2dDeEFFaUVBUi9BMEFnQ1NnQ0RDSUlCRUFnQ0JBSklBbEJBRFlDRENBQktBTEVBU0VRQ3lBSlFSQnFJUWtnQmtFQmFpSUdJQkJKRFFBTElBRW9Bc2dCQlNBSkN4QUpJQUZCQURZQ3lBRUxJQUZCOEFGcUlRRWdDeUFZUmlGMUlBdEJBV29oQ3lCMVJRMEFDeUFISVFzTUFnc2dGeWdDR0NFWElBY2dEeWdDRkNJbk5nTE1BU0FISUE4b0Fnd2lNRFlDMEFFZ0J5QVBLQUlRSWkwMkF0UUJJQWNnRHlnQ0NDSXJOZ0xZQVNBSElCbzJBZ3dnQnlBaU5nSVFJQWNnRWpZQ0ZFRUJJUjhnQjBFQk5nSVlJQllFUUNBSEtBTElBU0VCUVFBaENDQVhJUXNEUUNBT0lBaEJBblJxS0FJQUlRa2dBU0FMS0FJQU5nSUFJQUVnQ3lnQ0JEWUNCQUpBSUFFb0FnZ2lEVVVOQUNBQktBSU1JUVlnRFVFQlJ3UkFJQTFCZm5FaEwwRUFJUkFEUUNBR0lBa29BZ0EyQWdBZ0JpQUpLQUlFTmdJRUlBWWdDU2dDQ0RZQ0NDQUdJQWtvQWd3MkFnd2dCaUFKS0FJUU5nSVFJQVlnQ1NnQ0ZEWUNGQ0FHSUFrb0FoZzJBaGdnQmlBSktBSWNOZ0ljSUFaQklHb2hCaUFKUVNCcUlRa2dFRUVDYWlJUUlDOUhEUUFMQ3lBTlFRRnhSUTBBSUFZZ0NTZ0NBRFlDQUNBR0lBa29BZ1EyQWdRZ0JpQUpLQUlJTmdJSUlBWWdDU2dDRERZQ0RBc2dDMEUwYWlFTElBRkJFR29oQVNBSVFRRnFJZ2dnRmtjTkFBc0xJQ0ZCQVVzRVFDQUhJUTBEUUNBTklDczJBc2dESUEwZ0xUWUN4QU1nRFNBd05nTEFBeUFOSUNjMkFyd0RJQTFCQVRZQ2lBSWdEU0FTTmdLRUFpQU5JQ0kyQW9BQ0lBMGdHallDL0FFZ0ZnUkFJQTBvQXJnRElRRkJBQ0VJSUJjaEN3TkFJQTRnQ0VFQ2RHb29BZ0FoQ1NBQklBc29BZ0EyQWdBZ0FTQUxLQUlFTmdJRUFrQWdBU2dDQ0NJaFJRMEFJQUVvQWd3aEJpQWhRUUZIQkVBZ0lVRitjU0V2UVFBaEVBTkFJQVlnQ1NnQ0FEWUNBQ0FHSUFrb0FnUTJBZ1FnQmlBSktBSUlOZ0lJSUFZZ0NTZ0NERFlDRENBR0lBa29BaEEyQWhBZ0JpQUpLQUlVTmdJVUlBWWdDU2dDR0RZQ0dDQUdJQWtvQWh3MkFod2dCa0VnYWlFR0lBbEJJR29oQ1NBUVFRSnFJaEFnTDBjTkFBc0xJQ0ZCQVhGRkRRQWdCaUFKS0FJQU5nSUFJQVlnQ1NnQ0JEWUNCQ0FHSUFrb0FnZzJBZ2dnQmlBSktBSU1OZ0lNQ3lBTFFUUnFJUXNnQVVFUWFpRUJJQWhCQVdvaUNDQVdSdzBBQ3dzZ0RTQU5LUUlFTndMMEFTQVlJQjlISVhZZ0RVSHdBV29oRFNBZlFRRnFJUjhnZGcwQUN3c2dEQkFKSUE0UUNTQWRLQUtrQXlFTEFrQWdIUzBBaUN4QkJIRUVRQ0FMUVg5R0RRRWdIVUdvQTJvaEJpQWRLQUlJSVFGQkFDRVFJQWNoQ1FOQUlBWW9BaVFoRFNBSlFRRTJBaXdnQ1NBTk5nSlVJQWtnQmlnQ0FEWUNNQ0FHS0FJRUlRMGdDVUlBTndKRUlBa2dEVFlDTkNBSklBWW9BZ3cyQWp3Z0NTQUdLQUlRTmdKQUlBWW9BZ2doRFNBSklCSTJBa3dnQ1NBTklBRWdBU0FOU3hzMkFqZ2dCa0dVQVdvaEJpQUpRZkFCYWlFSklBc2dFRVloZHlBUVFRRnFJUkFnZDBVTkFBc01BUXNnQzBGL1JnMEFJQjBvQWdnaEJpQWRLQUlFSVEwZ0J5RUpJQXNFUUNBTFFRRnFRWDV4SVFoQkFDRUJBMEFnQ1VJQU53SkVJQWxCQURZQ05DQUpRZ0UzQWl3Z0NTQU5OZ0pVSUFrZ0VUWUNQQ0FKSUEwMkFzUUNJQWtnRWpZQ1RDQUpJQVkyQWpnZ0NVSUFOd0swQWlBSlFRQTJBcVFDSUFsQ0FUY0NuQUlnQ1NBUk5nS3NBaUFKSUFZMkFxZ0NJQWtnRWpZQ3ZBSWdDU0FKS0FMRUFUWUNRQ0FKSUFrb0FyUUROZ0t3QWlBSlFlQURhaUVKSUFGQkFtb2lBU0FJUncwQUN3c2dDMEVCY1EwQUlBbENBRGNDUkNBSlFRQTJBalFnQ1VJQk53SXNJQWtnRFRZQ1ZDQUpJQkUyQWp3Z0NTQVNOZ0pNSUFrZ0JqWUNPQ0FKSUFrb0FzUUJOZ0pBQ3lBSElRME1BZ3NnREJBSkN5QUxFQWtMSUE5QklHb2tBRUVBSUEwaUIwVU5BQm9nS0VFQmFpRU9JQlVoSFNBSElRc0NRQUpBQTBBZ0N5Z0NWRUYvUmcwQ0lCNG9BaEJCQW5RUURTSUJSUTBDSUFGQkFTQWVLQUlRUVFKMEVBNGhDU0FMRUZBRVFBTkFJQ0FvQWhRaENBSkFBa0FnQ3lnQ0tDQWNLQUlNVHcwQUlBc29BaUFpQVNBSUlBc29BaHhCekFCc2FpSUdLQUlZVHcwQUlBWW9BaHdnQVVHWUFXeHFJZzBvQWhoRkRRQWdEVUVjYWlFSVFRQWhBUUpBQTBBZ0dTQUxLQUljSUFzb0FpQWdDQ0FCUVNSc2FpSUdLQUlRSUFZb0FoUWdDeWdDSkVFb2JHb2lCaWdDQUNBR0tBSUVJQVlvQWdnZ0JpZ0NEQkF5UlFSQUlBRkJBV29pQVNBTktBSVlTUTBCREFJTEN5QUpJQXNvQWh4QkFuUnFRUUEyQWdBZ0UwRUFOZ0pvSUJzb0FnUWdJQ2dDRkNBY0lBc2dFMEhzQUdvZ0hTQVRRZWdBYWlBS0lETVFUMFVOQmlBTEtBSWdJUWdnQ3lnQ0hDRVdJQk1vQW1naEdpQVRLQUpzQkVBZ0UwRUFOZ0pvSUNBb0FoUWdGa0hNQUd4cUtBSWNJQWhCbUFGc2FpSWZLQUlZSWdFRWZ5QUtJQnBySVJnZ0NpQWRhaUVoSUI5QkhHb2hERUVBSVJGQkFDRVBJQm9nSFdvaUlpRVNBMEFDUUNBTUtBSUlJQXdvQWdCR0RRQWdEQ2dDRENBTUtBSUVSZzBBSUF3b0FoUWdDeWdDSkVFb2JHb2lCaWdDRkNBR0tBSVFiQ0lvUlEwQUlBWW9BaGdoQVVFQUlSWURRQ0FQQkVBZ0FVRUFOZ0kwQ3lBQktBSWtJaGNFUUNBQktBSUFJUWdDUUNBQklBRW9BaWdpQmdSL0lBZ2dCa0VZYkdvaUNFRVVheWdDQUNBSVFReHJLQUlBUndSQUlBaEJHR3NoQ0F3Q0N5QUdRUUZxQlVFQkN6WUNLQXNDUUFOQUFrQUNRQUpBSUFnb0FoUWlEU0FTUVg5elN3MEFJQThOQUNBTklCSnFJQ0ZORFFFTElBc29BaHdoQmlBTEtBSWdJUmNnQ3lnQ0pDRVBJQnNvQWdRb0FtZ0VRQ0FUSUFZMkFsZ2dFeUFYTmdKVUlCTWdFVFlDVUNBVElBODJBa3dnRXlBV05nSklJQk1nR0RZQ1JDQVRJQTAyQWtBZ00wRUJRWUx1QUNBVFFVQnJFQWdNRVFzZ0V5QUdOZ0k0SUJNZ0Z6WUNOQ0FUSUJFMkFqQWdFeUFQTmdJc0lCTWdGallDS0NBVElCZzJBaVFnRXlBTk5nSWdJRE5CQWtHQzdnQWdFMEVnYWhBSUlBRkJBRFlDTkNBSUlBZ29BaEFpQmlBSUtBSUVhallDQkNBQklBRW9BaVFpRFNBR2F5SVhOZ0lrUVFFaER5QUdJQTFHRFFFZ0FTQUJLQUlvUVFGcUlnZzJBaWdNQXdzZ0FTZ0NCQ0VRSUFFb0FqUWlEeUFCS0FJNFJ3Ui9JQmNGSUJBZ0QwRUJkRUVCY2lJR1FRTjBFQkFpRUVVRVFDQXpRUUZCZ0FoQkFCQUlEQkVMSUFFZ0JqWUNPQ0FCSUJBMkFnUWdBU2dDTkNFUElBZ29BaFFoRFNBQktBSWtDeUVHSUJBZ0QwRURkR29pRnlBTk5nSUVJQmNnRWpZQ0FDQUJJQTlCQVdvMkFqUWdDQ0FJS0FJQUlBMXFOZ0lBSUFnZ0NDZ0NFQ0lRSUFnb0FnUnFJZzgyQWdRZ0FTQUdJQkJySWhjMkFpUWdDQ0FQTmdJSUlBMGdFbW9oRWtFQUlROGdCaUFRUmcwQUlBRWdBU2dDS0VFQmFqWUNLQ0FJUVJocUlRZ0xJQmNOQUFzZ0FTZ0NLQ0VJQ3lBQklBZzJBaXdMSUFGQlFHc2hBU0FXUVFGcUloWWdLRWNOQUFzZ0h5Z0NHQ0VCQ3lBTVFTUnFJUXdnRVVFQmFpSVJJQUZKRFFBTElBc29BaHdoRmlBTEtBSWdJUWdnR0NBU0lDSnJJQThiQlVFQUN5QWFhaUVhQ3lBZUtBSVlJQlpCTkd4cUlnRWdDQ0FCS0FJa0lnRWdBU0FJU1JzMkFpUU1BZ3NnSUNnQ0ZDRUlDeUFUUVFBMkFtZ2dHeWdDQkNBSUlCd2dDeUFUUWV3QWFpQWRJQk5CNkFCcUlBb2dNeEJQUlEwRUlBc29BaHdoRmlBVEtBSm9JUm9nRXlnQ2JFVU5BQUpBSUNBb0FoUWdGa0hNQUd4cUtBSWNJQXNvQWlBaUlrR1lBV3hxSWdFb0FoZ2lLRVVFUUVFQUlSY01BUXNnQ2lBYWF5RVFJQUZCSEdvaERDQUxLQUlrSVNGQkFDRVhRUUFoR0FOQUFrQWdEQ2dDQ0NBTUtBSUFSZzBBSUF3b0Fnd2dEQ2dDQkVZTkFDQU1LQUlVSUNGQktHeHFJZ0VvQWhRZ0FTZ0NFR3dpSjBVTkFDQUJLQUlZSVJGQkFDRWZBMEFnRVNnQ0pDSUJCRUFnRVNnQ0FDRUlBa0FnRVNBUktBSW9JaElFZnlBSUlCSkJHR3hxSWdoQkZHc29BZ0FnQ0VFTWF5Z0NBRWNFUUNBSVFSaHJJUWdNQWdzZ0VrRUJhZ1ZCQVFzaUVqWUNLQXNDUUFKQUlBZ29BaFFpRHlBWGFpSU5JQTlKRFFBZ0RTQVFTdzBBQTBBZ0RTRVhJQWdnQ0NnQ0VDSU5JQWdvQWdScU5nSUVJQUVnRFdzaEJpQUJJQTFHRFFJZ0VTQVNRUUZxSWhJMkFpZ2dDQ2dDTENJUElCZHFJZzBnRDA4RVFDQUlRUmhxSVFnZ0JpRUJJQTBnRUUwTkFRc0xJQkVnQmpZQ0pBc2dHeWdDQkNnQ2FDRUJJQk1nRmpZQ0dDQVRJQ0kyQWhRZ0V5QVlOZ0lRSUJNZ0lUWUNEQ0FUSUI4MkFnZ2dFeUFRTmdJRUlCTWdEellDQUNBelFRRkJBaUFCRzBHdDdRQWdFeEFJSUFFTkNpQUxLQUljSVJZTUJRc2dFU0FHTmdJa0N5QVJRVUJySVJFZ0gwRUJhaUlmSUNkSERRQUxDeUFNUVNScUlRd2dHRUVCYWlJWUlDaEhEUUFMQ3lBWElCcHFJUm9MQWtBZ0NTQVdRUUowYWlnQ0FFVU5BQ0FlS0FJWUlCWkJOR3hxSWdFb0FpUU5BQ0FCSUNBb0FoUWdGa0hNQUd4cUtBSVlRUUZyTmdJa0N5QUtJQnBySVFvZ0dpQWRhaUVkSUFzUVVBMEFDd3NnQ1JBSklBdEI4QUZxSVFzZ0kwRUJhaUlqSUJ3b0FxUURUUTBBQ3lBSElBNFFNeUJBSUIwZ0ZXczJBZ2hCQVF3Q0N5QUhJQTRRTXlBSkVBbEJBQXdCQ3lBSElBNFFNMEVBQ3lGNElCTkI4QUJxSkFBZ0d4QWxJSGhGRFFFZ0dTZ0NJQ2dDMENzaENTQVpLQUlVS0FJQUloWW9BaFFoSFNCQVFRRTJBZ3hCQUNFTlFRQWhGU0FaS0FJZ0lnRW9BZ3dnQVNnQ0NFWUVRQ0FKS0FJUVFRUjJRUUZ4SVJVTEFrQWdGaWdDRUNJeFJRMEFBMEFDUUNBWktBSkVJZ0VFUUNBQklBMUJBblJxS0FJQVJRMEJDeUJBUVF4cUlSTkJBQ0V4QWtBZ0hTZ0NHQ0lCUlEwQUlCa29BaXdoRUFOQUlCMG9BaHdnTVVHWUFXeHFJZ3dvQWhnaUN3UkFJQXhCSEdvaEVpQU1LQUlVSVFFZ0RDZ0NFQ0VYUVFBaERnTkFJQUVnRjJ3RVFDQVNJQTVCSkd4cUlROUJBQ0VJQTBBZ0dTQWRLQUlRSURFZ0R5Z0NFQ0FQS0FJVUlBaEJLR3hxSWdjb0FnQWdCeWdDQkNBSEtBSUlJQWNvQWd3UU1pRUdJQWNvQWhRaUN5QUhLQUlRSWdwc0lRRUNRQ0FHQkVBZ0FVVU5BVUVBSVFvRFFBSkFJQmtnSFNnQ0VDQXhJQThvQWhBZ0J5Z0NHQ0FLUVFaMGFpSUdLQUlJSUFZb0Fnd2dCaWdDRUNBR0tBSVVFREpGQkVBZ0JpZ0NQQ0lCUlEwQklBRVFDU0FHUVFBMkFqd01BUXNnR1NnQ1FFVUVRQ0FHS0FJOERRRWdCaWdDRUNBR0tBSUlSZzBCSUFZb0FoUWdCaWdDREVZTkFRdEJBVUVzRUF3aUFVVUVRQ0JBUVFBMkFnd01DZ3NnR1NnQ1FDRUxJQUZCQURZQ0pDQUJJQk0yQWh3Z0FTQUpOZ0lVSUFFZ0hUWUNFQ0FCSUE4MkFnd2dBU0FHTmdJSUlBRWdNVFlDQkNBQklBczJBZ0FnQVNBVk5nSW9JQUVnTXpZQ0lDQUJJQkFvQWdSQkFVbzJBaGdnRUVFT0lBRVFKaUJBS0FJTVJRMEpDeUFLUVFGcUlnb2dCeWdDRkNBSEtBSVFiRWtOQUFzTUFRc2dBVVVOQUVFQUlSY0RRQ0FIS0FJWUlCZEJCblJxSWdFb0Fqd2lCZ1JBSUFZUUNTQUJRUUEyQWp3Z0J5Z0NFQ0VLSUFjb0FoUWhDd3NnRjBFQmFpSVhJQW9nQzJ4SkRRQUxDeUFJUVFGcUlnZ2dEQ2dDRkNJQklBd29BaEFpRjJ4SkRRQUxJQXdvQWhnaEN3c2dEa0VCYWlJT0lBdEpEUUFMSUIwb0FoZ2hBUXNnTVVFQmFpSXhJQUZKRFFBTEN5QkFLQUlNUlEwQ0lCWW9BaEFoTVFzZ0NVRzRDR29oQ1NBZFFjd0FhaUVkSUExQkFXb2lEU0F4U1EwQUN3dEJBQ0V4SUJrb0Fpd1FHaUJBS0FJTVJRMEJBa0FnR1NnQ1FBMEFJQmtvQWhnaUhTZ0NFRVVOQUVFQUlRa0RRQ0FaS0FJVUtBSUFLQUlVSUFsQnpBQnNhaUlCS0FJY0lCMG9BaGdnQ1VFMGJHb29BaVJCbUFGc2FpSUhLQUtJQVNFR0lBY29BcEFCSVFzZ0J5Z0NqQUVoQ2lBSEtBS1VBU0VISUFFb0FqUVFDU0FCUVFBMkFqUUNRQ0FaS0FKRUlnMEVRQ0FOSUFsQkFuUnFLQUlBUlEwQkN5QUdJQXRHRFFBZ0J5QUtSZzBBSUFjZ0Ntc2lCNjBnQ3lBR2F5SUdyWDVDSUloQ0FGSUVRQ0F6UVFGQmxCWkJBQkFJREFVTElBWWdCMndpQjBHQWdJQ0FCRThFUUNBelFRRkJsQlpCQUJBSURBVUxJQUVnQjBFQ2RCQVdJZ0UyQWpRZ0FRMEFJRE5CQVVHVUZrRUFFQWdNQkFzZ0NVRUJhaUlKSUJrb0FoZ2lIU2dDRUVrTkFBc0xJQmtvQWlBaEhTQVpLQUlVS0FJQUloY29BaEFFUUNBWEtBSVVJUWtnSFNnQzBDc2hIU0FaS0FJWUtBSVlJUTFCQUNFTEEwQUNRQ0FaS0FKRUlnRUVRQ0FCSUF0QkFuUnFLQUlBUlEwQkN5QU5LQUlrUVFGcUlRRWdIU2dDRkVFQlJnUkFJQUVoSGtFQUlRWkJBQ0VNL1F3QUFBQUFBQUFBQUFBQUFBQUFBQUFBSVlBQkl3QkJJR3NpSlNRQUFrQUNRQ0FaS0FKQUJFQkJBU0VISUFGQkFVWU5BaUFKS0FJY0lnd2dDU2dDR0VHWUFXeHFJZ0ZCa0FGcktBSUFJaEFnQVVHWUFXc29BZ0FpRTBZTkFpQU1LQUlFSVJFZ0RDZ0NEQ0VZSUF3b0FnQWhHaUFNS0FJSUlSc2dHU2dDTENJT0tBSUVJUllnSGtFQmF5SUtJUlVnRENFSEFrQWdDa0VFVHdSQUlBcEJBM0VoRlNBSElBcEJmSEVpQ0VHWUFXeHFJUWRCQUNFQkEwQWdnQUVnRENBQlFaZ0JiR29pQmtIb0JHb2dCa0hRQTJvZ0JrRzRBbW9nQnYwSkFxQUIvVllDQUFIOVZnSUFBdjFXQWdBRElBWkI0QVJxSUFaQnlBTnFJQVpCc0FKcUlBYjlDUUtZQWYxV0FnQUIvVllDQUFMOVZnSUFBLzJ4QWYyNUFTQUdRZXdFYWlBR1FkUURhaUFHUWJ3Q2FpQUcvUWtDcEFIOVZnSUFBZjFXQWdBQy9WWUNBQU1nQmtIa0JHb2dCa0hNQTJvZ0JrRzBBbW9nQnYwSkFwd0IvVllDQUFIOVZnSUFBdjFXQWdBRC9iRUIvYmtCSVlBQklBRkJCR29pQVNBSVJ3MEFDeUNBQVNDQUFTQ0FBZjBOQ0FrS0N3d05EZzhBQVFJREFBRUNBLzI1QVNLQUFTQ0FBU0NBQWYwTkJBVUdCd0FCQWdNQUFRSURBQUVDQS8yNUFmMGJBQ0VHSUFnZ0NrWU5BUXNEUUNBR0lBY29BcUFCSUFjb0FwZ0JheUlCSUFFZ0Jra2JJZ0VnQnlnQ3BBRWdCeWdDbkFGcklnWWdBU0FHU3hzaEJpQUhRWmdCYWlFSElCVkJBV3NpRlEwQUN3dEJBQ0VISUFaQi8vLy9QMHNOQWlBbElBWkJCWFFpRWhBc0lnODJBaEFnRDBVTkFpQWxJQTgyQWdBZ0NnUkFJQkFnRTJzaEVDQVlJQkZySVFnZ0d5QWFheUVCQTBBZ0NTZ0NKQ0VUSUNVZ0NDSVZOZ0lJSUNVZ0FTSUhOZ0lZSUF3b0Fwd0JJUVlnRENnQ3BBRWhDQ0FNS0FLZ0FTRUJJQ1VnRENnQ21BRWlFVUVDYnpZQ0hDQWxJQUVnRVdzaUFTQUhhellDRkFKQUlCWkJBa2dpR2tVZ0NDQUdheUlJUVFGTGNVVUVRRUVBSVFZZ0NFVU5BUU5BSUNWQkVHb2dFeUFHSUJCc1FRSjBhaEJXSUFaQkFXb2lCaUFJUncwQUN3d0JDeUFJSUJZZ0NDQVdTUnNpRVVFQmF5RWJJQWdnRVc0aEdFRUFJUWNEUUVFa0VBMGlCa1VOQlNBbC9RQUNFQ0dBQVNBR0lCTTJBaGdnQmlBUU5nSVVJQVlnQVRZQ0VDQUdJSUFCL1FzQ0FDQUdJQWNnR0d3MkFod2dCeUFiUmlFZklBWWdDQ0FIUVFGcUlnY2dHR3dnSHhzMkFpQWdCaUFTRUN3aUh6WUNBQ0FmUlFSQVFRQWhCeUFPRUJvZ0JoQUpJQThRQ1F3SEN5QU9RUW9nQmhBbUlBY2dFVWNOQUFzZ0RoQWFDeUFsSUFnZ0ZXczJBZ1FnSlNBTUtBS2NBVUVDYnpZQ0RBSkFJQnBGSUFGQkFVdHhSUVJBUVFnaEIwRUFJUVlnQVVFSVR3UkFBMEFnSlNBVElBWkJBblJxSUJCQkNCQXJJQWNpQmtFSWFpSUhJQUZORFFBTEN5QUJJQVpORFFFZ0pTQVRJQVpCQW5ScUlCQWdBU0FHYXhBckRBRUxJQUVnRmlBQklCWkpHeUlWUVFGcklSZ2dBU0FWYmlFUlFRQWhCd05BUVNRUURTSUdSUTBGSUNYOUFBSUFJWUFCSUFZZ0V6WUNHQ0FHSUJBMkFoUWdCaUFJTmdJUUlBWWdnQUg5Q3dJQUlBWWdCeUFSYkRZQ0hDQUhJQmhHSVJvZ0JpQUJJQWRCQVdvaUJ5QVJiQ0FhR3pZQ0lDQUdJQklRTENJYU5nSUFJQnBGQkVCQkFDRUhJQTRRR2lBR0VBa2dEeEFKREFjTElBNUJDeUFHRUNZZ0J5QVZSdzBBQ3lBT0VCb0xJQXhCbUFGcUlRd2dDa0VCYXlJS0RRQUxDMEVCSVFjZ0R4QUpEQUlMUVFFaEJ5QUpLQUljSWdnZ0hrR1lBV3hxSWpWQm1BRnJJbDhvQWdBZ05VR1FBV3NvQWdCR0RRRWdOVUdVQVdzaVlDZ0NBQ0ExUVl3QmF5Z0NBRVlOQVNBSUtBSUVJUTRnQ0NnQ0RDRVBJQWdvQWdBaEZpQUlLQUlJSVJBZ0NTZ0NSQ0VoSUFrb0FrQWhJaUFKS0FJOElTZ2dDU2dDT0NFd0lBa2dIaEJWSWpsRkJFQkJBQ0VIREFJTEFrQUNRQ0FlUVFGSEJFQUNRQUpBSUI1QkFXc2lDa0VFU1FSQUlBb2hBU0FJSVFjTUFRc2dDa0VEY1NFQklBZ2dDa0Y4Y1NJVlFaZ0JiR29oQndOQUlJQUJJQWdnREVHWUFXeHFJZ1pCNkFScUlBWkIwQU5xSUFaQnVBSnFJQWI5Q1FLZ0FmMVdBZ0FCL1ZZQ0FBTDlWZ0lBQXlBR1FlQUVhaUFHUWNnRGFpQUdRYkFDYWlBRy9Ra0NtQUg5VmdJQUFmMVdBZ0FDL1ZZQ0FBUDlzUUg5dVFFZ0JrSHNCR29nQmtIVUEyb2dCa0c4QW1vZ0J2MEpBcVFCL1ZZQ0FBSDlWZ0lBQXYxV0FnQURJQVpCNUFScUlBWkJ6QU5xSUFaQnRBSnFJQWI5Q1FLY0FmMVdBZ0FCL1ZZQ0FBTDlWZ0lBQS8yeEFmMjVBU0dBQVNBTVFRUnFJZ3dnRlVjTkFBc2dnQUVnZ0FFZ2dBSDlEUWdKQ2dzTURRNFBBQUVDQXdBQkFnUDl1UUVpZ0FFZ2dBRWdnQUg5RFFRRkJnY0FBUUlEQUFFQ0F3QUJBZ1A5dVFIOUd3QWhCaUFLSUJWR0RRRUxBMEFnQmlBSEtBS2dBU0FIS0FLWUFXc2lDaUFHSUFwTEd5SUdJQWNvQXFRQklBY29BcHdCYXlJS0lBWWdDa3NiSVFZZ0IwR1lBV29oQnlBQlFRRnJJZ0VOQUFzTElBWkJnSUNBZ0FGUERRSWdCa0VFZEJBc0loUkZEUUlDUUNBZVJRMEFJQThnRG1zaEVpQVFJQlpySVJvZ0ZFRUVheUU3SUJSQkJHb2hKQ0FVUVF4cUlTa2dGRUVjYWlGRElCUkJHR29oSHlBVVFSUnFJU0FnRkVFTWF5RkVJQlJCQ0dvaEtpQVVRUkJxSVRZZ0ZFRVFheUUzSUJSQkNHc2hRU0FoclNHR0FTQWlyU0dIQVNBb3JTR0tBU0F3clNHTEFVRUJJVVlEUUNBSUtBS2NBU0lCUVFKdklVY2dDQ2dDbUFFaUIwRUNieUU4SUFnb0FxUUJJQUZySWljZ0Vtc2hMQ0FJS0FLZ0FTQUhheUl0SUJwcklTNGdNQ0lNSVFjZ0tDSUdJUW9nSWlJQklUb2dJU0lQSVJFQ1FDQUpLQUlVSWhVZ1JrWU5BQ0FWSUVacklSVkJBQ0VLUVFBaEJ5QU1CRUJDZnlBVnJTS0lBWVpDZjRVZ2l3RjhJSWdCaUtjaEJ3c2dLQVJBUW44Z0ZhMGlpQUdHUW4rRklJb0JmQ0NJQVlpbklRb0xRUUFoRDBFQUlRRWdJZ1JBUW44Z0ZhMGlpQUdHUW4rRklJY0JmQ0NJQVlpbklRRUxJQ0VFUUVKL0lCV3RJb2dCaGtKL2hTQ0dBWHdnaUFHSXB5RVBDMEVBSVRwQkFDRU1RUUVnRlVFQmEzUWlEaUF3U1FSQUlEQWdEbXV0UW44Z0ZhMGlpQUdHUW4rRmZDQ0lBWWluSVF3TElBNGdJa2tFUUNBaUlBNXJyVUovSUJXdElvZ0Joa0ovaFh3Z2lBR0lweUU2QzBFQUlSRkJBQ0VHSUE0Z0tFa0VRQ0FvSUE1cnJVSi9JQld0SW9nQmhrSi9oWHdnaUFHSXB5RUdDeUFPSUNGUERRQWdJU0FPYTYxQ2Z5QVZyU0tJQVlaQ2Y0VjhJSWdCaUtjaEVRdEJmeUE2SUFnb0FyUUJJaFZySWc1QkFDQU9JRHBOR3lJT1FRSnFJaFlnRGlBV1N4c2lEaUF1SUE0Z0xra2JJalJCZnlBQklBZ29BdGdCSWhOcklnNUJBQ0FCSUE1UEd5SUJRUUpxSWc0Z0FTQU9TeHNpQVNBYUlBRWdHa2tiSWlZZ1BCdEJBWFFpQVNBbUlEUWdQQnRCQVhSQkFYSWlEaUFCSUE1TEd5SklJQzFKSVJnZ0RDQVZheUlCUVFBZ0FTQU1UUnNpQVVFQ2F5SU1RUUFnQVNBTVR4c2lFQ0FISUJOcklnRkJBQ0FCSUFkTkd5SUJRUUpySWd4QkFDQUJJQXhQR3lJV0lEd2JRUUYwSWd3Z0ZpQVFJRHdiUVFGMFFRRnlJaXRKSVM4Z0NpQUlLQUs0QVNJYmF5SVZRUUFnQ2lBVlR4c2lDa0VDYXlJVlFRQWdDaUFWVHhzaUZTRWpJQVlnQ0NnQzNBRWlDbXNpRGtFQUlBWWdEazhiSWdaQkFtc2lEa0VBSUFZZ0RrOGJJZzRoUFVGL0lBOGdHMnNpQmtFQUlBWWdEMDBiSWdaQkFtb2lEeUFHSUE5TEd5SUdJQklnQmlBU1NSc2lHeUUrUVg4Z0VTQUtheUlHUVFBZ0JpQVJUUnNpQmtFQ2FpSUtJQVlnQ2tzYklnWWdMQ0FHSUN4Skd5SWNJVDhnUndSQUlCVWhQU0FjSVQ0Z0d5RS9JQTRoSXdzZ1NDQXRJQmdiSVVrZ0RDQXJJQzhiSVJnZ0VpQWNhaUZRSUE0Z0Vtb2hVU0FuQkVBZ0ZDQVdRUU4wSWdacUlrVkJCR29nT3lBdVFRTjBJZ3BxSWxJZ0ZpQXVTQ0lNR3lGVElBWWdKR29pQmlBbUlDNGdKaUF1U0JzaUR5QUhJQk1nQnlBVFNSdEJBaUFCSUFGQkFrOGJhaUlCYWlJVElBZHJRUUpySWhGQkEzUWlLMm9nQmtrZ0tTQUhJQUZyUVFOMGFpSUJJQ3RxSUFGSmNpQVJRZi8vLy84QlMzSWhWQ0EwSUJwQkFXc2dHaUEwU2hzaEwwRUFJUkVnR2tFQlNpQXVRUUJLY2lGVklDUWdQRUVDZENJQmF5QVFRUU4wYWlGV0lBRWdSV29oVnlBV0lBZEJmM01nRTJvaVNrRjhjU0l5YWlFNElCWkJBV29pRXlBeWFpRkNJQm9nTkdvaFdDQVFJQnBxSVZrZ0Z2MFIvUXdBQUFBQUFRQUFBQUlBQUFBREFBQUEvYTRCSVlNQklCUWdHRUVDZEdvaFdpQkJJQnBCQTNRaUFXb2hTeUFCSUR0cUlVd2dDaUJCYWlGTklCcEZJQzVCQVVaeElWc2dGQ0JKUVFKMElnRnFJVndnQVNBN2FpRmRJQlA5RWYwTUFBQUFBQUVBQUFBQ0FBQUFBd0FBQVAydUFTR0VBU0E3SUJZZ0xpQU1HMEVEZEdvaFhnTkFBa0FDUUNBUklCdEpJQkVnRlU5eERRQWdFU0JRU1NBUklGRlBjUTBBSUJGQkFXb2hLd3dCQ3lBdElFaExCRUFnWFVFQU5nSUFJRnhCQURZQ0FBc2dPU0FXSUJFZ0ppQVJRUUZxSWlzZ1YwRUNRUUFRRnlBNUlGa2dFU0JZSUNzZ1ZrRUNRUUFRRndKQUFrQUNRQ0E4UlFSQUlGVkZEUU1nRmlBbVRnMENBa0FDUUNBV1FRQktCRUFnWGlnQ0FDRUhEQUVMSUNRb0FnQWlCeUVCSUJaQkFFZ05BUXNnQnlFQklGTW9BZ0FoQndzZ1JTQkZLQUlBSUFFZ0IycEJBbXBCQW5Wck5nSUFJQk1pQnlBUFRnMEJRUUFoQnlDRUFTR0FBU0NEQVNHQ0FTQVRJUUVnRmlFS0lFcEJGRWtnVkhKRkJFQURRQ0FVSUlBQlFRSDlxd0VpZ1FIOUd3QkJBblJxSWdFZ0ZDQ0JBZjBiQTBFQ2RHb2lCaUFVSUlFQi9Sc0NRUUowYWlJS0lCUWdnUUg5R3dGQkFuUnFJZ3dnQWYwSkFnRDlWZ0lBQWYxV0FnQUMvVllDQUFNZ0ZDQ0NBVUVCL2FzQi9Rd0JBQUFBQVFBQUFBRUFBQUFCQUFBQS9WQWloUUg5R3dOQkFuUnFJQlFnaFFIOUd3SkJBblJxSUJRZ2hRSDlHd0ZCQW5ScUlCUWdoUUg5R3dCQkFuUnEvUWtDQVAxV0FnQUIvVllDQUFMOVZnSUFBeUFVSUlFQi9Rd0JBQUFBQVFBQUFBRUFBQUFCQUFBQS9WQWlnUUg5R3dOQkFuUnFJQlFnZ1FIOUd3SkJBblJxSUJRZ2dRSDlHd0ZCQW5ScUlCUWdnUUg5R3dCQkFuUnEvUWtDQVAxV0FnQUIvVllDQUFMOVZnSUFBLzJ1QWYwTUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQVAydUFVRUMvYXdCL2JFQklvRUIvVm9DQUFBZ0RDQ0JBZjFhQWdBQklBb2dnUUg5V2dJQUFpQUdJSUVCL1ZvQ0FBTWdnZ0g5REFRQUFBQUVBQUFBQkFBQUFBUUFBQUQ5cmdFaGdnRWdnQUg5REFRQUFBQUVBQUFBQkFBQUFBUUFBQUQ5cmdFaGdBRWdCMEVFYWlJSElESkhEUUFMSUVJaEFTQTRJUW9nRHlFSElESWdTa1lOQWdzRFFDQVVJQUZCQTNScUlnY2dCeWdDQUNBVUlBcEJBM1JxS0FJRUlBY29BZ1JxUVFKcVFRSjFhellDQUNBQklncEJBV29pQVNBUFJ3MEFDeUFQSVFjTUFRc0NRQ0JiUlFSQUlCWWlCeUFtVGcwQkEwQWdGQ0FIUVFOMGFpSUJLQUlFSVFZZ0FTQUdBbjhDUUNBSFFRQk9CRUFnQVNCTklBY2dMa2diS0FJQUlUb2dCMEVCYWlFQkRBRUxJQlFvQWdBaE9rRUFJUUVnRkNBSFFRRnFJZ2NOQVJvTElBRWdMazRFUUNBQklRY2dUUXdCQ3lBVUlBRWlCMEVEZEdvTEtBSUFJRHBxUVFKcVFRSjFhellDQkNBSElDWklEUUFMREFFTElCUWdGQ2dDQUVFQ2JUWUNBQXdEQ3lBUUlnY2dORTROQWdOQUlCUWdCMEVEZEdvaUFTZ0NBQ0VLQW44Z0IwRUFTQVJBSUNRb0FnQWhCaUFrREFFTElCUWdCMEVEZEdwQkJHb2dUQ0FISUJwSUd5Z0NBQ0VHSUNRZ0IwVU5BQm9nVENBQlFRUnJJQWNnR2tvYkN5RU1JQUVnRENnQ0FDQUdha0VCZFNBS2FqWUNBQ0FIUVFGcUlnY2dORWNOQUFzTUFnc2dCeUFtVGcwQUEwQWdGQ0FIUVFOMGFpSUJJQUVvQWdBQ2Z3SkFJQWRCQUVvRVFDQTdJQWNnTGlBSElDNUlHMEVEZEdvb0FnQWhDZ3dCQ3lBa0tBSUFJUW9nSkNBSFFRQklEUUVhQ3lCU0lBY2dMazROQUJvZ0ZDQUhRUU4wYWtFRWFnc29BZ0FnQ21wQkFtcEJBblZyTmdJQUlBZEJBV29pQnlBbVJ3MEFDd3NnRUNBMFRnMEFJQzhnRUNJQklnZEtCRUFEUUNBVUlBZEJBM1JxSWdFZ0FTZ0NCQ0FVSUFkQkFXb2lCMEVEZEdvb0FnQWdBU2dDQUdwQkFYVnFOZ0lFSUFjZ0wwY05BQXNnTHlFQkN5QUJJRFJPRFFBRFFBSi9Ba0FnQVNJSFFRQk9CRUFnRkNBQlFRTjBhaUJMSUFFZ0drZ2JLQUlBSVF3Z0FVRUJhaUVLREFFTElCUW9BZ0FoREVFQUlRb2dGQ0FIUVFGcUlnRU5BUm9MSUFvZ0drNEVRQ0FLSVFFZ1N3d0JDeUFVSUFvaUFVRURkR29MSVFZZ0ZDQUhRUU4wYWlJSElBY29BZ1FnQmlnQ0FDQU1ha0VCZFdvMkFnUWdBU0EwU0EwQUN3c2dPU0FZSUJFZ1NTQXJJRnBCQVVFQVFRQVFIMFVOQmdzZ0t5SVJJQ2RIRFFBTEN5QUlRWmdCYWlFSUlENUJBWFFpQVNBL1FRRjBRUUZ5SWdjZ0FTQUhTeHNpQVNBbklBRWdKMGtiSVVnZ1F5QVZRUVYwSWdGcUlEc2dMRUVGZENJSGFpQVZJQ3hJSWdZYklVb2dBU0FmYWlBSElFRnFJQVliSVVzZ0FTQWdhaUFISUVScUlBWWJJVXdnQVNBMmFpQUhJRGRxSUFZYklVMGdIQ0FTUVFGcklCSWdIRW9iSVF3Z0xFRUFTaUlQSUJKQkFVcHlJVklnQVNBVWFpSXJJRWRCQkhScUlWTWdLU0FTUVFOMElocEJDR3NpUGtFQUlCSkJBRXdiUVFKMElncHFJVlFnQ2lBcWFpRlZJQW9nSkdvaFZpQUtJQlJxSVZjZ0tVRUFJQ3hCQTNRaUNrRUlheUkvSUE4YlFRSjBJZzlxSVZnZ0R5QXFhaUZaSUE4Z0pHb2hXaUFQSUJScUlWc2dGRUVFSUVkQkFuUnJRUUowYWlBT1FRVjBhaUZjSUJzZ0xDQWJJQ3hJR3lFUElCVkJBV29oRUNBVUlDTkJBWFFpRmlBOVFRRjBRUUZ5SWhNZ0V5QVdTeHNpWFVFRWRHb2hYaUFCSUNscUlUMGdBU0FxYWlFaklBRWdKR29oTHlBYVFRRnJJVGdnR2tFQ2F5RkNJQnBCQTJzaExpQVVJQkpCQlhScUlXRWdHa0VFYXlFMElBcEJCV3NoWWlBS1FRWnJJV01nQ2tFSGF5RmtJQkpGSUN4QkFVWnhJV1VnS1NBSFFSQnJJZ0ZxSVNZZ0FTQXFhaUU2SUFFZ0pHb2hQQ0FCSUJScUlVVWdLU0ErUVFKMElnRnFJV2dnQVNBcWFpRnBJQUVnSkdvaGFpQUJJQlJxSVdzZ095QVZJQ3dnQmh0QkJYUWlBV29oYkNBQklFRnFJUk1nQVNCRWFpRVJJQUVnTjJvaGJTQXBJRDlCQW5RaUFXb2hiaUFCSUNwcUlXOGdBU0FrYWlGd0lBRWdGR29oY1FOQUFrQUNRQUovQWtBZ0dDSVdJRWxKQkVBZ09TQVdJQlZCQkNCSklCWnJJZ0VnQVVFRVR4c2dGbW9pR0NBYklGTkJBVUVJRUJjZ09TQVdJRkVnR0NCUUlGeEJBVUVJRUJjZ1IwVUVRQ0JTUlEwRklCVWdHMDROQkFKL0lCVkJBRW9FUUNCdEtBSUFJUWNnRXlFR0lCRWhDaUJzREFFTElEWW9BZ0FoQnlBVlFRQklEUU1nSHlFR0lDQWhDaUJEQ3lGNUlDc2dLeWdDQUNBSElFMG9BZ0JxUVFKcVFRSjFhellDQUNBdklDOG9BZ0FnQ2lnQ0FDQk1LQUlBYWtFQ2FrRUNkV3MyQWdBZ0l5QWpLQUlBSUFZb0FnQWdTeWdDQUdwQkFtcEJBblZyTmdJQUlFb29BZ0FoQnlCNUtBSUFEQU1MSUdVRVFDQVVJQlFvQWdCQkFtMDJBZ0FnSkNBa0tBSUFRUUp0TmdJQUlDb2dLaWdDQUVFQ2JUWUNBQ0FwSUNrb0FnQkJBbTAyQWdBTUJRc2dHeUFWSWdkS0JFQURRQ0FIUVFOMElRRUNmd0pBSUFkQkFFZ0VRQ0FIUVg5R0RRRWdGQ0FCUVFKMGFpSUJJQUVvQWhBZ0ZDZ0NBRUVCZEVFQ2FrRUNkV3MyQWhBZ0FTQUJLQUlVSUNRb0FnQkJBWFJCQW1wQkFuVnJOZ0lVSUFFZ0FTZ0NHQ0FxS0FJQVFRRjBRUUpxUVFKMWF6WUNHQ0FwS0FJQVFRRjBRUUpxSVFZZ0FVRWNhZ3dDQ3lBc0lBZEJBV29pQmt3RVFDQVVJQUZCQW5ScUlnb2dDaWdDRUNBVUlBRWdQeUFISUN4SUlnWWJRUUowYWlnQ0FDQnhLQUlBYWtFQ2FrRUNkV3MyQWhBZ0NpQUtLQUlVSUJRZ0FVRUJjaUJrSUFZYlFRSjBhaWdDQUNCd0tBSUFha0VDYWtFQ2RXczJBaFFnQ2lBS0tBSVlJQlFnQVVFQ2NpQmpJQVliUVFKMGFpZ0NBQ0J2S0FJQWFrRUNha0VDZFdzMkFoZ2dGQ0FCUVFOeUlHSWdCaHRCQW5ScUtBSUFJRzRvQWdCcVFRSnFJUVlnQ2tFY2Fnd0NDeUFVSUFGQkFuUnFJZ0VnQVNnQ0VDQUJLQUlBSUJRZ0JrRUZkR29pQmlnQ0FHcEJBbXBCQW5Wck5nSVFJQUVnQVNnQ0ZDQUJLQUlFSUFZb0FnUnFRUUpxUVFKMWF6WUNGQ0FCSUFFb0FoZ2dBU2dDQ0NBR0tBSUlha0VDYWtFQ2RXczJBaGdnQVNnQ0RDQUdLQUlNYWtFQ2FpRUdJQUZCSEdvTUFRc2dOeUEzS0FJQUlCUW9BZ0FnV3lnQ0FHcEJBbXBCQW5Wck5nSUFJRVFnUkNnQ0FDQWtLQUlBSUZvb0FnQnFRUUpxUVFKMWF6WUNBQ0JCSUVFb0FnQWdLaWdDQUNCWktBSUFha0VDYWtFQ2RXczJBZ0FnS1NnQ0FDQllLQUlBYWtFQ2FpRUdJRHNMSWdFZ0FTZ0NBQ0FHUVFKMWF6WUNBQ0FIUVFGcUlnY2dHMGNOQUFzTElCd2dEaUlIVEEwRUEwQWdCMEVEZENFQkFuOGdCMEVBU0FSQUlCUWdBVUVDZEdvaUFTQUJLQUlBSURZb0FnQkJBWFJCQVhWcU5nSUFJQUVnQVNnQ0JDQVVLQUlVUVFGMFFRRjFhallDQkNBQklBRW9BZ2dnRkNnQ0dFRUJkRUVCZFdvMkFnZ2dGQ2dDSEVFQmRDRUtJQUZCREdvTUFRc2dCd1JBSUJRZ0FVRUNkR29pQmlBR0tBSUFJR0VnQmlBSElCSktJakliUVJCcktBSUFJQlFnQVVFRWNpQTBJQWNnRWtnaUNodEJBblJxS0FJQWFrRUJkV28yQWdBZ0JpQUdLQUlFSUVRZ0dpQUJJREliUVFKMElqSnFLQUlBSUJRZ0FVRUZjaUF1SUFvYlFRSjBhaWdDQUdwQkFYVnFOZ0lFSUFZZ0JpZ0NDQ0F5SUVGcUtBSUFJQlFnQVVFR2NpQkNJQW9iUVFKMGFpZ0NBR3BCQVhWcU5nSUlJRElnTzJvb0FnQWdGQ0FCUVFkeUlEZ2dDaHRCQW5ScUtBSUFhaUVLSUFaQkRHb01BUXNnRkNBVUtBSUFJRFlvQWdBZ0ZFRUVJRFFnQnlBU1NDSUJHMEVDZEdvb0FnQnFRUUYxYWpZQ0FDQWtJQ1FvQWdBZ0ZDZ0NGQ0FVUVFVZ0xpQUJHMEVDZEdvb0FnQnFRUUYxYWpZQ0FDQXFJQ29vQWdBZ0ZDZ0NHQ0FVUVFZZ1FpQUJHMEVDZEdvb0FnQnFRUUYxYWpZQ0FDQVVLQUljSUJSQkJ5QTRJQUViUVFKMGFpZ0NBR29oQ2lBcEN5SUJJQUVvQWdBZ0NrRUJkV28yQWdBZ0IwRUJhaUlISUJ4SERRQUxEQVFMSUMwaEdpQW5JUklnUmtFQmFpSkdJQjVIRFFVTUJnc2dLeUFyS0FJQUlBZEJBWFJCQW1wQkFuVnJOZ0lBSUM4Z0x5Z0NBQ0FnS0FJQVFRRjBRUUpxUVFKMWF6WUNBQ0FqSUNNb0FnQWdIeWdDQUVFQmRFRUNha0VDZFdzMkFnQWdReWdDQUNJSEN5RUJJRDBnUFNnQ0FDQUJJQWRxUVFKcVFRSjFhellDQUNBVklRWWdFQ0lCSWdjZ0QwZ0VRQU5BSUJRZ0FVRUZkR29pQnlBSC9RQUNBQ0EySUFaQkJYUnEvUUFDQUNBSC9RQUNFUDJ1QWYwTUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQVAydUFVRUMvYXdCL2JFQi9Rc0NBQ0FCSWdaQkFXb2lBU0FQUncwQUN5QVBJUWNMSUFjZ0cwNE5BQU5BSUFkQkEzUWhBU0FISUN4SUlRWUNRQ0FIUVFCTUJFQWdOaWdDQUNFS0lBZEJBRTRFUUNBVUlBRkJBblFpQVdvaU1pQXlLQUlBSUFvZ0FTQTJhaUJGSUFZYktBSUFha0VDYWtFQ2RXczJBZ0FnQVNBa2FpSUtJQW9vQWdBZ0lDZ0NBQ0FCSUNCcUlEd2dCaHNvQWdCcVFRSnFRUUoxYXpZQ0FDQUJJQ3BxSWdvZ0NpZ0NBQ0FmS0FJQUlBRWdIMm9nT2lBR0d5Z0NBR3BCQW1wQkFuVnJOZ0lBSUVNb0FnQWdBU0JEYWlBbUlBWWJLQUlBYWtFQ2FpRUdJQUVnS1dvaEFRd0NDeUFVSUFGQkFuUWlBV29pQmlBR0tBSUFJQXBCQVhSQkFtcEJBblZyTmdJQUlBRWdKR29pQmlBR0tBSUFJQlFvQWhSQkFYUkJBbXBCQW5Wck5nSUFJQUVnS21vaUJpQUdLQUlBSUJRb0FoaEJBWFJCQW1wQkFuVnJOZ0lBSUFFZ0tXb2hBU0FVS0FJY1FRRjBRUUpxSVFZTUFRc2dGQ0FISUN3Z0JodEJBM1JCQkd0QkFuUWlDbW9vQWdBaE1pQUdSUVJBSUJRZ0FVRUNkQ0lCYWlJR0lBWW9BZ0FnTWlCRktBSUFha0VDYWtFQ2RXczJBZ0FnQVNBa2FpSUdJQVlvQWdBZ0NpQWthaWdDQUNBOEtBSUFha0VDYWtFQ2RXczJBZ0FnQVNBcWFpSUdJQVlvQWdBZ0NpQXFhaWdDQUNBNktBSUFha0VDYWtFQ2RXczJBZ0FnQVNBcGFpRUJJQW9nS1dvb0FnQWdKaWdDQUdwQkFtb2hCZ3dCQ3lBVUlBRkJBblFpQVdvaUJpQUdLQUlBSURJZ0JpZ0NFR3BCQW1wQkFuVnJOZ0lBSUFFZ0pHb2lCaUFHS0FJQUlBb2dKR29vQWdBZ0JpZ0NFR3BCQW1wQkFuVnJOZ0lBSUFFZ0ttb2lCaUFHS0FJQUlBb2dLbW9vQWdBZ0JpZ0NFR3BCQW1wQkFuVnJOZ0lBSUFvZ0tXb29BZ0FnQVNBcGFpSUJLQUlRYWtFQ2FpRUdDeUFCSUFFb0FnQWdCa0VDZFdzMkFnQWdCMEVCYWlJSElCdEhEUUFMQ3lBT0lCeE9EUUFnRENBT0lnRWlCMG9FUUFOQUlCUWdBVUVGZEdvaUJ5QUgvUUFDSUNBSC9RQUNBUDJ1QVVFQi9hd0JJQWY5QUFJUS9hNEIvUXNDRUNBQlFRRnFJZ0VnREVjTkFBc2dEQ0VIQ3lBSElCeE9EUUFEUUNCRElBZEJBM1FpQVVFQ2RHb2lNZ0ovSUFkQkFFZ0VRQ0FVS0FJQUlRWWdCMEYvUndSQUlEWWdBVUVDZENJQmFpSUtJQW9vQWdBZ0JtbzJBZ0FnQVNBZ2FpSUdJQVlvQWdBZ0pDZ0NBR28yQWdBZ0FTQWZhaUlCSUFFb0FnQWdLaWdDQUdvMkFnQWdLU2dDQUF3Q0N5QTJJQUZCQW5RaUFXb2lDaUFLS0FJQUlGY29BZ0FnQm1wQkFYVnFOZ0lBSUFFZ0lHb2lCaUFHS0FJQUlGWW9BZ0FnSkNnQ0FHcEJBWFZxTmdJQUlBRWdIMm9pQVNBQktBSUFJRlVvQWdBZ0tpZ0NBR3BCQVhWcU5nSUFJRlFvQWdBZ0tTZ0NBR3BCQVhVTUFRc2dBU0ErSUFjZ0VrZ2JJUVlnRWlBSFFRRnFJbVpNQkVBZ05pQUJRUUowSWdwcUlnRWdBU2dDQUNCcktBSUFJQlFnQmtFQ2RHb2lBU2dDQUdwQkFYVnFOZ0lBSUFvZ0lHb2lCaUFHS0FJQUlHb29BZ0FnQVNnQ0JHcEJBWFZxTmdJQUlBb2dIMm9pQmlBR0tBSUFJR2tvQWdBZ0FTZ0NDR3BCQVhWcU5nSUFJR2dvQWdBZ0FTZ0NER3BCQVhVTUFRc2dOaUFCUVFKMElncHFJZ0VnQVNnQ0FDQVVJR1pCQlhScUlnRW9BZ0FnRkNBR1FRSjBhaUlHS0FJQWFrRUJkV28yQWdBZ0NpQWdhaUptSUdZb0FnQWdBU2dDQkNBR0tBSUVha0VCZFdvMkFnQWdDaUFmYWlJS0lBb29BZ0FnQVNnQ0NDQUdLQUlJYWtFQmRXbzJBZ0FnQVNnQ0RDQUdLQUlNYWtFQmRRc2dNaWdDQUdvMkFnQWdCMEVCYWlJSElCeEhEUUFMQ3lBNUlCWWdYU0FZSUVnZ1hrRUJRUVJCQUJBZkRRQUxDd3dDQ3lBVUVBbEJBU0VIQ3lBNUlEVkJFR3NvQWdBaUFTQmZLQUlBSWdacklEVkJER3NvQWdBZ1lDZ0NBQ0lLYXlBMVFRaHJLQUlBSWdnZ0Jtc2dOVUVFYXlnQ0FDQUtheUFKS0FJMFFRRWdDQ0FCYXhBWElEa1FIUXdEQ3lBNUVCMGdGQkFKUVFBaEJ3d0NDeUE1RUIxQkFDRUhEQUVMUVFBaEJ5QU9FQm9nRHhBSkN5QWxRU0JxSkFBZ0J3MEJEQVVMSUFFaENFRUFJUTc5REFBQUFBQUFBQUFBQUFBQUFBQUFBQUFoZ0FFakFFRkFhaUljSkFBQ1FBSi9Ba0FnR1NnQ1FBUkFJQWtvQWh3aUZTQUpLQUlZUVpnQmJHb2lBVUdZQVdzb0FnQWhHaUFCUVpBQmF5Z0NBQ0ViSUJVb0FnUWhEQ0FWS0FJTUlYb2dGU2dDQUNFUUlCVW9BZ2doRTBFQklRY2dHU2dDTENJZktBSUVJU3NnQ0VFQlJnMERRUUFoQmlBSVFRRnJJaFloQ0NBVklRRUNRQ0FXUVFSUEJFQWdGa0VEY1NFSUlBRWdGa0Y4Y1NJS1FaZ0JiR29oQVVFQUlRY0RRQ0NBQVNBVklBZEJtQUZzYWlJR1FlZ0VhaUFHUWRBRGFpQUdRYmdDYWlBRy9Ra0NvQUg5VmdJQUFmMVdBZ0FDL1ZZQ0FBTWdCa0hnQkdvZ0JrSElBMm9nQmtHd0Ftb2dCdjBKQXBnQi9WWUNBQUg5VmdJQUF2MVdBZ0FEL2JFQi9ia0JJQVpCN0FScUlBWkIxQU5xSUFaQnZBSnFJQWI5Q1FLa0FmMVdBZ0FCL1ZZQ0FBTDlWZ0lBQXlBR1FlUUVhaUFHUWN3RGFpQUdRYlFDYWlBRy9Ra0NuQUg5VmdJQUFmMVdBZ0FDL1ZZQ0FBUDlzUUg5dVFFaGdBRWdCMEVFYWlJSElBcEhEUUFMSUlBQklJQUJJSUFCL1EwSUNRb0xEQTBPRHdBQkFnTUFBUUlEL2JrQklvQUJJSUFCSUlBQi9RMEVCUVlIQUFFQ0F3QUJBZ01BQVFJRC9ia0IvUnNBSVFZZ0NpQVdSZzBCQ3dOQUlBWWdBU2dDb0FFZ0FTZ0NtQUZySWdjZ0JpQUhTeHNpQnlBQktBS2tBU0FCS0FLY0FXc2lCaUFHSUFkSkd5RUdJQUZCbUFGcUlRRWdDRUVCYXlJSURRQUxDMEVBSVFjZ0JrSC8vLzgvU3cwRElCd2dCa0VGZENKR0VCWWlBVFlDSUNBQlJRMERJQndnQVRZQ0FDQVdSUVJBUVFFaEJ5QUJFQWtNQkFzZ2VpQU1heUVQSUJNZ0VHc2hEa0VDSUN0QkFYWWlBU0FCUVFKTkd5RkhJQWtvQWlRaUNpQWJRUnhzSWswZ0drRWNiQ0pmYTJvaEx5QUtJQnRCR0d3aVlDQWFRUmhzSWxKcmFpRTlJQW9nRzBFVWJDSlRJQnBCRkd3aVZHdHFJVDRnQ2lBYlFRUjBJbFVnR2tFRWRDSldhMm9oUHlBS0lCdEJER3dpVnlBYVFReHNJbGhyYWlFNElCc2dHbXNpRUVFSGJDRkpJQkJCQm13aFJTQVFRUVZzSVRJZ0VFRURiQ0ZJSUJCQkFYUWhVQ0FLSUJCQkEzUWlVV29oUWlBS0lCQkJBblFpUVdvaEZDQVFRUVYwSVZrZ0VQMFJJWVFCQTBBZ0hDQVBOZ0lJSUJ3Z0RpSUJOZ0lvSUJVb0Fwd0JJU1FnRlNnQ3BBRWhLU0FWS0FLZ0FTRWVJQlVvQXBnQklTQWdIRUVBTmdJNElCd2dBVFlDTkNBY1FRQTJBakFnSENBZ1FRSnZJaGcyQWl3Z0hDQWVJQ0JySWc0Z0FXc2lFellDUENBY0lCTTJBaVFDUUNBclFRSklJbHBGSUNrZ0pHc2lEMEVQUzNGRkJFQkJBQ0VISUFvaEJpQVBRUWhKRFFFZ1B5QUdJRk1nSGtFQ2RDSUJhaUJVSUNCQkFuUWlDR3ByYWlJNlNTQStJQVlnQVNCVmFpQUlJRlpxYTJvaVEwbHhJRDBnUTBrZ1B5QUdJQUVnWUdvZ0NDQlNhbXRxSWp4SmNYSWdMeUJEU1NBL0lBWWdBU0JOYWlBSUlGOXFhMm9pUkVseGNpRmJJRDBnUkVrZ0x5QThTWEVoWENBK0lFUkpJQzhnT2tseElWMGdQQ0ErU3lBNklEMUxjU0ZlSUVJZ0JpQUJJRmRxSUFnZ1dHcHJhaUpLU1NBNElBWWdBU0JSYWlBSWEyb2lTMGx4SVdFZ0ZDQktTU0E0SUFZZ0d5QWVhaUFhSUNCcWEwRUNkR29pVEVseElXSWdGQ0JMU1NCQ0lFeEpjU0ZqSUFZZ0FTQUlhMm9oS2lBT1FYeHhJUWdnSENnQ0lDSVRJQTVCQlhScUloRkJFR3NoSlNBUlFSUnJJU3dnRVVFWWF5RXVJQkZCSEdzaE5pQVJRUVJySVRrZ0VVRUlheUU3SUJGQkRHc2hORUVBSVJnZ0UwRU1haUlqSUI0Z0lFRi9jMm9pREVFRmRDSUJhaUFqU1NBTVFmLy8vejlMSWd3Z0UwRUVhaUloSUFGcUlDRkpJQUVnRTJvZ0UwbHljaUFUUVFocUlpSWdBV29nSWtseWNpQU9RY2dDU1hJaFpDQVRRUlJxSWlnZ0FXb2dLRWtnRTBFUWFpSW5JQUZxSUNkSmNpQU1jaUFUUVJocUlqQWdBV29nTUVseUlCTkJIR29pTFNBQmFpQXRTWElnRGtIVUFFbHlJV1VEUUNBSElRd2dIRUVnYWlJQklBWWdFRUVJRURRZ0FSQWNBa0FnRGtVTkFDQVlJRmxzSVFkQkFDRUJBa0FDUUNCa0RRQWdZU0FHSURaSklCTWdCeUFxYWlJM1NYRWdCaUFISUVwcUloSkpJQ29nT0V0eElCUWdLa2tnQmlBSElFeHFJaVpKY1NBR0lBY2dTMm9pTlVrZ0tpQkNTM0Z5Y25JZ0JpQXVTU0FoSURkSmNYSWdCaUFzU1NBaUlEZEpjWElnQmlBbFNTQWpJRGRKY1hJZ1kzSWdZbklnRXlBbVNTQUhJQlJxSWpjZ05rbHhjaUFoSUNaSklDNGdOMHR4Y2lBaUlDWkpJQ3dnTjB0eGNpQWpJQ1pKSUNVZ04wdHhjbklOQUNBVElEVkpJQWNnUW1vaUppQTJTWEVOQUNBaElEVkpJQ1lnTGtseERRQWdJaUExU1NBbUlDeEpjUTBBSUNNZ05Va2dKU0FtUzNFTkFDQUhJRGhxSWlZZ05ra2dFaUFUUzNFTkFDQW1JQzVKSUJJZ0lVdHhEUUFnSmlBc1NTQVNJQ0pMY1EwQUlCSWdJMHNnSlNBbVMzRU5BQU5BSUFZZ0FVRUNkR29nRXlBQlFRVjBhaUlTL1FrQ0FDQVNLZ0lnL1NBQklCSkJRR3NxQWdEOUlBSWdFaW9DWVAwZ0EvMExBZ0FnQmlBQklCQnFRUUowYWlBUy9Ra0NCQ0FTS2dJay9TQUJJQklxQWtUOUlBSWdFaW9DWlAwZ0EvMExBZ0FnQmlBQklGQnFRUUowYWlBUy9Ra0NDQ0FTS2dJby9TQUJJQklxQWtqOUlBSWdFaW9DYVAwZ0EvMExBZ0FnQmlBQklFaHFRUUowYWlBUy9Ra0NEQ0FTS2dJcy9TQUJJQklxQWt6OUlBSWdFaW9DYlAwZ0EvMExBZ0FnQVVFRWFpSUJJQWhIRFFBTElBZ2lBU0FPUmcwQkN3TkFJQVlnQVVFQ2RHb2dFeUFCUVFWMGFpSVNLZ0lBT0FJQUlBWWdBU0FRYWtFQ2RHb2dFaW9DQkRnQ0FDQUdJQUVnVUdwQkFuUnFJQklxQWdnNEFnQWdCaUFCSUVocVFRSjBhaUFTS2dJTU9BSUFJQUZCQVdvaUFTQU9SdzBBQ3d0QkFDRUJBa0FnWlEwQUlGd2dCeUErYWlJU0lEUkpJQ2NnQnlBNmFpSW1TWEVnV3lBSElEOXFJalVnTkVrZ0p5QUhJRU5xSWpkSmNYSWdLQ0EzU1NBMUlEdEpjWElnTUNBM1NTQTFJRGxKY1hJZ0xTQTNTU0FSSURWTGNYSWdYbklnWFhKeUlCSWdPMGtnSmlBb1MzRnlJQklnT1VrZ0ppQXdTM0Z5SUNZZ0xVc2dFU0FTUzNGeWNnMEFJQWNnUFdvaUVpQTBTU0FuSUFjZ1BHb2lKa2x4RFFBZ0VpQTdTU0FtSUNoTGNRMEFJQklnT1VrZ0ppQXdTM0VOQUNBbUlDMUxJQkVnRWt0eERRQWdCeUF2YWlJU0lEUkpJQ2NnQnlCRWFpSUhTWEVOQUNBU0lEdEpJQWNnS0V0eERRQWdFaUE1U1NBSElEQkxjUTBBSUFjZ0xVc2dFU0FTUzNFTkFBTkFJQVlnQVNCQmFrRUNkR29nRXlBQlFRVjBhaUlIL1FrQ0VDQUhLZ0l3L1NBQklBY3FBbEQ5SUFJZ0J5b0NjUDBnQS8wTEFnQWdCaUFCSURKcVFRSjBhaUFIL1FrQ0ZDQUhLZ0kwL1NBQklBY3FBbFQ5SUFJZ0J5b0NkUDBnQS8wTEFnQWdCaUFCSUVWcVFRSjBhaUFIL1FrQ0dDQUhLZ0k0L1NBQklBY3FBbGo5SUFJZ0J5b0NlUDBnQS8wTEFnQWdCaUFCSUVscVFRSjBhaUFIL1FrQ0hDQUhLZ0k4L1NBQklBY3FBbHo5SUFJZ0J5b0NmUDBnQS8wTEFnQWdBVUVFYWlJQklBaEhEUUFMSUFnaUFTQU9SZzBCQ3dOQUlBWWdBU0JCYWtFQ2RHb2dFeUFCUVFWMGFpSUhLZ0lRT0FJQUlBWWdBU0F5YWtFQ2RHb2dCeW9DRkRnQ0FDQUdJQUVnUldwQkFuUnFJQWNxQWhnNEFnQWdCaUFCSUVscVFRSjBhaUFIS2dJY09BSUFJQUZCQVdvaUFTQU9SdzBBQ3dzZ0dFRUJhaUVZSUF4QkNHb2hCeUFHSUZGQkFuUnFJUVlnREVFUGFpQVBTUTBBQ3d3QkN5QVBJQTlCQTNZaUJ5QXJJQWNnSzBrYkloSnVRWGh4SVJFZ0QwRjRjU0VIUVFBaENDQUtJUVlEUUVFd0VBMGlERVVOQkNBTUlFWVFGaUlqTmdJQUlDTkZCRUFnSHhBYUlBd1FDVUVBREFZTElBd2dCallDS0NBTUlCQTJBaVFnRENBT05nSWdJQXdnRXpZQ0hDQU1RUUEyQWhnZ0RDQUJOZ0lVSUF4QkFEWUNFQ0FNSUJnMkFnd2dEQ0FCTmdJSUlBd2dFellDQkNBTUlBY2dDQ0FSYkdzZ0VTQUlRUUZxSWdnZ0VrWWJJaU0yQWl3Z0gwRU1JQXdRSmlBR0lCQWdJMnhCQW5ScUlRWWdDQ0FTUncwQUN5QWZFQm9MQWtBZ0J5QVBUdzBBSUJ4QklHb2lBU0FHSUJBZ0R5QUhheUlZRURRZ0FSQWNJQTVGRFFBZ0hDZ0NJQ0lqSUI1QkJYUkJBU0FZSUJoQkFVMGJJaEpCQW5ScUlDQkJCWFJyYWtFZ2F5RWVJQkpCQTNFaElDQVNRWHh4SVF3Z1FTQVNRUUZyYkNFaFFRQWhDQU5BSUNNZ0NFRUZkR29oRTBFQUlRY0NRQUpBSUJoQkJFa05BQ0FlSUFZZ0NFRUNkQ0lSYWlJQklBWWdFU0FoYW1vaUVTQUJJQkZKRzBzRVFDQWpJQUVnRVNBQklCRkxHMEVFYWtrTkFRc2dDUDBSSVlFQi9Rd0FBQUFBQVFBQUFBSUFBQUFEQUFBQUlZQUJRUUFoQVFOQUlBWWdnQUVnaEFIOXRRRWdnUUg5cmdFaWdnSDlHd0JCQW5ScUlCTWdBVUVDZEdyOUFBSUFJb01CL1I4QU9BSUFJQVlnZ2dIOUd3RkJBblJxSUlNQi9SOEJPQUlBSUFZZ2dnSDlHd0pCQW5ScUlJTUIvUjhDT0FJQUlBWWdnZ0g5R3dOQkFuUnFJSU1CL1I4RE9BSUFJSUFCL1F3RUFBQUFCQUFBQUFRQUFBQUVBQUFBL2E0QklZQUJJQUZCQkdvaUFTQU1SdzBBQ3lBTUlnY2dFa1lOQVF0QkFDRVJJQWNoQVNBZ0JFQURRQ0FHSUFFZ0VHd2dDR3BCQW5ScUlCTWdBVUVDZEdvcUFnQTRBZ0FnQVVFQmFpRUJJQkZCQVdvaUVTQWdSdzBBQ3dzZ0J5QVNhMEY4U3cwQUEwQWdCaUFCSUJCc0lBaHFRUUowYWlBVElBRkJBblJxS2dJQU9BSUFJQVlnQVVFQmFpSUhJQkJzSUFocVFRSjBhaUFUSUFkQkFuUnFLZ0lBT0FJQUlBWWdBVUVDYWlJSElCQnNJQWhxUVFKMGFpQVRJQWRCQW5ScUtnSUFPQUlBSUFZZ0FVRURhaUlISUJCc0lBaHFRUUowYWlBVElBZEJBblJxS2dJQU9BSUFJQmdnQVVFRWFpSUJSdzBBQ3dzZ0NFRUJhaUlJSUE1SERRQUxDeUFjSUE4Z0hDZ0NDQ0lNYXlJVE5nSUVJQlVvQXB3QklRRWdIRUVBTmdJUUlCd2dERFlDRkNBY1FRQTJBaGdnSENBVE5nSWNJQndnQVVFQ2J5SVlOZ0lNQWtBZ1drVWdEa0VQUzNGRkJFQWdDaUVCSUE1QkNFa05BU0FQUVg1eElTRWdEMEVCY1NFaUlCTkJmbkVoS0NBVFFRRnhJU2NnREVGK2NTRXdJQXhCQVhFaExTQXBJQ1JCZjNOcUlTTWdIQ2dDQUNJU0lCaEJCWFFpQjJvaElDQVNJQWRyUVNCcUlSNGdEQ0FRYkVFQ2RDRXFJQTRoQ0FOQVFRQWhCa0VBSVFjQ1FBSkFBa0FnREE0Q0FnRUFDd05BSUNBZ0JrRUdkR29pRVNBQklBWWdFR3hCQW5ScUlpWDlBQUlBL1FzQ0FDQVJJQ1g5QUFJUS9Rc0NFQ0FnSUFaQkFYSWlFVUVHZEdvaUpTQUJJQkFnRVd4QkFuUnFJaEg5QUFJUS9Rc0NFQ0FsSUJIOUFBSUEvUXNDQUNBR1FRSnFJUVlnQjBFQ2FpSUhJREJIRFFBTEN5QXRSUTBBSUNBZ0JrRUdkR29pQnlBQklBWWdFR3hCQW5ScUlnYjlBQUlBL1FzQ0FDQUhJQWI5QUFJUS9Rc0NFQXNDUUNBTUlBOUdEUUFnQVNBcWFpRUhRUUFoQmtFQUlSRWdEQ0FqUndSQUEwQWdIaUFHUVFaMGFpSWxJQWNnQmlBUWJFRUNkR29pTFAwQUFnRDlDd0lBSUNVZ0xQMEFBaEQ5Q3dJUUlCNGdCa0VCY2lJbFFRWjBhaUlzSUFjZ0VDQWxiRUVDZEdvaUpmMEFBaEQ5Q3dJUUlDd2dKZjBBQWdEOUN3SUFJQVpCQW1vaEJpQVJRUUpxSWhFZ0tFY05BQXNMSUNkRkRRQWdIaUFHUVFaMGFpSVJJQWNnQmlBUWJFRUNkR29pQi8wQUFnRDlDd0lBSUJFZ0IvMEFBaEQ5Q3dJUUN5QWNFQndDUUNBUFJRMEFRUUFoQmtFQUlRY2dJd1JBQTBBZ0FTQUdJQkJzUVFKMGFpSVJJQklnQmtFRmRHb2lKZjBBQWdEOUN3SUFJQkVnSmYwQUFoRDlDd0lRSUFFZ0JrRUJjaUlSSUJCc1FRSjBhaUlsSUJJZ0VVRUZkR29pRWYwQUFoRDlDd0lRSUNVZ0VmMEFBZ0Q5Q3dJQUlBWkJBbW9oQmlBSFFRSnFJZ2NnSVVjTkFBc0xJQ0pGRFFBZ0FTQUdJQkJzUVFKMGFpSUhJQklnQmtFRmRHb2lCdjBBQWdEOUN3SUFJQWNnQnYwQUFoRDlDd0lRQ3lBQlFTQnFJUUVnQ0VFSWF5SUlRUWRMRFFBTERBRUxRUUVnRGtFRGRpSUJJRWNnQVNCSFNSc2lDQ0FJUVFGTkd5RVJJQTRnQ0c1QmVIRWhFaUFPUVhoeElTQkJBQ0VISUFvaEFRTkFRVEFRRFNJR1JRMEVJQVlnUmhBV0loNDJBZ0FnSGtVRVFDQWZFQm9nQmhBSlFRQU1CZ3NnQmlBQk5nSW9JQVlnRURZQ0pDQUdJQTgyQWlBZ0JpQVROZ0ljSUFaQkFEWUNHQ0FHSUF3MkFoUWdCa0VBTmdJUUlBWWdHRFlDRENBR0lBdzJBZ2dnQmlBVE5nSUVJQVlnSUNBSElCSnNheUFTSUFkQkFXb2lCeUFJUmhzaUhqWUNMQ0FmUVEwZ0JoQW1JQUVnSGtFQ2RHb2hBU0FISUJGSERRQUxJQjhRR2dzQ1FDQU9RUWR4SWhKRkRRQWdHRUVGZENFZ0lCd29BZ0FoQ0FKQUlBeEZEUUFnQ0NBZ2FpRVJJQkpCQW5RaEdFRUFJUVlnREVFQlJ3UkFJQXhCZm5FaEhrRUFJUWNEUUNBUklBWkJCblJxSUFFZ0JpQVFiRUVDZEdvZ0dCQUxHaUFSSUFaQkFYSWlJMEVHZEdvZ0FTQVFJQ05zUVFKMGFpQVlFQXNhSUFaQkFtb2hCaUFIUVFKcUlnY2dIa2NOQUFzTElBeEJBWEZGRFFBZ0VTQUdRUVowYWlBQklBWWdFR3hCQW5ScUlCZ1FDeG9MQWtBZ0RDQVBSZzBBSUFnZ0lHdEJJR29oQnlBQklBd2dFR3hCQW5ScUlSRWdFa0VDZENFWVFRQWhCaUFNSUNrZ0pFRi9jMnBIQkVBZ0UwRitjU0VnUVFBaERBTkFJQWNnQmtFR2RHb2dFU0FHSUJCc1FRSjBhaUFZRUFzYUlBY2dCa0VCY2lJZVFRWjBhaUFSSUJBZ0hteEJBblJxSUJnUUN4b2dCa0VDYWlFR0lBeEJBbW9pRENBZ1J3MEFDd3NnRTBFQmNVVU5BQ0FISUFaQkJuUnFJQkVnQmlBUWJFRUNkR29nR0JBTEdnc2dIQkFjSUE5RkRRQWdFa0VDZENFSFFRQWhCaUFrUVFGcUlDbEhCRUFnRDBGK2NTRU1RUUFoRVFOQUlBRWdCaUFRYkVFQ2RHb2dDQ0FHUVFWMGFpQUhFQXNhSUFFZ0JrRUJjaUlUSUJCc1FRSjBhaUFJSUJOQkJYUnFJQWNRQ3hvZ0JrRUNhaUVHSUJGQkFtb2lFU0FNUncwQUN3c2dEMEVCY1VVTkFDQUJJQVlnRUd4QkFuUnFJQWdnQmtFRmRHb2dCeEFMR2dzZ0ZVR1lBV29oRlNBV1FRRnJJaFlOQUF0QkFRd0NDMEVCSVFjZ0NTZ0NIQ0lNSUFoQm1BRnNhaUlqUVpnQmF5SXZLQUlBSUNOQmtBRnJLQUlBUmcwQ0lDTkJsQUZySWowb0FnQWdJMEdNQVdzb0FnQkdEUUlnRENnQ0JDRVBJQXdvQWd3aEZpQU1LQUlBSVJBZ0RDZ0NDQ0VUSUFrb0FrUWhFaUFKS0FKQUlSRWdDU2dDUENFYUlBa29BamdoSHlBSklBZ1FWU0llUlFSQVFRQWhCd3dEQ3lBSVFRRkdCRUFnSGlBalFSQnJLQUlBSWdFZ0x5Z0NBQ0lHYXlBalFReHJLQUlBSUQwb0FnQWlDbXNnSTBFSWF5Z0NBQ0lJSUFacklDTkJCR3NvQWdBZ0Ntc2dDU2dDTkVFQklBZ2dBV3NRRnlBZUVCME1Bd3RCQUNFR0FrQUNRQ0FJUVFGcklncEJCRWtFUUNBS0lRY2dEQ0VCREFFTElBcEJBM0VoQnlBTUlBcEJmSEVpRlVHWUFXeHFJUUVEUUNDQUFTQU1JQTVCbUFGc2FpSUdRZWdFYWlBR1FkQURhaUFHUWJnQ2FpQUcvUWtDb0FIOVZnSUFBZjFXQWdBQy9WWUNBQU1nQmtIZ0JHb2dCa0hJQTJvZ0JrR3dBbW9nQnYwSkFwZ0IvVllDQUFIOVZnSUFBdjFXQWdBRC9iRUIvYmtCSUFaQjdBUnFJQVpCMUFOcUlBWkJ2QUpxSUFiOUNRS2tBZjFXQWdBQi9WWUNBQUw5VmdJQUF5QUdRZVFFYWlBR1Fjd0RhaUFHUWJRQ2FpQUcvUWtDbkFIOVZnSUFBZjFXQWdBQy9WWUNBQVA5c1FIOXVRRWhnQUVnRGtFRWFpSU9JQlZIRFFBTElJQUJJSUFCSUlBQi9RMElDUW9MREEwT0R3QUJBZ01BQVFJRC9ia0JJb0FCSUlBQklJQUIvUTBFQlFZSEFBRUNBd0FCQWdNQUFRSUQvYmtCL1JzQUlRWWdDaUFWUmcwQkN3TkFJQVlnQVNnQ29BRWdBU2dDbUFGcklnb2dCaUFLU3hzaUJpQUJLQUtrQVNBQktBS2NBV3NpQ2lBR0lBcExHeUVHSUFGQm1BRnFJUUVnQjBFQmF5SUhEUUFMQ3dKQUlBWkJnSUNBd0FCUERRQWdIQ0FHUVFWMEVCWWlJVFlDSUNBaFJRMEFJQndnSVRZQ0FBSkFJQWdFUUNBV0lBOXJJUW9nRXlBUWF5RUdJQ0ZCSUdvaFBpQUlyU0dIQVNBU3JTR0tBU0FSclNHTEFTQWFyU0dJQVNBZnJTR01BU0FKS0FJVUlrS3RJWTBCUWdFaGhnRURRQ0FjSUFvMkFnZ2dIQ0FHTmdJb0lBd29BcVFCSVFjZ0RDZ0NvQUVoQ0NBTUtBS2NBU0VCSUJ3Z0RDZ0NtQUVpRlVFQ2J5SWlOZ0lzSUJ3Z0FVRUNieUkvTmdJTUlCd2dDQ0FWYXlJZ0lBWnJJaWcyQWlRZ0hDQUhJQUZySWhNZ0Ntc2lPRFlDQkNBZkloWWhDQ0FhSWdFaERpQVJJZ2NoR0NBU0loVWhEd0pBSUlZQklJMEJVUTBBSUVJZ2hnR25heUVRUVFBaERrRUFJUWdnRmdSQVFuOGdFSzBpaVFHR1FuK0ZJSXdCZkNDSkFZaW5JUWdMSUJvRVFFSi9JQkN0SW9rQmhrSi9oU0NJQVh3Z2lRR0lweUVPQzBFQUlSVkJBQ0VISUJFRVFFSi9JQkN0SW9rQmhrSi9oU0NMQVh3Z2lRR0lweUVIQ3lBU0JFQkNmeUFRclNLSkFZWkNmNFVnaWdGOElJa0JpS2NoRlF0QkFDRVlRUUFoRmtFQklCQkJBV3QwSWhzZ0gwa0VRQ0FmSUJ0cnJVSi9JQkN0SW9rQmhrSi9oWHdnaVFHSXB5RVdDeUFSSUJ0TEJFQWdFU0FiYTYxQ2Z5QVFyU0tKQVlaQ2Y0VjhJSWtCaUtjaEdBdEJBQ0VQUVFBaEFTQWFJQnRMQkVBZ0dpQWJhNjFDZnlBUXJTS0pBWVpDZjRWOElJa0JpS2NoQVFzZ0VpQWJUUTBBSUJJZ0cydXRRbjhnRUswaWlRR0dRbitGZkNDSkFZaW5JUThMUVg4Z0dDQU1LQUswQVNJUWF5SWJRUUFnR0NBYlR4c2lHRUVFYWlJYklCZ2dHMHNiSWhnZ0tDQVlJQ2hKR3lJdFFYOGdCeUFNS0FMWUFTSVlheUliUVFBZ0J5QWJUeHNpQjBFRWFpSWJJQWNnRzBzYklnY2dCaUFHSUFkTEd5SXJJQ0liUVFGMElnY2dLeUF0SUNJYlFRRjBRUUZ5SWhzZ0J5QWJTeHNpS0NBZ1NTRVVJQllnRUdzaUIwRUFJQWNnRmswYklnZEJCR3NpRmtFQUlBY2dGazhiSWljZ0NDQVlheUlIUVFBZ0J5QUlUUnNpQjBFRWF5SUlRUUFnQnlBSVR4c2lNQ0FpRzBFQmRDSVlJREFnSnlBaUcwRUJkRUVCY2lJa1NTRXBJQTRnRENnQ3VBRWlGbXNpQjBFQUlBY2dEazBiSWdkQkJHc2lDRUVBSUFjZ0NFOGJJZ2doRUNBQklBd29BdHdCSWc1cklnZEJBQ0FCSUFkUEd5SUJRUVJySWdkQkFDQUJJQWRQR3lJQklRZEJmeUFWSUJackloWkJBQ0FWSUJaUEd5SVZRUVJxSWhZZ0ZTQVdTeHNpRlNBS0lBb2dGVXNiSWhZaEZVRi9JQThnRG1zaURrRUFJQTRnRDAwYklnNUJCR29pRHlBT0lBOUxHeUlPSURnZ0RpQTRTUnNpR3lFUElEOEVRQ0FCSVJBZ0ZpRVBJQnNoRlNBSUlRY0xJQ2dnSUNBVUd5RW9JQmdnSkNBcEd5RVlJQndnTFRZQ1BDQWNJQ2MyQWpnZ0hDQXJOZ0kwSUJ3Z01EWUNNQUpBSUJOQkNFa0VRRUVISVFaQkFDRU9EQUVMSUQ0Z0lrRUZkQ0lPYXlBblFRWjBhaUU0SUE0Z0lXb2dNRUVHZEdvaEZDQUdJQzFxSVMwZ0JpQW5haUVuSUFvZ0cyb2hKQ0FCSUFwcUlTa2dJU0FZUVFWMGFpRXFRUUFoRGdOQUFrQUNRQ0FPSUJaSklBNUJCM0lpQmlBSVQzRU5BQ0FPSUNSSklBWWdLVTl4RFFBZ0RrRUlhaUVPREFFTFFRZ2dFeUFPYXlJR0lBWkJDRThiSVNWQkFDRUdBMEFnSGlBd0lBWWdEbW9pSWlBcklDSkJBV29pTENBVUlBWkJBblFpTG1wQkVFRUFFQmNnSGlBbklDSWdMU0FzSUM0Z09HcEJFRUVBRUJjZ0JrRUJhaUlHSUNWSERRQUxJQnhCSUdvUUhDQWVJQmdnRGlBb0lBNUJDR29pRGlBcVFRaEJBVUVBRUI5RkRRVUxJQTVCQjNJaUJpQVRTUTBBQ3dzQ1FDQU9JQk5QRFFBZ0RpQVdTU0FHSUFoUGNVVUVRQ0FPSUFvZ0cycFBEUUVnQmlBQklBcHFTUTBCQ3lBY1FTQnFJUVpCQUNFaUlCTWdEbXNpTUFSQUEwQWdIaUFHS0FJUUlpMGdEaUFpYWlJbklBWW9BaFFnSjBFQmFpSXJJQ0pCQW5RaU9DQUdLQUlBSUFZb0FneEJCWFJxSUMxQkJuUnFha0VRUVFBUUZ5QWVJQVlvQWhnaUxTQUdLQUlJSWhScUlDY2dCaWdDSENBVWFpQXJJQVlvQWdBZ0JpZ0NERUVGZEdzZ0xVRUdkR29nT0dwQklHcEJFRUVBRUJjZ0lrRUJhaUlpSURCSERRQUxDeUFHRUJ3Z0hpQVlJQTRnS0NBVElDRWdHRUVGZEdwQkNFRUJRUUFRSDBVTkF3c2dIQ0FiTmdJY0lCd2dBVFlDR0NBY0lCWTJBaFFnSENBSU5nSVFJQmdnS0VrRVFDQVZRUUYwSWdZZ0QwRUJkRUVCY2lJVklBWWdGVXNiSWdZZ0V5QUdJQk5KR3lFR0lENGdQMEVGZENJVmF5QUJRUVowYWlFT0lCVWdJV29nQ0VFR2RHb2hGU0FLSUJ0cUlROGdBU0FLYWlFS0lDRWdFRUVCZENJQklBZEJBWFJCQVhJaUJ5QUJJQWRKR3lJSFFRVjBhaUVRQTBBZ0hpQVlJQWhCQ0NBb0lCaHJJZ0VnQVVFSVR4c2dHR29pQVNBV0lCVkJBVUVRRUJjZ0hpQVlJQW9nQVNBUElBNUJBVUVRRUJjZ0hCQWNJQjRnR0NBSElBRWdCaUFRUVFGQkNFRUFFQjlGRFFRZ0dFRUlhaUlZSUNoSkRRQUxDeUFNUVpnQmFpRU1JQ0FoQmlBVElRb2doZ0ZDQVh3aWhnRWdod0ZTRFFBTEMwRUJJUWNnSGlBalFSQnJLQUlBSWdFZ0x5Z0NBQ0lHYXlBalFReHJLQUlBSUQwb0FnQWlDbXNnSTBFSWF5Z0NBQ0lJSUFacklDTkJCR3NvQWdBZ0Ntc2dDU2dDTkVFQklBZ2dBV3NRRnlBZUVCMGdJUkFKREFRTElCNFFIU0FoRUFsQkFDRUhEQU1MSUI0UUhVRUFJUWNNQWdzZ0h4QWFRUUFMSVFjZ0hDZ0NJQkFKQ3lBY1FVQnJKQUFnQncwQURBUUxJQjFCdUFocUlSMGdEVUUwYWlFTklBbEJ6QUJxSVFrZ0MwRUJhaUlMSUJjb0FoQkpEUUFMSUJrb0FpQWhIU0FaS0FJVUtBSUFJUmNMQWtBZ0hTZ0NFQ0lKUlEwQUlCa29Ba1FOQUNBWEtBSVVJZzBvQWh3aEFRSkFBa0FDUUNBWktBSkFJZ1lFUUNBWEtBSVFJZ3RCQTBrTkFnSkFJQTBvQWhnaUJ5QU5LQUprUmdSQUlBY2dEU2dDc0FGR0RRRUxJRE5CQVVHdnlnQkJBQkFJREFjTEFrQWdHU2dDR0NnQ0dDSUtLQUlrSWdnZ0NpZ0NXRWNOQUNBSUlBb29Bb3dCUncwQUlBRWdCMEdZQVd3aUNtb2lBVUdNQVdzb0FnQWdBVUdVQVdzb0FnQnJJQUZCa0FGcktBSUFJQUZCbUFGcktBSUFhMndpQVNBTktBSm9JQXBxSWdkQmpBRnJLQUlBSUFkQmxBRnJLQUlBYXlBSFFaQUJheWdDQUNBSFFaZ0JheWdDQUd0c1J3MEFJQTBvQXJRQklBcHFJZ2RCakFGcktBSUFJQWRCbEFGcktBSUFheUFIUVpBQmF5Z0NBQ0FIUVpnQmF5Z0NBR3RzSUFGR0RRSUxJRE5CQVVHdnlnQkJBQkFJREFZTElCY29BaEFpQzBFRFNRMEJBa0FnR1NnQ0dDZ0NHQ0lIS0FJa0lnb2dCeWdDV0VjTkFDQUtJQWNvQW93QklnaEhEUUFnQVNBS1FaZ0JiQ0lIYWlJQktBS1VBU0FCS0FLTUFXc2dBU2dDa0FFZ0FTZ0NpQUZyYkNJQklBY2dEU2dDYUdvaUJ5Z0NsQUVnQnlnQ2pBRnJJQWNvQXBBQklBY29Bb2dCYTJ4SERRQWdEU2dDdEFFZ0NFR1lBV3hxSWdjb0FwUUJJQWNvQW93QmF5QUhLQUtRQVNBSEtBS0lBV3RzSUFGR0RRRUxJRE5CQVVHdnlnQkJBQkFJREFVTElBbEJBa1lFUUNBZEtBTG9LMFVOQXlBTFFRSjBFQTBpQzBVTkJTQVhLQUlRSWdoRkRRSWdHU2dDUUFSQVFRQWhGd0pBSUFoQkRFa0VRRUVBSVFZTUFRc2dEVUVrYWlFS0FrQWdDeUFOSUFoQnpBQnNha0VrYTA4TkFDQUtJQXNnQ0VFQ2RHcFBEUUJCQUNFR0RBRUxJQTFCaUFKcUlRd2dEVUc4QVdvaEZTQU5RZkFBYWlFT0lBMGdDRUY4Y1NJR1Fjd0FiR29oRFVFQUlRa0RRQ0FMSUFsQkFuUnFJQXdnQ1VITUFHd2lCMm9nQnlBVmFpQUhJQTVxSUFjZ0NtcjlDUUlBL1ZZQ0FBSDlWZ0lBQXYxV0FnQUQvUXNDQUNBSlFRUnFJZ2tnQmtjTkFBc2dCaUFJUmcwRUN3SkFJQWhCQTNFaUIwVUVRQ0FHSVFrTUFRc2dCaUVKQTBBZ0N5QUpRUUowYWlBTktBSWtOZ0lBSUFsQkFXb2hDU0FOUWN3QWFpRU5JQmRCQVdvaUZ5QUhSdzBBQ3dzZ0JpQUlhMEY4U3cwRElBdEJER29oQmlBTFFRaHFJUW9nQzBFRWFpRU1BMEFnQ3lBSlFRSjBJZ2RxSUEwb0FpUTJBZ0FnQnlBTWFpQU5LQUp3TmdJQUlBY2dDbW9nRFNnQ3ZBRTJBZ0FnQmlBSGFpQU5LQUtJQWpZQ0FDQU5RYkFDYWlFTklBbEJCR29pQ1NBSVJ3MEFDd3dEQzBFQUlSY0NRQ0FJUVF4SkJFQkJBQ0VHREFFTElBMUJOR29oQ2dKQUlBc2dEU0FJUWN3QWJHcEJGR3RQRFFBZ0NpQUxJQWhCQW5ScVR3MEFRUUFoQmd3QkN5QU5RWmdDYWlFTUlBMUJ6QUZxSVJVZ0RVR0FBV29oRGlBTklBaEJmSEVpQmtITUFHeHFJUTFCQUNFSkEwQWdDeUFKUVFKMGFpQU1JQWxCekFCc0lnZHFJQWNnRldvZ0J5QU9haUFISUFwcS9Ra0NBUDFXQWdBQi9WWUNBQUw5VmdJQUEvMExBZ0FnQ1VFRWFpSUpJQVpIRFFBTElBWWdDRVlOQXdzQ1FDQUlRUU54SWdkRkJFQWdCaUVKREFFTElBWWhDUU5BSUFzZ0NVRUNkR29nRFNnQ05EWUNBQ0FKUVFGcUlRa2dEVUhNQUdvaERTQVhRUUZxSWhjZ0IwY05BQXNMSUFZZ0NHdEJmRXNOQWlBTFFReHFJUVlnQzBFSWFpRUtJQXRCQkdvaERBTkFJQXNnQ1VFQ2RDSUhhaUFOS0FJME5nSUFJQWNnREdvZ0RTZ0NnQUUyQWdBZ0J5QUthaUFOS0FMTUFUWUNBQ0FHSUFkcUlBMG9BcGdDTmdJQUlBMUJzQUpxSVEwZ0NVRUVhaUlKSUFoSERRQUxEQUlMSUIwb0F0QXJLQUlVUVFGR0JFQWdCZ1JBSUEwb0FpUWdEU2dDY0NBTktBSzhBU0FCRUZnTUJBc2dEU2dDTkNBTktBS0FBU0FOS0FMTUFTQUJFRmdNQXdzZ0JnUkFJQTBvQWlRZ0RTZ0NjQ0FOS0FLOEFTQUJFRmNNQXdzZ0RTZ0NOQ0FOS0FLQUFTQU5LQUxNQVNBQkVGY01BZ3NnUUNBTE5nSUFJRE5CQVVIc3lnQWdRQkFJREFFTElCa29BaGdvQWhnb0FpQWFBbjhnSFNnQzZDc2hCMEVBSVE1QkFDQUlRUU4wRUEwaURVVU5BQm9DUUNBQlJRMEFJQWhGRFFBZ0RTQUlRUUowYWlFVElBaEJmSEVoRHlBSVFRTnhJUXdnQ0VFQmF5RVFBMEJCQUNFWFFRQWhDU0FRUVFOUEJFQURRQ0FOSUJkQkFuUWlCbW9nQmlBTGFpZ0NBQ29DQURnQ0FDQU5JQVpCQkhJaUNtb2dDaUFMYWlnQ0FDb0NBRGdDQUNBTklBWkJDSElpQ21vZ0NpQUxhaWdDQUNvQ0FEZ0NBQ0FOSUFaQkRISWlCbW9nQmlBTGFpZ0NBQ29DQURnQ0FDQVhRUVJxSVJjZ0NVRUVhaUlKSUE5SERRQUxDMEVBSVFvZ0RBUkFBMEFnRFNBWFFRSjBJZ1pxSUFZZ0Myb29BZ0FxQWdBNEFnQWdGMEVCYWlFWElBcEJBV29pQ2lBTVJ3MEFDd3RCQUNFR0lBY2hGd05BSUJNZ0JrRUNkQ0lTYWlJSlFRQTJBZ0JEQUFBQUFDR09BVUVBSVFwQkFDRVdJQkJCQWtzRVFBTkFJQWtnRnlvQ0FDQU5JQXBCQW5ScUloVXFBZ0NVSUk0QmtpS09BVGdDQUNBSklCY3FBZ1FnRlNvQ0JKUWdqZ0dTSW80Qk9BSUFJQWtnRnlvQ0NDQVZLZ0lJbENDT0FaSWlqZ0U0QWdBZ0NTQVhLZ0lNSUJVcUFneVVJSTRCa2lLT0FUZ0NBQ0FLUVFScUlRb2dGMEVRYWlFWElCWkJCR29pRmlBUFJ3MEFDd3RCQUNFVklBd0VRQU5BSUFrZ0Z5b0NBQ0FOSUFwQkFuUnFLZ0lBbENDT0FaSWlqZ0U0QWdBZ0NrRUJhaUVLSUJkQkJHb2hGeUFWUVFGcUloVWdERWNOQUFzTElBc2dFbW9pQ2lBS0tBSUFJZ3BCQkdvMkFnQWdDaUNPQVRnQ0FDQUdRUUZxSWdZZ0NFY05BQXNnRGtFQmFpSU9JQUZIRFFBTEN5QU5FQWxCQVFzaGV5QUxFQWtnZTBVTkFnc2dHU2dDRkNnQ0FDSVdLQUlRUlFSQVFRRWhNUXdDQ3lBWktBSWdLQUxRS3lJWFFiZ0lhaUVUSUJkQnRBaHFJUklnR1NnQ1JDRVFJQllvQWhRaEJ5QVpLQUlZS0FJWUlRcEJBQ0VJQTBBQ1FDQVFCRUFnRUNBSVFRSjBhaWdDQUVVTkFRc2dCeWdDSENJQklBb29BaVJCbUFGc2FpRUxBbjhnR1NnQ1FFVUVRQ0FMS0FLVUFTQUxLQUtNQVdzaEJpQUxLQUtRQVNBTEtBS0lBV3NoQVVFQUlReEJOQXdCQ3lBQklBY29BaGhCbUFGc2FpSUdRWkFCYXlnQ0FDQUxLQUlJSUFzb0FnQnJJZ0VnQmtHWUFXc29BZ0JxYXlFTUlBc29BZ3dnQ3lnQ0JHc2hCa0VrQ3lFSklBb29BaGdoQ3dKL0lBb29BaUFFUUVFQklBdEJBV3QwSWd0QkFXc2hIVUVBSUF0ckRBRUxRWDhnQzNSQmYzTWhIVUVBQ3lFUElBRkZEUUFnQmtVTkFDQUhJQWxxS0FJQUlRa2dGeWdDRkVFQlJnUkFJQk1nQ0VHNENHd2lDMm9oRVNBTElCSnFJUmdnQVVFQmNTRWFJQUZCQW5RaE15QUJRWHh4SWc1QkFuUWhHeUFkL1JFaGdnRWdELzBSSVlBQlFRQWhGU0FCUVFSSklSOERRQUpBQWtBQ1FDQWZEUUFnQ1NBUlNTQVlJQWtnTTJwSmNRMEFJQWtnRzJvaERTQVgvUWtDdEFnaGd3RkJBQ0VMQTBBZ0NTQUxRUUowYWlJZ0lJQUJJSU1CSUNEOUFBSUEvYTRCSW9RQklJSUIvYllCSUlRQklJQUIvVG45VXYwTEFnQWdDMEVFYWlJTElBNUhEUUFMSUE0aUN5QUJSZzBDREFFTElBa2hEVUVBSVFzTElBdEJBWEloQ1NBYUJFQWdEU0FQSUJjb0FyUUlJQTBvQWdCcUlnc2dIU0FMSUIxSUd5QUxJQTlJR3pZQ0FDQU5RUVJxSVEwZ0NTRUxDeUFCSUFsR0RRQURRQ0FOSUE4Z0Z5Z0N0QWdnRFNnQ0FHb2lDU0FkSUFrZ0hVZ2JJQWtnRDBnYk5nSUFJQTBnRHlBWEtBSzBDQ0FOS0FJRWFpSUpJQjBnQ1NBZFNCc2dDU0FQU0JzMkFnUWdEVUVJYWlFTklBdEJBbW9pQ3lBQlJ3MEFDd3NnRFNBTVFRSjBhaUVKSUJWQkFXb2lGU0FHUncwQUN3d0JDeUFkckNHR0FTQVByQ0dIQVVFQUlSVURRRUVBSVFzRFFDQUpBbjhnSFNBSktnSUFJbzRCUXdBQUFFOWVEUUFhSUE4Z2pnRkRBQUFBejEwTkFCb2dod0VnRnpRQ3RBZ0NmeUNPQVpBaWpnR0xRd0FBQUU5ZEJFQWdqZ0dvREFFTFFZQ0FnSUI0QzZ4OElvb0JJSVlCSUlZQklJb0JWUnNnaHdFZ2lnRlZHNmNMTmdJQUlBbEJCR29oQ1NBTFFRRnFJZ3NnQVVjTkFBc2dDU0FNUVFKMGFpRUpJQlZCQVdvaUZTQUdSdzBBQ3dzZ0IwSE1BR29oQnlBWFFiZ0lhaUVYSUFwQk5Hb2hDa0VCSVRFZ0NFRUJhaUlJSUJZb0FoQkpEUUFMREFFTElBVkJBVUdhR1VFQUVBZ0xJRUJCRUdva0FDQXhSUVJBSUU4UUtTQUFJQUFvQWdoQmdJQUNjallDQ0NBRlFRRkJ5OVFBUVFBUUNBd0JDd0pBSUFKRkRRQUNmeUFDSVFkQkFDRUdBa0FnQUNnQzBBRWlGVUVCRUUwaUFVRi9SZzBBSUFFZ0Ewc05BRUVCSUJVb0FoZ2lBU2dDRUVVTkFSb2dBU2dDR0NFSUlCVW9BaFFvQWdBb0FoUWhGd05BSUFnb0FoZ2lBVUVIY1NFQ0lBRkJBM1loQXlBWEtBSWNJZ1lnQ0NnQ0pFR1lBV3hxSVFFQ2Z5QVZLQUpBQkVBZ0JpQVhLQUlZUVpnQmJHb2lCa0dRQVdzb0FnQWdBU2dDQ0NBQktBSUFheUlMSUFaQm1BRnJLQUlBYW1zaERDQUJLQUlNSUFFb0FnUnJJUWxCSkF3QkN5QUJLQUtVQVNBQktBS01BV3NoQ1NBQktBS1FBU0FCS0FLSUFXc2hDMEVBSVF4Qk5Bc2dGMm9vQWdBaEFRSkFBa0FDUUFKQUFrQkJCQ0FESUFKQkFFZHFJZ0lnQWtFRFJodEJBV3NPQkFFQ0JBQUVDeUFKUlEwRElBc2dER29oQmlBTFFRSjBJUUlnQ1VFRVR3UkFJQWxCZkhFaENrRUFJUXNEUUNBSElBRWdBaEFMSVFjZ0FTQUdRUUowSWdOcUlnMGdBMm9pRENBRGFpSU9JQU5xSVFFZ0FpQUhhaUFOSUFJUUN5QUNhaUFNSUFJUUN5QUNhaUFPSUFJUUN5QUNhaUVISUF0QkJHb2lDeUFLUncwQUN3dEJBQ0VMSUFsQkEzRWlBMFVOQXdOQUlBY2dBU0FDRUFzaEJ5QUJJQVpCQW5ScUlRRWdBaUFIYWlFSElBdEJBV29pQ3lBRFJ3MEFDd3dEQ3lBSlJTQUxSWEloQWlBSUtBSWdSUTBCSUFJTkFpQUxRUUowSVE0Z0MwRjhjU0lEUVFKMElROUJBQ0VOQTBBQ1FBSkFBa0FnQzBFRVNRMEFJQUVnQnlBTGFra2dBU0FPYWlBSFMzRU5BQ0FESUFkcUlYd2dBU0FQYWlFR1FRQWhDZ05BSUFjZ0Ntb2dBU0FLUVFKMGF2MEFBZ0Q5REFBQUFBQUFBQUFBQUFBQUFBQUFBQUQ5RFFBRUNBd0FBQUFBQUFBQUFBQUFBQUQ5V2dBQUFDQUtRUVJxSWdvZ0EwY05BQXNnZkNFSElBTWlBaUFMUmcwQ0RBRUxJQUVoQmtFQUlRSUxRUUFoQ2lBTElBSWlBV3RCQjNFaUZnUkFBMEFnQnlBR0tBSUFPZ0FBSUFGQkFXb2hBU0FIUVFGcUlRY2dCa0VFYWlFR0lBcEJBV29pQ2lBV1J3MEFDd3NnQWlBTGEwRjRTdzBBQTBBZ0J5QUdLQUlBT2dBQUlBY2dCaWdDQkRvQUFTQUhJQVlvQWdnNkFBSWdCeUFHS0FJTU9nQURJQWNnQmlnQ0VEb0FCQ0FISUFZb0FoUTZBQVVnQnlBR0tBSVlPZ0FHSUFjZ0JpZ0NIRG9BQnlBSFFRaHFJUWNnQmtFZ2FpRUdJQUZCQ0dvaUFTQUxSdzBBQ3dzZ0JpQU1RUUowYWlFQklBMUJBV29pRFNBSlJ3MEFDd3dDQ3lBSlJTQUxSWEloQWlBSUtBSWdCRUFnQWcwQ0lBdEJBblFoRGlBTFFRRjBJUThnQzBGOGNTSURRUUowSVJZZ0EwRUJkQ0VRUVFBaERRTkFBa0FDUUFKQUlBdEJCRWtOQUNBQklBY2dEMnBKSUFFZ0Rtb2dCMHR4RFFBZ0FTQVdhaUVHSUFjZ0VHb2hmVUVBSVFvRFFDQUhJQXBCQVhScUlBRWdDa0VDZEdyOUFBSUEvUXdBQUFBQUFBQUFBQUFBQUFBQUFBQUEvUTBBQVFRRkNBa01EUUFCQUFFQUFRQUIvVnNCQUFBZ0NrRUVhaUlLSUFOSERRQUxJSDBoQnlBRElnSWdDMFlOQWd3QkN5QUJJUVpCQUNFQ0MwRUFJUW9nQ3lBQ0lnRnJRUWR4SWhNRVFBTkFJQWNnQmlnQ0FEc0JBQ0FCUVFGcUlRRWdCMEVDYWlFSElBWkJCR29oQmlBS1FRRnFJZ29nRTBjTkFBc0xJQUlnQzJ0QmVFc05BQU5BSUFjZ0JpZ0NBRHNCQUNBSElBWW9BZ1E3QVFJZ0J5QUdLQUlJT3dFRUlBY2dCaWdDRERzQkJpQUhJQVlvQWhBN0FRZ2dCeUFHS0FJVU93RUtJQWNnQmlnQ0dEc0JEQ0FISUFZb0FodzdBUTRnQjBFUWFpRUhJQVpCSUdvaEJpQUJRUWhxSWdFZ0MwY05BQXNMSUFZZ0RFRUNkR29oQVNBTlFRRnFJZzBnQ1VjTkFBc01BZ3NnQWcwQklBdEJBblFoRGlBTFFRRjBJUThnQzBGOGNTSURRUUowSVJZZ0EwRUJkQ0VRUVFBaERRTkFBa0FDUUFKQUlBdEJCRWtOQUNBQklBY2dEMnBKSUFFZ0Rtb2dCMHR4RFFBZ0FTQVdhaUVHSUFjZ0VHb2hma0VBSVFvRFFDQUhJQXBCQVhScUlBRWdDa0VDZEdyOUFBSUEvUXdBQUFBQUFBQUFBQUFBQUFBQUFBQUEvUTBBQVFRRkNBa01EUUFCQUFFQUFRQUIvVnNCQUFBZ0NrRUVhaUlLSUFOSERRQUxJSDRoQnlBRElnSWdDMFlOQWd3QkN5QUJJUVpCQUNFQ0MwRUFJUW9nQ3lBQ0lnRnJRUWR4SWhNRVFBTkFJQWNnQmlnQ0FEc0JBQ0FCUVFGcUlRRWdCMEVDYWlFSElBWkJCR29oQmlBS1FRRnFJZ29nRTBjTkFBc0xJQUlnQzJ0QmVFc05BQU5BSUFjZ0JpZ0NBRHNCQUNBSElBWW9BZ1E3QVFJZ0J5QUdLQUlJT3dFRUlBY2dCaWdDRERzQkJpQUhJQVlvQWhBN0FRZ2dCeUFHS0FJVU93RUtJQWNnQmlnQ0dEc0JEQ0FISUFZb0FodzdBUTRnQjBFUWFpRUhJQVpCSUdvaEJpQUJRUWhxSWdFZ0MwY05BQXNMSUFZZ0RFRUNkR29oQVNBTlFRRnFJZzBnQ1VjTkFBc01BUXNnQWcwQUlBdEJBblFoRGlBTFFYeHhJZ05CQW5RaEQwRUFJUTBEUUFKQUFrQUNRQ0FMUVFSSkRRQWdBU0FISUF0cVNTQUJJQTVxSUFkTGNRMEFJQU1nQjJvaGZ5QUJJQTlxSVFaQkFDRUtBMEFnQnlBS2FpQUJJQXBCQW5ScS9RQUNBUDBNQUFBQUFBQUFBQUFBQUFBQUFBQUFBUDBOQUFRSURBQUFBQUFBQUFBQUFBQUFBUDFhQUFBQUlBcEJCR29pQ2lBRFJ3MEFDeUIvSVFjZ0F5SUNJQXRHRFFJTUFRc2dBU0VHUVFBaEFndEJBQ0VLSUFzZ0FpSUJhMEVIY1NJV0JFQURRQ0FISUFZb0FnQTZBQUFnQVVFQmFpRUJJQWRCQVdvaEJ5QUdRUVJxSVFZZ0NrRUJhaUlLSUJaSERRQUxDeUFDSUF0clFYaExEUUFEUUNBSElBWW9BZ0E2QUFBZ0J5QUdLQUlFT2dBQklBY2dCaWdDQ0RvQUFpQUhJQVlvQWd3NkFBTWdCeUFHS0FJUU9nQUVJQWNnQmlnQ0ZEb0FCU0FISUFZb0FoZzZBQVlnQnlBR0tBSWNPZ0FISUFkQkNHb2hCeUFHUVNCcUlRWWdBVUVJYWlJQklBdEhEUUFMQ3lBR0lBeEJBblJxSVFFZ0RVRUJhaUlOSUFsSERRQUxDeUFYUWN3QWFpRVhJQWhCTkdvaENFRUJJUVlnY2tFQmFpSnlJQlVvQWhnb0FoQkpEUUFMQ3lBR0MwVU5BU0JQS0FMY0t5SUJSUTBBSUFFUUNTQlBRZ0EzQXR3ckN5QUFJQUF0QUVSQi9nRnhPZ0JFSUFBZ0FDZ0NDRUgvZm5FMkFnaEJBU0ZuSUFRcEF3Z2loZ0ZRQkg1Q0FBVWdoZ0VnQkNrRE9IMExVQ0FBS0FJSUlnRkJ3QUJHY1EwQUlBRkJnQUpHRFFBZ0JDQk9RUXBxUVFJZ0JSQVNRUUpIQkVBZ0JVRUJRUUlnQUNnQ3VBRWJRWllTUVFBUUNDQUFLQUs0QVVVaFp3d0JDeUJPUVFwcUlFNUJER3BCQWhBS0lFNG9BZ3dpQVVHUS93TkdEUUFnQVVIWi93TkdCRUFnQUVHQUFqWUNDQ0FBUVFBMkFzd0JEQUVMSUFRcEF3Z2loZ0ZRQkg1Q0FBVWdoZ0VnQkNrRE9IMExVQVJBSUFCQndBQTJBZ2dnQlVFQ1FhMCtRUUFRQ0F3QkMwRUFJV2NnQlVFQlFlMDlRUUFRQ0FzZ1RrRVFhaVFBSUdjTEN3QWdBQVJBSUFBUUNRc0x0QUVCQVg4Z0FDZ0NERVVFUUNBQ0lBQW9BaVFnQVJFREFBOExBa0JCQ0JBTklnTkZEUUFnQXlBQ05nSUVJQU1nQVRZQ0FFRUlFQTBpQVVVRVFDQURFQWtQQ3lBQklBTTJBZ0FnQUNBQUtBSUVRZVFBYkNJQ05nSW9BMEFnQUNnQ0dDQUNTZzBBQ3lBQklBQW9BaFEyQWdRZ0FDQUJOZ0lVSUFBZ0FDZ0NHRUVCYWpZQ0dDQUFLQUljSWdGRkRRQWdBU2dDQUVFQU5nSUlJQUFnQVNnQ0JEWUNIQ0FBSUFBb0FpQkJBV3MyQWlBZ0FSQUpDd3N2QVFGL0lBQUVRQ0FBS0FJRUlnRUVRQ0FBS0FJQUlBRVJBZ0FMSUFBb0FpQVFDU0FBUVFBMkFpQWdBQkFKQ3dzcUFDQUFCRUFnQUNnQ01DQUFRUlJCRUNBQUtBSk1HMm9vQWdBUkFnQWdBRUVBTmdJd0lBQVFDUXNMK2dJQkJIOENRQ0FBUlEwQUlBQW9BcXdvSWdFRVFDQUFLQUtvS0NJQ0JFQkJBQ0VCQTBBZ0FDZ0NyQ2dnQVVFRGRHb29BZ0FpQXdSQUlBTVFDU0FBS0FLb0tDRUNDeUFCUVFGcUlnRWdBa2tOQUFzZ0FDZ0NyQ2doQVFzZ0FFRUFOZ0tvS0NBQkVBa2dBRUVBTmdLc0tBc2dBQ2dDdENnaUFRUkFJQUVRQ1NBQVFRQTJBclFvQ3lBQUtBTFFLeUlCQkVBZ0FSQUpJQUJCQURZQzBDc0xJQUFvQXV3cklnRUVRQ0FCRUFrZ0FFRUFOZ0xzS3dzZ0FDZ0M2Q3NpQVFSQUlBRVFDU0FBUVFBMkF1Z3JDeUFBS0FMOEt5SUJCRUFnQVJBSklBQkJBRFlDaEN3Z0FFSUFOd0w4S3dzZ0FDZ0M4Q3NpQVFSQUlBQW9BdlFySWdNRWYwRUFJUUlEUUNBQktBSU1JZ1FFUUNBRUVBa2dBVUVBTmdJTUlBQW9BdlFySVFNTElBRkJGR29oQVNBQ1FRRnFJZ0lnQTBrTkFBc2dBQ2dDOENzRklBRUxFQWtnQUVFQU5nTHdLd3NnQUNnQzVDc2lBUVJBSUFFUUNTQUFRUUEyQXVRckN5QUFLQUxjS3lJQlJRMEFJQUVRQ1NBQVFnQTNBdHdyQ3d2SUJ3SVJmd0YrSUFBb0FoQWlDRUVnVHdSQUlBQXBBd2luRHdzQ1FDQUFLQUlVSWdOQkJFNEVRQ0FBS0FJQUlnSkJBMnNvQWdBaEFTQUFJQU5CQkdzaUF6WUNGQ0FBSUFKQkJHczJBZ0FNQVFzZ0EwRUFUQVJBREFFTElBTkJBWEVoRFNBQUtBSUFJUUlDUUNBRFFRRkdCRUJCR0NFRURBRUxJQU5CL3YvLy93ZHhJUWxCR0NFRUEwQWdBQ0FDUVFGcklnWTJBZ0FnQWkwQUFDRU1JQUFnQWtFQ2F5SUNOZ0lBSUFBZ0EwRUJhellDRkNBR0xRQUFJUVlnQUNBRFFRSnJJZ00yQWhRZ0RDQUVkQ0FCY2lBR0lBUkJDR3QwY2lFQklBUkJFR3NoQkNBRlFRSnFJZ1VnQ1VjTkFBc0xJQTBFUUNBQUlBSkJBV3MyQWdBZ0FpMEFBQ0VPSUFBZ0EwRUJhellDRkNBT0lBUjBJQUZ5SVFFTFFRQWhBd3NnQUNnQ0dDRUNJQUFnQVVIL0FYRWlDVUdQQVVzMkFoZ2dBRUVIUVFnZ0FVR0FnSUQ0QjNGQmdJQ0ErQWRHRzBFSUlBSWJJZ0pCQ0VFSFFRZ2dBVUdBZ1B3RGNVR0FnUHdEUmhzZ0FVSC8vLy8vZUUwYmFpSUVRUWhCQjBFSUlBRkJnUDRCY1VHQS9nRkdHeUFCUVJCMlFmOEJjU0lGUVk4QlRSdHFJZ1pCQ0VFSFFRZ2dBVUgvQUhGQi93QkdHeUFCUVFoMlFmOEJjU0lIUVk4QlRSc2dDR3BxSWdvMkFoQWdBQ0FBS1FNSUlBVWdBblFnQVVFWWRuSWdCeUFFZEhJZ0NTQUdkSEt0SUFpdGhvUWlFamNEQ0NBS1FSOU5CRUFDUUNBRFFRUk9CRUFnQUNnQ0FDSUNRUU5yS0FJQUlRRWdBQ0FEUVFSck5nSVVJQUFnQWtFRWF6WUNBQXdCQ3lBRFFRQk1CRUJCQUNFQkRBRUxJQU5CQVhFaEVDQUFLQUlBSVFJQ1FDQURRUUZHQkVCQkdDRUVRUUFoQVF3QkN5QURRZjcvLy84SGNTRUdRUmdoQkVFQUlRRkJBQ0VGQTBBZ0FDQUNRUUZySWdjMkFnQWdBaTBBQUNFUElBQWdBa0VDYXlJQ05nSUFJQUFnQTBFQmF6WUNGQ0FITFFBQUlRY2dBQ0FEUVFKcklnTTJBaFFnRHlBRWRDQUJjaUFISUFSQkNHdDBjaUVCSUFSQkVHc2hCQ0FGUVFKcUlnVWdCa2NOQUFzTElCQkZEUUFnQUNBQ1FRRnJOZ0lBSUFJdEFBQWhFU0FBSUFOQkFXczJBaFFnRVNBRWRDQUJjaUVCQ3lBQUlBRkIvd0Z4SWdKQmp3RkxOZ0lZSUFCQkNFRUhRUWdnQVVHQWdJRDRCM0ZCZ0lDQStBZEdHeUFKUVk4QlRSc2lBMEVJUVFkQkNDQUJRWUNBL0FOeFFZQ0EvQU5HR3lBQlFmLy8vLzk0VFJ0cUlnUkJDRUVIUVFnZ0FVR0EvZ0Z4UVlEK0FVWWJJQUZCRUhaQi93RnhJZ1ZCandGTkcyb2lDRUVJUVFkQkNDQUJRZjhBY1VIL0FFWWJJQUZCQ0haQi93RnhJZ2xCandGTkd5QUthbW8yQWhBZ0FDQUZJQU4wSUFGQkdIWnlJQWtnQkhSeUlBSWdDSFJ5clNBS3JZWWdFb1FpRWpjRENBc2dFcWNMeVJRQ0hYOEdleUFBS0FJSUlnb2dBQ2dDQkdvaENBSkFJQUFvQWd4RkJFQWdDRUVDU0EwQklBTkJBRXdOQVNBQUtBSUFJZ1VnQ0VFRWF5SUdRUUYySWd4QkFuUWlDU0FCSUFwQkFuUnFJZ2NnQTBFQ2RDSUVhbXBCQkdwSklBVWdERUVEZEdwQkNHb2lBQ0FIUVFScVMzRWdCU0FCSUFScUlBbHFRUVJxU1NBQlFRUnFJQUJKY1hJaEVpQUlRUVJKSWhRZ0FrRUJSM0loRlNBQ1FRRkdJQVpCQlV0eElSWWdDRUg4Ly8vL0IzRWhFeUFJUVFGeElSY2dDa0VCYWlFUElBaEJBM0VoRVNBQklBVnJJUmdnQlNBSVFRSjBhaUVaSUFVZ0NFRUJheUlBUVFKMGFpRWFJQXhCQVdvaUcwRjhjU0lRUVFGMElRc2dBaUFLYkVFQ2RDRWNJQUJCQVhZZ0FteEJBblFoSFFOQUlBRW9BZ0FnQVNBY2FpZ0NBQ0lKUVFGcVFRRjFheUVIQWtBZ0ZBUkFJQWtoQkVFQUlRWU1BUXRCQUNFR0FrQUNmMEVBSUJaRkRRQWFRUUFnRWcwQUdpQUovUkVoSWlBSC9SRWhJZjBNQUFBQUFBSUFBQUFFQUFBQUJnQUFBQ0VsUVFBaEFBTkFJQUVnQUVFQ2RHcjlBQUlFSVNRZ0FTQUFJQTlxUVFKMGF2MEFBZ0FoSXlBRklBQkJBM1JxSWdRZ0lmMWFBZ0FESUFSQkNHb2dKQ0FqSUNJZ0kvME5EQTBPRHhBUkVoTVVGUllYR0JrYUd5SWsvYTRCL1F3Q0FBQUFBZ0FBQUFJQUFBQUNBQUFBL2E0QlFRTDlyQUg5c1FFaUl2MWFBZ0FBSUFSQkVHb2dJdjFhQWdBQklBUkJHR29nSXYxYUFnQUNJQVVnSmYwTUFRQUFBQUVBQUFBQkFBQUFBUUFBQVAxUUlpYjlHd0JCQW5ScUlDSWdJU0FpL1EwTURRNFBFQkVTRXhRVkZoY1lHUm9iL2E0QlFRSDlyQUVnSlAydUFTSWgvVm9DQUFBZ0JTQW0vUnNCUVFKMGFpQWgvVm9DQUFFZ0JTQW0vUnNDUVFKMGFpQWgvVm9DQUFJZ0JTQW0vUnNEUVFKMGFpQWgvVm9DQUFNZ0pmME1DQUFBQUFnQUFBQUlBQUFBQ0FBQUFQMnVBU0VsSUNJaElTQWpJU0lnQUVFRWFpSUFJQkJIRFFBTElDTDlHd01oQkNBaC9Sc0RJUWNnRUNBYlJnMEJJQXNoQmlBRUlRa2dFQXNoQUFOQUlBRWdBRUVCYWlJS0lBSnNRUUowYWlnQ0FDRWVJQUVnQUNBUGFpQUNiRUVDZEdvb0FnQWhCQ0FGSUFaQkFuUnFJZzRnQnpZQ0FDQU9JQWNnSGlBRUlBbHFRUUpxUVFKMWF5SUhha0VCZFNBSmFqWUNCQ0FHUVFKcUlRWWdBQ0FNUnlFZklBUWhDU0FLSVFBZ0h3MEFDd3dCQ3lBTElRWUxJQVVnQmtFQ2RHb2dCellDQUVGOElRQWdGd1IvSUJvZ0FTQWRhaWdDQUNBRVFRRnFRUUYxYXlJQU5nSUFJQUFnQjJwQkFYVWhCMEY0QlVGOEN5QVphaUFFSUFkcU5nSUFRUUFoQmtFQUlRQkJBQ0VFQWtBZ0ZTQVlJQTFCQW5ScVFSQkpja1VFUUFOQUlBRWdBRUVDZENJRWFpQUVJQVZxL1FBQ0FQMExBZ0FnQUVFRWFpSUFJQk5IRFFBTElCTWlCQ0FJUmcwQkN5QUVJUUFnRVFSQUEwQWdBU0FBSUFKc1FRSjBhaUFGSUFCQkFuUnFLQUlBTmdJQUlBQkJBV29oQUNBR1FRRnFJZ1lnRVVjTkFBc0xJQVFnQ0d0QmZFc05BQU5BSUFFZ0FDQUNiRUVDZEdvZ0JTQUFRUUowYWlnQ0FEWUNBQ0FCSUFCQkFXb2lCQ0FDYkVFQ2RHb2dCU0FFUVFKMGFpZ0NBRFlDQUNBQklBQkJBbW9pQkNBQ2JFRUNkR29nQlNBRVFRSjBhaWdDQURZQ0FDQUJJQUJCQTJvaUJDQUNiRUVDZEdvZ0JTQUVRUUowYWlnQ0FEWUNBQ0FBUVFScUlnQWdDRWNOQUFzTElBRkJCR29oQVNBTlFRRnFJZzBnQTBjTkFBc01BUXNDUUFKQUFrQWdDRUVCYXc0Q0FBRUNDeUFEUVFCTURRSkJBQ0VDQWtBZ0EwRUVTUVJBSUFFaEFBd0JDeUFCSUFOQi9QLy8vd2R4SWdKQkFuUnFJUUFEUUNBQklBWkJBblJxSWdRZ0JQMEFBZ0FpSWYwYkFFRUNiZjBSSUNIOUd3RkJBbTM5SEFFZ0lmMGJBa0VDYmYwY0FpQWgvUnNEUVFKdC9Sd0QvUXNDQUNBR1FRUnFJZ1lnQWtjTkFBc2dBaUFEUmcwREN3TkFJQUFnQUNnQ0FFRUNiVFlDQUNBQVFRUnFJUUFnQWtFQmFpSUNJQU5IRFFBTERBSUxJQU5CQUV3TkFTQUFLQUlBSVFrZ0FpQUtiRUVDZENFSEEwQWdDU0FCS0FJQUlBRWdCMm9pQkNnQ0FFRUJha0VCZFdzaUFEWUNCQ0FKSUFBZ0JDZ0NBR29pQURZQ0FDQUJJQUEyQWdBZ0FTQUNRUUowYWlBSktBSUVOZ0lBSUFGQkJHb2hBU0FHUVFGcUlnWWdBMGNOQUFzTUFRc2dDRUVEU0EwQUlBTkJBRXdOQUNBQUtBSUFJZ1VnQ0NBSVFRRnhJaFJGSWdaclFRUnJJZ2xCQVhZaUMwRUNkQ0lISUFFZ0EwRUNkQ0lBYW1wSklBVWdDMEVEZEdwQkRHb2lCQ0FCUVFScVMzRWdCVUVFYWlBQUlBRWdDa0VDZEdvaUFHb2dCMnBCQ0dwSklBQkJDR29nQkVseGNpRVZJQUpCQVVjZ0NFRUVTWEloRmlBQ1FRRkdJQWxCQlV0eElSY2dDRUg4Ly8vL0IzRWhFQ0FJUVFOeElSRWdBU0FGYXlFWUlBVWdDRUVDZEdwQkJHc2hHU0FGSUFoQkFtc2lBRUVDZEdvaEdpQUxRUUZxSWhKQmZIRWlERUVCY2lFVElBeEJBWFJCQVhJaEN5QUNJQXBzUVFKMElSc2dBQ0FHYTBFQ1NTRWNJQWhCQVhaQkFXc2dBbXhCQW5RaEhRTkFJQVVnQVNnQ0FDQUJJQnRxSWc4Z0FrRUNkR29vQWdBaUNTQVBLQUlBSWdCcVFRSnFRUUoxYXlJSElBQnFOZ0lBUVFFaEJBSkFJQndFUUNBSklRWU1BUXNDUUFKL1FRRWdGMFVOQUJwQkFTQVZEUUFhSUFuOUVTRWhJQWY5RVNFaVFRQWhBQU5BSUFVZ0FFRURkR29pQnlBQklBQkJBblFpQkdyOUFBSUVJQ0VnQkNBUGF2MEFBZ2dpSWYwTkRBME9EeEFSRWhNVUZSWVhHQmthR3lJa0lDSDlyZ0g5REFJQUFBQUNBQUFBQWdBQUFBSUFBQUQ5cmdGQkF2MnNBZjJ4QVNJaklDTWdJaUFqL1EwTURRNFBFQkVTRXhRVkZoY1lHUm9iL2E0QlFRSDlyQUVnSlAydUFTSWsvUTBFQlFZSEdCa2FHd2dKQ2dzY0hSNGYvUXNDRkNBSElDSWdKUDBOREEwT0R4QVJFaE1BQVFJREZCVVdGeUFqL1EwQUFRSURCQVVHQnhBUkVoTU1EUTRQL1FzQ0JDQWpJU0lnQUVFRWFpSUFJQXhIRFFBTElDSDlHd01oQmlBaS9Sc0RJUWNnRENBU1JnMEJJQXNoQkNBR0lRa2dFd3NoQUFOQUlBRWdBQ0FDYkVFQ2RHb29BZ0FoSGlBUElBQkJBV29pQ2lBQ2JFRUNkR29vQWdBaEJpQUZJQVJCQW5ScUlnNGdCellDQUNBT0lBY2dIaUFHSUFscVFRSnFRUUoxYXlJSGFrRUJkU0FKYWpZQ0JDQUVRUUpxSVFRZ0FDQVNSeUVnSUFvaEFDQUdJUWtnSUEwQUN3d0JDeUFMSVFRTElCZ2dEVUVDZEdvaENTQUZJQVJCQW5ScUlBYzJBZ0FDUUNBVVJRUkFJQm9nQVNBZGFpZ0NBQ0FHUVFGcVFRRjFheUlBSUFkcVFRRjFJQVpxTmdJQURBRUxJQVlnQjJvaEFBc2dHU0FBTmdJQVFRQWhCa0VBSVFCQkFDRUVBa0FnRmlBSlFSQkpja1VFUUFOQUlBRWdBRUVDZENJRWFpQUVJQVZxL1FBQ0FQMExBZ0FnQUVFRWFpSUFJQkJIRFFBTElCQWlCQ0FJUmcwQkN5QUVJUUFnRVFSQUEwQWdBU0FBSUFKc1FRSjBhaUFGSUFCQkFuUnFLQUlBTmdJQUlBQkJBV29oQUNBR1FRRnFJZ1lnRVVjTkFBc0xJQVFnQ0d0QmZFc05BQU5BSUFFZ0FDQUNiRUVDZEdvZ0JTQUFRUUowYWlnQ0FEWUNBQ0FCSUFCQkFXb2lCQ0FDYkVFQ2RHb2dCU0FFUVFKMGFpZ0NBRFlDQUNBQklBQkJBbW9pQkNBQ2JFRUNkR29nQlNBRVFRSjBhaWdDQURZQ0FDQUJJQUJCQTJvaUJDQUNiRUVDZEdvZ0JTQUVRUUowYWlnQ0FEWUNBQ0FBUVFScUlnQWdDRWNOQUFzTElBRkJCR29oQVNBTlFRRnFJZzBnQTBjTkFBc0xDemNCQW44akFFRVFheUlCSkFBZ0FBUi9JQUZCREdwQklDQUFFR1VoQUVFQUlBRW9BZ3dnQUJzRlFRQUxJUUlnQVVFUWFpUUFJQUlMR3dFQmZ5QUFCRUFnQUNnQ0NDSUJCRUFnQVJBSkN5QUFFQWtMQ3pFQkFuOUJBVUVNRUF3aUFBUkFJQUJCQ2pZQ0JDQUFRUXBCQkJBTUlnRTJBZ2dnQVFSQUlBQVBDeUFBRUFrTFFRQUxVd0VDZnlBQVFRQTJBakFnQUNBQUtBSWdOZ0lrSUFFZ0FDZ0NBQ0FBS0FJY0VRa0FJUVFnQUNnQ1JDRUNJQVJGQkVBZ0FDQUNRUVJ5TmdKRVFRQVBDeUFBSUFFM0F6Z2dBQ0FDUVh0eE5nSkVRUUVMaGdNQ0JYOEtmaU1BUVNCcklnTWtBQUpBSUFBb0FoQWlCVVVFUUVFQklRSU1BUXNDUUNBQU5BSUFJZ2RDQUZNTkFDQUFOQUlFSWdoQ0FGTU5BQ0FBTkFJSUlnbENBRk1OQUNBQU5BSU1JZ3BDQUZNTkFDQUFLQUlZSVFBZ0IwSUJmU0VNSUFoQ0FYMGhEU0FKUWdGOUlRa2dDa0lCZlNFS0EwQWdBQ0FNSUFBb0FnQWlBcTBpQjN3Z0I0QWlDejRDRUNBQUlBMGdBQ2dDQkNJR3JTSUhmQ0FIZ0NJT1BnSVVRZ0VnQURVQ0tDSUhoaUlQUWdGOUlnZ2dDU0FDckNJUWZDQVFmOFI4SUFlSHB5QUlJQXZFZkNBSGg2ZHJJZ0pCQUVnRVFDQURJQUkyQWdRZ0F5QUVOZ0lBSUFGQkFVSGo1QUFnQXhBSVFRQWhBZ3dEQ3lBQUlBSTJBZ2dnQ0NBS0lBYXNJZ3Q4SUF0L3hId2dCNGVuSUE3RUlBOThRZ0Y5SUFlSHAyc2lBa0VBU0FSQUlBTWdBallDRkNBRElBUTJBaEFnQVVFQlFhamxBQ0FEUVJCcUVBaEJBQ0VDREFNTElBQWdBallDRENBQVFUUnFJUUJCQVNFQ0lBUkJBV29pQkNBRlJ3MEFDd3dCQ3lBQlFRRkJwek5CQUJBSUN5QURRU0JxSkFBZ0FndlhCZ0VHZnlBQUJFQUNRQ0FBS0FJQUJFQWdBQ2dDRENJQkJFQWdBUkFwSUFBb0Fnd1FDU0FBUVFBMkFnd0xJQUFvQWhBaUFRUkFJQUVRQ1NBQVFnQTNBeEFMSUFBb0FrQVFDU0FBUWdBM0Fqd01BUXNnQUNnQ0xDSUJCRUFnQVJBSklBQkJBRFlDTEFzZ0FDZ0NJQ0lCQkVBZ0FSQUpJQUJDQURjRElBc2dBQ2dDTkNJQlJRMEFJQUVRQ1NBQVFnQTNBalFMSUFBb0F0QUJFRTRnQUNnQ25BRWlBUVJBSUFBb0FtZ2dBQ2dDYkd3aUF3Ui9BMEFnQVJBcElBRkJqQ3hxSVFFZ0FrRUJhaUlDSUFOSERRQUxJQUFvQXB3QkJTQUJDeEFKSUFCQkFEWUNuQUVMSUFBb0FuUWlBUVJBSUFBb0FuQWlBZ1JBUVFBaEFRTkFJQUFvQW5RZ0FVRURkR29vQWdBaUF3UkFJQU1RQ1NBQUtBSndJUUlMSUFGQkFXb2lBU0FDU1EwQUN5QUFLQUowSVFFTElBQkJBRFlDY0NBQkVBa2dBRUVBTmdKMEN5QUFLQUtJQVJBSklBQkJBRFlDZUNBQVFRQTJBb2dCSUFBb0FtUVFDU0FBUVFBMkFtUWdBQzBBdkFGQkFuRkZCRUFnQUNnQ3FBRVFDUXNnQUVIUUFHcEJBRUh3QUJBT0dpQUFLQUxBQVJBdElBQkJBRFlDd0FFZ0FDZ0N4QUVRTFNBQVFRQTJBc0FCSUFBb0FzZ0JJZ0VFUUNBQktBSWNJZ0lFUUNBQ0VBa2dBVUVBTmdJY0N5QUJLQUlvSWdJRVFDQUJLQUlrQkVBRFFDQUNJQVZCS0d3aUEyb29BaVFpQkFSQUlBUVFDU0FCS0FJb0lnSWdBMnBCQURZQ0pBc2dBaUFEYWlnQ0VDSUVCRUFnQkJBSklBRW9BaWdpQWlBRGFrRUFOZ0lRQ3lBQ0lBTnFLQUlZSWdRRVFDQUVFQWtnQVNnQ0tDSUNJQU5xUVFBMkFoZ0xJQVZCQVdvaUJTQUJLQUlrU1EwQUN3c2dBaEFKSUFGQkFEWUNLQXNnQVJBSkN5QUFRUUEyQXNnQklBQW9Ba2dRR0NBQVFRQTJBa2dnQUNnQ1RCQVlJQUJCQURZQ1RDQUFLQUxVQVNJREJFQUNRQ0FES0FJSVJRMEFJQU1vQWd3RVFDQURRUUEyQWlnRFFDQURLQUlZUVFCS0RRQUxDeUFEUVFFMkFoQWdBeWdDQUJBSklBTW9BaHdpQWtVTkFBTkFJQUlvQWdRaEFTQUNFQWtnQXlBQk5nSWNJQUVpQWcwQUN3c2dBeWdDSkNJQ0JFQWdBaWdDQkNJRlFRQktCRUJCQUNFQkEwQWdBaWdDQUNBQlFReHNhaUlFS0FJSUlnWUVRQ0FFS0FJRUlBWVJBZ0FnQWlnQ0JDRUZDeUFCUVFGcUlnRWdCVWdOQUFzTElBSW9BZ0FRQ1NBQ0VBa0xJQU1RQ1FzZ0FFRUFOZ0xVQVNBQUVBa0xDK1lEQWdoL0JINGdBQ2dDRkNnQ0FDZ0NGQ0FCUWN3QWJHb2lDU2dDRENJSUlBQW9BaGdvQWhnZ0FVRTBiR29pQ2pVQ0JDSVFRZ0Y5SWhJZ0FEVUNQSHdnRUlDbklnc2dDQ0FMU1JzaERDQUpLQUlJSWdnZ0NqVUNBQ0lSUWdGOUloTWdBRFVDT0h3Z0VZQ25JZ29nQ0NBS1NSc2hDaUFKS0FJRUlnZ2dFaUFBTlFJMGZDQVFnS2NpQ3lBSUlBdExHeUVMSUFrb0FnQWlDQ0FUSUFBMUFqQjhJQkdBcHlJTklBZ2dEVXNiSVExQkFDRUlJQUFvQWlBb0F0QXJJQUZCdUFoc2FpZ0NGQ0VPQWtBZ0NTZ0NGRUVBSUFKclFYOGdBaHRxSWdKRkJFQWdDaUVBSUEwaENDQUxJUUVNQVFzZ0EwRUJjU0FDUVFGcklnOTBJZ2tnRFVrRVFDQU5JQWxyclVKL0lBS3RJaENHUW4rRmZDQVFpS2NoQ0F0QkFDRUFRUUFoQVNBRFFRRjJJQTkwSWdNZ0Mwa0VRQ0FMSUFOcnJVSi9JQUt0SWhDR1FuK0ZmQ0FRaUtjaEFRc2dDU0FLU1FSQUlBb2dDV3V0UW44Z0FxMGlFSVpDZjRWOElCQ0lweUVBQ3lBRElBeFBCRUJCQUNFTURBRUxJQXdnQTJ1dFFuOGdBcTBpRUlaQ2Y0VjhJQkNJcHlFTUMwRi9JQUJCQWtFRElBNUJBVVliSWdKcUlnTWdBQ0FEU3hzZ0JFdEJmeUFDSUF4cUlnQWdBQ0FNU1JzZ0JVdHhJQWdnQW1zaUFFRUFJQUFnQ0UwYklBWkpjU0FCSUFKcklnQkJBQ0FBSUFGTkd5QUhTWEVMb2dFQkJuOGdBQVJBSUFBb0FnUWlBZ1JBSUFJUUNTQUFRUUEyQWdRTElBRUVRQ0FBSVFJRFFDQUNLQUxJQVNJREJFQkJBQ0VGSUFJb0FzUUJJZ1FFZndOQUlBTW9BZ3dpQmdSQUlBWVFDU0FEUVFBMkFnd2dBaWdDeEFFaEJBc2dBMEVRYWlFRElBVkJBV29pQlNBRVNRMEFDeUFDS0FMSUFRVWdBd3NRQ1NBQ1FRQTJBc2dCQ3lBQ1FmQUJhaUVDSUFkQkFXb2lCeUFCUncwQUN3c2dBQkFKQ3d2VkdRSVRmd043SUFBb0FnQWlDaUFBS0FJTUlnMUJCWFFpQldvaEJpQUtJQVZySVJZZ0FDZ0NFQ0VGSUFBb0Fod2hDeUFBS0FJVUlRa2dBQ2dDQ0NFT0FrQUNRQUpBQWtBZ0EwRUlTUTBBSUFGQkQzRU5BQ0FHUVE5eFJRMEJDeUFGSUFsUERRSUNRQUpBSUFOQkFXc09BZ0FCQXdzQ1FDQUpJQVZySWdoQkdFa05BQ0FCSUFWQkFuUnFJUWNnRFVFRmRDSUVJQW9nQlVFR2RHcHFJQUVnQ1VFQ2RHcEpCRUFnQnlBS0lBbEJCblJxSUFScVFUeHJTUTBCQ3lBRi9SSDlEQUFBQUFBQkFBQUFBZ0FBQUFNQUFBRDlyZ0VoR0NBRklBaEJmSEVpRDJvaEJVRUFJUVFEUUNBR0lCaEJCUDJyQVNJWC9Sc0FRUUowYWlBSElBUkJBblJxL1FBQ0FDSVovUjhBT0FJQUlBWWdGLzBiQVVFQ2RHb2dHZjBmQVRnQ0FDQUdJQmY5R3dKQkFuUnFJQm45SHdJNEFnQWdCaUFYL1JzRFFRSjBhaUFaL1I4RE9BSUFJQmo5REFRQUFBQUVBQUFBQkFBQUFBUUFBQUQ5cmdFaEdDQUVRUVJxSWdRZ0QwY05BQXNnQ0NBUFJnMEVDeUFGSVFRZ0NTQUZhMEVEY1NJSEJFQkJBQ0VJQTBBZ0JpQUVRUVowYWlBQklBUkJBblJxS2dJQU9BSUFJQVJCQVdvaEJDQUlRUUZxSWdnZ0IwY05BQXNMSUFVZ0NXdEJmRXNOQXdOQUlBWWdCRUVHZEdvZ0FTQUVRUUowYWlvQ0FEZ0NBQ0FHSUFSQkFXb2lCVUVHZEdvZ0FTQUZRUUowYWlvQ0FEZ0NBQ0FHSUFSQkFtb2lCVUVHZEdvZ0FTQUZRUUowYWlvQ0FEZ0NBQ0FHSUFSQkEyb2lCVUVHZEdvZ0FTQUZRUUowYWlvQ0FEZ0NBQ0FFUVFScUlnUWdDVWNOQUFzTUF3c2dBU0FDUVFKMGFpRUlBa0FnQ1NBRmF5SVBRVHhKQkVBZ0JTRUVEQUVMSUFvZ0JVRUdkQ0FOUVFWMGFtb2lCQ0FKSUFWQmYzTnFJZ2RCQm5RaUVHb2dCRWtFUUNBRklRUU1BUXNnQkVFRWFpSUVJQkJxSUFSSkJFQWdCU0VFREFFTElBZEIvLy8vSDBzRVFDQUZJUVFNQVFzZ0RVRUZkQ0lFSUFvZ0JVRUdkR3BxSWdjZ0FTQUNJQWxxUVFKMGFra2dDaUFKUVFaMGFpQUVha0U0YXlJRUlBRWdBaUFGYWtFQ2RHcExjUVJBSUFVaEJBd0JDeUFISUFFZ0NVRUNkR3BKSUFFZ0JVRUNkR29nQkVseEJFQWdCU0VFREFFTElBWDlFZjBNQUFBQUFBRUFBQUFDQUFBQUF3QUFBUDJ1QVNFWUlBVWdEMEY4Y1NJUWFpRUVRUUFoQndOQUlBWWdHRUVFL2FzQkloZjlHd0JCQW5ScUloRWdBU0FGSUFkcVFRSjBJZ3hxL1FBQ0FDSVovUjhBT0FJQUlBWWdGLzBiQVVFQ2RHb2lFeUFaL1I4Qk9BSUFJQVlnRi8wYkFrRUNkR29pRkNBWi9SOENPQUlBSUFZZ0YvMGJBMEVDZEdvaUZTQVovUjhET0FJQUlCRWdDQ0FNYXYwQUFnQWlGLzBmQURnQ0JDQVRJQmY5SHdFNEFnUWdGQ0FYL1I4Q09BSUVJQlVnRi8wZkF6Z0NCQ0FZL1F3RUFBQUFCQUFBQUFRQUFBQUVBQUFBL2E0QklSZ2dCMEVFYWlJSElCQkhEUUFMSUE4Z0VFWU5Bd3NnQkVFQmFpRUZJQWtnQkd0QkFYRUVRQ0FHSUFSQkJuUnFJZ2NnQVNBRVFRSjBJZ1JxS2dJQU9BSUFJQWNnQkNBSWFpb0NBRGdDQkNBRklRUUxJQVVnQ1VZTkFnTkFJQVlnQkVFR2RHb2lCU0FCSUFSQkFuUWlCMm9xQWdBNEFnQWdCU0FISUFocUtnSUFPQUlFSUFZZ0JFRUJhaUlGUVFaMGFpSUhJQUVnQlVFQ2RDSUZhaW9DQURnQ0FDQUhJQVVnQ0dvcUFnQTRBZ1FnQkVFQ2FpSUVJQWxIRFFBTERBSUxJQVVnQ1U4TkFTQUJJQUpCQW5ScUlRZ0RRQ0FHSUFWQkJuUnFJZ1FnQVNBRlFRSjBhaW9DQURnQ0FDQUVJQUVnQWlBRmFpSUhRUUowYWlvQ0FEZ0NCQ0FFSUFFZ0FpQUhhaUlIUVFKMGFpb0NBRGdDQ0NBRUlBRWdBaUFIYWlJSFFRSjBhaW9DQURnQ0RDQUVJQUVnQWlBSGFpSUhRUUowYWlvQ0FEZ0NFQ0FFSUFFZ0FpQUhhaUlIUVFKMGFpb0NBRGdDRkNBRUlBRWdBaUFIYWtFQ2RDSUhhaW9DQURnQ0dDQUVJQWNnQ0dvcUFnQTRBaHdnQlVFQmFpSUZJQWxIRFFBTERBRUxJQUVnQWtFQ2RHb2hDQ0FEUVFOR0lRY2dBMEVFUmlFUElBTkJCVVloRUNBRFFRZEdJUkVEUUNBR0lBVkJCblJxSWdRZ0FTQUZRUUowYWlvQ0FEZ0NBQ0FFSUFFZ0FpQUZhaUlNUVFKMGFpb0NBRGdDQkNBRUlBRWdBaUFNYWlJTVFRSjBhaW9DQURnQ0NBSkFJQWNOQUNBRUlBRWdBaUFNYWlJTVFRSjBhaW9DQURnQ0RDQVBEUUFnQkNBQklBSWdER29pREVFQ2RHb3FBZ0E0QWhBZ0VBMEFJQVFnQVNBQ0lBeHFJZ3hCQW5ScUtnSUFPQUlVSUFOQkJrWU5BQ0FFSUFFZ0FpQU1ha0VDZENJTWFpb0NBRGdDR0NBUkRRQWdCQ0FJSUF4cUtnSUFPQUljQ3lBRlFRRnFJZ1VnQ1VjTkFBc0xJQlpCSUdvaEJpQUJJQTVCQW5ScUlRUWdBQ2dDR0NFRkFrQUNRQUpBSUFOQkNFa05BQ0FFUVE5eERRQWdCa0VQY1VVTkFRc2dCU0FMVHcwQkFrQUNRQUpBSUFOQkFXc09BZ0FCQWdzQ1FDQUxJQVZySWdCQkhFa05BQ0FLSUFWQkJuUkJJSElnRFVFRmRDSUNhMm9nQVNBTElBNXFRUUowYWtrRVFDQUJJQVVnRG1wQkFuUnFJQXRCQm5RZ0Ftc2dDbXBCSEd0SkRRRUxJQVFnQlVFQ2RHb2hBeUFGL1JIOURBQUFBQUFCQUFBQUFnQUFBQU1BQUFEOXJnRWhHQ0FGSUFCQmZIRWlBV29oQlVFQUlRSURRQ0FHSUJoQkJQMnJBU0lYL1JzQVFRSjBhaUFESUFKQkFuUnEvUUFDQUNJWi9SOEFPQUlBSUFZZ0YvMGJBVUVDZEdvZ0dmMGZBVGdDQUNBR0lCZjlHd0pCQW5ScUlCbjlId0k0QWdBZ0JpQVgvUnNEUVFKMGFpQVovUjhET0FJQUlCajlEQVFBQUFBRUFBQUFCQUFBQUFRQUFBRDlyZ0VoR0NBQ1FRUnFJZ0lnQVVjTkFBc2dBQ0FCUmcwRUN5QUZJUUlnQ3lBRmEwRURjU0lBQkVCQkFDRUJBMEFnQmlBQ1FRWjBhaUFFSUFKQkFuUnFLZ0lBT0FJQUlBSkJBV29oQWlBQlFRRnFJZ0VnQUVjTkFBc0xJQVVnQzJ0QmZFc05Bd05BSUFZZ0FrRUdkR29nQkNBQ1FRSjBhaW9DQURnQ0FDQUdJQUpCQVdvaUFFRUdkR29nQkNBQVFRSjBhaW9DQURnQ0FDQUdJQUpCQW1vaUFFRUdkR29nQkNBQVFRSjBhaW9DQURnQ0FDQUdJQUpCQTJvaUFFRUdkR29nQkNBQVFRSjBhaW9DQURnQ0FDQUNRUVJxSWdJZ0MwY05BQXNNQXdzZ0JDQUNRUUowYWlFREFrQWdDeUFGYXlJQVFjUUFTUVJBSUFVaEFnd0JDeUFLSUFWQkJuUWlDVUVnY2lBTlFRVjBJZ2hyYWlJSElBc2dCVUYvYzJvaUQwRUdkQ0lRYWlBSFNRUkFJQVVoQWd3QkN5QUtJQWxCSkhJZ0NHdHFJZ2tnRUdvZ0NVa0VRQ0FGSVFJTUFRc2dEMEgvLy84ZlN3UkFJQVVoQWd3QkN5QUtJQVZCQm5SQklISWdEVUVGZENJSmEyb2lEU0FCSUFzZ0Rtb2lDQ0FDYWtFQ2RHcEpJQXRCQm5RZ0NXc2dDbXBCR0dzaUNTQUJJQTVCQW5ScUlBVkJBblJxSWdvZ0FrRUNkR3BMY1FSQUlBVWhBZ3dCQ3lBTklBRWdDRUVDZEdwSklBa2dDa3R4QkVBZ0JTRUNEQUVMSUFYOUVmME1BQUFBQUFFQUFBQUNBQUFBQXdBQUFQMnVBU0VZSUFVZ0FFRjhjU0lKYWlFQ1FRQWhBUU5BSUFZZ0dFRUUvYXNCSWhmOUd3QkJBblJxSWdvZ0JDQUJJQVZxUVFKMElnMXEvUUFDQUNJWi9SOEFPQUlBSUFZZ0YvMGJBVUVDZEdvaURpQVovUjhCT0FJQUlBWWdGLzBiQWtFQ2RHb2lDQ0FaL1I4Q09BSUFJQVlnRi8wYkEwRUNkR29pQnlBWi9SOERPQUlBSUFvZ0F5QU5hdjBBQWdBaUYvMGZBRGdDQkNBT0lCZjlId0U0QWdRZ0NDQVgvUjhDT0FJRUlBY2dGLzBmQXpnQ0JDQVkvUXdFQUFBQUJBQUFBQVFBQUFBRUFBQUEvYTRCSVJnZ0FVRUVhaUlCSUFsSERRQUxJQUFnQ1VZTkF3c2dBa0VCYWlFQUlBc2dBbXRCQVhFRVFDQUdJQUpCQm5ScUlnRWdCQ0FDUVFKMElnSnFLZ0lBT0FJQUlBRWdBaUFEYWlvQ0FEZ0NCQ0FBSVFJTElBQWdDMFlOQWdOQUlBWWdBa0VHZEdvaUFDQUVJQUpCQW5RaUFXb3FBZ0E0QWdBZ0FDQUJJQU5xS2dJQU9BSUVJQVlnQWtFQmFpSUFRUVowYWlJQklBUWdBRUVDZENJQWFpb0NBRGdDQUNBQklBQWdBMm9xQWdBNEFnUWdBa0VDYWlJQ0lBdEhEUUFMREFJTElBUWdBa0VDZEdvaEFTQURRUU5HSVFrZ0EwRUVSaUVLSUFOQkJVWWhEU0FEUVFkR0lRNERRQ0FHSUFWQkJuUnFJZ0FnQkNBRlFRSjBhaW9DQURnQ0FDQUFJQVFnQWlBRmFpSUlRUUowYWlvQ0FEZ0NCQ0FBSUFRZ0FpQUlhaUlJUVFKMGFpb0NBRGdDQ0FKQUlBa05BQ0FBSUFRZ0FpQUlhaUlJUVFKMGFpb0NBRGdDRENBS0RRQWdBQ0FFSUFJZ0NHb2lDRUVDZEdvcUFnQTRBaEFnRFEwQUlBQWdCQ0FDSUFocUlnaEJBblJxS2dJQU9BSVVJQU5CQmtZTkFDQUFJQVFnQWlBSWFrRUNkQ0lJYWlvQ0FEZ0NHQ0FPRFFBZ0FDQUJJQWhxS2dJQU9BSWNDeUFGUVFGcUlnVWdDMGNOQUFzTUFRc2dCU0FMVHcwQUlBUWdBa0VDZEdvaEFRTkFJQVlnQlVFR2RHb2lBQ0FFSUFWQkFuUnFLZ0lBT0FJQUlBQWdCQ0FDSUFWcUlnTkJBblJxS2dJQU9BSUVJQUFnQkNBQ0lBTnFJZ05CQW5ScUtnSUFPQUlJSUFBZ0JDQUNJQU5xSWdOQkFuUnFLZ0lBT0FJTUlBQWdCQ0FDSUFOcUlnTkJBblJxS2dJQU9BSVFJQUFnQkNBQ0lBTnFJZ05CQW5ScUtnSUFPQUlVSUFBZ0JDQUNJQU5xUVFKMElnTnFLZ0lBT0FJWUlBQWdBU0FEYWlvQ0FEZ0NIQ0FGUVFGcUlnVWdDMGNOQUFzTEM1c0RBUVIvSUFFZ0FFRUVhaUlFYWtFQmEwRUFJQUZyY1NJRklBSnFJQUFnQUNnQ0FDSUJha0VFYTAwRWZ5QUFLQUlFSWdNZ0FDZ0NDQ0lHTmdJSUlBWWdBellDQkNBRUlBVkhCRUFnQUNBQVFRUnJLQUlBUVg1eGF5SURJQVVnQkdzaUJDQURLQUlBYWlJRk5nSUFJQU1nQlVGOGNXcEJCR3NnQlRZQ0FDQUFJQVJxSWdBZ0FTQUVheUlCTmdJQUN3Si9JQUVnQWtFWWFrOEVRQ0FBSUFKcVFRaHFJZ01nQVNBQ2EwRUlheUlCTmdJQUlBTWdBVUY4Y1dwQkJHc2dBVUVCY2pZQ0FDQURBbjhnQXlnQ0FFRUlheUlCUWY4QVRRUkFJQUZCQTNaQkFXc01BUXNnQVdjaEJDQUJRUjBnQkd0MlFRUnpJQVJCQW5SclFlNEFhaUFCUWY4ZlRRMEFHa0UvSUFGQkhpQUVhM1pCQW5NZ0JFRUJkR3RCeHdCcUlnRWdBVUUvVHhzTElnRkJCSFFpQkVHZ3hnRnFOZ0lFSUFNZ0JFR294Z0ZxSWdRb0FnQTJBZ2dnQkNBRE5nSUFJQU1vQWdnZ0F6WUNCRUdvemdGQnFNNEJLUU1BUWdFZ0FhMkdoRGNEQUNBQUlBSkJDR29pQVRZQ0FDQUFJQUZCZkhGcURBRUxJQUFnQVdvTFFRUnJJQUUyQWdBZ0FFRUVhZ1ZCQUFzTHdnRUJBMzhDUUNBQklBSW9BaEFpQXdSL0lBTUZJQUlRTncwQklBSW9BaEFMSUFJb0FoUWlCR3RMQkVBZ0FpQUFJQUVnQWlnQ0pCRUFBQThMQWtBQ1FDQUNLQUpRUVFCSURRQWdBVVVOQUNBQklRTURRQ0FBSUFOcUlnVkJBV3N0QUFCQkNrY0VRQ0FEUVFGcklnTU5BUXdDQ3dzZ0FpQUFJQU1nQWlnQ0pCRUFBQ0lFSUFOSkRRSWdBU0FEYXlFQklBSW9BaFFoQkF3QkN5QUFJUVZCQUNFREN5QUVJQVVnQVJBTEdpQUNJQUlvQWhRZ0FXbzJBaFFnQVNBRGFpRUVDeUFFQzFrQkFYOGdBQ0FBS0FKSUlnRkJBV3NnQVhJMkFrZ2dBQ2dDQUNJQlFRaHhCRUFnQUNBQlFTQnlOZ0lBUVg4UEN5QUFRZ0EzQWdRZ0FDQUFLQUlzSWdFMkFod2dBQ0FCTmdJVUlBQWdBU0FBS0FJd2FqWUNFRUVBQzh3Q0FRUi9JQUVnQVAwQUFnRDlDd0lBSUFFb0FoZ2lBZ1JBSUFFb0FoQWlBd1IvUVFBaEFnTkFJQUVvQWhnZ0FrRTBiR29vQWl3aUJBUkFJQVFRQ1NBQktBSVFJUU1MSUFKQkFXb2lBaUFEU1EwQUN5QUJLQUlZQlNBQ0N4QUpJQUZCQURZQ0dBc2dBU0FBS0FJUUlnSTJBaEFnQVNBQ1FUUnNFQTBpQWpZQ0dDQUNCRUFnQVNnQ0VBUkFRUUFoQXdOQUlBSWdBMEUwYkNJRmFpSUNJQUFvQWhnZ0JXb2lCUDBBQWdEOUN3SUFJQUlnQkNnQ01EWUNNQ0FDSUFUOUFBSWcvUXNDSUNBQ0lBVDlBQUlRL1FzQ0VDQUJLQUlZSWdJZ0JXcEJBRFlDTENBRFFRRnFJZ01nQVNnQ0VFa05BQXNMSUFFZ0FDZ0NGRFlDRkNBQklBQW9BaUFpQWpZQ0lDQUNCRUFnQVNBQ0VBMGlBallDSENBQ1JRUkFJQUZDQURjQ0hBOExJQUlnQUNnQ0hDQUFLQUlnRUFzYUR3c2dBVUVBTmdJY0R3c2dBVUVBTmdJUUlBRkJBRFlDR0FzRUFFRUJDOFlCQVFOL0EwQWdBRUVFZENJQlFhVEdBV29nQVVHZ3hnRnFJZ0kyQWdBZ0FVR294Z0ZxSUFJMkFnQWdBRUVCYWlJQVFjQUFSdzBBQzBFd0VHWWFJd0JCRUdzaUFDUUFBa0FnQUVFTWFpQUFRUWhxRUFNTkFFR3d6Z0ZCQ0NBQUtBSU1RUUowUVFScUVCc2lBVFlDQUNBQlJRMEFRUWdnQUNnQ0NCQWJJZ0VFUUVHd3pnRW9BZ0FpQWlBQUtBSU1RUUowYWtFQU5nSUFJQUlnQVJBQ1JRMEJDMEd3emdGQkFEWUNBQXNnQUVFUWFpUUFRY3pPQVVFcU5nSUFRWlRQQVVIWXp3RTJBZ0FMa0FZQ0JYOERleU1BUVJCcklnWWtBQUovSUFBb0FnaEJFRVlFUUNBQUtBS2NBU0FBS0FMTUFVR01MR3hxREFFTElBQW9BZ3dMSVFBQ1FDQURLQUlBSWdWRkJFQkJBQ0VDSUFSQkFVSEFFMEVBRUFnTUFRc2dBQ2dDMENzaENTQURJQVZCQVdzMkFnQWdBaUFHUVF4cVFRRVFDaUFKSUFGQnVBaHNhaUlISUFZb0Fnd2lBRUVGZGpZQ3BBWWdCeUFBUVI5eElnRTJBaGdnQWtFQmFpRUFJQU1DZndKL0FrQUNmd0pBQWtBZ0FRNENBQU1CQ3lBREtBSUFEQUVMSUFNb0FnQkJBWFlMSWdWQjRnQlBCSDhnQmtMaGdJQ0FrQXczQWdRZ0JpQUZOZ0lBSUFSQkFrSFYrQUFnQmhBSUlBY29BaGdGSUFFTEJFQWdCU0lCRFFGQkFBd0NDeUFGQkVBZ0IwRWNhaUVCUVFBaEFnTkFJQUFnQmtFTWFrRUJFQW9nQWtIZ0FFMEVRQ0FHS0FJTUlRUWdBU0FDUVFOMGFpSUlRUUEyQWdRZ0NDQUVRUU4yTmdJQUN5QUFRUUZxSVFBZ0FrRUJhaUlDSUFWSERRQUxDMEVBSVFJZ0F5Z0NBQ0lBSUFWSkRRTWdBQ0FGYXd3Q0N5QUhRUnhxSVFSQkFDRUNBMEFnQUNBR1FReHFRUUlRQ2lBQ1FlQUFUUVJBSUFRZ0FrRURkR29pQlNBR0tBSU1JZ2hCL3c5eE5nSUVJQVVnQ0VFTGRqWUNBQXNnQUVFQ2FpRUFJQUpCQVdvaUFpQUJSdzBBQ3lBQlFRRjBDeUVBUVFBaEFpQURLQUlBSWdFZ0FFa05BU0FCSUFCckN6WUNBRUVCSVFJZ0J5Z0NHRUVCUncwQUlBZEJIR29oQkNBSC9Ra0NIQ0VNSUFjb0FpQWhBLzBNQVFBQUFBSUFBQUFEQUFBQUJBQUFBQ0VMUVFBaEFRTkFJQVFnQVVFRGRHb2lBRUVZYWlBTUlBdjlEUC8vLy8vLy8vLy8vLy8vLy8vLy8vLzlyZ0VpQ3YwYkFFRURidjBSSUFyOUd3RkJBMjc5SEFFZ0N2MGJBa0VEYnYwY0FpQUsvUnNEUVFOdS9Sd0QvYkVCL1F3QUFBQUFBQUFBQUFBQUFBQUFBQUFBL2JnQklncjlXZ0lBQWlBQVFSQnFJQXI5V2dJQUFTQUFRUWhxSUFyOVdnSUFBQ0FFSUFGQkJHb2lBVUVEZEdvaUJTQUsvVm9DQUFNZ0FDQUROZ0ljSUFBZ0F6WUNGQ0FBSUFNMkFnd2dCU0FETmdJRUlBdjlEQVFBQUFBRUFBQUFCQUFBQUFRQUFBRDlyZ0VoQ3lBQlFlQUFSdzBBQ3dzZ0JrRVFhaVFBSUFJTG53WUJCbjhqQUVFZ2F5SUdKQUFDZnlBQUtBSUlRUkJHQkVBZ0FDZ0NuQUVnQUNnQ3pBRkJqQ3hzYWd3QkN5QUFLQUlNQ3lFRkFrQWdBeWdDQUVFRVRRUkFRUUFoQUNBRVFRRkJuUk5CQUJBSURBRUxJQUlnQlNnQzBDc2dBVUc0Q0d4cUlnVWlDVUVFYWtFQkVBb2dCU0FGS0FJRVFRRnFJZ2MyQWdRZ0IwRWlUd1JBSUFaQklUWUNCQ0FHSUFjMkFnQWdCRUVCUWZrNUlBWVFDRUVBSVFBTUFRc2dCeUFBS0FLZ0FTSUlUUVJBSUFZZ0J6WUNHQ0FHSUFnMkFoUWdCaUFCTmdJUUlBUkJBVUhFK3dBZ0JrRVFhaEFJSUFBZ0FDZ0NDRUdBZ0FKeU5nSUlRUUFoQUF3QkN5QUNRUUZxSUFWQkNHcEJBUkFLSUFVZ0JTZ0NDRUVDYWpZQ0NDQUNRUUpxSUFWQkRHcEJBUkFLSUFVZ0JTZ0NERUVDYWlJQU5nSU1Ba0FDUUNBRktBSUlJZ0ZCQ2tzTkFDQUFRUXBMRFFBZ0FDQUJha0VOU1EwQkMwRUFJUUFnQkVFQlFjTXBRUUFRQ0F3QkN5QUNRUU5xSUFWQkVHcEJBUkFLSUFVdEFCQkJnQUZ4QkVCQkFDRUFJQVJCQVVHTE1rRUFFQWdNQVFzZ0FrRUVhaUFGUVJScVFRRVFDaUFGS0FJVVFRSlBCRUJCQUNFQUlBUkJBVUhLTVVFQUVBZ01BUXNnQXlBREtBSUFRUVZySWdjMkFnQkJBU0VBSUFVb0FnUWhBU0FGTFFBQVFRRnhSUVJBSUFGRkRRRWdCVUd3QjJvaEFTQUZRYXdHYWlFQ1FRQWhCUU5BSUFJZ0JVRUNkQ0lBYWtFUE5nSUFJQUFnQVdwQkR6WUNBRUVCSVFBZ0JVRUJhaUlGSUFrb0FnUkpEUUFMREFFTElBRWdCMDBFUUFKQUlBRkZCRUJCQUNFQkRBRUxJQUpCQldvZ0JrRWNha0VCRUFvZ0JTQUdLQUljSWdCQkJIWTJBckFISUFVZ0FFRVBjVFlDckFZZ0JTZ0NCQ0lCUVFKUEJFQWdCVUd3QjJvaEJ5QUZRYXdHYWlFSUlBSkJCbW9oQUVFQklRVURRQ0FBSUFaQkhHcEJBUkFLQWtBZ0JpZ0NIQ0lCUVJCUEJFQWdBVUVQY1NJQ0RRRUxRUUFoQUNBRVFRRkI4QzFCQUJBSURBVUxJQWdnQlVFQ2RDSUthaUFDTmdJQUlBY2dDbW9nQVVFRWRqWUNBQ0FBUVFGcUlRQWdCVUVCYWlJRklBa29BZ1FpQVVrTkFBc0xJQU1vQWdBaEJ3c2dBeUFISUFGck5nSUFRUUVoQUF3QkMwRUFJUUFnQkVFQlFaMFRRUUFRQ0FzZ0JrRWdhaVFBSUFBTFVnQWdBU0FBTFFBQU9nQUhJQUVnQUMwQUFUb0FCaUFCSUFBdEFBSTZBQVVnQVNBQUxRQURPZ0FFSUFFZ0FDMEFCRG9BQXlBQklBQXRBQVU2QUFJZ0FTQUFMUUFHT2dBQklBRWdBQzBBQnpvQUFBdVNBUUVFZnlBQUlBRTJBcUFCQWtBZ0FDZ0NTQ0lEUlEwQUlBTW9BaGdpQmtVTkFDQUFLQUlNSWdSRkRRQWdCQ2dDMEN0RkRRQWdBeWdDRUNJRVJRUkFRUUVQQzBFQUlRTURRQ0FCSUFBb0Fnd29BdEFySUFOQnVBaHNhaWdDQkU4RVFDQUNRUUZCbzhRQVFRQVFDRUVBRHdzZ0JpQURRVFJzYWlBQk5nSW9RUUVoQlNBRFFRRnFJZ01nQkVjTkFBc0xJQVVMckFjQ0NYOElmaU1BUVJCcklnb2tBQUpBSUFKRkJFQWdBMEVCUVlyV0FFRUFFQWdNQVFzZ0FpZ0NFQ0lMSUFBb0FrZ2lCaWdDRUVrRVFDQURRUUZCa000QVFRQVFDQXdCQ3lBRUlBQW9BbWdpQlNBQUtBSnNiQ0lIVHdSQUlBb2dCRFlDQUNBS0lBZEJBV3MyQWdRZ0EwRUJRWWY3QUNBS0VBaEJBQ0VGREFFTElBSWdBQ2dDVkNBRUlBVWdCQ0FGYmlJSGJHc2lDQ0FBS0FKY2JHb2lCVFlDQUNBQ0lBVWdCaWdDQUNJR0lBVWdCa3NiSWdZMkFnQWdBaUFBS0FKVUlBQW9BbHdnQ0VFQmFteHFJZ1UyQWdnZ0FpQUZJQUFvQWtnb0FnZ2lDQ0FGSUFoSkd5SUlOZ0lJSUFJZ0FDZ0NXQ0FBS0FKZ0lBZHNhaUlGTmdJRUlBSWdCU0FBS0FKSUtBSUVJZ2tnQlNBSlN4c2lDVFlDQkNBQ0lBQW9BbGdnQUNnQ1lDQUhRUUZxYkdvaUJUWUNEQ0FDSUFVZ0FDZ0NTQ2dDRENJSElBVWdCMGtiSWdVMkFnd2dBQ2dDU0NJTUtBSVFJZ2NFUUNBRnJFSUJmU0VSSUFpc1FnRjlJUklnQ2ExQ0FYMGhFeUFHclVJQmZTRVVJQXdvQWhnaENDQUNLQUlZSVFWQkFDRUdBMEFnQlNBSUlBWkJOR3hxS0FJb0lnazJBaWdnQlNBVUlBVW9BZ0FpREswaURud2dEb0FpRlQ0Q0VDQUZJQk1nQlNnQ0JDSU5yU0lPZkNBT2dDSVFQZ0lVSUFWQ2Z5QUpyU0lPaGlJUElCREVmU0FPaDZjZ0R5QVJJQTJzSWhCOElCQi94SDBnRG9lbmF6WUNEQ0FGSUE4Z0ZjUjlJQTZIcHlBUElCSWdES3dpRDN3Z0QzL0VmU0FPaDZkck5nSUlJQVZCTkdvaEJTQUdRUUZxSWdZZ0IwY05BQXNMSUFjZ0Mwa0VRQ0FDS0FJWUlRVURRQ0FGSUFkQk5Hd2lCbW9vQWl3UUNTQUNLQUlZSWdVZ0JtcEJBRFlDTENBSFFRRnFJZ2NnQWlnQ0VFa05BQXNnQWlBQUtBSklLQUlRTmdJUUN5QUFLQUpNSWdVRVFDQUZFQmdMSUFCQkFVRWtFQXdpQnpZQ1RFRUFJUVVnQjBVTkFDQUNJQWNRT0NBQUlBUTJBaXdnQUNnQ3dBRkJGeUFERUI1RkRRQWdBQ2dDd0FFaUJDZ0NBQ0VHSUFRb0FnZ2hCd0pBSUFZRVFFRUJJUVVnQmtFQmNTRUxJQVpCQVVZRWYwRUFCU0FHUVg1eElRaEJBQ0VHQTBBQ2YwRUFJQVZGRFFBYVFRQWdBQ0FCSUFNZ0J5Z0NBQkVBQUVVTkFCb2dBQ0FCSUFNZ0J5Z0NCQkVBQUVFQVJ3c2hCU0FIUVFocUlRY2dCa0VDYWlJR0lBaEhEUUFMSUFWQkFYTUxJUVlDUUFKQUlBc0VRQ0FHRFFFZ0FDQUJJQU1nQnlnQ0FCRUFBRUVBUnlFRkN5QUVRUUEyQWdBZ0JVRUJjVVVOQVF3REN5QUVRUUEyQWdBTElBQW9Ba2dRR0VFQUlRVWdBRUVBTmdKSURBSUxJQVJCQURZQ0FBc2dBQ0FDRUVBaEJRc2dDa0VRYWlRQUlBVUw4Z01CQlg4Q1FBSkFJQUFvQWp3aUFrVUVRQ0FCS0FJUURRRkJBUThMSUFKQk5Hd1FEU0lGUlEwQklBRW9BaEFFUUNBQktBSVlJUUlEUUNBQ0lBTkJOR3dpQkdvb0Fpd1FDU0FCS0FJWUlnSWdCR3BCQURZQ0xDQURRUUZxSWdNZ0FTZ0NFQ0lFU1EwQUN3c2dBU0FBS0FJOEJIOGdBQ2dDVENnQ0dDRURRUUFoQWdOQUlBVWdBa0UwYkdvaUJDQURJQUFvQWtBZ0FrRUNkR29vQWdCQk5Hd2lCbW9pQS8wQUFnRDlDd0lBSUFRZ0F5Z0NNRFlDTUNBRUlBUDlBQUlnL1FzQ0lDQUVJQVA5QUFJUS9Rc0NFQ0FFSUFBb0Frd29BaGdpQXlBR2FpSUdLQUlrTmdJa0lBUWdCaWdDTERZQ0xDQUdRUUEyQWl3Z0FrRUJhaUlDSUFBb0Fqd2lCa2tOQUFzZ0FTZ0NFQVVnQkFzRWZ5QUFLQUpNS0FJWUlRSkJBQ0VEQTBBZ0FpQURRVFJzSWdScUtBSXNFQWtnQUNnQ1RDZ0NHQ0lDSUFScVFRQTJBaXdnQTBFQmFpSURJQUVvQWhCSkRRQUxJQUFvQWp3RklBWUxOZ0lRSUFFb0FoZ1FDU0FCSUFVMkFoaEJBUThMSUFFb0FoZ2hCQ0FBS0FKTUtBSVlJUU5CQUNFQ0EwQWdCQ0FDUVRSc0lnVnFJZ1FnQXlBRmFpZ0NKRFlDSkNBRUtBSXNFQWtnQVNnQ0dDSUVJQVZxSUFBb0Frd29BaGdpQXlBRmFpSUZLQUlzTmdJc0lBVkJBRFlDTENBQ1FRRnFJZ0lnQVNnQ0VFa05BQXRCQVE4TElBQW9Ba2dRR0NBQVFRQTJBa2hCQUF2T0JBRUlmd0pBSUFKRkRRQUNRQ0FBS0FLZ0FTSUZSUTBBSUFBb0FrZ2lCRVVOQUNBRUtBSVFSUTBBSUFRb0FoZ29BaWdnQlVjTkFDQUNLQUlRSWdoRkRRQWdBaWdDR0NJR0tBSW9EUUFnQmlnQ0xBMEFRUUFoQkNBSVFRaFBCRUFnQ0VGNGNTRUpBMEFnQmlBRVFUUnNhaUFGTmdJb0lBWWdCRUVCY2tFMGJHb2dCVFlDS0NBR0lBUkJBbkpCTkd4cUlBVTJBaWdnQmlBRVFRTnlRVFJzYWlBRk5nSW9JQVlnQkVFRWNrRTBiR29nQlRZQ0tDQUdJQVJCQlhKQk5HeHFJQVUyQWlnZ0JpQUVRUVp5UVRSc2FpQUZOZ0lvSUFZZ0JFRUhja0UwYkdvZ0JUWUNLQ0FFUVFocUlRUWdDa0VJYWlJS0lBbEhEUUFMQ3lBSVFRZHhJZ2dFUUFOQUlBWWdCRUUwYkdvZ0JUWUNLQ0FFUVFGcUlRUWdDMEVCYWlJTElBaEhEUUFMQ3lBQ0lBTVFNQTBBUVFBUEN5QUFLQUpNSWdWRkJFQWdBRUVCUVNRUURDSUZOZ0pNSUFWRkRRRUxJQUlnQlJBNElBQW9Bc0FCUVJZZ0F4QWVSUTBBSUFBb0FzQUJJZ1lvQWdBaEJDQUdLQUlJSVFVQ1FDQUVCRUJCQVNFSElBUkJBWEVoQ0NBRVFRRkdCSDlCQUFVZ0JFRitjU0VKUVFBaEJBTkFBbjlCQUNBSFJRMEFHa0VBSUFBZ0FTQURJQVVvQWdBUkFBQkZEUUFhSUFBZ0FTQURJQVVvQWdRUkFBQkJBRWNMSVFjZ0JVRUlhaUVGSUFSQkFtb2lCQ0FKUncwQUN5QUhRUUZ6Q3lFRUFrQUNRQ0FJQkVBZ0JBMEJJQUFnQVNBRElBVW9BZ0FSQUFCQkFFY2hCd3NnQmtFQU5nSUFJQWRCQVhGRkRRRU1Bd3NnQmtFQU5nSUFDeUFBS0FKSUVCZ2dBRUVBTmdKSVFRQVBDeUFHUVFBMkFnQUxJQUFnQWhCQUlRY0xJQWNMK0FRQkJuOENRRUVCUVRBUURDSUNCSDhnQWlBQUtBTElBU0lCL1FBREFQMExBd0FnQWlBQktRTVFOd01RSUFJZ0FTZ0NHQ0lCTmdJWUlBSWdBVUVZYkJBTklnRTJBaHdnQVVVRVFDQUNFQWxCQUE4TEFrQWdBQ2dDeUFFb0Fod2lBd1JBSUFFZ0F5QUNLQUlZUVJoc0VBc2FEQUVMSUFFUUNTQUNRUUEyQWh3TElBSWdBQ2dDeUFFb0FpUWlBVFlDSkNBQ0lBRkJLQkFNSWdFMkFpZ2dBVVVFUUNBQ0tBSWNFQWtnQWhBSlFRQVBDd0pBSUFBb0FzZ0JLQUlvQkVBZ0FpZ0NKRVVOQVFOQUlBRWdCVUVvYkNJRGFpQUFLQUxJQVNnQ0tDQURhaWdDRkNJQk5nSVVJQUZCR0d3UURTRUJJQUlvQWlnaUJDQURhaUlHSUFFMkFoZ2dBVVVFUUNBRkJIOUJBQ0VCQTBBZ0FpZ0NLQ0FCUVNoc2FpZ0NHQkFKSUFGQkFXb2lBU0FGUncwQUN5QUNLQUlvQlNBRUN4QUpEQVVMQWtBZ0FDZ0N5QUVvQWlnZ0Eyb29BaGdpQkFSQUlBRWdCQ0FHS0FJVVFSaHNFQXNhSUFJb0FpZ2hBUXdCQ3lBQkVBa2dBaWdDS0NJQklBTnFRUUEyQWhnTElBRWdBMm9nQUNnQ3lBRW9BaWdnQTJvb0FnUWlBVFlDQkNBQlFSaHNFQTBoQVNBQ0tBSW9JZ1FnQTJvaUJpQUJOZ0lRSUFGRkJFQWdCUVIvUVFBaEFRTkFJQUZCS0d3aUFDQUNLQUlvYWlnQ0dCQUpJQUlvQWlnZ0FHb29BaEFRQ1NBQlFRRnFJZ0VnQlVjTkFBc2dBaWdDS0FVZ0JBc1FDUXdGQ3dKQUlBQW9Bc2dCS0FJb0lBTnFLQUlRSWdRRVFDQUJJQVFnQmlnQ0JFRVliQkFMR2lBQ0tBSW9JUUVNQVFzZ0FSQUpJQUlvQWlnaUFTQURha0VBTmdJUUN5QUJJQU5xUWdBM0FpQWdCVUVCYWlJRklBSW9BaVJKRFFBTERBRUxJQUVRQ1NBQ1FRQTJBaWdMSUFJRlFRQUxEd3NnQWlnQ0hCQUpJQUlRQ1VFQUM2QUdBZzUvQVhzakFFRVFheUlJSkFBZ0FDZ0NTQ2dDRUNFTklBaEJBVUU0RUF3aUFUWUNEQUpBSUFGRkRRQWdBU0FBS0FKSUtBSVFJZ2syQWhnZ0FTQUEvUUFDVlAwTEFnQWdBU0FBS0FKb05nSVFJQUFvQW13aEFpQUJRUUEyQWpRZ0FTQUNOZ0lVSUFFZ0FDZ0NEQ0lNS0FJQU5nSWdJQUVnRENnQ0JEWUNKQ0FCSUF3b0FnZzJBaWdnQVNBTUtBSVFOZ0lzSUFFZ0NVRzRDQkFNSWdBMkFqQWdBQVJBSUEwRVFBTkFJQTVCdUFoc0lnQWdBU2dDTUdvaUJTQU1LQUxRS3lBQWFpSUUvUUFDQUNJUC9Rc0NCQ0FGSUFRb0FoQTJBaFFnQlNBRUtBSVVOZ0lZSUEvOUd3RWlBRUVnVFFSQUlBVkJ0QWRxSUFSQnNBZHFJQUFRQ3hvZ0JVR3dCbW9nQkVHc0Jtb2dCQ2dDQkJBTEdnc2dCU0FFS0FJWUlnQTJBaHdnQlNBRUtBS2tCallDcUFaQkFTRUdBa0FnQUVFQlJ3UkFJQVFvQWdSQkEyd2lBRUVEYTBIZkFFc05BU0FBUVFKcklRWUxJQVZCcEFOcUlRa2dCVUVnYWlFS0lBUkJIR29oQzBFQUlRQUNRQ0FHUVFoSkRRQWdCQ0FHUVFOMGFrRWNhaUFLU3dSQUlBc2dCU0FHUVFKMGFrR2tBMnBKRFFFTElBWkJmSEVoQUVFQUlRSURRQ0FLSUFKQkFuUWlBMm9nQ3lBQ1FRTjBhaUlIUVJ4cUlBZEJGR29nQjBFTWFpQUgvUWtDQlAxV0FnQUIvVllDQUFMOVZnSUFBLzBMQWdBZ0F5QUphaUFIUVJocUlBZEJFR29nQjBFSWFpQUgvUWtDQVAxV0FnQUIvVllDQUFMOVZnSUFBLzBMQWdBZ0FrRUVhaUlDSUFCSERRQUxJQUFnQmtZTkFRc2dBRUVCY2lFRElBWkJBWEVFUUNBS0lBQkJBblFpQW1vZ0N5QUFRUU4wYWlJQUtBSUVOZ0lBSUFJZ0NXb2dBQ2dDQURZQ0FDQURJUUFMSUFNZ0JrWU5BQU5BSUFvZ0FFRUNkQ0lDYWlBTElBQkJBM1JxSWdNb0FnUTJBZ0FnQWlBSmFpQURLQUlBTmdJQUlBb2dBRUVCYWlJRFFRSjBJZ0pxSUFzZ0EwRURkR29pQXlnQ0JEWUNBQ0FDSUFscUlBTW9BZ0EyQWdBZ0FFRUNhaUlBSUFaSERRQUxDeUFGSUFRb0FxZ0dOZ0tzQmlBT1FRRnFJZzRnRFVjTkFBc0xJQUVoQXd3QkN5QUlRUXhxQkVBZ0NDZ0NEQ0lCS0FJd0lnQUVmeUFBRUFrZ0NDZ0NEQVVnQVFzUUNTQUlRUUEyQWd3TEN5QUlRUkJxSkFBZ0F3djVCQUVJZnlNQVFZQUNheUlESkFBZ0FBUkFRZndNUVJFZ0FoQVZJQU1nQUNnQ0FEWUM4QUVnQWtHYUVTQURRZkFCYWhBUElBTWdBQ2dDQkRZQzRBRWdBa0duRVNBRFFlQUJhaEFQSUFNZ0FDZ0NDRFlDMEFFZ0FrR0NOeUFEUWRBQmFoQVBJQU1nQUNnQ0VEWUN3QUVnQWtIOUVDQURRY0FCYWhBUElBRkJBRW9FUUFOQUlBQW9BdEFySVFRZ0F5QUhOZ0t3QVNBQ1FhSU5JQU5Cc0FGcUVBOGdBeUFFSUFkQnVBaHNhaUlFS0FJQU5nS2dBU0FDUVprUklBTkJvQUZxRUE4Z0F5QUVLQUlFTmdLUUFTQUNRZlEzSUFOQmtBRnFFQThnQXlBRUtBSUlOZ0tBQVNBQ1FhQTJJQU5CZ0FGcUVBOGdBeUFFS0FJTU5nSndJQUpCc0RZZ0EwSHdBR29RRHlBRElBUW9BaEEyQW1BZ0FrR0lFU0FEUWVBQWFoQVBJQU1nQkNnQ0ZEWUNVQ0FDUWJZNElBTkIwQUJxRUE5QjFRdEJGeUFDRUJVZ0JDZ0NCQVJBSUFSQnNBZHFJUVlnQkVHc0Jtb2hDRUVBSVFVRFFDQUlJQVZCQW5RaUNXb29BZ0FoQ2lBRElBWWdDV29vQWdBMkFrUWdBeUFLTmdKQUlBSkJpd3dnQTBGQWF4QVBJQVZCQVdvaUJTQUVLQUlFU1EwQUN3c2dBaEJuSUFNZ0JDZ0NHRFlDTUNBQ1FjQTJJQU5CTUdvUUR5QURJQVFvQXFRR05nSWdJQUpCOFRZZ0EwRWdhaEFQUVFFaEJrSHRDMEVVSUFJUUZRSkFJQVFvQWhoQkFVY0VRQ0FFS0FJRUlnVkJBRXdOQVNBRlFRTnNRUUpySVFZTElBUkJIR29oQ0VFQUlRVURRQ0FESUFnZ0JVRURkR29wQWdCQ0lJazNBeEFnQWtHTERDQURRUkJxRUE4Z0JVRUJhaUlGSUFaSERRQUxDeUFDRUdjZ0F5QUVLQUtvQmpZQ0FDQUNRZUEySUFNUUQwR1pERUVGSUFJUUZTQUhRUUZxSWdjZ0FVY05BQXNMUVpvTVFRUWdBaEFWQ3lBRFFZQUNhaVFBQytZS0F3bC9BWHNCZmlNQVFiQUJheUlGSkFBQ1FDQUJRWUFEY1FSQVFaNHRRUXNnQWhBVkRBRUxBa0FnQVVFQmNVVU5BQ0FBS0FKSUlnWkZEUUFqQUVIUUFHc2lBeVFBUWU0TVFRMGdBaEFWSUFOQkFEb0FUeUFEUVFrNkFFNGdBeUFHS1FJQU53SkVJQU1nQTBIT0FHb2lCRFlDUUNBQ1FZWTVJQU5CUUdzUUR5QURJQVlwQWdnM0FqUWdBeUFFTmdJd0lBSkI5VGdnQTBFd2FoQVBJQU1nQmlnQ0VEWUNKQ0FESUFRMkFpQWdBa0dUTnlBRFFTQnFFQThDUUNBR0tBSVlSUTBBSUFZb0FoQkZEUUFEUUNBRElBTkJ6Z0JxSWdvMkFoQWdBeUFITmdJVUlBSkJqZzBnQTBFUWFoQVBJQVlvQWhnZ0IwRTBiR29oQ0NNQVFUQnJJZ1FrQUNBRVFRazdBQzRnQkVFSk9nQXRJQVFnQ0NrQ0FEY0NKQ0FFSUFSQkxXb2lDVFlDSUNBQ1FjODJJQVJCSUdvUUR5QUVJQWdvQWhnMkFoUWdCQ0FKTmdJUUlBSkJ4VGdnQkVFUWFoQVBJQVFnQ0NnQ0lEWUNCQ0FFSUFrMkFnQWdBa0dxT0NBRUVBOGdCRUV3YWlRQUlBTWdDallDQUNBQ1FaUU1JQU1RRHlBSFFRRnFJZ2NnQmlnQ0VFa05BQXNMUVp3TVFRSWdBaEFWSUFOQjBBQnFKQUFMQWtBZ0FVRUNjVVVOQUNBQUtBSklSUTBBUWZrTlFTUWdBaEFWSUFVZ0FDa0NWRGNEb0FFZ0FrSG5FU0FGUWFBQmFoQVBJQVVnQUNrQ1hEY0RrQUVnQWtIRkVTQUZRWkFCYWhBUElBVWdBQ2tEYURjRGdBRWdBa0hYRVNBRlFZQUJhaEFQSUFBb0Fnd2dBQ2dDU0NnQ0VDQUNFRVJCbkF4QkFpQUNFQlVMQWtBZ0FVRUljVVVOQUNBQUtBSklSUTBBSUFBb0FtZ2dBQ2dDYkd3aUJFVU5BQ0FBS0FLY0FTRURBMEFnQXlBQUtBSklLQUlRSUFJUVJDQURRWXdzYWlFRElBdEJBV29pQ3lBRVJ3MEFDd3NnQVVFUWNVVU5BQ0FBS0FMSUFTRUJRZE1OUVNVZ0FoQVZJQVVnQWYwQUF3RDlDd1J3SUFKQnlTc2dCVUh3QUdvUUQwSEJEVUVSSUFJUUZRSkFJQUVvQWh4RkRRQWdBU2dDR0VVTkFFRUFJUU1EUUNBQktBSWNJQU5CR0d4cUlnQXZBUUFoQkNBQUtRTUlJUTBnQlNBQUtBSVFOZ0pnSUFVZ0RUY0RXQ0FGSUFRMkFsQWdBa0dMT0NBRlFkQUFhaEFQSUFOQkFXb2lBeUFCS0FJWVNRMEFDd3RCbWd4QkJDQUNFQlVDUUNBQktBSW9JZ1JGRFFBZ0FTZ0NKQ0lIUlEwQVFRQWhBMEVBSVFBQ1FDQUhRUVJQQkVBZ0IwRjhjU0VBQTBBZ0JDQURRUU55UVNoc2FrRUVhaUFFSUFOQkFuSkJLR3hxUVFScUlBUWdBMEVCY2tFb2JHcEJCR29nQkNBRFFTaHNhdjBKQWdUOVZnSUFBZjFXQWdBQy9WWUNBQU1nRFAydUFTRU1JQU5CQkdvaUF5QUFSdzBBQ3lBTUlBd2dEUDBOQ0FrS0N3d05EZzhBQVFJREFBRUNBLzJ1QVNJTUlBd2dEUDBOQkFVR0J3QUJBZ01BQVFJREFBRUNBLzJ1QWYwYkFDRURJQUFnQjBZTkFRc0RRQ0FFSUFCQktHeHFLQUlFSUFOcUlRTWdBRUVCYWlJQUlBZEhEUUFMQ3lBRFJRMEFRYkFOUVJBZ0FoQVZJQUVvQWlRRVFDQUJLQUlvSVFCQkFDRUhBMEFnQlNBQUlBZEJLR3dpQkdvb0FnUWlCallDUkNBRklBYzJBa0FnQWtIUk9DQUZRVUJyRUE4Z0FTZ0NLQ0VBQWtBZ0JrVU5BRUVBSVFNZ0FDQUVhaWdDRUVVTkFBTkFJQUVvQWlnZ0JHb29BaEFnQTBFWWJHb2lBUDBBQXdBaERDQUZJQUFwQXhBM0F6Z2dCU0FNL1FzREtDQUZJQU0yQWlBZ0FrR0EwUUFnQlVFZ2FoQVBJQU5CQVdvaUF5QUdSdzBBQ3lBQktBSW9JUUFMQWtBZ0FDQUVhaUlHS0FJWVJRMEFRUUFoQXlBR0tBSVVSUTBBQTBBZ0FDQUVhaWdDR0NBRFFSaHNhaUlBTHdFQUlRWWdBQ2tEQ0NFTklBVWdBQ2dDRURZQ0VDQUZJQTAzQXdnZ0JTQUdOZ0lBSUFKQml6Z2dCUkFQSUFOQkFXb2lBeUFCS0FJb0lnQWdCR29vQWhSSkRRQUxDeUFIUVFGcUlnY2dBU2dDSkVrTkFBc0xRWm9NUVFRZ0FoQVZDMEdjREVFQ0lBSVFGUXNnQlVHd0FXb2tBQXVQQWdFRGZ3SkFRUUZCNkFFUURDSUJCSDhnQVVFQk5nSUFJQUZCQVRZQ3VBRWdBU0FCTFFDOEFVRUdjam9BdkFFZ0FVRUJRWXdzRUF3aUFEWUNEQ0FBUlEwQklBRkJBVUhvQnhBTUlnQTJBaEFnQUVVTkFTQUJRZ0EzQXpBZ0FVRi9OZ0lzSUFGQjZBYzJBaFFDUUVFQlFUQVFEQ0lBQkVBZ0FFRUFOZ0lZSUFCQjVBQTJBaUFnQUVIa0FFRVlFQXdpQWpZQ0hDQUNEUUVnQUJBSkN5QUJRUUEyQXNnQkRBSUxJQUJCQURZQ0tDQUJJQUEyQXNnQklBRVFMaUlBTmdMRUFTQUFSUTBCSUFFUUxpSUFOZ0xBQVNBQVJRMEJBa0FRaWdGRkRRQUxJQUZCQUJCZUlnQTJBdFFCSUFCRkJFQWdBVUVBRUY0aUFEWUMxQUVnQUVVTkFnc2dBUVZCQUFzUEN5QUJFREZCQUF1TkNRSUpmd0YrSXdCQjBBRnJJZ2NrQUNBQUtBSklJUWtDUUFKQUFrQWdBQ2dDYUVFQlJ3MEFJQUFvQW14QkFVY05BQ0FBS0FLY0FTZ0MzQ3NOQVFzZ0FDZ0NDRUVJUmcwQUlBWkJBVUc4emdCQkFCQUlEQUVMQWtBZ0FTZ0NFQ0lNUlEwQUlBQW9BcUFCSVFvZ0FTZ0NHQ0VMSUF4QkNFOEVRQ0FNUVhoeElROERRQ0FMSUFoQk5HeHFJQW8yQWlnZ0N5QUlRUUZ5UVRSc2FpQUtOZ0lvSUFzZ0NFRUNja0UwYkdvZ0NqWUNLQ0FMSUFoQkEzSkJOR3hxSUFvMkFpZ2dDeUFJUVFSeVFUUnNhaUFLTmdJb0lBc2dDRUVGY2tFMGJHb2dDallDS0NBTElBaEJCbkpCTkd4cUlBbzJBaWdnQ3lBSVFRZHlRVFJzYWlBS05nSW9JQWhCQ0dvaENDQU9RUWhxSWc0Z0QwY05BQXNMSUF4QkIzRWlERVVOQUFOQUlBc2dDRUUwYkdvZ0NqWUNLQ0FJUVFGcUlRZ2dEVUVCYWlJTklBeEhEUUFMQ3lBQ0lBTnlJQVJ5SUFWeVJRUkFJQVpCQkVHdk1FRUFFQWdnQUVJQU53SWNJQUFnQUNrQ2FEY0NKQ0FCSUFuOUFBSUEvUXNDQUNBQklBWVFNQ0VJREFFTElBSkJBRWdFUUNBSElBSTJBZ0FnQmtFQlFkZmRBQ0FIRUFoQkFDRUlEQUVMSUFJZ0NTZ0NDQ0lJU3dSQUlBY2dDRFlDRkNBSElBSTJBaEFnQmtFQlFhdmhBQ0FIUVJCcUVBaEJBQ0VJREFFTEFrQWdBaUFKS0FJQUlnaEpCRUFnQnlBSU5nTEVBU0FISUFJMkFzQUJJQVpCQWtHTDVBQWdCMEhBQVdvUUNDQUFRUUEyQWh3Z0NTZ0NBQ0VDREFFTElBQWdBaUFBS0FKVWF5QUFLQUpjYmpZQ0hBc2dBU0FDTmdJQUlBTkJBRWdFUUNBSElBTTJBaUFnQmtFQlFaZmRBQ0FIUVNCcUVBaEJBQ0VJREFFTElBTWdDU2dDRENJQ1N3UkFJQWNnQWpZQ05DQUhJQU0yQWpBZ0JrRUJRZjdmQUNBSFFUQnFFQWhCQUNFSURBRUxBa0FnQXlBSktBSUVJZ0pKQkVBZ0J5QUNOZ0swQVNBSElBTTJBckFCSUFaQkFrSGM0Z0FnQjBHd0FXb1FDQ0FBUVFBMkFpQWdDU2dDQkNFRERBRUxJQUFnQXlBQUtBSllheUFBS0FKZ2JqWUNJQXNnQVNBRE5nSUVRUUFoQ0NBRVFRQk1CRUFnQnlBRU5nSkFJQVpCQVVIVjNBQWdCMEZBYXhBSURBRUxJQVFnQ1NnQ0FDSUNTUVJBSUFjZ0FqWUNWQ0FISUFRMkFsQWdCa0VCUWJMakFDQUhRZEFBYWhBSURBRUxBa0FnQkNBSktBSUlJZ0pMQkVBZ0J5QUNOZ0trQVNBSElBUTJBcUFCSUFaQkFrSFQ0QUFnQjBHZ0FXb1FDQ0FBSUFBb0FtZzJBaVFnQ1NnQ0NDRUVEQUVMSUFBZ0FEVUNYQ0lRSUFRZ0FDZ0NWR3V0ZkVJQmZTQVFnRDRDSkFzZ0FTQUVOZ0lJSUFWQkFFd0VRQ0FISUFVMkFtQWdCa0VCUVpMY0FDQUhRZUFBYWhBSURBRUxJQVVnQ1NnQ0JDSUNTUVJBSUFjZ0FqWUNkQ0FISUFVMkFuQWdCa0VCUVlMaUFDQUhRZkFBYWhBSURBRUxBa0FnQlNBSktBSU1JZ0pMQkVBZ0J5QUNOZ0tVQVNBSElBVTJBcEFCSUFaQkFrR2wzd0FnQjBHUUFXb1FDQ0FBSUFBb0FtdzJBaWdnQ1NnQ0RDRUZEQUVMSUFBZ0FEVUNZQ0lRSUFVZ0FDZ0NXR3V0ZkVJQmZTQVFnRDRDS0FzZ0FTQUZOZ0lNSUFBZ0FDMEFSRUVDY2pvQVJDQUJJQVlRTUNJSVJRUkFRUUFoQ0F3QkN5QUhJQUg5QUFJQS9Rc0VnQUVnQmtFRVFiUTVJQWRCZ0FGcUVBZ0xJQWRCMEFGcUpBQWdDQXVWQWdFSGZ5TUFRU0JySWdVa0FBSi9JQUFvQWtnaUJFVUVRQ0FEUVFGQjFlWUFRUUFRQ0VFQURBRUxRUUJCQkNBRUtBSVFFQXdpQkVVTkFCb2dBUVJBSUFBb0FrZ2hDQU5BQWtBQ1FDQUNJQVpCQW5ScUtBSUFJZ2NnQ0NnQ0VFOEVRQ0FGSUFjMkFoQWdBMEVCUWZrUklBVkJFR29RQ0F3QkN5QUVJQWRCQW5ScUlna29BZ0JGRFFFZ0JTQUhOZ0lBSUFOQkFVR05HaUFGRUFnTElBUVFDVUVBREFNTElBbEJBVFlDQUNBR1FRRnFJZ1lnQVVjTkFBc0xJQVFRQ1NBQUtBSkFFQWtDUUNBQkJFQWdBQ0FCUVFKMElnUVFEU0lETmdKQUlBTkZCRUFnQUVFQU5nSThRUUFNQXdzZ0F5QUNJQVFRQ3hvTUFRc2dBRUVBTmdKQUN5QUFJQUUyQWp4QkFRc2hDaUFGUVNCcUpBQWdDZ3U4QlFFSGZ5QUJRUUZCSkJBTUlnUTJBa2dDUUFKQUlBUkZEUUFDUUNBQktBTEVBVUVTSUFNUUhnUkFJQUVvQXNRQlFSTWdBeEFlRFFFTERBSUxJQUVvQXNRQklnY29BZ0FoQmlBSEtBSUlJUVFDUUNBR0JFQkJBU0VGSUFaQkFVY0VRQ0FHUVg1eElRa0RRQUovUVFBZ0JVVU5BQnBCQUNBQklBQWdBeUFFS0FJQUVRQUFSUTBBR2lBQklBQWdBeUFFS0FJRUVRQUFRUUJIQ3lFRklBUkJDR29oQkNBSVFRSnFJZ2dnQ1VjTkFBc0xBa0FDUUNBR1FRRnhCRUFnQlVVTkFTQUJJQUFnQXlBRUtBSUFFUUFBUVFCSElRVUxJQWRCQURZQ0FDQUZSUTBCREFNTElBZEJBRFlDQUFzTUF3c2dCMEVBTmdJQUN3SkFJQUVvQXNBQlFSUWdBeEFlQkVBZ0FTZ0N3QUZCRlNBREVCNE5BUXNNQWdzZ0FTZ0N3QUVpQnlnQ0FDRUdJQWNvQWdnaEJBSkFJQVlFUUVFQklRVWdCa0VCY1NFSklBWkJBVVlFZjBFQUJTQUdRWDV4SVFaQkFDRUlBMEFDZjBFQUlBVkZEUUFhUVFBZ0FTQUFJQU1nQkNnQ0FCRUFBRVVOQUJvZ0FTQUFJQU1nQkNnQ0JCRUFBRUVBUndzaEJTQUVRUWhxSVFRZ0NFRUNhaUlJSUFaSERRQUxJQVZGQ3lFR0FrQUNRQ0FKQkVBZ0JnMEJJQUVnQUNBRElBUW9BZ0FSQUFCQkFFY2hCUXNnQjBFQU5nSUFJQVZGRFFFTUF3c2dCMEVBTmdJQUN3d0RDeUFIUVFBMkFnQUxJQUpCQVVFa0VBd2lBRFlDQUNBQVJRMEFJQUVvQWtnZ0FCQTRJQUVvQXNnQklBRW9BbXdnQVNnQ2FHd2lBRFlDSkNBQVFTZ1FEQ0VESUFFb0FzZ0JJZ0FnQXpZQ0tBSkFJQU5GRFFBZ0FDZ0NKRVVFUUVFQkR3dEJBQ0VFQTBBZ0F5QUVRU2hzSWdWcUlnQkJBRFlDRkNBQVFlUUFOZ0ljUWVRQVFSZ1FEQ0VBSUFVZ0FTZ0N5QUVpQnlnQ0tDSURhaUFBTmdJWUlBQkZEUUZCQVNFS0lBUkJBV29pQkNBSEtBSWtTUTBBQ3d3QkN5QUNLQUlBRUJoQkFDRUtJQUpCQURZQ0FBc2dDZzhMSUFFb0FrZ1FHQ0FCUVFBMkFraEJBQXNDQUFzRUFFRUJDelFBQWtBZ0FFVU5BQ0FCUlEwQUlBQWdBU2dDQkRZQ3BBRWdBQ0FCS0FJQU5nS2dBU0FBSUFFb0FyaEFRUUp4TmdMZ0FRc0x0QVVCQ0g4Z0FDZ0NHQ0lFS0FJUUlnbEZCRUJCQUE4TElBUW9BaGdoQlNBQUtBSVVLQUlBS0FJVUlRUUNRQUpBSUFGRkJFQkJBQ0VCQTBBZ0JTZ0NHQ0VDSUFRb0Fod2dCQ2dDR0VHWUFXeHFJZ0JCakFGcktBSUFJZ2NnQUVHVUFXc29BZ0FpQ0dzaEF5QUFRWkFCYXlnQ0FDQUFRWmdCYXlnQ0FHc2hBQUpBSUFjZ0NFWU5BQ0FBclNBRHJYNUNJSWhRRFFBTUJBc2dBQ0FEYkNFREFrQkJCQ0FDUVFOMklBSkJCM0ZCQUVkcUlnQWdBRUVEUmhzaUFrVU5BQ0FDclNBRHJYNUNJSWhRRFFBTUJBdEJmeUVBSUFJZ0Eyd2lBaUFCUVg5elN3MENJQVJCekFCcUlRUWdCVUUwYWlFRklBRWdBbW9pQVNFQUlBWkJBV29pQmlBSlJ3MEFDd3dCQzBFQUlRRWdBQ2dDUUVVRVFBTkFJQVVvQWhnaEFpQUVLQUljSUFRb0FoaEJtQUZzYWlJQVFRUnJLQUlBSWdjZ0FFRU1heWdDQUNJSWF5RURJQUJCQ0dzb0FnQWdBRUVRYXlnQ0FHc2hBQUpBSUFjZ0NFWU5BQ0FBclNBRHJYNUNJSWhRRFFBTUJBc2dBQ0FEYkNFREFrQkJCQ0FDUVFOMklBSkJCM0ZCQUVkcUlnQWdBRUVEUmhzaUFrVU5BQ0FDclNBRHJYNUNJSWhRRFFBTUJBdEJmeUVBSUFJZ0Eyd2lBaUFCUVg5elN3MENJQVJCekFCcUlRUWdCVUUwYWlFRklBRWdBbW9pQVNFQUlBWkJBV29pQmlBSlJ3MEFDd3dCQ3dOQUlBVW9BaGdoQWlBRUtBSWNJQVFvQWhoQm1BRnNhaUlBUVl3QmF5Z0NBQ0lISUFCQmxBRnJLQUlBSWdocklRTWdBRUdRQVdzb0FnQWdBRUdZQVdzb0FnQnJJUUFDUUNBSElBaEdEUUFnQUswZ0E2MStRaUNJVUEwQURBTUxJQUFnQTJ3aEF3SkFRUVFnQWtFRGRpQUNRUWR4UVFCSGFpSUFJQUJCQTBZYklnSkZEUUFnQXEwZ0E2MStRaUNJVUEwQURBTUxRWDhoQUNBQ0lBTnNJZ0lnQVVGL2Mwc05BU0FFUWN3QWFpRUVJQVZCTkdvaEJTQUJJQUpxSWdFaEFDQUdRUUZxSWdZZ0NVY05BQXNMSUFBUEMwRi9DOW9FQVF0L0lBQUVRQ0FBS0FJVUlnRUVRQ0FCS0FJQUlnVUVRQ0FGS0FJVUlRTWdCU2dDRUFSL1FSQkJFU0FBTFFBb1FRRnhHeUVJQTBBZ0F5Z0NIQ0lDQkVBZ0F5Z0NJQ0lCUVpnQmJpRUtRUUFoQ1NBQlFaZ0JUd1IvQTBBZ0FpZ0NNQ0lCQkVBZ0FpZ0NOQ0lHUVNodUlRZEJBQ0VFSUFaQktFOEVmd05BSUFFb0FpQVFJaUFCUVFBMkFpQWdBU2dDSkJBaUlBRkJBRFlDSkNBQklBZ1JBZ0FnQVVFb2FpRUJJQVJCQVdvaUJDQUhSdzBBQ3lBQ0tBSXdCU0FCQ3hBSklBSkJBRFlDTUFzZ0FpZ0NWQ0lCQkVBZ0FpZ0NXQ0lHUVNodUlRZEJBQ0VFSUFaQktFOEVmd05BSUFFb0FpQVFJaUFCUVFBMkFpQWdBU2dDSkJBaUlBRkJBRFlDSkNBQklBZ1JBZ0FnQVVFb2FpRUJJQVJCQVdvaUJDQUhSdzBBQ3lBQ0tBSlVCU0FCQ3hBSklBSkJBRFlDVkFzZ0FpZ0NlQ0lCQkVBZ0FpZ0NmQ0lHUVNodUlRZEJBQ0VFSUFaQktFOEVmd05BSUFFb0FpQVFJaUFCUVFBMkFpQWdBU2dDSkJBaUlBRkJBRFlDSkNBQklBZ1JBZ0FnQVVFb2FpRUJJQVJCQVdvaUJDQUhSdzBBQ3lBQ0tBSjRCU0FCQ3hBSklBSkJBRFlDZUFzZ0FrR1lBV29oQWlBSlFRRnFJZ2tnQ2tjTkFBc2dBeWdDSEFVZ0Fnc1FDU0FEUVFBMkFod0xBa0FnQXlnQ0tFVU5BQ0FES0FJa0lnRkZEUUFnQVJBSklBUDlEQUFBQUFBQUFBQUFBQUFBQUFBQUFBRDlDd0lrQ3lBREtBSTBFQWtnQTBITUFHb2hBeUFMUVFGcUlnc2dCU2dDRUVrTkFBc2dCU2dDRkFVZ0F3c1FDU0FGUVFBMkFoUWdBQ2dDRkNnQ0FCQUpJQUFvQWhRaUFVRUFOZ0lBQ3lBQkVBa2dBRUVBTmdJVUN5QUFLQUpFRUFrZ0FCQUpDd3ZMRXdFVmZ5TUFRU0JySWc4a0FDQVBJQVUyQWhnZ0FTQURLQUljUWN3QWJHb29BaHdnQXlnQ0lFR1lBV3hxSVJFQ1FBSkFJQU1vQWlnTkFDQVJLQUlZUlEwQUlCRkJIR29oQ1FOQUFrQWdDU2dDQ0NBSktBSUFSd1IvSUFrb0Fnd2dDU2dDQkVZRlFRRUxEUUFnQXlnQ0pDSUJJQWtvQWhoQktHNVBCRUFnQ0VFQlFZSVZRUUFRQ0F3RUN5QUpLQUlVSUFGQktHeHFJZ0VvQWlBUVd5QUJLQUlrRUZzZ0FTZ0NGQ0FCS0FJUWJDSU5SUTBBSUFFb0FoZ2hBU0FOUVFoUEJFQWdEVUY0Y1NFTFFRQWhDZ05BSUFGQ0FEY0M2QU1nQVVJQU53S29BeUFCUWdBM0F1Z0NJQUZDQURjQ3FBSWdBVUlBTndMb0FTQUJRZ0EzQXFnQklBRkNBRGNDYUNBQlFnQTNBaWdnQVVHQUJHb2hBU0FLUVFocUlnb2dDMGNOQUFzTFFRQWhDaUFOUVFkeElnMUZEUUFEUUNBQlFnQTNBaWdnQVVGQWF5RUJJQXBCQVdvaUNpQU5SdzBBQ3dzZ0NVRWthaUVKSUF4QkFXb2lEQ0FSS0FJWVNRMEFDd3NnQlNFTkFrQWdBaTBBQUVFQ2NVVU5BQ0FIUVFWTkJFQWdDRUVDUWJFZlFRQVFDQXdCQ3dKQUlBVXRBQUJCL3dGR0JFQWdCUzBBQVVHUkFVWU5BUXNnQ0VFQ1Fkc2ZRUUFRQ0F3QkN5QVBJQVZCQm1vaURUWUNHQXRCRkJBTklndEZEUUFDZnlBQUxRQnNRUUZ4QkVBZ0FFRW9haUVISUFBb0FpZ2hEU0FBUVN4cURBRUxJQUl0QUlnc1FRSnhCRUFnQWtHd0tHb2hCeUFDS0FLd0tDRU5JQUpCdkNocURBRUxJQThnQlNBSGFpQU5hellDSENBUFFSaHFJUWNnRDBFY2Fnc2lFaWdDQUNFQUlBdENBRGNDRENBTElBMDJBZ2dnQ3lBTk5nSUFJQXNnQUNBTmFqWUNCQ0FMUVFFUUdVVUVRQ0FMRUYwYUlBc29BZ2dnQ3lnQ0FHc2hHaUFMRUNVZ0dpQU5haUVCQWtBZ0FpMEFBRUVFY1VVTkFDQUhLQUlBSUJJb0FnQWdBV3RxUVFGTkJFQWdDRUVDUVpnaFFRQVFDQXdCQ3dKQUlBRXRBQUJCL3dGR0JFQWdBUzBBQVVHU0FVWU5BUXNnQ0VFQ1FjSWhRUUFRQ0F3QkN5QUJRUUpxSVFFTElCSWdFaWdDQUNBSEtBSUFJQUZyYWpZQ0FDQUhJQUUyQWdBZ0JFRUFOZ0lBSUFZZ0R5Z0NHQ0FGYXpZQ0FFRUJJUmNNQVFzZ0VTZ0NHQVJBSUJGQkhHb2hFQU5BSUFNb0FpUWhBQ0FRS0FJVUlRRUNRQ0FRS0FJSUlCQW9BZ0JIQkg4Z0VDZ0NEQ0FRS0FJRVJnVkJBUXNOQUNBQklBQkJLR3hxSWhRb0FoUWdGQ2dDRUd3aUdFVU5BQ0FVS0FJWUlRbEJBQ0VWQTBBQ1FBSi9JQWtvQWloRkJFQWdDeUFVS0FJZ0lCVWdBeWdDS0VFQmFoQlpEQUVMSUF0QkFSQVpDMFVFUUNBSlFRQTJBaVFNQVFzZ0NTZ0NLRVVFUUVFQUlRRURRQ0FCSWdCQkFXb2hBU0FMSUJRb0FpUWdGU0FBRUZsRkRRQUxJQkFvQWh3aEFTQUpRUU0yQWlBZ0NTQUJOZ0lZSUFrZ0FTQUFhMEVCYWpZQ0hBc2dDUUovUVFFZ0MwRUJFQmxGRFFBYVFRSWdDMEVCRUJsRkRRQWFJQXRCQWhBWklnQkJBMGNFUUNBQVFRTnFEQUVMSUF0QkJSQVpJZ0JCSDBjRVFDQUFRUVpxREFFTElBdEJCeEFaUVNWcUN6WUNKRUVBSVFFRFFDQUJJZ0JCQVdvaEFTQUxRUUVRR1EwQUN5QUpJQWtvQWlBZ0FHbzJBaUFDUUFKQUFuOGdDU2dDS0NJQVJRUkFJQUlvQXRBcklBTW9BaHhCdUFoc2FpZ0NFQ0VBSUFrb0FqQkZCRUFnQ1NnQ0FFSHdBUkFRSWdGRkRRUWdDU0FCTmdJQUlBRWdDU2dDTUVFWWJHcEJBRUh3QVJBT0dpQUpRUW8yQWpBTElBa29BZ0FpQWYwTUFBQUFBQUFBQUFBQUFBQUFBQUFBQVAwTEFnQWdBVUlBTndJUVFRRkJDa0h0QUNBQVFRRnhHeUFBUVFSeEd5RUtRUUFNQVFzZ0NTZ0NBQ0lCSUFCQkFXc2lERUVZYkdvaUNpZ0NCQ0FLS0FJTVJ3MEJJQUlvQXRBcklBTW9BaHhCdUFoc2FpZ0NFQ0VLSUFrb0FqQWlEQ0FBUVFGcVNRUi9JQUVnREVFS2FpSU1RUmhzRUJBaUFVVU5BeUFKSUFFMkFnQWdBU0FKS0FJd1FSaHNha0VBUWZBQkVBNGFJQWtnRERZQ01DQUpLQUlBQlNBQkN5QUFRUmhzYWlJQi9Rd0FBQUFBQUFBQUFBQUFBQUFBQUFBQS9Rc0NBQ0FCUWdBM0FoQUNmMEVCSUFwQkJIRU5BQnBCN1FBZ0NrRUJjVVVOQUJwQkFrRUNRUUVnQVVFTWF5Z0NBQ0lLUVFwR0d5QUtRUUZHR3dzaENpQUFDeUVNSUFFZ0NqWUNEQXNnQ1NnQ0pDRUFJQUlvQXRBcklBTW9BaHhCdUFoc2FpMEFFRUhBQUhFRVFBTkFJQXhCR0d3aURpQUpLQUlBYWlBQVFRRWdEQnNpRXpZQ0VDQUpLQUlnSVJaQkFDRUtJQUFoQVNBVFFRSlBCRUFEUUNBS1FRRnFJUW9nQVVFRFN5RWJJQUZCQVhZaEFTQWJEUUFMQ3lBS0lCWnFJZ0ZCSVU4RVFDQVBJQUUyQWhBZ0NFRUJRY3owQUNBUFFSQnFFQWdNQXdzZ0N5QUJFQmtoQ2lBSktBSUFJZ0VnRG1vaURpQUtOZ0lVSUFBZ0RpZ0NFR3NpQUVFQVRBMERJQUlvQXRBcklBTW9BaHhCdUFoc2FpZ0NFQ0VLSUFrb0FqQWlEaUFNUVFKcVNRUkFJQUVnRGtFS2FpSU9RUmhzRUJBaUFVVU5BeUFKSUFFMkFnQWdBU0FKS0FJd1FSaHNha0VBUWZBQkVBNGFJQWtnRGpZQ01DQUpLQUlBSVFFTElBRWdERUVCYWlJTVFSaHNhaUlCL1F3QUFBQUFBQUFBQUFBQUFBQUFBQUFBL1FzQ0FDQUJRZ0EzQWhBZ0FRSi9RUUVnQ2tFRWNRMEFHa0h0QUNBS1FRRnhSUTBBR2tFQ1FRSkJBU0FCUVF4cktBSUFJZ0ZCQ2tZYklBRkJBVVliQ3pZQ0RBd0FDd0FMQTBBZ0RFRVliQ0lPSUFrb0FnQnFJZ0VnQVNnQ0RDQUJLQUlFYXlJQklBQWdBQ0FCU2hzaUFUWUNFQ0FKS0FJZ0lSTkJBQ0VLSUFGQkFrOEVRQU5BSUFwQkFXb2hDaUFCUVFOTElSd2dBVUVCZGlFQklCd05BQXNMSUFvZ0Uyb2lBVUVoVHdSQUlBOGdBVFlDQUNBSVFRRkJ6UFFBSUE4UUNBd0NDeUFMSUFFUUdTRUtJQWtvQWdBaUFTQU9haUlPSUFvMkFoUWdBQ0FPS0FJUWF5SUFRUUJNRFFJZ0FpZ0MwQ3NnQXlnQ0hFRzRDR3hxS0FJUUlRb2dDU2dDTUNJT0lBeEJBbXBKQkVBZ0FTQU9RUXBxSWc1QkdHd1FFQ0lCUlEwQ0lBa2dBVFlDQUNBQklBa29BakJCR0d4cVFRQkI4QUVRRGhvZ0NTQU9OZ0l3SUFrb0FnQWhBUXNnQVNBTVFRRnFJZ3hCR0d4cUlnSDlEQUFBQUFBQUFBQUFBQUFBQUFBQUFBRDlDd0lBSUFGQ0FEY0NFQ0FCQW45QkFTQUtRUVJ4RFFBYVFlMEFJQXBCQVhGRkRRQWFRUUpCQWtFQklBRkJER3NvQWdBaUFVRUtSaHNnQVVFQlJoc0xOZ0lNREFBTEFBc2dDeEFsREFVTElBbEJRR3NoQ1NBVlFRRnFJaFVnR0VjTkFBc0xJQkJCSkdvaEVDQVpRUUZxSWhrZ0VTZ0NHRWtOQUFzTElBc1FYVVVFUUNBTEVDVU1BUXNnQ3lnQ0NDQUxLQUlBYXlFZElBc1FKU0FkSUExcUlRRUNRQ0FDTFFBQVFRUnhSUTBBSUFjb0FnQWdFaWdDQUNBQmEycEJBVTBFUUNBSVFRSkJtQ0ZCQUJBSURBRUxBa0FnQVMwQUFFSC9BVVlFUUNBQkxRQUJRWklCUmcwQkN5QUlRUUpCd2lGQkFCQUlEQUVMSUFGQkFtb2hBUXNnRWlBU0tBSUFJQWNvQWdBZ0FXdHFOZ0lBSUFjZ0FUWUNBRUVCSVJjZ0JFRUJOZ0lBSUFZZ0R5Z0NHQ0FGYXpZQ0FBc2dEMEVnYWlRQUlCY0xreVFDRkg4T2ZnSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQWdBQ2dDVkE0RkFBRUNBd1FLQ3dKQUlBQW9BalFpQmlBQUtBTEVBU0lCU1FSQUlBQW9Ba0FpQnlBQlFRRnFTUTBCQ3lBQUtBTHNBVUVCUWZVK1FRQVFDQXdNQ3lBQUtBSXNSUVJBSUFBb0FpUWhBa0VBSVFFTUJRc2dBRUVBTmdJc0lBQW9Ba1FoQTBFQklRRU1CQXNDUUNBQUtBSTBJZ1lnQUNnQ3hBRWlBVWtFUUNBQUtBSkFJZ2NnQVVFQmFra05BUXNnQUNnQzdBRkJBVUdpUDBFQUVBZ01Dd3NnQUNnQ0xFVUVRQ0FBS0FJa0lRUkJBQ0VCREFnTElBQkJBRFlDTENBQUtBSXdJUU5CQVNFQkRBY0xBa0FnQUNnQ05DSUVJQUFvQXNRQklncEpCRUFnQUNnQ1FDSU9JQXBCQVdwSkRRRUxJQUFvQXV3QlFRRkJxY0FBUVFBUUNBd0tDeUFBS0FJc1JRUkFJQUFvQWlnaEN3d0dDeUFBUWdBM0F1UUJJQUJCQURZQ0xDQUFLQUxJQVNFTUEwQWdEQ0FIUVFSMGFpSUZLQUlJSWc4RVFDQUZLQUlNSVJKQkFDRUJBMEFDUUNBUElBRkJmM05xSWhBZ0VpQUJRUVIwYWlJUktBSUFhaUlKUVI5TERRQWdCU2dDQUNJVFFYOGdDWFpMRFFBZ0FDQUNJQk1nQ1hRaUNTQUNJQWxKR3lBSklBSWJJZ0kyQXVRQkN3SkFJQkVvQWdRZ0VHb2lDVUVmU3cwQUlBVW9BZ1FpRUVGL0lBbDJTdzBBSUFBZ0F5QVFJQWwwSWdrZ0F5QUpTUnNnQ1NBREd5SUROZ0xvQVFzZ0FVRUJhaUlCSUE5SERRQUxDeUFIUVFGcUlnY2dDa2NOQUFzZ0FrVU5CeUFEUlEwSElBQXRBQUJGQkVBZ0FDQUFLQUxRQVRZQ2JDQUFJQUFvQXN3Qk5nSmtJQUFnQUNnQzJBRTJBbkFnQUNBQUtBTFVBVFlDYUFzZ0FDZ0NNQ0VGUVFFaEFRd0ZDd0pBSUFBb0FqUWlCU0FBS0FMRUFTSUpTUVJBSUFBb0FrQWlFaUFKUVFGcVNRMEJDeUFBS0FMc0FVRUJRZncvUVFBUUNBd0pDeUFBS0FJc1JRUkFJQUFvQXNnQklnMGdBQ2dDSENJRVFRUjBhaUVMSUFBb0FpZ2hDQXdFQ3lBQVFnQTNBdVFCSUFCQkFEWUNMQ0FBS0FMSUFTRU5BMEFnRFNBR1FRUjBhaUlLS0FJSUlnNEVRQ0FLS0FJTUlSQkJBQ0VCQTBBQ1FDQU9JQUZCZjNOcUloRWdFQ0FCUVFSMGFpSVRLQUlBYWlJTVFSOUxEUUFnQ2lnQ0FDSVVRWDhnREhaTERRQWdBQ0FDSUJRZ0RIUWlEQ0FDSUF4Skd5QU1JQUliSWdJMkF1UUJDd0pBSUJNb0FnUWdFV29pREVFZlN3MEFJQW9vQWdRaUVVRi9JQXgyU3cwQUlBQWdBeUFSSUF4MElnd2dBeUFNU1JzZ0RDQURHeUlETmdMb0FRc2dBVUVCYWlJQklBNUhEUUFMQ3lBR1FRRnFJZ1lnQ1VjTkFBc2dBa1VOQmlBRFJRMEdBa0FnQUMwQUFBUkFJQUFvQW13aEJnd0JDeUFBSUFBb0F0QUJJZ1kyQW13Z0FDQUFLQUxNQVRZQ1pDQUFJQUFvQXRnQk5nSndJQUFnQUNnQzFBRTJBbWdMUVFFaEFRd0RDd0pBSUFBb0FqUWlCaUFBS0FMRUFTSUJTUVJBSUFBb0FrQWlEeUFCUVFGcVNRMEJDeUFBS0FMc0FVRUJRYzgvUVFBUUNBd0dDeUFBS0FJc1JRUkFJQUFvQXNnQklBQW9BaHdpQmtFRWRHb2hCU0FBS0FJb0lRZEJBQ0VCREFJTElBQWdCallDSENBQVFRQTJBaXhCQVNFQkRBRUxBMEFDZndKQUlBRkZCRUFnQWtFQmFpRUNEQUVMSUFBZ0F6WUNLQ0FBS0FJNElBTk5EUWtnQUNnQ01DRUVRUUFNQVF0QkFRc2hBUU5BQWtBQ1FBSkFBa0FnQVVVRVFDQUFJQVEyQWlBZ0JDQUFLQUk4VHcwQklBQWdCallDSENBR0lRRkJBQ0VGREFRTElBQWdBallDSkNBQUtBSk1JQUpOQkVBZ0FDZ0NIQ0VCUVFFaEJRd0VDeUFBS0FJUUlBQW9BaUJzSUFBb0Fnd2dBQ2dDS0d4cUlBQW9BaFFnQUNnQ0hHeHFJQUFvQWhnZ0FteHFJZ0VnQUNnQ0NFOEVRQXdNQ3lBQUtBSUVJQUZCQVhScUlnRXZBUUFOQVF3TkN5QUFLQUlvUVFGcUlRTU1BUXRCQUNFQkRBTUxRUUVoQVF3Q0N3TkFBa0FDUUFKQUlBVkZCRUFnQVNBSFR3MEJJQUFvQWlBaUJTQUFLQUxJQVNBQlFRUjBhaUlOS0FJSVR3MERJQUF0QUFCRkJFQWdBQ0FOS0FJTUlBVkJCSFJxSWdFb0Fnd2dBU2dDQ0d3MkFrd0xJQUFvQWtnaEFrRUJJUUVNQlFzZ0FDQUJRUUZxSWdFMkFod01BUXNnQUNnQ0lFRUJhaUVFUVFBaEFRd0RDMEVBSVFVTUFRdEJBU0VGREFBTEFBc0FDd0FMQTBBQ2Z3SkFJQUZGQkVBZ0FDQUhRUUZxSWdjMkFpZ01BUXNnQmlBUFR3MElJQUJDQURjQzVBRWdBQ2dDeUFFZ0JrRUVkR29pQlNnQ0NDSUxSUTBJSUFVb0Fnd2hDa0VBSVFKQkFDRUVRUUFoQVFOQUFrQWdDeUFCUVg5emFpSUpJQW9nQVVFRWRHb2lEaWdDQUdvaUNFRWZTdzBBSUFVb0FnQWlERUYvSUFoMlN3MEFJQUFnQkNBTUlBaDBJZ2dnQkNBSVNSc2dDQ0FFR3lJRU5nTGtBUXNDUUNBT0tBSUVJQWxxSWdoQkgwc05BQ0FGS0FJRUlnbEJmeUFJZGtzTkFDQUFJQUlnQ1NBSWRDSUlJQUlnQ0VrYklBZ2dBaHNpQWpZQzZBRUxJQUZCQVdvaUFTQUxSdzBBQ3lBRVJRMEdJQUpGRFFZQ1FDQUFMUUFBQkVBZ0FDZ0NiQ0VDREFFTElBQWdBQ2dDMEFFaUFqWUNiQ0FBSUFBb0Fzd0JOZ0prSUFBZ0FDZ0MyQUUyQW5BZ0FDQUFLQUxVQVRZQ2FBdEJBQXdCQzBFQkN5RUJBMEFDUUFKQUFrQUNRQ0FCUlFSQUlBQWdBallDNEFFZ0FpQUFLQUp3VHcwQklBQW9BbVFoRFVFQUlRRU1CQXNnQUNnQ09DQUhUUVJBSUFBb0FpQWhBMEVCSVFFTUJBc2dBQ2dDRUNBQUtBSWdiQ0FBS0FJTUlBZHNhaUFBS0FJVUlBWnNhaUFBS0FJWUlBQW9BaVJzYWlJQklBQW9BZ2hQQkVBTUN3c2dBQ2dDQkNBQlFRRjBhaUlCTHdFQURRRU1EQXNnQUNBR1FRRnFJZ1kyQWh3TUFRdEJBQ0VCREFNTFFRRWhBUXdDQ3dOQUFrQUNRQUpBSUFBQ2Z5QUJSUVJBSUFBZ0RUWUMzQUVnRFNBQUtBSm9UdzBDSUFBb0FqQU1BUXNnQTBFQmFnc2lBellDSUNBQUtBSThJZ0VnQlNnQ0NDSUVJQUVnQkVrYklBTkxCRUFnQlNnQ0FDSUJJQUd0SWg0Z0JDQURRWDl6YWlJSXJTSVdoaUlYSUJhSXAwY05BeUFGS0FJRUlnUkNmeUFXaUtkeElBUkhEUU1nQkswaUZTQVdoaUlZUWdGOUloa2dBRFVDMkFGOElCaUFJUjhnR1NBQUtBTFFBU0lKclh3Z0dJQWhHaUFYUWdGOUloc2dBRFVDMUFGOElCZUFJU0FnR3lBQUtBTE1BU0lPclh3Z0Y0QWhIQ0FCUW44Z0JTZ0NEQ0FEUVFSMGFpSUxLQUlBSWdvZ0NHcXRJaDJJcDNFZ0FVY05BeUFFSUJVZ0N5Z0NCQ0lCSUFocXJTSVZoaUloSUJXSXAwY05BeUFBS0FMZ0FTSUVyU0lpSUNHQ1FnQlNCRUFnQkNBSlJ3MEVRbjhnRllaQ2Y0VWdHa0wvLy8vL0Q0TWdGb2FEVUEwRUN5QUFLQUxjQVNJRXJTSVZJQjRnSFlhQ1FnQlNCRUFnQkNBT1J3MEVRbjhnSFlaQ2Y0VWdIRUwvLy8vL0Q0TWdGb2FEVUEwRUN5QUxLQUlJSWdSRkRRTWdDeWdDREVVTkF5QWNweUlMSUNDblJnMERJQnFuSWdnZ0g2ZEdEUU1nQUNBQUtBSkVJZ2MyQWlnZ0FDQVZJQnQ4SUJlQXB5QUtkaUFMSUFwMmF5QVpJQ0o4SUJpQXB5QUJkaUFJSUFGMmF5QUViR28yQWlSQkFTRUJEQVVMSUFBb0F0d0JJZ0VnQUNnQzVBRWlCR29nQVNBRWNHc2hEUXdCQ3lBQUtBTGdBU0lCSUFBb0F1Z0JJZ1JxSUFFZ0JIQnJJUUpCQUNFQkRBTUxRUUFoQVF3QkMwRUJJUUVNQUFzQUN3QUxBQXNEUUFKL0FrQWdBVVVFUUNBQUlBaEJBV29pQ0RZQ0tBd0JDeUFBSUFZMkF1QUJJQUFvQW5BZ0JrME5CeUFBS0FKa0lROUJBQXdCQzBFQkN5RUJBMEFDUUFKQUFrQUNRQ0FCUlFSQUlBQWdEellDM0FFZ0R5QUFLQUpvVHcwQklBQWdCVFlDSENBRklRUkJBQ0VCREFRTElBQW9BamdnQ0UwRVFDQUFLQUlnSVFkQkFTRUJEQVFMSUFBb0FoQWdBQ2dDSUd3Z0FDZ0NEQ0FJYkdvZ0FDZ0NGQ0FFYkdvZ0FDZ0NHQ0FBS0FJa2JHb2lBU0FBS0FJSVR3UkFEQW9MSUFBb0FnUWdBVUVCZEdvaUFTOEJBQTBCREFzTElBQW9BdUFCSWdFZ0FDZ0M2QUVpQm1vZ0FTQUdjR3NoQmd3QkMwRUFJUUVNQXd0QkFTRUJEQUlMQTBBQ1FBSkFBa0FDUUNBQlJRUkFJQVFnRWs4TkFpQUFJQUFvQWpBaUJ6WUNJQ0FOSUFSQkJIUnFJUXNNQVFzZ0FDQUhRUUZxSWdjMkFpQUxJQUFvQWp3aUFTQUxLQUlJSWdJZ0FTQUNTUnNnQjBzRVFDQUxLQUlBSWdFZ0FhMGlIaUFDSUFkQmYzTnFJZ3F0SWhhR0loY2dGb2luUncwRElBc29BZ1FpQWtKL0lCYUlwM0VnQWtjTkF5QUNyU0lWSUJhR0loaENBWDBpR1NBQU5RTFlBWHdnR0lBaEh5QVpJQUFvQXRBQklnNnRmQ0FZZ0NFYUlCZENBWDBpR3lBQU5RTFVBWHdnRjRBaElDQWJJQUFvQXN3QklneXRmQ0FYZ0NFY0lBRkNmeUFMS0FJTUlBZEJCSFJxSWdNb0FnQWlDU0FLYXEwaUhZaW5jU0FCUncwRElBSWdGU0FES0FJRUlnRWdDbXF0SWhXR0lpRWdGWWluUncwRElBQW9BdUFCSWdLdElpSWdJWUpDQUZJRVFDQUNJQTVIRFFSQ2Z5QVZoa0ovaFNBYVF2Ly8vLzhQZ3lBV2hvTlFEUVFMSUFBb0F0d0JJZ0t0SWhVZ0hpQWRob0pDQUZJRVFDQUNJQXhIRFFSQ2Z5QWRoa0ovaFNBY1F2Ly8vLzhQZ3lBV2hvTlFEUVFMSUFNb0FnZ2lBa1VOQXlBREtBSU1SUTBESUJ5bklnTWdJS2RHRFFNZ0dxY2lDaUFmcDBZTkF5QUFJQUFvQWtRaUNEWUNLQ0FBSUJVZ0czd2dGNENuSUFsMklBTWdDWFpySUJrZ0lud2dHSUNuSUFGMklBb2dBWFpySUFKc2FqWUNKRUVCSVFFTUJRc2dBQ0FFUVFGcUlnUTJBaHdNQVFzZ0FDZ0MzQUVpQVNBQUtBTGtBU0lDYWlBQklBSndheUVQUVFBaEFRd0RDMEVBSVFFTUFRdEJBU0VCREFBTEFBc0FDd0FMQTBBQ2Z3SkFJQUZGQkVBZ0FDQUxRUUZxSWdzMkFpZ01BUXNnQUNBRk5nSWdJQUFvQWp3Z0JVME5CaUFBS0FKc0lRaEJBQXdCQzBFQkN5RUJBMEFDUUFKQUFrQUNRQ0FCUlFSQUlBQWdDRFlDNEFFZ0NDQUFLQUp3VHcwQklBQW9BbVFoRFVFQUlRRU1CQXNnQUNnQ09DQUxUUVJBSUFBb0Fod2hCa0VCSVFFTUJBc2dBQ2dDRUNBQUtBSWdiQ0FBS0FJTUlBdHNhaUFBS0FJVUlBQW9BaHhzYWlBQUtBSVlJQUFvQWlSc2FpSUJJQUFvQWdoUEJFQU1DUXNnQUNnQ0JDQUJRUUYwYWlJQkx3RUFEUUVNQ2dzZ0FDZ0NJRUVCYWlFRkRBRUxRUUFoQVF3REMwRUJJUUVNQWdzRFFBSkFBa0FDUUFKQUlBRkZCRUFnQUNBTk5nTGNBU0FOSUFBb0FtaFBEUUlnQUNBRU5nSWNJQVFoQmd3QkN5QUFJQVpCQVdvaUJqWUNIQXNnQmlBT1NRUkFJQUFvQWlBaUJ5QUFLQUxJQVNBR1FRUjBhaUlCS0FJSUlnTlBEUU1nQVNnQ0FDSUNJQUt0SWg0Z0F5QUhRWDl6YWlJS3JTSVdoaUlYSUJhSXAwY05BeUFCS0FJRUlnTkNmeUFXaUtkeElBTkhEUU1nQTYwaUZTQVdoaUlZUWdGOUloa2dBRFVDMkFGOElCaUFJUjhnR1NBQUtBTFFBU0lQclh3Z0dJQWhHaUFYUWdGOUloc2dBRFVDMUFGOElCZUFJU0FnR3lBQUtBTE1BU0lKclh3Z0Y0QWhIQ0FDUW44Z0FTZ0NEQ0FIUVFSMGFpSUJLQUlBSWdjZ0NtcXRJaDJJcDNFZ0FrY05BeUFESUJVZ0FTZ0NCQ0lDSUFwcXJTSVZoaUloSUJXSXAwY05BeUFBS0FMZ0FTSURyU0lpSUNHQ1FnQlNCRUFnQXlBUFJ3MEVRbjhnRllaQ2Y0VWdHa0wvLy8vL0Q0TWdGb2FEVUEwRUN5QUFLQUxjQVNJRHJTSVZJQjRnSFlhQ1FnQlNCRUFnQXlBSlJ3MEVRbjhnSFlaQ2Y0VWdIRUwvLy8vL0Q0TWdGb2FEVUEwRUN5QUJLQUlJSWdORkRRTWdBU2dDREVVTkF5QWNweUlCSUNDblJnMERJQnFuSWdvZ0g2ZEdEUU1nQUNBQUtBSkVJZ3MyQWlnZ0FDQVZJQnQ4SUJlQXB5QUhkaUFCSUFkMmF5QVpJQ0o4SUJpQXB5QUNkaUFLSUFKMmF5QURiR28yQWlSQkFTRUJEQVVMSUFBb0F0d0JJZ0VnQUNnQzVBRWlBbW9nQVNBQ2NHc2hEUXdCQ3lBQUtBTGdBU0lCSUFBb0F1Z0JJZ0pxSUFFZ0FuQnJJUWhCQUNFQkRBTUxRUUFoQVF3QkMwRUJJUUVNQUFzQUN3QUxBQXNEUUFKL0FrQWdBVVVFUUNBRVFRRnFJUVFNQVFzZ0FDQUROZ0lnSUFBb0Fqd2dBMDBOQlNBQUtBSkVJUUpCQUF3QkMwRUJDeUVCQTBBQ1FBSkFBa0FDUUNBQlJRUkFJQUFnQWpZQ0tDQUNJQUFvQWpoUERRRWdBQ0FHTmdJY0lBWWhBVUVBSVFVTUJBc2dBQ0FFTmdJa0lBQW9Ba3dnQkUwRVFDQUFLQUljSVFGQkFTRUZEQVFMSUFBb0FoQWdBQ2dDSUd3Z0FDZ0NEQ0FBS0FJb2JHb2dBQ2dDRkNBQUtBSWNiR29nQUNnQ0dDQUViR29pQVNBQUtBSUlUd1JBREFnTElBQW9BZ1FnQVVFQmRHb2lBUzhCQUEwQkRBa0xJQUFvQWlCQkFXb2hBd3dCQzBFQUlRRU1Bd3RCQVNFQkRBSUxBMEFDUUFKQUFrQWdCVVVFUUNBQklBZFBEUUVnQUNnQ0lDSUZJQUFvQXNnQklBRkJCSFJxSWcwb0FnaFBEUU1nQUMwQUFFVUVRQ0FBSUEwb0Fnd2dCVUVFZEdvaUFTZ0NEQ0FCS0FJSWJEWUNUQXNnQUNnQ1NDRUVRUUVoQVF3RkN5QUFJQUZCQVdvaUFUWUNIQXdCQ3lBQUtBSW9RUUZxSVFKQkFDRUJEQU1MUVFBaEJRd0JDMEVCSVFVTUFBc0FDd0FMQUF0QkFBOExJQUFvQXV3QlFRRkJ2d3BCQUJBSUMwRUFEd3NnQVVFQk93RUFRUUVMa1FzQkNuOENRQ0FCS0FJQUlBUkJBMndpREhZaUJrR1FnSUFCY1EwQUlBQWdBRUVjYWlJT0lBQW9BbXdnQmtIdkEzRnFMUUFBUVFKMGFpSUtOZ0pvSUFBZ0FDZ0NCQ0FLS0FJQUlna29BZ0FpQ0dzaUJqWUNCQUpBSUFnZ0FDZ0NBQ0lIUVJCMlN3UkFJQWtvQWdRaEN5QUFJQWcyQWdRZ0NpQUpRUWhCRENBR0lBaEpJZ1liYWlnQ0FEWUNBQ0FMSUF0RklBWWJJUWtnQUNnQ0NDRUdBMEFDUUNBR0RRQWdBQ2dDRUNJR1FRRnFJUXNnQmkwQUFTRUtJQVl0QUFCQi93RkdCRUFnQ2tHUUFVOEVRQ0FBSUFBb0FneEJBV28yQWd3Z0IwR0EvZ05xSVFkQkNDRUdEQUlMSUFBZ0N6WUNFQ0FISUFwQkNYUnFJUWRCQnlFR0RBRUxJQUFnQ3pZQ0VFRUlJUVlnQnlBS1FRaDBhaUVIQ3lBQUlBWkJBV3NpQmpZQ0NDQUFJQWRCQVhRaUJ6WUNBQ0FBSUFoQkFYUWlDRFlDQkNBSVFZQ0FBa2tOQUFzZ0NDRUdEQUVMSUFBZ0J5QUlRUkIwYXlJSE5nSUFJQVpCZ0lBQ2NVVUVRQ0FKS0FJRUlRc2dDaUFKUVF4QkNDQUdJQWhKSWdnYmFpZ0NBRFlDQUNBTFJTQUxJQWdiSVFrZ0FDZ0NDQ0VJQTBBQ1FDQUlEUUFnQUNnQ0VDSUlRUUZxSVFzZ0NDMEFBU0VLSUFndEFBQkIvd0ZHQkVBZ0NrR1FBVThFUUNBQUlBQW9BZ3hCQVdvMkFnd2dCMEdBL2dOcUlRZEJDQ0VJREFJTElBQWdDellDRUNBSElBcEJDWFJxSVFkQkJ5RUlEQUVMSUFBZ0N6WUNFRUVJSVFnZ0J5QUtRUWgwYWlFSEN5QUFJQWhCQVdzaUNEWUNDQ0FBSUFkQkFYUWlCellDQUNBQUlBWkJBWFFpQmpZQ0JDQUdRWUNBQWtrTkFBc01BUXNnQ1NnQ0JDRUpDeUFKUlEwQUlBQWdEaUFCS0FJRUlBeEJFV3AyUVFSeElBRkJCR3NpRFNnQ0FDQU1RUk5xZGtFQmNTQUJLQUlBSWdnZ0RFRVFhblpCd0FCeElBZ2dESFpCcWdGeGNpQUlJQXhCREdwQkRpQUVHM1pCRUhGeWNuSWlEMEhndVFGcUxRQUFRUUowYWlJTE5nSm9JQUFnQmlBTEtBSUFJZ29vQWdBaUNHc2lCallDQkFKQUlBZ2dCMEVRZGtzRVFDQUtLQUlFSVFrZ0FDQUlOZ0lFSUFzZ0NrRUlRUXdnQmlBSVNTSUdHMm9vQWdBMkFnQWdDU0FKUlNBR0d5RUtJQUFvQWdnaEJnTkFBa0FnQmcwQUlBQW9BaEFpQmtFQmFpRUxJQVl0QUFFaENTQUdMUUFBUWY4QlJnUkFJQWxCa0FGUEJFQWdBQ0FBS0FJTVFRRnFOZ0lNSUFkQmdQNERhaUVIUVFnaEJnd0NDeUFBSUFzMkFoQWdCeUFKUVFsMGFpRUhRUWNoQmd3QkN5QUFJQXMyQWhCQkNDRUdJQWNnQ1VFSWRHb2hCd3NnQUNBR1FRRnJJZ1kyQWdnZ0FDQUhRUUYwSWdjMkFnQWdBQ0FJUVFGMElnZzJBZ1FnQ0VHQWdBSkpEUUFMREFFTElBQWdCeUFJUVJCMGF5SUpOZ0lBSUFaQmdJQUNjVVVFUUNBS0tBSUVJUWNnQ3lBS1FReEJDQ0FHSUFoSklnZ2JhaWdDQURZQ0FDQUhSU0FISUFnYklRb2dBQ2dDQ0NFSEEwQUNRQ0FIRFFBZ0FDZ0NFQ0lIUVFGcUlRc2dCeTBBQVNFSUlBY3RBQUJCL3dGR0JFQWdDRUdRQVU4RVFDQUFJQUFvQWd4QkFXbzJBZ3dnQ1VHQS9nTnFJUWxCQ0NFSERBSUxJQUFnQ3pZQ0VDQUpJQWhCQ1hScUlRbEJCeUVIREFFTElBQWdDellDRUVFSUlRY2dDU0FJUVFoMGFpRUpDeUFBSUFkQkFXc2lCellDQ0NBQUlBbEJBWFFpQ1RZQ0FDQUFJQVpCQVhRaUJqWUNCQ0FHUVlDQUFra05BQXNNQVFzZ0NpZ0NCQ0VLQ3lBQ1FRQWdBMnNnQXlBS0lBOUI0THNCYWkwQUFITWlBeHMyQWdBZ0RTQU5LQUlBUVNBZ0RIUnlOZ0lBSUFFZ0FTZ0NBQ0FEUVJOMFFSQnlJQXgwY2pZQ0FDQUJJQUVvQWdSQkNDQU1kSEkyQWdRZ0JDQUZja1VFUUNBQlFYNGdBQ2dDZkd0QkFuUnFJZ0lnQWlnQ0JFR0FnQUp5TmdJRUlBSWdBaWdDQUNBRFFSOTBja0dBZ0FSeU5nSUFJQUpCQkdzaUFpQUNLQUlBUVlDQUNISTJBZ0FMSUFSQkEwY05BQ0FCSUFBb0FueEJBblJxSWdCQkJHb2dBQ2dDQkVFRWNqWUNBQ0FBSUFBb0FneEJBWEkyQWd3Z0FDQUFLQUlJSUFOQkVuUnlRUUp5TmdJSUN3dXJDd0VKZndKQUlBRW9BZ0FnQkVFRGJDSU5kaUlIUVpDQWdBRnhEUUFnQjBIdkEzRWlCMFVOQUNBQUlBQkJIR29pRGlBQUtBSnNJQWRxTFFBQVFRSjBhaUlMTmdKb0lBQWdBQ2dDQkNBTEtBSUFJZ29vQWdBaUNXc2lCellDQkFKQUlBa2dBQ2dDQUNJSVFSQjJTd1JBSUFvb0FnUWhEQ0FBSUFrMkFnUWdDeUFLUVFoQkRDQUhJQWxKSWdjYmFpZ0NBRFlDQUNBTUlBeEZJQWNiSVFvZ0FDZ0NDQ0VIQTBBQ1FDQUhEUUFnQUNnQ0VDSUhRUUZxSVF3Z0J5MEFBU0VMSUFjdEFBQkIvd0ZHQkVBZ0MwR1FBVThFUUNBQUlBQW9BZ3hCQVdvMkFnd2dDRUdBL2dOcUlRaEJDQ0VIREFJTElBQWdERFlDRUNBSUlBdEJDWFJxSVFoQkJ5RUhEQUVMSUFBZ0REWUNFRUVJSVFjZ0NDQUxRUWgwYWlFSUN5QUFJQWRCQVdzaUJ6WUNDQ0FBSUFoQkFYUWlDRFlDQUNBQUlBbEJBWFFpQ1RZQ0JDQUpRWUNBQWtrTkFBc2dDU0VIREFFTElBQWdDQ0FKUVJCMGF5SUlOZ0lBSUFkQmdJQUNjVVVFUUNBS0tBSUVJUXdnQ3lBS1FReEJDQ0FISUFsSklna2JhaWdDQURZQ0FDQU1SU0FNSUFrYklRb2dBQ2dDQ0NFSkEwQUNRQ0FKRFFBZ0FDZ0NFQ0lKUVFGcUlRd2dDUzBBQVNFTElBa3RBQUJCL3dGR0JFQWdDMEdRQVU4RVFDQUFJQUFvQWd4QkFXbzJBZ3dnQ0VHQS9nTnFJUWhCQ0NFSkRBSUxJQUFnRERZQ0VDQUlJQXRCQ1hScUlRaEJCeUVKREFFTElBQWdERFlDRUVFSUlRa2dDQ0FMUVFoMGFpRUlDeUFBSUFsQkFXc2lDVFlDQ0NBQUlBaEJBWFFpQ0RZQ0FDQUFJQWRCQVhRaUJ6WUNCQ0FIUVlDQUFra05BQXNNQVFzZ0NpZ0NCQ0VLQ3dKQUlBcEZEUUFnQUNBT0lBRW9BZ1FnRFVFUmFuWkJCSEVnQVVFRWF5SVBLQUlBSUExQkUycDJRUUZ4SUFFb0FnQWlDU0FOUVJCcWRrSEFBSEVnQ1NBTmRrR3FBWEZ5SUFrZ0RVRU1ha0VPSUFRYmRrRVFjWEp5Y2lJS1FlQzVBV290QUFCQkFuUnFJZ3cyQW1nZ0FDQUhJQXdvQWdBaUN5Z0NBQ0lKYXlJSE5nSUVJQXBCNExzQmFpMEFBQ0VPQWtBZ0NTQUlRUkIyU3dSQUlBc29BZ1FoQ2lBQUlBazJBZ1FnRENBTFFRaEJEQ0FISUFsSklnY2JhaWdDQURZQ0FDQUtJQXBGSUFjYklRc2dBQ2dDQ0NFSEEwQUNRQ0FIRFFBZ0FDZ0NFQ0lIUVFGcUlRd2dCeTBBQVNFS0lBY3RBQUJCL3dGR0JFQWdDa0dRQVU4RVFDQUFJQUFvQWd4QkFXbzJBZ3dnQ0VHQS9nTnFJUWhCQ0NFSERBSUxJQUFnRERZQ0VDQUlJQXBCQ1hScUlRaEJCeUVIREFFTElBQWdERFlDRUVFSUlRY2dDQ0FLUVFoMGFpRUlDeUFBSUFkQkFXc2lCellDQ0NBQUlBaEJBWFFpQ0RZQ0FDQUFJQWxCQVhRaUNUWUNCQ0FKUVlDQUFra05BQXNNQVFzZ0FDQUlJQWxCRUhScklnbzJBZ0FnQjBHQWdBSnhSUVJBSUFzb0FnUWhDQ0FNSUF0QkRFRUlJQWNnQ1VraUNSdHFLQUlBTmdJQUlBaEZJQWdnQ1JzaEN5QUFLQUlJSVFnRFFBSkFJQWdOQUNBQUtBSVFJZ2hCQVdvaERDQUlMUUFCSVFrZ0NDMEFBRUgvQVVZRVFDQUpRWkFCVHdSQUlBQWdBQ2dDREVFQmFqWUNEQ0FLUVlEK0Eyb2hDa0VJSVFnTUFnc2dBQ0FNTmdJUUlBb2dDVUVKZEdvaENrRUhJUWdNQVFzZ0FDQU1OZ0lRUVFnaENDQUtJQWxCQ0hScUlRb0xJQUFnQ0VFQmF5SUlOZ0lJSUFBZ0NrRUJkQ0lLTmdJQUlBQWdCMEVCZENJSE5nSUVJQWRCZ0lBQ1NRMEFDd3dCQ3lBTEtBSUVJUXNMSUFKQkFDQURheUFESUFzZ0RuTWlBaHMyQWdBZ0R5QVBLQUlBUVNBZ0RYUnlOZ0lBSUFFZ0FTZ0NBQ0FDUVJOMFFSQnlJQTEwY2pZQ0FDQUJJQUVvQWdSQkNDQU5kSEkyQWdRZ0JDQUdja1VFUUNBQklBVkJBblJySWdBZ0FDZ0NCRUdBZ0FKeU5nSUVJQUFnQUNnQ0FDQUNRUjkwY2tHQWdBUnlOZ0lBSUFCQkJHc2lBQ0FBS0FJQVFZQ0FDSEkyQWdBTElBUkJBMGNOQUNBQklBVkJBblJxSWdBZ0FDZ0NCRUVCY2pZQ0JDQUFJQUFvQWdBZ0FrRVNkSEpCQW5JMkFnQWdBRUVFYXlJQUlBQW9BZ0JCQkhJMkFnQUxJQUVnQVNnQ0FFR0FnSUFCSUExMGNqWUNBQXNMclFFQUlBQkJnSjRCTmdKa0lBQkJnSjRCTmdKZ0lBQkJnSjRCTmdKY0lBQkJnSjRCTmdKWUlBQkJnSjRCTmdKVUlBQkJnSjRCTmdKUUlBQkJnSjRCTmdKTUlBQkJnSjRCTmdKSUlBQkJnSjRCTmdKRUlBQkJnSjRCTmdKQUlBQkJnSjRCTmdJOElBQkJnSjRCTmdJNElBQkJnSjRCTmdJMElBQkJnSjRCTmdJd0lBQkJnSjRCTmdJc0lBQkJnSjRCTmdJb0lBQkJnSjRCTmdJa0lBQkJnSjRCTmdJZ0lBQkJnSjRCTmdJY0M1SUdBZ2wvQkg0Z0FDQUJOZ0lBSUFEOURBQUFBQUFBQUFBQUFBQUFBQUFBQUFEOUN3TUlJQUFnQXpZQ0hDQUFJQUpCQVdzaUJUWUNHQ0FCUVFOeElRb0NmeUFDUVFCTUJFQWdBU0VFSUFNTUFRc2dBQ0FCUVFGcUlnUTJBZ0FnQVMwQUFBc2hBVUVJSVFjZ0FFRUlOZ0lRSUFBZ0FhMGlEVGNEQ0NBQUlBMUMvd0dESWc1Qy93RlJJZ2syQWhRQ1FDQUtRUU5HRFFBZ0FDQUNRUUpySWdnMkFoZ0NmeUFDUVFKSUJFQWdCQ0VCSUFNTUFRc2dBQ0FFUVFGcUlnRTJBZ0FnQkMwQUFBc2hCQ0FBUVE5QkVDQU9RdjhCVVJzaUJ6WUNFQ0FBSUFTdElnNUMvd0dESWc5Qy93RlJJZ2syQWhRZ0FDQU9RZ2lHSUEyRUlnMDNBd2dnQ2tFQ1JnUkFJQUVoQkNBRklRSWdDQ0VGREFFTElBQWdBa0VEYXlJTE5nSVlJQUFDZnlBQ1FRTklCRUFnQVNFR0lBTU1BUXNnQUNBQlFRRnFJZ1kyQWdBZ0FTMEFBQXV0SWc1Qy93R0RJaEJDL3dGUklnazJBaFFnQUVFSFFRZ2dEMEwvQVZFYklBZHFJZ0UyQWhBZ0FDQU9JQWV0aGlBTmhDSU5Od01JSUFwQkFVWUVRQ0FHSVFRZ0FTRUhJQWdoQWlBTElRVU1BUXNnQUNBQ1FRUnJJZ1UyQWhnZ0FBSi9JQUpCQkVnRVFDQUdJUVFnQXd3QkN5QUFJQVpCQVdvaUJEWUNBQ0FHTFFBQUM2MGlEa0wvQVlOQy93RlJJZ2syQWhRZ0FFRUhRUWdnRUVML0FWRWJJQUZxSWdjMkFoQWdBQ0FPSUFHdGhpQU5oQ0lOTndNSUlBc2hBZ3NDUUNBQ1FRVk9CRUFnQkNnQ0FDRURJQUFnQWtFRmF6WUNHQ0FBSUFSQkJHbzJBZ0FNQVF0QkFDRUJRWDlCQUNBREd5RURJQUpCQWtnTkFBTkFJQUFnQkVFQmFpSUNOZ0lBSUFRdEFBQWhCQ0FBSUFWQkFXc2lCallDR0NBRFFmOEJJQUYwUVg5emNTQUVJQUYwY2lFRElBRkJDR29oQVNBRlFRRkxJUXdnQWlFRUlBWWhCU0FNRFFBTEN5QUFJQU5CR0hZaUFVSC9BVVkyQWhRZ0FFRUhRUWdnQ1JzaUFrRUhRUWdnQTBIL0FYRWlCRUgvQVVZYmFpSUZRUWRCQ0NBRFFRaDJRZjhCY1NJR1FmOEJSaHRxSWdoQkIwRUlJQU5CRUhaQi93RnhJZ05CL3dGR0d5QUhhbW8yQWhBZ0FDQUdJQUowSUFNZ0JYUnlJQUVnQ0hSeUlBUnlyU0FIcllZZ0RZUTNBd2dMdGdVQ0VuOENmZ0ovSUFBb0Fod2dBVUdZQVd4cUlnSkJrQUZyS0FJQUlBSkJtQUZyS0FJQWF5SURJUVVnQWtHTUFXc29BZ0FnQWtHVUFXc29BZ0JySWdJaEJrSEFBQ0FESUFOQndBQlBHeUVEUWNBQUlBSWdBa0hBQUU4YklRUUNRQ0FGUlEwQUlBWkZEUUFnQTBVTkFDQUVSUTBBUVg4Z0JHNUJBbllnQTBrTkFFRUJRUndRRENJQ0lBUTJBZ3dnQWlBRE5nSUlJQUlnQmpZQ0JDQUNJQVUyQWdBZ0FpQUVyU0lVSUFhdGZFSUJmU0FVZ0NJVXB5SUVOZ0lVSUFJZ0E2MGlGU0FGclh4Q0FYMGdGWUFpRmFjaUF6WUNFQUpBSUJSQy8vLy8vdytESUJWQy8vLy8vdytEZmtJZ2lLY05BQ0FDUVFRZ0F5QUViQkFNSWdNMkFoZ2dBMFVOQUNBQ0RBSUxJQUlRQ1F0QkFBc2lDVVVFUUVFQUR3c0NRQ0FCQkVBRFFDQU9RWmdCYkNJUElBQW9BaHhxSWdVb0FoZ2lBZ1JBSUFWQkhHb2hFQ0FGS0FJVUlRTWdCU2dDRUNFRVFRQWhDZ05BSUFNZ0JHd0VRQ0FRSUFwQkpHeHFJUVpCQUNFTEEwQWdCaWdDRkNBTFFTaHNhaUlJS0FJVUlnSWdDQ2dDRUNJSGJBUkFRUUFoQkFOQUlBZ29BaGdnQkVFR2RHb2lBeWdDUENJUkJFQWdBeWdDRENFSElBTW9BaFFoRWlBREtBSVFJUXdnQXlnQ0NDSVRJQVlvQWdCcklRTWdCaWdDRUNJTlFRRnhCRUFnQUNnQ0hDQVBhaUlDUVpBQmF5Z0NBQ0FEYWlBQ1FaZ0JheWdDQUdzaEF3c2dCeUFHS0FJRWF5RUNJQTFCQW5FRVFDQUNJQUFvQWh3Z0Qyb2lEVUdNQVdzb0FnQnFJQTFCbEFGcktBSUFheUVDQ3lBSklBTWdBaUFESUF3Z0Uyc2lER29nRWlBSGF5QUNhaUFSUVFFZ0RFRUFFQjlGRFFrZ0NDZ0NFQ0VISUFnb0FoUWhBZ3NnQkVFQmFpSUVJQUlnQjJ4SkRRQUxJQVVvQWhBaEJDQUZLQUlVSVFNTElBdEJBV29pQ3lBRElBUnNTUTBBQ3lBRktBSVlJUUlMSUFwQkFXb2lDaUFDU1EwQUN3c2dEa0VCYWlJT0lBRkhEUUFMQ3lBSkR3c2dDUkFkUVFBTDBBd0NFSDhHZXlBQUtBSUlJZ3NnQUNnQ0JHb2hCd0pBSUFBb0FneEZCRUFnQjBFQ1NBMEJJQUVvQWdBZ0FTQUxRUUowYWlJTktBSUFJZ1JCQVdwQkFYVnJJUU1nQUNnQ0FDRUdBa0FnQjBFRVNRUkFJQVFoQWd3QkN5QUhRUVJySWdCQkFYWWlDVUVCYWlFTUFrQWdBRUVXU1FSQVFRRWhBQXdCQ3lBR0lBRWdDMEVDZEdvaUJTQUpRUUowSWdKcVFRaHFTU0FHSUFsQkEzUnFRUWhxSWdBZ0JVRUVha3R4QkVCQkFTRUFEQUVMSUFZZ0FTQUNha0VJYWtrZ0FVRUVhaUFBU1hFRVFFRUJJUUFNQVFzZ0RFSDgvLy8vQjNFaUJVRUJjaUVBSUFWQkFYUWhDQ0FFL1JFaEVpQUQvUkVoRS8wTUFBQUFBQUlBQUFBRUFBQUFCZ0FBQUNFV1FRQWhBZ05BSUFFZ0FrRUNkRUVFY2lJRGF2MEFBZ0FoRlNBRElBMXEvUUFDQUNFVUlBWWdBa0VEZEdvaUF5QVQvVm9DQUFNZ0EwRUlhaUFWSUJRZ0VpQVUvUTBNRFE0UEVCRVNFeFFWRmhjWUdSb2JJaFg5cmdIOURBSUFBQUFDQUFBQUFnQUFBQUlBQUFEOXJnRkJBdjJzQWYyeEFTSVMvVm9DQUFBZ0EwRVFhaUFTL1ZvQ0FBRWdBMEVZYWlBUy9Wb0NBQUlnQmlBVy9Rd0JBQUFBQVFBQUFBRUFBQUFCQUFBQS9WQWlGLzBiQUVFQ2RHb2dFaUFUSUJMOURRd05EZzhRRVJJVEZCVVdGeGdaR2h2OXJnRkJBZjJzQVNBVi9hNEJJaFA5V2dJQUFDQUdJQmY5R3dGQkFuUnFJQlA5V2dJQUFTQUdJQmY5R3dKQkFuUnFJQlA5V2dJQUFpQUdJQmY5R3dOQkFuUnFJQlA5V2dJQUF5QVcvUXdJQUFBQUNBQUFBQWdBQUFBSUFBQUEvYTRCSVJZZ0VpRVRJQlFoRWlBQ1FRUnFJZ0lnQlVjTkFBc2dFdjBiQXlFQ0lCUDlHd01oQXlBRklBeEdEUUVnQWlFRUN3TkFJQUVnQUVFQ2RDSUNhaWdDQUNFSklBSWdEV29vQWdBaEFpQUdJQWhCQW5ScUlnVWdBellDQUNBRklBTWdDU0FDSUFScVFRSnFRUUoxYXlJRGFrRUJkU0FFYWpZQ0JDQUlRUUpxSVFnZ0FDQU1SeUVRSUFJaEJDQUFRUUZxSVFBZ0VBMEFDd3NnQmlBSVFRSjBhaUFETmdJQVFYd2hBQ0FIUVFGeEJIOGdCaUFIUVFGcklnQkJBblJxSUFFZ0FFRUJkR29vQWdBZ0FrRUJha0VCZFdzaUFEWUNBQ0FBSUFOcVFRRjFJUU5CZUFWQmZBc2dCaUFIUVFKMElnQnFhaUFDSUFOcU5nSUFJQUVnQmlBQUVBc2FEd3NDUUFKQUFrQWdCMEVCYXc0Q0FBRUNDeUFCSUFFb0FnQkJBbTAyQWdBUEN5QUFLQUlBSWdRZ0FTZ0NBQ0FCSUF0QkFuUnFJZ01vQWdCQkFXcEJBWFZySWdBMkFnUWdCQ0FBSUFNb0FnQnFOZ0lBSUFFZ0JDa0NBRGNDQUE4TElBZEJBMGdOQUNBQUtBSUFJZ29nQVNnQ0FDQUJJQXRCQW5ScUlnNG9BZ1FpQkNBT0tBSUFJZ0JxUVFKcVFRSjFheUlESUFCcU5nSUFRUUVoQ0FKQUlBZEJBbXNpQmlBSFFRRnhJZ3hGSWdCclFRSkpCRUFnQkNFQ0RBRUxJQWNnQUd0QkJHc2lBRUVCZGlJQ1FRRnFJUThDUUFKQUlBQkJGa2tOQUNBS1FRUnFJZ1VnQVNBQ1FRSjBJZ0JxUVFocVNTQUtJQUpCQTNScVFReHFJZ0lnQVVFRWFrdHhEUUFnQlNBQUlBRWdDMEVDZEdvaUFHcEJER3BKSUFCQkNHb2dBa2x4RFFBZ0QwRjhjU0lGUVFGeUlRQWdCVUVCZEVFQmNpRUlJQVQ5RVNFVElBUDlFU0VTUVFBaEFnTkFJQW9nQWtFRGRHb2lCQ0FCSUFKQkFuUWlBMnI5QUFJRUlCTWdBeUFPYXYwQUFnZ2lFLzBOREEwT0R4QVJFaE1VRlJZWEdCa2FHeUlWSUJQOXJnSDlEQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBRDlyZ0ZCQXYyc0FmMnhBU0lVSUJRZ0VpQVUvUTBNRFE0UEVCRVNFeFFWRmhjWUdSb2IvYTRCUVFIOXJBRWdGZjJ1QVNJVi9RMEVCUVlIR0JrYUd3Z0pDZ3NjSFI0Zi9Rc0NGQ0FFSUJJZ0ZmME5EQTBPRHhBUkVoTUFBUUlERkJVV0Z5QVUvUTBBQVFJREJBVUdCeEFSRWhNTURRNFAvUXNDQkNBVUlSSWdBa0VFYWlJQ0lBVkhEUUFMSUJQOUd3TWhBaUFTL1JzRElRTWdCU0FQUmcwQ0lBSWhCQXdCQzBFQklRQUxBMEFnQVNBQVFRSjBhaWdDQUNFTklBNGdBRUVCYWlJRlFRSjBhaWdDQUNFQ0lBb2dDRUVDZEdvaUNTQUROZ0lBSUFrZ0F5QU5JQUlnQkdwQkFtcEJBblZySWdOcVFRRjFJQVJxTmdJRUlBaEJBbW9oQ0NBQUlBOUhJUkVnQWlFRUlBVWhBQ0FSRFFBTEN5QUtJQWhCQW5ScUlBTTJBZ0FDUUNBTVJRUkFJQW9nQmtFQ2RHb2dBU0FIUVFGMGFrRUVheWdDQUNBQ1FRRnFRUUYxYXlJQUlBTnFRUUYxSUFKcU5nSUFEQUVMSUFJZ0Eyb2hBQXNnQ2lBSFFRSjBJZ05xUVFScklBQTJBZ0FnQVNBS0lBTVFDeG9MQzZBSEF3TjlBM3NDZnlBRFFRaFBCRUFnQTBFRGRpRUxBMEFnQWYwQUJBQWhCeUFBSUFEOUFBUUFJZ2dnQXYwQUJBQWlDZjBNdkhTelA3eDBzeis4ZExNL3ZIU3pQLzNtQWYza0FmMExCQUFnQVNBSUlBZjlETTh4c0Q3UE1iQSt6ekd3UHM4eHNENzk1Z0g5NVFFZ0NmME00ZEUyUCtIUk5qL2gwVFkvNGRFMlAvM21BZjNsQWYwTEJBQWdBaUFJSUFmOURPWFE0ai9sME9JLzVkRGlQK1hRNGovOTVnSDk1QUg5Q3dRQUlBSDlBQVFRSVFjZ0FDQUEvUUFFRUNJSUlBTDlBQVFRSWduOURMeDBzeis4ZExNL3ZIU3pQN3gwc3ovOTVnSDk1QUg5Q3dRUUlBRWdDQ0FIL1F6UE1iQSt6ekd3UHM4eHNEN1BNYkErL2VZQi9lVUJJQW45RE9IUk5qL2gwVFkvNGRFMlArSFJOai85NWdIOTVRSDlDd1FRSUFJZ0NDQUgvUXpsME9JLzVkRGlQK1hRNGovbDBPSS8vZVlCL2VRQi9Rc0VFQ0FDUVNCcUlRSWdBVUVnYWlFQklBQkJJR29oQUNBS1FRRnFJZ29nQzBjTkFBc0xBa0FnQTBFSGNTSURSUTBBSUFFcUFnQWhCQ0FBSUFJcUFnQWlCa084ZExNL2xDQUFLZ0lBSWdXU09BSUFJQUVnQlNBRVE4OHhzTDZVa2lBR1ErSFJOcitVa2pnQ0FDQUNJQVVnQkVQbDBPSS9sSkk0QWdBZ0EwRUJSZzBBSUFFcUFnUWhCQ0FBSUFJcUFnUWlCa084ZExNL2xDQUFLZ0lFSWdXU09BSUVJQUVnQlNBRVE4OHhzTDZVa2lBR1ErSFJOcitVa2pnQ0JDQUNJQVVnQkVQbDBPSS9sSkk0QWdRZ0EwRUNSZzBBSUFFcUFnZ2hCQ0FBSUFJcUFnZ2lCa084ZExNL2xDQUFLZ0lJSWdXU09BSUlJQUVnQlNBRVE4OHhzTDZVa2lBR1ErSFJOcitVa2pnQ0NDQUNJQVVnQkVQbDBPSS9sSkk0QWdnZ0EwRURSZzBBSUFFcUFnd2hCQ0FBSUFJcUFnd2lCa084ZExNL2xDQUFLZ0lNSWdXU09BSU1JQUVnQlNBRVE4OHhzTDZVa2lBR1ErSFJOcitVa2pnQ0RDQUNJQVVnQkVQbDBPSS9sSkk0QWd3Z0EwRUVSZzBBSUFFcUFoQWhCQ0FBSUFJcUFoQWlCa084ZExNL2xDQUFLZ0lRSWdXU09BSVFJQUVnQlNBRVE4OHhzTDZVa2lBR1ErSFJOcitVa2pnQ0VDQUNJQVVnQkVQbDBPSS9sSkk0QWhBZ0EwRUZSZzBBSUFFcUFoUWhCQ0FBSUFJcUFoUWlCa084ZExNL2xDQUFLZ0lVSWdXU09BSVVJQUVnQlNBRVE4OHhzTDZVa2lBR1ErSFJOcitVa2pnQ0ZDQUNJQVVnQkVQbDBPSS9sSkk0QWhRZ0EwRUdSZzBBSUFFcUFoZ2hCQ0FBSUFJcUFoZ2lCa084ZExNL2xDQUFLZ0lZSWdXU09BSVlJQUVnQlNBRVE4OHhzTDZVa2lBR1ErSFJOcitVa2pnQ0dDQUNJQVVnQkVQbDBPSS9sSkk0QWhnTEMrQUJBZ1ovQTNzQ1FDQURSUTBBSUFOQkJFOEVRQ0FEUVh4eElRWURRQ0FBSUFSQkFuUWlCV29pQnlBSC9RQUNBQ0FDSUFWcUlnZjlBQUlBSWdzZ0FTQUZhaUlGL1FBQ0FDSU0vYTRCUVFMOXJBSDlzUUVpQ2lBTC9hNEIvUXNDQUNBRklBcjlDd0lBSUFjZ0NpQU0vYTRCL1FzQ0FDQUVRUVJxSWdRZ0JrY05BQXNnQXlBR1JnMEJDd05BSUFBZ0JrRUNkQ0lFYWlJRklBVW9BZ0FnQWlBRWFpSUZLQUlBSWdjZ0FTQUVhaUlJS0FJQUlnbHFRUUoxYXlJRUlBZHFOZ0lBSUFnZ0JEWUNBQ0FGSUFRZ0NXbzJBZ0FnQmtFQmFpSUdJQU5IRFFBTEN3dmRBUUVFZnlNQVFZQUJheUlHSkFBZ0JpRUZBa0FnQVNnQ0RDQUNRUVIwYWlJQ0tBSUFJZ1JGQkVBZ0FpRUJEQUVMQTBBZ0JTQUNOZ0lBSUFWQkJHb2hCU0FFSWdFaUFpZ0NBQ0lFRFFBTEMwRUFJUVFEUUNBQktBSUlJZ0lnQkVnRVFDQUJJQVEyQWdnZ0JDRUNDd0pBSUFJZ0EwNE5BQU5BSUFJZ0FTZ0NCRTROQVFKQUlBQkJBUkFaQkVBZ0FTQUNOZ0lFREFFTElBSkJBV29oQWdzZ0FpQURTQTBBQ3dzZ0FTQUNOZ0lJSUFVZ0JrY0VRQ0FGUVFScklnVW9BZ0FoQVNBQ0lRUU1BUXNMSUFFb0FnUWhCeUFHUVlBQmFpUUFJQWNnQTBnTC9RWUJDMzhqQUVHQUFtc2lDaVFBQWtBZ0FFVUVRRUVBSVFBTUFRc0NRQ0FCSUFBb0FnQkdCRUFnQUNnQ0JDQUNSZzBCQ3lBQUlBSTJBZ1FnQUNBQk5nSUFJQW9nQWpZQ0FDQUtJQUUyQW9BQklBSWhCQ0FCSVFVRFFDQUtJQWNpREVFQmFpSUhRUUowSWdocUlBUkJBV3BCQW0waUNUWUNBQ0FLUVlBQmFpQUlhaUFGUVFGcVFRSnRJZ2cyQWdBZ0JpQUVJQVZzSWd0cUlRWWdDU0VFSUFnaEJTQUxRUUZMRFFBTElBQWdCallDQ0FKQUFrQUNRQUpBSUFaRkJFQWdBQ2dDRENJRVJRMENJQUJCREdvaEJRd0JDeUFHUVFSMElnUWdBQ2dDRUUwTkF5QUFLQUlNSUFRUUVDSUJEUUlnQTBFQlFab3hRUUFRQ0NBQVFReHFJZ1VvQWdBaUJFVU5BUXNnQkJBSklBVkJBRFlDQUFzZ0FCQUpRUUFoQUF3REN5QUFJQUUyQWd3Z0FTQUFLQUlRSWdKcVFRQWdCQ0FDYXhBT0dpQUFJQVEyQWhBZ0FDZ0NCQ0VDSUFBb0FnQWhBUXNnQUNnQ0RDRUZJQXdFUUVFQUlRTWdCU0FCSUFKc1FRUjBhaUlFSVFZRFFBSkFJQW9nQTBFQ2RDSUJhaWdDQUNJSVFRQk1EUUFnQ0VFQmF5RUxRUUFoQ1FKQUFrQWdDa0dBQVdvZ0FXb29BZ0FpQWtFQVRBUkFJQWhCQVhFaERVRUFJUWNnQ0VFQlJ3MEJJQVloQVF3Q0N3TkFJQVloQVNBQ0lRWURRQUpBSUFVZ0JEWUNBQ0FHUVFGR0JFQWdCVUVRYWlFRklBUkJFR29oQkF3QkN5QUZJQVEyQWhBZ0JFRVFhaUVFSUFWQklHb2hCU0FHUVFKS0lRNGdCa0VDYXlFR0lBNE5BUXNMSUFRZ0FTQUNRUVIwYWlBSklBa2dDMFp5UVFGeElnY2JJUVlnQkNBQklBY2JJUVFnQ1VFQmFpSUpJQWhIRFFBTERBSUxJQWhCL3YvLy93ZHhJUWdEUUNBSElBdEdJUUVnQjBFQ2FpRUhJQVFnQmlBQkd5SUVJUVlnQkNFQklBbEJBbW9pQ1NBSVJ3MEFDd3NnRFVVRVFDQUVJUVlNQVFzZ0JDQUJJQUpCQkhScUlBY2dCeUFMUm5KQkFYRWlBaHNoQmlBRUlBRWdBaHNoQkFzZ0EwRUJhaUlESUF4SERRQUxDeUFGUVFBMkFnQUxJQUFvQWdnaUFVVU5BQ0FBS0FJTUlRUWdBVUVFVHdSQUlBRkJmSEVoQWtFQUlRVURRQ0FFUVFBMkFqd2dCRUxuQnpjQ05DQUVRUUEyQWl3Z0JFTG5CemNDSkNBRVFRQTJBaHdnQkVMbkJ6Y0NGQ0FFUVFBMkFnd2dCRUxuQnpjQ0JDQUVRVUJySVFRZ0JVRUVhaUlGSUFKSERRQUxDeUFCUVFOeElnRkZEUUJCQUNFRkEwQWdCRUVBTmdJTUlBUkM1d2MzQWdRZ0JFRVFhaUVFSUFWQkFXb2lCU0FCUncwQUN3c2dDa0dBQW1va0FDQUFDN0VCQVFOL0FrQWdBRVVOQUNBQUtBSUlJZ0ZGRFFBZ0FDZ0NEQ0VBSUFGQkJFOEVRQ0FCUVh4eElRTURRQ0FBUVFBMkFqd2dBRUxuQnpjQ05DQUFRUUEyQWl3Z0FFTG5CemNDSkNBQVFRQTJBaHdnQUVMbkJ6Y0NGQ0FBUVFBMkFnd2dBRUxuQnpjQ0JDQUFRVUJySVFBZ0FrRUVhaUlDSUFOSERRQUxDeUFCUVFOeElnRkZEUUJCQUNFQ0EwQWdBRUVBTmdJTUlBQkM1d2MzQWdRZ0FFRVFhaUVBSUFKQkFXb2lBaUFCUncwQUN3c0wrd1VCRUg4akFFR0FBbXNpQ0NRQUFuOUJBVUVVRUF3aUJrVUVRQ0FDUVFGQjlEQkJBQkFJUVFBTUFRc2dCaUFCTmdJRUlBWWdBRFlDQUNBSUlBRTJBZ0FnQ0NBQU5nS0FBUU5BSUFnZ0JTSU5RUUZxSWdWQkFuUWlCMm9nQVVFQmFrRUNiU0lETmdJQUlBaEJnQUZxSUFkcUlBQkJBV3BCQW0waUJ6WUNBQ0FFSUFBZ0FXd2lDV29oQkNBRElRRWdCeUVBSUFsQkFVc05BQXNnQmlBRU5nSUlJQVJGQkVBZ0JoQUpRUUFNQVFzZ0JpQUVRUkFRRENJRE5nSU1JQU5GQkVBZ0FrRUJRZG9hUVFBUUNDQUdFQWxCQUF3QkN5QUdJQVlvQWdnaUMwRUVkRFlDRUNBRElRQWdEUVJBSUFNZ0JpZ0NCQ0FHS0FJQWJFRUVkR29pQkNFQkEwQUNRQ0FJSUE1QkFuUWlBbW9vQWdBaUNVRUFUQTBBSUFsQkFXc2hERUVBSVFjQ1FDQUlRWUFCYWlBQ2FpZ0NBQ0lDUVFCTUJFQkJBQ0VGSUFsQkFVY0VRQ0FKUWY3Ly8vOEhjU0VLQTBBZ0JTQU1SaUVQSUFWQkFtb2hCU0FCSUFRZ0R4c2lCQ0VCSUFkQkFtb2lCeUFLUncwQUN3c2dDVUVCY1EwQklBUWhBUXdDQ3dOQUlBUWhCU0FDSVFRRFFBSkFJQUFnQVRZQ0FDQUVRUUZHQkVBZ0FFRVFhaUVBSUFGQkVHb2hBUXdCQ3lBQUlBRTJBaEFnQVVFUWFpRUJJQUJCSUdvaEFDQUVRUUpLSVJBZ0JFRUNheUVFSUJBTkFRc0xJQUVnQlNBQ1FRUjBhaUFISUFjZ0RFWnlRUUZ4SWdvYklRUWdBU0FGSUFvYklRRWdCMEVCYWlJSElBbEhEUUFMREFFTElBRWdCQ0FDUVFSMGFpQUZJQVVnREVaeVFRRnhJZ1ViSVJFZ0FTQUVJQVViSVFFZ0VTRUVDeUFPUVFGcUlnNGdEVWNOQUFzTElBQkJBRFlDQUFKQUlBdEZEUUFnQzBFRVR3UkFJQXRCZkhFaEFFRUFJUUVEUUNBRFFRQTJBandnQTBMbkJ6Y0NOQ0FEUVFBMkFpd2dBMExuQnpjQ0pDQURRUUEyQWh3Z0EwTG5CemNDRkNBRFFRQTJBZ3dnQTBMbkJ6Y0NCQ0FEUVVCcklRTWdBVUVFYWlJQklBQkhEUUFMQ3lBTFFRTnhJZ0JGRFFCQkFDRUJBMEFnQTBFQU5nSU1JQU5DNXdjM0FnUWdBMEVRYWlFRElBRkJBV29pQVNBQVJ3MEFDd3NnQmdzaEVpQUlRWUFDYWlRQUlCSUxVd0VCZndKL0lBQXRBQXhCL3dGR0JFQWdBRUtBL29PQThBQTNBZ3hCQUNBQUtBSUlJZ0VnQUNnQ0JFOE5BUm9nQUNBQlFRRnFOZ0lJSUFBZ0FTMEFBRUdBL2dOeU5nSU1DeUFBUVFBMkFoQkJBUXNMU1FFQmZ3SkFRUUZCTEJBTUlnRUVRQ0FCUVFBMkFoQUNRQ0FBUVFCTUJFQWdBVUVCUVFnUURDSUFOZ0lrSUFCRkRRRU1Bd3NnQVVFQU5nSU1DeUFCRUFrTFFRQWhBUXNnQVF0K0FnRi9BWDRnQUwwaUEwSTBpS2RCL3c5eElnSkIvdzlIQkh3Z0FrVUVRQ0FCSUFCRUFBQUFBQUFBQUFCaEJIOUJBQVVnQUVRQUFBQUFBQUR3UTZJZ0FSQmZJUUFnQVNnQ0FFRkFhZ3MyQWdBZ0FBOExJQUVnQWtIK0IyczJBZ0FnQTBMLy8vLy8vLy8vaDRCL2cwS0FnSUNBZ0lDQThEK0V2d1VnQUFzTGtRSUFJQUJGQkVCQkFBOExBbjhDUUNBQlFmOEFUUTBBQWtCQmxNOEJLQUlBS0FJQVJRUkFJQUZCZ0g5eFFZQy9BMFlOQWd3QkN5QUJRZjhQVFFSQUlBQWdBVUUvY1VHQUFYSTZBQUVnQUNBQlFRWjJRY0FCY2pvQUFFRUNEQU1MSUFGQmdFQnhRWURBQTBjZ0FVR0FzQU5QY1VVRVFDQUFJQUZCUDNGQmdBRnlPZ0FDSUFBZ0FVRU1ka0hnQVhJNkFBQWdBQ0FCUVFaMlFUOXhRWUFCY2pvQUFVRUREQU1MSUFGQmdJQUVhMEgvL3o5TkJFQWdBQ0FCUVQ5eFFZQUJjam9BQXlBQUlBRkJFblpCOEFGeU9nQUFJQUFnQVVFR2RrRS9jVUdBQVhJNkFBSWdBQ0FCUVF4MlFUOXhRWUFCY2pvQUFVRUVEQU1MQzBHVXhnRkJHVFlDQUVGL0RBRUxJQUFnQVRvQUFFRUJDd3U4QWdBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFJQUZCQ1dzT0VnQUlDUW9JQ1FFQ0F3UUtDUW9LQ0FrRkJnY0xJQUlnQWlnQ0FDSUJRUVJxTmdJQUlBQWdBU2dDQURZQ0FBOExJQUlnQWlnQ0FDSUJRUVJxTmdJQUlBQWdBVElCQURjREFBOExJQUlnQWlnQ0FDSUJRUVJxTmdJQUlBQWdBVE1CQURjREFBOExJQUlnQWlnQ0FDSUJRUVJxTmdJQUlBQWdBVEFBQURjREFBOExJQUlnQWlnQ0FDSUJRUVJxTmdJQUlBQWdBVEVBQURjREFBOExJQUlnQWlnQ0FFRUhha0Y0Y1NJQlFRaHFOZ0lBSUFBZ0FTc0RBRGtEQUE4TElBQWdBaUFERVFNQUN3OExJQUlnQWlnQ0FDSUJRUVJxTmdJQUlBQWdBVFFDQURjREFBOExJQUlnQWlnQ0FDSUJRUVJxTmdJQUlBQWdBVFVDQURjREFBOExJQUlnQWlnQ0FFRUhha0Y0Y1NJQlFRaHFOZ0lBSUFBZ0FTa0RBRGNEQUF0ekFRWi9JQUFvQWdBaUF5d0FBRUV3YXlJQlFRbExCRUJCQUE4TEEwQkJmeUVFSUFKQnpKbXo1Z0JOQkVCQmZ5QUJJQUpCQ213aUJXb2dBU0FGUWYvLy8vOEhjMHNiSVFRTElBQWdBMEVCYWlJRk5nSUFJQU1zQUFFaEJpQUVJUUlnQlNFRElBWkJNR3NpQVVFS1NRMEFDeUFDQzdRVUFoVi9BWDRqQUVGQWFpSUlKQUFnQ0NBQk5nSThJQWhCSjJvaEZpQUlRU2hxSVJFQ1FBSkFBa0FDUUFOQVFRQWhCd05BSUFFaERTQUhJQTVCLy8vLy93ZHpTZzBDSUFjZ0Rtb2hEZ0pBQWtBQ1FBSkFJQUVpQnkwQUFDSUxCRUFEUUFKQUFrQWdDMEgvQVhFaUFVVUVRQ0FISVFFTUFRc2dBVUVsUncwQklBY2hDd05BSUFzdEFBRkJKVWNFUUNBTElRRU1BZ3NnQjBFQmFpRUhJQXN0QUFJaEdTQUxRUUpxSWdFaEN5QVpRU1ZHRFFBTEN5QUhJQTFySWdjZ0RrSC8vLy8vQjNNaUYwb05DU0FBQkVBZ0FDQU5JQWNRRVFzZ0J3MEhJQWdnQVRZQ1BDQUJRUUZxSVFkQmZ5RVFBa0FnQVN3QUFVRXdheUlKUVFsTERRQWdBUzBBQWtFa1J3MEFJQUZCQTJvaEIwRUJJUklnQ1NFUUN5QUlJQWMyQWp4QkFDRU1Ba0FnQnl3QUFDSUxRU0JySWdGQkgwc0VRQ0FISVFrTUFRc2dCeUVKUVFFZ0FYUWlBVUdKMFFSeFJRMEFBMEFnQ0NBSFFRRnFJZ2syQWp3Z0FTQU1jaUVNSUFjc0FBRWlDMEVnYXlJQlFTQlBEUUVnQ1NFSFFRRWdBWFFpQVVHSjBRUnhEUUFMQ3dKQUlBdEJLa1lFUUFKL0FrQWdDU3dBQVVFd2F5SUJRUWxMRFFBZ0NTMEFBa0VrUncwQUFuOGdBRVVFUUNBRUlBRkJBblJxUVFvMkFnQkJBQXdCQ3lBRElBRkJBM1JxS0FJQUN5RVBJQWxCQTJvaEFVRUJEQUVMSUJJTkJpQUpRUUZxSVFFZ0FFVUVRQ0FJSUFFMkFqeEJBQ0VTUVFBaER3d0RDeUFDSUFJb0FnQWlCMEVFYWpZQ0FDQUhLQUlBSVE5QkFBc2hFaUFJSUFFMkFqd2dEMEVBVGcwQlFRQWdEMnNoRHlBTVFZREFBSEloREF3QkN5QUlRVHhxRUdJaUQwRUFTQTBLSUFnb0Fqd2hBUXRCQUNFSFFYOGhDZ0ovUVFBZ0FTMEFBRUV1UncwQUdpQUJMUUFCUVNwR0JFQUNmd0pBSUFFc0FBSkJNR3NpQ1VFSlN3MEFJQUV0QUFOQkpFY05BQ0FCUVFScUlRRUNmeUFBUlFSQUlBUWdDVUVDZEdwQkNqWUNBRUVBREFFTElBTWdDVUVEZEdvb0FnQUxEQUVMSUJJTkJpQUJRUUpxSVFGQkFDQUFSUTBBR2lBQ0lBSW9BZ0FpQ1VFRWFqWUNBQ0FKS0FJQUN5RUtJQWdnQVRZQ1BDQUtRUUJPREFFTElBZ2dBVUVCYWpZQ1BDQUlRVHhxRUdJaENpQUlLQUk4SVFGQkFRc2hFd05BSUFjaEZFRWNJUWtnQVNJWUxBQUFJZ2RCK3dCclFVWkpEUXNnQVVFQmFpRUJJQWNnRkVFNmJHcEJ6OEFCYWkwQUFDSUhRUUZyUVFoSkRRQUxJQWdnQVRZQ1BBSkFJQWRCRzBjRVFDQUhSUTBNSUJCQkFFNEVRQ0FBUlFSQUlBUWdFRUVDZEdvZ0J6WUNBQXdNQ3lBSUlBTWdFRUVEZEdvcEF3QTNBekFNQWdzZ0FFVU5DQ0FJUVRCcUlBY2dBaUFHRUdFTUFRc2dFRUVBVGcwTFFRQWhCeUFBUlEwSUN5QUFMUUFBUVNCeERRc2dERUgvLzN0eElnc2dEQ0FNUVlEQUFIRWJJUXhCQUNFUVFiQUlJUlVnRVNFSkFrQUNRQUovQWtBQ1FBSkFBa0FDUUFKQUFuOENRQUpBQWtBQ1FBSkFBa0FDUUNBWUxBQUFJZ2RCVTNFZ0J5QUhRUTl4UVFOR0d5QUhJQlFiSWdkQjJBQnJEaUVFRmhZV0ZoWVdGaFlRRmdrR0VCQVFGZ1lXRmhZV0FnVURGaFlLRmdFV0ZnUUFDd0pBSUFkQndRQnJEZ2NRRmdzV0VCQVFBQXNnQjBIVEFFWU5Dd3dWQ3lBSUtRTXdJUnhCc0FnTUJRdEJBQ0VIQWtBQ1FBSkFBa0FDUUFKQUFrQWdGRUgvQVhFT0NBQUJBZ01FSEFVR0hBc2dDQ2dDTUNBT05nSUFEQnNMSUFnb0FqQWdEallDQUF3YUN5QUlLQUl3SUE2c053TUFEQmtMSUFnb0FqQWdEanNCQUF3WUN5QUlLQUl3SUE0NkFBQU1Gd3NnQ0NnQ01DQU9OZ0lBREJZTElBZ29BakFnRHF3M0F3QU1GUXRCQ0NBS0lBcEJDRTBiSVFvZ0RFRUljaUVNUWZnQUlRY0xJQkVoQVNBSUtRTXdJaHhDQUZJRVFDQUhRU0J4SVEwRFFDQUJRUUZySWdFZ0hLZEJEM0ZCNE1RQmFpMEFBQ0FOY2pvQUFDQWNRZzlXSVJvZ0hFSUVpQ0VjSUJvTkFBc0xJQUVoRFNBSUtRTXdVQTBESUF4QkNIRkZEUU1nQjBFRWRrR3dDR29oRlVFQ0lSQU1Bd3NnRVNFQklBZ3BBekFpSEVJQVVnUkFBMEFnQVVFQmF5SUJJQnluUVFkeFFUQnlPZ0FBSUJ4Q0IxWWhHeUFjUWdPSUlSd2dHdzBBQ3dzZ0FTRU5JQXhCQ0hGRkRRSWdDaUFSSUFGcklnRkJBV29nQVNBS1NCc2hDZ3dDQ3lBSUtRTXdJaHhDQUZNRVFDQUlRZ0FnSEgwaUhEY0RNRUVCSVJCQnNBZ01BUXNnREVHQUVIRUVRRUVCSVJCQnNRZ01BUXRCc2doQnNBZ2dERUVCY1NJUUd3c2hGU0FjSUJFUUl5RU5DeUFUSUFwQkFFaHhEUkVnREVILy8zdHhJQXdnRXhzaERBSkFJQWdwQXpBaUhFSUFVZzBBSUFvTkFDQVJJUTFCQUNFS0RBNExJQW9nSEZBZ0VTQU5hMm9pQVNBQklBcElHeUVLREEwTElBZ3BBekFoSEF3TEN3Si9RZi8vLy84SElBb2dDa0gvLy8vL0IwOGJJZ3dpQjBFQVJ5RUpBa0FDUUFKQUlBZ29BakFpQVVHRURDQUJHeUlOSWdGQkEzRkZEUUFnQjBVTkFBTkFJQUV0QUFCRkRRSWdCMEVCYXlJSFFRQkhJUWtnQVVFQmFpSUJRUU54UlEwQklBY05BQXNMSUFsRkRRRUNRQ0FCTFFBQVJRMEFJQWRCQkVrTkFBTkFRWUNDaEFnZ0FTZ0NBQ0lKYXlBSmNrR0FnWUtFZUhGQmdJR0NoSGhIRFFJZ0FVRUVhaUVCSUFkQkJHc2lCMEVEU3cwQUN3c2dCMFVOQVFzRFFDQUJJQUV0QUFCRkRRSWFJQUZCQVdvaEFTQUhRUUZySWdjTkFBc0xRUUFMSWdFZ0RXc2dEQ0FCR3lJQklBMXFJUWtnQ2tFQVRnUkFJQXNoRENBQklRb01EQXNnQ3lFTUlBRWhDaUFKTFFBQURROE1Dd3NnQ0NrRE1DSWNRZ0JTRFFGQ0FDRWNEQWtMSUFvRVFDQUlLQUl3REFJTFFRQWhCeUFBUVNBZ0QwRUFJQXdRRkF3Q0N5QUlRUUEyQWd3Z0NDQWNQZ0lJSUFnZ0NFRUlhaUlITmdJd1FYOGhDaUFIQ3lFTFFRQWhCd05BQWtBZ0N5Z0NBQ0lOUlEwQUlBaEJCR29nRFJCZ0lnMUJBRWdORHlBTklBb2dCMnRMRFFBZ0MwRUVhaUVMSUFjZ0RXb2lCeUFLU1EwQkN3dEJQU0VKSUFkQkFFZ05EQ0FBUVNBZ0R5QUhJQXdRRkNBSFJRUkFRUUFoQnd3QkMwRUFJUWtnQ0NnQ01DRUxBMEFnQ3lnQ0FDSU5SUTBCSUFoQkJHb2lDaUFORUdBaURTQUphaUlKSUFkTERRRWdBQ0FLSUEwUUVTQUxRUVJxSVFzZ0J5QUpTdzBBQ3dzZ0FFRWdJQThnQnlBTVFZREFBSE1RRkNBUElBY2dCeUFQU0JzaEJ3d0lDeUFUSUFwQkFFaHhEUWxCUFNFSklBQWdDQ3NETUNBUElBb2dEQ0FISUFVUkV3QWlCMEVBVGcwSERBb0xJQWN0QUFFaEN5QUhRUUZxSVFjTUFBc0FDeUFBRFFrZ0VrVU5BMEVCSVFjRFFDQUVJQWRCQW5ScUtBSUFJZ0FFUUNBRElBZEJBM1JxSUFBZ0FpQUdFR0ZCQVNFT0lBZEJBV29pQjBFS1J3MEJEQXNMQzBFQklRNGdCMEVLVHcwSkEwQWdCQ0FIUVFKMGFpZ0NBQTBCSUFkQkFXb2lCMEVLUncwQUN3d0pDMEVjSVFrTUJnc2dDQ0FjUEFBblFRRWhDaUFXSVEwZ0N5RU1DeUFLSUFrZ0RXc2lDeUFLSUF0S0d5SUtJQkJCLy8vLy93ZHpTZzBEUVQwaENTQVBJQW9nRUdvaUFTQUJJQTlJR3lJSElCZEtEUVFnQUVFZ0lBY2dBU0FNRUJRZ0FDQVZJQkFRRVNBQVFUQWdCeUFCSUF4QmdJQUVjeEFVSUFCQk1DQUtJQXRCQUJBVUlBQWdEU0FMRUJFZ0FFRWdJQWNnQVNBTVFZREFBSE1RRkNBSUtBSThJUUVNQVFzTEMwRUFJUTRNQXd0QlBTRUpDMEdVeGdFZ0NUWUNBQXRCZnlFT0N5QUlRVUJySkFBZ0RndW9BZ0VFZnlNQVFkQUJheUlGSkFBZ0JTQUNOZ0xNQVNBRlFhQUJhaUlDUVFCQktCQU9HaUFGSUFVb0Fzd0JOZ0xJQVFKQVFRQWdBU0FGUWNnQmFpQUZRZEFBYWlBQ0lBTWdCQkJqUVFCSURRQWdBQ2dDVEVFQVNDRUlJQUFnQUNnQ0FDSUhRVjl4TmdJQUFuOENRQUpBSUFBb0FqQkZCRUFnQUVIUUFEWUNNQ0FBUVFBMkFod2dBRUlBTndNUUlBQW9BaXdoQmlBQUlBVTJBaXdNQVFzZ0FDZ0NFQTBCQzBGL0lBQVFOdzBCR2dzZ0FDQUJJQVZCeUFGcUlBVkIwQUJxSUFWQm9BRnFJQU1nQkJCakN5RUJJQVlFZnlBQVFRQkJBQ0FBS0FJa0VRQUFHaUFBUVFBMkFqQWdBQ0FHTmdJc0lBQkJBRFlDSENBQUtBSVVHaUFBUWdBM0F4QkJBQVVnQVFzYUlBQWdBQ2dDQUNBSFFTQnhjallDQUNBSURRQUxJQVZCMEFGcUpBQUxKd0VCZjBFY0lRTWdBVUVEY1FSL1FSd0ZJQUFnQVNBQ0VCc2lBRFlDQUVFQVFUQWdBQnNMQy8wREFRVi9BbjlCOE1RQktBSUFJZ0lnQUVFSGFrRjRjU0lCUVFkcVFYaHhJZ05xSVFBQ1FDQURRUUFnQUNBQ1RSdEZCRUFnQUQ4QVFSQjBUUTBCSUFBUUFRMEJDMEdVeGdGQk1EWUNBRUYvREFFTFFmREVBU0FBTmdJQUlBSUxJZ0pCZjBjRVFDQUJJQUpxSWdCQkJHdEJFRFlDQUNBQVFSQnJJZ05CRURZQ0FBSkFBbjlCb000QktBSUFJZ0VFZnlBQktBSUlCVUVBQ3lBQ1JnUkFJQUlnQWtFRWF5Z0NBRUYrY1dzaUJFRUVheWdDQUNFRklBRWdBRFlDQ0NBRUlBVkJmbkZySWdBZ0FDZ0NBR3BCQkdzdEFBQkJBWEVFUUNBQUtBSUVJZ0VnQUNnQ0NDSUVOZ0lJSUFRZ0FUWUNCQ0FBSUFNZ0FHc2lBVFlDQUF3REN5QUNRUkJyREFFTElBSkJFRFlDQUNBQ0lBQTJBZ2dnQWlBQk5nSUVJQUpCRURZQ0RFR2d6Z0VnQWpZQ0FDQUNRUkJxQ3lJQUlBTWdBR3NpQVRZQ0FBc2dBQ0FCUVh4eGFrRUVheUFCUVFGeU5nSUFJQUFDZnlBQUtBSUFRUWhySWdGQi93Qk5CRUFnQVVFRGRrRUJhd3dCQ3lBQlFSMGdBV2NpQTJ0MlFRUnpJQU5CQW5SclFlNEFhaUFCUWY4ZlRRMEFHa0UvSUFGQkhpQURhM1pCQW5NZ0EwRUJkR3RCeHdCcUlnRWdBVUUvVHhzTElnRkJCSFFpQTBHZ3hnRnFOZ0lFSUFBZ0EwR294Z0ZxSWdNb0FnQTJBZ2dnQXlBQU5nSUFJQUFvQWdnZ0FEWUNCRUdvemdGQnFNNEJLUU1BUWdFZ0FhMkdoRGNEQUFzZ0FrRi9Sd3U5QVFFQ2Z3SkFJQUFvQWt3aUFVRUFUZ1JBSUFGRkRRRkJ6TTRCS0FJQUlBRkIvLy8vL3dOeFJ3MEJDd0pBSUFBb0FsQkJDa1lOQUNBQUtBSVVJZ0VnQUNnQ0VFWU5BQ0FBSUFGQkFXbzJBaFFnQVVFS09nQUFEd3NnQUJCb0R3c2dBRUhNQUdvaUFTQUJLQUlBSWdKQi8vLy8vd01nQWhzMkFnQUNRQUpBSUFBb0FsQkJDa1lOQUNBQUtBSVVJZ0lnQUNnQ0VFWU5BQ0FBSUFKQkFXbzJBaFFnQWtFS09nQUFEQUVMSUFBUWFBc2dBU2dDQUJvZ0FVRUFOZ0lBQzN3QkFuOGpBRUVRYXlJQkpBQWdBVUVLT2dBUEFrQUNRQ0FBS0FJUUlnSUVmeUFDQlNBQUVEY05BaUFBS0FJUUN5QUFLQUlVSWdKR0RRQWdBQ2dDVUVFS1JnMEFJQUFnQWtFQmFqWUNGQ0FDUVFvNkFBQU1BUXNnQUNBQlFROXFRUUVnQUNnQ0pCRUFBRUVCUncwQUlBRXRBQThhQ3lBQlFSQnFKQUFMc0FJQkFuOGdBQVJBSUFBb0FnQVFNU0FBUVFBMkFnQWdBQ2dDU0NJQkJFQWdBUkFKSUFCQkFEWUNTQXNnQUNnQ1JDSUJCRUFnQVJBSklBQkJBRFlDUkFzZ0FDZ0NiQ0lCQkVBZ0FSQUpJQUJCQURZQ2JBc2dBQ2dDZENJQkJFQWdBU2dDQUNJQ0JFQWdBaEFKSUFBb0FuUWlBVUVBTmdJQUN5QUJFQWtnQUVFQU5nSjBDeUFBS0FKNElnRUVRQ0FCS0FJTUlnSUVRQ0FDRUFrZ0FDZ0NlQ0lCUVFBMkFnd0xJQUVvQWdRaUFnUkFJQUlRQ1NBQUtBSjRJZ0ZCQURZQ0JBc2dBU2dDQ0NJQ0JFQWdBaEFKSUFBb0FuZ2lBVUVBTmdJSUN5QUJLQUlBSWdJRVFDQUNFQWtnQUNnQ2VDSUJRUUEyQWdBTElBRVFDU0FBUVFBMkFuZ0xJQUFvQWdRaUFRUkFJQUVRTFNBQVFRQTJBZ1FMSUFBb0FnZ2lBUVJBSUFFUUxTQUFRUUEyQWdnTElBQVFDUXNMaGhzQ0huOEZleU1BUWZBQmF5SUpKQUJCQVNFT0FrQWdBQ2dDQUNnQ1BBMEFJQUFvQW9BQkRRQUNRQUpBSUFBb0FuUWlDRVVFUUNBQUtBSjRJUVFNQVFzZ0FTZ0NFQ0VESUFndkFRUWhCZ0pBSUFBb0FuZ2lCRVVOQUNBRUtBSU1SUTBBSUFRdEFCSWhBd3NDUUNBR0JFQWdDQ2dDQUNFSUEwQWdDQ0FGUVFac2FpSUtMd0VBSWdjZ0EwOEVRQ0FKSUFNMkFyUUJJQWtnQnpZQ3NBRWdBa0VCUWJEbUFDQUpRYkFCYWhBSVFRQWhEZ3dHQ3dKQUlBb3ZBUVFpQ2tVTkFDQUtRZi8vQTBZTkFDQUtRUUZySWdvZ0Ewa05BQ0FKSUFNMkFxUUJJQWtnQ2pZQ29BRWdBa0VCUWJEbUFDQUpRYUFCYWhBSVFRQWhEZ3dHQ3lBRlFRRnFJZ1VnQmtjTkFBc01BUXNnQXcwQ0RBRUxBMEFnQTBFQmF5RURRUUFoQlFOQUlBZ2dCVUVHYkdvdkFRQWdBMGNFUUNBRlFRRnFJZ1VnQmtjTkFRd0VDd3NnQXcwQUN3c0NRQ0FFUlEwQUlBUW9BZ3dpQ2tVTkFBSkFBa0FnQkMwQUVpSUlCRUJCQUNFRlFRRWhCd05BSUFFb0FoQWlBeUFLSUFWQkFuUnFMd0VBSWdSTkJFQWdDU0FETmdLVUFTQUpJQVEyQXBBQklBSkJBVUd3NWdBZ0NVR1FBV29RQ0VFQUlRY0xJQVZCQVdvaUJTQUlSdzBBQ3lBSVFRUVFEQ0lEUlEwQlFRQWhCUU5BQWtBZ0NpQUZRUUowYWlJRUxRQUNJZ1pCQWs4RVFDQUpJQVkyQWtRZ0NTQUZOZ0pBSUFKQkFVSGIyUUFnQ1VGQWF4QUlRUUFoQnd3QkN5QUlJQVF0QUFNaUJFMEVRQ0FKSUFRMkFvQUJJQUpCQVVHajJRQWdDVUdBQVdvUUNFRUFJUWNNQVFzZ0F5QUVRUUowYWlFTEFrQWdCa0VCUnlJTURRQWdDeWdDQUVVTkFDQUpJQVEyQWxBZ0FrRUJRWmZWQUNBSlFkQUFhaEFJUVFBaEJ3d0JDd0pBSUFZTkFDQUVSUTBBSUFrZ0JEWUNaQ0FKSUFVMkFtQWdBa0VCUVpyWUFDQUpRZUFBYWhBSVFRQWhCd3dCQ3dKQUlBd05BQ0FFSUFWR0RRQWdDU0FFTmdKNElBa2dCVFlDZENBSklBVTJBbkFnQWtFQlFiN1lBQ0FKUWZBQWFoQUlRUUFoQnd3QkN5QUxRUUUyQWdBTElBVkJBV29pQlNBSVJ3MEFDMEVBSVFVRFFBSkFBa0FnQXlBRlFRSjBJZ1JxS0FJQVJRUkFJQVFnQ21vdEFBSU5BUXNnQlVFQmFpSUZJQWhIRFFJZ0IwVU5BU0FCS0FJUVFRRkhEUVZCQUNFRkEwQWdBeUFGUVFKMGFpZ0NBQVJBSUFnZ0JVRUJhaUlGUncwQkRBY0xDMEVBSVFjZ0FrRUNRZS9FQUVFQUVBZ2dDRUVRVHdSQUlBaEI4QUZ4SVFkQkFDRUVBMEFnQ2lBRVFRSjBhaUlHUVFFNkFBSWdCaUFFT2dBRElBWkJBVG9BUGlBR1FRRTZBRG9nQmtFQk9nQTJJQVpCQVRvQU1pQUdRUUU2QUM0Z0JrRUJPZ0FxSUFaQkFUb0FKaUFHUVFFNkFDSWdCa0VCT2dBZUlBWkJBVG9BR2lBR1FRRTZBQllnQmtFQk9nQVNJQVpCQVRvQURpQUdRUUU2QUFvZ0JrRUJPZ0FHSUFZZ0JFRUJjam9BQnlBR0lBUkJEM0k2QUQ4Z0JpQUVRUTV5T2dBN0lBWWdCRUVOY2pvQU55QUdJQVJCREhJNkFETWdCaUFFUVF0eU9nQXZJQVlnQkVFS2Nqb0FLeUFHSUFSQkNYSTZBQ2NnQmlBRVFRaHlPZ0FqSUFZZ0JFRUhjam9BSHlBR0lBUkJCbkk2QUJzZ0JpQUVRUVZ5T2dBWElBWWdCRUVFY2pvQUV5QUdJQVJCQTNJNkFBOGdCaUFFUVFKeU9nQUxJQVJCRUdvaUJDQUhSdzBBQ3lBSElBaEdEUVlMQTBBZ0NpQUhRUUowYWlJRUlBYzZBQU1nQkVFQk9nQUNJQWRCQVdvaUJ5QUlSdzBBQ3d3RkN5QUpJQVUyQWpBZ0FrRUJRYVBTQUNBSlFUQnFFQWhCQUNFSElBVkJBV29pQlNBSVJ3MEJDd3NnQXhBSlFRQWhEZ3dGQ3lBSVFRUVFEQ0lERFFFTFFRQWhEaUFDUVFGQm10c0FRUUFRQ0F3REN5QURFQWtMQWtBZ0FDZ0NlQ0lEUlEwQUlBTW9BZ3dpRDBVRVFDQURLQUlFRUFrZ0FDZ0NlQ2dDQ0JBSklBQW9BbmdvQWdBUUNTQUFLQUo0SWdNb0Fnd2lCQVIvSUFRUUNTQUFLQUo0QlNBREN4QUpJQUJCQURZQ2VBd0JDeUFCS0FJWUlRMENRQUpBSUFNdEFCSWlDZ1JBSUFNb0FnQWhGQ0FES0FJRUlRWWdBeWdDQ0NFSVFRQWhCUUpBQTBBZ0RTQVBJQVZCQW5ScUx3RUFRVFJzYWlnQ0xBUkFJQW9nQlVFQmFpSUZSdzBCREFJTEN5QUpJQVUyQWlBZ0FrRUJRZExuQUNBSlFTQnFFQWhCQUNFT0RBWUxJQXBCTkd3UURTSUxSUTBCUVFBaEJRTkFJQThnQlVFQ2RHb2lBeThCQUNFSElBc2dBeTBBQWdSL0lBTXRBQU1GSUFVTFFUUnNhaUlFSUEwZ0IwRTBiR29pQS8wQUFnRDlDd0lBSUFRZ0F5Z0NNRFlDTUNBRUlBUDlBQUlnL1FzQ0lDQUVJQVA5QUFJUS9Rc0NFQ0FMSUFWQk5HeHFJZ1FnQXlnQ0NDQURLQUlNYkVFQ2RCQVdJZ00yQWl3Z0EwVUVRQ0FGUWYvL0EzRWlBQVJBQTBBZ0N5QUFRUUZySWdCQk5HeHFLQUlzRUFrZ0FBMEFDd3NnQ3hBSlFRQWhEaUFDUVFGQm51Y0FRUUFRQ0F3SEN5QUVJQVVnQ0dvdEFBQTJBaGdnQkNBRklBWnFMUUFBTmdJZ0lBVkJBV29pQlNBS1J3MEFDeUFBS0FKNEx3RVFJaEJCQVdzaEVnTkFJQXNnRTBFMGJHb2lBeWdDRENBREtBSUliQ0VHSUEwZ0R5QVRRUUowYWlJRUx3RUFRVFJzYWlnQ0xDRUlBa0FnQkMwQUFrVUVRQ0FHUlEwQklBTW9BaXdoQlVFQUlRZEJBQ0VFQWtBZ0JrRUVTUTBBSUFVZ0NHdEJFRWtOQUNBR1FYeHhJUVJCQUNFREEwQWdCU0FEUVFKMElneHFJQWdnREdyOUFBSUEvUXNDQUNBRFFRUnFJZ01nQkVjTkFBc2dCQ0FHUmcwQ0N5QUVJUU1nQmtFRGNTSU1CRUFEUUNBRklBTkJBblFpRVdvZ0NDQVJhaWdDQURZQ0FDQURRUUZxSVFNZ0IwRUJhaUlISUF4SERRQUxDeUFFSUFaclFYeExEUUVEUUNBRklBTkJBblFpQkdvZ0JDQUlhaWdDQURZQ0FDQUZJQVJCQkdvaUIyb2dCeUFJYWlnQ0FEWUNBQ0FGSUFSQkNHb2lCMm9nQnlBSWFpZ0NBRFlDQUNBRklBUkJER29pQkdvZ0JDQUlhaWdDQURZQ0FDQURRUVJxSWdNZ0JrY05BQXNNQVFzZ0JrVU5BQ0FVSUFRdEFBTWlBMEVDZEdvaEJDQUxJQU5CTkd4cUtBSXNJUVZCQUNFRElBWkJBVWNFUUNBR1FYNXhJUlZCQUNFTUEwQWdCU0FEUVFKMElnZHFJQVFnQnlBSWFpZ0NBQ0lSSUJJZ0VDQVJTaHRCQUNBUlFRQk9HeUFLYkVFQ2RHb29BZ0EyQWdBZ0JTQUhRUVJ5SWdkcUlBUWdCeUFJYWlnQ0FDSUhJQklnQnlBUVNCdEJBQ0FIUVFCT0d5QUtiRUVDZEdvb0FnQTJBZ0FnQTBFQ2FpRURJQXhCQW1vaURDQVZSdzBBQ3dzZ0JrRUJjVVVOQUNBRklBTkJBblFpQTJvZ0JDQURJQWhxS0FJQUlnTWdFaUFESUJCSUcwRUFJQU5CQUU0YklBcHNRUUowYWlnQ0FEWUNBQXNnRTBFQmFpSVRJQXBIRFFBTERBSUxJQXBCTkd3UURTSUxEUUVMUVFBaERpQUNRUUZCbnVjQVFRQVFDQXdEQ3lBQktBSVFJZ01FUUVFQUlRVURRQ0FOSUFWQk5HeHFLQUlzSWdRRVFDQUVFQWtMSUFWQkFXb2lCU0FEUncwQUN3c2dEUkFKSUFFZ0NqWUNFQ0FCSUFzMkFoZ0xJQUFvQW5RaUJVVU5BU0FGS0FJQUlRY2dCUzhCQkNJTEJFQWdCMEVxYWlFU0lBZEJKR29oRXlBSFFSNXFJUkVnQjBFWWFpRVVJQWRCRW1vaEZTQUhRUXhxSVJZZ0IwRUdhaUVYSUF0QkFtc2hHRUVBSVFWQkFTRUVBMEFDUUNBQktBSVFJZ01nQnlBRlFRWnNhaUlOTHdFQUlnWk5CRUFnQ1NBRE5nSVVJQWtnQmpZQ0VDQUNRUUpCekRjZ0NVRVFhaEFJREFFTElBMHZBUVFpQ0VFQmFrSC8vd054UVFGTkJFQWdBU2dDR0NBR1FUUnNhaUFOTHdFQ093RXdEQUVMSUFoQkFXc2lDa0gvL3dOeElnOGdBMDhFUUNBSklBTTJBZ1FnQ1NBUE5nSUFJQUpCQWtHak55QUpFQWdNQVFzQ1FDQUdJQTlHRFFBZ0RTOEJBZzBBSUFrZ0FTZ0NHQ0lJSUFaQk5HeHFJZ01vQWpBMkF1Z0JJQWtnQS8wQUFpRDlDd1BZQVNBSklBUDlBQUlRL1FzRHlBRWdDU0FEL1FBQ0FQMExBN2dCSUFNZ0NDQVBRVFJzSWd4cUlnZ3BBZ2czQWdnZ0F5QUlLUUlRTndJUUlBTWdDQ2tDR0RjQ0dDQURJQWdwQWlBM0FpQWdBeUFJS1FJb053SW9JQU1nQ0NnQ01EWUNNQ0FESUFncEFnQTNBZ0FnQVNnQ0dDQU1haUlESUFuOUFBTzRBZjBMQWdBZ0F5QUovUUFEMkFIOUN3SWdJQU1nQ2YwQUE4Z0IvUXNDRUNBRElBa29BdWdCTmdJd0lBVkJBV29nQzA4TkFDQUVJUWdnR0NBRmEwSC8vd054SWdOQkIwOEVRQ0FFSUFOQkFXb2lHVUg0L3dkeEloQnFJUWdnQ3YwUUlTUWdCdjBRSVNOQkFDRU1BMEFnSXlBa0lCSWdCQ0FNYWtFR2JDSURhaUlhSUFNZ0Uyb2lHeUFESUJGcUlod2dBeUFVYWlJZElBTWdGV29pSGlBRElCWnFJaDhnQXlBWGFpSWdJQU1nQjJvaUEvMElBUUQ5VlFFQUFmMVZBUUFDL1ZVQkFBUDlWUUVBQlAxVkFRQUYvVlVCQUFiOVZRRUFCeUloSUNQOUxpQWhJQ1Q5TFNJbC9VNzlVaUVpSUNFZ0kvMHRJQ1g5VUNJaC9Sa0FRUUZ4QkVBZ0F5QWkvVmtCQUFBTElDSDlHUUZCQVhFRVFDQWdJQ0w5V1FFQUFRc2dJZjBaQWtFQmNRUkFJQjhnSXYxWkFRQUNDeUFoL1JrRFFRRnhCRUFnSGlBaS9Wa0JBQU1MSUNIOUdRUkJBWEVFUUNBZElDTDlXUUVBQkFzZ0lmMFpCVUVCY1FSQUlCd2dJdjFaQVFBRkN5QWgvUmtHUVFGeEJFQWdHeUFpL1ZrQkFBWUxJQ0g5R1FkQkFYRUVRQ0FhSUNMOVdRRUFCd3NnREVFSWFpSU1JQkJIRFFBTElCQWdHVVlOQVFzRFFDQUtJUU1DUUNBR0lBY2dDRUVHYkdvaURDOEJBQ0lRUndSQUlBWWhBeUFQSUJCSERRRUxJQXdnQXpzQkFBc2dDeUFJUVFGcUlnaEIvLzhEY1VjTkFBc0xJQUVvQWhnZ0JrRTBiR29nRFM4QkFqc0JNQXNnQkVFQmFpRUVJQVZCQVdvaUJTQUxSdzBBQ3lBQUtBSjBJZ1VvQWdBaEJ3c2dCd1IvSUFjUUNTQUFLQUowQlNBRkN4QUpJQUJCQURZQ2RBd0JDMEVBSVE0Z0FrRUJRYUxGQUVFQUVBZ0xJQWxCOEFGcUpBQWdEZ3ZwQVFFR2Z5TUFRU0JySWdRa0FBSi9Ba0FnQUNnQ1BDSURCRUJCQVNFRkEwQWdBQ2dDVENnQ0dDQUFLQUpBSUFKQkFuUnFLQUlBSWdaQk5HeHFLQUlzUlFSQUlBUWdCallDRUNBQlFRSkIyamtnQkVFUWFoQUlRUUFoQlNBQUtBSThJUU1MSUFKQkFXb2lBaUFEU1EwQUN3d0JDMEVCSVFWQkFTQUFLQUpNSWdNb0FoQkZEUUVhQTBBZ0F5Z0NHQ0FDUVRSc2FpZ0NMRVVFUUNBRUlBSTJBZ0FnQVVFQ1FkbzVJQVFRQ0VFQUlRVWdBQ2dDVENFREN5QUNRUUZxSWdJZ0F5Z0NFRWtOQUFzTFFRRWdCUTBBR2lBQlFRRkJ2eFZCQUJBSVFRQUxJUWNnQkVFZ2FpUUFJQWNMQkFCQmZ3dUdCd0lXZndKK0lBQW9BaGdpRUNnQ0VFVUVRRUVCRHdzZ0VDZ0NHQ0VOSUFBb0FoUW9BZ0FvQWhRaEN3TkFJQUVnRFNnQ0pDSUNOZ0lrSUFzb0Fod2lCaUFDUVpnQmJHb2hBd0pBQWtBQ2Z5QUFLQUpBSWhFRVFDQUdJQXNvQWhoQm1BRnNhaUlDUVpBQmF5Z0NBQ0FDUVpnQmF5Z0NBR3NoRENBRFFReHFJUVlnQTBFRWFpRUVJQU1vQWdnaEFpQURLQUlBSVFWQkpBd0JDeUFEUVpRQmFpRUdJQU5CakFGcUlRUWdBeWdDa0FFaUFpQURLQUtJQVNJRmF5RU1RVFFMSUF0cUtBSUFJaEpGRFFBZ0JDZ0NBQ0VISUFZb0FnQWhDU0FDSUFWcklRWWdBU2dDQ0NJRFFuOGdBVFVDS0NJWWhrSi9oU0laSUFFMUFoQjhJQmlJcHlJSWFpRUVBbjhnQlNBSVN3UkFJQVVnQ0dzaERrRUFJUWhCQUNBQ0lBUk5EUUVhSUFZZ0JDQUZheUlHYXd3QkN5QUlJQVZySVFnZ0FpQUVUUVJBSUFZZ0NHc2hCa0VBSVE1QkFBd0JDMEVBSVE0Z0F5RUdJQUlnQkdzTElSVWdDU0FIYXlFQ0lBRW9BZ3dpQkNBWklBRTFBaFI4SUJpSXB5SUthaUVGQW44Z0J5QUtTd1JBSUFjZ0Ntc2hEMEVBSVFwQkFDQUZJQWxQRFFFYUlBSWdCU0FIYXlJQ2F3d0JDeUFLSUFkcklRb2dCU0FKVHdSQUlBSWdDbXNoQWtFQUlROUJBQXdCQzBFQUlROGdCQ0VDSUFrZ0JXc0xJUWRCQUNFRklBaEJBRWdOQVNBS1FRQklEUUVnRlVFQVNBMEJJQWRCQUVnTkFTQUdRUUJJRFFFZ0FrRUFTQTBCSUFNZ0Qyd2dEbW9oQnlBS0lBeHNJQWhxSVFrQ1FBSkFBa0FnQVNnQ0xDSUlEUUFnQ1EwQUlBY05BQ0FESUF4SERRQWdBeUFHUncwQUlBSWdCRWNOQVNBQklBdEJKRUUwSUJFYmFpSUNLQUlBTmdJc0lBSkJBRFlDQUF3REN5QUlEUUVMSUFSRkRRSWdCSzBnQTYxK1FpQ0lwdzBDSUFNZ0JHd2lBMEgvLy8vL0Ewc05BaUFCSUFOQkFuUVFGaUlETmdJc0lBTkZEUUlnQmlBQktBSUlJZ1JHSUFFb0Fnd2lCU0FDUm5FTkFDQURRUUFnQkNBRmJFRUNkQkFPR2dzZ0FrVU5BQ0FDUVFGeElSY2dCa0VDZENFR0lBRW9BaXdnQjBFQ2RHb2hCQ0FTSUFsQkFuUnFJUVVnQWtFQlJ3UkFJQUpCL3YvLy93ZHhJUWRCQUNFQ0EwQWdCQ0FGSUFZUUN5RVdJQVVnREVFQ2RDSUphaUlJSUFscUlRVWdGaUFCS0FJSVFRSjBhaUFJSUFZUUN5QUJLQUlJUVFKMGFpRUVJQUpCQW1vaUFpQUhSdzBBQ3dzZ0YwVU5BQ0FFSUFVZ0JoQUxHZ3NnQzBITUFHb2hDeUFOUVRScUlRMGdBVUUwYWlFQlFRRWhCU0FVUVFGcUloUWdFQ2dDRUVrTkFRc0xJQVVMM2hJQ0NYOE1maU1BUWFBQmF5SUZKQUFDUUNBQ1FTTk5CRUJCQUNFQ0lBTkJBVUcyTGtFQUVBZ01BUXNnQWtFa2F5SUNJQUpCQTI0aUNFRURiRWNFUUVFQUlRSWdBMEVCUWJZdVFRQVFDQXdCQ3lBQUtBSklJUVlnQVNBRlFad0JhaUlDUVFJUUNpQUFJQVVvQXB3Qk93RlFJQUZCQW1vZ0JrRUlha0VFRUFvZ0FVRUdhaUFHUVF4cVFRUVFDaUFCUVFwcUlBWkJCQkFLSUFGQkRtb2dCa0VFYWtFRUVBb2dBVUVTYWlBQVFkd0Fha0VFRUFvZ0FVRVdhaUFBUWVBQWFrRUVFQW9nQVVFYWFpQUFRZFFBYWtFRUVBb2dBVUVlYWlBQVFkZ0Fha0VFRUFvZ0FVRWlhaUFDUVFJUUNnSkFBa0FDUUNBRktBS2NBU0lDUVlDQUFVMEVRQ0FHSUFJMkFoQWdBaUFJUndSQUlBVWdDRFlDaEFFZ0JTQUNOZ0tBQVNBRFFRRkJvZkFBSUFWQmdBRnFFQWhCQUNFQ0RBVUxJQVlvQWdRaUFpQUdLQUlNSWdsSklBWW9BZ2dpQ3lBR0tBSUFJZ1JMY1VVRVFDQUZJQW10SUFLdGZUY0RlQ0FGSUF1dElBU3RmVGNEY0NBRFFRRkI2K3dBSUFWQjhBQnFFQWhCQUNFQ0RBVUxJQUFvQWx3aUIwRUFJQUFvQW1BaUNodEZCRUFnQlNBS05nSUVJQVVnQnpZQ0FDQURRUUZCay9FQUlBVVFDRUVBSVFJTUJRc0NRQUpBSUFBb0FsUWlEQ0FFU3cwQVFYOGdCeUFNYWlJSElBY2dERWtiSUFSTkRRQWdBQ2dDV0NJSElBSkxEUUJCZnlBSElBcHFJZ29nQnlBS1N4c2dBa3NOQVF0QkFDRUNJQU5CQVVIV0ZFRUFFQWdNQlFzQ1FDQUFLQUxnQVEwQUlBQW9BdGdCSWdkRkRRQWdBQ2dDM0FFaUNrVU5BQ0FMSUFScklnUWdCMFlnQ1NBQ2F5SUNJQXBHY1EwQUlBVWdBallDYkNBRklBUTJBbWdnQlNBS05nSmtJQVVnQnpZQ1lDQURRUUZCMCtnQUlBVkI0QUJxRUFoQkFDRUNEQVVMSUFZZ0NFRTBFQXdpQkRZQ0dDQUVSUTBCQWtBZ0JpZ0NFRVVOQUNBQlFTUnFJQVZCbUFGcUlnSkJBUkFLSUFRZ0JTZ0NtQUVpQ0VFSGRpSUtOZ0lnSUFRZ0NFSC9BSEZCQVdvaUREWUNHQ0FBS0FMZ0FTRUxJQUZCSldvZ0FrRUJFQW9nQkNBRktBS1lBVFlDQUNBQlFTWnFJQUpCQVJBS0lBUWdCU2dDbUFFaUNEWUNCRUVBSVFJZ0JDZ0NBQ0lIUVlBQ2EwR0Jma2tFUUVFQUlRa01CUXNnQ0VVRVFFRUFJUWtNQlF0QkFDRUpJQWhCL3dGTERRUWdCQ2dDR0NJSVFSOUxEUU1nQkVFQU5nSWtJQVFnQUNnQ29BRTJBaWhCQVNFSklBWW9BaEJCQVUwTkFFRUFJQW9nQ3hzaENrRUFJQXdnQ3hzaEN5QUJRU2RxSVFFRFFDQUJJQVZCbUFGcVFRRVFDaUFFSUFVb0FwZ0JJZ2RCQjNZaUNEWUNWQ0FFSUFkQi93QnhRUUZxSWdjMkFrd0NRQ0FBS0FMZ0FRMEFJQUF0QUx3QlFRUnhEUUFnQnlBTFJpQUlJQXBHY1EwQUlBVWdDRFlDVkNBRklBYzJBbEFnQlNBSk5nSk1JQVVnQ2pZQ1NDQUZJQXMyQWtRZ0JTQUpOZ0pBSUFOQkFrSFg3Z0FnQlVGQWF4QUlDeUFCUVFGcUlBVkJtQUZxSWdoQkFSQUtJQVFnQlNnQ21BRTJBalFnQVVFQ2FpQUlRUUVRQ2lBRUlBVW9BcGdCSWdnMkFqZ2dCQ2dDTkNJSFFZQUNhMEdCZmtrTkJTQUlSUTBGSUFoQmdBSlBEUVVnQkNnQ1RDSUlRU0JQRFFRZ0FVRURhaUVCSUFSQkFEWUNXQ0FFSUFBb0FxQUJOZ0pjSUFSQk5Hb2hCQ0FKUVFGcUlna2dCaWdDRUVrTkFBc0xRUUFoQWlBQUtBSmNJZ2xGRFFRZ0FDZ0NZQ0lMUlEwRUlBQWdDYTBpRFVJQmZTSVBJQVlvQWdnZ0FDZ0NWQ0lIYTYxOElBMkFweUlCTmdKb0lBQWdDNjBpRGtJQmZTSVFJQVlvQWd3Z0FDZ0NXQ0lLYTYxOElBNkFweUlFTmdKc0FrQUNRQ0FCUlEwQUlBUkZEUUJCLy84RElBUnVJQUZQRFFFTElBVWdCRFlDRkNBRklBRTJBaEFnQTBFQlFjWHBBQ0FGUVJCcUVBZ01CUXNnQVNBRWJDRUlBa0FnQUMwQVJFRUNjUVJBSUFBZ0FDZ0NIQ0FIYXlBSmJqWUNIQ0FBSUFBb0FpQWdDbXNnQzI0MkFpQWdBQ0FQSUFBb0FpUWdCMnV0ZkNBTmdENENKQ0FBSUJBZ0FDZ0NLQ0FLYTYxOElBNkFQZ0lvREFFTElBQWdCRFlDS0NBQUlBRTJBaVFnQUVJQU53SWNDeUFBSUFoQmpDd1FEQ0lCTmdLY0FTQUJSUVJBSUFOQkFVSE5IVUVBRUFnTUJRc2dCaWdDRUVHNENCQU1JUUVnQUNnQ0RDQUJOZ0xRS3lBQUtBSU1LQUxRSzBVRVFDQURRUUZCelIxQkFCQUlEQVVMUVFwQkZCQU1JUUVnQUNnQ0RDQUJOZ0x3S3lBQUtBSU1JZ0VvQXZBclJRUkFJQU5CQVVITkhVRUFFQWdNQlFzZ0FVRUtOZ0w0SzBFS1FSUVFEQ0VCSUFBb0Fnd2dBVFlDL0NzZ0FDZ0NEQ0lCS0FMOEswVUVRQ0FEUVFGQnpSMUJBQkFJREFVTElBRkJDallDaEN3Q1FDQUdLQUlRSWdSRkRRQWdCaWdDR0NFSlFRQWhBU0FFUVFGSEJFQWdCRUYrY1NFTEEwQWdDU0FCUVRSc2FpSUhLQUlnUlFSQUlBQW9BZ3dvQXRBcklBRkJ1QWhzYWtFQklBY29BaGhCQVd0ME5nSzBDQXNnQ1NBQlFRRnlJZ2RCTkd4cUlnb29BaUJGQkVBZ0FDZ0NEQ2dDMENzZ0IwRzRDR3hxUVFFZ0NpZ0NHRUVCYTNRMkFyUUlDeUFCUVFKcUlRRWdBa0VDYWlJQ0lBdEhEUUFMQ3lBRVFRRnhSUTBBSUFrZ0FVRTBiR29pQWlnQ0lBMEFJQUFvQWd3b0F0QXJJQUZCdUFoc2FrRUJJQUlvQWhoQkFXdDBOZ0swQ0FzZ0NBUkFJQUFvQXB3QklRRkJBQ0VDQTBBZ0FTQUdLQUlRUWJnSUVBd2lCRFlDMENzZ0JFVUVRRUVBSVFJZ0EwRUJRYzBkUVFBUUNBd0hDeUFCUVl3c2FpRUJJQUpCQVdvaUFpQUlTUTBBQ3dzZ0FFRUVOZ0lJSUFZb0FoQWlBd1JBUVg4Z0FDZ0NXQ0lCSUFBb0FtQWlBaUFBS0FKc1FRRnJiR29pQkNBQ2FpSUNJQUlnQkVrYklnSWdCaWdDRENJRUlBSWdCRWticlNFUVFYOGdBQ2dDVkNJQ0lBQW9BbHdpQkNBQUtBSm9RUUZyYkdvaUFDQUVhaUlFSUFBZ0JFc2JJZ0FnQmlnQ0NDSUVJQUFnQkVrYnJTRVJJQUVnQmlnQ0JDSUFJQUFnQVVrYnJTRVNJQUlnQmlnQ0FDSUFJQUFnQWtrYnJTRVRJQVlvQWhnaEFFRUFJUUVEUUNBQUlBQTFBZ1FpRFVJQmZTSVVJQko4SUEyQUloVStBaFFnQUNBQU5RSUFJZzVDQVgwaUZpQVRmQ0FPZ0NJWFBnSVFJQUJDZnlBQU5RSW9JZytHUW4rRkloZ2dFQ0FVZkNBTmdDQVZmVUwvLy8vL0Q0TjhJQStJUGdJTUlBQWdFU0FXZkNBT2dDQVhmVUwvLy8vL0Q0TWdHSHdnRDRnK0FnZ2dBRUUwYWlFQUlBRkJBV29pQVNBRFJ3MEFDd3RCQVNFQ0RBUUxJQVVnQWpZQ2tBRWdBMEVCUWZZN0lBVkJrQUZxRUFoQkFDRUNEQU1MUVFBaEFpQUdRUUEyQWhBZ0EwRUJRYzBkUVFBUUNBd0NDeUFGSUFnMkFqUWdCU0FKTmdJd0lBTkJBVUhIOHdBZ0JVRXdhaEFJREFFTElBVWdDRFlDS0NBRklBYzJBaVFnQlNBSk5nSWdJQU5CQVVHaDZ3QWdCVUVnYWhBSUN5QUZRYUFCYWlRQUlBSUxuZ01CQjM4akFFRVFheUlHSkFBQ2Z5QUNJQUpCQVVFQ0lBQW9Ba2dvQWhBaUNFR0JBa2tiSWdkQkFYUkJCV29pQkc0aUJTQUViRVlnQWlBRVQzRkZCRUFnQTBFQlFZb2pRUUFRQ0VFQURBRUxBbjhnQUNnQ0NFRVFSZ1JBSUFBb0Fwd0JJQUFvQXN3QlFZd3NiR29NQVFzZ0FDZ0NEQXNoQkVFQUlRQWdCQzBBaUN3aUFrRUVjUVJBSUFRb0FxUURRUUZxSVFBTElBQWdCV29pQlVFZ1R3UkFJQVlnQlRZQ0FDQURRUUZCaXpzZ0JoQUlRUUFNQVFzZ0JDQUNRUVJ5T2dDSUxDQUFJQVZKQkVBZ0JDQUFRWlFCYkdwQnFBTnFJUUlEUUNBQklBSkJBUkFLSUFGQkFXb2lBU0FDUVFScUlBY1FDaUFCSUFkcUlnRWdBa0VJYWtFQ0VBb2dBaUFDS0FJSUlnTWdCQ2dDQ0NJSklBTWdDVWtiTmdJSUlBRkJBbW9nQWtFTWFrRUJFQW9nQVVFRGFpSUJJQUpCRUdvZ0J4QUtJQUVnQjJvaUFTQUdRUXhxUVFFUUNpQUNJQVlvQWd3MkFpUWdBaUFDS0FJUUlnTWdDQ0FESUFoSkd6WUNFQ0FDUVpRQmFpRUNJQUZCQVdvaEFTQUFRUUZxSWdBZ0JVY05BQXNMSUFRZ0JVRUJhellDcEFOQkFRc2hDaUFHUVJCcUpBQWdDZ3ZzQVFFRWZ5TUFRUkJySWdRa0FBSi9Ba0FnQVNBRVFRaHFBbjhnQUNnQ1NDZ0NFRUdBQWswRVFDQUNCRUJCZnlFRlFRRU1BZ3NnQTBFQlFiNGpRUUFRQ0VFQURBTUxJQUpCQVUwTkFVRitJUVZCQWdzaUJoQUtJQVFnQWlBRmFqWUNEQ0FFS0FJSUlnSWdBQ2dDU0NnQ0VDSUZUd1JBSUFRZ0JUWUNCQ0FFSUFJMkFnQWdBMEVCUWNZNklBUVFDRUVBREFJTElBQWdBaUFCSUFacUlBUkJER29nQXhBN1JRUkFJQU5CQVVHK0kwRUFFQWhCQUF3Q0MwRUJJQVFvQWd4RkRRRWFJQU5CQVVHK0kwRUFFQWhCQUF3QkN5QURRUUZCdmlOQkFCQUlRUUFMSVFjZ0JFRVFhaVFBSUFjTDJRRUJCSDhqQUVFUWF5SUVKQUFnQkNBQ05nSU1Ba0FDUUNBQVFRQWdBU0FFUVF4cUlBTVFPMFVOQUNBRUtBSU1EUUFDZnlBQUtBSUlRUkJHQkVBZ0FDZ0NuQUVnQUNnQ3pBRkJqQ3hzYWd3QkN5QUFLQUlNQ3lFSFFRRWhCU0FBS0FKSUtBSVFRUUpKRFFFZ0J5Z0MwQ3NpQWtFY2FpRUdRUUVoQVNBQ0lRTURRQ0FESUFJb0FoZzJBdEFJSUFNZ0FpZ0NwQVkyQXR3T0lBTkIxQWhxSUFaQmlBWVFDeG9nQTBHNENHb2hBeUFCUVFGcUlnRWdBQ2dDU0NnQ0VFa05BQXNNQVFzZ0EwRUJRZFlpUVFBUUNBc2dCRUVRYWlRQUlBVUwxZ0VCQTM4akFFRVFheUlFSkFBQ1FDQUNRUUZCQWlBQUtBSklLQUlRSWdaQmdRSkpHeUlGUVFKcVJ3UkFRUUFoQUNBRFFRRkJpaUJCQUJBSURBRUxBbjhnQUNnQ0NFRVFSZ1JBSUFBb0Fwd0JJQUFvQXN3QlFZd3NiR29NQVFzZ0FDZ0NEQXNoQWlBQklBUkJER29nQlJBS1FRRWhBQ0FCSUFWcUlnVWdCRUVJYWtFQkVBb2dCaUFFS0FJTUlnRk5CRUFnQkNBR05nSUVJQVFnQVRZQ0FDQURRUUZCNk84QUlBUVFDRUVBSVFBTUFRc2dCVUVCYWlBQ0tBTFFLeUFCUWJnSWJHcEJxQVpxUVFFUUNnc2dCRUVRYWlRQUlBQUxoQUlCQlg4akFFRVFheUlFSkFBQ2Z5QUFLQUlJUVJCR0JFQWdBQ2dDbkFFZ0FDZ0N6QUZCakN4c2Fnd0JDeUFBS0FJTUN5RUdBa0FnQWtFQlFRSWdBQ2dDU0NJSEtBSVFRWUVDU1JzaUJVMEVRRUVBSVFJZ0EwRUJRYVFqUVFBUUNBd0JDeUFFSUFWQmYzTWdBbW8yQWd3Z0FTQUVRUWhxSUFVUUNpQUVLQUlJSWdnZ0J5Z0NFRThFUUVFQUlRSWdBMEVCUVpEcEFFRUFFQWdNQVF0QkFTRUNJQUVnQldvaUFTQUdLQUxRS3lBSVFiZ0liR3BCQVJBS0lBQWdCQ2dDQ0NBQlFRRnFJQVJCREdvZ0F4QThSUVJBUVFBaEFpQURRUUZCcENOQkFCQUlEQUVMSUFRb0FneEZEUUJCQUNFQ0lBTkJBVUdrSTBFQUVBZ0xJQVJCRUdva0FDQUNDNndHQVFkL0l3QkJFR3NpQmlRQUlBWWdBallDRENBQUtBSklJUWtDZnlBQUtBSUlRUkJHQkVBZ0FDZ0NuQUVnQUNnQ3pBRkJqQ3hzYWd3QkN5QUFLQUlNQ3lJRUlBUXRBSWdzUVFGeU9nQ0lMQUpBSUFKQkJFMEVRQ0FEUVFGQnZDSkJBQkFJREFFTElBRWdCRUVCRUFvZ0JDZ0NBRUVJVHdSQUlBTkJBVUdhSWtFQUVBZ01BUXNnQVVFQmFpQUdRUWhxUVFFUUNpQUVJQVlvQWdnaUFqWUNCQ0FDUVFWT0JFQWdBMEVCUWZFaFFRQVFDQ0FFUVg4MkFnUUxJQUZCQW1vZ0JFRUlha0VDRUFvZ0JDZ0NDQ0lIUVlDQUJHdEJnSUI4VFFSQUlBWWdCellDQUNBRFFRRkJxVDBnQmhBSURBRUxJQVFnQUNnQ3BBRWlBaUFISUFJYk5nSU1JQUZCQkdvZ0JFRVFha0VCRUFvZ0JDZ0NFRUVDVHdSQUlBTkJBVUdIS2tFQUVBZ01BUXNnQVVFRmFpRUNJQVlnQmlnQ0RFRUZhellDREFKQUlBa29BaEFpQjBVTkFDQUVLQUlBUVFGeElRZ2dCQ2dDMENzaEJFRUFJUWtnQjBFSVR3UkFJQWRCZUhFaEFRTkFJQVFnQlVHNENHeHFJQWcyQWdBZ0JDQUZRUUZ5UWJnSWJHb2dDRFlDQUNBRUlBVkJBbkpCdUFoc2FpQUlOZ0lBSUFRZ0JVRURja0c0Q0d4cUlBZzJBZ0FnQkNBRlFRUnlRYmdJYkdvZ0NEWUNBQ0FFSUFWQkJYSkJ1QWhzYWlBSU5nSUFJQVFnQlVFR2NrRzRDR3hxSUFnMkFnQWdCQ0FGUVFkeVFiZ0liR29nQ0RZQ0FDQUZRUWhxSVFVZ0NrRUlhaUlLSUFGSERRQUxDeUFIUVFkeElnRkZEUUFEUUNBRUlBVkJ1QWhzYWlBSU5nSUFJQVZCQVdvaEJTQUpRUUZxSWdrZ0FVY05BQXNMUVFBaEJTQUFRUUFnQWlBR1FReHFJQU1RUEVVRVFDQURRUUZCdkNKQkFCQUlEQUVMSUFZb0Fnd0VRQ0FEUVFGQnZDSkJBQkFJREFFTEFuOGdBQ2dDQ0VFUVJnUkFJQUFvQXB3QklBQW9Bc3dCUVl3c2JHb01BUXNnQUNnQ0RBc2hBU0FBS0FKSUtBSVFRUUpQQkVBZ0FTZ0MwQ3NpQVNnQ0JFRUNkQ0VISUFGQnNBZHFJUW9nQVVHc0Jtb2hBMEVCSVFrZ0FTRUNBMEFnQWlBQi9RQUNCUDBMQXJ3SUlBSWdBU2dDRkRZQ3pBZ2dBa0hrRG1vZ0F5QUhFQXNhSUFKQjZBOXFJQW9nQnhBTEdpQUNRYmdJYWlFQ0lBbEJBV29pQ1NBQUtBSklLQUlRU1EwQUN3dEJBU0VGQ3lBR1FSQnFKQUFnQlF2c0NRRUdmeU1BUWZBQWF5SUVKQUFnQkVFQU5nSm9Ba0FnQWtFSVJ3UkFJQU5CQVVHOUhrRUFFQWdnQTBFQlFiMGVRUUFRQ0F3QkN5QUJJQUJCekFGcVFRSVFDaUFCUVFKcUlBUkI3QUJxUVFRUUNpQUJRUVpxSUFSQjVBQnFRUUVRQ2lBQlFRZHFJQVJCNkFCcVFRRVFDaUFBS0FMTUFTSUNJQUFvQW1naUNDQUFLQUpzYkU4RVFDQUVJQUkyQW1BZ0EwRUJRWjA3SUFSQjRBQnFFQWdNQVFzZ0FDZ0NuQUVnQWtHTUxHeHFJUVVnQWlBSWJpRUhJQVFvQW1RaEFRSkFJQUFvQWl3aUJrRUFUaUFDSUFaSGNRMEFJQVVvQXRRclFRRnFJZ1lnQVVZTkFDQUVJQVkyQWxnZ0JDQUJOZ0pVSUFRZ0FqWUNVQ0FEUVFGQnRUc2dCRUhRQUdvUUNFRUFJUVVNQVFzZ0JTQUJOZ0xVS3dKQUFrQWdCQ2dDYkNJQlFRRnJRUXhOQkg4Z0FVRU1SdzBCSUFSQkREWUNNQ0FEUVFKQjlkY0FJQVJCTUdvUUNDQUVLQUpzQlNBQkMwVUVRQ0FEUVFSQmpjOEFRUUFRQ0NBQVFRRTJBamdMQWtBQ1FBSkFBa0FnQlNnQzJDc2lBUVJBSUFRb0FtUWlCaUFCU1EwQklBUWdBVFlDSkNBRUlBWTJBaUFnQTBFQlFZVW5JQVJCSUdvUUNDQUFRUUUyQWpoQkFDRUZEQWNMSUFRb0FtZ2lCZzBCREFNTElBUW9BbWdpQmtVTkFRc2dCQ0FHSUFBdEFFUkJCSFpCQVhGcUlnRTJBbWdnQkNnQ1pDSUdJQVVvQXRncklnbEJBV3RMQkVBZ0JDQUpOZ0lFSUFRZ0JqWUNBQ0FEUVFGQm9pWWdCQkFJSUFCQkFUWUNPRUVBSVFVTUJRc2dBU0FHVFFSQUlBUWdBVFlDRkNBRUlBWTJBaEFnQTBFQlFla25JQVJCRUdvUUNDQUFRUUUyQWpoQkFDRUZEQVVMSUFVZ0FUWUMyQ3NMSUFFZ0JDZ0NaRUVCYWtjTkFDQUFJQUF0QUVSQkFYSTZBRVFMSUFRb0Ftd2hBU0FBUVJBMkFnZ2dBRUVBSUFGQkRHc2dBQ2dDT0JzMkFoZ0NRQ0FBS0FJc0lnRkJmMFlFUUVFRUlRVWdBaUFISUFoc2F5SUJJQUFvQWh4SkRRRWdBU0FBS0FJa1R3MEJJQWNnQUNnQ0lFa05BU0FISUFBb0FpaFBRUUowSVFVTUFRc2dBQ2dDekFFZ0FVZEJBblFoQlFzZ0FDQUFMUUJFUWZzQmNTQUZjam9BUkVFQklRVWdBQ2dDeUFFaUFVVU5BaUFCS0FJb0lnWWdBQ2dDekFFaUFrRW9iR29pQnlBQ05nSUFJQWNnQkNnQ1pDSUlOZ0lNSUFRb0FtZ2lBUVJBSUFjZ0FUWUNCQ0FISUFRb0FtZ2lBVFlDQ0NBSEtBSVFJZ0pGQkVBZ0FVRVlFQXdoQVNBQUtBTElBU2dDS0NBQUtBTE1BVUVvYkdvZ0FUWUNFQ0FCRFFSQkFDRUZJQU5CQVVISk5FRUFFQWdNQkFzZ0FpQUJRUmhzRUJBaEFTQUFLQUxJQVNnQ0tDQUFLQUxNQVVFb2JHb2hBaUFCUlFSQUlBSW9BaEFRQ1VFQUlRVWdBQ2dDeUFFb0FpZ2dBQ2dDekFGQktHeHFRUUEyQWhBZ0EwRUJRY2swUVFBUUNBd0VDeUFDSUFFMkFoQU1Bd3NnQnlnQ0VDSUJSUVJBSUFkQkNqWUNDRUVLUVJnUURDRUJJQUFvQXNnQktBSW9JZ1lnQUNnQ3pBRWlBa0VvYkdvaUJ5QUJOZ0lRSUFGRkRRSWdCQ2dDWkNFSUN5QUlJQVlnQWtFb2JHb2lBaWdDQ0VrTkFpQUNJQWhCQVdvaUFqWUNDQ0FCSUFKQkdHd1FFQ0VCSUFBb0FzZ0JLQUlvSUFBb0Fzd0JRU2hzYWlFQ0lBRkZCRUFnQWlnQ0VCQUpRUUFoQlNBQUtBTElBU2dDS0NBQUtBTE1BVUVvYkdvaUFFRUFOZ0lJSUFCQkFEWUNFQ0FEUVFGQnlUUkJBQkFJREFNTElBSWdBVFlDRUF3Q0N5QUVJQUUyQWtBZ0EwRUJRWUxhQUNBRVFVQnJFQWhCQUNFRkRBRUxRUUFoQlNBSFFRQTJBZ2dnQTBFQlFjazBRUUFRQ0FzZ0JFSHdBR29rQUNBRkM2c0hBUWgvSXdCQjBBQnJJZ1FrQUNBRVFRRTJBa3dDUUFKQUlBQW9Bc2dCSWdVb0FpZ2lBdzBBSUFVZ0FDZ0NiQ0FBS0FKb2JDSUROZ0lrSUFOQktCQU1JUU1nQUNnQ3lBRWlCU0FETmdJb0lBTkZCRUJCQUNFRkRBSUxJQVVvQWlSRkRRQURRRUVBSVFVZ0F5QUdRU2hzSWdkcUlnTkJBRFlDRkNBRFFlUUFOZ0ljUWVRQVFSZ1FEQ0VKSUFjZ0FDZ0N5QUVpQ0NnQ0tDSURhaUFKTmdJWUlBbEZEUUlnQmtFQmFpSUdJQWdvQWlSSkRRQUxDeUFBS0FJc0lRa0NRQ0FES0FJUVJRMEFBa0FnQXlBSlFTaHNhaUlES0FJRVJRUkFJQUVnQUNrRE1FSUNmQ0FDRUM4TkFVRUFJUVVnQWtFQlFhY3BRUUFRQ0F3REN5QUJJQU1vQWhBcEF3QkNBbndnQWhBdkRRQkJBQ0VGSUFKQkFVR25LVUVBRUFnTUFnc2dBQ2dDQ0VHQUFrY05BQ0FBUVFnMkFnZ0xBa0FnQUNnQ2JDQUFLQUpvYkNJSFJRMEFJQUFvQXB3QklRVkJBQ0VESUFkQkNFOEVRQ0FIUVhoeElRaEJBQ0VHQTBBZ0JTQURRWXdzYkdwQmZ6WUMxQ3NnQlNBRFFRRnlRWXdzYkdwQmZ6WUMxQ3NnQlNBRFFRSnlRWXdzYkdwQmZ6WUMxQ3NnQlNBRFFRTnlRWXdzYkdwQmZ6WUMxQ3NnQlNBRFFRUnlRWXdzYkdwQmZ6WUMxQ3NnQlNBRFFRVnlRWXdzYkdwQmZ6WUMxQ3NnQlNBRFFRWnlRWXdzYkdwQmZ6WUMxQ3NnQlNBRFFRZHlRWXdzYkdwQmZ6WUMxQ3NnQTBFSWFpRURJQVpCQ0dvaUJpQUlSdzBBQ3dzZ0IwRUhjU0lHUlEwQUEwQWdCU0FEUVl3c2JHcEJmellDMUNzZ0EwRUJhaUVESUFwQkFXb2lDaUFHUncwQUN3dEJBQ0VGSUFBZ0JFSElBR3BCQUNBRVFjUUFhaUFFUVVCcklBUkJQR29nQkVFNGFpQUVRVFJxSUFSQnpBQnFJQUVnQWhBZ1JRMEFJQWxCQVdvaEJ3TkFBa0FnQkNnQ1RFVU5BQ0FBSUFRb0FrZ2lBMEVBUVFBZ0FTQUNFQ1JGRFFJZ0FDZ0NhQ0VJSUFBb0Ftd2hDaUFFSUFOQkFXb2lCallDSUNBRUlBZ2dDbXcyQWlRZ0FrRUVRYkRYQUNBRVFTQnFFQWdnQUNnQzBBRWdBQ2dDVENnQ0dCQnRSUTBDSUFBb0Fwd0JJQU5CakN4c2FpSUZLQUxjS3lJSUJFQWdDQkFKSUFWQ0FEY0MzQ3NMSUFRZ0JqWUNFQ0FDUVFSQjl2d0FJQVJCRUdvUUNDQURJQWxHQkVBZ0FTQUFLQUxJQVNrRENFSUNmQ0FDRUM4TkFVRUFJUVVnQWtFQlFhY3BRUUFRQ0F3REN5QUVJQWMyQWdRZ0JDQUdOZ0lBSUFKQkFrSHQ1UUFnQkJBSVFRQWhCU0FBSUFSQnlBQnFRUUFnQkVIRUFHb2dCRUZBYXlBRVFUeHFJQVJCT0dvZ0JFRTBhaUFFUWN3QWFpQUJJQUlRSUEwQkRBSUxDeUFBSUFJUWF5RUZDeUFFUWRBQWFpUUFJQVVMeUFZQ0IzOEJmaU1BUWRBQWF5SURKQUFnQTBFQk5nSk1Ba0FDUUNBQUtBSm9JZ1JCQVVjTkFDQUFLQUpzUVFGSERRQWdBQ2dDVkEwQUlBQW9BbGdOQUNBQUtBSk1JZ1VvQWdBTkFDQUZLQUlFRFFBZ0JTZ0NDQ0FBS0FKY1J3MEFJQVVvQWd3Z0FDZ0NZRWNOQUVFQUlRUWdBQ0FEUWNnQWFrRUFJQU5CeEFCcUlBTkJRR3NnQTBFOGFpQURRVGhxSUFOQk5Hb2dBMEhNQUdvZ0FTQUNFQ0JGRFFFQ1FDQUFJQU1vQWtoQkFFRUFJQUVnQWhBa0JFQWdBQ2dDVENJQktBSVFEUUZCQVNFRURBTUxJQUpCQVVHU3dRQkJBQkFJREFJTElBRW9BaGdoQVVFQUlRSURRQ0FCSUFKQk5Hd2lCR29vQWl3UUNTQUFLQUpNSWdVb0FoZ2lBU0FFYWlJR0lBQW9BdEFCSWdjb0FoUW9BZ0FvQWhRZ0FrSE1BR3hxSWdnb0FpUTJBaXdnQmlBSEtBSVlLQUlZSUFScUtBSWtOZ0lrSUFoQkFEWUNKRUVCSVFRZ0FrRUJhaUlDSUFVb0FoQkpEUUFMREFFTEEwQUNRQUovQWtBZ0JFRUJSdzBBSUFBb0FteEJBVWNOQUNBQUtBS2NBU2dDM0N0RkRRQWdBMEVBTmdKSUlBQkJBRFlDekFFZ0FDQUFLQUlJUVlBQmNqWUNDRUVBREFFTFFRQWhCQ0FBSUFOQnlBQnFRUUFnQTBIRUFHb2dBMEZBYXlBRFFUeHFJQU5CT0dvZ0EwRTBhaUFEUWN3QWFpQUJJQUlRSUVVTkF5QURLQUpNUlEwQklBTW9Ba2dMSWdkQkFXb2hCQ0FBSUFkQkFFRUFJQUVnQWhBa0lRa2dBQ2dDYUNBQUtBSnNiQ0VGSUFsRkJFQWdBeUFGTmdJRUlBTWdCRFlDQUNBQ1FRRkJsemtnQXhBSVFRQWhCQXdEQ3lBRElBVTJBaVFnQXlBRU5nSWdJQUpCQkVHdzF3QWdBMEVnYWhBSUlBQW9BdEFCSUFBb0Frd29BaGdRYlVVRVFFRUFJUVFNQXdzQ1FBSkFJQUFvQW1oQkFVY05BQ0FBS0FKc1FRRkhEUUFnQUNnQ1RDSUZLQUlBSUFBb0FrZ2lCaWdDQUVjTkFTQUZLQUlFSUFZb0FnUkhEUUVnQlNnQ0NDQUdLQUlJUncwQklBVW9BZ3dnQmlnQ0RFY05BUXNnQUNnQ25BRWdCMEdNTEd4cUlnVW9BdHdySWdaRkRRQWdCaEFKSUFWQ0FEY0MzQ3NMSUFNZ0JEWUNFQ0FDUVFSQjl2d0FJQU5CRUdvUUNDQUJLUU1JSWdwUUJINUNBQVVnQ2lBQktRTTRmUXRRQkVBZ0FDZ0NDRUhBQUVZTkFRc2dDRUVCYWlJSUlBQW9BbWdpQkNBQUtBSnNiRWNOQVFzTElBQWdBaEJySVFRTElBTkIwQUJxSkFBZ0JBdTFCZ0VNZnlBQUtBSklJUWtDUUNBQUtBSm9JQUFvQW14c0lnd0VRQ0FKS0FJUUlnRkJ1QWhzSVEwZ0FTQUJiRUVDZENFS0lBQW9BZ3doQkNBQUtBS2NBU0VEQTBBZ0F5Z0MwQ3NoQ3lBRElBUkJqQ3dRQ3lJQlFRQTJBdWdySUFGQmZ6WUMxQ3NnQVVFQU5nS3dLQ0FCUVFBMkFvUXNJQUZCQURZQzhDc2dBVUlBTndMNEt5QUJJQXMyQXRBcklBRWdBUzBBaUN4Qi9BRnhPZ0NJTENBRUtBTG9Ld1JBSUFFZ0NoQU5JZ00yQXVncklBTkZCRUJCQUE4TElBTWdCQ2dDNkNzZ0NoQUxHZ3NnQVNBRUtBTDRLMEVVYkNJRkVBMGlBellDOEN0QkFDRUlJQU5GRFFJZ0F5QUVLQUx3S3lBRkVBc2FJQVFvQXZRcklnWUVRQ0FFS0FMd0t5RURJQUVvQXZBcklRVkJBQ0VIQTBBZ0F5Z0NEQVJBSUFVZ0F5Z0NFQkFOSWdZMkFnd2dCa1VFUUVFQUR3c2dCaUFES0FJTUlBTW9BaEFRQ3hvZ0JDZ0M5Q3NoQmdzZ0FTQUJLQUw0SzBFQmFqWUMrQ3NnQlVFVWFpRUZJQU5CRkdvaEF5QUhRUUZxSWdjZ0Jra05BQXNMSUFFZ0JDZ0NoQ3hCRkd3aUJSQU5JZ00yQXZ3cklBTkZEUUlnQXlBRUtBTDhLeUFGRUFzYUlBRWdCQ2dDaEN3aUNEWUNoQ3dnQ0FSQUlBUW9BdndySVFNZ0FTZ0MvQ3NoQlVFQUlRY0RRQ0FES0FJSUlnWUVRQ0FGSUFFb0F2QXJJQVlnQkNnQzhDdHJhallDQ0FzZ0F5Z0NEQ0lHQkVBZ0JTQUJLQUx3S3lBR0lBUW9BdkFyYTJvMkFnd0xJQVZCRkdvaEJTQURRUlJxSVFNZ0IwRUJhaUlISUFoSERRQUxDeUFMSUFRb0F0QXJJQTBRQ3hvZ0FVR01MR29oQXlBT1FRRnFJZzRnREVjTkFBc0xRUUVoQ0NBQUFuOUJBRUVCUWNnQUVBd2lBVVVOQUJvZ0FTQUJMUUFvUWY0QmNVRUJjam9BS0NBQlFRRkJCQkFNSWdRMkFoUWdBU0FFRFFBYUlBRVFDVUVBQ3lJQk5nTFFBU0FCUlFSQVFRQVBDeUFBS0FMVUFTRUZRUUFoQkNBQklBQkIwQUJxTmdJY0lBRWdDVFlDR0VFQlFkQUdFQXdoQXlBQktBSVVJQU0yQWdBQ1FDQURSUTBBSUFrb0FoQkJ6QUFRRENFRElBRW9BaFFvQWdBaUJ5QUROZ0lVSUFORkRRQWdCeUFKS0FJUU5nSVFJQUFvQXFRQklRUWdBU0FGTmdJc0lBRWdCRFlDQUVFQklRUUxJQVFOQUNBQUtBTFFBUkJPUVFBaENDQUFRUUEyQXRBQklBSkJBVUhDRzBFQUVBZ0xJQWdMMVJJRERIOEJmUUYrSXdCQk1Hc2lDQ1FBSUFCQkFUWUNDQUovQWtBQ1FDQUJJQWhCS0dvaUJVRUNJQUlRRWtFQ1J3MEFJQVVnQ0VFc2FrRUNFQW9nQ0NnQ0xFSFAvZ05IRFFBZ0FFRUNOZ0lJSUFBb0FzZ0JJQUVwQXpoQ0FuMGlFRGNEQUNBSUlCQTNBeEFnQWtFRVFmN2VBQ0FJUVJCcUVBZ2dBQ2dDeUFFaUF5a0RBQ0VRSUFNb0FoZ2lCMEVCYWlJRklBTW9BaUFpQkUwRVFDQURLQUljSVFRTUFnc2dBd0ovSUFTelF3QUF5RUtTSWc5REFBQ0FUMTBnRDBNQUFBQUFZSEVFUUNBUHFRd0JDMEVBQ3lJRk5nSWdJQU1vQWh3Z0JVRVliQkFRSWdRRVFDQURJQVEyQWh3Z0F5Z0NHQ0lIUVFGcUlRVU1BZ3NnQXlnQ0hCQUpJQU5CQURZQ0lDQURRZ0EzQXhnZ0FrRUJRYWtkUVFBUUNBc2dBa0VCUWNYMUFFRUFFQWhCQUF3QkN5QUVJQWRCR0d4cUlnUkJBallDRUNBRUlCREVOd01JSUFSQnovNERPd0VBSUFNZ0JUWUNHQ0FCSUFBb0FoQkJBaUFDRUJKQkFrY0VRQ0FDUVFGQmxoSkJBQkFJUVFBTUFRc2dBQ2dDRUNBSVFTaHFRUUlRQ2dKQUFrQWdDQ2dDS0NJRVFaRC9BMGNFUUFOQVFmQzlBU0VISUFSQi8vMERUUVJBSUFnZ0JEWUNBQ0FDUVFGQnloQWdDQkFJUVFBTUJRc0RRQ0FISWdVb0FnQWlBd1JBSUFWQkRHb2hCeUFESUFSSERRRUxDd0pBQWtBZ0F3MEFRUUloQmlBQ1FRSkI5UnhCQUJBSVFaWVNJUWNDUUFKQUlBRWdBQ2dDRUVFQ0lBSVFFa0VDUncwQUEwQWdBQ2dDRUNBSVFTeHFRUUlRQ2tId3ZRRWhBeUFJS0FJc0lnUkJnUDREVHdSQUEwQWdBeUlGS0FJQUlnd0VRQ0FEUVF4cUlRTWdCQ0FNUncwQkN3c2dCU2dDQkNBQUtBSUljVVVFUUVIOEtDRUhEQU1MSUF3RVFDQU1RWkQvQTBZRVFDQUlRWkQvQXpZQ0tBd0hDeUFCS1FNNElSQWdBQ2dDeUFFaUF5Z0NHQ0lGUVFGcUlnUWdBeWdDSUNJSFRRUkFJQU1vQWh3aEJ3d0ZDeUFEQW44Z0I3TkRBQURJUXBJaUQwTUFBSUJQWFNBUFF3QUFBQUJnY1FSQUlBK3BEQUVMUVFBTElnVTJBaUFnQXlnQ0hDQUZRUmhzRUJBaUJ3UkFJQU1nQnpZQ0hDQURLQUlZSWdWQkFXb2hCQXdGQ3lBREtBSWNFQWtnQTBFQU5nSWdJQU5DQURjREdFR3BIU0VIREFNTElBWkJBbW9oQmdzZ0FTQUFLQUlRUVFJZ0FoQVNRUUpHRFFBTEN5QUNRUUVnQjBFQUVBZ2dBa0VCUWY3SEFFRUFFQWhCQUF3SEN5QUhJQVZCR0d4cUlnVWdCallDRUNBRklCQ25JQVpyckRjRENDQUZRUUE3QVFBZ0F5QUVOZ0lZSUFnZ0REWUNLRUh3dlFFaEJBTkFJQVFpQlNnQ0FDSURSUTBCSUFSQkRHb2hCQ0FESUF4SERRQUxDeUFGS0FJRUlBQW9BZ2h4UlFSQUlBSkJBVUg4S0VFQUVBaEJBQXdHQ3lBQklBQW9BaEJCQWlBQ0VCSkJBa2NFUUNBQ1FRRkJsaEpCQUJBSVFRQU1CZ3NnQUNnQ0VDQUlRU1JxUVFJUUNpQUlLQUlrSWdSQkFVMEVRQ0FDUVFGQm9TNUJBQkFJUVFBTUJnc2dDQ0FFUVFKcklnYzJBaVFnQUNnQ0VDRUVJQUFvQWhRZ0Iwa0VRQ0FFSUFjUUVDSUVSUVJBSUFBb0FoQVFDU0FBUWdBM0F4QWdBa0VCUWRRbFFRQVFDRUVBREFjTElBQWdCRFlDRUNBQUlBZ29BaVFpQnpZQ0ZBc2dBU0FFSUFjZ0FoQVNJZ1FnQ0NnQ0pFY0VRQ0FDUVFGQmxoSkJBQkFJUVFBTUJnc2dBQ0FBS0FJUUlBUWdBaUFGS0FJSUVRRUFSUVJBSUFKQkFVR29Fa0VBRUFoQkFBd0dDeUFCS1FNNElSQWdDQ2dDSkNFTUFrQWdBQ2dDeUFFaUJTZ0NHQ0lHUVFGcUlnY2dCU2dDSUNJRVRRUkFJQVVvQWh3aEJBd0JDeUFGQW44Z0JMTkRBQURJUXBJaUQwTUFBSUJQWFNBUFF3QUFBQUJnY1FSQUlBK3BEQUVMUVFBTElnUTJBaUFnQlNnQ0hDQUVRUmhzRUJBaUJFVU5CU0FGSUFRMkFod2dCU2dDR0NJR1FRRnFJUWNMSUFRZ0JrRVliR29pQkNBTVFRUnFOZ0lRSUFRZ0VLY2dER3RCQkd1c053TUlJQVFnQXpzQkFDQUZJQWMyQWhnZ0FTQUFLQUlRUVFJZ0FoQVNRUUpIQkVBZ0FrRUJRWllTUVFBUUNFRUFEQVlMUVFFZ0NpQURRZHorQTBZYklRcEJBU0FMSUFOQjB2NERSaHNoQzBFQklBMGdBMEhSL2dOR0d5RU5JQUFvQWhBZ0NFRW9ha0VDRUFvZ0NDZ0NLQ0lFUVpEL0EwY05BUXNMSUEwTkFRc2dBa0VCUVpna1FRQVFDRUVBREFJTElBdEZCRUFnQWtFQlFjWWtRUUFRQ0VFQURBSUxJQXBGQkVBZ0FrRUJRZlFrUVFBUUNFRUFEQUlMUVFBaEEwRUFJUTBqQUVFUWF5SUVKQUJCQVNFSEFrQWdBQzBBdkFGQkFYRkZEUUFDUUNBQUtBSndJZ3RGRFFBQ1FBTkFJQUFvQW5RZ0RVRURkR29pQlNnQ0FDSUtCRUFnQXlBRktBSUVJZ1pySWdWQkFDQURJQVZQR3lFRklBTWdCa2tFUUNBR0lBTnJJUXNnQXlBS2FpRUtBMEFnQzBFRVNRUkFRWTRySVFNTUJRc2dDaUFFUVF4cVFRUVFDaUFFS0FJTUlnTkJmM01nQ1VrRVFFSDBLaUVEREFVTElBTWdDMEVFYXlJR2F5QUZJQU1nQmtzaURCc2hCU0FESUFscUlRa2dCaUFEYXlFTElBcEJBQ0FESUF3YmFrRUVhaUVLSUFNZ0Jra05BQXNnQUNnQ2NDRUxDeUFGSVFNTElBMUJBV29pRFNBTFNRMEFDeUFEUlEwQlFRQWhCeUFDUVFGQjZSWkJBQkFJREFJTFFRQWhCeUFDUVFFZ0EwRUFFQWdNQVFzZ0FDQUpFQTBpQXpZQ2lBRWdBMFVFUUVFQUlRY2dBa0VCUWI0Z1FRQVFDQXdCQ3lBQUlBazJBbndnQUNnQ2RDRUdBa0FnQUNnQ2NDSUtCRUJCQUNFSlFRQWhBMEVBSVFVRFFDQUdJQVZCQTNRaURXb2lEQ2dDQUNJTEJFQWdBQ2dDaUFFZ0Eyb2hDZ0ovSUF3b0FnUWlCaUFKVFFSQUlBb2dDeUFHRUFzYUlBTWdCbW9oQXlBSklBWnJEQUVMSUFvZ0N5QUpFQXNhSUFNZ0NXb2hBeUFHSUFscklnWUVRQ0FKSUF0cUlRa0RRQ0FHUVFSSkRRWWdDU0FFUVFocVFRUVFDaUFKUVFScUlRa2dBQ2dDaUFFZ0Eyb2hDaUFHUVFScklnWWdCQ2dDQ0NJTFNRUkFJQW9nQ1NBR0VBc2FJQU1nQm1vaEF5QUVLQUlJSUFackRBTUxJQW9nQ1NBTEVBc2FJQVFvQWdnaUNpQURhaUVESUFrZ0Ntb2hDU0FHSUFwcklnWU5BQXNMUVFBTElRa2dBQ2dDZENBTmFpZ0NBQkFKSUFBb0FuUWlCaUFOYWtJQU53SUFJQUFvQW5BaENnc2dCVUVCYWlJRklBcEpEUUFMSUFBb0Fud2hDU0FBS0FLSUFTRURDeUFBSUFrMkFwQUJJQUFnQXpZQ2VDQUFRUUEyQW5BZ0JoQUpJQUJCQURZQ2RBd0JDMEVBSVFjZ0FrRUJRWTRyUVFBUUNBc2dCRUVRYWlRQUlBZEZCRUFnQWtFQlFZODlRUUFRQ0VFQURBSUxJQUpCQkVHSDF3QkJBQkFJSUFBb0FzZ0JJQUVwQXpoQy92Ly8vdzk4UXYvLy8vOFBnemNEQ0NBQVFRZzJBZ2hCQVF3QkN5QUZLQUljRUFrZ0JVRUFOZ0lnSUFWQ0FEY0RHQ0FDUVFGQnFSMUJBQkFJUVFBTElRNGdDRUV3YWlRQUlBNExIQUFnQUNnQ0NFVWdBQ2dDd0FGQkFFY2dBQ2dDeEFGQkFFZHhjUXNFQUVFQUN3OEFJQUFFUUNBQUlBRTJBcmdCQ3d1UEFRRUVmeUFBS0FJWUlnRUVRQ0FBS0FJY0lnTkJORzRoQkNBRFFUUlBCSDlCQUNFREEwQWdBU2dDQUNJQ0JFQWdBa0VCYXhBSklBRkJBRFlDQUFzZ0FTZ0NCQ0lDQkVBZ0FoQUpJQUZCQURZQ0JBc2dBU2dDQ0NJQ0JFQWdBaEFKSUFGQkFEWUNDQXNnQVVFMGFpRUJJQU5CQVdvaUF5QUVSdzBBQ3lBQUtBSVlCU0FCQ3hBSklBQkJBRFlDR0FzTGhnRUJCSDhnQUNnQ0dDSUJCRUFnQUNnQ0hDSUNRY0FBVHdSL0lBSkJCblloQkVFQUlRSURRQ0FCS0FJQUlnTUVRQ0FERUFrZ0FVRUFOZ0lBQ3lBQktBSUVJZ01FUUNBREVBa2dBVUVBTmdJRUN5QUJLQUk4RUFrZ0FVRUFOZ0k4SUFGQlFHc2hBU0FDUVFGcUlnSWdCRWNOQUFzZ0FDZ0NHQVVnQVFzUUNTQUFRUUEyQWhnTEN6OEJBWDhnQUFSQUlBQW9BblFpQVFSQUlBRVFDU0FBUVFBMkFuUUxJQUFvQW5naUFRUkFJQUVRQ1NBQVFRQTJBbmdMSUFBb0FwUUJFQWtnQUJBSkN3dkJwZ1VFWEg4Q2V3WitBWDBqQUVIZ0FHc2lJeVFBSUFBb0FnZ2hHZ0pBQWtBQ1FBSkFJQUFvQWdCRkJFQWdHaUFhS0FJUUlCb29BZ2hySUJvb0FoUWdHaWdDREd0c1FRSjBJZ1lRRmlJRE5nSThJQU5GQkVBZ0FDZ0NKQm9nQUNnQ0lFRUJRZEU4UVFBUUNDQUFLQUlrR2lBQVFSeHFJUkFNQXdzZ0EwRUFJQVlRRGhvTUFRc2dHaWdDUENJRFJRMEFJQU1RQ1NBYVFRQTJBandMSUFBb0FoQWlNaWdDSENBeUtBSVlRWmdCYkdvaUEwR1lBV3NvQWdBaE5TQURRWkFCYXlnQ0FDRTJJQUFvQWhRaEx5QUFLQUlNSVRBZ0FDZ0NCQ0UzSUFBb0Fod29BZ0JGRFFJZ0FFRWNhaUVRQWtBQ2YwRUFJQUVvQWdRaUEwRUFUQTBBR2lBQktBSUFJUVlDUUFOQUlBWWdCMEVNYkdvaUJDZ0NBRVVOQVNBSFFRRnFJZ2NnQTBjTkFBdEJBQXdCQ3lBRUtBSUVDeUlFRFFCQkFVR2NBUkFNSWdSRkJFQWdBQ2dDSUVFQlFaQXdRUUFRQ0F3Q0N5QUVRUUEyQW93QklBRW9BZ1FpQTBILy8vLy9CMGNFZndKL0lBRW9BZ0FoQmlBRFFRQktCRUFEUUNBR0lBbEJER3hxSWdjb0FnQkZCRUFnQnlnQ0NDSURCSDhnQnlnQ0JDQURFUUlBSUFFb0FnQUZJQVlMSUFsQkRHeHFJZ0ZCRHpZQ0NDQUJJQVEyQWdSQkFRd0RDeUFKUVFGcUlna2dBMGNOQUFzTFFRQWdCaUFEUVF4c1FReHFFQkFpQTBVTkFCb2dBU0FETmdJQUlBTWdBU2dDQkNJR1FReHNhaUlEUVE4MkFnZ2dBeUFFTmdJRUlBTkJBRFlDQUNBQklBWkJBV28yQWdSQkFRc0ZRUUFMRFFBZ0FDZ0NJRUVCUVkwK1FRQVFDQ0FFS0FKMElnRUVRQ0FCRUFrZ0JFRUFOZ0owQ3lBRUtBSjRJZ0VFUUNBQkVBa2dCRUVBTmdKNEN5QUVLQUtVQVJBSklBUVFDUXdCQ3lBRUlBQW9BaGcyQXBBQklBQW9BaWdoS3lBQUtBSWtJU0VnQUNnQ0lDRWRJQzhvQXFnR0lSRWdNQ2dDRUNFQkFrQUNRQ0F2S0FJUUloWkJ3QUJ4QkVBZ0ZpRUtJd0JCc0FKcklnOGtBQUpBSUJFRVFDQWhCRUJCQUNFSElCMUJBVUdCR0VFQUVBZ01BZ3RCQUNFSElCMUJBVUdCR0VFQUVBZ01BUXNnQkNnQ2RDRUhBa0FDUUNBYUtBSVVJQm9vQWd4cklnTWdHaWdDRUNBYUtBSUlheUlHYkNJQklBUW9Bb1FCU3dSQUlBY1FDU0FFSUFGQkFuUWlFUkFXSWdjMkFuUWdCMFVFUUVFQUlRY01CQXNnQkNBQk5nS0VBUXdCQ3lBSFJRMEJJQUZCQW5RaEVRc2dCMEVBSUJFUURob0xJQVFvQW5naEJ3SkFJQVFvQW9nQlFjOFVTdzBBSUFjUUNTQUVRY0RTQUJBV0lnYzJBbmdnQncwQVFRQWhCd3dCQ3lBRVFkQVVOZ0tJQVNBSFFRQkJ3TklBRUE0YUlBUWdBellDZ0FFZ0JDQUdOZ0o4SUJvb0FoZ2lBa1VFUUVFQklRY01BUXNnR2lnQ0hDRU5RUUVoQndKQUFrQUNRQUpBQWtBZ0dpZ0NOQ0lEQkVBZ0dpZ0NCQ0VKUVFBaEIwRUFJUUVDUUNBRFFRUlBCRUFnQTBGOGNTRUJBMEFnQ1NBSVFRTjBhaUlHUVJ4cUlBWkJGR29nQmtFTWFpQUcvUWtDQlAxV0FnQUIvVllDQUFMOVZnSUFBeUJlL2E0QklWNGdDRUVFYWlJSUlBRkhEUUFMSUY0Z1hpQmUvUTBJQ1FvTERBME9Ed0FCQWdNQUFRSUQvYTRCSWw0Z1hpQmUvUTBFQlFZSEFBRUNBd0FCQWdNQUFRSUQvYTRCL1JzQUlRY2dBU0FEUmcwQkN3TkFJQWtnQVVFRGRHb29BZ1FnQjJvaEJ5QUJRUUZxSWdFZ0EwY05BQXNMSUFOQkFVWUVRQ0FFS0FLUUFVVU5CUXNnQnlBRUtBS1lBVTBOQVNBRUtBS1VBU0FIRUJBaUVRMENRUUFoQnd3R0N5QUVLQUtRQVVVTkJRc2dCQ2dDbEFFaUVRMEJRUUFoQnd3RUN5QUVJQWMyQXBnQklBUWdFVFlDbEFFTElCb29BalJGQkVCQkFDRUhEQUlMSUJvb0FnUWhDRUVBSVFkQkFDRUJBMEFnQnlBUmFpQUlJQUZCQTNRaUEyb2lCaWdDQUNBR0tBSUVFQXNhSUJvb0FnUWlDQ0FEYWlnQ0JDQUhhaUVISUFGQkFXb2lBU0FhS0FJMFNRMEFDd3dCQ3lBYUtBSUVLQUlBSVJFTFFRQWhBVUVBSVFnQ2YwRUFJQm9vQWlnaUEwVU5BQm9nR2lnQ0FDSUdLQUlJSVFoQkFDQURRUUZHRFFBYUlBWW9BaUFMSVFNZ0FpQU5heUZGQWtBZ0F5QUlhaUlJUlFSQVFRQWhDUXdCQzBFQklRRWdHaWdDQUNJREtBSUFJUVZCQUNFSklBaEJBVVlFUUVFQUlRRU1BUXNnQXlnQ0dDRUpDeUJGUVFGcUlSWWdCQ2dDZENFT0lBUW9BbmdoRkNBYUtBSU1JUklnR2lnQ0ZDRVlJQm9vQWdnaEpDQWFLQUlRSVNzQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBZ0FVVU5BQ0FKRFFBZ0lVVU5BU0FkUVFKQi9NOEFRUUFRQ0VFQklRZ01BZ3NnQ0VFRVNRMEJJQ0VFUUNBUElBZzJBbkFnSFVFQlFmM0ZBQ0FQUWZBQWFoQUlEQWdMSUE4Z0NEWUNZQ0FkUVFGQi9jVUFJQTlCNEFCcUVBaEJBQ0VIREFnTElCMUJBa0g4endCQkFCQUlJQm9vQWhnaUFVRWVTdzBCUVFFaERDQUJJQlpQRFFNTUJRc2dHaWdDR0NJQlFSNU5EUUVnSVVVTkFDQVBJQUUyQWlBZ0hVRUJRYXZiQUNBUFFTQnFFQWdNQlFzZ0R5QUJOZ0lBSUIxQkFVR3Iyd0FnRHhBSVFRQWhCd3dGQ3lBQklCWkpEUUVnQ0VFQ1NRUkFJQWdoREF3QkN5QUJJQlpIQkVBZ0NDRU1EQUVMUVFFaERFR1F4Z0V0QUFBTkFDQWhSUVJBUVpER0FVRUJPZ0FBSUE4Z0NEWUNRQ0FkUVFKQmdjd0FJQTlCUUdzUUNBd0JDMEdReGdFdEFBQkZCRUJCa01ZQlFRRTZBQUFnRHlBSU5nSlFJQjFCQWtHQnpBQWdEMEhRQUdvUUNBc0xBa0FDUUNBRlFRSkpEUUFnQlNBSFN3MEFJQVVnQ1dvZ0IwME5BUXNnSVFSQVFRQWhCeUFkUVFGQnc4VUFRUUFRQ0F3RkMwRUFJUWNnSFVFQlFjUEZBRUVBRUFnTUJBc0NRQUpBSUFVZ0VXb2lFMEVCYXkwQUFFRUVkQ0FUUVFKckxRQUFRUTl4Y2lJR1FRSkpEUUFnQlNBR1NBMEFJQVpCOEI5SkRRRUxJQ0VFUUVFQUlRY2dIVUVCUWVieUFFRUFFQWdNQlF0QkFDRUhJQjFCQVVIbThnQkJBQkFJREFRTElCb29BaHdoSmlBUFFRQTJBcEFDSUE5QkFEWUNtQUlnRDBJQU53T0lBaUFQUWdBM0E2Z0NJQTlDQURjQ25BSWdEeUFHUVFGcklnYzJBcFFDSUE4Z0JTQVJhaUFHYXlJQk5nS0FBa0wvQVNGZ0lBWkJBazhFUUNBQk1RQUFJV0FMUVFnaEF5QVBRUWcyQXBBQ0lBOGdCa0VDYXlJSU5nS1VBaUFQSUdCQ0Q0UWdZQ0FIUVFGR0d5SmdOd09JQWlBUElBRWdCa0VCU21vaUJ6WUNnQUlnRHlCZ1F2OEJVU0lOTmdLWUFnSi9Ba0FnQVVFRGNTSUNRUU5HRFFCQy93RWhZU0FOQkVCQkFDQUhMUUFBUVk4QlN3MENHZ3NnQmtFRFRnUkFJQWN4QUFBaFlRc2dEeUFHUVFOcklnMDJBcFFDSUE5QkQwRVFJR0JDL3dGUklnc2JJZ00yQXBBQ0lBOGdCeUFHUVFKS2FpSUJOZ0tBQWlBUElHRkNENFFnWVNBSVFRRkdHeUpoUXY4QlVUWUNtQUlnRHlCZ1FnZENDQ0FMRzRZZ1lZUWlZRGNEaUFJZ0FrRUNSZzBBSUdGQy93RlJCRUJCQUNBQkxRQUFRWThCU3cwQ0dndEMvd0VoWWlBR1FRUk9CRUFnQVRFQUFDRmlDeUFQSUFaQkJHc2lCellDbEFJZ0R5QUJJQVpCQTBwcUlnRTJBb0FDSUE4Z1lrSVBoQ0JpSUExQkFVWWJJbUpDL3dGUk5nS1lBaUFQSUFOQkIwRUlJR0ZDL3dGUklnZ2JhaUlETmdLUUFpQVBJR0JDQjBJSUlBZ2JoaUJpaENKZ053T0lBaUFDUVFGR0RRQkMvd0VoWVNCaVF2OEJVUVJBUVFBZ0FTMEFBRUdQQVVzTkFob0xJQVpCQlU0RVFDQUJNUUFBSVdFTElBOGdCa0VGYXpZQ2xBSWdEeUFCSUFaQkJFcHFOZ0tBQWlBUElHRkNENFFnWVNBSFFRRkdHeUpoUXY4QlVUWUNtQUlnRHlBRFFRZEJDQ0JpUXY4QlVTSUJHMm9pQXpZQ2tBSWdEeUJnUWdkQ0NDQUJHNFlnWVlRaVlEY0RpQUlMSUE4Z1lFSEFBQ0FEYTYyR053T0lBa0VCQzBVRVFDQWhCRUJCQUNFSElCMUJBVUhlMUFCQkFCQUlEQVVMUVFBaEJ5QWRRUUZCM3RRQVFRQVFDQXdFQ3lBcklDUnJJUlVnRHlBR1FRSnJJZ3MyQXZRQklBOGdCU0FSYWlJQ1FRTnJJZ00yQXVBQklBOGdBa0VDYXkwQUFDSVpRWThCU3lJTk5nTDRBU0FQSUJsQkJIYXRJbUEzQStnQklBOUJBMEVFSUdCQ0I0TkNCMUViSWdFMkF2QUJJQU5CQTNGQkFXb2lCeUFMSUFjZ0MwZ2JJUWdDUUFKQUlBWkJBa3dFUUNBUElBc2dDR3NpQWpZQzlBRU1BUXNnRHlBQ1FRUnJJZ2MyQXVBQklBOGdBeTBBQUNJWFFZOEJTeUlOTmdMNEFTQVBJQmV0SW1FZ0FhMkdJR0NFSW1BM0ErZ0JJQTlCQ0VFSFFRZ2dZVUwvQUlOQy93QlJHeUFaUVk4QlRSc2dBV29pQVRZQzhBRUNRQ0FJUVFGR0JFQWdCeUVEREFFTElBOGdBa0VGYXlJRE5nTGdBU0FQSUFjdEFBQWlHVUdQQVVzaURUWUMrQUVnRHlBWnJTSmhJQUd0aGlCZ2hDSmdOd1BvQVNBUFFRaEJCMEVJSUdGQy93Q0RRdjhBVVJzZ0YwR1BBVTBiSUFGcUlnRTJBdkFCSUFoQkFrWU5BQ0FQSUFKQkJtc2lCellDNEFFZ0R5QURMUUFBSWhkQmp3RkxJZzAyQXZnQklBOGdGNjBpWVNBQnJZWWdZSVFpWURjRDZBRWdEMEVJUVFkQkNDQmhRdjhBZzBML0FGRWJJQmxCandGTkd5QUJhaUlCTmdMd0FTQUlRUU5HQkVBZ0J5RUREQUVMSUE4Z0FrRUhheUlETmdMZ0FTQVBJQWN4QUFBaVlVS1BBVllpRFRZQytBRWdEeUJoSUFHdGhpQmdoQ0pnTndQb0FTQVBRUWhCQjBFSUlHRkMvd0NEUXY4QVVSc2dGMEdQQVUwYklBRnFJZ0UyQXZBQkN5QVBJQXNnQ0dzaUFqWUM5QUVnQVVFZ1N3MEJDd0pBSUFKQkJFNEVRQ0FEUVFOcktBSUFJUWNnRHlBQ1FRUnJOZ0wwQVNBUElBTkJCR3MyQXVBQkRBRUxJQUpCQUV3RVFFRUFJUWNNQVFzZ0FrRUJjU0ZIQWtBZ0FrRUJSZ1JBUVJnaENFRUFJUWNNQVFzZ0FrSCsvLy8vQjNFaEYwRVlJUWhCQUNFSFFRQWhDd05BSUE4Z0EwRUJheUlmTmdMZ0FTQURMUUFBSVVZZ0R5QURRUUpySWdNMkF1QUJJQThnQWtFQmF6WUM5QUVnSHkwQUFDRWZJQThnQWtFQ2F5SUNOZ0wwQVNCR0lBaDBJQWR5SUI4Z0NFRUlhM1J5SVFjZ0NFRVFheUVJSUF0QkFtb2lDeUFYUncwQUN3c2dSMFVOQUNBUElBTkJBV3MyQXVBQklBTXRBQUFoU0NBUElBSkJBV3MyQXZRQklFZ2dDSFFnQjNJaEJ3c2dEeUFIUWY4QmNTSURRWThCU3pZQytBRWdEMEVIUVFnZ0IwR0FnSUQ0QjNGQmdJQ0ErQWRHRzBFSUlBMGJJZ0pCQ0VFSFFRZ2dCMEdBZ1B3RGNVR0FnUHdEUmhzZ0IwSC8vLy8vZUUwYmFpSUlRUWhCQjBFSUlBZEJnUDRCY1VHQS9nRkdHeUFIUVJCMlFmOEJjU0lOUVk4QlRSdHFJZ3RCQ0VFSFFRZ2dCMEgvQUhGQi93QkdHeUFIUVFoMlFmOEJjU0laUVk4QlRSc2dBV3BxTmdMd0FTQVBJQTBnQW5RZ0IwRVlkbklnR1NBSWRISWdBeUFMZEhLdElBR3RoaUJnaERjRDZBRUxJQTlCd0FGcUlCRWdCU0FHYTBIL0FSQlVBbjlCQUNBTVFRSkpEUUFhSUE5Qm9BRnFJQk1nQ1VFQUVGUkJBQ0FNUVFKR0RRQWFRZ0FoWUVJQUlXSWdEMEVCTmdLWUFTQVBRUUEyQXBBQklBOUNBRGNEaUFFZ0R5QUpRUUZySWdZMkFwUUJJQThnQlNBUmFpQUphaUlEUVFGcklnRTJBb0FCSUFGQkEzRWhCUUpBSUFsQkFFd0VRQ0FCSVFNTUFRc2dEeUFEUVFKcklnTTJBb0FCSUFFeEFBQWhZQXNnRHlCZ053T0lBU0FQSUdCQ2p3RldJaEUyQXBnQklBOUJCMEVJSUdCQy93Q0RRdjhBVVJzaURUWUNrQUVDUUNBRlJRMEFJQThnQ1VFQ2F5SUNOZ0tVQVFKQUlBbEJBa2dFUUNBRElRY01BUXNnRHlBRFFRRnJJZ2MyQW9BQklBTXhBQUFoWWdzZ0R5QmlRbzhCVmlJUk5nS1lBU0FQSUdJZ0RhMkdJR0NFSW1FM0E0Z0JJQTlCQ0VFSFFRZ2dZa0wvQUlOQy93QlJHeUJnUW84QldCc2dEV29pRFRZQ2tBRWdCVUVCUmdSQUlBY2hBeUJoSVdBZ0JpRUpJQUloQmd3QkN5QVBJQWxCQTJzaUNEWUNsQUVDUUNBSlFRTklCRUFnQnlFQkRBRUxJQThnQjBFQmF5SUJOZ0tBQVNBSE1RQUFJV01MSUE4Z1kwS1BBVllpRVRZQ21BRWdEeUJqSUEydGhpQmhoQ0pnTndPSUFTQVBRUWhCQjBFSUlHTkMvd0NEUXY4QVVSc2dZa0tQQVZnYklBMXFJZzAyQXBBQklBVkJBa1lFUUNBQklRTWdBaUVKSUFnaEJnd0JDeUFQSUFsQkJHc2lCallDbEFGQ0FDRmlBa0FnQ1VFRVNBUkFJQUVoQXd3QkN5QVBJQUZCQVdzaUF6WUNnQUVnQVRFQUFDRmlDeUFQSUdKQ2p3RldJaEUyQXBnQklBOGdZaUFOcllZZ1lJUWlZRGNEaUFFZ0QwRUlRUWRCQ0NCaVF2OEFnMEwvQUZFYklHTkNqd0ZZR3lBTmFpSU5OZ0tRQVNBSUlRa0xJQTFCSUUwRVFBSkFJQWxCQlU0RVFDQURRUU5yS0FJQUlRY2dEeUFKUVFWck5nS1VBU0FQSUFOQkJHczJBb0FCREFFTFFRQWhCeUFKUVFKSURRQkJHQ0VKQTBBZ0R5QURRUUZySWdFMkFvQUJJQU10QUFBaFNTQVBJQVpCQVdzaUFqWUNsQUVnU1NBSmRDQUhjaUVISUFaQkFVc2hTaUFCSVFNZ0NVRUlheUVKSUFJaEJpQktEUUFMQ3lBUElBZEIvd0Z4SWdGQmp3RkxOZ0tZQVNBUFFRZEJDQ0FIUVlDQWdQZ0hjVUdBZ0lENEIwWWJRUWdnRVJzaUEwRUlRUWRCQ0NBSFFZQ0EvQU54UVlDQS9BTkdHeUFIUWYvLy8vOTRUUnRxSWdaQkNFRUhRUWdnQjBHQS9nRnhRWUQrQVVZYklBZEJFSFpCL3dGeElnbEJqd0ZORzJvaUFrRUlRUWRCQ0NBSFFmOEFjVUgvQUVZYklBZEJDSFpCL3dGeElnaEJqd0ZOR3lBTmFtbzJBcEFCSUE4Z0NTQURkQ0FIUVJoMmNpQUlJQVowY2lBQklBSjBjcTBnRGEyR0lHQ0VOd09JQVF0QkFRc2hNU0FZSUJKcklSOGdGa0VCYWlFc0lCUkJBRG9Bd0JBZ0ZFSEFFR29oQ3lBUFFZQUNhaEFoSVFJZ0ZVRUFTZ1JBSUNaQkFXc2hFeUFVSVFNZ0N5RUlRUUFoRVNBT0lRWkJBQ0VOQTBBZ0RTRUZJQkZCQ0hRZ0QwSGdBV29RS2tIL0FIRkJBWFJ5UWJEOUFHb3ZBUUFoQVFKQUlCRU5BQ0FCUVFBZ0FrRUNheUlIUVg5R0d5RUJJQUpCQVVvRVFDQUhJUUlNQVFzZ0QwR0FBbW9RSVNFQ0N5QVBLUVBvQVNGa0lBOG9BdkFCSVVzZ0F5QURLQUlBSUFGQkJIWWlHRUVEY1NBQlFRSjJRVEJ4Y2lBaWRISWlGallDQUNBQlFRVjJRUWR4SUFGQkVIRWlIa0VFZG5JaEVTQkxJQUZCQjNFaUIyc2hEU0JrSUFldGlDSmdweUVKUVFBaEJ5QVZJQVZCQW5KS0JFQWdFVUVJZENBSlFmOEFjVUVCZEhKQnNQMEFhaThCQUNFSEFrQWdFUTBBSUFkQkFDQUNRUUpySWdsQmYwWWJJUWNnQWtFQlNnUkFJQWtoQWd3QkN5QVBRWUFDYWhBaElRSUxJQWRCQkhaQkFYRWdCMEVGZGtFSGNYSWhFU0FOSUFkQkIzRWlDV3NoRFNCZ0lBbXRpQ0pncHlFSkN5QURJQWRCQW5SQmdBWnhJQWRCTUhGeUlDSkJCR3AwSUJaeU5nSUFBa0FnQjBFQ2RrRUNjU0FCUVFOMlFRRnhjaUlYUVFOSERRQkJCRUVESUFKQkFtc2lGa0YvUmhzaEZ5QUNRUUZLQkVBZ0ZpRUNEQUVMSUE5QmdBSnFFQ0VoQWdzQ2Z5QVhSUVJBSUE5Q2dZQ0FnQkEzQW5oQkFBd0JDeUFYUVFKTkJFQWdEMEVCSUFsQkIzRkI1SjBCYWkwQUFDSVdRUVYyUVg4Z0ZrRUNka0VIY1NJWmRFRi9jeUFKSUJaQkEzRWlDWFp4YWtFQmFpSVdJQmRCQVVZaUZ4czJBbndnRHlBV1FRRWdGeHMyQW5nZ0NTQVphZ3dCQ3lBSklBbEJCM0ZCNUowQmFpMEFBQ0lXUVFOeElobDJJUWtnRjBFRFJnUkFJQlpCQlhaQkFXb2hGeUFaUVFOR0JFQWdEeUFKUVFGeFFRSnlOZ0o4SUE4Z0YwRi9JQlpCQW5aQkIzRWlGblJCZjNNZ0NVRUJkbkZxTmdKNElCWkJCR29NQWdzZ0R5QVhJQWtnQ1VFSGNVSGtuUUZxTFFBQUlnbEJBM0VpRW5ZaUlFRi9JQlpCQW5aQkIzRWlGblJCZjNOeGFqWUNlQ0FQUVg4Z0NVRUNka0VIY1NJWGRFRi9jeUFnSUJaMmNTQUpRUVYyYWtFQmFqWUNmQ0FXSUJscUlCSnFJQmRxREFFTElBOGdDU0FKUVFkeFFlU2RBV290QUFBaUNVRURjU0lTZGlJZ1FYOGdGa0VDZGtFSGNTSVhkRUYvYzNFZ0ZrRUZkbXBCQTJvMkFuZ2dEMEYvSUFsQkFuWkJCM0VpRm5SQmYzTWdJQ0FYZG5FZ0NVRUZkbXBCQTJvMkFud2dFaUFaYWlBWGFpQVdhZ3NoQ1FKQUlDd2dEeWdDZUNJWlR3UkFJQThvQW53aUVpQXNUUTBCQ3lBaEJFQkJBQ0VISUIxQkFVR3A5Z0JCQUJBSURBY0xRUUFoQnlBZFFRRkJxZllBUVFBUUNBd0dDeUFQSUEwZ0NXczJBdkFCSUE4Z1lDQUpyWWczQStnQklBZEI4QUZ4SUJoQkQzRnlRZjhCUWY4QklBVkJCR29pRFNBVmEwRUJkSFlnRFNBVlRCc2lDU0FKUWRVQWNTQWZRUUZLR3lJSlFYOXpjUVJBSUNFRVFFRUFJUWNnSFVFQlFiL2FBRUVBRUFnTUJ3dEJBQ0VISUIxQkFVRy8yZ0JCQUJBSURBWUxBa0FDUUNBZUJFQWdEMEhBQVdvUUV5RVhJQThnRHlnQzBBRWdHU0FCUVJOMFFSOTFhaUlXYXpZQzBBRWdEeUFQS1FQSUFTQVdyWWczQThnQklCZEJmeUFXZEVGL2MzRWdBVUVJZGtFQmNTQVdkSEpCQVhKQkFtb2dFM1FnRjBFZmRISWhGZ3dCQzBFQUlSWWdDVUVCY1VVTkFRc2dCaUFXTmdJQUN3SkFJQUZCSUhFRVFDQVBRY0FCYWhBVElSY2dEeUFQS0FMUUFTQVpJQUZCRW5SQkgzVnFJaFpyTmdMUUFTQVBJQThwQThnQklCYXRpRGNEeUFFZ0JpQVZRUUowYWlBWFFYOGdGblJCZjNOeElBRkJDWFpCQVhFZ0ZuUnlRUUZ5SWhaQkFtb2dFM1FnRjBFZmRISTJBZ0FnQ0VFZ0lCWm5heUlXSUFndEFBQkIvd0J4SWhjZ0ZpQVhTeHRCZ0FGeU9nQUFEQUVMSUFsQkFuRkZEUUFnQmlBVlFRSjBha0VBTmdJQUN5QUdRUVJxSVJjQ1FBSkFJQUZCd0FCeEJFQWdEMEhBQVdvUUV5RVlJQThnRHlnQzBBRWdHU0FCUVJGMFFSOTFhaUlXYXpZQzBBRWdEeUFQS1FQSUFTQVdyWWczQThnQklCaEJmeUFXZEVGL2MzRWdBVUVLZGtFQmNTQVdkSEpCQVhKQkFtb2dFM1FnR0VFZmRISWhGZ3dCQzBFQUlSWWdDVUVFY1VVTkFRc2dGeUFXTmdJQUN5QUlRUUE2QUFFQ1FDQUJRWUFCY1FSQUlBOUJ3QUZxRUJNaEdDQVBJQThvQXRBQklCa2dBVUVRZEVFZmRXb2lGbXMyQXRBQklBOGdEeWtEeUFFZ0ZxMklOd1BJQVNBWElCVkJBblJxSUJoQmZ5QVdkRUYvYzNFZ0FVRUxka0VCY1NBV2RISkJBWElpQVVFQ2FpQVRkQ0FZUVI5MGNqWUNBQ0FJUWFCL0lBRm5hem9BQVF3QkN5QUpRUWh4UlEwQUlCY2dGVUVDZEdwQkFEWUNBQXNnQmtFSWFpRUJBa0FDUUNBSFFSQnhCRUFnRDBIQUFXb1FFeUVaSUE4Z0R5Z0MwQUVnRWlBSFFSTjBRUjkxYWlJV2F6WUMwQUVnRHlBUEtRUElBU0FXcllnM0E4Z0JJQmxCZnlBV2RFRi9jM0VnQjBFSWRrRUJjU0FXZEhKQkFYSkJBbW9nRTNRZ0dVRWZkSEloRnd3QkMwRUFJUmNnQ1VFUWNVVU5BUXNnQVNBWE5nSUFDd0pBSUFkQklIRUVRQ0FQUWNBQmFoQVRJUmtnRHlBUEtBTFFBU0FTSUFkQkVuUkJIM1ZxSWhack5nTFFBU0FQSUE4cEE4Z0JJQmF0aURjRHlBRWdBU0FWUVFKMGFpQVpRWDhnRm5SQmYzTnhJQWRCQ1haQkFYRWdGblJ5UVFGeUlnRkJBbW9nRTNRZ0dVRWZkSEkyQWdBZ0NFRWdJQUZuYXlJQklBZ3RBQUZCL3dCeEloWWdBU0FXU3h0QmdBRnlPZ0FCREFFTElBbEJJSEZGRFFBZ0FTQVZRUUowYWtFQU5nSUFDeUFHUVF4cUlRRUNRQUpBSUFkQndBQnhCRUFnRDBIQUFXb1FFeUVaSUE4Z0R5Z0MwQUVnRWlBSFFSRjBRUjkxYWlJV2F6WUMwQUVnRHlBUEtRUElBU0FXcllnM0E4Z0JJQmxCZnlBV2RFRi9jM0VnQjBFS2RrRUJjU0FXZEhKQkFYSkJBbW9nRTNRZ0dVRWZkSEloRnd3QkMwRUFJUmNnQ1VIQUFIRkZEUUVMSUFFZ0Z6WUNBQXNnQ0VFQ2FpSUlRUUE2QUFBQ1FDQUhRWUFCY1FSQUlBOUJ3QUZxRUJNaEZpQVBJQThvQXRBQklCSWdCMEVRZEVFZmRXb2lDV3MyQXRBQklBOGdEeWtEeUFFZ0NhMklOd1BJQVNBQklCVkJBblJxSUJaQmZ5QUpkRUYvYzNFZ0IwRUxka0VCY1NBSmRISkJBWElpQVVFQ2FpQVRkQ0FXUVI5MGNqWUNBQ0FJUWFCL0lBRm5hem9BQUF3QkN5QUpRWUFCU1EwQUlBRWdGVUVDZEdwQkFEWUNBQXNnSWtFUWN5RWlJQU1nQlVFRWNXb2hBeUFHUVJCcUlRWWdEU0FWU0EwQUN3c2dDa0VJY1NFNElCUkJzQXhxSVNnZ0ZFR2dDR29oS1NBVVFaQUVhaUVsSUI5QkEwNEVRQ0FWUVFOc0lUa2dGVUVCZENFNklDWkJBV3NoSUVFRElDWkJBbXNpQVhRaExVRUJJQUYwSVM0Z0ZVRUhha0VCZGtIOC8vLy9CM0ZCQkdvaFBTQXJJQ1JCZjNOcUlnRkJBM1lpQTBFQ2RDSStRUVJxSVRzZ0EwRUJhaUkvUWZ6Ly8vOERjU0ljUVFKMElUd2dIRUVEZENFU0lBRkJHRWtoUUVFQ0lSa0RRQ0FaSVJNZ0N5MEFBQ0VXSUF0QkFEb0FBQ0FpUVc5eFFRSnpJU0lDUUNBVlFRQk1CRUFnRTBFQ2FpRVpEQUVMSUNVZ0ZDQVRRUVJ4R3lFUklCTkJBbW9oR1NBT0lCTWdGV3hCQW5ScUlRaEJBQ0VLSUFzaEJrRUFJUTBEUUNBTklRVWdCaTBBQVVFRmRrRUVjU0FLSUJaQkIzWnljaUlEUVFoMElBOUI0QUZxRUNwQi93QnhRUUYwY2tHd2pRRnFMd0VBSVFFQ1FDQUREUUFnQVVFQUlBSkJBbXNpQTBGL1Joc2hBU0FDUVFGS0JFQWdBeUVDREFFTElBOUJnQUpxRUNFaEFnc2dEeWtENkFFaFpTQVBLQUx3QVNGTUlCRWdFU2dDQUNBQlFRUjJRUU54SUFGQkFuWkJNSEZ5SUNKMGNpSUpOZ0lBSUFGQndBQnhJaXBCQlhZZ0FVR0FBWEVpSjBFR2RuSWhDaUJNSUFGQkIzRWlBMnNoRnlCbElBT3RpQ0pncHlFTlFRQWhHQUpBSUJVZ0JVRUNja3dFUUVFQUlRY01BUXNnQ2lBR0xRQUNRUVYyUVFSeElBWXRBQUZCQjNaeWNpSURRUWgwSUExQi93QnhRUUYwY2tHd2pRRnFMd0VBSVFjQ1FDQUREUUFnQjBFQUlBSkJBbXNpQTBGL1Joc2hCeUFDUVFGS0JFQWdBeUVDREFFTElBOUJnQUpxRUNFaEFnc2dCMEVGZGlBSFFRWjJja0VDY1NFS0lCY2dCMEVIY1NJRGF5RVhJR0FnQTYySUltQ25JUTBMSUJFZ0IwRUNkRUdBQm5FZ0IwRXdjWElnSWtFRWFuUWdDWEkyQWdCQkFTRUpRUUVoQXdKQUlBZEJBblpCQW5FZ0FVRURka0VCY1hJaUhrVU5BQ0FOSUExQkIzRkI1SjBCYWkwQUFDSURRUU54SWcxMklRa2dIa0VEUndSQVFRRWdDVUYvSUFOQkFuWkJCM0VpR0hSQmYzTnhJQU5CQlhacVFRRnFJZ01nSGtFQlJpSWVHeUVKSUFOQkFTQWVHeUVESUEwZ0dHb2hHQXdCQ3lBSlFRZHhRZVNkQVdvdEFBQWlIa0VEY1NJeklBMGdBMEVDZGtFSGNTSWJhbW9nSGtFQ2RrRUhjU0lOYWlFWUlBa2dNM1lpQ1VGL0lCdDBRWDl6Y1NBRFFRVjJha0VCYWlFRFFYOGdEWFJCZjNNZ0NTQWJkbkVnSGtFRmRtcEJBV29oQ1FzZ0R5QVhJQmhyTmdMd0FTQVBJR0FnR0sySU53UG9BU0FCUWZBQmNTSU5JQTFCQVd0eEJFQWdBeUFXUWY4QWNTSVdJQVl0QUFGQi93QnhJaGNnRmlBWFN4c2lGa0VDYXlJWFFRQWdGaUFYVHh0cUlRTUxJQWRCOEFGeEloY2dGMEVCYTNFRVFDQUpJQVl0QUFGQi93QnhJaFlnQmkwQUFrSC9BSEVpR0NBV0lCaExHeUlXUVFKclFRQWdGa0VDU3h0cUlRa0xJQU1nTEUwZ0NTQXNUWEZGQkVBZ0lRUkFRUUFoQnlBZFFRRkJqZmNBUVFBUUNBd0pDMEVBSVFjZ0hVRUJRWTMzQUVFQUVBZ01DQXNnQmkwQUFpRVdJQVpCQURzQUFTQVhJQTFCQkhaeVFmOEJRZjhCSUFWQkJHb2lEU0FWYTBFQmRIWWdEU0FWVEJzaUYwSFZBSEVnRnlBWklCOUtHeUlZUVg5emNRUkFJQ0VFUUVFQUlRY2dIVUVCUWIvYUFFRUFFQWdNQ1F0QkFDRUhJQjFCQVVHLzJnQkJBQkFJREFnTEFrQUNRQ0FCUVJCeEJFQWdEMEhBQVdvUUV5RWVJQThnRHlnQzBBRWdBeUFCUVJOMFFSOTFhaUlYYXpZQzBBRWdEeUFQS1FQSUFTQVhyWWczQThnQklCNUJmeUFYZEVGL2MzRWdBVUVJZGtFQmNTQVhkSEpCQVhKQkFtb2dJSFFnSGtFZmRISWhGd3dCQzBFQUlSY2dHRUVCY1VVTkFRc2dDQ0FYTmdJQUN3SkFJQUZCSUhFRVFDQVBRY0FCYWhBVElSNGdEeUFQS0FMUUFTQURJQUZCRW5SQkgzVnFJaGRyTmdMUUFTQVBJQThwQThnQklCZXRpRGNEeUFFZ0NDQVZRUUowYWlBZVFYOGdGM1JCZjNOeElBRkJDWFpCQVhFZ0YzUnlRUUZ5SWhkQkFtb2dJSFFnSGtFZmRISTJBZ0FnQmtFZ0lCZG5heUlYSUFZdEFBQkIvd0J4SWg0Z0Z5QWVTeHRCZ0FGeU9nQUFEQUVMSUJoQkFuRkZEUUFnQ0NBVlFRSjBha0VBTmdJQUN5QUlRUVJxSVI0Q1FBSkFJQ29FUUNBUFFjQUJhaEFUSVJzZ0R5QVBLQUxRQVNBRElBRkJFWFJCSDNWcUloZHJOZ0xRQVNBUElBOHBBOGdCSUJldGlEY0R5QUVnRzBGL0lCZDBRWDl6Y1NBQlFRcDJRUUZ4SUJkMGNrRUJja0VDYWlBZ2RDQWJRUjkwY2lFWERBRUxRUUFoRnlBWVFRUnhSUTBCQ3lBZUlCYzJBZ0FMQWtBZ0p3UkFJQTlCd0FGcUVCTWhGeUFQSUE4b0F0QUJJQU1nQVVFUWRFRWZkV29pQTJzMkF0QUJJQThnRHlrRHlBRWdBNjJJTndQSUFTQWVJQlZCQW5ScUlCZEJmeUFEZEVGL2MzRWdBVUVMZGtFQmNTQURkSEpCQVhJaUFVRUNhaUFnZENBWFFSOTBjallDQUNBR1FhQi9JQUZuYXpvQUFRd0JDeUFZUVFoeFJRMEFJQjRnRlVFQ2RHcEJBRFlDQUFzZ0NFRUlhaUVCQWtBQ1FDQUhRUkJ4QkVBZ0QwSEFBV29RRXlFWElBOGdEeWdDMEFFZ0NTQUhRUk4wUVI5MWFpSURhellDMEFFZ0R5QVBLUVBJQVNBRHJZZzNBOGdCSUJkQmZ5QURkRUYvYzNFZ0IwRUlka0VCY1NBRGRISkJBWEpCQW1vZ0lIUWdGMEVmZEhJaEF3d0JDMEVBSVFNZ0dFRVFjVVVOQVFzZ0FTQUROZ0lBQ3dKQUlBZEJJSEVFUUNBUFFjQUJhaEFUSVJjZ0R5QVBLQUxRQVNBSklBZEJFblJCSDNWcUlnTnJOZ0xRQVNBUElBOHBBOGdCSUFPdGlEY0R5QUVnQVNBVlFRSjBhaUFYUVg4Z0EzUkJmM054SUFkQkNYWkJBWEVnQTNSeVFRRnlJZ0ZCQW1vZ0lIUWdGMEVmZEhJMkFnQWdCa0VnSUFGbmF5SUJJQVl0QUFGQi93QnhJZ01nQVNBRFN4dEJnQUZ5T2dBQkRBRUxJQmhCSUhGRkRRQWdBU0FWUVFKMGFrRUFOZ0lBQ3lBSVFReHFJUUVDUUFKQUlBZEJ3QUJ4QkVBZ0QwSEFBV29RRXlFWElBOGdEeWdDMEFFZ0NTQUhRUkYwUVI5MWFpSURhellDMEFFZ0R5QVBLUVBJQVNBRHJZZzNBOGdCSUJkQmZ5QURkRUYvYzNFZ0IwRUtka0VCY1NBRGRISkJBWEpCQW1vZ0lIUWdGMEVmZEhJaEF3d0JDMEVBSVFNZ0dFSEFBSEZGRFFFTElBRWdBellDQUFzZ0JrRUNhaUVHQWtBZ0IwR0FBWEVFUUNBUFFjQUJhaEFUSVJjZ0R5QVBLQUxRQVNBSklBZEJFSFJCSDNWcUlnTnJOZ0xRQVNBUElBOHBBOGdCSUFPdGlEY0R5QUVnQVNBVlFRSjBhaUFYUVg4Z0EzUkJmM054SUFkQkMzWkJBWEVnQTNSeVFRRnlJZ0ZCQW1vZ0lIUWdGMEVmZEhJMkFnQWdCa0dnZnlBQloyczZBQUFNQVFzZ0dFR0FBVWtOQUNBQklCVkJBblJxUVFBMkFnQUxJQ0pCRUhNaElpQVJJQVZCQkhGcUlSRWdDRUVRYWlFSUlBMGdGVWdOQUFzTEFrQWdERUVDU1EwQUlCTkJBbkZGRFFBZ0dVRUVjU0VEQWtBQ2Z3SkFBa0FnTVFSQUlCUWdKU0FER3lFV1FRQWhHQ0FWUVFCTURRRWdEaUFUUVFKcklCVnNRUUowYWlFUkEwQWdEMEdBQVdvUUtpRUhRUUFoQVNBV0tBSUFJZ2dFUUNBUklCaEJBblJxSVFGQkFDRUpRUThoQmdOQUFrQWdCaUFJY1VVTkFDQUdRWkdpeElnQmNTSU5JQWh4QkVBZ0FTQUJLQUlBSUFkQmYzTkJBWEVnSUhSeklDNXlOZ0lBSUFkQkFYWWhCd3NnRFVFQmRDQUljUVJBSUFFZ0ZVRUNkR29pQlNBRktBSUFJQWRCZjNOQkFYRWdJSFJ6SUM1eU5nSUFJQWRCQVhZaEJ3c2dEVUVDZENBSWNRUkFJQUVnT2tFQ2RHb2lCU0FGS0FJQUlBZEJmM05CQVhFZ0lIUnpJQzV5TmdJQUlBZEJBWFloQndzZ0RVRURkQ0FJY1VVTkFDQUJJRGxCQW5ScUlnMGdEU2dDQUNBSFFYOXpRUUZ4SUNCMGN5QXVjallDQUNBSFFRRjJJUWNMSUFGQkJHb2hBU0FHUVFSMElRWWdDVUVCYWlJSlFRaEhEUUFMSUFocElRRUxJQlpCQkdvaEZpQVBJQThvQXBBQklBRnJOZ0tRQVNBUElBOHBBNGdCSUFHdGlEY0RpQUVnR0VFSWFpSVlJQlZJRFFBTEN5QXBJQ2dnQXhzaEJTQVVJQ1VnQXhzaEZpQURSU0VZSUJWQkFFd05BMEVBSVFNZ1FBMEJJQVVnRmlBN2Fra2dGaUFGSUR0cUlnZEpjUTBCUVFBZ0JTSUJJQllpQmlBK2FrRUlha2tnQmtFRWFpQUhTWEVOQWhvZ0JpQThhaUVHSUFFZ1BHb2hBZjBNQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0ZlUVFBaEJ3TkFJQVVnQjBFQ2RDSURhaUlKSUFNZ0Ztb2lBLzBBQWdBaVgwRUUvYTBCSUY5QkJQMnJBU0JlSUYvOURRd05EZzhRRVJJVEZCVVdGeGdaR2h0QkhQMnRBZjFRL1ZBZ1gvMVFJbDc5Q3dJQUlBa2dYaUFEL1FBQ0JFRWMvYXNCL1ZBaVhrRUIvYTBCL1F4M2QzZDNkM2QzZDNkM2QzZDNkM2QzL1U0Z1hrRUIvYXNCL1F6dTd1N3U3dTd1N3U3dTd1N3U3dTd1L1U3OVVDQmUvVkFnWC8xUC9Rc0NBQ0JmSVY0Z0IwRUVhaUlISUJ4SERRQUxJQndnUDBZTkF5QVNJUU1nWHYwYkF3d0NDeUFEUlNFWUlDa2dLQ0FER3lFRkRBSUxJQVVoQVNBV0lRWkJBQXNoQndOQUlBZEJISFloQ1NBQklBWW9BZ0FpQjBFRWRpQUpJQWRCQkhSeWNpQUhjaUlKTmdJQUlBRWdDU0FHS0FJRVFSeDBjaUlKUVFGMlFmZnUzYnNIY1NBSlFRRjBRZTdkdS9kK2NYSWdDWElnQjBGL2MzRTJBZ0FnQVVFRWFpRUJJQVpCQkdvaEJpQURRUWhxSWdNZ0ZVZ05BQXNMSUJOQkJra05BRUVBSVFsQkFDRVJJQlloQVNBcElDZ2dHQnNpR3lFSElCUWdKU0FZR3lJWElRWUNRQ0FWUVFCTUlnME5BQU5BSUFGQkJHb2hBeUFIS0FJQUlRZ2dBU2dDQUNFQklBY2dPQVIvSUFnRklBRkJCSFFnRVVFY2RuSWdBVUVFZG5JZ0F5Z0NBRUVjZEhJZ0FYSkJBM1JCaUpHaXhIaHhJQWh5Q3lBR0tBSUFRWDl6Y1RZQ0FDQUdRUVJxSVFZZ0IwRUVhaUVISUFFaEVTQURJUUVnQ1VFSWFpSUpJQlZJRFFBTElBME5BQ0FPSUJOQkJtc2dGV3hCQW5ScUlVRkJBQ0VlSUJjaEVRTkFRUUFoQXlBYktBSUFJZ0VFUUNBVklCNXJJVUpCQUNFSFFRQWhDZ05BSUFjaFRTQVBRYUFCYWhBVElRY0NRQ0FLSUFwQkJHb2lCaUJDSUFZZ0htb2dGVWdiSWpOT0lrTUVRRUVBSVFZTUFRc2dFU2dDQUVGL2N5RXFJRUVnQ2lBZWNrRUNkR29oR0VFQUlRWkJEeUFLSWdsQkFuUWlSSFFpRFNFSUEwQUNRQ0FCSUFoeFJRMEFJQWhCa2FMRWlBRnhJaWNnQVhFRVFDQUhRUUZ4QkVBZ0F5QW5jaUVEUVRJZ0NVRUNkSFFnS25FZ0FYSWhBUXNnQjBFQmRpRUhJQVpCQVdvaEJnc2dBU0FuUVFGMElqUnhCRUFnQjBFQmNRUkFJQU1nTkhJaEF5QUJRZlFBSUFsQkFuUjBJQ3B4Y2lFQkN5QUhRUUYySVFjZ0JrRUJhaUVHQ3lBQklDZEJBblFpTkhFRVFDQUhRUUZ4QkVBZ0F5QTBjaUVESUFGQjZBRWdDVUVDZEhRZ0tuRnlJUUVMSUFkQkFYWWhCeUFHUVFGcUlRWUxJQUVnSjBFRGRDSW5jVVVOQUNBSFFRRnhCRUFnQXlBbmNpRURJQUZCd0FFZ0NVRUNkSFFnS25GeUlRRUxJQVpCQVdvaEJpQUhRUUYySVFjTElBaEJCSFFoQ0NBSlFRRnFJZ2tnTTBnTkFBc2dBeUJFZGtILy93TnhSUTBBSUVNTkFBTkFBa0FnQXlBTmNVVU5BQ0FOUVpHaXhJZ0JjU0lKSUFOeEJFQWdHQ0FZS0FJQUlBZEJIM1J5SUMxeU5nSUFJQWRCQVhZaEJ5QUdRUUZxSVFZTElBbEJBWFFnQTNFRVFDQVlJQlZCQW5ScUlnZ2dDQ2dDQUNBSFFSOTBjaUF0Y2pZQ0FDQUhRUUYySVFjZ0JrRUJhaUVHQ3lBSlFRSjBJQU54QkVBZ0dDQTZRUUowYWlJSUlBZ29BZ0FnQjBFZmRISWdMWEkyQWdBZ0IwRUJkaUVISUFaQkFXb2hCZ3NnQ1VFRGRDQURjVVVOQUNBWUlEbEJBblJxSWdrZ0NTZ0NBQ0FIUVI5MGNpQXRjallDQUNBR1FRRnFJUVlnQjBFQmRpRUhDeUFOUVFSMElRMGdHRUVFYWlFWUlBcEJBV29pQ2lBelNBMEFDd3NnRHlBUEtBS3dBU0FHYXpZQ3NBRWdEeUFQS1FPb0FTQUdyWWczQTZnQlFRRWhCMEVFSVFvZ1RVRUJjVVVOQUFzZ0d5QWJLQUlFSUFOQkczWkJEbkVnQTBFZGRuSWdBMEVjZG5JZ0VTZ0NCRUYvYzNGeU5nSUVDeUFSS0FJQUlBTnlJZ05CQTNaQmthTEVpQUZ4SWdGQkJIWWdBVUVFZEhJZ0FYSWhCaUFlQkVBZ0JVRUVheUlISUFjb0FnQWdGa0VFYXlnQ0FFRi9jeUFCUVJ4MGNYSTJBZ0FMSUFVZ0JTZ0NBQ0FHSUJZb0FnQkJmM054Y2pZQ0FDQUZJQVVvQWdRZ0ZpZ0NCRUYvY3lBRFFSOTJjWEkyQWdRZ0cwRUVhaUViSUJGQkJHb2hFU0FGUVFScUlRVWdGa0VFYWlFV0lCNUJDR29pSGlBVlNBMEFDd3NnRjBFQUlEMFFEaG9MSUJrZ0gwZ05BQXNMQWtBZ0RFRUNTUTBBQWtBZ0gwRURjVUVCYXlJV1FRSkpJREZ4QkVBZ0ZVRUFUQTBCUVFFZ0prRUNhM1FoQWlBT0lCOUIvUC8vQjNFZ0ZXeEJBblJxSVJFZ0pTQVVJQjlCQkhFYklRVWdKa0VCYXlFSVFRQWhDaUFWUVF4c0lRd2dGVUVEZENFTEEwQWdEMEdBQVdvUUtpRUhRUUFoQVNBRktBSUFJZ01FUUNBUklBcEJBblJxSVFGQkR5RUdRUUFoQ1FOQUFrQWdBeUFHY1VVTkFDQUdRWkdpeElnQmNTSU5JQU54QkVBZ0FTQUJLQUlBSUFkQmYzTkJBWEVnQ0hSeklBSnlOZ0lBSUFkQkFYWWhCd3NnRFVFQmRDQURjUVJBSUFFZ0ZVRUNkR29pSFNBZEtBSUFJQWRCZjNOQkFYRWdDSFJ6SUFKeU5nSUFJQWRCQVhZaEJ3c2dEVUVDZENBRGNRUkFJQUVnQzJvaUhTQWRLQUlBSUFkQmYzTkJBWEVnQ0hSeklBSnlOZ0lBSUFkQkFYWWhCd3NnRFVFRGRDQURjVVVOQUNBQklBeHFJZzBnRFNnQ0FDQUhRWDl6UVFGeElBaDBjeUFDY2pZQ0FDQUhRUUYySVFjTElBRkJCR29oQVNBR1FRUjBJUVlnQ1VFQmFpSUpRUWhIRFFBTElBTnBJUUVMSUFWQkJHb2hCU0FQSUE4b0FwQUJJQUZyTmdLUUFTQVBJQThwQTRnQklBR3RpRGNEaUFFZ0NrRUlhaUlLSUJWSURRQUxDeUFXUVFGTERRQWdGVUVBVEEwQUlDVWdGQ0FmUVFSeElnRWJJUWtnS0NBcElBRWJJUUpCQUNFREFuOENRQ0FySUNSQmYzTnFJZ0ZCT0VrTkFDQUNJQWtnQVVFQmRrSDgvLy8vQjNFaUJrRUVhaUlIYWtrZ0NTQUNJQWRxSWdkSmNRMEFJQUlnQmlBSmFrRUlha2tnQ1VFRWFpQUhTWEVOQUNBQlFRTjJRUUZxSWcxQi9QLy8vd054SWdoQkEzUWhBeUFKSUFoQkFuUWlBV29oQmlBQklBSnFJUUg5REFBQUFBQUFBQUFBQUFBQUFBQUFBQUFoWGtFQUlRY0RRQ0FDSUFkQkFuUWlGbW9pRVNBSklCWnFJaGI5QUFJQUlsOUJCUDJ0QVNCZlFRVDlxd0VnWGlCZi9RME1EUTRQRUJFU0V4UVZGaGNZR1JvYlFSejlyUUg5VVAxUUlGLzlVQ0plL1FzQ0FDQVJJRjRnRnYwQUFnUkJIUDJyQWYxUUlsNUJBZjJ0QWYwTWQzZDNkM2QzZDNkM2QzZDNkM2QzZC8xT0lGNUJBZjJyQWYwTTd1N3U3dTd1N3U3dTd1N3U3dTd1N3YxTy9WQWdYdjFRSUYvOVQvMExBZ0FnWHlGZUlBZEJCR29pQnlBSVJ3MEFDeUFJSUExR0RRSWdYdjBiQXd3QkN5QUNJUUVnQ1NFR1FRQUxJUWNEUUNBSFFSeDJJUWtnQVNBR0tBSUFJZ2RCQkhZZ0NTQUhRUVIwY25JZ0IzSWlDVFlDQUNBQklBa2dCaWdDQkVFY2RISWlDVUVCZGtIMzd0MjdCM0VnQ1VFQmRFSHUzYnYzZm5GeUlBbHlJQWRCZjNOeE5nSUFJQUZCQkdvaEFTQUdRUVJxSVFZZ0EwRUlhaUlESUJWSURRQUxDeUFmSUI5QkFXcEJBM0ZyUVFOclFRQWdIMEVHU2hzaUVTQWZUZzBBUVFNZ0prRUNhM1FoR1NBcklDUkJmM05xSWdGQkEzWWlBMEVDZENJclFRUnFJUjBnQTBFQmFpSURRZnovLy84RGNTSVNRUUowSVNFZ0VrRURkQ0VXSUJWQkRHd2hMQ0FWUVFOMElTMGdBVUVZU1NFbUlBTWdFa1loR3dOQUFrQUNRQUpBQWtBQ2Z3SkFJQjhnRVdzaUFVRUJheUlEUVFOUEJFQkJmeUVYSUFGQkJVZ05CU0FWUVFCTURRWWdKU0FVSUJGQkJIRWlBUnNoQWlBb0lDa2dBUnNoQ1NBNEJFQkJBQ0VHSUNZTkJDQUNJQWtnSFdwSklBSWdIV29nQ1V0eERRUWdBaUFoYWlFQklBa2dJV29oQndOQUlBa2dCa0VDZENJRGFpSUlJQWo5QUFJQUlBSWdBMnI5QUFJQS9VLzlDd0lBSUFaQkJHb2lCaUFTUncwQUN5QVdJUVlnR3cwR0RBVUxJQlFnSlNBQkd5RU5RUUFoQXlBbURRRWdDU0FOSUIxcVNTQU5JQWtnSFdvaUFVbHhEUUVnQ1NBTklDdHFRUWhxU1NBTlFRUnFJQUZKY1EwQklBa2dBaUFkYWtrZ0FTQUNTM0VOQVNBQ0lDRnFJUWdnQ1NBaGFpRUJJQTBnSVdvaEIvME1BQUFBQUFBQUFBQUFBQUFBQUFBQUFDRmVRUUFoQmdOQUlBa2dCa0VDZENJRGFpSUZJQU1nRFdvaURQMEFBZ0FpWDBFRS9hMEJJRjlCQlAyckFTQmVJRi85RFF3TkRnOFFFUklURkJVV0Z4Z1pHaHRCSFAydEFmMVEvVkFnRFAwQUFnUkJIUDJyQWYxUUlGLzlVRUVEL2FzQi9ReUlpSWlJaUlpSWlJaUlpSWlJaUlpSS9VNGdCZjBBQWdEOVVDQUNJQU5xL1FBQ0FQMVAvUXNDQUNCZklWNGdCa0VFYWlJR0lCSkhEUUFMSUJzTkJTQVdJUU1nWHYwYkF3d0NDeUFEUVFKMFFleWRBV29vQWdBaEZ3d0VDeUFOSVFjZ0NTRUJJQUloQ0VFQUN5RUdBMEFnQmtFY2RpRUpJQUVnQVNnQ0FDQUhLQUlBSWdaQkJIWWdDU0FHUVFSMGNuSWdCeWdDQkVFY2RISWdCbkpCQTNSQmlKR2l4SGh4Y2lBSUtBSUFRWDl6Y1RZQ0FDQUlRUVJxSVFnZ0FVRUVhaUVCSUFkQkJHb2hCeUFEUVFocUlnTWdGVWdOQUFzTUFnc2dDU0VISUFJaEFRc0RRQ0FISUFjb0FnQWdBU2dDQUVGL2MzRTJBZ0FnQVVFRWFpRUJJQWRCQkdvaEJ5QUdRUWhxSWdZZ0ZVZ05BQXNMSUJWQkFFd05BQ0FsSUJRZ0VVRUVjU0lCR3lFS0lDZ2dLU0FCR3lFQ0lCUWdKU0FCR3lFVElDa2dLQ0FCR3lFZUlBNGdFU0FWYkVFQ2RHb2hMa0VBSVFVRFFFRUFJUU1nQWlnQ0FDQVhjU0lCQkVBZ0ZTQUZheUVxUVFBaEIwRUFJUTBEUUNBSElVNGdEMEdnQVdvUUV5RUhBa0FnRFNBTlFRUnFJZ1lnS2lBRklBWnFJQlZJR3lJa1RpSW5CRUJCQUNFR0RBRUxJQmNnQ2lnQ0FFRi9jM0VoR0NBdUlBVWdEWEpCQW5ScUlRdEJBQ0VHUVE4Z0RTSUpRUUowSWh4MElpQWhDQU5BQWtBZ0FTQUljVVVOQUNBSVFaR2l4SWdCY1NJaUlBRnhCRUFnQjBFQmNRUkFJQU1nSW5JaEEwRXlJQWxCQW5SMElCaHhJQUZ5SVFFTElBZEJBWFloQnlBR1FRRnFJUVlMSUFFZ0lrRUJkQ0l4Y1FSQUlBZEJBWEVFUUNBRElERnlJUU1nQVVIMEFDQUpRUUowZENBWWNYSWhBUXNnQjBFQmRpRUhJQVpCQVdvaEJnc2dBU0FpUVFKMElqRnhCRUFnQjBFQmNRUkFJQU1nTVhJaEF5QUJRZWdCSUFsQkFuUjBJQmh4Y2lFQkN5QUhRUUYySVFjZ0JrRUJhaUVHQ3lBQklDSkJBM1FpSW5GRkRRQWdCMEVCY1FSQUlBTWdJbkloQXlBQlFjQUJJQWxCQW5SMElCaHhjaUVCQ3lBR1FRRnFJUVlnQjBFQmRpRUhDeUFJUVFSMElRZ2dDVUVCYWlJSklDUklEUUFMSUFNZ0hIWkIvLzhEY1VVTkFDQW5EUUFEUUFKQUlBTWdJSEZGRFFBZ0lFR1Jvc1NJQVhFaUNTQURjUVJBSUFzZ0N5Z0NBQ0FIUVI5MGNpQVpjallDQUNBSFFRRjJJUWNnQmtFQmFpRUdDeUFKUVFGMElBTnhCRUFnQ3lBVlFRSjBhaUlJSUFnb0FnQWdCMEVmZEhJZ0dYSTJBZ0FnQjBFQmRpRUhJQVpCQVdvaEJnc2dDVUVDZENBRGNRUkFJQXNnTFdvaUNDQUlLQUlBSUFkQkgzUnlJQmx5TmdJQUlBZEJBWFloQnlBR1FRRnFJUVlMSUFsQkEzUWdBM0ZGRFFBZ0N5QXNhaUlKSUFrb0FnQWdCMEVmZEhJZ0dYSTJBZ0FnQmtFQmFpRUdJQWRCQVhZaEJ3c2dJRUVFZENFZ0lBdEJCR29oQ3lBTlFRRnFJZzBnSkVnTkFBc0xJQThnRHlnQ3NBRWdCbXMyQXJBQklBOGdEeWtEcUFFZ0JxMklOd09vQVVFQklRZEJCQ0VOSUU1QkFYRkZEUUFMSUFJZ0FpZ0NCQ0FEUVJ0MlFRNXhJQU5CSFhaeUlBTkJISFp5SUFvb0FnUkJmM054Y2pZQ0JBc2dDaWdDQUNBRGNpSURRUU4yUVpHaXhJZ0JjU0lCUVFSMklBRkJCSFJ5SUFGeUlRWWdCUVJBSUI1QkJHc2lCeUFIS0FJQUlCTkJCR3NvQWdCQmYzTWdBVUVjZEhGeU5nSUFDeUFlSUI0b0FnQWdCaUFUS0FJQVFYOXpjWEkyQWdBZ0hpQWVLQUlFSUJNb0FnUkJmM01nQTBFZmRuRnlOZ0lFSUFKQkJHb2hBaUFLUVFScUlRb2dIa0VFYWlFZUlCTkJCR29oRXlBRlFRaHFJZ1VnRlVnTkFBc0xJQkZCQkdvaUVTQWZTQTBBQ3d0QkFTRUhJQjlCQUV3TkF5QVZRUUJNRFFNZ0ZVSDgvLy8vQjNFaUJrRUNkQ0VDSUJWQkJFa2hDRUVBSVFrRFFDQU9JQWtnRld4QkFuUnFJUU1DUUFKQUlBZ0VRQ0FESVFkQkFDRUJEQUVMSUFJZ0Eyb2hCMEVBSVFFRFFDQURJQUZCQW5ScUlnMGdEZjBBQWdBaVh2ME0vLy8vZi8vLy8zLy8vLzkvLy8vL2YvMU9JbC85b1FFZ1h5QmUvUXdBQUFBQUFBQUFBQUFBQUFBQUFBQUEvVG45VXYwTEFnQWdBVUVFYWlJQklBWkhEUUFMSUFZaUFTQVZSZzBCQ3dOQUlBZEJBQ0FIS0FJQUlnTkIvLy8vL3dkeElnMXJJQTBnQTBFQVNCczJBZ0FnQjBFRWFpRUhJQUZCQVdvaUFTQVZSdzBBQ3d0QkFTRUhJQWxCQVdvaUNTQWZSdzBBQ3d3REN5QWhSUTBBSUE4Z0dpZ0NHRFlDTkNBUElCWTJBakFnSFVFQlFkM0dBQ0FQUVRCcUVBZ01BUXNnRHlBQk5nSVVJQThnRmpZQ0VDQWRRUUZCM2NZQUlBOUJFR29RQ0VFQUlRY01BUXRCQUNFSEN5QVBRYkFDYWlRQUlBY05BUXdEQ3lBRUlBRkJDWFJCNEtrQmFqWUNiQUovSUFRb0FuUWhBUUpBQWtBZ0dpZ0NFQ0FhS0FJSWF5SUZJQm9vQWhRZ0dpZ0NER3NpQ1d3aUF5QUVLQUtFQVVzRVFDQUJFQWtnQkNBRFFRSjBFQllpQVRZQ2RFRUFJQUZGRFFNYUlBUWdBellDaEFFTUFRc2dBVVVOQVFzZ0FVRUFJQU5CQW5RUURob0xJQVFvQW5naEFRSkFJQVZCQW1vaUJpQUpRUU5xUVFKMklneEJBbXBzSWdNZ0JDZ0NpQUZOQkVBZ0EwRUNkQ0VJREFFTElBRVFDU0FFSUFOQkFuUWlDQkFXSWdFMkFuZ2dBUTBBUVFBTUFRc2dCQ0FETmdLSUFTQUJRUUFnQ0JBT0dnSkFJQVpGRFFBZ0JDZ0NlQ0lISVFFQ1FDQUdRUVJQQkVBZ0J5QUdRWHh4SWcxQkFuUnFJUUZCQUNFSUEwQWdCeUFJUVFKMGF2ME1BQUFnU1FBQUlFa0FBQ0JKQUFBZ1NmMExBZ0FnQ0VFRWFpSUlJQTFIRFFBTElBWWdEVVlOQVFzRFFDQUJRWUNBZ01rRU5nSUFJQUZCQkdvaEFTQU5RUUZxSWcwZ0JrY05BQXNMSUFjZ0RFRUJhaUFHYkVFQ2RHb2hBMEVBSVEwQ1FBSkFJQVpCQkVrRVFDQURJUUVNQVFzZ0F5QUdRWHh4SWcxQkFuUnFJUUZCQUNFSUEwQWdBeUFJUVFKMGF2ME1BQUFnU1FBQUlFa0FBQ0JKQUFBZ1NmMExBZ0FnQ0VFRWFpSUlJQTFIRFFBTElBWWdEVVlOQVFzRFFDQUJRWUNBZ01rRU5nSUFJQUZCQkdvaEFTQU5RUUZxSWcwZ0JrY05BQXNMSUFsQkEzRWlBVVVOQUNBR1JRMEFRWUNBZ01nRVFZQ0FnTUFFUVlDQWdJQUVJQUZCQWtZYklBRkJBVVliSVFzZ0J5QUdJQXhzUVFKMGFpRURRUUFoRFFKQUlBWkJCRWtFUUNBRElRRU1BUXNnQXlBR1FYeHhJZzFCQW5ScUlRRWdDLzBSSVY5QkFDRUlBMEFnQXlBSVFRSjBhaUJmL1FzQ0FDQUlRUVJxSWdnZ0RVY05BQXNnQmlBTlJnMEJDd05BSUFFZ0N6WUNBQ0FCUVFScUlRRWdEVUVCYWlJTklBWkhEUUFMQ3lBRUlBazJBb0FCSUFRZ0JUWUNmRUVCQzBVTkFpQWFLQUljSUJGcUlobEJIMDRFUUNBaFJRMENJQ01nR1RZQ0VDQWRRUUpCMXNBQUlDTkJFR29RQ0F3REN5QUVFRk5CQUNFQklBUkJ3S2tCTmdKa0lBUkI0SjRCTmdKZ0lBUkJnSjhCTmdJY0FrQUNRQUpBQWtBZ0dpZ0NOQ0lIUVFGTERRQWdCQ2dDa0FGRkRRSWdCdzBBREFFTElCb29BZ1FoQXlBSFFRUlBCRUFnQjBGOGNTRUNRUUFoQmdOQUlBTWdCa0VEZEdvaUFVRWNhaUFCUVJScUlBRkJER29nQWYwSkFnVDlWZ0lBQWYxV0FnQUMvVllDQUFNZ1h2MnVBU0ZlSUFaQkJHb2lCaUFDUncwQUN5QmVJRjRnWHYwTkNBa0tDd3dORGc4QUFRSURBQUVDQS8ydUFTSmVJRjRnWHYwTkJBVUdCd0FCQWdNQUFRSURBQUVDQS8ydUFmMGJBQ0VCSUFJZ0IwWU5BUXNEUUNBRElBSkJBM1JxS0FJRUlBRnFJUUVnQWtFQmFpSUNJQWRIRFFBTEN5QUJRUUpxSWdNZ0JDZ0NtQUZMQkVBZ0JDZ0NsQUVnQXhBUUlnWkZEUVVnQkNBR05nS1VBU0FCSUFacVFRQTdBQUFnQkNBRE5nS1lBU0FhS0FJMElRY0xJQVFvQXBRQklSNGdCMFVOQVNBYUtBSUVJUVpCQUNFQ1FRQWhBUU5BSUFJZ0htb2dCaUFCUVFOMElnTnFJZ1lvQWdBZ0JpZ0NCQkFMR2lBYUtBSUVJZ1lnQTJvb0FnUWdBbW9oQWlBQlFRRnFJZ0VnR2lnQ05Fa05BQXNNQVFzZ0IwRUJSdzBCSUJvb0FnUW9BZ0FoSGdzZ0dpZ0NQQ0lCQkVBZ0JDZ0NkQ0VzSUFRZ0FUWUNkQXNnR2lnQ0xBUkFJQlpCQ0hFaEpTQUVRUnhxSVE4Z0ZrRUJjU0V0SUJaQkFuRkZJUzVCQWlFZkEwQWdIaUFvYWlFQklCb29BZ0FnS1VFWWJHb2lJQ2dDQUNFREFrQWdMU0FmUVFKSklCa2dHaWdDSEVFRWEweHhjU0lpQkVBZ0JDQUJOZ0lVSUFRZ0FTQURhaUlETmdJWUlBUWdBeThBQURzQmNDQURRZjhCT2dBQUlBUW9BaGhCL3dFNkFBRWdCRUVBTmdJSUlBUkJBRFlDQUNBRUlBRTJBaEFNQVFzZ0JDQUJOZ0lVSUFRZ0FTQURhaUlHTmdJWUlBUWdCaThBQURzQmNDQUdRZjhCT2dBQUlBUW9BaGhCL3dFNkFBRWdCQ0FFUVJ4cU5nSm9JQVFnQVRZQ0VDQUVRUUEyQWd3Z0JDQURCSDhnQVMwQUFFRVFkQVZCZ0lEOEJ3c2lBellDQUVFQklRWWdBVUVCYWlFSklBRXRBQUVoQndKL0lBRXRBQUJCL3dGR0JFQWdCMEdRQVU4RVFDQUVRUUUyQWd3Z0EwR0EvZ055REFJTElBUWdDVFlDRUVFQUlRWWdCMEVKZENBRGFnd0JDeUFFSUFrMkFoQWdCMEVJZENBRGNnc2hBU0FFSUFZMkFnZ2dCRUdBZ0FJMkFnUWdCQ0FCUVFkME5nSUFDeUFnS0FJQUlTb0NRQ0FaUVFCTURRQWdJQ2dDQ0VVTkFDQWlJQzV5SVNkQkFDRW1BMEFDUUFKQUFrQUNRQUpBSUI5QkFXc09BZ0VDQUFzZ0lnUkFRUUVnR1hRaUFVRUJkaUFCY2lFUklBUW9BbndpQlVFQ2RDSU5JQVFvQW5ocVFReHFJUUVnQkNnQ2RDRUdRUUFoQ0NBRUtBS0FBU0lEUVFSUEJFQWdCVVVOQlNBRlFRTnNJUUlnQlVFQmRDRU1RUUFnRVdzaENRTkFJQXhCQW5RaEMwRUFJUU1EUUFKQUlBRWlCeWdDQUNJQlJRMEFBa0FnQVVHUWdJQUJjUTBBSUFGQjd3TnhSUTBBSUFRb0FnQWhBUUpBSUFRb0FnZ2lFQTBBSUFGQi93RkdJUW9nQkNnQ0VDSVFMUUFBSVFFQ1FDQUtSUVJBSUFRZ0FUWUNBQ0FFSUJCQkFXbzJBaEFNQVFzZ0FVR1BBVTBFUUNBRUlBRTJBZ0FnQkNBUVFRRnFOZ0lRUVFjaEVBd0NDMEgvQVNFQklBUkIvd0UyQWdBTFFRZ2hFQXNnQkNBUVFRRnJJaEEyQWdnQ1FDQUJJQkIyUVFGeFJRMEFBa0FnRUEwQUlBRkIvd0ZHSVFvZ0JDZ0NFQ0lRTFFBQUlRRUNRQ0FLUlFSQUlBUWdBVFlDQUNBRUlCQkJBV28yQWhBTUFRc2dBVUdQQVUwRVFDQUVJQUUyQWdBZ0JDQVFRUUZxTmdJUVFRY2hFQXdDQzBIL0FTRUJJQVJCL3dFMkFnQUxRUWdoRUFzZ0JDQVFRUUZySWhBMkFnZ2dCaUFKSUJFZ0FTQVFka0VCY1NJUUd6WUNBQ0FFS0FKOElRRWdCMEVFYXlJS0lBb29BZ0JCSUhJMkFnQWdCeUFIS0FJRVFRaHlOZ0lFSUFjZ0J5Z0NBQ0FRUVJOMGNrRVFjallDQUNBbERRQWdCMEYrSUFGclFRSjBhaUlCSUFFb0FnUkJnSUFDY2pZQ0JDQUJJQUVvQWdBZ0VFRWZkSEpCZ0lBRWNqWUNBQ0FCUVFScklnRWdBU2dDQUVHQWdBaHlOZ0lBQ3lBSElBY29BZ0JCZ0lDQUFYSWlBVFlDQUFzQ1FDQUJRWUNCZ0FoeERRQWdBVUg0SG5GRkRRQWdCQ2dDQUNFQkFrQWdCQ2dDQ0NJUURRQWdBVUgvQVVZaENpQUVLQUlRSWhBdEFBQWhBUUpBSUFwRkJFQWdCQ0FCTmdJQUlBUWdFRUVCYWpZQ0VBd0JDeUFCUVk4QlRRUkFJQVFnQVRZQ0FDQUVJQkJCQVdvMkFoQkJCeUVRREFJTFFmOEJJUUVnQkVIL0FUWUNBQXRCQ0NFUUN5QUVJQkJCQVdzaUVEWUNDQ0FIQW44Z0FTQVFka0VCY1VVRVFDQUhLQUlBREFFTEFrQWdFQTBBSUFGQi93RkdJUW9nQkNnQ0VDSVFMUUFBSVFFQ1FDQUtSUVJBSUFRZ0FUWUNBQ0FFSUJCQkFXbzJBaEFNQVFzZ0FVR1BBVTBFUUNBRUlBRTJBZ0FnQkNBUVFRRnFOZ0lRUVFjaEVBd0NDMEgvQVNFQklBUkIvd0UyQWdBTFFRZ2hFQXNnQkNBUVFRRnJJaEEyQWdnZ0JpQU5haUFKSUJFZ0FTQVFka0VCY1NJQkd6WUNBQ0FIUVFSckloQWdFQ2dDQUVHQUFuSTJBZ0FnQnlBSEtBSUVRY0FBY2pZQ0JDQUhLQUlBSUFGQkZuUnlRWUFCY2d0QmdJQ0FDSElpQVRZQ0FBc0NRQ0FCUVlDSWdNQUFjUTBBSUFGQndQY0JjVVVOQUNBRUtBSUFJUUVDUUNBRUtBSUlJaEFOQUNBQlFmOEJSaUVLSUFRb0FoQWlFQzBBQUNFQkFrQWdDa1VFUUNBRUlBRTJBZ0FnQkNBUVFRRnFOZ0lRREFFTElBRkJqd0ZOQkVBZ0JDQUJOZ0lBSUFRZ0VFRUJhallDRUVFSElSQU1BZ3RCL3dFaEFTQUVRZjhCTmdJQUMwRUlJUkFMSUFRZ0VFRUJheUlRTmdJSUlBY0NmeUFCSUJCMlFRRnhSUVJBSUFjb0FnQU1BUXNDUUNBUURRQWdBVUgvQVVZaENpQUVLQUlRSWhBdEFBQWhBUUpBSUFwRkJFQWdCQ0FCTmdJQUlBUWdFRUVCYWpZQ0VBd0JDeUFCUVk4QlRRUkFJQVFnQVRZQ0FDQUVJQkJCQVdvMkFoQkJCeUVRREFJTFFmOEJJUUVnQkVIL0FUWUNBQXRCQ0NFUUN5QUVJQkJCQVdzaUVEWUNDQ0FHSUF0cUlBa2dFU0FCSUJCMlFRRnhJZ0ViTmdJQUlBZEJCR3NpRUNBUUtBSUFRWUFRY2pZQ0FDQUhJQWNvQWdSQmdBUnlOZ0lFSUFjb0FnQWdBVUVaZEhKQmdBaHlDMEdBZ0lEQUFISWlBVFlDQUFzZ0FVR0F3SUNBQkhFTkFDQUJRWUM4RDNGRkRRQWdCQ2dDQUNFQkFrQWdCQ2dDQ0NJUURRQWdBVUgvQVVZaENpQUVLQUlRSWhBdEFBQWhBUUpBSUFwRkJFQWdCQ0FCTmdJQUlBUWdFRUVCYWpZQ0VBd0JDeUFCUVk4QlRRUkFJQVFnQVRZQ0FDQUVJQkJCQVdvMkFoQkJCeUVRREFJTFFmOEJJUUVnQkVIL0FUWUNBQXRCQ0NFUUN5QUVJQkJCQVdzaUVEWUNDQ0FCSUJCMlFRRnhCRUFnQmlBQ1FRSjBhaUZQQWtBZ0VBMEFJQUZCL3dGR0lSUWdCQ2dDRUNJUUxRQUFJUUVDUUNBVVJRUkFJQVFnQVRZQ0FDQUVJQkJCQVdvMkFoQU1BUXNnQVVHUEFVMEVRQ0FFSUFFMkFnQWdCQ0FRUVFGcU5nSVFRUWNoRUF3Q0MwSC9BU0VCSUFSQi93RTJBZ0FMUVFnaEVBc2dCQ0FRUVFGckloQTJBZ2dnVHlBSklCRWdBU0FRZGtFQmNTSVFHellDQUNBRUtBSjhJUUVnQjBFRWF5SUtJQW9vQWdCQmdJQUJjallDQUNBSElBY29BZ1JCZ0NCeU5nSUVJQWNnQnlnQ0FDQVFRUngwY2tHQXdBQnlOZ0lBSUFjZ0FVRUNkR29pQVNBQktBSUVRUVJ5TmdJRUlBRWdBU2dDREVFQmNqWUNEQ0FCSUFFb0FnZ2dFRUVTZEhKQkFuSTJBZ2dMSUFjZ0J5Z0NBRUdBZ0lDQUJISTJBZ0FMSUFaQkJHb2hCaUFIUVFScUlRRWdBMEVCYWlJRElBVkhEUUFMSUFkQkRHb2hBU0FHSUFKQkFuUnFJUVlnQ0VFRWFpSUlJQVFvQW9BQklnTkJmSEZKRFFBTEN5QURJQWhORFFNZ0JVVU5BMEVBSVJOQkFDQVJheUVMSUFNaEVBTkFBa0FnQ0NBUVJnUkFJQWdoRUF3QkN5QUJRUVJySVF3Z0FTZ0NBQ0VOUVFBaEFnTkFBa0FnRFNBQ1FRTnNJZ2QySWdsQmtJQ0FBWEVOQUNBSlFlOERjVVVOQUNBRUtBSUFJUU1DUUNBRUtBSUlJZ2tOQUNBRFFmOEJSeUVRSUFRb0FoQWlDUzBBQUNFREFrQWdFRVVFUUNBRFFaQUJUd1JBUWY4QklRTWdCRUgvQVRZQ0FBd0NDeUFFSUFNMkFnQWdCQ0FKUVFGcU5nSVFRUWNoQ1F3Q0N5QUVJQU0yQWdBZ0JDQUpRUUZxTmdJUUMwRUlJUWtMSUFRZ0NVRUJheUlKTmdJSUFrQWdBeUFKZGtFQmNVVU5BQ0FHSUFJZ0JXeEJBblJxSVZBQ1FDQUpEUUFnQTBIL0FVY2hEU0FFS0FJUUlna3RBQUFoQXdKQUlBMUZCRUFnQTBHUUFVOEVRRUgvQVNFRElBUkIvd0UyQWdBTUFnc2dCQ0FETmdJQUlBUWdDVUVCYWpZQ0VFRUhJUWtNQWdzZ0JDQUROZ0lBSUFRZ0NVRUJhallDRUF0QkNDRUpDeUFFSUFsQkFXc2lDVFlDQ0NCUUlBc2dFU0FESUFsMlFRRnhJZ2tiTmdJQUlBUW9BbndoRUNBTUlBd29BZ0JCSUNBSGRISTJBZ0FnQVNBQktBSUFJQWxCRTNSQkVISWdCM1J5TmdJQUlBRWdBU2dDQkVFSUlBZDBjallDQkNBQ0lDVnlSUVJBSUFGQmZpQVFhMEVDZEdvaUF5QURLQUlFUVlDQUFuSTJBZ1FnQXlBREtBSUFJQWxCSDNSeVFZQ0FCSEkyQWdBZ0EwRUVheUlESUFNb0FnQkJnSUFJY2pZQ0FBc2dBa0VEUncwQUlBRWdFRUVDZEdvaUF5QURLQUlFUVFSeU5nSUVJQU1nQXlnQ0RFRUJjallDRENBRElBTW9BZ2dnQ1VFU2RISkJBbkkyQWdnTElBRWdBU2dDQUVHQWdJQUJJQWQwY2lJTk5nSUFJQVFvQW9BQklRTUxJQU1oRUNBQ1FRRnFJZ0lnQXlBSWEwa05BQXNMSUFaQkJHb2hCaUFCUVFScUlRRWdFMEVCYWlJVElBVkhEUUFMREFNTFFRQWhCMEVBSVExQkFDRVhBa0FDUUFKQUFrQWdCQ2dDZkNJUVFjQUFSdzBBSUFRb0FvQUJRY0FBUncwQVFRQkJBU0FaZENJQlFRRjJJQUZ5SWhGcklRVWdCRUVjYWlFUUlBUW9BbmhCakFKcUlRWWdCQ2dDQ0NFSUlBUW9BZ1FoQXlBRUtBSUFJUUlnQkNnQ2FDRU1JQVFvQW5RaEFTQVdRUWh4RFFFRFFFRUFJUmNEUUNBQklRa2dCaUlIS0FJQUlnWUVRQUpBSUFaQmtJQ0FBWEVOQUNBR1FlOERjU0lCUlEwQUlBTWdFQ0FFS0FKc0lBRnFMUUFBUVFKMGFpSU1LQUlBSWdzb0FnQWlBV3NoQXdKL0lBRWdBa0VRZGtzRVFDQUxLQUlFSVFvZ0RDQUxRUWhCRENBQklBTkxJaFFiYWlnQ0FEWUNBQU5BQWtBZ0NBMEFJQVFvQWhBaUNFRUJhaUVMSUFndEFBRWhBeUFJTFFBQVFmOEJSZ1JBSUFOQmtBRlBCRUFnQkNBRUtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hDQXdDQ3lBRUlBczJBaEFnQTBFSmRDQUNhaUVDUVFjaENBd0JDeUFFSUFzMkFoQkJDQ0VJSUFOQkNIUWdBbW9oQWdzZ0NFRUJheUVJSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QUJJUU1nQ2lBS1JTQVVHd3dCQ3lBQ0lBRkJFSFJySVFJZ0EwR0FnQUp4UlFSQUlBc29BZ1FoQ2lBTUlBdEJERUVJSUFFZ0Ewc2lGQnRxS0FJQU5nSUFBMEFDUUNBSURRQWdCQ2dDRUNJSVFRRnFJUXNnQ0MwQUFTRUJJQWd0QUFCQi93RkdCRUFnQVVHUUFVOEVRQ0FFSUFRb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUlEQUlMSUFRZ0N6WUNFQ0FCUVFsMElBSnFJUUpCQnlFSURBRUxJQVFnQ3pZQ0VFRUlJUWdnQVVFSWRDQUNhaUVDQ3lBSVFRRnJJUWdnQWtFQmRDRUNJQU5CQVhRaUEwR0FnQUpKRFFBTElBcEZJQW9nRkJzTUFRc2dDeWdDQkFzRWZ5QURJQkFnQnlnQ0JFRVJka0VFY1NBSFFRUnJJZ29vQWdCQkUzWkJBWEVnQmtFT2RrRVFjU0FHUVJCMlFjQUFjU0FHUWFvQmNYSnljbklpRkVIZ3VRRnFMUUFBUVFKMGFpSU1LQUlBSWdzb0FnQWlBV3NoQXlBVVFlQzdBV290QUFBaEV5QUpJQVVnRVFKL0lBRWdBa0VRZGtzRVFDQUxLQUlFSVJRZ0RDQUxRUWhCRENBQklBTkxJZzRiYWlnQ0FEWUNBQU5BQWtBZ0NBMEFJQVFvQWhBaUNFRUJhaUVMSUFndEFBRWhBeUFJTFFBQVFmOEJSZ1JBSUFOQmtBRlBCRUFnQkNBRUtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hDQXdDQ3lBRUlBczJBaEFnQTBFSmRDQUNhaUVDUVFjaENBd0JDeUFFSUFzMkFoQkJDQ0VJSUFOQkNIUWdBbW9oQWdzZ0NFRUJheUVJSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QUJJUU1nRkNBVVJTQU9Hd3dCQ3lBQ0lBRkJFSFJySVFJZ0EwR0FnQUp4UlFSQUlBc29BZ1FoRkNBTUlBdEJERUVJSUFFZ0Ewc2lEaHRxS0FJQU5nSUFBMEFDUUNBSURRQWdCQ2dDRUNJSVFRRnFJUXNnQ0MwQUFTRUJJQWd0QUFCQi93RkdCRUFnQVVHUUFVOEVRQ0FFSUFRb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUlEQUlMSUFRZ0N6WUNFQ0FCUVFsMElBSnFJUUpCQnlFSURBRUxJQVFnQ3pZQ0VFRUlJUWdnQVVFSWRDQUNhaUVDQ3lBSVFRRnJJUWdnQWtFQmRDRUNJQU5CQVhRaUEwR0FnQUpKRFFBTElCUkZJQlFnRGhzTUFRc2dDeWdDQkFzZ0UzTWlBUnMyQWdBZ0NpQUtLQUlBUVNCeU5nSUFJQWNnQnlnQ0JFRUljallDQkNBSFFZd0NheUlMSUFzb0FnQkJnSUFJY2pZQ0FDQUhRWVFDYXlJTElBc29BZ0JCZ0lBQ2NqWUNBQ0FIUVlnQ2F5SUxJQXNvQWdBZ0FVRWZkSEpCZ0lBRWNqWUNBQ0FHSUFGQkUzUnlRUkJ5QlNBR0MwR0FnSUFCY2lFR0N3SkFJQVpCZ0lHQUNIRU5BQ0FHUWZnZWNVVU5BQ0FESUJBZ0JDZ0NiQ0FHUVFOMkloUkI3d054YWkwQUFFRUNkR29pRENnQ0FDSUxLQUlBSWdGcklRTUNmeUFCSUFKQkVIWkxCRUFnQ3lnQ0JDRUtJQXdnQzBFSVFRd2dBU0FEU3lJVEcyb29BZ0EyQWdBRFFBSkFJQWdOQUNBRUtBSVFJZ2hCQVdvaEN5QUlMUUFCSVFNZ0NDMEFBRUgvQVVZRVFDQURRWkFCVHdSQUlBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFnTUFnc2dCQ0FMTmdJUUlBTkJDWFFnQW1vaEFrRUhJUWdNQVFzZ0JDQUxOZ0lRUVFnaENDQURRUWgwSUFKcUlRSUxJQWhCQVdzaENDQUNRUUYwSVFJZ0FVRUJkQ0lCUVlDQUFra05BQXNnQVNFRElBb2dDa1VnRXhzTUFRc2dBaUFCUVJCMGF5RUNJQU5CZ0lBQ2NVVUVRQ0FMS0FJRUlRb2dEQ0FMUVF4QkNDQUJJQU5MSWhNYmFpZ0NBRFlDQUFOQUFrQWdDQTBBSUFRb0FoQWlDRUVCYWlFTElBZ3RBQUVoQVNBSUxRQUFRZjhCUmdSQUlBRkJrQUZQQkVBZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQ0F3Q0N5QUVJQXMyQWhBZ0FVRUpkQ0FDYWlFQ1FRY2hDQXdCQ3lBRUlBczJBaEJCQ0NFSUlBRkJDSFFnQW1vaEFnc2dDRUVCYXlFSUlBSkJBWFFoQWlBRFFRRjBJZ05CZ0lBQ1NRMEFDeUFLUlNBS0lCTWJEQUVMSUFzb0FnUUxCSDhnQXlBUUlBY29BZ1JCRkhaQkJIRWdCMEVFYXlJS0tBSUFRUloyUVFGeElBWkJEM1pCRUhFZ0JrRVRka0hBQUhFZ0ZFR3FBWEZ5Y25KeUloUkI0TGtCYWkwQUFFRUNkR29pRENnQ0FDSUxLQUlBSWdGcklRTWdGRUhndXdGcUxRQUFJUk1nQ1NBRklCRUNmeUFCSUFKQkVIWkxCRUFnQ3lnQ0JDRVVJQXdnQzBFSVFRd2dBU0FEU3lJT0cyb29BZ0EyQWdBRFFBSkFJQWdOQUNBRUtBSVFJZ2hCQVdvaEN5QUlMUUFCSVFNZ0NDMEFBRUgvQVVZRVFDQURRWkFCVHdSQUlBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFnTUFnc2dCQ0FMTmdJUUlBTkJDWFFnQW1vaEFrRUhJUWdNQVFzZ0JDQUxOZ0lRUVFnaENDQURRUWgwSUFKcUlRSUxJQWhCQVdzaENDQUNRUUYwSVFJZ0FVRUJkQ0lCUVlDQUFra05BQXNnQVNFRElCUWdGRVVnRGhzTUFRc2dBaUFCUVJCMGF5RUNJQU5CZ0lBQ2NVVUVRQ0FMS0FJRUlSUWdEQ0FMUVF4QkNDQUJJQU5MSWc0YmFpZ0NBRFlDQUFOQUFrQWdDQTBBSUFRb0FoQWlDRUVCYWlFTElBZ3RBQUVoQVNBSUxRQUFRZjhCUmdSQUlBRkJrQUZQQkVBZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQ0F3Q0N5QUVJQXMyQWhBZ0FVRUpkQ0FDYWlFQ1FRY2hDQXdCQ3lBRUlBczJBaEJCQ0NFSUlBRkJDSFFnQW1vaEFnc2dDRUVCYXlFSUlBSkJBWFFoQWlBRFFRRjBJZ05CZ0lBQ1NRMEFDeUFVUlNBVUlBNGJEQUVMSUFzb0FnUUxJQk56SWdFYk5nS0FBaUFLSUFvb0FnQkJnQUp5TmdJQUlBY2dCeWdDQkVIQUFISTJBZ1FnQmlBQlFSWjBja0dBQVhJRklBWUxRWUNBZ0FoeUlRWUxBa0FnQmtHQWlJREFBSEVOQUNBR1FjRDNBWEZGRFFBZ0F5QVFJQVFvQW13Z0JrRUdkaUlVUWU4RGNXb3RBQUJCQW5ScUlnd29BZ0FpQ3lnQ0FDSUJheUVEQW44Z0FTQUNRUkIyU3dSQUlBc29BZ1FoQ2lBTUlBdEJDRUVNSUFFZ0Ewc2lFeHRxS0FJQU5nSUFBMEFDUUNBSURRQWdCQ2dDRUNJSVFRRnFJUXNnQ0MwQUFTRURJQWd0QUFCQi93RkdCRUFnQTBHUUFVOEVRQ0FFSUFRb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUlEQUlMSUFRZ0N6WUNFQ0FEUVFsMElBSnFJUUpCQnlFSURBRUxJQVFnQ3pZQ0VFRUlJUWdnQTBFSWRDQUNhaUVDQ3lBSVFRRnJJUWdnQWtFQmRDRUNJQUZCQVhRaUFVR0FnQUpKRFFBTElBRWhBeUFLSUFwRklCTWJEQUVMSUFJZ0FVRVFkR3NoQWlBRFFZQ0FBbkZGQkVBZ0N5Z0NCQ0VLSUF3Z0MwRU1RUWdnQVNBRFN5SVRHMm9vQWdBMkFnQURRQUpBSUFnTkFDQUVLQUlRSWdoQkFXb2hDeUFJTFFBQklRRWdDQzBBQUVIL0FVWUVRQ0FCUVpBQlR3UkFJQVFnQkNnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRZ01BZ3NnQkNBTE5nSVFJQUZCQ1hRZ0Ftb2hBa0VISVFnTUFRc2dCQ0FMTmdJUVFRZ2hDQ0FCUVFoMElBSnFJUUlMSUFoQkFXc2hDQ0FDUVFGMElRSWdBMEVCZENJRFFZQ0FBa2tOQUFzZ0NrVWdDaUFUR3d3QkN5QUxLQUlFQ3dSL0lBTWdFQ0FIS0FJRVFSZDJRUVJ4SUFkQkJHc2lDaWdDQUVFWmRrRUJjU0FHUVJKMlFSQnhJQVpCRm5aQndBQnhJQlJCcWdGeGNuSnljaUlVUWVDNUFXb3RBQUJCQW5ScUlnd29BZ0FpQ3lnQ0FDSUJheUVESUJSQjRMc0JhaTBBQUNFVElBa2dCU0FSQW44Z0FTQUNRUkIyU3dSQUlBc29BZ1FoRkNBTUlBdEJDRUVNSUFFZ0Ewc2lEaHRxS0FJQU5nSUFBMEFDUUNBSURRQWdCQ2dDRUNJSVFRRnFJUXNnQ0MwQUFTRURJQWd0QUFCQi93RkdCRUFnQTBHUUFVOEVRQ0FFSUFRb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUlEQUlMSUFRZ0N6WUNFQ0FEUVFsMElBSnFJUUpCQnlFSURBRUxJQVFnQ3pZQ0VFRUlJUWdnQTBFSWRDQUNhaUVDQ3lBSVFRRnJJUWdnQWtFQmRDRUNJQUZCQVhRaUFVR0FnQUpKRFFBTElBRWhBeUFVSUJSRklBNGJEQUVMSUFJZ0FVRVFkR3NoQWlBRFFZQ0FBbkZGQkVBZ0N5Z0NCQ0VVSUF3Z0MwRU1RUWdnQVNBRFN5SU9HMm9vQWdBMkFnQURRQUpBSUFnTkFDQUVLQUlRSWdoQkFXb2hDeUFJTFFBQklRRWdDQzBBQUVIL0FVWUVRQ0FCUVpBQlR3UkFJQVFnQkNnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRZ01BZ3NnQkNBTE5nSVFJQUZCQ1hRZ0Ftb2hBa0VISVFnTUFRc2dCQ0FMTmdJUVFRZ2hDQ0FCUVFoMElBSnFJUUlMSUFoQkFXc2hDQ0FDUVFGMElRSWdBMEVCZENJRFFZQ0FBa2tOQUFzZ0ZFVWdGQ0FPR3d3QkN5QUxLQUlFQ3lBVGN5SUJHellDZ0FRZ0NpQUtLQUlBUVlBUWNqWUNBQ0FISUFjb0FnUkJnQVJ5TmdJRUlBWWdBVUVaZEhKQmdBaHlCU0FHQzBHQWdJREFBSEloQmdzQ1FDQUdRWURBZ0lBRWNRMEFJQVpCZ0x3UGNVVU5BQ0FESUJBZ0JDZ0NiQ0FHUVFsMkloUkI3d054YWkwQUFFRUNkR29pRENnQ0FDSUxLQUlBSWdGcklRTUNmeUFCSUFKQkVIWkxCRUFnQ3lnQ0JDRUtJQXdnQzBFSVFRd2dBU0FEU3lJVEcyb29BZ0EyQWdBRFFBSkFJQWdOQUNBRUtBSVFJZ2hCQVdvaEN5QUlMUUFCSVFNZ0NDMEFBRUgvQVVZRVFDQURRWkFCVHdSQUlBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFnTUFnc2dCQ0FMTmdJUUlBTkJDWFFnQW1vaEFrRUhJUWdNQVFzZ0JDQUxOZ0lRUVFnaENDQURRUWgwSUFKcUlRSUxJQWhCQVdzaENDQUNRUUYwSVFJZ0FVRUJkQ0lCUVlDQUFra05BQXNnQVNFRElBb2dDa1VnRXhzTUFRc2dBaUFCUVJCMGF5RUNJQU5CZ0lBQ2NVVUVRQ0FMS0FJRUlRb2dEQ0FMUVF4QkNDQUJJQU5MSWhNYmFpZ0NBRFlDQUFOQUFrQWdDQTBBSUFRb0FoQWlDRUVCYWlFTElBZ3RBQUVoQVNBSUxRQUFRZjhCUmdSQUlBRkJrQUZQQkVBZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQ0F3Q0N5QUVJQXMyQWhBZ0FVRUpkQ0FDYWlFQ1FRY2hDQXdCQ3lBRUlBczJBaEJCQ0NFSUlBRkJDSFFnQW1vaEFnc2dDRUVCYXlFSUlBSkJBWFFoQWlBRFFRRjBJZ05CZ0lBQ1NRMEFDeUFLUlNBS0lCTWJEQUVMSUFzb0FnUUxCSDhnQXlBUUlBY29BZ1JCR25aQkJIRWdCMEVFYXlJS0tBSUFRUngyUVFGeElBWkJGWFpCRUhFZ0JrRVpka0hBQUhFZ0ZFR3FBWEZ5Y25KeUloUkI0TGtCYWkwQUFFRUNkR29pRENnQ0FDSUxLQUlBSWdGcklRTWdGRUhndXdGcUxRQUFJUk1nQ1NBRklCRUNmeUFCSUFKQkVIWkxCRUFnQ3lnQ0JDRVVJQXdnQzBFSVFRd2dBU0FEU3lJT0cyb29BZ0EyQWdBRFFBSkFJQWdOQUNBRUtBSVFJZ2hCQVdvaEN5QUlMUUFCSVFNZ0NDMEFBRUgvQVVZRVFDQURRWkFCVHdSQUlBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFnTUFnc2dCQ0FMTmdJUUlBTkJDWFFnQW1vaEFrRUhJUWdNQVFzZ0JDQUxOZ0lRUVFnaENDQURRUWgwSUFKcUlRSUxJQWhCQVdzaENDQUNRUUYwSVFJZ0FVRUJkQ0lCUVlDQUFra05BQXNnQVNFRElCUWdGRVVnRGhzTUFRc2dBaUFCUVJCMGF5RUNJQU5CZ0lBQ2NVVUVRQ0FMS0FJRUlSUWdEQ0FMUVF4QkNDQUJJQU5MSWc0YmFpZ0NBRFlDQUFOQUFrQWdDQTBBSUFRb0FoQWlDRUVCYWlFTElBZ3RBQUVoQVNBSUxRQUFRZjhCUmdSQUlBRkJrQUZQQkVBZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQ0F3Q0N5QUVJQXMyQWhBZ0FVRUpkQ0FDYWlFQ1FRY2hDQXdCQ3lBRUlBczJBaEJCQ0NFSUlBRkJDSFFnQW1vaEFnc2dDRUVCYXlFSUlBSkJBWFFoQWlBRFFRRjBJZ05CZ0lBQ1NRMEFDeUFVUlNBVUlBNGJEQUVMSUFzb0FnUUxJQk56SWdFYk5nS0FCaUFLSUFvb0FnQkJnSUFCY2pZQ0FDQUhJQWNvQWdSQmdDQnlOZ0lFSUFjZ0J5Z0NoQUpCQkhJMkFvUUNJQWNnQnlnQ2pBSkJBWEkyQW93Q0lBY2dCeWdDaUFJZ0FVRVNkSEpCQW5JMkFvZ0NJQVlnQVVFY2RISkJnTUFBY2dVZ0JndEJnSUNBZ0FSeUlRWUxJQWNnQmpZQ0FBc2dCMEVFYWlFR0lBbEJCR29oQVNBWFFRRnFJaGRCd0FCSERRQUxJQWRCREdvaEJpQUpRWVFHYWlFQklBMUJQRWtoVVNBTlFRUnFJUTBnVVEwQUN3d0NDMEVCSUJsMElnRkJBWFlnQVhJaERTQUVLQUo0SWdrZ0VFRUNkR3BCREdvaEJpQUVLQUtBQVNFQklBUW9BZ2doQ0NBRUtBSUVJUU1nQkNnQ0FDRUNJQVFvQW1naERDQUVLQUowSVJFQ1FDQVdRUWh4QkVBQ1FDQUJRUVJKRFFBZ0VBUkFRUUFnRFdzaEZDQUVRUnhxSVFVZ0VFRU1iQ0VUSUJCQkEzUWhGUU5BUVFBaEN3TkFJQVlpQ1NnQ0FDSUdCRUFDUUNBR1FaQ0FnQUZ4RFFBZ0JrSHZBM0VpQVVVTkFDQURJQVVnQkNnQ2JDQUJhaTBBQUVFQ2RHb2lEQ2dDQUNJS0tBSUFJZ0ZySVFNQ2Z5QUJJQUpCRUhaTkJFQWdBaUFCUVJCMGF5RUNJQU5CZ0lBQ2NRUkFJQW9vQWdRTUFnc2dDaWdDQkNFT0lBd2dDa0VNUVFnZ0FTQURTeUlTRzJvb0FnQTJBZ0FEUUFKQUlBZ05BQ0FFS0FJUUlnaEJBV29oQ2lBSUxRQUJJUUVnQ0MwQUFFSC9BVWNFUUNBRUlBbzJBaEJCQ0NFSUlBRkJDSFFnQW1vaEFnd0JDeUFCUVk4QlRRUkFJQVFnQ2pZQ0VDQUJRUWwwSUFKcUlRSkJCeUVJREFFTElBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFnTElBaEJBV3NoQ0NBQ1FRRjBJUUlnQTBFQmRDSURRWUNBQWtrTkFBc2dEa1VnRGlBU0d3d0JDeUFLS0FJRUlRNGdEQ0FLUVFoQkRDQUJJQU5MSWhJYmFpZ0NBRFlDQUFOQUFrQWdDQTBBSUFRb0FoQWlDRUVCYWlFS0lBZ3RBQUVoQXlBSUxRQUFRZjhCUndSQUlBUWdDallDRUVFSUlRZ2dBMEVJZENBQ2FpRUNEQUVMSUFOQmp3Rk5CRUFnQkNBS05nSVFJQU5CQ1hRZ0Ftb2hBa0VISVFnTUFRc2dCQ0FFS0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaENBc2dDRUVCYXlFSUlBSkJBWFFoQWlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFCSVFNZ0RpQU9SU0FTR3dzRWZ5QURJQVVnQ1NnQ0JFRVJka0VFY1NBSlFRUnJJZzRvQWdCQkUzWkJBWEVnQmtFT2RrRVFjU0FHUVJCMlFjQUFjU0FHUWFvQmNYSnljbklpRWtIZ3VRRnFMUUFBUVFKMGFpSU1LQUlBSWdvb0FnQWlBV3NoQXlBU1FlQzdBV290QUFBaEdDQVJJQlFnRFFKL0lBRWdBa0VRZGswRVFDQUNJQUZCRUhScklRSWdBMEdBZ0FKeEJFQWdDaWdDQkF3Q0N5QUtLQUlFSVJJZ0RDQUtRUXhCQ0NBQklBTkxJaHNiYWlnQ0FEWUNBQU5BQWtBZ0NBMEFJQVFvQWhBaUNFRUJhaUVLSUFndEFBRWhBU0FJTFFBQVFmOEJSd1JBSUFRZ0NqWUNFRUVJSVFnZ0FVRUlkQ0FDYWlFQ0RBRUxJQUZCandGTkJFQWdCQ0FLTmdJUUlBRkJDWFFnQW1vaEFrRUhJUWdNQVFzZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQ0FzZ0NFRUJheUVJSUFKQkFYUWhBaUFEUVFGMElnTkJnSUFDU1EwQUN5QVNSU0FTSUJzYkRBRUxJQW9vQWdRaEVpQU1JQXBCQ0VFTUlBRWdBMHNpR3h0cUtBSUFOZ0lBQTBBQ1FDQUlEUUFnQkNnQ0VDSUlRUUZxSVFvZ0NDMEFBU0VESUFndEFBQkIvd0ZIQkVBZ0JDQUtOZ0lRUVFnaENDQURRUWgwSUFKcUlRSU1BUXNnQTBHUEFVMEVRQ0FFSUFvMkFoQWdBMEVKZENBQ2FpRUNRUWNoQ0F3QkN5QUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFSUN5QUlRUUZySVFnZ0FrRUJkQ0VDSUFGQkFYUWlBVUdBZ0FKSkRRQUxJQUVoQXlBU0lCSkZJQnNiQ3lBWWN5SUJHellDQUNBT0lBNG9BZ0JCSUhJMkFnQWdDU0FKS0FJRVFRaHlOZ0lFSUFZZ0FVRVRkSEpCRUhJRklBWUxRWUNBZ0FGeUlRWUxBa0FnQmtHQWdZQUljUTBBSUFaQitCNXhSUTBBSUFNZ0JTQUVLQUpzSUFaQkEzWWlFa0h2QTNGcUxRQUFRUUowYWlJTUtBSUFJZ29vQWdBaUFXc2hBd0ovSUFFZ0FrRVFkazBFUUNBQ0lBRkJFSFJySVFJZ0EwR0FnQUp4QkVBZ0NpZ0NCQXdDQ3lBS0tBSUVJUTRnRENBS1FReEJDQ0FCSUFOTEloZ2JhaWdDQURZQ0FBTkFBa0FnQ0EwQUlBUW9BaEFpQ0VFQmFpRUtJQWd0QUFFaEFTQUlMUUFBUWY4QlJ3UkFJQVFnQ2pZQ0VFRUlJUWdnQVVFSWRDQUNhaUVDREFFTElBRkJqd0ZOQkVBZ0JDQUtOZ0lRSUFGQkNYUWdBbW9oQWtFSElRZ01BUXNnQkNBRUtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hDQXNnQ0VFQmF5RUlJQUpCQVhRaEFpQURRUUYwSWdOQmdJQUNTUTBBQ3lBT1JTQU9JQmdiREFFTElBb29BZ1FoRGlBTUlBcEJDRUVNSUFFZ0Ewc2lHQnRxS0FJQU5nSUFBMEFDUUNBSURRQWdCQ2dDRUNJSVFRRnFJUW9nQ0MwQUFTRURJQWd0QUFCQi93RkhCRUFnQkNBS05nSVFRUWdoQ0NBRFFRaDBJQUpxSVFJTUFRc2dBMEdQQVUwRVFDQUVJQW8yQWhBZ0EwRUpkQ0FDYWlFQ1FRY2hDQXdCQ3lBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VJQ3lBSVFRRnJJUWdnQWtFQmRDRUNJQUZCQVhRaUFVR0FnQUpKRFFBTElBRWhBeUFPSUE1RklCZ2JDd1IvSUFNZ0JTQUpLQUlFUVJSMlFRUnhJQWxCQkdzaURpZ0NBRUVXZGtFQmNTQUdRUTkyUVJCeElBWkJFM1pCd0FCeElCSkJxZ0Z4Y25KeWNpSVNRZUM1QVdvdEFBQkJBblJxSWd3b0FnQWlDaWdDQUNJQmF5RURJQkpCNExzQmFpMEFBQ0VZSUJFZ0VFRUNkR29nRkNBTkFuOGdBU0FDUVJCMlRRUkFJQUlnQVVFUWRHc2hBaUFEUVlDQUFuRUVRQ0FLS0FJRURBSUxJQW9vQWdRaEVpQU1JQXBCREVFSUlBRWdBMHNpR3h0cUtBSUFOZ0lBQTBBQ1FDQUlEUUFnQkNnQ0VDSUlRUUZxSVFvZ0NDMEFBU0VCSUFndEFBQkIvd0ZIQkVBZ0JDQUtOZ0lRUVFnaENDQUJRUWgwSUFKcUlRSU1BUXNnQVVHUEFVMEVRQ0FFSUFvMkFoQWdBVUVKZENBQ2FpRUNRUWNoQ0F3QkN5QUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFSUN5QUlRUUZySVFnZ0FrRUJkQ0VDSUFOQkFYUWlBMEdBZ0FKSkRRQUxJQkpGSUJJZ0d4c01BUXNnQ2lnQ0JDRVNJQXdnQ2tFSVFRd2dBU0FEU3lJYkcyb29BZ0EyQWdBRFFBSkFJQWdOQUNBRUtBSVFJZ2hCQVdvaENpQUlMUUFCSVFNZ0NDMEFBRUgvQVVjRVFDQUVJQW8yQWhCQkNDRUlJQU5CQ0hRZ0Ftb2hBZ3dCQ3lBRFFZOEJUUVJBSUFRZ0NqWUNFQ0FEUVFsMElBSnFJUUpCQnlFSURBRUxJQVFnQkNnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRZ0xJQWhCQVdzaENDQUNRUUYwSVFJZ0FVRUJkQ0lCUVlDQUFra05BQXNnQVNFRElCSWdFa1VnR3hzTElCaHpJZ0ViTmdJQUlBNGdEaWdDQUVHQUFuSTJBZ0FnQ1NBSktBSUVRY0FBY2pZQ0JDQUdJQUZCRm5SeVFZQUJjZ1VnQmd0QmdJQ0FDSEloQmdzQ1FDQUdRWUNJZ01BQWNRMEFJQVpCd1BjQmNVVU5BQ0FESUFVZ0JDZ0NiQ0FHUVFaMkloSkI3d054YWkwQUFFRUNkR29pRENnQ0FDSUtLQUlBSWdGcklRTUNmeUFCSUFKQkVIWk5CRUFnQWlBQlFSQjBheUVDSUFOQmdJQUNjUVJBSUFvb0FnUU1BZ3NnQ2lnQ0JDRU9JQXdnQ2tFTVFRZ2dBU0FEU3lJWUcyb29BZ0EyQWdBRFFBSkFJQWdOQUNBRUtBSVFJZ2hCQVdvaENpQUlMUUFCSVFFZ0NDMEFBRUgvQVVjRVFDQUVJQW8yQWhCQkNDRUlJQUZCQ0hRZ0Ftb2hBZ3dCQ3lBQlFZOEJUUVJBSUFRZ0NqWUNFQ0FCUVFsMElBSnFJUUpCQnlFSURBRUxJQVFnQkNnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRZ0xJQWhCQVdzaENDQUNRUUYwSVFJZ0EwRUJkQ0lEUVlDQUFra05BQXNnRGtVZ0RpQVlHd3dCQ3lBS0tBSUVJUTRnRENBS1FRaEJEQ0FCSUFOTEloZ2JhaWdDQURZQ0FBTkFBa0FnQ0EwQUlBUW9BaEFpQ0VFQmFpRUtJQWd0QUFFaEF5QUlMUUFBUWY4QlJ3UkFJQVFnQ2pZQ0VFRUlJUWdnQTBFSWRDQUNhaUVDREFFTElBTkJqd0ZOQkVBZ0JDQUtOZ0lRSUFOQkNYUWdBbW9oQWtFSElRZ01BUXNnQkNBRUtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hDQXNnQ0VFQmF5RUlJQUpCQVhRaEFpQUJRUUYwSWdGQmdJQUNTUTBBQ3lBQklRTWdEaUFPUlNBWUd3c0VmeUFESUFVZ0NTZ0NCRUVYZGtFRWNTQUpRUVJySWc0b0FnQkJHWFpCQVhFZ0JrRVNka0VRY1NBR1FSWjJRY0FBY1NBU1Fhb0JjWEp5Y25JaUVrSGd1UUZxTFFBQVFRSjBhaUlNS0FJQUlnb29BZ0FpQVdzaEF5QVNRZUM3QVdvdEFBQWhHQ0FSSUJWcUlCUWdEUUovSUFFZ0FrRVFkazBFUUNBQ0lBRkJFSFJySVFJZ0EwR0FnQUp4QkVBZ0NpZ0NCQXdDQ3lBS0tBSUVJUklnRENBS1FReEJDQ0FCSUFOTEloc2JhaWdDQURZQ0FBTkFBa0FnQ0EwQUlBUW9BaEFpQ0VFQmFpRUtJQWd0QUFFaEFTQUlMUUFBUWY4QlJ3UkFJQVFnQ2pZQ0VFRUlJUWdnQVVFSWRDQUNhaUVDREFFTElBRkJqd0ZOQkVBZ0JDQUtOZ0lRSUFGQkNYUWdBbW9oQWtFSElRZ01BUXNnQkNBRUtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hDQXNnQ0VFQmF5RUlJQUpCQVhRaEFpQURRUUYwSWdOQmdJQUNTUTBBQ3lBU1JTQVNJQnNiREFFTElBb29BZ1FoRWlBTUlBcEJDRUVNSUFFZ0Ewc2lHeHRxS0FJQU5nSUFBMEFDUUNBSURRQWdCQ2dDRUNJSVFRRnFJUW9nQ0MwQUFTRURJQWd0QUFCQi93RkhCRUFnQkNBS05nSVFRUWdoQ0NBRFFRaDBJQUpxSVFJTUFRc2dBMEdQQVUwRVFDQUVJQW8yQWhBZ0EwRUpkQ0FDYWlFQ1FRY2hDQXdCQ3lBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VJQ3lBSVFRRnJJUWdnQWtFQmRDRUNJQUZCQVhRaUFVR0FnQUpKRFFBTElBRWhBeUFTSUJKRklCc2JDeUFZY3lJQkd6WUNBQ0FPSUE0b0FnQkJnQkJ5TmdJQUlBa2dDU2dDQkVHQUJISTJBZ1FnQmlBQlFSbDBja0dBQ0hJRklBWUxRWUNBZ01BQWNpRUdDd0pBSUFaQmdNQ0FnQVJ4RFFBZ0JrR0F2QTl4UlEwQUlBTWdCU0FFS0FKc0lBWkJDWFlpRWtIdkEzRnFMUUFBUVFKMGFpSU1LQUlBSWdvb0FnQWlBV3NoQXdKL0lBRWdBa0VRZGswRVFDQUNJQUZCRUhScklRSWdBMEdBZ0FKeEJFQWdDaWdDQkF3Q0N5QUtLQUlFSVE0Z0RDQUtRUXhCQ0NBQklBTkxJaGdiYWlnQ0FEWUNBQU5BQWtBZ0NBMEFJQVFvQWhBaUNFRUJhaUVLSUFndEFBRWhBU0FJTFFBQVFmOEJSd1JBSUFRZ0NqWUNFRUVJSVFnZ0FVRUlkQ0FDYWlFQ0RBRUxJQUZCandGTkJFQWdCQ0FLTmdJUUlBRkJDWFFnQW1vaEFrRUhJUWdNQVFzZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQ0FzZ0NFRUJheUVJSUFKQkFYUWhBaUFEUVFGMElnTkJnSUFDU1EwQUN5QU9SU0FPSUJnYkRBRUxJQW9vQWdRaERpQU1JQXBCQ0VFTUlBRWdBMHNpR0J0cUtBSUFOZ0lBQTBBQ1FDQUlEUUFnQkNnQ0VDSUlRUUZxSVFvZ0NDMEFBU0VESUFndEFBQkIvd0ZIQkVBZ0JDQUtOZ0lRUVFnaENDQURRUWgwSUFKcUlRSU1BUXNnQTBHUEFVMEVRQ0FFSUFvMkFoQWdBMEVKZENBQ2FpRUNRUWNoQ0F3QkN5QUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFSUN5QUlRUUZySVFnZ0FrRUJkQ0VDSUFGQkFYUWlBVUdBZ0FKSkRRQUxJQUVoQXlBT0lBNUZJQmdiQ3dSL0lBTWdCU0FKS0FJRVFScDJRUVJ4SUFsQkJHc2lEaWdDQUVFY2RrRUJjU0FHUVJWMlFSQnhJQVpCR1haQndBQnhJQkpCcWdGeGNuSnljaUlTUWVDNUFXb3RBQUJCQW5ScUlnd29BZ0FpQ2lnQ0FDSUJheUVESUJKQjRMc0JhaTBBQUNFWUlCRWdFMm9nRkNBTkFuOGdBU0FDUVJCMlRRUkFJQUlnQVVFUWRHc2hBaUFEUVlDQUFuRUVRQ0FLS0FJRURBSUxJQW9vQWdRaEVpQU1JQXBCREVFSUlBRWdBMHNpR3h0cUtBSUFOZ0lBQTBBQ1FDQUlEUUFnQkNnQ0VDSUlRUUZxSVFvZ0NDMEFBU0VCSUFndEFBQkIvd0ZIQkVBZ0JDQUtOZ0lRUVFnaENDQUJRUWgwSUFKcUlRSU1BUXNnQVVHUEFVMEVRQ0FFSUFvMkFoQWdBVUVKZENBQ2FpRUNRUWNoQ0F3QkN5QUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFSUN5QUlRUUZySVFnZ0FrRUJkQ0VDSUFOQkFYUWlBMEdBZ0FKSkRRQUxJQkpGSUJJZ0d4c01BUXNnQ2lnQ0JDRVNJQXdnQ2tFSVFRd2dBU0FEU3lJYkcyb29BZ0EyQWdBRFFBSkFJQWdOQUNBRUtBSVFJZ2hCQVdvaENpQUlMUUFCSVFNZ0NDMEFBRUgvQVVjRVFDQUVJQW8yQWhCQkNDRUlJQU5CQ0hRZ0Ftb2hBZ3dCQ3lBRFFZOEJUUVJBSUFRZ0NqWUNFQ0FEUVFsMElBSnFJUUpCQnlFSURBRUxJQVFnQkNnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRZ0xJQWhCQVdzaENDQUNRUUYwSVFJZ0FVRUJkQ0lCUVlDQUFra05BQXNnQVNFRElCSWdFa1VnR3hzTElCaHpJZ29iTmdJQUlBNGdEaWdDQUVHQWdBRnlOZ0lBSUFrZ0NTZ0NCRUdBSUhJMkFnUWdCQ2dDZkVFQ2RDQUphaUlCSUFFb0FnUkJCSEkyQWdRZ0FTQUJLQUlNUVFGeU5nSU1JQUVnQVNnQ0NDQUtRUkowY2tFQ2NqWUNDQ0FHSUFwQkhIUnlRWURBQUhJRklBWUxRWUNBZ0lBRWNpRUdDeUFKSUFZMkFnQUxJQWxCQkdvaEJpQVJRUVJxSVJFZ0MwRUJhaUlMSUJCSERRQUxJQWxCREdvaEJpQVJJQk5xSVJFZ0IwRUVhaUlISUFRb0FvQUJJZ0ZCZkhGSkRRQUxEQUVMUVFRZ0FVRjhjU0lHSUFaQkJFMGJRUUZySWdaQmZIRkJCR29oQnlBSklBWkJBWFJCZUhGcVFSUnFJUVlMSUFRZ0NEWUNDQ0FFSUFNMkFnUWdCQ0FDTmdJQUlBUWdERFlDYUNBUVJRMEJJQUVnQjAwTkFRTkFJQUVnQjBZaFVrRUFJUWdnQnlFQklGSkZCRUFEUUNBRUlBWWdFU0FJSUJCc1FRSjBhaUFOSUFnZ0JDZ0NmRUVDYWtFQkVGSWdDRUVCYWlJSUlBUW9Bb0FCSWdFZ0IydEpEUUFMQ3lBR1FRUnFJUVlnRVVFRWFpRVJJQmRCQVdvaUZ5QVFSdzBBQ3d3QkN3SkFJQUZCQkVrTkFDQVFCRUJCQUNBTmF5RVVJQVJCSEdvaEJTQVFRUXhzSVJNZ0VFRURkQ0VWQTBCQkFDRUxBMEFnQmlJSktBSUFJZ1lFUUFKQUlBWkJrSUNBQVhFTkFDQUdRZThEY1NJQlJRMEFJQU1nQlNBRUtBSnNJQUZxTFFBQVFRSjBhaUlNS0FJQUlnb29BZ0FpQVdzaEF3Si9JQUVnQWtFUWRrMEVRQ0FDSUFGQkVIUnJJUUlnQTBHQWdBSnhCRUFnQ2lnQ0JBd0NDeUFLS0FJRUlRNGdEQ0FLUVF4QkNDQUJJQU5MSWhJYmFpZ0NBRFlDQUFOQUFrQWdDQTBBSUFRb0FoQWlDRUVCYWlFS0lBZ3RBQUVoQVNBSUxRQUFRZjhCUndSQUlBUWdDallDRUVFSUlRZ2dBVUVJZENBQ2FpRUNEQUVMSUFGQmp3Rk5CRUFnQkNBS05nSVFJQUZCQ1hRZ0Ftb2hBa0VISVFnTUFRc2dCQ0FFS0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaENBc2dDRUVCYXlFSUlBSkJBWFFoQWlBRFFRRjBJZ05CZ0lBQ1NRMEFDeUFPUlNBT0lCSWJEQUVMSUFvb0FnUWhEaUFNSUFwQkNFRU1JQUVnQTBzaUVodHFLQUlBTmdJQUEwQUNRQ0FJRFFBZ0JDZ0NFQ0lJUVFGcUlRb2dDQzBBQVNFRElBZ3RBQUJCL3dGSEJFQWdCQ0FLTmdJUVFRZ2hDQ0FEUVFoMElBSnFJUUlNQVFzZ0EwR1BBVTBFUUNBRUlBbzJBaEFnQTBFSmRDQUNhaUVDUVFjaENBd0JDeUFFSUFRb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUlDeUFJUVFGcklRZ2dBa0VCZENFQ0lBRkJBWFFpQVVHQWdBSkpEUUFMSUFFaEF5QU9JQTVGSUJJYkN3Ui9JQU1nQlNBSktBSUVRUkYyUVFSeElBbEJCR3NpRGlnQ0FFRVRka0VCY1NBR1FRNTJRUkJ4SUFaQkVIWkJ3QUJ4SUFaQnFnRnhjbkp5Y2lJU1FlQzVBV290QUFCQkFuUnFJZ3dvQWdBaUNpZ0NBQ0lCYXlFRElCSkI0THNCYWkwQUFDRVlJQkVnRkNBTkFuOGdBU0FDUVJCMlRRUkFJQUlnQVVFUWRHc2hBaUFEUVlDQUFuRUVRQ0FLS0FJRURBSUxJQW9vQWdRaEVpQU1JQXBCREVFSUlBRWdBMHNpR3h0cUtBSUFOZ0lBQTBBQ1FDQUlEUUFnQkNnQ0VDSUlRUUZxSVFvZ0NDMEFBU0VCSUFndEFBQkIvd0ZIQkVBZ0JDQUtOZ0lRUVFnaENDQUJRUWgwSUFKcUlRSU1BUXNnQVVHUEFVMEVRQ0FFSUFvMkFoQWdBVUVKZENBQ2FpRUNRUWNoQ0F3QkN5QUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFSUN5QUlRUUZySVFnZ0FrRUJkQ0VDSUFOQkFYUWlBMEdBZ0FKSkRRQUxJQkpGSUJJZ0d4c01BUXNnQ2lnQ0JDRVNJQXdnQ2tFSVFRd2dBU0FEU3lJYkcyb29BZ0EyQWdBRFFBSkFJQWdOQUNBRUtBSVFJZ2hCQVdvaENpQUlMUUFCSVFNZ0NDMEFBRUgvQVVjRVFDQUVJQW8yQWhCQkNDRUlJQU5CQ0hRZ0Ftb2hBZ3dCQ3lBRFFZOEJUUVJBSUFRZ0NqWUNFQ0FEUVFsMElBSnFJUUpCQnlFSURBRUxJQVFnQkNnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRZ0xJQWhCQVdzaENDQUNRUUYwSVFJZ0FVRUJkQ0lCUVlDQUFra05BQXNnQVNFRElCSWdFa1VnR3hzTElCaHpJZ29iTmdJQUlBNGdEaWdDQUVFZ2NqWUNBQ0FKSUFrb0FnUkJDSEkyQWdRZ0NVRitJQVFvQW54clFRSjBhaUlCSUFFb0FnUkJnSUFDY2pZQ0JDQUJJQUVvQWdBZ0NrRWZkSEpCZ0lBRWNqWUNBQ0FCUVFScklnRWdBU2dDQUVHQWdBaHlOZ0lBSUFZZ0NrRVRkSEpCRUhJRklBWUxRWUNBZ0FGeUlRWUxBa0FnQmtHQWdZQUljUTBBSUFaQitCNXhSUTBBSUFNZ0JTQUVLQUpzSUFaQkEzWWlFa0h2QTNGcUxRQUFRUUowYWlJTUtBSUFJZ29vQWdBaUFXc2hBd0ovSUFFZ0FrRVFkazBFUUNBQ0lBRkJFSFJySVFJZ0EwR0FnQUp4QkVBZ0NpZ0NCQXdDQ3lBS0tBSUVJUTRnRENBS1FReEJDQ0FCSUFOTEloZ2JhaWdDQURZQ0FBTkFBa0FnQ0EwQUlBUW9BaEFpQ0VFQmFpRUtJQWd0QUFFaEFTQUlMUUFBUWY4QlJ3UkFJQVFnQ2pZQ0VFRUlJUWdnQVVFSWRDQUNhaUVDREFFTElBRkJqd0ZOQkVBZ0JDQUtOZ0lRSUFGQkNYUWdBbW9oQWtFSElRZ01BUXNnQkNBRUtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hDQXNnQ0VFQmF5RUlJQUpCQVhRaEFpQURRUUYwSWdOQmdJQUNTUTBBQ3lBT1JTQU9JQmdiREFFTElBb29BZ1FoRGlBTUlBcEJDRUVNSUFFZ0Ewc2lHQnRxS0FJQU5nSUFBMEFDUUNBSURRQWdCQ2dDRUNJSVFRRnFJUW9nQ0MwQUFTRURJQWd0QUFCQi93RkhCRUFnQkNBS05nSVFRUWdoQ0NBRFFRaDBJQUpxSVFJTUFRc2dBMEdQQVUwRVFDQUVJQW8yQWhBZ0EwRUpkQ0FDYWlFQ1FRY2hDQXdCQ3lBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VJQ3lBSVFRRnJJUWdnQWtFQmRDRUNJQUZCQVhRaUFVR0FnQUpKRFFBTElBRWhBeUFPSUE1RklCZ2JDd1IvSUFNZ0JTQUpLQUlFUVJSMlFRUnhJQWxCQkdzaURpZ0NBRUVXZGtFQmNTQUdRUTkyUVJCeElBWkJFM1pCd0FCeElCSkJxZ0Z4Y25KeWNpSVNRZUM1QVdvdEFBQkJBblJxSWd3b0FnQWlDaWdDQUNJQmF5RURJQkpCNExzQmFpMEFBQ0VZSUJFZ0VFRUNkR29nRkNBTkFuOGdBU0FDUVJCMlRRUkFJQUlnQVVFUWRHc2hBaUFEUVlDQUFuRUVRQ0FLS0FJRURBSUxJQW9vQWdRaEVpQU1JQXBCREVFSUlBRWdBMHNpR3h0cUtBSUFOZ0lBQTBBQ1FDQUlEUUFnQkNnQ0VDSUlRUUZxSVFvZ0NDMEFBU0VCSUFndEFBQkIvd0ZIQkVBZ0JDQUtOZ0lRUVFnaENDQUJRUWgwSUFKcUlRSU1BUXNnQVVHUEFVMEVRQ0FFSUFvMkFoQWdBVUVKZENBQ2FpRUNRUWNoQ0F3QkN5QUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFSUN5QUlRUUZySVFnZ0FrRUJkQ0VDSUFOQkFYUWlBMEdBZ0FKSkRRQUxJQkpGSUJJZ0d4c01BUXNnQ2lnQ0JDRVNJQXdnQ2tFSVFRd2dBU0FEU3lJYkcyb29BZ0EyQWdBRFFBSkFJQWdOQUNBRUtBSVFJZ2hCQVdvaENpQUlMUUFCSVFNZ0NDMEFBRUgvQVVjRVFDQUVJQW8yQWhCQkNDRUlJQU5CQ0hRZ0Ftb2hBZ3dCQ3lBRFFZOEJUUVJBSUFRZ0NqWUNFQ0FEUVFsMElBSnFJUUpCQnlFSURBRUxJQVFnQkNnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRZ0xJQWhCQVdzaENDQUNRUUYwSVFJZ0FVRUJkQ0lCUVlDQUFra05BQXNnQVNFRElCSWdFa1VnR3hzTElCaHpJZ0ViTmdJQUlBNGdEaWdDQUVHQUFuSTJBZ0FnQ1NBSktBSUVRY0FBY2pZQ0JDQUdJQUZCRm5SeVFZQUJjZ1VnQmd0QmdJQ0FDSEloQmdzQ1FDQUdRWUNJZ01BQWNRMEFJQVpCd1BjQmNVVU5BQ0FESUFVZ0JDZ0NiQ0FHUVFaMkloSkI3d054YWkwQUFFRUNkR29pRENnQ0FDSUtLQUlBSWdGcklRTUNmeUFCSUFKQkVIWk5CRUFnQWlBQlFSQjBheUVDSUFOQmdJQUNjUVJBSUFvb0FnUU1BZ3NnQ2lnQ0JDRU9JQXdnQ2tFTVFRZ2dBU0FEU3lJWUcyb29BZ0EyQWdBRFFBSkFJQWdOQUNBRUtBSVFJZ2hCQVdvaENpQUlMUUFCSVFFZ0NDMEFBRUgvQVVjRVFDQUVJQW8yQWhCQkNDRUlJQUZCQ0hRZ0Ftb2hBZ3dCQ3lBQlFZOEJUUVJBSUFRZ0NqWUNFQ0FCUVFsMElBSnFJUUpCQnlFSURBRUxJQVFnQkNnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRZ0xJQWhCQVdzaENDQUNRUUYwSVFJZ0EwRUJkQ0lEUVlDQUFra05BQXNnRGtVZ0RpQVlHd3dCQ3lBS0tBSUVJUTRnRENBS1FRaEJEQ0FCSUFOTEloZ2JhaWdDQURZQ0FBTkFBa0FnQ0EwQUlBUW9BaEFpQ0VFQmFpRUtJQWd0QUFFaEF5QUlMUUFBUWY4QlJ3UkFJQVFnQ2pZQ0VFRUlJUWdnQTBFSWRDQUNhaUVDREFFTElBTkJqd0ZOQkVBZ0JDQUtOZ0lRSUFOQkNYUWdBbW9oQWtFSElRZ01BUXNnQkNBRUtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hDQXNnQ0VFQmF5RUlJQUpCQVhRaEFpQUJRUUYwSWdGQmdJQUNTUTBBQ3lBQklRTWdEaUFPUlNBWUd3c0VmeUFESUFVZ0NTZ0NCRUVYZGtFRWNTQUpRUVJySWc0b0FnQkJHWFpCQVhFZ0JrRVNka0VRY1NBR1FSWjJRY0FBY1NBU1Fhb0JjWEp5Y25JaUVrSGd1UUZxTFFBQVFRSjBhaUlNS0FJQUlnb29BZ0FpQVdzaEF5QVNRZUM3QVdvdEFBQWhHQ0FSSUJWcUlCUWdEUUovSUFFZ0FrRVFkazBFUUNBQ0lBRkJFSFJySVFJZ0EwR0FnQUp4QkVBZ0NpZ0NCQXdDQ3lBS0tBSUVJUklnRENBS1FReEJDQ0FCSUFOTEloc2JhaWdDQURZQ0FBTkFBa0FnQ0EwQUlBUW9BaEFpQ0VFQmFpRUtJQWd0QUFFaEFTQUlMUUFBUWY4QlJ3UkFJQVFnQ2pZQ0VFRUlJUWdnQVVFSWRDQUNhaUVDREFFTElBRkJqd0ZOQkVBZ0JDQUtOZ0lRSUFGQkNYUWdBbW9oQWtFSElRZ01BUXNnQkNBRUtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hDQXNnQ0VFQmF5RUlJQUpCQVhRaEFpQURRUUYwSWdOQmdJQUNTUTBBQ3lBU1JTQVNJQnNiREFFTElBb29BZ1FoRWlBTUlBcEJDRUVNSUFFZ0Ewc2lHeHRxS0FJQU5nSUFBMEFDUUNBSURRQWdCQ2dDRUNJSVFRRnFJUW9nQ0MwQUFTRURJQWd0QUFCQi93RkhCRUFnQkNBS05nSVFRUWdoQ0NBRFFRaDBJQUpxSVFJTUFRc2dBMEdQQVUwRVFDQUVJQW8yQWhBZ0EwRUpkQ0FDYWlFQ1FRY2hDQXdCQ3lBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VJQ3lBSVFRRnJJUWdnQWtFQmRDRUNJQUZCQVhRaUFVR0FnQUpKRFFBTElBRWhBeUFTSUJKRklCc2JDeUFZY3lJQkd6WUNBQ0FPSUE0b0FnQkJnQkJ5TmdJQUlBa2dDU2dDQkVHQUJISTJBZ1FnQmlBQlFSbDBja0dBQ0hJRklBWUxRWUNBZ01BQWNpRUdDd0pBSUFaQmdNQ0FnQVJ4RFFBZ0JrR0F2QTl4UlEwQUlBTWdCU0FFS0FKc0lBWkJDWFlpRWtIdkEzRnFMUUFBUVFKMGFpSU1LQUlBSWdvb0FnQWlBV3NoQXdKL0lBRWdBa0VRZGswRVFDQUNJQUZCRUhScklRSWdBMEdBZ0FKeEJFQWdDaWdDQkF3Q0N5QUtLQUlFSVE0Z0RDQUtRUXhCQ0NBQklBTkxJaGdiYWlnQ0FEWUNBQU5BQWtBZ0NBMEFJQVFvQWhBaUNFRUJhaUVLSUFndEFBRWhBU0FJTFFBQVFmOEJSd1JBSUFRZ0NqWUNFRUVJSVFnZ0FVRUlkQ0FDYWlFQ0RBRUxJQUZCandGTkJFQWdCQ0FLTmdJUUlBRkJDWFFnQW1vaEFrRUhJUWdNQVFzZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQ0FzZ0NFRUJheUVJSUFKQkFYUWhBaUFEUVFGMElnTkJnSUFDU1EwQUN5QU9SU0FPSUJnYkRBRUxJQW9vQWdRaERpQU1JQXBCQ0VFTUlBRWdBMHNpR0J0cUtBSUFOZ0lBQTBBQ1FDQUlEUUFnQkNnQ0VDSUlRUUZxSVFvZ0NDMEFBU0VESUFndEFBQkIvd0ZIQkVBZ0JDQUtOZ0lRUVFnaENDQURRUWgwSUFKcUlRSU1BUXNnQTBHUEFVMEVRQ0FFSUFvMkFoQWdBMEVKZENBQ2FpRUNRUWNoQ0F3QkN5QUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFSUN5QUlRUUZySVFnZ0FrRUJkQ0VDSUFGQkFYUWlBVUdBZ0FKSkRRQUxJQUVoQXlBT0lBNUZJQmdiQ3dSL0lBTWdCU0FKS0FJRVFScDJRUVJ4SUFsQkJHc2lEaWdDQUVFY2RrRUJjU0FHUVJWMlFSQnhJQVpCR1haQndBQnhJQkpCcWdGeGNuSnljaUlTUWVDNUFXb3RBQUJCQW5ScUlnd29BZ0FpQ2lnQ0FDSUJheUVESUJKQjRMc0JhaTBBQUNFWUlCRWdFMm9nRkNBTkFuOGdBU0FDUVJCMlRRUkFJQUlnQVVFUWRHc2hBaUFEUVlDQUFuRUVRQ0FLS0FJRURBSUxJQW9vQWdRaEVpQU1JQXBCREVFSUlBRWdBMHNpR3h0cUtBSUFOZ0lBQTBBQ1FDQUlEUUFnQkNnQ0VDSUlRUUZxSVFvZ0NDMEFBU0VCSUFndEFBQkIvd0ZIQkVBZ0JDQUtOZ0lRUVFnaENDQUJRUWgwSUFKcUlRSU1BUXNnQVVHUEFVMEVRQ0FFSUFvMkFoQWdBVUVKZENBQ2FpRUNRUWNoQ0F3QkN5QUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFSUN5QUlRUUZySVFnZ0FrRUJkQ0VDSUFOQkFYUWlBMEdBZ0FKSkRRQUxJQkpGSUJJZ0d4c01BUXNnQ2lnQ0JDRVNJQXdnQ2tFSVFRd2dBU0FEU3lJYkcyb29BZ0EyQWdBRFFBSkFJQWdOQUNBRUtBSVFJZ2hCQVdvaENpQUlMUUFCSVFNZ0NDMEFBRUgvQVVjRVFDQUVJQW8yQWhCQkNDRUlJQU5CQ0hRZ0Ftb2hBZ3dCQ3lBRFFZOEJUUVJBSUFRZ0NqWUNFQ0FEUVFsMElBSnFJUUpCQnlFSURBRUxJQVFnQkNnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRZ0xJQWhCQVdzaENDQUNRUUYwSVFJZ0FVRUJkQ0lCUVlDQUFra05BQXNnQVNFRElCSWdFa1VnR3hzTElCaHpJZ29iTmdJQUlBNGdEaWdDQUVHQWdBRnlOZ0lBSUFrZ0NTZ0NCRUdBSUhJMkFnUWdCQ2dDZkVFQ2RDQUphaUlCSUFFb0FnUkJCSEkyQWdRZ0FTQUJLQUlNUVFGeU5nSU1JQUVnQVNnQ0NDQUtRUkowY2tFQ2NqWUNDQ0FHSUFwQkhIUnlRWURBQUhJRklBWUxRWUNBZ0lBRWNpRUdDeUFKSUFZMkFnQUxJQWxCQkdvaEJpQVJRUVJxSVJFZ0MwRUJhaUlMSUJCSERRQUxJQWxCREdvaEJpQVJJQk5xSVJFZ0IwRUVhaUlISUFRb0FvQUJJZ0ZCZkhGSkRRQUxEQUVMUVFRZ0FVRjhjU0lHSUFaQkJFMGJRUUZySWdaQmZIRkJCR29oQnlBSklBWkJBWFJCZUhGcVFSUnFJUVlMSUFRZ0NEWUNDQ0FFSUFNMkFnUWdCQ0FDTmdJQUlBUWdERFlDYUNBUVJRMEFJQUVnQjAwTkFBTkFJQUVnQjBZaFUwRUFJUWdnQnlFQklGTkZCRUFEUUNBRUlBWWdFU0FJSUJCc1FRSjBhaUFOSUFnZ0JDZ0NmRUVDYWtFQUVGSWdDRUVCYWlJSUlBUW9Bb0FCSWdFZ0IydEpEUUFMQ3lBR1FRUnFJUVlnRVVFRWFpRVJJQmRCQVdvaUZ5QVFSdzBBQ3dzTUFnc0RRRUVBSVJjRFFDQUJJUWtnQmlJSEtBSUFJZ1lFUUFKQUlBWkJrSUNBQVhFTkFDQUdRZThEY1NJQlJRMEFJQU1nRUNBRUtBSnNJQUZxTFFBQVFRSjBhaUlNS0FJQUlnc29BZ0FpQVdzaEF3Si9JQUVnQWtFUWRrc0VRQ0FMS0FJRUlRb2dEQ0FMUVFoQkRDQUJJQU5MSWhRYmFpZ0NBRFlDQUFOQUFrQWdDQTBBSUFRb0FoQWlDRUVCYWlFTElBZ3RBQUVoQXlBSUxRQUFRZjhCUmdSQUlBTkJrQUZQQkVBZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQ0F3Q0N5QUVJQXMyQWhBZ0EwRUpkQ0FDYWlFQ1FRY2hDQXdCQ3lBRUlBczJBaEJCQ0NFSUlBTkJDSFFnQW1vaEFnc2dDRUVCYXlFSUlBSkJBWFFoQWlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFCSVFNZ0NpQUtSU0FVR3d3QkN5QUNJQUZCRUhScklRSWdBMEdBZ0FKeFJRUkFJQXNvQWdRaENpQU1JQXRCREVFSUlBRWdBMHNpRkJ0cUtBSUFOZ0lBQTBBQ1FDQUlEUUFnQkNnQ0VDSUlRUUZxSVFzZ0NDMEFBU0VCSUFndEFBQkIvd0ZHQkVBZ0FVR1FBVThFUUNBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VJREFJTElBUWdDellDRUNBQlFRbDBJQUpxSVFKQkJ5RUlEQUVMSUFRZ0N6WUNFRUVJSVFnZ0FVRUlkQ0FDYWlFQ0N5QUlRUUZySVFnZ0FrRUJkQ0VDSUFOQkFYUWlBMEdBZ0FKSkRRQUxJQXBGSUFvZ0ZCc01BUXNnQ3lnQ0JBc0VmeUFESUJBZ0J5Z0NCRUVSZGtFRWNTQUhRUVJySWdvb0FnQkJFM1pCQVhFZ0JrRU9ka0VRY1NBR1FSQjJRY0FBY1NBR1Fhb0JjWEp5Y25JaUZFSGd1UUZxTFFBQVFRSjBhaUlNS0FJQUlnc29BZ0FpQVdzaEF5QVVRZUM3QVdvdEFBQWhFeUFKSUFVZ0VRSi9JQUVnQWtFUWRrc0VRQ0FMS0FJRUlSUWdEQ0FMUVFoQkRDQUJJQU5MSWc0YmFpZ0NBRFlDQUFOQUFrQWdDQTBBSUFRb0FoQWlDRUVCYWlFTElBZ3RBQUVoQXlBSUxRQUFRZjhCUmdSQUlBTkJrQUZQQkVBZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQ0F3Q0N5QUVJQXMyQWhBZ0EwRUpkQ0FDYWlFQ1FRY2hDQXdCQ3lBRUlBczJBaEJCQ0NFSUlBTkJDSFFnQW1vaEFnc2dDRUVCYXlFSUlBSkJBWFFoQWlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFCSVFNZ0ZDQVVSU0FPR3d3QkN5QUNJQUZCRUhScklRSWdBMEdBZ0FKeFJRUkFJQXNvQWdRaEZDQU1JQXRCREVFSUlBRWdBMHNpRGh0cUtBSUFOZ0lBQTBBQ1FDQUlEUUFnQkNnQ0VDSUlRUUZxSVFzZ0NDMEFBU0VCSUFndEFBQkIvd0ZHQkVBZ0FVR1FBVThFUUNBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VJREFJTElBUWdDellDRUNBQlFRbDBJQUpxSVFKQkJ5RUlEQUVMSUFRZ0N6WUNFRUVJSVFnZ0FVRUlkQ0FDYWlFQ0N5QUlRUUZySVFnZ0FrRUJkQ0VDSUFOQkFYUWlBMEdBZ0FKSkRRQUxJQlJGSUJRZ0Roc01BUXNnQ3lnQ0JBc2dFM01pQVJzMkFnQWdDaUFLS0FJQVFTQnlOZ0lBSUFjZ0J5Z0NCRUVJY2pZQ0JDQUdJQUZCRTNSeVFSQnlCU0FHQzBHQWdJQUJjaUVHQ3dKQUlBWkJnSUdBQ0hFTkFDQUdRZmdlY1VVTkFDQURJQkFnQkNnQ2JDQUdRUU4ySWhSQjd3TnhhaTBBQUVFQ2RHb2lEQ2dDQUNJTEtBSUFJZ0ZySVFNQ2Z5QUJJQUpCRUhaTEJFQWdDeWdDQkNFS0lBd2dDMEVJUVF3Z0FTQURTeUlURzJvb0FnQTJBZ0FEUUFKQUlBZ05BQ0FFS0FJUUlnaEJBV29oQ3lBSUxRQUJJUU1nQ0MwQUFFSC9BVVlFUUNBRFFaQUJUd1JBSUFRZ0JDZ0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUWdNQWdzZ0JDQUxOZ0lRSUFOQkNYUWdBbW9oQWtFSElRZ01BUXNnQkNBTE5nSVFRUWdoQ0NBRFFRaDBJQUpxSVFJTElBaEJBV3NoQ0NBQ1FRRjBJUUlnQVVFQmRDSUJRWUNBQWtrTkFBc2dBU0VESUFvZ0NrVWdFeHNNQVFzZ0FpQUJRUkIwYXlFQ0lBTkJnSUFDY1VVRVFDQUxLQUlFSVFvZ0RDQUxRUXhCQ0NBQklBTkxJaE1iYWlnQ0FEWUNBQU5BQWtBZ0NBMEFJQVFvQWhBaUNFRUJhaUVMSUFndEFBRWhBU0FJTFFBQVFmOEJSZ1JBSUFGQmtBRlBCRUFnQkNBRUtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hDQXdDQ3lBRUlBczJBaEFnQVVFSmRDQUNhaUVDUVFjaENBd0JDeUFFSUFzMkFoQkJDQ0VJSUFGQkNIUWdBbW9oQWdzZ0NFRUJheUVJSUFKQkFYUWhBaUFEUVFGMElnTkJnSUFDU1EwQUN5QUtSU0FLSUJNYkRBRUxJQXNvQWdRTEJIOGdBeUFRSUFjb0FnUkJGSFpCQkhFZ0IwRUVheUlLS0FJQVFSWjJRUUZ4SUFaQkQzWkJFSEVnQmtFVGRrSEFBSEVnRkVHcUFYRnljbkp5SWhSQjRMa0JhaTBBQUVFQ2RHb2lEQ2dDQUNJTEtBSUFJZ0ZySVFNZ0ZFSGd1d0ZxTFFBQUlSTWdDU0FGSUJFQ2Z5QUJJQUpCRUhaTEJFQWdDeWdDQkNFVUlBd2dDMEVJUVF3Z0FTQURTeUlPRzJvb0FnQTJBZ0FEUUFKQUlBZ05BQ0FFS0FJUUlnaEJBV29oQ3lBSUxRQUJJUU1nQ0MwQUFFSC9BVVlFUUNBRFFaQUJUd1JBSUFRZ0JDZ0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUWdNQWdzZ0JDQUxOZ0lRSUFOQkNYUWdBbW9oQWtFSElRZ01BUXNnQkNBTE5nSVFRUWdoQ0NBRFFRaDBJQUpxSVFJTElBaEJBV3NoQ0NBQ1FRRjBJUUlnQVVFQmRDSUJRWUNBQWtrTkFBc2dBU0VESUJRZ0ZFVWdEaHNNQVFzZ0FpQUJRUkIwYXlFQ0lBTkJnSUFDY1VVRVFDQUxLQUlFSVJRZ0RDQUxRUXhCQ0NBQklBTkxJZzRiYWlnQ0FEWUNBQU5BQWtBZ0NBMEFJQVFvQWhBaUNFRUJhaUVMSUFndEFBRWhBU0FJTFFBQVFmOEJSZ1JBSUFGQmtBRlBCRUFnQkNBRUtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hDQXdDQ3lBRUlBczJBaEFnQVVFSmRDQUNhaUVDUVFjaENBd0JDeUFFSUFzMkFoQkJDQ0VJSUFGQkNIUWdBbW9oQWdzZ0NFRUJheUVJSUFKQkFYUWhBaUFEUVFGMElnTkJnSUFDU1EwQUN5QVVSU0FVSUE0YkRBRUxJQXNvQWdRTElCTnpJZ0ViTmdLQUFpQUtJQW9vQWdCQmdBSnlOZ0lBSUFjZ0J5Z0NCRUhBQUhJMkFnUWdCaUFCUVJaMGNrR0FBWElGSUFZTFFZQ0FnQWh5SVFZTEFrQWdCa0dBaUlEQUFIRU5BQ0FHUWNEM0FYRkZEUUFnQXlBUUlBUW9BbXdnQmtFR2RpSVVRZThEY1dvdEFBQkJBblJxSWd3b0FnQWlDeWdDQUNJQmF5RURBbjhnQVNBQ1FSQjJTd1JBSUFzb0FnUWhDaUFNSUF0QkNFRU1JQUVnQTBzaUV4dHFLQUlBTmdJQUEwQUNRQ0FJRFFBZ0JDZ0NFQ0lJUVFGcUlRc2dDQzBBQVNFRElBZ3RBQUJCL3dGR0JFQWdBMEdRQVU4RVFDQUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFSURBSUxJQVFnQ3pZQ0VDQURRUWwwSUFKcUlRSkJCeUVJREFFTElBUWdDellDRUVFSUlRZ2dBMEVJZENBQ2FpRUNDeUFJUVFGcklRZ2dBa0VCZENFQ0lBRkJBWFFpQVVHQWdBSkpEUUFMSUFFaEF5QUtJQXBGSUJNYkRBRUxJQUlnQVVFUWRHc2hBaUFEUVlDQUFuRkZCRUFnQ3lnQ0JDRUtJQXdnQzBFTVFRZ2dBU0FEU3lJVEcyb29BZ0EyQWdBRFFBSkFJQWdOQUNBRUtBSVFJZ2hCQVdvaEN5QUlMUUFCSVFFZ0NDMEFBRUgvQVVZRVFDQUJRWkFCVHdSQUlBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFnTUFnc2dCQ0FMTmdJUUlBRkJDWFFnQW1vaEFrRUhJUWdNQVFzZ0JDQUxOZ0lRUVFnaENDQUJRUWgwSUFKcUlRSUxJQWhCQVdzaENDQUNRUUYwSVFJZ0EwRUJkQ0lEUVlDQUFra05BQXNnQ2tVZ0NpQVRHd3dCQ3lBTEtBSUVDd1IvSUFNZ0VDQUhLQUlFUVJkMlFRUnhJQWRCQkdzaUNpZ0NBRUVaZGtFQmNTQUdRUkoyUVJCeElBWkJGblpCd0FCeElCUkJxZ0Z4Y25KeWNpSVVRZUM1QVdvdEFBQkJBblJxSWd3b0FnQWlDeWdDQUNJQmF5RURJQlJCNExzQmFpMEFBQ0VUSUFrZ0JTQVJBbjhnQVNBQ1FSQjJTd1JBSUFzb0FnUWhGQ0FNSUF0QkNFRU1JQUVnQTBzaURodHFLQUlBTmdJQUEwQUNRQ0FJRFFBZ0JDZ0NFQ0lJUVFGcUlRc2dDQzBBQVNFRElBZ3RBQUJCL3dGR0JFQWdBMEdRQVU4RVFDQUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFSURBSUxJQVFnQ3pZQ0VDQURRUWwwSUFKcUlRSkJCeUVJREFFTElBUWdDellDRUVFSUlRZ2dBMEVJZENBQ2FpRUNDeUFJUVFGcklRZ2dBa0VCZENFQ0lBRkJBWFFpQVVHQWdBSkpEUUFMSUFFaEF5QVVJQlJGSUE0YkRBRUxJQUlnQVVFUWRHc2hBaUFEUVlDQUFuRkZCRUFnQ3lnQ0JDRVVJQXdnQzBFTVFRZ2dBU0FEU3lJT0cyb29BZ0EyQWdBRFFBSkFJQWdOQUNBRUtBSVFJZ2hCQVdvaEN5QUlMUUFCSVFFZ0NDMEFBRUgvQVVZRVFDQUJRWkFCVHdSQUlBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFnTUFnc2dCQ0FMTmdJUUlBRkJDWFFnQW1vaEFrRUhJUWdNQVFzZ0JDQUxOZ0lRUVFnaENDQUJRUWgwSUFKcUlRSUxJQWhCQVdzaENDQUNRUUYwSVFJZ0EwRUJkQ0lEUVlDQUFra05BQXNnRkVVZ0ZDQU9Hd3dCQ3lBTEtBSUVDeUFUY3lJQkd6WUNnQVFnQ2lBS0tBSUFRWUFRY2pZQ0FDQUhJQWNvQWdSQmdBUnlOZ0lFSUFZZ0FVRVpkSEpCZ0FoeUJTQUdDMEdBZ0lEQUFISWhCZ3NDUUNBR1FZREFnSUFFY1EwQUlBWkJnTHdQY1VVTkFDQURJQkFnQkNnQ2JDQUdRUWwySWhSQjd3TnhhaTBBQUVFQ2RHb2lEQ2dDQUNJTEtBSUFJZ0ZySVFNQ2Z5QUJJQUpCRUhaTEJFQWdDeWdDQkNFS0lBd2dDMEVJUVF3Z0FTQURTeUlURzJvb0FnQTJBZ0FEUUFKQUlBZ05BQ0FFS0FJUUlnaEJBV29oQ3lBSUxRQUJJUU1nQ0MwQUFFSC9BVVlFUUNBRFFaQUJUd1JBSUFRZ0JDZ0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUWdNQWdzZ0JDQUxOZ0lRSUFOQkNYUWdBbW9oQWtFSElRZ01BUXNnQkNBTE5nSVFRUWdoQ0NBRFFRaDBJQUpxSVFJTElBaEJBV3NoQ0NBQ1FRRjBJUUlnQVVFQmRDSUJRWUNBQWtrTkFBc2dBU0VESUFvZ0NrVWdFeHNNQVFzZ0FpQUJRUkIwYXlFQ0lBTkJnSUFDY1VVRVFDQUxLQUlFSVFvZ0RDQUxRUXhCQ0NBQklBTkxJaE1iYWlnQ0FEWUNBQU5BQWtBZ0NBMEFJQVFvQWhBaUNFRUJhaUVMSUFndEFBRWhBU0FJTFFBQVFmOEJSZ1JBSUFGQmtBRlBCRUFnQkNBRUtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hDQXdDQ3lBRUlBczJBaEFnQVVFSmRDQUNhaUVDUVFjaENBd0JDeUFFSUFzMkFoQkJDQ0VJSUFGQkNIUWdBbW9oQWdzZ0NFRUJheUVJSUFKQkFYUWhBaUFEUVFGMElnTkJnSUFDU1EwQUN5QUtSU0FLSUJNYkRBRUxJQXNvQWdRTEJIOGdBeUFRSUFjb0FnUkJHblpCQkhFZ0IwRUVheUlLS0FJQVFSeDJRUUZ4SUFaQkZYWkJFSEVnQmtFWmRrSEFBSEVnRkVHcUFYRnljbkp5SWhSQjRMa0JhaTBBQUVFQ2RHb2lEQ2dDQUNJTEtBSUFJZ0ZySVFNZ0ZFSGd1d0ZxTFFBQUlSTWdDU0FGSUJFQ2Z5QUJJQUpCRUhaTEJFQWdDeWdDQkNFVUlBd2dDMEVJUVF3Z0FTQURTeUlPRzJvb0FnQTJBZ0FEUUFKQUlBZ05BQ0FFS0FJUUlnaEJBV29oQ3lBSUxRQUJJUU1nQ0MwQUFFSC9BVVlFUUNBRFFaQUJUd1JBSUFRZ0JDZ0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUWdNQWdzZ0JDQUxOZ0lRSUFOQkNYUWdBbW9oQWtFSElRZ01BUXNnQkNBTE5nSVFRUWdoQ0NBRFFRaDBJQUpxSVFJTElBaEJBV3NoQ0NBQ1FRRjBJUUlnQVVFQmRDSUJRWUNBQWtrTkFBc2dBU0VESUJRZ0ZFVWdEaHNNQVFzZ0FpQUJRUkIwYXlFQ0lBTkJnSUFDY1VVRVFDQUxLQUlFSVJRZ0RDQUxRUXhCQ0NBQklBTkxJZzRiYWlnQ0FEWUNBQU5BQWtBZ0NBMEFJQVFvQWhBaUNFRUJhaUVMSUFndEFBRWhBU0FJTFFBQVFmOEJSZ1JBSUFGQmtBRlBCRUFnQkNBRUtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hDQXdDQ3lBRUlBczJBaEFnQVVFSmRDQUNhaUVDUVFjaENBd0JDeUFFSUFzMkFoQkJDQ0VJSUFGQkNIUWdBbW9oQWdzZ0NFRUJheUVJSUFKQkFYUWhBaUFEUVFGMElnTkJnSUFDU1EwQUN5QVVSU0FVSUE0YkRBRUxJQXNvQWdRTElCTnpJZ0ViTmdLQUJpQUtJQW9vQWdCQmdJQUJjallDQUNBSElBY29BZ1JCZ0NCeU5nSUVJQWNnQnlnQ2hBSkJCSEkyQW9RQ0lBY2dCeWdDakFKQkFYSTJBb3dDSUFjZ0J5Z0NpQUlnQVVFU2RISkJBbkkyQW9nQ0lBWWdBVUVjZEhKQmdNQUFjZ1VnQmd0QmdJQ0FnQVJ5SVFZTElBY2dCallDQUFzZ0IwRUVhaUVHSUFsQkJHb2hBU0FYUVFGcUloZEJ3QUJIRFFBTElBZEJER29oQmlBSlFZUUdhaUVCSUExQlBFa2hWQ0FOUVFScUlRMGdWQTBBQ3dzZ0JDQUlOZ0lJSUFRZ0F6WUNCQ0FFSUFJMkFnQWdCQ0FNTmdKb0N3d0NDeUFpQkVCQkFTQVpkRUVCZGlFSklBUW9BbndpRVVFQ2RDSU1JQVFvQW5ocVFReHFJUUVnQkNnQ2RDRUdRUUFoRFNBRUtBS0FBU0lEUVFSUEJFQWdFVVVOQkNBUlFRTnNJUVVnRVVFQmRDRUxRUUFnQ1dzaEFnTkFJQXRCQW5RaENrRUFJUU1EUUFKQUlBRWlCeWdDQUNJQlJRMEFJQUZCa0lDQUFYRkJFRVlFUUNBRUtBSUFJUUVDUUNBRUtBSUlJaEFOQUNBQlFmOEJSaUVRSUFRb0FoQWlDQzBBQUNFQkFrQWdFRVVFUUNBRUlBRTJBZ0FnQkNBSVFRRnFOZ0lRREFFTElBRkJqd0ZOQkVBZ0JDQUJOZ0lBSUFRZ0NFRUJhallDRUVFSElSQU1BZ3RCL3dFaEFTQUVRZjhCTmdJQUMwRUlJUkFMSUFRZ0VFRUJheUlJTmdJSUlBWWdBaUFKSUFFZ0NIWkJBWEVnQmlnQ0FDSUJRUjkyUmhzZ0FXbzJBZ0FnQnlBSEtBSUFRWUNBd0FCeUlnRTJBZ0FMSUFGQmdJR0FDSEZCZ0FGR0JFQWdCQ2dDQUNFQkFrQWdCQ2dDQ0NJUURRQWdBVUgvQVVZaEVDQUVLQUlRSWdndEFBQWhBUUpBSUJCRkJFQWdCQ0FCTmdJQUlBUWdDRUVCYWpZQ0VBd0JDeUFCUVk4QlRRUkFJQVFnQVRZQ0FDQUVJQWhCQVdvMkFoQkJCeUVRREFJTFFmOEJJUUVnQkVIL0FUWUNBQXRCQ0NFUUN5QUVJQkJCQVdzaUNEWUNDQ0FHSUF4cUloQWdBaUFKSUFFZ0NIWkJBWEVnRUNnQ0FDSUJRUjkyUmhzZ0FXbzJBZ0FnQnlBSEtBSUFRWUNBZ0FSeUlnRTJBZ0FMSUFGQmdJaUF3QUJ4UVlBSVJnUkFJQVFvQWdBaEFRSkFJQVFvQWdnaUVBMEFJQUZCL3dGR0lSQWdCQ2dDRUNJSUxRQUFJUUVDUUNBUVJRUkFJQVFnQVRZQ0FDQUVJQWhCQVdvMkFoQU1BUXNnQVVHUEFVMEVRQ0FFSUFFMkFnQWdCQ0FJUVFGcU5nSVFRUWNoRUF3Q0MwSC9BU0VCSUFSQi93RTJBZ0FMUVFnaEVBc2dCQ0FRUVFGcklnZzJBZ2dnQmlBS2FpSVFJQUlnQ1NBQklBaDJRUUZ4SUJBb0FnQWlBVUVmZGtZYklBRnFOZ0lBSUFjZ0J5Z0NBRUdBZ0lBZ2NpSUJOZ0lBQ3lBQlFZREFnSUFFY1VHQXdBQkhEUUFnQmlBRlFRSjBhaUVRSUFRb0FnQWhBUUpBSUFRb0FnZ2lDQTBBSUFGQi93RkdJUlFnQkNnQ0VDSUlMUUFBSVFFQ1FDQVVSUVJBSUFRZ0FUWUNBQ0FFSUFoQkFXbzJBaEFNQVFzZ0FVR1BBVTBFUUNBRUlBRTJBZ0FnQkNBSVFRRnFOZ0lRUVFjaENBd0NDMEgvQVNFQklBUkIvd0UyQWdBTFFRZ2hDQXNnQkNBSVFRRnJJZ2cyQWdnZ0VDQUNJQWtnQVNBSWRrRUJjU0FRS0FJQUlnRkJIM1pHR3lBQmFqWUNBQ0FISUFjb0FnQkJnSUNBZ0FKeU5nSUFDeUFHUVFScUlRWWdCMEVFYWlFQklBTkJBV29pQXlBUlJ3MEFDeUFIUVF4cUlRRWdCaUFGUVFKMGFpRUdJQTFCQkdvaURTQUVLQUtBQVNJRFFYeHhTUTBBQ3dzZ0F5QU5UUTBDSUJGRkRRSkJBQ0VUUVFBZ0NXc2hCU0FESVFjRFFBSkFJQWNnRFVZRVFDQU5JUWNNQVFzZ0FTZ0NBQ0VRUVFBaEFnTkFRWkNBZ0FFZ0FrRURiQ0lIZENBUWNVRVFJQWQwUmdSQUlBWWdBaUFSYkVFQ2RHb2hFQ0FFS0FJQUlRTUNRQ0FFS0FJSUlnZ05BQ0FEUWY4QlJ5RU1JQVFvQWhBaUNDMEFBQ0VEQWtBZ0RFVUVRQ0FEUVpBQlR3UkFRZjhCSVFNZ0JFSC9BVFlDQUF3Q0N5QUVJQU0yQWdBZ0JDQUlRUUZxTmdJUVFRY2hDQXdDQ3lBRUlBTTJBZ0FnQkNBSVFRRnFOZ0lRQzBFSUlRZ0xJQVFnQ0VFQmF5SUlOZ0lJSUJBZ0JTQUpJQU1nQ0haQkFYRWdFQ2dDQUNJRFFSOTJSaHNnQTJvMkFnQWdBU0FCS0FJQVFZQ0F3QUFnQjNSeUloQTJBZ0FnQkNnQ2dBRWhBd3NnQXlFSElBSkJBV29pQWlBRElBMXJTUTBBQ3dzZ0JrRUVhaUVHSUFGQkJHb2hBU0FUUVFGcUloTWdFVWNOQUFzTUFnc2dCQ2dDZUNFSUlBUW9BblFoQnlBRUtBS0FBU0VEQWtBZ0JDZ0NmQ0lNUWNBQVJ3MEFJQU5Cd0FCSERRQWdDRUdNQW1vaEEwRUFJUk5CQUVFQklCbDBRUUYySWdWcklRd2dCQ2dDQ0NFQ0lBUW9BZ1FoQmlBRUtBSUFJUUVnQkNnQ2FDRU5BMEJCQUNFSUEwQWdCeUVKSUFNaUVDZ0NBQ0lIQkVBZ0F5RlZJQWRCa0lDQUFYRkJFRVlFUUNBR0lBOUJFRUVQUVE0Z0IwSHZBM0ViSUFkQmdJREFBSEViUVFKMGFpSU5LQUlBSWhFb0FnQWlBMnNoQmdKL0lBTWdBVUVRZGtzRVFDQVJLQUlFSVFzZ0RTQVJRUWhCRENBRElBWkxJZ29iYWlnQ0FEWUNBQU5BQWtBZ0FnMEFJQVFvQWhBaUFrRUJhaUVSSUFJdEFBRWhCaUFDTFFBQVFmOEJSZ1JBSUFaQmtBRlBCRUFnQkNBRUtBSU1RUUZxTmdJTUlBRkJnUDREYWlFQlFRZ2hBZ3dDQ3lBRUlCRTJBaEFnQmtFSmRDQUJhaUVCUVFjaEFnd0JDeUFFSUJFMkFoQkJDQ0VDSUFaQkNIUWdBV29oQVFzZ0FrRUJheUVDSUFGQkFYUWhBU0FEUVFGMElnTkJnSUFDU1EwQUN5QURJUVlnQ3lBTFJTQUtHd3dCQ3lBQklBTkJFSFJySVFFZ0JrR0FnQUp4UlFSQUlCRW9BZ1FoQ3lBTklCRkJERUVJSUFNZ0Jrc2lDaHRxS0FJQU5nSUFBMEFDUUNBQ0RRQWdCQ2dDRUNJQ1FRRnFJUkVnQWkwQUFTRURJQUl0QUFCQi93RkdCRUFnQTBHUUFVOEVRQ0FFSUFRb0FneEJBV28yQWd3Z0FVR0EvZ05xSVFGQkNDRUNEQUlMSUFRZ0VUWUNFQ0FEUVFsMElBRnFJUUZCQnlFQ0RBRUxJQVFnRVRZQ0VFRUlJUUlnQTBFSWRDQUJhaUVCQ3lBQ1FRRnJJUUlnQVVFQmRDRUJJQVpCQVhRaUJrR0FnQUpKRFFBTElBdEZJQXNnQ2hzTUFRc2dFU2dDQkFzaEF5QUpJQXdnQlNBRElBa29BZ0FpRVVFZmRrWWJJQkZxTmdJQUlBZEJnSURBQUhJaEJ3c2dCMEdBZ1lBSWNVR0FBVVlFUUNBR0lBOUJFRUVQUVE0Z0IwSDRIbkViSUFkQmdJQ0FCSEViUVFKMGFpSU5LQUlBSWhFb0FnQWlBMnNoQmdKL0lBTWdBVUVRZGtzRVFDQVJLQUlFSVFzZ0RTQVJRUWhCRENBRElBWkxJZ29iYWlnQ0FEWUNBQU5BQWtBZ0FnMEFJQVFvQWhBaUFrRUJhaUVSSUFJdEFBRWhCaUFDTFFBQVFmOEJSZ1JBSUFaQmtBRlBCRUFnQkNBRUtBSU1RUUZxTmdJTUlBRkJnUDREYWlFQlFRZ2hBZ3dDQ3lBRUlCRTJBaEFnQmtFSmRDQUJhaUVCUVFjaEFnd0JDeUFFSUJFMkFoQkJDQ0VDSUFaQkNIUWdBV29oQVFzZ0FrRUJheUVDSUFGQkFYUWhBU0FEUVFGMElnTkJnSUFDU1EwQUN5QURJUVlnQ3lBTFJTQUtHd3dCQ3lBQklBTkJFSFJySVFFZ0JrR0FnQUp4UlFSQUlCRW9BZ1FoQ3lBTklCRkJERUVJSUFNZ0Jrc2lDaHRxS0FJQU5nSUFBMEFDUUNBQ0RRQWdCQ2dDRUNJQ1FRRnFJUkVnQWkwQUFTRURJQUl0QUFCQi93RkdCRUFnQTBHUUFVOEVRQ0FFSUFRb0FneEJBV28yQWd3Z0FVR0EvZ05xSVFGQkNDRUNEQUlMSUFRZ0VUWUNFQ0FEUVFsMElBRnFJUUZCQnlFQ0RBRUxJQVFnRVRZQ0VFRUlJUUlnQTBFSWRDQUJhaUVCQ3lBQ1FRRnJJUUlnQVVFQmRDRUJJQVpCQVhRaUJrR0FnQUpKRFFBTElBdEZJQXNnQ2hzTUFRc2dFU2dDQkFzaEF5QUpJQXdnQlNBRElBa29Bb0FDSWhGQkgzWkdHeUFSYWpZQ2dBSWdCMEdBZ0lBRWNpRUhDeUFIUVlDSWdNQUFjVUdBQ0VZRVFDQUdJQTlCRUVFUFFRNGdCMEhBOXdGeEd5QUhRWUNBZ0NCeEcwRUNkR29pRFNnQ0FDSVJLQUlBSWdOcklRWUNmeUFESUFGQkVIWkxCRUFnRVNnQ0JDRUxJQTBnRVVFSVFRd2dBeUFHU3lJS0cyb29BZ0EyQWdBRFFBSkFJQUlOQUNBRUtBSVFJZ0pCQVdvaEVTQUNMUUFCSVFZZ0FpMEFBRUgvQVVZRVFDQUdRWkFCVHdSQUlBUWdCQ2dDREVFQmFqWUNEQ0FCUVlEK0Eyb2hBVUVJSVFJTUFnc2dCQ0FSTmdJUUlBWkJDWFFnQVdvaEFVRUhJUUlNQVFzZ0JDQVJOZ0lRUVFnaEFpQUdRUWgwSUFGcUlRRUxJQUpCQVdzaEFpQUJRUUYwSVFFZ0EwRUJkQ0lEUVlDQUFra05BQXNnQXlFR0lBc2dDMFVnQ2hzTUFRc2dBU0FEUVJCMGF5RUJJQVpCZ0lBQ2NVVUVRQ0FSS0FJRUlRc2dEU0FSUVF4QkNDQURJQVpMSWdvYmFpZ0NBRFlDQUFOQUFrQWdBZzBBSUFRb0FoQWlBa0VCYWlFUklBSXRBQUVoQXlBQ0xRQUFRZjhCUmdSQUlBTkJrQUZQQkVBZ0JDQUVLQUlNUVFGcU5nSU1JQUZCZ1A0RGFpRUJRUWdoQWd3Q0N5QUVJQkUyQWhBZ0EwRUpkQ0FCYWlFQlFRY2hBZ3dCQ3lBRUlCRTJBaEJCQ0NFQ0lBTkJDSFFnQVdvaEFRc2dBa0VCYXlFQ0lBRkJBWFFoQVNBR1FRRjBJZ1pCZ0lBQ1NRMEFDeUFMUlNBTElBb2JEQUVMSUJFb0FnUUxJUU1nQ1NBTUlBVWdBeUFKS0FLQUJDSVJRUjkyUmhzZ0VXbzJBb0FFSUFkQmdJQ0FJSEloQndzZ1ZTQUhRWURBZ0lBRWNVR0F3QUJHQkg4Z0JpQVBRUkJCRDBFT0lBZEJnTHdQY1JzZ0IwR0FnSUNBQW5FYlFRSjBhaUlOS0FJQUloRW9BZ0FpQTJzaEJnSi9JQU1nQVVFUWRrc0VRQ0FSS0FJRUlRc2dEU0FSUVFoQkRDQURJQVpMSWdvYmFpZ0NBRFlDQUFOQUFrQWdBZzBBSUFRb0FoQWlBa0VCYWlFUklBSXRBQUVoQmlBQ0xRQUFRZjhCUmdSQUlBWkJrQUZQQkVBZ0JDQUVLQUlNUVFGcU5nSU1JQUZCZ1A0RGFpRUJRUWdoQWd3Q0N5QUVJQkUyQWhBZ0JrRUpkQ0FCYWlFQlFRY2hBZ3dCQ3lBRUlCRTJBaEJCQ0NFQ0lBWkJDSFFnQVdvaEFRc2dBa0VCYXlFQ0lBRkJBWFFoQVNBRFFRRjBJZ05CZ0lBQ1NRMEFDeUFESVFZZ0N5QUxSU0FLR3d3QkN5QUJJQU5CRUhScklRRWdCa0dBZ0FKeFJRUkFJQkVvQWdRaEN5QU5JQkZCREVFSUlBTWdCa3NpQ2h0cUtBSUFOZ0lBQTBBQ1FDQUNEUUFnQkNnQ0VDSUNRUUZxSVJFZ0FpMEFBU0VESUFJdEFBQkIvd0ZHQkVBZ0EwR1FBVThFUUNBRUlBUW9BZ3hCQVdvMkFnd2dBVUdBL2dOcUlRRkJDQ0VDREFJTElBUWdFVFlDRUNBRFFRbDBJQUZxSVFGQkJ5RUNEQUVMSUFRZ0VUWUNFRUVJSVFJZ0EwRUlkQ0FCYWlFQkN5QUNRUUZySVFJZ0FVRUJkQ0VCSUFaQkFYUWlCa0dBZ0FKSkRRQUxJQXRGSUFzZ0Noc01BUXNnRVNnQ0JBc2hBeUFKSUF3Z0JTQURJQWtvQW9BR0loRkJIM1pHR3lBUmFqWUNnQVlnQjBHQWdJQ0FBbklGSUFjTE5nSUFDeUFRUVFScUlRTWdDVUVFYWlFSElBaEJBV29pQ0VIQUFFY05BQXNnRUVFTWFpRURJQWxCaEFacUlRY2dFMEU4U1NGV0lCTkJCR29oRXlCV0RRQUxJQVFnQWpZQ0NDQUVJQVkyQWdRZ0JDQUJOZ0lBSUFRZ0RUWUNhQXdDQzBFQklCbDBRUUYySVFzZ0NDQU1RUUowSWc1cVFReHFJUWtnQkNnQ0NDRUNJQVFvQWdRaEJpQUVLQUlBSVFFZ0JDZ0NhQ0VOUVFBaEVRSkFJQU5CQkVrTkFDQU1CRUFnREVFRGJDRVVJQXhCQVhRaEYwRUFJQXRySVFvRFFDQVhRUUowSVJKQkFDRUlBMEFnQ1NJRktBSUFJaEFFUUNBUVFaQ0FnQUZ4UVJCR0JFQWdCaUFQUVJCQkQwRU9JQkJCN3dOeEd5QVFRWUNBd0FCeEcwRUNkR29pRFNnQ0FDSUpLQUlBSWdOcklRWUNmeUFESUFGQkVIWk5CRUFnQVNBRFFSQjBheUVCSUFaQmdJQUNjUVJBSUFrb0FnUU1BZ3NnQ1NnQ0JDRVRJQTBnQ1VFTVFRZ2dBeUFHU3lJVkcyb29BZ0EyQWdBRFFBSkFJQUlOQUNBRUtBSVFJZ2xCQVdvaEFpQUpMUUFCSVFNZ0NTMEFBRUgvQVVjRVFDQUVJQUkyQWhCQkNDRUNJQU5CQ0hRZ0FXb2hBUXdCQ3lBRFFZOEJUUVJBSUFRZ0FqWUNFQ0FEUVFsMElBRnFJUUZCQnlFQ0RBRUxJQVFnQkNnQ0RFRUJhallDRENBQlFZRCtBMm9oQVVFSUlRSUxJQUpCQVdzaEFpQUJRUUYwSVFFZ0JrRUJkQ0lHUVlDQUFra05BQXNnRTBVZ0V5QVZHd3dCQ3lBSktBSUVJUk1nRFNBSlFRaEJEQ0FESUFaTEloVWJhaWdDQURZQ0FBTkFBa0FnQWcwQUlBUW9BaEFpQ1VFQmFpRUNJQWt0QUFFaEJpQUpMUUFBUWY4QlJ3UkFJQVFnQWpZQ0VFRUlJUUlnQmtFSWRDQUJhaUVCREFFTElBWkJqd0ZOQkVBZ0JDQUNOZ0lRSUFaQkNYUWdBV29oQVVFSElRSU1BUXNnQkNBRUtBSU1RUUZxTmdJTUlBRkJnUDREYWlFQlFRZ2hBZ3NnQWtFQmF5RUNJQUZCQVhRaEFTQURRUUYwSWdOQmdJQUNTUTBBQ3lBRElRWWdFeUFUUlNBVkd3c2hBeUFISUFvZ0N5QURJQWNvQWdBaUNVRWZka1liSUFscU5nSUFJQkJCZ0lEQUFISWhFQXNnRUVHQWdZQUljVUdBQVVZRVFDQUdJQTlCRUVFUFFRNGdFRUg0SG5FYklCQkJnSUNBQkhFYlFRSjBhaUlOS0FJQUlna29BZ0FpQTJzaEJnSi9JQU1nQVVFUWRrMEVRQ0FCSUFOQkVIUnJJUUVnQmtHQWdBSnhCRUFnQ1NnQ0JBd0NDeUFKS0FJRUlSTWdEU0FKUVF4QkNDQURJQVpMSWhVYmFpZ0NBRFlDQUFOQUFrQWdBZzBBSUFRb0FoQWlDVUVCYWlFQ0lBa3RBQUVoQXlBSkxRQUFRZjhCUndSQUlBUWdBallDRUVFSUlRSWdBMEVJZENBQmFpRUJEQUVMSUFOQmp3Rk5CRUFnQkNBQ05nSVFJQU5CQ1hRZ0FXb2hBVUVISVFJTUFRc2dCQ0FFS0FJTVFRRnFOZ0lNSUFGQmdQNERhaUVCUVFnaEFnc2dBa0VCYXlFQ0lBRkJBWFFoQVNBR1FRRjBJZ1pCZ0lBQ1NRMEFDeUFUUlNBVElCVWJEQUVMSUFrb0FnUWhFeUFOSUFsQkNFRU1JQU1nQmtzaUZSdHFLQUlBTmdJQUEwQUNRQ0FDRFFBZ0JDZ0NFQ0lKUVFGcUlRSWdDUzBBQVNFR0lBa3RBQUJCL3dGSEJFQWdCQ0FDTmdJUVFRZ2hBaUFHUVFoMElBRnFJUUVNQVFzZ0JrR1BBVTBFUUNBRUlBSTJBaEFnQmtFSmRDQUJhaUVCUVFjaEFnd0JDeUFFSUFRb0FneEJBV28yQWd3Z0FVR0EvZ05xSVFGQkNDRUNDeUFDUVFGcklRSWdBVUVCZENFQklBTkJBWFFpQTBHQWdBSkpEUUFMSUFNaEJpQVRJQk5GSUJVYkN5RURJQWNnRG1vaUNTQUtJQXNnQXlBSktBSUFJZ2xCSDNaR0d5QUphallDQUNBUVFZQ0FnQVJ5SVJBTElCQkJnSWlBd0FCeFFZQUlSZ1JBSUFZZ0QwRVFRUTlCRGlBUVFjRDNBWEViSUJCQmdJQ0FJSEViUVFKMGFpSU5LQUlBSWdrb0FnQWlBMnNoQmdKL0lBTWdBVUVRZGswRVFDQUJJQU5CRUhScklRRWdCa0dBZ0FKeEJFQWdDU2dDQkF3Q0N5QUpLQUlFSVJNZ0RTQUpRUXhCQ0NBRElBWkxJaFViYWlnQ0FEWUNBQU5BQWtBZ0FnMEFJQVFvQWhBaUNVRUJhaUVDSUFrdEFBRWhBeUFKTFFBQVFmOEJSd1JBSUFRZ0FqWUNFRUVJSVFJZ0EwRUlkQ0FCYWlFQkRBRUxJQU5CandGTkJFQWdCQ0FDTmdJUUlBTkJDWFFnQVdvaEFVRUhJUUlNQVFzZ0JDQUVLQUlNUVFGcU5nSU1JQUZCZ1A0RGFpRUJRUWdoQWdzZ0FrRUJheUVDSUFGQkFYUWhBU0FHUVFGMElnWkJnSUFDU1EwQUN5QVRSU0FUSUJVYkRBRUxJQWtvQWdRaEV5QU5JQWxCQ0VFTUlBTWdCa3NpRlJ0cUtBSUFOZ0lBQTBBQ1FDQUNEUUFnQkNnQ0VDSUpRUUZxSVFJZ0NTMEFBU0VHSUFrdEFBQkIvd0ZIQkVBZ0JDQUNOZ0lRUVFnaEFpQUdRUWgwSUFGcUlRRU1BUXNnQmtHUEFVMEVRQ0FFSUFJMkFoQWdCa0VKZENBQmFpRUJRUWNoQWd3QkN5QUVJQVFvQWd4QkFXbzJBZ3dnQVVHQS9nTnFJUUZCQ0NFQ0N5QUNRUUZySVFJZ0FVRUJkQ0VCSUFOQkFYUWlBMEdBZ0FKSkRRQUxJQU1oQmlBVElCTkZJQlViQ3lFRElBY2dFbW9pQ1NBS0lBc2dBeUFKS0FJQUlnbEJIM1pHR3lBSmFqWUNBQ0FRUVlDQWdDQnlJUkFMSUFVZ0VFR0F3SUNBQkhGQmdNQUFSZ1IvSUFZZ0QwRVFRUTlCRGlBUVFZQzhEM0ViSUJCQmdJQ0FnQUp4RzBFQ2RHb2lEU2dDQUNJSktBSUFJZ05ySVFZQ2Z5QURJQUZCRUhaTkJFQWdBU0FEUVJCMGF5RUJJQVpCZ0lBQ2NRUkFJQWtvQWdRTUFnc2dDU2dDQkNFVElBMGdDVUVNUVFnZ0F5QUdTeUlWRzJvb0FnQTJBZ0FEUUFKQUlBSU5BQ0FFS0FJUUlnbEJBV29oQWlBSkxRQUJJUU1nQ1MwQUFFSC9BVWNFUUNBRUlBSTJBaEJCQ0NFQ0lBTkJDSFFnQVdvaEFRd0JDeUFEUVk4QlRRUkFJQVFnQWpZQ0VDQURRUWwwSUFGcUlRRkJCeUVDREFFTElBUWdCQ2dDREVFQmFqWUNEQ0FCUVlEK0Eyb2hBVUVJSVFJTElBSkJBV3NoQWlBQlFRRjBJUUVnQmtFQmRDSUdRWUNBQWtrTkFBc2dFMFVnRXlBVkd3d0JDeUFKS0FJRUlSTWdEU0FKUVFoQkRDQURJQVpMSWhVYmFpZ0NBRFlDQUFOQUFrQWdBZzBBSUFRb0FoQWlDVUVCYWlFQ0lBa3RBQUVoQmlBSkxRQUFRZjhCUndSQUlBUWdBallDRUVFSUlRSWdCa0VJZENBQmFpRUJEQUVMSUFaQmp3Rk5CRUFnQkNBQ05nSVFJQVpCQ1hRZ0FXb2hBVUVISVFJTUFRc2dCQ0FFS0FJTVFRRnFOZ0lNSUFGQmdQNERhaUVCUVFnaEFnc2dBa0VCYXlFQ0lBRkJBWFFoQVNBRFFRRjBJZ05CZ0lBQ1NRMEFDeUFESVFZZ0V5QVRSU0FWR3dzaEF5QUhJQlJCQW5ScUlna2dDaUFMSUFNZ0NTZ0NBQ0lKUVI5MlJoc2dDV28yQWdBZ0VFR0FnSUNBQW5JRklCQUxOZ0lBQ3lBRlFRUnFJUWtnQjBFRWFpRUhJQWhCQVdvaUNDQU1SdzBBQ3lBRlFReHFJUWtnQnlBVVFRSjBhaUVISUJGQkJHb2lFU0FFS0FLQUFTSURRWHh4U1EwQUN3d0JDMEVFSUFOQmZIRWlDU0FKUVFSTkcwRUJheUlKUVh4eFFRUnFJUkVnQ0NBSlFRRjBRWGh4YWtFVWFpRUpDeUFFSUFJMkFnZ2dCQ0FHTmdJRUlBUWdBVFlDQUNBRUlBMDJBbWdnREVVTkFTQURJQkZORFFGQkFDRVRRUUFnQzJzaEZDQURJUUVEUUFKQUlBRWdFVVlFUUNBUklRRU1BUXNnQ1NnQ0FDRUNRUUFoRUFOQVFaQ0FnQUVnRUVFRGJDSUlkQ0FDY1VFUUlBaDBSZ1JBSUFjZ0RDQVFiRUVDZEdvaEJTQUVJQTlCRUVFUFFRNGdBaUFJZGlJQlFlOERjUnNnQVVHQWdNQUFjUnRCQW5ScUlnMDJBbWdnQkNBRUtBSUVJQTBvQWdBaUFpZ0NBQ0lCYXlJRE5nSUVBbjhnQVNBRUtBSUFJZ1pCRUhaTEJFQWdBaWdDQkNFS0lBUWdBVFlDQkNBTklBSkJDRUVNSUFFZ0Ewc2lEaHRxS0FJQU5nSUFJQVFvQWdnaEFnTkFBa0FnQWcwQUlBUW9BaEFpQWtFQmFpRU5JQUl0QUFFaEF5QUNMUUFBUWY4QlJnUkFJQU5Ca0FGUEJFQWdCQ0FFS0FJTVFRRnFOZ0lNSUFaQmdQNERhaUVHUVFnaEFnd0NDeUFFSUEwMkFoQWdBMEVKZENBR2FpRUdRUWNoQWd3QkN5QUVJQTAyQWhCQkNDRUNJQU5CQ0hRZ0Jtb2hCZ3NnQkNBQ1FRRnJJZ0kyQWdnZ0JDQUdRUUYwSWdZMkFnQWdCQ0FCUVFGMElnRTJBZ1FnQVVHQWdBSkpEUUFMSUFvZ0NrVWdEaHNNQVFzZ0JDQUdJQUZCRUhScklnWTJBZ0FnQTBHQWdBSnhSUVJBSUFJb0FnUWhDaUFOSUFKQkRFRUlJQUVnQTBzaURodHFLQUlBTmdJQUlBUW9BZ2doQWdOQUFrQWdBZzBBSUFRb0FoQWlBa0VCYWlFTklBSXRBQUVoQVNBQ0xRQUFRZjhCUmdSQUlBRkJrQUZQQkVBZ0JDQUVLQUlNUVFGcU5nSU1JQVpCZ1A0RGFpRUdRUWdoQWd3Q0N5QUVJQTAyQWhBZ0FVRUpkQ0FHYWlFR1FRY2hBZ3dCQ3lBRUlBMDJBaEJCQ0NFQ0lBRkJDSFFnQm1vaEJnc2dCQ0FDUVFGcklnSTJBZ2dnQkNBR1FRRjBJZ1kyQWdBZ0JDQURRUUYwSWdNMkFnUWdBMEdBZ0FKSkRRQUxJQXBGSUFvZ0Roc01BUXNnQWlnQ0JBc2hBU0FGSUJRZ0N5QUJJQVVvQWdBaUEwRWZka1liSUFOcU5nSUFJQWtnQ1NnQ0FFR0FnTUFBSUFoMGNpSUNOZ0lBSUFRb0FvQUJJUU1MSUJCQkFXb2lFQ0FESWdFZ0VXdEpEUUFMQ3lBSlFRUnFJUWtnQjBFRWFpRUhJQk5CQVdvaUV5QU1SdzBBQ3d3QkMwRUFJUkZCQUNFWEFrQUNRQUpBQWtBZ0JDZ0NmQ0lVUWNBQVJ3MEFJQVFvQW9BQlFjQUFSdzBBUVFCQkFTQVpkQ0lCUVFGMklBRnlJaFJySVJNZ0JFSGtBR29oQ0NBRVFlQUFhaUVRSUFSQkhHb2hDeUFFS0FKNFFZd0NhaUVHSUFRb0FnZ2hCU0FFS0FJRUlRRWdCQ2dDQUNFQ0lBUW9BbWdoQ1NBRUtBSjBJUU1nRmtFSWNRMEJBMEJCQUNFTUEwQWdBeUVSQWtBQ1FBSi9Ba0FDUUNBR0lnMG9BZ0FpQmtVRVFDQUJJQkFvQWdBaUF5Z0NBQ0lHYXlFQkFuOGdCaUFDUVJCMlN3UkFJQU1vQWdRaEJ5QVFJQU5CQ0VFTUlBRWdCa2tpQ2h0cUtBSUFOZ0lBQTBBQ1FDQUZEUUFnQkNnQ0VDSURRUUZxSVFrZ0F5MEFBU0VCSUFNdEFBQkIvd0ZHQkVBZ0FVR1FBVThFUUNBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VGREFJTElBUWdDVFlDRUNBQlFRbDBJQUpxSVFKQkJ5RUZEQUVMSUFRZ0NUWUNFRUVJSVFVZ0FVRUlkQ0FDYWlFQ0N5QUZRUUZySVFVZ0FrRUJkQ0VDSUFaQkFYUWlCa0dBZ0FKSkRRQUxJQVloQVNBSElBZEZJQW9iREFFTElBSWdCa0VRZEdzaEFpQUJRWUNBQW5GRkJFQWdBeWdDQkNFSElCQWdBMEVNUVFnZ0FTQUdTU0lLRzJvb0FnQTJBZ0FEUUFKQUlBVU5BQ0FFS0FJUUlnWkJBV29oQ1NBR0xRQUJJUU1nQmkwQUFFSC9BVVlFUUNBRFFaQUJUd1JBSUFRZ0JDZ0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVVNQWdzZ0JDQUpOZ0lRSUFOQkNYUWdBbW9oQWtFSElRVU1BUXNnQkNBSk5nSVFRUWdoQlNBRFFRaDBJQUpxSVFJTElBVkJBV3NoQlNBQ1FRRjBJUUlnQVVFQmRDSUJRWUNBQWtrTkFBc2dCMFVnQnlBS0d3d0JDeUFES0FJRUMwVUVRQ0FRSVFrTUJnc2dBU0FJS0FJQUlnTW9BZ0FpQm1zaEFRSi9JQVlnQWtFUWRrc0VRQ0FES0FJRUlRY2dDQ0FEUVFoQkRDQUJJQVpKSWdvYmFpZ0NBQ0lETmdJQUEwQUNRQ0FGRFFBZ0JDZ0NFQ0lKUVFGcUlRVWdDUzBBQVNFQklBa3RBQUJCL3dGR0JFQWdBVUdRQVU4RVFDQUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRkRBSUxJQVFnQlRZQ0VDQUJRUWwwSUFKcUlRSkJCeUVGREFFTElBUWdCVFlDRUVFSUlRVWdBVUVJZENBQ2FpRUNDeUFGUVFGcklRVWdBa0VCZENFQ0lBWkJBWFFpQmtHQWdBSkpEUUFMSUFZaEFTQUhJQWRGSUFvYkRBRUxJQUlnQmtFUWRHc2hBaUFCUVlDQUFuRkZCRUFnQXlnQ0JDRUhJQWdnQTBFTVFRZ2dBU0FHU1NJS0cyb29BZ0FpQXpZQ0FBTkFBa0FnQlEwQUlBUW9BaEFpQ1VFQmFpRUZJQWt0QUFFaEJpQUpMUUFBUWY4QlJnUkFJQVpCa0FGUEJFQWdCQ0FFS0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJRd0NDeUFFSUFVMkFoQWdCa0VKZENBQ2FpRUNRUWNoQlF3QkN5QUVJQVUyQWhCQkNDRUZJQVpCQ0hRZ0Ftb2hBZ3NnQlVFQmF5RUZJQUpCQVhRaEFpQUJRUUYwSWdGQmdJQUNTUTBBQ3lBSFJTQUhJQW9iREFFTElBTW9BZ1FMSVFvZ0FTQURLQUlBSWdacklRRUNmeUFHSUFKQkVIWkxCRUFnQXlnQ0JDRUhJQWdnQTBFSVFRd2dBU0FHU1NJT0cyb29BZ0EyQWdBRFFBSkFJQVVOQUNBRUtBSVFJZ05CQVdvaENTQURMUUFCSVFFZ0F5MEFBRUgvQVVZRVFDQUJRWkFCVHdSQUlBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFVTUFnc2dCQ0FKTmdJUUlBRkJDWFFnQW1vaEFrRUhJUVVNQVFzZ0JDQUpOZ0lRUVFnaEJTQUJRUWgwSUFKcUlRSUxJQVZCQVdzaEJTQUNRUUYwSVFJZ0JrRUJkQ0lHUVlDQUFra05BQXNnQmlFQklBY2dCMFVnRGhzTUFRc2dBaUFHUVJCMGF5RUNJQUZCZ0lBQ2NVVUVRQ0FES0FJRUlRY2dDQ0FEUVF4QkNDQUJJQVpKSWc0YmFpZ0NBRFlDQUFOQUFrQWdCUTBBSUFRb0FoQWlCa0VCYWlFSklBWXRBQUVoQXlBR0xRQUFRZjhCUmdSQUlBTkJrQUZQQkVBZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQlF3Q0N5QUVJQWsyQWhBZ0EwRUpkQ0FDYWlFQ1FRY2hCUXdCQ3lBRUlBazJBaEJCQ0NFRklBTkJDSFFnQW1vaEFnc2dCVUVCYXlFRklBSkJBWFFoQWlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFIUlNBSElBNGJEQUVMSUFNb0FnUUxJUU5CQUNFR0lBZ2hDUUpBQWtBQ1FBSi9Ba0FDUUNBRElBcEJBWFJ5RGdRQUFRTUZDZ3NnQVNBTElBMG9BZ1JCRVhaQkJIRWdEVUVFYXlJSEtBSUFRUk4yUVFGeGNpSU9RZUM1QVdvdEFBQkJBblJxSWdrb0FnQWlBeWdDQUNJR2F5RUJBbjhnQmlBQ1FSQjJTd1JBSUFNb0FnUWhDaUFKSUFOQkNFRU1JQUVnQmtraUVodHFLQUlBTmdJQUEwQUNRQ0FGRFFBZ0JDZ0NFQ0lEUVFGcUlRa2dBeTBBQVNFQklBTXRBQUJCL3dGR0JFQWdBVUdRQVU4RVFDQUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRkRBSUxJQVFnQ1RZQ0VDQUJRUWwwSUFKcUlRSkJCeUVGREFFTElBUWdDVFlDRUVFSUlRVWdBVUVJZENBQ2FpRUNDeUFGUVFGcklRVWdBa0VCZENFQ0lBWkJBWFFpQmtHQWdBSkpEUUFMSUFZaEFTQUtJQXBGSUJJYkRBRUxJQUlnQmtFUWRHc2hBaUFCUVlDQUFuRkZCRUFnQXlnQ0JDRUtJQWtnQTBFTVFRZ2dBU0FHU1NJU0cyb29BZ0EyQWdBRFFBSkFJQVVOQUNBRUtBSVFJZ1pCQVdvaENTQUdMUUFCSVFNZ0JpMEFBRUgvQVVZRVFDQURRWkFCVHdSQUlBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFVTUFnc2dCQ0FKTmdJUUlBTkJDWFFnQW1vaEFrRUhJUVVNQVFzZ0JDQUpOZ0lRUVFnaEJTQURRUWgwSUFKcUlRSUxJQVZCQVdzaEJTQUNRUUYwSVFJZ0FVRUJkQ0lCUVlDQUFra05BQXNnQ2tVZ0NpQVNHd3dCQ3lBREtBSUVDeUVESUJFZ0V5QVVJQU1nRGtIZ3V3RnFMUUFBY3lJREd6WUNBQ0FISUFjb0FnQkJJSEkyQWdBZ0RTQU5LQUlFUVFoeU5nSUVJQTFCakFKcklnWWdCaWdDQUVHQWdBaHlOZ0lBSUExQmhBSnJJZ1lnQmlnQ0FFR0FnQUp5TmdJQUlBMUJpQUpySWdZZ0JpZ0NBQ0FEUVI5MGNrR0FnQVJ5TmdJQUlBTkJFM1FoVnlBQklBc2dCQ2dDYkMwQUFrRUNkR29pQnlnQ0FDSURLQUlBSWdacklRRUNmeUFHSUFKQkVIWkxCRUFnQXlnQ0JDRUpJQWNnQTBFSVFRd2dBU0FHU1NJT0cyb29BZ0EyQWdBRFFBSkFJQVVOQUNBRUtBSVFJZ05CQVdvaEJ5QURMUUFCSVFFZ0F5MEFBRUgvQVVZRVFDQUJRWkFCVHdSQUlBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFVTUFnc2dCQ0FITmdJUUlBRkJDWFFnQW1vaEFrRUhJUVVNQVFzZ0JDQUhOZ0lRUVFnaEJTQUJRUWgwSUFKcUlRSUxJQVZCQVdzaEJTQUNRUUYwSVFJZ0JrRUJkQ0lHUVlDQUFra05BQXNnQmlFQklBa2dDVVVnRGhzTUFRc2dBaUFHUVJCMGF5RUNJQUZCZ0lBQ2NVVUVRQ0FES0FJRUlRa2dCeUFEUVF4QkNDQUJJQVpKSWc0YmFpZ0NBRFlDQUFOQUFrQWdCUTBBSUFRb0FoQWlCa0VCYWlFSElBWXRBQUVoQXlBR0xRQUFRZjhCUmdSQUlBTkJrQUZQQkVBZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQlF3Q0N5QUVJQWMyQWhBZ0EwRUpkQ0FDYWlFQ1FRY2hCUXdCQ3lBRUlBYzJBaEJCQ0NFRklBTkJDSFFnQW1vaEFnc2dCVUVCYXlFRklBSkJBWFFoQWlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFKUlNBSklBNGJEQUVMSUFNb0FnUUxJUU1nVjBFUWNpSUdJQU5GRFFFYUN5QUJJQXNnRFNnQ0JFRVVka0VFY1NBTlFRUnJJZ2tvQWdCQkZuWkJBWEVnQmtFUGRrRVFjU0FHUVJOMlFjQUFjU0FHUVFOMlFhb0JjWEp5Y25JaUVrSGd1UUZxTFFBQVFRSjBhaUlLS0FJQUlnY29BZ0FpQTJzaEFRSi9JQU1nQWtFUWRrc0VRQ0FIS0FJRUlRNGdDaUFIUVFoQkRDQUJJQU5KSWdvYmFpZ0NBRFlDQUFOQUFrQWdCUTBBSUFRb0FoQWlCMEVCYWlFRklBY3RBQUVoQVNBSExRQUFRZjhCUmdSQUlBRkJrQUZQQkVBZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQlF3Q0N5QUVJQVUyQWhBZ0FVRUpkQ0FDYWlFQ1FRY2hCUXdCQ3lBRUlBVTJBaEJCQ0NFRklBRkJDSFFnQW1vaEFnc2dCVUVCYXlFRklBSkJBWFFoQWlBRFFRRjBJZ05CZ0lBQ1NRMEFDeUFESVFFZ0RpQU9SU0FLR3d3QkN5QUNJQU5CRUhScklRSWdBVUdBZ0FKeFJRUkFJQWNvQWdRaERpQUtJQWRCREVFSUlBRWdBMGtpQ2h0cUtBSUFOZ0lBQTBBQ1FDQUZEUUFnQkNnQ0VDSUhRUUZxSVFVZ0J5MEFBU0VESUFjdEFBQkIvd0ZHQkVBZ0EwR1FBVThFUUNBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VGREFJTElBUWdCVFlDRUNBRFFRbDBJQUpxSVFKQkJ5RUZEQUVMSUFRZ0JUWUNFRUVJSVFVZ0EwRUlkQ0FDYWlFQ0N5QUZRUUZySVFVZ0FrRUJkQ0VDSUFGQkFYUWlBVUdBZ0FKSkRRQUxJQTVGSUE0Z0Noc01BUXNnQnlnQ0JBc2hBeUFSSUJNZ0ZDQURJQkpCNExzQmFpMEFBSE1pQXhzMkFvQUNJQWtnQ1NnQ0FFR0FBbkkyQWdBZ0RTQU5LQUlFUWNBQWNqWUNCQ0FHSUFOQkZuUnlRWUFCY2dzaEJpQUJJQXNnQkNnQ2JDQUdRUVoyUWU4RGNXb3RBQUJCQW5ScUlna29BZ0FpQnlnQ0FDSURheUVCQW44Z0F5QUNRUkIyU3dSQUlBY29BZ1FoQ2lBSklBZEJDRUVNSUFFZ0Ewa2lEaHRxS0FJQU5nSUFBMEFDUUNBRkRRQWdCQ2dDRUNJSFFRRnFJUWtnQnkwQUFTRUJJQWN0QUFCQi93RkdCRUFnQVVHUUFVOEVRQ0FFSUFRb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUZEQUlMSUFRZ0NUWUNFQ0FCUVFsMElBSnFJUUpCQnlFRkRBRUxJQVFnQ1RZQ0VFRUlJUVVnQVVFSWRDQUNhaUVDQ3lBRlFRRnJJUVVnQWtFQmRDRUNJQU5CQVhRaUEwR0FnQUpKRFFBTElBTWhBU0FLSUFwRklBNGJEQUVMSUFJZ0EwRVFkR3NoQWlBQlFZQ0FBbkZGQkVBZ0J5Z0NCQ0VLSUFrZ0IwRU1RUWdnQVNBRFNTSU9HMm9vQWdBMkFnQURRQUpBSUFVTkFDQUVLQUlRSWdkQkFXb2hDU0FITFFBQklRTWdCeTBBQUVIL0FVWUVRQ0FEUVpBQlR3UkFJQVFnQkNnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRVU1BZ3NnQkNBSk5nSVFJQU5CQ1hRZ0Ftb2hBa0VISVFVTUFRc2dCQ0FKTmdJUVFRZ2hCU0FEUVFoMElBSnFJUUlMSUFWQkFXc2hCU0FDUVFGMElRSWdBVUVCZENJQlFZQ0FBa2tOQUFzZ0NrVWdDaUFPR3d3QkN5QUhLQUlFQzBVTkFRc2dBU0FMSUEwb0FnUkJGM1pCQkhFZ0RVRUVheUlKS0FJQVFSbDJRUUZ4SUFaQkVuWkJFSEVnQmtFV2RrSEFBSEVnQmtFR2RrR3FBWEZ5Y25KeUloSkI0TGtCYWkwQUFFRUNkR29pQ2lnQ0FDSUhLQUlBSWdOcklRRUNmeUFESUFKQkVIWkxCRUFnQnlnQ0JDRU9JQW9nQjBFSVFRd2dBU0FEU1NJS0cyb29BZ0EyQWdBRFFBSkFJQVVOQUNBRUtBSVFJZ2RCQVdvaEJTQUhMUUFCSVFFZ0J5MEFBRUgvQVVZRVFDQUJRWkFCVHdSQUlBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFVTUFnc2dCQ0FGTmdJUUlBRkJDWFFnQW1vaEFrRUhJUVVNQVFzZ0JDQUZOZ0lRUVFnaEJTQUJRUWgwSUFKcUlRSUxJQVZCQVdzaEJTQUNRUUYwSVFJZ0EwRUJkQ0lEUVlDQUFra05BQXNnQXlFQklBNGdEa1VnQ2hzTUFRc2dBaUFEUVJCMGF5RUNJQUZCZ0lBQ2NVVUVRQ0FIS0FJRUlRNGdDaUFIUVF4QkNDQUJJQU5KSWdvYmFpZ0NBRFlDQUFOQUFrQWdCUTBBSUFRb0FoQWlCMEVCYWlFRklBY3RBQUVoQXlBSExRQUFRZjhCUmdSQUlBTkJrQUZQQkVBZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQlF3Q0N5QUVJQVUyQWhBZ0EwRUpkQ0FDYWlFQ1FRY2hCUXdCQ3lBRUlBVTJBaEJCQ0NFRklBTkJDSFFnQW1vaEFnc2dCVUVCYXlFRklBSkJBWFFoQWlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFPUlNBT0lBb2JEQUVMSUFjb0FnUUxJUU1nRVNBVElCUWdBeUFTUWVDN0FXb3RBQUJ6SWdNYk5nS0FCQ0FKSUFrb0FnQkJnQkJ5TmdJQUlBMGdEU2dDQkVHQUJISTJBZ1FnQmlBRFFSbDBja0dBQ0hJaEJnc2dBU0FMSUFRb0Ftd2dCa0VKZGtIdkEzRnFMUUFBUVFKMGFpSUpLQUlBSWdjb0FnQWlBMnNoQVFKL0lBTWdBa0VRZGtzRVFDQUhLQUlFSVFvZ0NTQUhRUWhCRENBQklBTkpJZzRiYWlnQ0FEWUNBQU5BQWtBZ0JRMEFJQVFvQWhBaUIwRUJhaUVGSUFjdEFBRWhBU0FITFFBQVFmOEJSZ1JBSUFGQmtBRlBCRUFnQkNBRUtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCUXdDQ3lBRUlBVTJBaEFnQVVFSmRDQUNhaUVDUVFjaEJRd0JDeUFFSUFVMkFoQkJDQ0VGSUFGQkNIUWdBbW9oQWdzZ0JVRUJheUVGSUFKQkFYUWhBaUFEUVFGMElnTkJnSUFDU1EwQUN5QURJUUVnQ2lBS1JTQU9Hd3dCQ3lBQ0lBTkJFSFJySVFJZ0FVR0FnQUp4UlFSQUlBY29BZ1FoQ2lBSklBZEJERUVJSUFFZ0Ewa2lEaHRxS0FJQU5nSUFBMEFDUUNBRkRRQWdCQ2dDRUNJSFFRRnFJUVVnQnkwQUFTRURJQWN0QUFCQi93RkdCRUFnQTBHUUFVOEVRQ0FFSUFRb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUZEQUlMSUFRZ0JUWUNFQ0FEUVFsMElBSnFJUUpCQnlFRkRBRUxJQVFnQlRZQ0VFRUlJUVVnQTBFSWRDQUNhaUVDQ3lBRlFRRnJJUVVnQWtFQmRDRUNJQUZCQVhRaUFVR0FnQUpKRFFBTElBcEZJQW9nRGhzTUFRc2dCeWdDQkF0RkRRVUxJQUVnQ3lBTktBSUVRUnAyUVFSeElBMUJCR3NpRGlnQ0FFRWNka0VCY1NBR1FSVjJRUkJ4SUFaQkdYWkJ3QUJ4SUFaQkNYWkJxZ0Z4Y25KeWNpSUtRZUM1QVdvdEFBQkJBblJxSWdrb0FnQWlCeWdDQUNJRGF5RUJJQU1nQWtFUWRrc0VRQ0FIS0FJRUlSSWdDU0FIUVFoQkRDQUJJQU5KSWhVYmFpZ0NBRFlDQUFOQUFrQWdCUTBBSUFRb0FoQWlCMEVCYWlFRklBY3RBQUVoQVNBSExRQUFRZjhCUmdSQUlBRkJrQUZQQkVBZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQlF3Q0N5QUVJQVUyQWhBZ0FVRUpkQ0FDYWlFQ1FRY2hCUXdCQ3lBRUlBVTJBaEJCQ0NFRklBRkJDSFFnQW1vaEFnc2dCVUVCYXlFRklBSkJBWFFoQWlBRFFRRjBJZ05CZ0lBQ1NRMEFDeUFESVFFZ0VpQVNSU0FWR3d3RUN5QUNJQU5CRUhScklRSWdBVUdBZ0FKeERRRWdCeWdDQkNFU0lBa2dCMEVNUVFnZ0FTQURTU0lWRzJvb0FnQTJBZ0FEUUFKQUlBVU5BQ0FFS0FJUUlnZEJBV29oQlNBSExRQUJJUU1nQnkwQUFFSC9BVVlFUUNBRFFaQUJUd1JBSUFRZ0JDZ0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVVNQWdzZ0JDQUZOZ0lRSUFOQkNYUWdBbW9oQWtFSElRVU1BUXNnQkNBRk5nSVFRUWdoQlNBRFFRaDBJQUpxSVFJTElBVkJBV3NoQlNBQ1FRRjBJUUlnQVVFQmRDSUJRWUNBQWtrTkFBc2dFa1VnRWlBVkd3d0RDd0pBSUFaQmtJQ0FBWEVOQUNBQklBc2dCQ2dDYkNBR1FlOERjV290QUFCQkFuUnFJZ2tvQWdBaUJ5Z0NBQ0lEYXlFQkFuOGdBeUFDUVJCMlN3UkFJQWNvQWdRaENpQUpJQWRCQ0VFTUlBRWdBMGtpRGh0cUtBSUFOZ0lBQTBBQ1FDQUZEUUFnQkNnQ0VDSUhRUUZxSVFVZ0J5MEFBU0VCSUFjdEFBQkIvd0ZHQkVBZ0FVR1FBVThFUUNBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VGREFJTElBUWdCVFlDRUNBQlFRbDBJQUpxSVFKQkJ5RUZEQUVMSUFRZ0JUWUNFRUVJSVFVZ0FVRUlkQ0FDYWlFQ0N5QUZRUUZySVFVZ0FrRUJkQ0VDSUFOQkFYUWlBMEdBZ0FKSkRRQUxJQU1oQVNBS0lBcEZJQTRiREFFTElBSWdBMEVRZEdzaEFpQUJRWUNBQW5GRkJFQWdCeWdDQkNFS0lBa2dCMEVNUVFnZ0FTQURTU0lPRzJvb0FnQTJBZ0FEUUFKQUlBVU5BQ0FFS0FJUUlnZEJBV29oQlNBSExRQUJJUU1nQnkwQUFFSC9BVVlFUUNBRFFaQUJUd1JBSUFRZ0JDZ0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVVNQWdzZ0JDQUZOZ0lRSUFOQkNYUWdBbW9oQWtFSElRVU1BUXNnQkNBRk5nSVFRUWdoQlNBRFFRaDBJQUpxSVFJTElBVkJBV3NoQlNBQ1FRRjBJUUlnQVVFQmRDSUJRWUNBQWtrTkFBc2dDa1VnQ2lBT0d3d0JDeUFIS0FJRUMwVU5BQ0FCSUFzZ0RTZ0NCRUVSZGtFRWNTQU5RUVJySWdvb0FnQkJFM1pCQVhFZ0JrRU9ka0VRY1NBR1FSQjJRY0FBY1NBR1Fhb0JjWEp5Y25JaUVrSGd1UUZxTFFBQVFRSjBhaUlKS0FJQUlnY29BZ0FpQTJzaEFRSi9JQU1nQWtFUWRrc0VRQ0FIS0FJRUlRNGdDU0FIUVFoQkRDQUJJQU5KSWhVYmFpZ0NBRFlDQUFOQUFrQWdCUTBBSUFRb0FoQWlCMEVCYWlFRklBY3RBQUVoQVNBSExRQUFRZjhCUmdSQUlBRkJrQUZQQkVBZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQlF3Q0N5QUVJQVUyQWhBZ0FVRUpkQ0FDYWlFQ1FRY2hCUXdCQ3lBRUlBVTJBaEJCQ0NFRklBRkJDSFFnQW1vaEFnc2dCVUVCYXlFRklBSkJBWFFoQWlBRFFRRjBJZ05CZ0lBQ1NRMEFDeUFESVFFZ0RpQU9SU0FWR3d3QkN5QUNJQU5CRUhScklRSWdBVUdBZ0FKeFJRUkFJQWNvQWdRaERpQUpJQWRCREVFSUlBRWdBMGtpRlJ0cUtBSUFOZ0lBQTBBQ1FDQUZEUUFnQkNnQ0VDSUhRUUZxSVFVZ0J5MEFBU0VESUFjdEFBQkIvd0ZHQkVBZ0EwR1FBVThFUUNBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VGREFJTElBUWdCVFlDRUNBRFFRbDBJQUpxSVFKQkJ5RUZEQUVMSUFRZ0JUWUNFRUVJSVFVZ0EwRUlkQ0FDYWlFQ0N5QUZRUUZySVFVZ0FrRUJkQ0VDSUFGQkFYUWlBVUdBZ0FKSkRRQUxJQTVGSUE0Z0ZSc01BUXNnQnlnQ0JBc2hBeUFSSUJNZ0ZDQURJQkpCNExzQmFpMEFBSE1pQXhzMkFnQWdDaUFLS0FJQVFTQnlOZ0lBSUEwZ0RTZ0NCRUVJY2pZQ0JDQU5RWXdDYXlJSElBY29BZ0JCZ0lBSWNqWUNBQ0FOUVlRQ2F5SUhJQWNvQWdCQmdJQUNjallDQUNBTlFZZ0NheUlISUFjb0FnQWdBMEVmZEhKQmdJQUVjallDQUNBR0lBTkJFM1J5UVJCeUlRWUxBa0FnQmtHQWdZQUljUTBBSUFFZ0N5QUVLQUpzSUFaQkEzWWlEa0h2QTNGcUxRQUFRUUowYWlJSktBSUFJZ2NvQWdBaUEyc2hBUUovSUFNZ0FrRVFka3NFUUNBSEtBSUVJUW9nQ1NBSFFRaEJEQ0FCSUFOSkloSWJhaWdDQURZQ0FBTkFBa0FnQlEwQUlBUW9BaEFpQjBFQmFpRUZJQWN0QUFFaEFTQUhMUUFBUWY4QlJnUkFJQUZCa0FGUEJFQWdCQ0FFS0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJRd0NDeUFFSUFVMkFoQWdBVUVKZENBQ2FpRUNRUWNoQlF3QkN5QUVJQVUyQWhCQkNDRUZJQUZCQ0hRZ0Ftb2hBZ3NnQlVFQmF5RUZJQUpCQVhRaEFpQURRUUYwSWdOQmdJQUNTUTBBQ3lBRElRRWdDaUFLUlNBU0d3d0JDeUFDSUFOQkVIUnJJUUlnQVVHQWdBSnhSUVJBSUFjb0FnUWhDaUFKSUFkQkRFRUlJQUVnQTBraUVodHFLQUlBTmdJQUEwQUNRQ0FGRFFBZ0JDZ0NFQ0lIUVFGcUlRVWdCeTBBQVNFRElBY3RBQUJCL3dGR0JFQWdBMEdRQVU4RVFDQUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRkRBSUxJQVFnQlRZQ0VDQURRUWwwSUFKcUlRSkJCeUVGREFFTElBUWdCVFlDRUVFSUlRVWdBMEVJZENBQ2FpRUNDeUFGUVFGcklRVWdBa0VCZENFQ0lBRkJBWFFpQVVHQWdBSkpEUUFMSUFwRklBb2dFaHNNQVFzZ0J5Z0NCQXRGRFFBZ0FTQUxJQTBvQWdSQkZIWkJCSEVnRFVFRWF5SUtLQUlBUVJaMlFRRnhJQVpCRDNaQkVIRWdCa0VUZGtIQUFIRWdEa0dxQVhGeWNuSnlJaEpCNExrQmFpMEFBRUVDZEdvaUNTZ0NBQ0lIS0FJQUlnTnJJUUVDZnlBRElBSkJFSFpMQkVBZ0J5Z0NCQ0VPSUFrZ0IwRUlRUXdnQVNBRFNTSVZHMm9vQWdBMkFnQURRQUpBSUFVTkFDQUVLQUlRSWdkQkFXb2hCU0FITFFBQklRRWdCeTBBQUVIL0FVWUVRQ0FCUVpBQlR3UkFJQVFnQkNnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRVU1BZ3NnQkNBRk5nSVFJQUZCQ1hRZ0Ftb2hBa0VISVFVTUFRc2dCQ0FGTmdJUVFRZ2hCU0FCUVFoMElBSnFJUUlMSUFWQkFXc2hCU0FDUVFGMElRSWdBMEVCZENJRFFZQ0FBa2tOQUFzZ0F5RUJJQTRnRGtVZ0ZSc01BUXNnQWlBRFFSQjBheUVDSUFGQmdJQUNjVVVFUUNBSEtBSUVJUTRnQ1NBSFFReEJDQ0FCSUFOSkloVWJhaWdDQURZQ0FBTkFBa0FnQlEwQUlBUW9BaEFpQjBFQmFpRUZJQWN0QUFFaEF5QUhMUUFBUWY4QlJnUkFJQU5Ca0FGUEJFQWdCQ0FFS0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJRd0NDeUFFSUFVMkFoQWdBMEVKZENBQ2FpRUNRUWNoQlF3QkN5QUVJQVUyQWhCQkNDRUZJQU5CQ0hRZ0Ftb2hBZ3NnQlVFQmF5RUZJQUpCQVhRaEFpQUJRUUYwSWdGQmdJQUNTUTBBQ3lBT1JTQU9JQlViREFFTElBY29BZ1FMSVFNZ0VTQVRJQlFnQXlBU1FlQzdBV290QUFCeklnTWJOZ0tBQWlBS0lBb29BZ0JCZ0FKeU5nSUFJQTBnRFNnQ0JFSEFBSEkyQWdRZ0JpQURRUlowY2tHQUFYSWhCZ3NDUUNBR1FZQ0lnTUFBY1EwQUlBRWdDeUFFS0FKc0lBWkJCbllpRGtIdkEzRnFMUUFBUVFKMGFpSUpLQUlBSWdjb0FnQWlBMnNoQVFKL0lBTWdBa0VRZGtzRVFDQUhLQUlFSVFvZ0NTQUhRUWhCRENBQklBTkpJaEliYWlnQ0FEWUNBQU5BQWtBZ0JRMEFJQVFvQWhBaUIwRUJhaUVGSUFjdEFBRWhBU0FITFFBQVFmOEJSZ1JBSUFGQmtBRlBCRUFnQkNBRUtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCUXdDQ3lBRUlBVTJBaEFnQVVFSmRDQUNhaUVDUVFjaEJRd0JDeUFFSUFVMkFoQkJDQ0VGSUFGQkNIUWdBbW9oQWdzZ0JVRUJheUVGSUFKQkFYUWhBaUFEUVFGMElnTkJnSUFDU1EwQUN5QURJUUVnQ2lBS1JTQVNHd3dCQ3lBQ0lBTkJFSFJySVFJZ0FVR0FnQUp4UlFSQUlBY29BZ1FoQ2lBSklBZEJERUVJSUFFZ0Ewa2lFaHRxS0FJQU5nSUFBMEFDUUNBRkRRQWdCQ2dDRUNJSFFRRnFJUVVnQnkwQUFTRURJQWN0QUFCQi93RkdCRUFnQTBHUUFVOEVRQ0FFSUFRb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUZEQUlMSUFRZ0JUWUNFQ0FEUVFsMElBSnFJUUpCQnlFRkRBRUxJQVFnQlRZQ0VFRUlJUVVnQTBFSWRDQUNhaUVDQ3lBRlFRRnJJUVVnQWtFQmRDRUNJQUZCQVhRaUFVR0FnQUpKRFFBTElBcEZJQW9nRWhzTUFRc2dCeWdDQkF0RkRRQWdBU0FMSUEwb0FnUkJGM1pCQkhFZ0RVRUVheUlLS0FJQVFSbDJRUUZ4SUFaQkVuWkJFSEVnQmtFV2RrSEFBSEVnRGtHcUFYRnljbkp5SWhKQjRMa0JhaTBBQUVFQ2RHb2lDU2dDQUNJSEtBSUFJZ05ySVFFQ2Z5QURJQUpCRUhaTEJFQWdCeWdDQkNFT0lBa2dCMEVJUVF3Z0FTQURTU0lWRzJvb0FnQTJBZ0FEUUFKQUlBVU5BQ0FFS0FJUUlnZEJBV29oQlNBSExRQUJJUUVnQnkwQUFFSC9BVVlFUUNBQlFaQUJUd1JBSUFRZ0JDZ0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVVNQWdzZ0JDQUZOZ0lRSUFGQkNYUWdBbW9oQWtFSElRVU1BUXNnQkNBRk5nSVFRUWdoQlNBQlFRaDBJQUpxSVFJTElBVkJBV3NoQlNBQ1FRRjBJUUlnQTBFQmRDSURRWUNBQWtrTkFBc2dBeUVCSUE0Z0RrVWdGUnNNQVFzZ0FpQURRUkIwYXlFQ0lBRkJnSUFDY1VVRVFDQUhLQUlFSVE0Z0NTQUhRUXhCQ0NBQklBTkpJaFViYWlnQ0FEWUNBQU5BQWtBZ0JRMEFJQVFvQWhBaUIwRUJhaUVGSUFjdEFBRWhBeUFITFFBQVFmOEJSZ1JBSUFOQmtBRlBCRUFnQkNBRUtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCUXdDQ3lBRUlBVTJBaEFnQTBFSmRDQUNhaUVDUVFjaEJRd0JDeUFFSUFVMkFoQkJDQ0VGSUFOQkNIUWdBbW9oQWdzZ0JVRUJheUVGSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QU9SU0FPSUJVYkRBRUxJQWNvQWdRTElRTWdFU0FUSUJRZ0F5QVNRZUM3QVdvdEFBQnpJZ01iTmdLQUJDQUtJQW9vQWdCQmdCQnlOZ0lBSUEwZ0RTZ0NCRUdBQkhJMkFnUWdCaUFEUVJsMGNrR0FDSEloQmdzZ0JrR0F3SUNBQkhFTkF5QUJJQXNnQkNnQ2JDQUdRUWwySWhKQjd3TnhhaTBBQUVFQ2RHb2lDU2dDQUNJQktBSUFJZ05ySVFjQ2Z5QURJQUpCRUhaTEJFQWdBU2dDQkNFS0lBa2dBVUVJUVF3Z0F5QUhTeUlPRzJvb0FnQTJBZ0FEUUFKQUlBVU5BQ0FFS0FJUUlnZEJBV29oQlNBSExRQUJJUUVnQnkwQUFFSC9BVVlFUUNBQlFaQUJUd1JBSUFRZ0JDZ0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVVNQWdzZ0JDQUZOZ0lRSUFGQkNYUWdBbW9oQWtFSElRVU1BUXNnQkNBRk5nSVFRUWdoQlNBQlFRaDBJQUpxSVFJTElBVkJBV3NoQlNBQ1FRRjBJUUlnQTBFQmRDSURRWUNBQWtrTkFBc2dBeUVISUFvZ0NrVWdEaHNNQVFzZ0FpQURRUkIwYXlFQ0lBZEJnSUFDY1VVRVFDQUJLQUlFSVFvZ0NTQUJRUXhCQ0NBRElBZExJZzRiYWlnQ0FEWUNBQU5BQWtBZ0JRMEFJQVFvQWhBaUEwRUJhaUVGSUFNdEFBRWhBU0FETFFBQVFmOEJSZ1JBSUFGQmtBRlBCRUFnQkNBRUtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCUXdDQ3lBRUlBVTJBaEFnQVVFSmRDQUNhaUVDUVFjaEJRd0JDeUFFSUFVMkFoQkJDQ0VGSUFGQkNIUWdBbW9oQWdzZ0JVRUJheUVGSUFKQkFYUWhBaUFIUVFGMElnZEJnSUFDU1EwQUN5QUtSU0FLSUE0YkRBRUxJQUVvQWdRTFJRUkFJQWNoQVF3RUN5QUhJQXNnRFNnQ0JFRWFka0VFY1NBTlFRUnJJZzRvQWdCQkhIWkJBWEVnQmtFVmRrRVFjU0FHUVJsMlFjQUFjU0FTUWFvQmNYSnljbklpQ2tIZ3VRRnFMUUFBUVFKMGFpSUpLQUlBSWdjb0FnQWlBV3NoQXlBQklBSkJFSFpMQkVBZ0J5Z0NCQ0VTSUFrZ0IwRUlRUXdnQVNBRFN5SVZHMm9vQWdBMkFnQURRQUpBSUFVTkFDQUVLQUlRSWdkQkFXb2hCU0FITFFBQklRTWdCeTBBQUVIL0FVWUVRQ0FEUVpBQlR3UkFJQVFnQkNnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRVU1BZ3NnQkNBRk5nSVFJQU5CQ1hRZ0Ftb2hBa0VISVFVTUFRc2dCQ0FGTmdJUVFRZ2hCU0FEUVFoMElBSnFJUUlMSUFWQkFXc2hCU0FDUVFGMElRSWdBVUVCZENJQlFZQ0FBa2tOQUFzZ0VpQVNSU0FWR3d3REN5QUNJQUZCRUhScklRSWdBMEdBZ0FKeFJRMEJJQU1oQVFzZ0J5Z0NCQXdCQ3lBSEtBSUVJUklnQ1NBSFFReEJDQ0FCSUFOTEloVWJhaWdDQURZQ0FBTkFBa0FnQlEwQUlBUW9BaEFpQjBFQmFpRUZJQWN0QUFFaEFTQUhMUUFBUWY4QlJnUkFJQUZCa0FGUEJFQWdCQ0FFS0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJRd0NDeUFFSUFVMkFoQWdBVUVKZENBQ2FpRUNRUWNoQlF3QkN5QUVJQVUyQWhCQkNDRUZJQUZCQ0hRZ0Ftb2hBZ3NnQlVFQmF5RUZJQUpCQVhRaEFpQURRUUYwSWdOQmdJQUNTUTBBQ3lBRElRRWdFa1VnRWlBVkd3c2hBeUFSSUJNZ0ZDQURJQXBCNExzQmFpMEFBSE1pQXhzMkFvQUdJQTRnRGlnQ0FFR0FnQUZ5TmdJQUlBMGdEU2dDQkVHQUlISTJBZ1FnRFNBTktBS0VBa0VFY2pZQ2hBSWdEU0FOS0FLTUFrRUJjallDakFJZ0RTQU5LQUtJQWlBRFFSSjBja0VDY2pZQ2lBSWdCaUFEUVJ4MGNrR0F3QUJ5SVFZTElBMGdCa0gvLy8rMmUzRTJBZ0FMSUExQkJHb2hCaUFSUVFScUlRTWdERUVCYWlJTVFjQUFSdzBBQ3lBTlFReHFJUVlnRVVHRUJtb2hBeUFYUVR4SklWZ2dGMEVFYWlFWElGZ05BQXNNQWd0QkFTQVpkQ0lCUVFGMklBRnlJUTRnQkNnQ2VDSUhJQlJCQW5ScVFReHFJUU1nQkNnQ2dBRWhCaUFFS0FJSUlRVWdCQ2dDQkNFQklBUW9BZ0FoQWlBRUtBSm9JUWtnQkNnQ2RDRUxBa0FDUUNBV1FRaHhCRUFnQmtFRVNRMENJQlJGRFFFZ0JFSGtBR29oRUNBRVFlQUFhaUVOSUJSQkEyd2hHeUFVUVFGMElTUkJBQ0FPYXlFVklBUkJIR29oRWdOQVFRQWhHQU5BQWtBQ1FBSi9Ba0FnQXlJSUtBSUFJZ01FUUFKQUlBTkJrSUNBQVhFTkFDQUJJQklnQkNnQ2JDQURRZThEY1dvdEFBQkJBblJxSWdrb0FnQWlCeWdDQUNJR2F5RUJBbjhnQmlBQ1FSQjJUUVJBSUFJZ0JrRVFkR3NoQWlBQlFZQ0FBbkVFUUNBSEtBSUVEQUlMSUFjb0FnUWhEQ0FKSUFkQkRFRUlJQUVnQmtraUNodHFLQUlBTmdJQUEwQUNRQ0FGRFFBZ0JDZ0NFQ0lIUVFGcUlRVWdCeTBBQVNFR0lBY3RBQUJCL3dGSEJFQWdCQ0FGTmdJUVFRZ2hCU0FHUVFoMElBSnFJUUlNQVFzZ0JrR1BBVTBFUUNBRUlBVTJBaEFnQmtFSmRDQUNhaUVDUVFjaEJRd0JDeUFFSUFRb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUZDeUFGUVFGcklRVWdBa0VCZENFQ0lBRkJBWFFpQVVHQWdBSkpEUUFMSUF4RklBd2dDaHNNQVFzZ0J5Z0NCQ0VNSUFrZ0IwRUlRUXdnQVNBR1NTSUtHMm9vQWdBMkFnQURRQUpBSUFVTkFDQUVLQUlRSWdkQkFXb2hCU0FITFFBQklRRWdCeTBBQUVIL0FVY0VRQ0FFSUFVMkFoQkJDQ0VGSUFGQkNIUWdBbW9oQWd3QkN5QUJRWThCVFFSQUlBUWdCVFlDRUNBQlFRbDBJQUpxSVFKQkJ5RUZEQUVMSUFRZ0JDZ0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVVMSUFWQkFXc2hCU0FDUVFGMElRSWdCa0VCZENJR1FZQ0FBa2tOQUFzZ0JpRUJJQXdnREVVZ0Noc0xSUTBBSUFFZ0VpQUlLQUlFUVJGMlFRUnhJQWhCQkdzaURDZ0NBRUVUZGtFQmNTQURRUTUyUVJCeElBTkJFSFpCd0FCeElBTkJxZ0Z4Y25KeWNpSVRRZUM1QVdvdEFBQkJBblJxSWdrb0FnQWlCeWdDQUNJR2F5RUJBbjhnQmlBQ1FSQjJUUVJBSUFJZ0JrRVFkR3NoQWlBQlFZQ0FBbkVFUUNBSEtBSUVEQUlMSUFjb0FnUWhDaUFKSUFkQkRFRUlJQUVnQmtraUhCdHFLQUlBTmdJQUEwQUNRQ0FGRFFBZ0JDZ0NFQ0lIUVFGcUlRVWdCeTBBQVNFR0lBY3RBQUJCL3dGSEJFQWdCQ0FGTmdJUVFRZ2hCU0FHUVFoMElBSnFJUUlNQVFzZ0JrR1BBVTBFUUNBRUlBVTJBaEFnQmtFSmRDQUNhaUVDUVFjaEJRd0JDeUFFSUFRb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUZDeUFGUVFGcklRVWdBa0VCZENFQ0lBRkJBWFFpQVVHQWdBSkpEUUFMSUFwRklBb2dIQnNNQVFzZ0J5Z0NCQ0VLSUFrZ0IwRUlRUXdnQVNBR1NTSWNHMm9vQWdBMkFnQURRQUpBSUFVTkFDQUVLQUlRSWdkQkFXb2hCU0FITFFBQklRRWdCeTBBQUVIL0FVY0VRQ0FFSUFVMkFoQkJDQ0VGSUFGQkNIUWdBbW9oQWd3QkN5QUJRWThCVFFSQUlBUWdCVFlDRUNBQlFRbDBJQUpxSVFKQkJ5RUZEQUVMSUFRZ0JDZ0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVVMSUFWQkFXc2hCU0FDUVFGMElRSWdCa0VCZENJR1FZQ0FBa2tOQUFzZ0JpRUJJQW9nQ2tVZ0hCc0xJUVlnQ3lBVklBNGdCaUFUUWVDN0FXb3RBQUJ6SWdZYk5nSUFJQXdnRENnQ0FFRWdjallDQUNBSUlBZ29BZ1JCQ0hJMkFnUWdBeUFHUVJOMGNrRVFjaUVEQ3dKQUlBTkJnSUdBQ0hFTkFDQUJJQklnQkNnQ2JDQURRUU4ySWdwQjd3TnhhaTBBQUVFQ2RHb2lDU2dDQUNJSEtBSUFJZ1pySVFFQ2Z5QUdJQUpCRUhaTkJFQWdBaUFHUVJCMGF5RUNJQUZCZ0lBQ2NRUkFJQWNvQWdRTUFnc2dCeWdDQkNFTUlBa2dCMEVNUVFnZ0FTQUdTU0lURzJvb0FnQTJBZ0FEUUFKQUlBVU5BQ0FFS0FJUUlnZEJBV29oQlNBSExRQUJJUVlnQnkwQUFFSC9BVWNFUUNBRUlBVTJBaEJCQ0NFRklBWkJDSFFnQW1vaEFnd0JDeUFHUVk4QlRRUkFJQVFnQlRZQ0VDQUdRUWwwSUFKcUlRSkJCeUVGREFFTElBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFVTElBVkJBV3NoQlNBQ1FRRjBJUUlnQVVFQmRDSUJRWUNBQWtrTkFBc2dERVVnRENBVEd3d0JDeUFIS0FJRUlRd2dDU0FIUVFoQkRDQUJJQVpKSWhNYmFpZ0NBRFlDQUFOQUFrQWdCUTBBSUFRb0FoQWlCMEVCYWlFRklBY3RBQUVoQVNBSExRQUFRZjhCUndSQUlBUWdCVFlDRUVFSUlRVWdBVUVJZENBQ2FpRUNEQUVMSUFGQmp3Rk5CRUFnQkNBRk5nSVFJQUZCQ1hRZ0Ftb2hBa0VISVFVTUFRc2dCQ0FFS0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJRc2dCVUVCYXlFRklBSkJBWFFoQWlBR1FRRjBJZ1pCZ0lBQ1NRMEFDeUFHSVFFZ0RDQU1SU0FUR3d0RkRRQWdBU0FTSUFnb0FnUkJGSFpCQkhFZ0NFRUVheUlNS0FJQVFSWjJRUUZ4SUFOQkQzWkJFSEVnQTBFVGRrSEFBSEVnQ2tHcUFYRnljbkp5SWhOQjRMa0JhaTBBQUVFQ2RHb2lDU2dDQUNJSEtBSUFJZ1pySVFFQ2Z5QUdJQUpCRUhaTkJFQWdBaUFHUVJCMGF5RUNJQUZCZ0lBQ2NRUkFJQWNvQWdRTUFnc2dCeWdDQkNFS0lBa2dCMEVNUVFnZ0FTQUdTU0ljRzJvb0FnQTJBZ0FEUUFKQUlBVU5BQ0FFS0FJUUlnZEJBV29oQlNBSExRQUJJUVlnQnkwQUFFSC9BVWNFUUNBRUlBVTJBaEJCQ0NFRklBWkJDSFFnQW1vaEFnd0JDeUFHUVk4QlRRUkFJQVFnQlRZQ0VDQUdRUWwwSUFKcUlRSkJCeUVGREFFTElBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFVTElBVkJBV3NoQlNBQ1FRRjBJUUlnQVVFQmRDSUJRWUNBQWtrTkFBc2dDa1VnQ2lBY0d3d0JDeUFIS0FJRUlRb2dDU0FIUVFoQkRDQUJJQVpKSWh3YmFpZ0NBRFlDQUFOQUFrQWdCUTBBSUFRb0FoQWlCMEVCYWlFRklBY3RBQUVoQVNBSExRQUFRZjhCUndSQUlBUWdCVFlDRUVFSUlRVWdBVUVJZENBQ2FpRUNEQUVMSUFGQmp3Rk5CRUFnQkNBRk5nSVFJQUZCQ1hRZ0Ftb2hBa0VISVFVTUFRc2dCQ0FFS0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJRc2dCVUVCYXlFRklBSkJBWFFoQWlBR1FRRjBJZ1pCZ0lBQ1NRMEFDeUFHSVFFZ0NpQUtSU0FjR3dzaEJpQUxJQlJCQW5ScUlCVWdEaUFHSUJOQjRMc0JhaTBBQUhNaUJoczJBZ0FnRENBTUtBSUFRWUFDY2pZQ0FDQUlJQWdvQWdSQndBQnlOZ0lFSUFNZ0JrRVdkSEpCZ0FGeUlRTUxBa0FnQTBHQWlJREFBSEVOQUNBQklCSWdCQ2dDYkNBRFFRWjJJZ3BCN3dOeGFpMEFBRUVDZEdvaUNTZ0NBQ0lIS0FJQUlnWnJJUUVDZnlBR0lBSkJFSFpOQkVBZ0FpQUdRUkIwYXlFQ0lBRkJnSUFDY1FSQUlBY29BZ1FNQWdzZ0J5Z0NCQ0VNSUFrZ0IwRU1RUWdnQVNBR1NTSVRHMm9vQWdBMkFnQURRQUpBSUFVTkFDQUVLQUlRSWdkQkFXb2hCU0FITFFBQklRWWdCeTBBQUVIL0FVY0VRQ0FFSUFVMkFoQkJDQ0VGSUFaQkNIUWdBbW9oQWd3QkN5QUdRWThCVFFSQUlBUWdCVFlDRUNBR1FRbDBJQUpxSVFKQkJ5RUZEQUVMSUFRZ0JDZ0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVVMSUFWQkFXc2hCU0FDUVFGMElRSWdBVUVCZENJQlFZQ0FBa2tOQUFzZ0RFVWdEQ0FUR3d3QkN5QUhLQUlFSVF3Z0NTQUhRUWhCRENBQklBWkpJaE1iYWlnQ0FEWUNBQU5BQWtBZ0JRMEFJQVFvQWhBaUIwRUJhaUVGSUFjdEFBRWhBU0FITFFBQVFmOEJSd1JBSUFRZ0JUWUNFRUVJSVFVZ0FVRUlkQ0FDYWlFQ0RBRUxJQUZCandGTkJFQWdCQ0FGTmdJUUlBRkJDWFFnQW1vaEFrRUhJUVVNQVFzZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQlFzZ0JVRUJheUVGSUFKQkFYUWhBaUFHUVFGMElnWkJnSUFDU1EwQUN5QUdJUUVnRENBTVJTQVRHd3RGRFFBZ0FTQVNJQWdvQWdSQkYzWkJCSEVnQ0VFRWF5SU1LQUlBUVJsMlFRRnhJQU5CRW5aQkVIRWdBMEVXZGtIQUFIRWdDa0dxQVhGeWNuSnlJaE5CNExrQmFpMEFBRUVDZEdvaUNTZ0NBQ0lIS0FJQUlnWnJJUUVDZnlBR0lBSkJFSFpOQkVBZ0FpQUdRUkIwYXlFQ0lBRkJnSUFDY1FSQUlBY29BZ1FNQWdzZ0J5Z0NCQ0VLSUFrZ0IwRU1RUWdnQVNBR1NTSWNHMm9vQWdBMkFnQURRQUpBSUFVTkFDQUVLQUlRSWdkQkFXb2hCU0FITFFBQklRWWdCeTBBQUVIL0FVY0VRQ0FFSUFVMkFoQkJDQ0VGSUFaQkNIUWdBbW9oQWd3QkN5QUdRWThCVFFSQUlBUWdCVFlDRUNBR1FRbDBJQUpxSVFKQkJ5RUZEQUVMSUFRZ0JDZ0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVVMSUFWQkFXc2hCU0FDUVFGMElRSWdBVUVCZENJQlFZQ0FBa2tOQUFzZ0NrVWdDaUFjR3d3QkN5QUhLQUlFSVFvZ0NTQUhRUWhCRENBQklBWkpJaHdiYWlnQ0FEWUNBQU5BQWtBZ0JRMEFJQVFvQWhBaUIwRUJhaUVGSUFjdEFBRWhBU0FITFFBQVFmOEJSd1JBSUFRZ0JUWUNFRUVJSVFVZ0FVRUlkQ0FDYWlFQ0RBRUxJQUZCandGTkJFQWdCQ0FGTmdJUUlBRkJDWFFnQW1vaEFrRUhJUVVNQVFzZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQlFzZ0JVRUJheUVGSUFKQkFYUWhBaUFHUVFGMElnWkJnSUFDU1EwQUN5QUdJUUVnQ2lBS1JTQWNHd3NoQmlBTElDUkJBblJxSUJVZ0RpQUdJQk5CNExzQmFpMEFBSE1pQmhzMkFnQWdEQ0FNS0FJQVFZQVFjallDQUNBSUlBZ29BZ1JCZ0FSeU5nSUVJQU1nQmtFWmRISkJnQWh5SVFNTElBTkJnTUNBZ0FSeERRTWdBU0FTSUFRb0Ftd2dBMEVKZGlJS1FlOERjV290QUFCQkFuUnFJZ2tvQWdBaUFTZ0NBQ0lHYXlFSEFuOGdCaUFDUVJCMlRRUkFJQUlnQmtFUWRHc2hBaUFIUVlDQUFuRUVRQ0FCS0FJRURBSUxJQUVvQWdRaERDQUpJQUZCREVFSUlBWWdCMHNpRXh0cUtBSUFOZ0lBQTBBQ1FDQUZEUUFnQkNnQ0VDSUdRUUZxSVFVZ0JpMEFBU0VCSUFZdEFBQkIvd0ZIQkVBZ0JDQUZOZ0lRUVFnaEJTQUJRUWgwSUFKcUlRSU1BUXNnQVVHUEFVMEVRQ0FFSUFVMkFoQWdBVUVKZENBQ2FpRUNRUWNoQlF3QkN5QUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRkN5QUZRUUZySVFVZ0FrRUJkQ0VDSUFkQkFYUWlCMEdBZ0FKSkRRQUxJQXhGSUF3Z0V4c01BUXNnQVNnQ0JDRU1JQWtnQVVFSVFRd2dCaUFIU3lJVEcyb29BZ0EyQWdBRFFBSkFJQVVOQUNBRUtBSVFJZ2RCQVdvaEJTQUhMUUFCSVFFZ0J5MEFBRUgvQVVjRVFDQUVJQVUyQWhCQkNDRUZJQUZCQ0hRZ0Ftb2hBZ3dCQ3lBQlFZOEJUUVJBSUFRZ0JUWUNFQ0FCUVFsMElBSnFJUUpCQnlFRkRBRUxJQVFnQkNnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRVUxJQVZCQVdzaEJTQUNRUUYwSVFJZ0JrRUJkQ0lHUVlDQUFra05BQXNnQmlFSElBd2dERVVnRXhzTFJRUkFJQWNoQVF3RUN5QUhJQklnQ0NnQ0JFRWFka0VFY1NBSVFRUnJJZ3dvQWdCQkhIWkJBWEVnQTBFVmRrRVFjU0FEUVJsMlFjQUFjU0FLUWFvQmNYSnljbklpRTBIZ3VRRnFMUUFBUVFKMGFpSUpLQUlBSWdvb0FnQWlBV3NoQmlBQklBSkJFSFpOQkVBZ0FpQUJRUkIwYXlFQ0lBWkJnSUFDY1FSQUlBWWhBUXdEQ3lBS0tBSUVJUWNnQ1NBS1FReEJDQ0FCSUFaTElod2JhaWdDQURZQ0FBTkFBa0FnQlEwQUlBUW9BaEFpQlVFQmFpRUtJQVV0QUFFaEFTQUZMUUFBUWY4QlJ3UkFJQVFnQ2pZQ0VFRUlJUVVnQVVFSWRDQUNhaUVDREFFTElBRkJqd0ZOQkVBZ0JDQUtOZ0lRSUFGQkNYUWdBbW9oQWtFSElRVU1BUXNnQkNBRUtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCUXNnQlVFQmF5RUZJQUpCQVhRaEFpQUdRUUYwSWdaQmdJQUNTUTBBQ3lBR0lRRWdCMFVnQnlBY0d3d0RDeUFLS0FJRUlRY2dDU0FLUVFoQkRDQUJJQVpMSWh3YmFpZ0NBRFlDQUFOQUFrQWdCUTBBSUFRb0FoQWlCVUVCYWlFS0lBVXRBQUVoQmlBRkxRQUFRZjhCUndSQUlBUWdDallDRUVFSUlRVWdCa0VJZENBQ2FpRUNEQUVMSUFaQmp3Rk5CRUFnQkNBS05nSVFJQVpCQ1hRZ0Ftb2hBa0VISVFVTUFRc2dCQ0FFS0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJRc2dCVUVCYXlFRklBSkJBWFFoQWlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFISUFkRklCd2JEQUlMSUFFZ0RTZ0NBQ0lHS0FJQUlnTnJJUUVDZnlBRElBSkJFSFpOQkVBZ0FpQURRUkIwYXlFQ0lBRkJnSUFDY1FSQUlBWW9BZ1FNQWdzZ0JpZ0NCQ0VISUEwZ0JrRU1RUWdnQVNBRFNTSU1HMm9vQWdBMkFnQURRQUpBSUFVTkFDQUVLQUlRSWdaQkFXb2hDU0FHTFFBQklRTWdCaTBBQUVIL0FVY0VRQ0FFSUFrMkFoQkJDQ0VGSUFOQkNIUWdBbW9oQWd3QkN5QURRWThCVFFSQUlBUWdDVFlDRUNBRFFRbDBJQUpxSVFKQkJ5RUZEQUVMSUFRZ0JDZ0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVVMSUFWQkFXc2hCU0FDUVFGMElRSWdBVUVCZENJQlFZQ0FBa2tOQUFzZ0IwVWdCeUFNR3d3QkN5QUdLQUlFSVFjZ0RTQUdRUWhCRENBQklBTkpJZ3diYWlnQ0FEWUNBQU5BQWtBZ0JRMEFJQVFvQWhBaUJrRUJhaUVKSUFZdEFBRWhBU0FHTFFBQVFmOEJSd1JBSUFRZ0NUWUNFRUVJSVFVZ0FVRUlkQ0FDYWlFQ0RBRUxJQUZCandGTkJFQWdCQ0FKTmdJUUlBRkJDWFFnQW1vaEFrRUhJUVVNQVFzZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQlFzZ0JVRUJheUVGSUFKQkFYUWhBaUFEUVFGMElnTkJnSUFDU1EwQUN5QURJUUVnQnlBSFJTQU1Hd3RGQkVBZ0RTRUpEQVFMSUFFZ0VDZ0NBQ0lHS0FJQUlnTnJJUUVDZnlBRElBSkJFSFpOQkVBZ0FpQURRUkIwYXlFQ0lBRkJnSUFDY1FSQUlBWW9BZ1FNQWdzZ0JpZ0NCQ0VISUJBZ0JrRU1RUWdnQVNBRFNTSU1HMm9vQWdBaUJqWUNBQU5BQWtBZ0JRMEFJQVFvQWhBaUNVRUJhaUVGSUFrdEFBRWhBeUFKTFFBQVFmOEJSd1JBSUFRZ0JUWUNFRUVJSVFVZ0EwRUlkQ0FDYWlFQ0RBRUxJQU5CandGTkJFQWdCQ0FGTmdJUUlBTkJDWFFnQW1vaEFrRUhJUVVNQVFzZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQlFzZ0JVRUJheUVGSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QUhSU0FISUF3YkRBRUxJQVlvQWdRaEJ5QVFJQVpCQ0VFTUlBRWdBMGtpREJ0cUtBSUFJZ1kyQWdBRFFBSkFJQVVOQUNBRUtBSVFJZ2xCQVdvaEJTQUpMUUFCSVFFZ0NTMEFBRUgvQVVjRVFDQUVJQVUyQWhCQkNDRUZJQUZCQ0hRZ0Ftb2hBZ3dCQ3lBQlFZOEJUUVJBSUFRZ0JUWUNFQ0FCUVFsMElBSnFJUUpCQnlFRkRBRUxJQVFnQkNnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRVUxJQVZCQVdzaEJTQUNRUUYwSVFJZ0EwRUJkQ0lEUVlDQUFra05BQXNnQXlFQklBY2dCMFVnREJzTElRd2dBU0FHS0FJQUlnTnJJUUVDZnlBRElBSkJFSFpOQkVBZ0FpQURRUkIwYXlFQ0lBRkJnSUFDY1FSQUlBWW9BZ1FNQWdzZ0JpZ0NCQ0VISUJBZ0JrRU1RUWdnQVNBRFNTSUtHMm9vQWdBMkFnQURRQUpBSUFVTkFDQUVLQUlRSWdaQkFXb2hDU0FHTFFBQklRTWdCaTBBQUVIL0FVY0VRQ0FFSUFrMkFoQkJDQ0VGSUFOQkNIUWdBbW9oQWd3QkN5QURRWThCVFFSQUlBUWdDVFlDRUNBRFFRbDBJQUpxSVFKQkJ5RUZEQUVMSUFRZ0JDZ0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVVMSUFWQkFXc2hCU0FDUVFGMElRSWdBVUVCZENJQlFZQ0FBa2tOQUFzZ0IwVWdCeUFLR3d3QkN5QUdLQUlFSVFjZ0VDQUdRUWhCRENBQklBTkpJZ29iYWlnQ0FEWUNBQU5BQWtBZ0JRMEFJQVFvQWhBaUJrRUJhaUVKSUFZdEFBRWhBU0FHTFFBQVFmOEJSd1JBSUFRZ0NUWUNFRUVJSVFVZ0FVRUlkQ0FDYWlFQ0RBRUxJQUZCandGTkJFQWdCQ0FKTmdJUUlBRkJDWFFnQW1vaEFrRUhJUVVNQVFzZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQlFzZ0JVRUJheUVGSUFKQkFYUWhBaUFEUVFGMElnTkJnSUFDU1EwQUN5QURJUUVnQnlBSFJTQUtHd3NoQmtFQUlRTWdFQ0VKQWtBQ1FBSkFBbjhDUUFKQUlBWWdERUVCZEhJT0JBQUJBd1VJQ3lBQklCSWdDQ2dDQkVFUmRrRUVjU0FJUVFScklnY29BZ0JCRTNaQkFYRnlJZ3BCNExrQmFpMEFBRUVDZEdvaUNTZ0NBQ0lHS0FJQUlnTnJJUUVDZnlBRElBSkJFSFpOQkVBZ0FpQURRUkIwYXlFQ0lBRkJnSUFDY1FSQUlBWW9BZ1FNQWdzZ0JpZ0NCQ0VNSUFrZ0JrRU1RUWdnQVNBRFNTSVRHMm9vQWdBMkFnQURRQUpBSUFVTkFDQUVLQUlRSWdaQkFXb2hDU0FHTFFBQklRTWdCaTBBQUVIL0FVY0VRQ0FFSUFrMkFoQkJDQ0VGSUFOQkNIUWdBbW9oQWd3QkN5QURRWThCVFFSQUlBUWdDVFlDRUNBRFFRbDBJQUpxSVFKQkJ5RUZEQUVMSUFRZ0JDZ0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVVMSUFWQkFXc2hCU0FDUVFGMElRSWdBVUVCZENJQlFZQ0FBa2tOQUFzZ0RFVWdEQ0FUR3d3QkN5QUdLQUlFSVF3Z0NTQUdRUWhCRENBQklBTkpJaE1iYWlnQ0FEWUNBQU5BQWtBZ0JRMEFJQVFvQWhBaUJrRUJhaUVKSUFZdEFBRWhBU0FHTFFBQVFmOEJSd1JBSUFRZ0NUWUNFRUVJSVFVZ0FVRUlkQ0FDYWlFQ0RBRUxJQUZCandGTkJFQWdCQ0FKTmdJUUlBRkJDWFFnQW1vaEFrRUhJUVVNQVFzZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQlFzZ0JVRUJheUVGSUFKQkFYUWhBaUFEUVFGMElnTkJnSUFDU1EwQUN5QURJUUVnRENBTVJTQVRHd3NoQXlBTElCVWdEaUFESUFwQjRMc0JhaTBBQUhNaUF4czJBZ0FnQnlBSEtBSUFRU0J5TmdJQUlBZ2dDQ2dDQkVFSWNqWUNCQ0FEUVJOMElWa2dBU0FTSUFRb0Ftd3RBQUpCQW5ScUlnY29BZ0FpQmlnQ0FDSURheUVCQW44Z0F5QUNRUkIyVFFSQUlBSWdBMEVRZEdzaEFpQUJRWUNBQW5FRVFDQUdLQUlFREFJTElBWW9BZ1FoQ1NBSElBWkJERUVJSUFFZ0Ewa2lDaHRxS0FJQU5nSUFBMEFDUUNBRkRRQWdCQ2dDRUNJR1FRRnFJUWNnQmkwQUFTRURJQVl0QUFCQi93RkhCRUFnQkNBSE5nSVFRUWdoQlNBRFFRaDBJQUpxSVFJTUFRc2dBMEdQQVUwRVFDQUVJQWMyQWhBZ0EwRUpkQ0FDYWlFQ1FRY2hCUXdCQ3lBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VGQ3lBRlFRRnJJUVVnQWtFQmRDRUNJQUZCQVhRaUFVR0FnQUpKRFFBTElBbEZJQWtnQ2hzTUFRc2dCaWdDQkNFSklBY2dCa0VJUVF3Z0FTQURTU0lLRzJvb0FnQTJBZ0FEUUFKQUlBVU5BQ0FFS0FJUUlnWkJBV29oQnlBR0xRQUJJUUVnQmkwQUFFSC9BVWNFUUNBRUlBYzJBaEJCQ0NFRklBRkJDSFFnQW1vaEFnd0JDeUFCUVk4QlRRUkFJQVFnQnpZQ0VDQUJRUWwwSUFKcUlRSkJCeUVGREFFTElBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFVTElBVkJBV3NoQlNBQ1FRRjBJUUlnQTBFQmRDSURRWUNBQWtrTkFBc2dBeUVCSUFrZ0NVVWdDaHNMSVFZZ1dVRVFjaUlESUFaRkRRRWFDeUFCSUJJZ0NDZ0NCRUVVZGtFRWNTQUlRUVJySWdrb0FnQkJGblpCQVhFZ0EwRVBka0VRY1NBRFFSTjJRY0FBY1NBRFFRTjJRYW9CY1hKeWNuSWlFMEhndVFGcUxRQUFRUUowYWlJTUtBSUFJZ2NvQWdBaUJtc2hBUUovSUFZZ0FrRVFkazBFUUNBQ0lBWkJFSFJySVFJZ0FVR0FnQUp4QkVBZ0J5Z0NCQXdDQ3lBSEtBSUVJUW9nRENBSFFReEJDQ0FCSUFaSklnd2JhaWdDQURZQ0FBTkFBa0FnQlEwQUlBUW9BaEFpQjBFQmFpRUZJQWN0QUFFaEJpQUhMUUFBUWY4QlJ3UkFJQVFnQlRZQ0VFRUlJUVVnQmtFSWRDQUNhaUVDREFFTElBWkJqd0ZOQkVBZ0JDQUZOZ0lRSUFaQkNYUWdBbW9oQWtFSElRVU1BUXNnQkNBRUtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCUXNnQlVFQmF5RUZJQUpCQVhRaEFpQUJRUUYwSWdGQmdJQUNTUTBBQ3lBS1JTQUtJQXdiREFFTElBY29BZ1FoQ2lBTUlBZEJDRUVNSUFFZ0Jra2lEQnRxS0FJQU5nSUFBMEFDUUNBRkRRQWdCQ2dDRUNJSFFRRnFJUVVnQnkwQUFTRUJJQWN0QUFCQi93RkhCRUFnQkNBRk5nSVFRUWdoQlNBQlFRaDBJQUpxSVFJTUFRc2dBVUdQQVUwRVFDQUVJQVUyQWhBZ0FVRUpkQ0FDYWlFQ1FRY2hCUXdCQ3lBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VGQ3lBRlFRRnJJUVVnQWtFQmRDRUNJQVpCQVhRaUJrR0FnQUpKRFFBTElBWWhBU0FLSUFwRklBd2JDeUVHSUFzZ0ZFRUNkR29nRlNBT0lBWWdFMEhndXdGcUxRQUFjeUlHR3pZQ0FDQUpJQWtvQWdCQmdBSnlOZ0lBSUFnZ0NDZ0NCRUhBQUhJMkFnUWdBeUFHUVJaMGNrR0FBWElMSVFNZ0FTQVNJQVFvQW13Z0EwRUdka0h2QTNGcUxRQUFRUUowYWlJSktBSUFJZ2NvQWdBaUJtc2hBUUovSUFZZ0FrRVFkazBFUUNBQ0lBWkJFSFJySVFJZ0FVR0FnQUp4QkVBZ0J5Z0NCQXdDQ3lBSEtBSUVJUXdnQ1NBSFFReEJDQ0FCSUFaSklnb2JhaWdDQURZQ0FBTkFBa0FnQlEwQUlBUW9BaEFpQjBFQmFpRUpJQWN0QUFFaEJpQUhMUUFBUWY4QlJ3UkFJQVFnQ1RZQ0VFRUlJUVVnQmtFSWRDQUNhaUVDREFFTElBWkJqd0ZOQkVBZ0JDQUpOZ0lRSUFaQkNYUWdBbW9oQWtFSElRVU1BUXNnQkNBRUtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCUXNnQlVFQmF5RUZJQUpCQVhRaEFpQUJRUUYwSWdGQmdJQUNTUTBBQ3lBTVJTQU1JQW9iREFFTElBY29BZ1FoRENBSklBZEJDRUVNSUFFZ0Jra2lDaHRxS0FJQU5nSUFBMEFDUUNBRkRRQWdCQ2dDRUNJSFFRRnFJUWtnQnkwQUFTRUJJQWN0QUFCQi93RkhCRUFnQkNBSk5nSVFRUWdoQlNBQlFRaDBJQUpxSVFJTUFRc2dBVUdQQVUwRVFDQUVJQWsyQWhBZ0FVRUpkQ0FDYWlFQ1FRY2hCUXdCQ3lBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VGQ3lBRlFRRnJJUVVnQWtFQmRDRUNJQVpCQVhRaUJrR0FnQUpKRFFBTElBWWhBU0FNSUF4RklBb2JDMFVOQVFzZ0FTQVNJQWdvQWdSQkYzWkJCSEVnQ0VFRWF5SUpLQUlBUVJsMlFRRnhJQU5CRW5aQkVIRWdBMEVXZGtIQUFIRWdBMEVHZGtHcUFYRnljbkp5SWhOQjRMa0JhaTBBQUVFQ2RHb2lEQ2dDQUNJSEtBSUFJZ1pySVFFQ2Z5QUdJQUpCRUhaTkJFQWdBaUFHUVJCMGF5RUNJQUZCZ0lBQ2NRUkFJQWNvQWdRTUFnc2dCeWdDQkNFS0lBd2dCMEVNUVFnZ0FTQUdTU0lNRzJvb0FnQTJBZ0FEUUFKQUlBVU5BQ0FFS0FJUUlnZEJBV29oQlNBSExRQUJJUVlnQnkwQUFFSC9BVWNFUUNBRUlBVTJBaEJCQ0NFRklBWkJDSFFnQW1vaEFnd0JDeUFHUVk4QlRRUkFJQVFnQlRZQ0VDQUdRUWwwSUFKcUlRSkJCeUVGREFFTElBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFVTElBVkJBV3NoQlNBQ1FRRjBJUUlnQVVFQmRDSUJRWUNBQWtrTkFBc2dDa1VnQ2lBTUd3d0JDeUFIS0FJRUlRb2dEQ0FIUVFoQkRDQUJJQVpKSWd3YmFpZ0NBRFlDQUFOQUFrQWdCUTBBSUFRb0FoQWlCMEVCYWlFRklBY3RBQUVoQVNBSExRQUFRZjhCUndSQUlBUWdCVFlDRUVFSUlRVWdBVUVJZENBQ2FpRUNEQUVMSUFGQmp3Rk5CRUFnQkNBRk5nSVFJQUZCQ1hRZ0Ftb2hBa0VISVFVTUFRc2dCQ0FFS0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJRc2dCVUVCYXlFRklBSkJBWFFoQWlBR1FRRjBJZ1pCZ0lBQ1NRMEFDeUFHSVFFZ0NpQUtSU0FNR3dzaEJpQUxJQ1JCQW5ScUlCVWdEaUFHSUJOQjRMc0JhaTBBQUhNaUJoczJBZ0FnQ1NBSktBSUFRWUFRY2pZQ0FDQUlJQWdvQWdSQmdBUnlOZ0lFSUFNZ0JrRVpkSEpCZ0FoeUlRTUxJQUVnRWlBRUtBSnNJQU5CQ1haQjd3TnhhaTBBQUVFQ2RHb2lDU2dDQUNJSEtBSUFJZ1pySVFFQ2Z5QUdJQUpCRUhaTkJFQWdBaUFHUVJCMGF5RUNJQUZCZ0lBQ2NRUkFJQWNvQWdRTUFnc2dCeWdDQkNFTUlBa2dCMEVNUVFnZ0FTQUdTU0lLRzJvb0FnQTJBZ0FEUUFKQUlBVU5BQ0FFS0FJUUlnZEJBV29oQlNBSExRQUJJUVlnQnkwQUFFSC9BVWNFUUNBRUlBVTJBaEJCQ0NFRklBWkJDSFFnQW1vaEFnd0JDeUFHUVk4QlRRUkFJQVFnQlRZQ0VDQUdRUWwwSUFKcUlRSkJCeUVGREFFTElBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFVTElBVkJBV3NoQlNBQ1FRRjBJUUlnQVVFQmRDSUJRWUNBQWtrTkFBc2dERVVnRENBS0d3d0JDeUFIS0FJRUlRd2dDU0FIUVFoQkRDQUJJQVpKSWdvYmFpZ0NBRFlDQUFOQUFrQWdCUTBBSUFRb0FoQWlCMEVCYWlFRklBY3RBQUVoQVNBSExRQUFRZjhCUndSQUlBUWdCVFlDRUVFSUlRVWdBVUVJZENBQ2FpRUNEQUVMSUFGQmp3Rk5CRUFnQkNBRk5nSVFJQUZCQ1hRZ0Ftb2hBa0VISVFVTUFRc2dCQ0FFS0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJRc2dCVUVCYXlFRklBSkJBWFFoQWlBR1FRRjBJZ1pCZ0lBQ1NRMEFDeUFHSVFFZ0RDQU1SU0FLR3d0RkRRTUxJQUVnRWlBSUtBSUVRUnAyUVFSeElBaEJCR3NpRENnQ0FFRWNka0VCY1NBRFFSVjJRUkJ4SUFOQkdYWkJ3QUJ4SUFOQkNYWkJxZ0Z4Y25KeWNpSVRRZUM1QVdvdEFBQkJBblJxSWdrb0FnQWlDaWdDQUNJR2F5RUJJQVlnQWtFUWRrMEVRQ0FDSUFaQkVIUnJJUUlnQVVHQWdBSnhEUUVnQ2lnQ0JDRUhJQWtnQ2tFTVFRZ2dBU0FHU1NJY0cyb29BZ0EyQWdBRFFBSkFJQVVOQUNBRUtBSVFJZ1ZCQVdvaENpQUZMUUFCSVFZZ0JTMEFBRUgvQVVjRVFDQUVJQW8yQWhCQkNDRUZJQVpCQ0hRZ0Ftb2hBZ3dCQ3lBR1FZOEJUUVJBSUFRZ0NqWUNFQ0FHUVFsMElBSnFJUUpCQnlFRkRBRUxJQVFnQkNnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRVUxJQVZCQVdzaEJTQUNRUUYwSVFJZ0FVRUJkQ0lCUVlDQUFra05BQXNnQjBVZ0J5QWNHd3dDQ3lBS0tBSUVJUWNnQ1NBS1FRaEJEQ0FCSUFaSklod2JhaWdDQURZQ0FBTkFBa0FnQlEwQUlBUW9BaEFpQlVFQmFpRUtJQVV0QUFFaEFTQUZMUUFBUWY4QlJ3UkFJQVFnQ2pZQ0VFRUlJUVVnQVVFSWRDQUNhaUVDREFFTElBRkJqd0ZOQkVBZ0JDQUtOZ0lRSUFGQkNYUWdBbW9oQWtFSElRVU1BUXNnQkNBRUtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCUXNnQlVFQmF5RUZJQUpCQVhRaEFpQUdRUUYwSWdaQmdJQUNTUTBBQ3lBR0lRRWdCeUFIUlNBY0d3d0JDeUFLS0FJRUN5RUdJQXNnRzBFQ2RHb2dGU0FPSUFZZ0UwSGd1d0ZxTFFBQWN5SUhHellDQUNBTUlBd29BZ0JCZ0lBQmNqWUNBQ0FJSUFnb0FnUkJnQ0J5TmdJRUlBUW9BbnhCQW5RZ0NHb2lCaUFHS0FJRVFRUnlOZ0lFSUFZZ0JpZ0NERUVCY2pZQ0RDQUdJQVlvQWdnZ0IwRVNkSEpCQW5JMkFnZ2dBeUFIUVJ4MGNrR0F3QUJ5SVFNTElBZ2dBMEgvLy8rMmUzRTJBZ0FMSUFoQkJHb2hBeUFMUVFScUlRc2dHRUVCYWlJWUlCUkhEUUFMSUFoQkRHb2hBeUFMSUJ0QkFuUnFJUXNnRVVFRWFpSVJJQVFvQW9BQklnWkJmSEZKRFFBTERBSUxBa0FnQmtFRVNRMEFJQlFFUUNBRVFlUUFhaUVRSUFSQjRBQnFJUTBnRkVFRGJDRWJJQlJCQVhRaEpFRUFJQTVySVJVZ0JFRWNhaUVTQTBCQkFDRVlBMEFDUUFKQUFuOENRQ0FESWdnb0FnQWlBd1JBQWtBZ0EwR1FnSUFCY1EwQUlBRWdFaUFFS0FKc0lBTkI3d054YWkwQUFFRUNkR29pQ1NnQ0FDSUhLQUlBSWdacklRRUNmeUFHSUFKQkVIWk5CRUFnQWlBR1FSQjBheUVDSUFGQmdJQUNjUVJBSUFjb0FnUU1BZ3NnQnlnQ0JDRU1JQWtnQjBFTVFRZ2dBU0FHU1NJS0cyb29BZ0EyQWdBRFFBSkFJQVVOQUNBRUtBSVFJZ2RCQVdvaEJTQUhMUUFCSVFZZ0J5MEFBRUgvQVVjRVFDQUVJQVUyQWhCQkNDRUZJQVpCQ0hRZ0Ftb2hBZ3dCQ3lBR1FZOEJUUVJBSUFRZ0JUWUNFQ0FHUVFsMElBSnFJUUpCQnlFRkRBRUxJQVFnQkNnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRVUxJQVZCQVdzaEJTQUNRUUYwSVFJZ0FVRUJkQ0lCUVlDQUFra05BQXNnREVVZ0RDQUtHd3dCQ3lBSEtBSUVJUXdnQ1NBSFFRaEJEQ0FCSUFaSklnb2JhaWdDQURZQ0FBTkFBa0FnQlEwQUlBUW9BaEFpQjBFQmFpRUZJQWN0QUFFaEFTQUhMUUFBUWY4QlJ3UkFJQVFnQlRZQ0VFRUlJUVVnQVVFSWRDQUNhaUVDREFFTElBRkJqd0ZOQkVBZ0JDQUZOZ0lRSUFGQkNYUWdBbW9oQWtFSElRVU1BUXNnQkNBRUtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCUXNnQlVFQmF5RUZJQUpCQVhRaEFpQUdRUUYwSWdaQmdJQUNTUTBBQ3lBR0lRRWdEQ0FNUlNBS0d3dEZEUUFnQVNBU0lBZ29BZ1JCRVhaQkJIRWdDRUVFYXlJTUtBSUFRUk4yUVFGeElBTkJEblpCRUhFZ0EwRVFka0hBQUhFZ0EwR3FBWEZ5Y25KeUloTkI0TGtCYWkwQUFFRUNkR29pQ1NnQ0FDSUhLQUlBSWdacklRRUNmeUFHSUFKQkVIWk5CRUFnQWlBR1FSQjBheUVDSUFGQmdJQUNjUVJBSUFjb0FnUU1BZ3NnQnlnQ0JDRUtJQWtnQjBFTVFRZ2dBU0FHU1NJY0cyb29BZ0EyQWdBRFFBSkFJQVVOQUNBRUtBSVFJZ2RCQVdvaEJTQUhMUUFCSVFZZ0J5MEFBRUgvQVVjRVFDQUVJQVUyQWhCQkNDRUZJQVpCQ0hRZ0Ftb2hBZ3dCQ3lBR1FZOEJUUVJBSUFRZ0JUWUNFQ0FHUVFsMElBSnFJUUpCQnlFRkRBRUxJQVFnQkNnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRVUxJQVZCQVdzaEJTQUNRUUYwSVFJZ0FVRUJkQ0lCUVlDQUFra05BQXNnQ2tVZ0NpQWNHd3dCQ3lBSEtBSUVJUW9nQ1NBSFFRaEJEQ0FCSUFaSklod2JhaWdDQURZQ0FBTkFBa0FnQlEwQUlBUW9BaEFpQjBFQmFpRUZJQWN0QUFFaEFTQUhMUUFBUWY4QlJ3UkFJQVFnQlRZQ0VFRUlJUVVnQVVFSWRDQUNhaUVDREFFTElBRkJqd0ZOQkVBZ0JDQUZOZ0lRSUFGQkNYUWdBbW9oQWtFSElRVU1BUXNnQkNBRUtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCUXNnQlVFQmF5RUZJQUpCQVhRaEFpQUdRUUYwSWdaQmdJQUNTUTBBQ3lBR0lRRWdDaUFLUlNBY0d3c2hCaUFMSUJVZ0RpQUdJQk5CNExzQmFpMEFBSE1pQnhzMkFnQWdEQ0FNS0FJQVFTQnlOZ0lBSUFnZ0NDZ0NCRUVJY2pZQ0JDQUlRWDRnQkNnQ2ZHdEJBblJxSWdZZ0JpZ0NCRUdBZ0FKeU5nSUVJQVlnQmlnQ0FDQUhRUjkwY2tHQWdBUnlOZ0lBSUFaQkJHc2lCaUFHS0FJQVFZQ0FDSEkyQWdBZ0F5QUhRUk4wY2tFUWNpRURDd0pBSUFOQmdJR0FDSEVOQUNBQklCSWdCQ2dDYkNBRFFRTjJJZ3BCN3dOeGFpMEFBRUVDZEdvaUNTZ0NBQ0lIS0FJQUlnWnJJUUVDZnlBR0lBSkJFSFpOQkVBZ0FpQUdRUkIwYXlFQ0lBRkJnSUFDY1FSQUlBY29BZ1FNQWdzZ0J5Z0NCQ0VNSUFrZ0IwRU1RUWdnQVNBR1NTSVRHMm9vQWdBMkFnQURRQUpBSUFVTkFDQUVLQUlRSWdkQkFXb2hCU0FITFFBQklRWWdCeTBBQUVIL0FVY0VRQ0FFSUFVMkFoQkJDQ0VGSUFaQkNIUWdBbW9oQWd3QkN5QUdRWThCVFFSQUlBUWdCVFlDRUNBR1FRbDBJQUpxSVFKQkJ5RUZEQUVMSUFRZ0JDZ0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVVMSUFWQkFXc2hCU0FDUVFGMElRSWdBVUVCZENJQlFZQ0FBa2tOQUFzZ0RFVWdEQ0FUR3d3QkN5QUhLQUlFSVF3Z0NTQUhRUWhCRENBQklBWkpJaE1iYWlnQ0FEWUNBQU5BQWtBZ0JRMEFJQVFvQWhBaUIwRUJhaUVGSUFjdEFBRWhBU0FITFFBQVFmOEJSd1JBSUFRZ0JUWUNFRUVJSVFVZ0FVRUlkQ0FDYWlFQ0RBRUxJQUZCandGTkJFQWdCQ0FGTmdJUUlBRkJDWFFnQW1vaEFrRUhJUVVNQVFzZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQlFzZ0JVRUJheUVGSUFKQkFYUWhBaUFHUVFGMElnWkJnSUFDU1EwQUN5QUdJUUVnRENBTVJTQVRHd3RGRFFBZ0FTQVNJQWdvQWdSQkZIWkJCSEVnQ0VFRWF5SU1LQUlBUVJaMlFRRnhJQU5CRDNaQkVIRWdBMEVUZGtIQUFIRWdDa0dxQVhGeWNuSnlJaE5CNExrQmFpMEFBRUVDZEdvaUNTZ0NBQ0lIS0FJQUlnWnJJUUVDZnlBR0lBSkJFSFpOQkVBZ0FpQUdRUkIwYXlFQ0lBRkJnSUFDY1FSQUlBY29BZ1FNQWdzZ0J5Z0NCQ0VLSUFrZ0IwRU1RUWdnQVNBR1NTSWNHMm9vQWdBMkFnQURRQUpBSUFVTkFDQUVLQUlRSWdkQkFXb2hCU0FITFFBQklRWWdCeTBBQUVIL0FVY0VRQ0FFSUFVMkFoQkJDQ0VGSUFaQkNIUWdBbW9oQWd3QkN5QUdRWThCVFFSQUlBUWdCVFlDRUNBR1FRbDBJQUpxSVFKQkJ5RUZEQUVMSUFRZ0JDZ0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVVMSUFWQkFXc2hCU0FDUVFGMElRSWdBVUVCZENJQlFZQ0FBa2tOQUFzZ0NrVWdDaUFjR3d3QkN5QUhLQUlFSVFvZ0NTQUhRUWhCRENBQklBWkpJaHdiYWlnQ0FEWUNBQU5BQWtBZ0JRMEFJQVFvQWhBaUIwRUJhaUVGSUFjdEFBRWhBU0FITFFBQVFmOEJSd1JBSUFRZ0JUWUNFRUVJSVFVZ0FVRUlkQ0FDYWlFQ0RBRUxJQUZCandGTkJFQWdCQ0FGTmdJUUlBRkJDWFFnQW1vaEFrRUhJUVVNQVFzZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQlFzZ0JVRUJheUVGSUFKQkFYUWhBaUFHUVFGMElnWkJnSUFDU1EwQUN5QUdJUUVnQ2lBS1JTQWNHd3NoQmlBTElCUkJBblJxSUJVZ0RpQUdJQk5CNExzQmFpMEFBSE1pQmhzMkFnQWdEQ0FNS0FJQVFZQUNjallDQUNBSUlBZ29BZ1JCd0FCeU5nSUVJQU1nQmtFV2RISkJnQUZ5SVFNTEFrQWdBMEdBaUlEQUFIRU5BQ0FCSUJJZ0JDZ0NiQ0FEUVFaMklncEI3d054YWkwQUFFRUNkR29pQ1NnQ0FDSUhLQUlBSWdacklRRUNmeUFHSUFKQkVIWk5CRUFnQWlBR1FSQjBheUVDSUFGQmdJQUNjUVJBSUFjb0FnUU1BZ3NnQnlnQ0JDRU1JQWtnQjBFTVFRZ2dBU0FHU1NJVEcyb29BZ0EyQWdBRFFBSkFJQVVOQUNBRUtBSVFJZ2RCQVdvaEJTQUhMUUFCSVFZZ0J5MEFBRUgvQVVjRVFDQUVJQVUyQWhCQkNDRUZJQVpCQ0hRZ0Ftb2hBZ3dCQ3lBR1FZOEJUUVJBSUFRZ0JUWUNFQ0FHUVFsMElBSnFJUUpCQnlFRkRBRUxJQVFnQkNnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRVUxJQVZCQVdzaEJTQUNRUUYwSVFJZ0FVRUJkQ0lCUVlDQUFra05BQXNnREVVZ0RDQVRHd3dCQ3lBSEtBSUVJUXdnQ1NBSFFRaEJEQ0FCSUFaSkloTWJhaWdDQURZQ0FBTkFBa0FnQlEwQUlBUW9BaEFpQjBFQmFpRUZJQWN0QUFFaEFTQUhMUUFBUWY4QlJ3UkFJQVFnQlRZQ0VFRUlJUVVnQVVFSWRDQUNhaUVDREFFTElBRkJqd0ZOQkVBZ0JDQUZOZ0lRSUFGQkNYUWdBbW9oQWtFSElRVU1BUXNnQkNBRUtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCUXNnQlVFQmF5RUZJQUpCQVhRaEFpQUdRUUYwSWdaQmdJQUNTUTBBQ3lBR0lRRWdEQ0FNUlNBVEd3dEZEUUFnQVNBU0lBZ29BZ1JCRjNaQkJIRWdDRUVFYXlJTUtBSUFRUmwyUVFGeElBTkJFblpCRUhFZ0EwRVdka0hBQUhFZ0NrR3FBWEZ5Y25KeUloTkI0TGtCYWkwQUFFRUNkR29pQ1NnQ0FDSUhLQUlBSWdacklRRUNmeUFHSUFKQkVIWk5CRUFnQWlBR1FSQjBheUVDSUFGQmdJQUNjUVJBSUFjb0FnUU1BZ3NnQnlnQ0JDRUtJQWtnQjBFTVFRZ2dBU0FHU1NJY0cyb29BZ0EyQWdBRFFBSkFJQVVOQUNBRUtBSVFJZ2RCQVdvaEJTQUhMUUFCSVFZZ0J5MEFBRUgvQVVjRVFDQUVJQVUyQWhCQkNDRUZJQVpCQ0hRZ0Ftb2hBZ3dCQ3lBR1FZOEJUUVJBSUFRZ0JUWUNFQ0FHUVFsMElBSnFJUUpCQnlFRkRBRUxJQVFnQkNnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRVUxJQVZCQVdzaEJTQUNRUUYwSVFJZ0FVRUJkQ0lCUVlDQUFra05BQXNnQ2tVZ0NpQWNHd3dCQ3lBSEtBSUVJUW9nQ1NBSFFRaEJEQ0FCSUFaSklod2JhaWdDQURZQ0FBTkFBa0FnQlEwQUlBUW9BaEFpQjBFQmFpRUZJQWN0QUFFaEFTQUhMUUFBUWY4QlJ3UkFJQVFnQlRZQ0VFRUlJUVVnQVVFSWRDQUNhaUVDREFFTElBRkJqd0ZOQkVBZ0JDQUZOZ0lRSUFGQkNYUWdBbW9oQWtFSElRVU1BUXNnQkNBRUtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCUXNnQlVFQmF5RUZJQUpCQVhRaEFpQUdRUUYwSWdaQmdJQUNTUTBBQ3lBR0lRRWdDaUFLUlNBY0d3c2hCaUFMSUNSQkFuUnFJQlVnRGlBR0lCTkI0THNCYWkwQUFITWlCaHMyQWdBZ0RDQU1LQUlBUVlBUWNqWUNBQ0FJSUFnb0FnUkJnQVJ5TmdJRUlBTWdCa0VaZEhKQmdBaHlJUU1MSUFOQmdNQ0FnQVJ4RFFNZ0FTQVNJQVFvQW13Z0EwRUpkaUlLUWU4RGNXb3RBQUJCQW5ScUlna29BZ0FpQVNnQ0FDSUdheUVIQW44Z0JpQUNRUkIyVFFSQUlBSWdCa0VRZEdzaEFpQUhRWUNBQW5FRVFDQUJLQUlFREFJTElBRW9BZ1FoRENBSklBRkJERUVJSUFZZ0Iwc2lFeHRxS0FJQU5nSUFBMEFDUUNBRkRRQWdCQ2dDRUNJR1FRRnFJUVVnQmkwQUFTRUJJQVl0QUFCQi93RkhCRUFnQkNBRk5nSVFRUWdoQlNBQlFRaDBJQUpxSVFJTUFRc2dBVUdQQVUwRVFDQUVJQVUyQWhBZ0FVRUpkQ0FDYWlFQ1FRY2hCUXdCQ3lBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VGQ3lBRlFRRnJJUVVnQWtFQmRDRUNJQWRCQVhRaUIwR0FnQUpKRFFBTElBeEZJQXdnRXhzTUFRc2dBU2dDQkNFTUlBa2dBVUVJUVF3Z0JpQUhTeUlURzJvb0FnQTJBZ0FEUUFKQUlBVU5BQ0FFS0FJUUlnZEJBV29oQlNBSExRQUJJUUVnQnkwQUFFSC9BVWNFUUNBRUlBVTJBaEJCQ0NFRklBRkJDSFFnQW1vaEFnd0JDeUFCUVk4QlRRUkFJQVFnQlRZQ0VDQUJRUWwwSUFKcUlRSkJCeUVGREFFTElBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFVTElBVkJBV3NoQlNBQ1FRRjBJUUlnQmtFQmRDSUdRWUNBQWtrTkFBc2dCaUVISUF3Z0RFVWdFeHNMUlFSQUlBY2hBUXdFQ3lBSElCSWdDQ2dDQkVFYWRrRUVjU0FJUVFScklnd29BZ0JCSEhaQkFYRWdBMEVWZGtFUWNTQURRUmwyUWNBQWNTQUtRYW9CY1hKeWNuSWlFMEhndVFGcUxRQUFRUUowYWlJSktBSUFJZ29vQWdBaUFXc2hCaUFCSUFKQkVIWk5CRUFnQWlBQlFSQjBheUVDSUFaQmdJQUNjUVJBSUFZaEFRd0RDeUFLS0FJRUlRY2dDU0FLUVF4QkNDQUJJQVpMSWh3YmFpZ0NBRFlDQUFOQUFrQWdCUTBBSUFRb0FoQWlCVUVCYWlFS0lBVXRBQUVoQVNBRkxRQUFRZjhCUndSQUlBUWdDallDRUVFSUlRVWdBVUVJZENBQ2FpRUNEQUVMSUFGQmp3Rk5CRUFnQkNBS05nSVFJQUZCQ1hRZ0Ftb2hBa0VISVFVTUFRc2dCQ0FFS0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJRc2dCVUVCYXlFRklBSkJBWFFoQWlBR1FRRjBJZ1pCZ0lBQ1NRMEFDeUFHSVFFZ0IwVWdCeUFjR3d3REN5QUtLQUlFSVFjZ0NTQUtRUWhCRENBQklBWkxJaHdiYWlnQ0FEWUNBQU5BQWtBZ0JRMEFJQVFvQWhBaUJVRUJhaUVLSUFVdEFBRWhCaUFGTFFBQVFmOEJSd1JBSUFRZ0NqWUNFRUVJSVFVZ0JrRUlkQ0FDYWlFQ0RBRUxJQVpCandGTkJFQWdCQ0FLTmdJUUlBWkJDWFFnQW1vaEFrRUhJUVVNQVFzZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQlFzZ0JVRUJheUVGSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QUhJQWRGSUJ3YkRBSUxJQUVnRFNnQ0FDSUdLQUlBSWdOcklRRUNmeUFESUFKQkVIWk5CRUFnQWlBRFFSQjBheUVDSUFGQmdJQUNjUVJBSUFZb0FnUU1BZ3NnQmlnQ0JDRUhJQTBnQmtFTVFRZ2dBU0FEU1NJTUcyb29BZ0EyQWdBRFFBSkFJQVVOQUNBRUtBSVFJZ1pCQVdvaENTQUdMUUFCSVFNZ0JpMEFBRUgvQVVjRVFDQUVJQWsyQWhCQkNDRUZJQU5CQ0hRZ0Ftb2hBZ3dCQ3lBRFFZOEJUUVJBSUFRZ0NUWUNFQ0FEUVFsMElBSnFJUUpCQnlFRkRBRUxJQVFnQkNnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRVUxJQVZCQVdzaEJTQUNRUUYwSVFJZ0FVRUJkQ0lCUVlDQUFra05BQXNnQjBVZ0J5QU1Hd3dCQ3lBR0tBSUVJUWNnRFNBR1FRaEJEQ0FCSUFOSklnd2JhaWdDQURZQ0FBTkFBa0FnQlEwQUlBUW9BaEFpQmtFQmFpRUpJQVl0QUFFaEFTQUdMUUFBUWY4QlJ3UkFJQVFnQ1RZQ0VFRUlJUVVnQVVFSWRDQUNhaUVDREFFTElBRkJqd0ZOQkVBZ0JDQUpOZ0lRSUFGQkNYUWdBbW9oQWtFSElRVU1BUXNnQkNBRUtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCUXNnQlVFQmF5RUZJQUpCQVhRaEFpQURRUUYwSWdOQmdJQUNTUTBBQ3lBRElRRWdCeUFIUlNBTUd3dEZCRUFnRFNFSkRBUUxJQUVnRUNnQ0FDSUdLQUlBSWdOcklRRUNmeUFESUFKQkVIWk5CRUFnQWlBRFFSQjBheUVDSUFGQmdJQUNjUVJBSUFZb0FnUU1BZ3NnQmlnQ0JDRUhJQkFnQmtFTVFRZ2dBU0FEU1NJTUcyb29BZ0FpQmpZQ0FBTkFBa0FnQlEwQUlBUW9BaEFpQ1VFQmFpRUZJQWt0QUFFaEF5QUpMUUFBUWY4QlJ3UkFJQVFnQlRZQ0VFRUlJUVVnQTBFSWRDQUNhaUVDREFFTElBTkJqd0ZOQkVBZ0JDQUZOZ0lRSUFOQkNYUWdBbW9oQWtFSElRVU1BUXNnQkNBRUtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCUXNnQlVFQmF5RUZJQUpCQVhRaEFpQUJRUUYwSWdGQmdJQUNTUTBBQ3lBSFJTQUhJQXdiREFFTElBWW9BZ1FoQnlBUUlBWkJDRUVNSUFFZ0Ewa2lEQnRxS0FJQUlnWTJBZ0FEUUFKQUlBVU5BQ0FFS0FJUUlnbEJBV29oQlNBSkxRQUJJUUVnQ1MwQUFFSC9BVWNFUUNBRUlBVTJBaEJCQ0NFRklBRkJDSFFnQW1vaEFnd0JDeUFCUVk4QlRRUkFJQVFnQlRZQ0VDQUJRUWwwSUFKcUlRSkJCeUVGREFFTElBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFVTElBVkJBV3NoQlNBQ1FRRjBJUUlnQTBFQmRDSURRWUNBQWtrTkFBc2dBeUVCSUFjZ0IwVWdEQnNMSVF3Z0FTQUdLQUlBSWdOcklRRUNmeUFESUFKQkVIWk5CRUFnQWlBRFFSQjBheUVDSUFGQmdJQUNjUVJBSUFZb0FnUU1BZ3NnQmlnQ0JDRUhJQkFnQmtFTVFRZ2dBU0FEU1NJS0cyb29BZ0EyQWdBRFFBSkFJQVVOQUNBRUtBSVFJZ1pCQVdvaENTQUdMUUFCSVFNZ0JpMEFBRUgvQVVjRVFDQUVJQWsyQWhCQkNDRUZJQU5CQ0hRZ0Ftb2hBZ3dCQ3lBRFFZOEJUUVJBSUFRZ0NUWUNFQ0FEUVFsMElBSnFJUUpCQnlFRkRBRUxJQVFnQkNnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRVUxJQVZCQVdzaEJTQUNRUUYwSVFJZ0FVRUJkQ0lCUVlDQUFra05BQXNnQjBVZ0J5QUtHd3dCQ3lBR0tBSUVJUWNnRUNBR1FRaEJEQ0FCSUFOSklnb2JhaWdDQURZQ0FBTkFBa0FnQlEwQUlBUW9BaEFpQmtFQmFpRUpJQVl0QUFFaEFTQUdMUUFBUWY4QlJ3UkFJQVFnQ1RZQ0VFRUlJUVVnQVVFSWRDQUNhaUVDREFFTElBRkJqd0ZOQkVBZ0JDQUpOZ0lRSUFGQkNYUWdBbW9oQWtFSElRVU1BUXNnQkNBRUtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCUXNnQlVFQmF5RUZJQUpCQVhRaEFpQURRUUYwSWdOQmdJQUNTUTBBQ3lBRElRRWdCeUFIUlNBS0d3c2hCa0VBSVFNZ0VDRUpBa0FDUUFKQUFuOENRQUpBSUFZZ0RFRUJkSElPQkFBQkF3VUlDeUFCSUJJZ0NDZ0NCRUVSZGtFRWNTQUlRUVJySWdjb0FnQkJFM1pCQVhGeUlncEI0TGtCYWkwQUFFRUNkR29pQ1NnQ0FDSUdLQUlBSWdOcklRRUNmeUFESUFKQkVIWk5CRUFnQWlBRFFSQjBheUVDSUFGQmdJQUNjUVJBSUFZb0FnUU1BZ3NnQmlnQ0JDRU1JQWtnQmtFTVFRZ2dBU0FEU1NJVEcyb29BZ0EyQWdBRFFBSkFJQVVOQUNBRUtBSVFJZ1pCQVdvaENTQUdMUUFCSVFNZ0JpMEFBRUgvQVVjRVFDQUVJQWsyQWhCQkNDRUZJQU5CQ0hRZ0Ftb2hBZ3dCQ3lBRFFZOEJUUVJBSUFRZ0NUWUNFQ0FEUVFsMElBSnFJUUpCQnlFRkRBRUxJQVFnQkNnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRVUxJQVZCQVdzaEJTQUNRUUYwSVFJZ0FVRUJkQ0lCUVlDQUFra05BQXNnREVVZ0RDQVRHd3dCQ3lBR0tBSUVJUXdnQ1NBR1FRaEJEQ0FCSUFOSkloTWJhaWdDQURZQ0FBTkFBa0FnQlEwQUlBUW9BaEFpQmtFQmFpRUpJQVl0QUFFaEFTQUdMUUFBUWY4QlJ3UkFJQVFnQ1RZQ0VFRUlJUVVnQVVFSWRDQUNhaUVDREFFTElBRkJqd0ZOQkVBZ0JDQUpOZ0lRSUFGQkNYUWdBbW9oQWtFSElRVU1BUXNnQkNBRUtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCUXNnQlVFQmF5RUZJQUpCQVhRaEFpQURRUUYwSWdOQmdJQUNTUTBBQ3lBRElRRWdEQ0FNUlNBVEd3c2hBeUFMSUJVZ0RpQURJQXBCNExzQmFpMEFBSE1pQmhzMkFnQWdCeUFIS0FJQVFTQnlOZ0lBSUFnZ0NDZ0NCRUVJY2pZQ0JDQUlRWDRnQkNnQ2ZHdEJBblJxSWdNZ0F5Z0NCRUdBZ0FKeU5nSUVJQU1nQXlnQ0FDQUdRUjkwY2tHQWdBUnlOZ0lBSUFOQkJHc2lBeUFES0FJQVFZQ0FDSEkyQWdBZ0JrRVRkQ0ZhSUFFZ0VpQUVLQUpzTFFBQ1FRSjBhaUlIS0FJQUlnWW9BZ0FpQTJzaEFRSi9JQU1nQWtFUWRrMEVRQ0FDSUFOQkVIUnJJUUlnQVVHQWdBSnhCRUFnQmlnQ0JBd0NDeUFHS0FJRUlRa2dCeUFHUVF4QkNDQUJJQU5KSWdvYmFpZ0NBRFlDQUFOQUFrQWdCUTBBSUFRb0FoQWlCa0VCYWlFSElBWXRBQUVoQXlBR0xRQUFRZjhCUndSQUlBUWdCellDRUVFSUlRVWdBMEVJZENBQ2FpRUNEQUVMSUFOQmp3Rk5CRUFnQkNBSE5nSVFJQU5CQ1hRZ0Ftb2hBa0VISVFVTUFRc2dCQ0FFS0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJRc2dCVUVCYXlFRklBSkJBWFFoQWlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFKUlNBSklBb2JEQUVMSUFZb0FnUWhDU0FISUFaQkNFRU1JQUVnQTBraUNodHFLQUlBTmdJQUEwQUNRQ0FGRFFBZ0JDZ0NFQ0lHUVFGcUlRY2dCaTBBQVNFQklBWXRBQUJCL3dGSEJFQWdCQ0FITmdJUVFRZ2hCU0FCUVFoMElBSnFJUUlNQVFzZ0FVR1BBVTBFUUNBRUlBYzJBaEFnQVVFSmRDQUNhaUVDUVFjaEJRd0JDeUFFSUFRb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUZDeUFGUVFGcklRVWdBa0VCZENFQ0lBTkJBWFFpQTBHQWdBSkpEUUFMSUFNaEFTQUpJQWxGSUFvYkN5RUdJRnBCRUhJaUF5QUdSUTBCR2dzZ0FTQVNJQWdvQWdSQkZIWkJCSEVnQ0VFRWF5SUpLQUlBUVJaMlFRRnhJQU5CRDNaQkVIRWdBMEVUZGtIQUFIRWdBMEVEZGtHcUFYRnljbkp5SWhOQjRMa0JhaTBBQUVFQ2RHb2lEQ2dDQUNJSEtBSUFJZ1pySVFFQ2Z5QUdJQUpCRUhaTkJFQWdBaUFHUVJCMGF5RUNJQUZCZ0lBQ2NRUkFJQWNvQWdRTUFnc2dCeWdDQkNFS0lBd2dCMEVNUVFnZ0FTQUdTU0lNRzJvb0FnQTJBZ0FEUUFKQUlBVU5BQ0FFS0FJUUlnZEJBV29oQlNBSExRQUJJUVlnQnkwQUFFSC9BVWNFUUNBRUlBVTJBaEJCQ0NFRklBWkJDSFFnQW1vaEFnd0JDeUFHUVk4QlRRUkFJQVFnQlRZQ0VDQUdRUWwwSUFKcUlRSkJCeUVGREFFTElBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFVTElBVkJBV3NoQlNBQ1FRRjBJUUlnQVVFQmRDSUJRWUNBQWtrTkFBc2dDa1VnQ2lBTUd3d0JDeUFIS0FJRUlRb2dEQ0FIUVFoQkRDQUJJQVpKSWd3YmFpZ0NBRFlDQUFOQUFrQWdCUTBBSUFRb0FoQWlCMEVCYWlFRklBY3RBQUVoQVNBSExRQUFRZjhCUndSQUlBUWdCVFlDRUVFSUlRVWdBVUVJZENBQ2FpRUNEQUVMSUFGQmp3Rk5CRUFnQkNBRk5nSVFJQUZCQ1hRZ0Ftb2hBa0VISVFVTUFRc2dCQ0FFS0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJRc2dCVUVCYXlFRklBSkJBWFFoQWlBR1FRRjBJZ1pCZ0lBQ1NRMEFDeUFHSVFFZ0NpQUtSU0FNR3dzaEJpQUxJQlJCQW5ScUlCVWdEaUFHSUJOQjRMc0JhaTBBQUhNaUJoczJBZ0FnQ1NBSktBSUFRWUFDY2pZQ0FDQUlJQWdvQWdSQndBQnlOZ0lFSUFNZ0JrRVdkSEpCZ0FGeUN5RURJQUVnRWlBRUtBSnNJQU5CQm5aQjd3TnhhaTBBQUVFQ2RHb2lDU2dDQUNJSEtBSUFJZ1pySVFFQ2Z5QUdJQUpCRUhaTkJFQWdBaUFHUVJCMGF5RUNJQUZCZ0lBQ2NRUkFJQWNvQWdRTUFnc2dCeWdDQkNFTUlBa2dCMEVNUVFnZ0FTQUdTU0lLRzJvb0FnQTJBZ0FEUUFKQUlBVU5BQ0FFS0FJUUlnZEJBV29oQ1NBSExRQUJJUVlnQnkwQUFFSC9BVWNFUUNBRUlBazJBaEJCQ0NFRklBWkJDSFFnQW1vaEFnd0JDeUFHUVk4QlRRUkFJQVFnQ1RZQ0VDQUdRUWwwSUFKcUlRSkJCeUVGREFFTElBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFVTElBVkJBV3NoQlNBQ1FRRjBJUUlnQVVFQmRDSUJRWUNBQWtrTkFBc2dERVVnRENBS0d3d0JDeUFIS0FJRUlRd2dDU0FIUVFoQkRDQUJJQVpKSWdvYmFpZ0NBRFlDQUFOQUFrQWdCUTBBSUFRb0FoQWlCMEVCYWlFSklBY3RBQUVoQVNBSExRQUFRZjhCUndSQUlBUWdDVFlDRUVFSUlRVWdBVUVJZENBQ2FpRUNEQUVMSUFGQmp3Rk5CRUFnQkNBSk5nSVFJQUZCQ1hRZ0Ftb2hBa0VISVFVTUFRc2dCQ0FFS0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJRc2dCVUVCYXlFRklBSkJBWFFoQWlBR1FRRjBJZ1pCZ0lBQ1NRMEFDeUFHSVFFZ0RDQU1SU0FLR3d0RkRRRUxJQUVnRWlBSUtBSUVRUmQyUVFSeElBaEJCR3NpQ1NnQ0FFRVpka0VCY1NBRFFSSjJRUkJ4SUFOQkZuWkJ3QUJ4SUFOQkJuWkJxZ0Z4Y25KeWNpSVRRZUM1QVdvdEFBQkJBblJxSWd3b0FnQWlCeWdDQUNJR2F5RUJBbjhnQmlBQ1FSQjJUUVJBSUFJZ0JrRVFkR3NoQWlBQlFZQ0FBbkVFUUNBSEtBSUVEQUlMSUFjb0FnUWhDaUFNSUFkQkRFRUlJQUVnQmtraURCdHFLQUlBTmdJQUEwQUNRQ0FGRFFBZ0JDZ0NFQ0lIUVFGcUlRVWdCeTBBQVNFR0lBY3RBQUJCL3dGSEJFQWdCQ0FGTmdJUVFRZ2hCU0FHUVFoMElBSnFJUUlNQVFzZ0JrR1BBVTBFUUNBRUlBVTJBaEFnQmtFSmRDQUNhaUVDUVFjaEJRd0JDeUFFSUFRb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUZDeUFGUVFGcklRVWdBa0VCZENFQ0lBRkJBWFFpQVVHQWdBSkpEUUFMSUFwRklBb2dEQnNNQVFzZ0J5Z0NCQ0VLSUF3Z0IwRUlRUXdnQVNBR1NTSU1HMm9vQWdBMkFnQURRQUpBSUFVTkFDQUVLQUlRSWdkQkFXb2hCU0FITFFBQklRRWdCeTBBQUVIL0FVY0VRQ0FFSUFVMkFoQkJDQ0VGSUFGQkNIUWdBbW9oQWd3QkN5QUJRWThCVFFSQUlBUWdCVFlDRUNBQlFRbDBJQUpxSVFKQkJ5RUZEQUVMSUFRZ0JDZ0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVVMSUFWQkFXc2hCU0FDUVFGMElRSWdCa0VCZENJR1FZQ0FBa2tOQUFzZ0JpRUJJQW9nQ2tVZ0RCc0xJUVlnQ3lBa1FRSjBhaUFWSUE0Z0JpQVRRZUM3QVdvdEFBQnpJZ1liTmdJQUlBa2dDU2dDQUVHQUVISTJBZ0FnQ0NBSUtBSUVRWUFFY2pZQ0JDQURJQVpCR1hSeVFZQUljaUVEQ3lBQklCSWdCQ2dDYkNBRFFRbDJRZThEY1dvdEFBQkJBblJxSWdrb0FnQWlCeWdDQUNJR2F5RUJBbjhnQmlBQ1FSQjJUUVJBSUFJZ0JrRVFkR3NoQWlBQlFZQ0FBbkVFUUNBSEtBSUVEQUlMSUFjb0FnUWhEQ0FKSUFkQkRFRUlJQUVnQmtraUNodHFLQUlBTmdJQUEwQUNRQ0FGRFFBZ0JDZ0NFQ0lIUVFGcUlRVWdCeTBBQVNFR0lBY3RBQUJCL3dGSEJFQWdCQ0FGTmdJUVFRZ2hCU0FHUVFoMElBSnFJUUlNQVFzZ0JrR1BBVTBFUUNBRUlBVTJBaEFnQmtFSmRDQUNhaUVDUVFjaEJRd0JDeUFFSUFRb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUZDeUFGUVFGcklRVWdBa0VCZENFQ0lBRkJBWFFpQVVHQWdBSkpEUUFMSUF4RklBd2dDaHNNQVFzZ0J5Z0NCQ0VNSUFrZ0IwRUlRUXdnQVNBR1NTSUtHMm9vQWdBMkFnQURRQUpBSUFVTkFDQUVLQUlRSWdkQkFXb2hCU0FITFFBQklRRWdCeTBBQUVIL0FVY0VRQ0FFSUFVMkFoQkJDQ0VGSUFGQkNIUWdBbW9oQWd3QkN5QUJRWThCVFFSQUlBUWdCVFlDRUNBQlFRbDBJQUpxSVFKQkJ5RUZEQUVMSUFRZ0JDZ0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVVMSUFWQkFXc2hCU0FDUVFGMElRSWdCa0VCZENJR1FZQ0FBa2tOQUFzZ0JpRUJJQXdnREVVZ0Noc0xSUTBEQ3lBQklCSWdDQ2dDQkVFYWRrRUVjU0FJUVFScklnd29BZ0JCSEhaQkFYRWdBMEVWZGtFUWNTQURRUmwyUWNBQWNTQURRUWwyUWFvQmNYSnljbklpRTBIZ3VRRnFMUUFBUVFKMGFpSUpLQUlBSWdvb0FnQWlCbXNoQVNBR0lBSkJFSFpOQkVBZ0FpQUdRUkIwYXlFQ0lBRkJnSUFDY1EwQklBb29BZ1FoQnlBSklBcEJERUVJSUFFZ0Jra2lIQnRxS0FJQU5nSUFBMEFDUUNBRkRRQWdCQ2dDRUNJRlFRRnFJUW9nQlMwQUFTRUdJQVV0QUFCQi93RkhCRUFnQkNBS05nSVFRUWdoQlNBR1FRaDBJQUpxSVFJTUFRc2dCa0dQQVUwRVFDQUVJQW8yQWhBZ0JrRUpkQ0FDYWlFQ1FRY2hCUXdCQ3lBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VGQ3lBRlFRRnJJUVVnQWtFQmRDRUNJQUZCQVhRaUFVR0FnQUpKRFFBTElBZEZJQWNnSEJzTUFnc2dDaWdDQkNFSElBa2dDa0VJUVF3Z0FTQUdTU0ljRzJvb0FnQTJBZ0FEUUFKQUlBVU5BQ0FFS0FJUUlnVkJBV29oQ2lBRkxRQUJJUUVnQlMwQUFFSC9BVWNFUUNBRUlBbzJBaEJCQ0NFRklBRkJDSFFnQW1vaEFnd0JDeUFCUVk4QlRRUkFJQVFnQ2pZQ0VDQUJRUWwwSUFKcUlRSkJCeUVGREFFTElBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFVTElBVkJBV3NoQlNBQ1FRRjBJUUlnQmtFQmRDSUdRWUNBQWtrTkFBc2dCaUVCSUFjZ0IwVWdIQnNNQVFzZ0NpZ0NCQXNoQmlBTElCdEJBblJxSUJVZ0RpQUdJQk5CNExzQmFpMEFBSE1pQnhzMkFnQWdEQ0FNS0FJQVFZQ0FBWEkyQWdBZ0NDQUlLQUlFUVlBZ2NqWUNCQ0FFS0FKOFFRSjBJQWhxSWdZZ0JpZ0NCRUVFY2pZQ0JDQUdJQVlvQWd4QkFYSTJBZ3dnQmlBR0tBSUlJQWRCRW5SeVFRSnlOZ0lJSUFNZ0IwRWNkSEpCZ01BQWNpRURDeUFJSUFOQi8vLy90bnR4TmdJQUN5QUlRUVJxSVFNZ0MwRUVhaUVMSUJoQkFXb2lHQ0FVUncwQUN5QUlRUXhxSVFNZ0N5QWJRUUowYWlFTElCRkJCR29pRVNBRUtBS0FBU0lHUVh4eFNRMEFDd3dCQzBFRUlBWkJmSEVpQXlBRFFRUk5HMEVCYXlJRFFYeHhRUVJxSVJFZ0J5QURRUUYwUVhoeGFrRVVhaUVEQ3lBRUlBVTJBZ2dnQkNBQk5nSUVJQVFnQWpZQ0FDQUVJQWsyQW1nZ0ZFVU5CQ0FHSUJGTkRRUURRRUVBSVFVZ0VTQUVLQUtBQVVjRVFBTkFJQVFnQXlBTElBVWdGR3hCQW5ScUlBNGdCVUVBRUZFZ0JVRUJhaUlGSUFRb0FvQUJJQkZyU1EwQUN3c2dBeUFES0FJQVFmLy8vN1o3Y1RZQ0FDQUxRUVJxSVFzZ0EwRUVhaUVESUJkQkFXb2lGeUFVUncwQUN3d0VDMEVFSUFaQmZIRWlBeUFEUVFSTkcwRUJheUlEUVh4eFFRUnFJUkVnQnlBRFFRRjBRWGh4YWtFVWFpRURDeUFFSUFVMkFnZ2dCQ0FCTmdJRUlBUWdBallDQUNBRUlBazJBbWdnRkVVTkFpQUdJQkZORFFJRFFFRUFJUVVnRVNBRUtBS0FBVWNFUUFOQUlBUWdBeUFMSUFVZ0ZHeEJBblJxSUE0Z0JVRUJFRkVnQlVFQmFpSUZJQVFvQW9BQklCRnJTUTBBQ3dzZ0F5QURLQUlBUWYvLy83WjdjVFlDQUNBTFFRUnFJUXNnQTBFRWFpRURJQmRCQVdvaUZ5QVVSdzBBQ3d3Q0N3TkFRUUFoREFOQUlBTWhFUUpBQWtBQ2Z3SkFBa0FnQmlJTktBSUFJZ1pGQkVBZ0FTQVFLQUlBSWdNb0FnQWlCbXNoQVFKL0lBWWdBa0VRZGtzRVFDQURLQUlFSVFjZ0VDQURRUWhCRENBQklBWkpJZ29iYWlnQ0FEWUNBQU5BQWtBZ0JRMEFJQVFvQWhBaUEwRUJhaUVKSUFNdEFBRWhBU0FETFFBQVFmOEJSZ1JBSUFGQmtBRlBCRUFnQkNBRUtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCUXdDQ3lBRUlBazJBaEFnQVVFSmRDQUNhaUVDUVFjaEJRd0JDeUFFSUFrMkFoQkJDQ0VGSUFGQkNIUWdBbW9oQWdzZ0JVRUJheUVGSUFKQkFYUWhBaUFHUVFGMElnWkJnSUFDU1EwQUN5QUdJUUVnQnlBSFJTQUtHd3dCQ3lBQ0lBWkJFSFJySVFJZ0FVR0FnQUp4UlFSQUlBTW9BZ1FoQnlBUUlBTkJERUVJSUFFZ0Jra2lDaHRxS0FJQU5nSUFBMEFDUUNBRkRRQWdCQ2dDRUNJR1FRRnFJUWtnQmkwQUFTRURJQVl0QUFCQi93RkdCRUFnQTBHUUFVOEVRQ0FFSUFRb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUZEQUlMSUFRZ0NUWUNFQ0FEUVFsMElBSnFJUUpCQnlFRkRBRUxJQVFnQ1RZQ0VFRUlJUVVnQTBFSWRDQUNhaUVDQ3lBRlFRRnJJUVVnQWtFQmRDRUNJQUZCQVhRaUFVR0FnQUpKRFFBTElBZEZJQWNnQ2hzTUFRc2dBeWdDQkF0RkJFQWdFQ0VKREFZTElBRWdDQ2dDQUNJREtBSUFJZ1pySVFFQ2Z5QUdJQUpCRUhaTEJFQWdBeWdDQkNFSElBZ2dBMEVJUVF3Z0FTQUdTU0lLRzJvb0FnQWlBellDQUFOQUFrQWdCUTBBSUFRb0FoQWlDVUVCYWlFRklBa3RBQUVoQVNBSkxRQUFRZjhCUmdSQUlBRkJrQUZQQkVBZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQlF3Q0N5QUVJQVUyQWhBZ0FVRUpkQ0FDYWlFQ1FRY2hCUXdCQ3lBRUlBVTJBaEJCQ0NFRklBRkJDSFFnQW1vaEFnc2dCVUVCYXlFRklBSkJBWFFoQWlBR1FRRjBJZ1pCZ0lBQ1NRMEFDeUFHSVFFZ0J5QUhSU0FLR3d3QkN5QUNJQVpCRUhScklRSWdBVUdBZ0FKeFJRUkFJQU1vQWdRaEJ5QUlJQU5CREVFSUlBRWdCa2tpQ2h0cUtBSUFJZ00yQWdBRFFBSkFJQVVOQUNBRUtBSVFJZ2xCQVdvaEJTQUpMUUFCSVFZZ0NTMEFBRUgvQVVZRVFDQUdRWkFCVHdSQUlBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFVTUFnc2dCQ0FGTmdJUUlBWkJDWFFnQW1vaEFrRUhJUVVNQVFzZ0JDQUZOZ0lRUVFnaEJTQUdRUWgwSUFKcUlRSUxJQVZCQVdzaEJTQUNRUUYwSVFJZ0FVRUJkQ0lCUVlDQUFra05BQXNnQjBVZ0J5QUtHd3dCQ3lBREtBSUVDeUVLSUFFZ0F5Z0NBQ0lHYXlFQkFuOGdCaUFDUVJCMlN3UkFJQU1vQWdRaEJ5QUlJQU5CQ0VFTUlBRWdCa2tpRGh0cUtBSUFOZ0lBQTBBQ1FDQUZEUUFnQkNnQ0VDSURRUUZxSVFrZ0F5MEFBU0VCSUFNdEFBQkIvd0ZHQkVBZ0FVR1FBVThFUUNBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VGREFJTElBUWdDVFlDRUNBQlFRbDBJQUpxSVFKQkJ5RUZEQUVMSUFRZ0NUWUNFRUVJSVFVZ0FVRUlkQ0FDYWlFQ0N5QUZRUUZySVFVZ0FrRUJkQ0VDSUFaQkFYUWlCa0dBZ0FKSkRRQUxJQVloQVNBSElBZEZJQTRiREFFTElBSWdCa0VRZEdzaEFpQUJRWUNBQW5GRkJFQWdBeWdDQkNFSElBZ2dBMEVNUVFnZ0FTQUdTU0lPRzJvb0FnQTJBZ0FEUUFKQUlBVU5BQ0FFS0FJUUlnWkJBV29oQ1NBR0xRQUJJUU1nQmkwQUFFSC9BVVlFUUNBRFFaQUJUd1JBSUFRZ0JDZ0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVVNQWdzZ0JDQUpOZ0lRSUFOQkNYUWdBbW9oQWtFSElRVU1BUXNnQkNBSk5nSVFRUWdoQlNBRFFRaDBJQUpxSVFJTElBVkJBV3NoQlNBQ1FRRjBJUUlnQVVFQmRDSUJRWUNBQWtrTkFBc2dCMFVnQnlBT0d3d0JDeUFES0FJRUN5RURRUUFoQmlBSUlRa0NRQUpBQWtBQ2Z3SkFBa0FnQXlBS1FRRjBjZzRFQUFFREJRb0xJQUVnQ3lBTktBSUVRUkYyUVFSeElBMUJCR3NpQnlnQ0FFRVRka0VCY1hJaURrSGd1UUZxTFFBQVFRSjBhaUlKS0FJQUlnTW9BZ0FpQm1zaEFRSi9JQVlnQWtFUWRrc0VRQ0FES0FJRUlRb2dDU0FEUVFoQkRDQUJJQVpKSWhJYmFpZ0NBRFlDQUFOQUFrQWdCUTBBSUFRb0FoQWlBMEVCYWlFSklBTXRBQUVoQVNBRExRQUFRZjhCUmdSQUlBRkJrQUZQQkVBZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQlF3Q0N5QUVJQWsyQWhBZ0FVRUpkQ0FDYWlFQ1FRY2hCUXdCQ3lBRUlBazJBaEJCQ0NFRklBRkJDSFFnQW1vaEFnc2dCVUVCYXlFRklBSkJBWFFoQWlBR1FRRjBJZ1pCZ0lBQ1NRMEFDeUFHSVFFZ0NpQUtSU0FTR3d3QkN5QUNJQVpCRUhScklRSWdBVUdBZ0FKeFJRUkFJQU1vQWdRaENpQUpJQU5CREVFSUlBRWdCa2tpRWh0cUtBSUFOZ0lBQTBBQ1FDQUZEUUFnQkNnQ0VDSUdRUUZxSVFrZ0JpMEFBU0VESUFZdEFBQkIvd0ZHQkVBZ0EwR1FBVThFUUNBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VGREFJTElBUWdDVFlDRUNBRFFRbDBJQUpxSVFKQkJ5RUZEQUVMSUFRZ0NUWUNFRUVJSVFVZ0EwRUlkQ0FDYWlFQ0N5QUZRUUZySVFVZ0FrRUJkQ0VDSUFGQkFYUWlBVUdBZ0FKSkRRQUxJQXBGSUFvZ0Voc01BUXNnQXlnQ0JBc2hBeUFSSUJNZ0ZDQURJQTVCNExzQmFpMEFBSE1pQXhzMkFnQWdCeUFIS0FJQVFTQnlOZ0lBSUEwZ0RTZ0NCRUVJY2pZQ0JDQURRUk4wSVZzZ0FTQUxJQVFvQW13dEFBSkJBblJxSWdjb0FnQWlBeWdDQUNJR2F5RUJBbjhnQmlBQ1FSQjJTd1JBSUFNb0FnUWhDU0FISUFOQkNFRU1JQUVnQmtraURodHFLQUlBTmdJQUEwQUNRQ0FGRFFBZ0JDZ0NFQ0lEUVFGcUlRY2dBeTBBQVNFQklBTXRBQUJCL3dGR0JFQWdBVUdRQVU4RVFDQUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRkRBSUxJQVFnQnpZQ0VDQUJRUWwwSUFKcUlRSkJCeUVGREFFTElBUWdCellDRUVFSUlRVWdBVUVJZENBQ2FpRUNDeUFGUVFGcklRVWdBa0VCZENFQ0lBWkJBWFFpQmtHQWdBSkpEUUFMSUFZaEFTQUpJQWxGSUE0YkRBRUxJQUlnQmtFUWRHc2hBaUFCUVlDQUFuRkZCRUFnQXlnQ0JDRUpJQWNnQTBFTVFRZ2dBU0FHU1NJT0cyb29BZ0EyQWdBRFFBSkFJQVVOQUNBRUtBSVFJZ1pCQVdvaEJ5QUdMUUFCSVFNZ0JpMEFBRUgvQVVZRVFDQURRWkFCVHdSQUlBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFVTUFnc2dCQ0FITmdJUUlBTkJDWFFnQW1vaEFrRUhJUVVNQVFzZ0JDQUhOZ0lRUVFnaEJTQURRUWgwSUFKcUlRSUxJQVZCQVdzaEJTQUNRUUYwSVFJZ0FVRUJkQ0lCUVlDQUFra05BQXNnQ1VVZ0NTQU9Hd3dCQ3lBREtBSUVDeUVESUZ0QkVISWlCaUFEUlEwQkdnc2dBU0FMSUEwb0FnUkJGSFpCQkhFZ0RVRUVheUlKS0FJQVFSWjJRUUZ4SUFaQkQzWkJFSEVnQmtFVGRrSEFBSEVnQmtFRGRrR3FBWEZ5Y25KeUloSkI0TGtCYWkwQUFFRUNkR29pQ2lnQ0FDSUhLQUlBSWdOcklRRUNmeUFESUFKQkVIWkxCRUFnQnlnQ0JDRU9JQW9nQjBFSVFRd2dBU0FEU1NJS0cyb29BZ0EyQWdBRFFBSkFJQVVOQUNBRUtBSVFJZ2RCQVdvaEJTQUhMUUFCSVFFZ0J5MEFBRUgvQVVZRVFDQUJRWkFCVHdSQUlBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFVTUFnc2dCQ0FGTmdJUUlBRkJDWFFnQW1vaEFrRUhJUVVNQVFzZ0JDQUZOZ0lRUVFnaEJTQUJRUWgwSUFKcUlRSUxJQVZCQVdzaEJTQUNRUUYwSVFJZ0EwRUJkQ0lEUVlDQUFra05BQXNnQXlFQklBNGdEa1VnQ2hzTUFRc2dBaUFEUVJCMGF5RUNJQUZCZ0lBQ2NVVUVRQ0FIS0FJRUlRNGdDaUFIUVF4QkNDQUJJQU5KSWdvYmFpZ0NBRFlDQUFOQUFrQWdCUTBBSUFRb0FoQWlCMEVCYWlFRklBY3RBQUVoQXlBSExRQUFRZjhCUmdSQUlBTkJrQUZQQkVBZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQlF3Q0N5QUVJQVUyQWhBZ0EwRUpkQ0FDYWlFQ1FRY2hCUXdCQ3lBRUlBVTJBaEJCQ0NFRklBTkJDSFFnQW1vaEFnc2dCVUVCYXlFRklBSkJBWFFoQWlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFPUlNBT0lBb2JEQUVMSUFjb0FnUUxJUU1nRVNBVElCUWdBeUFTUWVDN0FXb3RBQUJ6SWdNYk5nS0FBaUFKSUFrb0FnQkJnQUp5TmdJQUlBMGdEU2dDQkVIQUFISTJBZ1FnQmlBRFFSWjBja0dBQVhJTElRWWdBU0FMSUFRb0Ftd2dCa0VHZGtIdkEzRnFMUUFBUVFKMGFpSUpLQUlBSWdjb0FnQWlBMnNoQVFKL0lBTWdBa0VRZGtzRVFDQUhLQUlFSVFvZ0NTQUhRUWhCRENBQklBTkpJZzRiYWlnQ0FEWUNBQU5BQWtBZ0JRMEFJQVFvQWhBaUIwRUJhaUVKSUFjdEFBRWhBU0FITFFBQVFmOEJSZ1JBSUFGQmtBRlBCRUFnQkNBRUtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCUXdDQ3lBRUlBazJBaEFnQVVFSmRDQUNhaUVDUVFjaEJRd0JDeUFFSUFrMkFoQkJDQ0VGSUFGQkNIUWdBbW9oQWdzZ0JVRUJheUVGSUFKQkFYUWhBaUFEUVFGMElnTkJnSUFDU1EwQUN5QURJUUVnQ2lBS1JTQU9Hd3dCQ3lBQ0lBTkJFSFJySVFJZ0FVR0FnQUp4UlFSQUlBY29BZ1FoQ2lBSklBZEJERUVJSUFFZ0Ewa2lEaHRxS0FJQU5nSUFBMEFDUUNBRkRRQWdCQ2dDRUNJSFFRRnFJUWtnQnkwQUFTRURJQWN0QUFCQi93RkdCRUFnQTBHUUFVOEVRQ0FFSUFRb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUZEQUlMSUFRZ0NUWUNFQ0FEUVFsMElBSnFJUUpCQnlFRkRBRUxJQVFnQ1RZQ0VFRUlJUVVnQTBFSWRDQUNhaUVDQ3lBRlFRRnJJUVVnQWtFQmRDRUNJQUZCQVhRaUFVR0FnQUpKRFFBTElBcEZJQW9nRGhzTUFRc2dCeWdDQkF0RkRRRUxJQUVnQ3lBTktBSUVRUmQyUVFSeElBMUJCR3NpQ1NnQ0FFRVpka0VCY1NBR1FSSjJRUkJ4SUFaQkZuWkJ3QUJ4SUFaQkJuWkJxZ0Z4Y25KeWNpSVNRZUM1QVdvdEFBQkJBblJxSWdvb0FnQWlCeWdDQUNJRGF5RUJBbjhnQXlBQ1FSQjJTd1JBSUFjb0FnUWhEaUFLSUFkQkNFRU1JQUVnQTBraUNodHFLQUlBTmdJQUEwQUNRQ0FGRFFBZ0JDZ0NFQ0lIUVFGcUlRVWdCeTBBQVNFQklBY3RBQUJCL3dGR0JFQWdBVUdRQVU4RVFDQUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRkRBSUxJQVFnQlRZQ0VDQUJRUWwwSUFKcUlRSkJCeUVGREFFTElBUWdCVFlDRUVFSUlRVWdBVUVJZENBQ2FpRUNDeUFGUVFGcklRVWdBa0VCZENFQ0lBTkJBWFFpQTBHQWdBSkpEUUFMSUFNaEFTQU9JQTVGSUFvYkRBRUxJQUlnQTBFUWRHc2hBaUFCUVlDQUFuRkZCRUFnQnlnQ0JDRU9JQW9nQjBFTVFRZ2dBU0FEU1NJS0cyb29BZ0EyQWdBRFFBSkFJQVVOQUNBRUtBSVFJZ2RCQVdvaEJTQUhMUUFCSVFNZ0J5MEFBRUgvQVVZRVFDQURRWkFCVHdSQUlBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFVTUFnc2dCQ0FGTmdJUUlBTkJDWFFnQW1vaEFrRUhJUVVNQVFzZ0JDQUZOZ0lRUVFnaEJTQURRUWgwSUFKcUlRSUxJQVZCQVdzaEJTQUNRUUYwSVFJZ0FVRUJkQ0lCUVlDQUFra05BQXNnRGtVZ0RpQUtHd3dCQ3lBSEtBSUVDeUVESUJFZ0V5QVVJQU1nRWtIZ3V3RnFMUUFBY3lJREd6WUNnQVFnQ1NBSktBSUFRWUFRY2pZQ0FDQU5JQTBvQWdSQmdBUnlOZ0lFSUFZZ0EwRVpkSEpCZ0FoeUlRWUxJQUVnQ3lBRUtBSnNJQVpCQ1haQjd3TnhhaTBBQUVFQ2RHb2lDU2dDQUNJSEtBSUFJZ05ySVFFQ2Z5QURJQUpCRUhaTEJFQWdCeWdDQkNFS0lBa2dCMEVJUVF3Z0FTQURTU0lPRzJvb0FnQTJBZ0FEUUFKQUlBVU5BQ0FFS0FJUUlnZEJBV29oQlNBSExRQUJJUUVnQnkwQUFFSC9BVVlFUUNBQlFaQUJUd1JBSUFRZ0JDZ0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVVNQWdzZ0JDQUZOZ0lRSUFGQkNYUWdBbW9oQWtFSElRVU1BUXNnQkNBRk5nSVFRUWdoQlNBQlFRaDBJQUpxSVFJTElBVkJBV3NoQlNBQ1FRRjBJUUlnQTBFQmRDSURRWUNBQWtrTkFBc2dBeUVCSUFvZ0NrVWdEaHNNQVFzZ0FpQURRUkIwYXlFQ0lBRkJnSUFDY1VVRVFDQUhLQUlFSVFvZ0NTQUhRUXhCQ0NBQklBTkpJZzRiYWlnQ0FEWUNBQU5BQWtBZ0JRMEFJQVFvQWhBaUIwRUJhaUVGSUFjdEFBRWhBeUFITFFBQVFmOEJSZ1JBSUFOQmtBRlBCRUFnQkNBRUtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCUXdDQ3lBRUlBVTJBaEFnQTBFSmRDQUNhaUVDUVFjaEJRd0JDeUFFSUFVMkFoQkJDQ0VGSUFOQkNIUWdBbW9oQWdzZ0JVRUJheUVGSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QUtSU0FLSUE0YkRBRUxJQWNvQWdRTFJRMEZDeUFCSUFzZ0RTZ0NCRUVhZGtFRWNTQU5RUVJySWc0b0FnQkJISFpCQVhFZ0JrRVZka0VRY1NBR1FSbDJRY0FBY1NBR1FRbDJRYW9CY1hKeWNuSWlDa0hndVFGcUxRQUFRUUowYWlJSktBSUFJZ2NvQWdBaUEyc2hBU0FESUFKQkVIWkxCRUFnQnlnQ0JDRVNJQWtnQjBFSVFRd2dBU0FEU1NJVkcyb29BZ0EyQWdBRFFBSkFJQVVOQUNBRUtBSVFJZ2RCQVdvaEJTQUhMUUFCSVFFZ0J5MEFBRUgvQVVZRVFDQUJRWkFCVHdSQUlBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFVTUFnc2dCQ0FGTmdJUUlBRkJDWFFnQW1vaEFrRUhJUVVNQVFzZ0JDQUZOZ0lRUVFnaEJTQUJRUWgwSUFKcUlRSUxJQVZCQVdzaEJTQUNRUUYwSVFJZ0EwRUJkQ0lEUVlDQUFra05BQXNnQXlFQklCSWdFa1VnRlJzTUJBc2dBaUFEUVJCMGF5RUNJQUZCZ0lBQ2NRMEJJQWNvQWdRaEVpQUpJQWRCREVFSUlBRWdBMGtpRlJ0cUtBSUFOZ0lBQTBBQ1FDQUZEUUFnQkNnQ0VDSUhRUUZxSVFVZ0J5MEFBU0VESUFjdEFBQkIvd0ZHQkVBZ0EwR1FBVThFUUNBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VGREFJTElBUWdCVFlDRUNBRFFRbDBJQUpxSVFKQkJ5RUZEQUVMSUFRZ0JUWUNFRUVJSVFVZ0EwRUlkQ0FDYWlFQ0N5QUZRUUZySVFVZ0FrRUJkQ0VDSUFGQkFYUWlBVUdBZ0FKSkRRQUxJQkpGSUJJZ0ZSc01Bd3NDUUNBR1FaQ0FnQUZ4RFFBZ0FTQUxJQVFvQW13Z0JrSHZBM0ZxTFFBQVFRSjBhaUlKS0FJQUlnY29BZ0FpQTJzaEFRSi9JQU1nQWtFUWRrc0VRQ0FIS0FJRUlRb2dDU0FIUVFoQkRDQUJJQU5KSWc0YmFpZ0NBRFlDQUFOQUFrQWdCUTBBSUFRb0FoQWlCMEVCYWlFRklBY3RBQUVoQVNBSExRQUFRZjhCUmdSQUlBRkJrQUZQQkVBZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQlF3Q0N5QUVJQVUyQWhBZ0FVRUpkQ0FDYWlFQ1FRY2hCUXdCQ3lBRUlBVTJBaEJCQ0NFRklBRkJDSFFnQW1vaEFnc2dCVUVCYXlFRklBSkJBWFFoQWlBRFFRRjBJZ05CZ0lBQ1NRMEFDeUFESVFFZ0NpQUtSU0FPR3d3QkN5QUNJQU5CRUhScklRSWdBVUdBZ0FKeFJRUkFJQWNvQWdRaENpQUpJQWRCREVFSUlBRWdBMGtpRGh0cUtBSUFOZ0lBQTBBQ1FDQUZEUUFnQkNnQ0VDSUhRUUZxSVFVZ0J5MEFBU0VESUFjdEFBQkIvd0ZHQkVBZ0EwR1FBVThFUUNBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VGREFJTElBUWdCVFlDRUNBRFFRbDBJQUpxSVFKQkJ5RUZEQUVMSUFRZ0JUWUNFRUVJSVFVZ0EwRUlkQ0FDYWlFQ0N5QUZRUUZySVFVZ0FrRUJkQ0VDSUFGQkFYUWlBVUdBZ0FKSkRRQUxJQXBGSUFvZ0Roc01BUXNnQnlnQ0JBdEZEUUFnQVNBTElBMG9BZ1JCRVhaQkJIRWdEVUVFYXlJS0tBSUFRUk4yUVFGeElBWkJEblpCRUhFZ0JrRVFka0hBQUhFZ0JrR3FBWEZ5Y25KeUloSkI0TGtCYWkwQUFFRUNkR29pQ1NnQ0FDSUhLQUlBSWdOcklRRUNmeUFESUFKQkVIWkxCRUFnQnlnQ0JDRU9JQWtnQjBFSVFRd2dBU0FEU1NJVkcyb29BZ0EyQWdBRFFBSkFJQVVOQUNBRUtBSVFJZ2RCQVdvaEJTQUhMUUFCSVFFZ0J5MEFBRUgvQVVZRVFDQUJRWkFCVHdSQUlBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFVTUFnc2dCQ0FGTmdJUUlBRkJDWFFnQW1vaEFrRUhJUVVNQVFzZ0JDQUZOZ0lRUVFnaEJTQUJRUWgwSUFKcUlRSUxJQVZCQVdzaEJTQUNRUUYwSVFJZ0EwRUJkQ0lEUVlDQUFra05BQXNnQXlFQklBNGdEa1VnRlJzTUFRc2dBaUFEUVJCMGF5RUNJQUZCZ0lBQ2NVVUVRQ0FIS0FJRUlRNGdDU0FIUVF4QkNDQUJJQU5KSWhVYmFpZ0NBRFlDQUFOQUFrQWdCUTBBSUFRb0FoQWlCMEVCYWlFRklBY3RBQUVoQXlBSExRQUFRZjhCUmdSQUlBTkJrQUZQQkVBZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQlF3Q0N5QUVJQVUyQWhBZ0EwRUpkQ0FDYWlFQ1FRY2hCUXdCQ3lBRUlBVTJBaEJCQ0NFRklBTkJDSFFnQW1vaEFnc2dCVUVCYXlFRklBSkJBWFFoQWlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFPUlNBT0lCVWJEQUVMSUFjb0FnUUxJUU1nRVNBVElCUWdBeUFTUWVDN0FXb3RBQUJ6SWdNYk5nSUFJQW9nQ2lnQ0FFRWdjallDQUNBTklBMG9BZ1JCQ0hJMkFnUWdCaUFEUVJOMGNrRVFjaUVHQ3dKQUlBWkJnSUdBQ0hFTkFDQUJJQXNnQkNnQ2JDQUdRUU4ySWc1Qjd3TnhhaTBBQUVFQ2RHb2lDU2dDQUNJSEtBSUFJZ05ySVFFQ2Z5QURJQUpCRUhaTEJFQWdCeWdDQkNFS0lBa2dCMEVJUVF3Z0FTQURTU0lTRzJvb0FnQTJBZ0FEUUFKQUlBVU5BQ0FFS0FJUUlnZEJBV29oQlNBSExRQUJJUUVnQnkwQUFFSC9BVVlFUUNBQlFaQUJUd1JBSUFRZ0JDZ0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVVNQWdzZ0JDQUZOZ0lRSUFGQkNYUWdBbW9oQWtFSElRVU1BUXNnQkNBRk5nSVFRUWdoQlNBQlFRaDBJQUpxSVFJTElBVkJBV3NoQlNBQ1FRRjBJUUlnQTBFQmRDSURRWUNBQWtrTkFBc2dBeUVCSUFvZ0NrVWdFaHNNQVFzZ0FpQURRUkIwYXlFQ0lBRkJnSUFDY1VVRVFDQUhLQUlFSVFvZ0NTQUhRUXhCQ0NBQklBTkpJaEliYWlnQ0FEWUNBQU5BQWtBZ0JRMEFJQVFvQWhBaUIwRUJhaUVGSUFjdEFBRWhBeUFITFFBQVFmOEJSZ1JBSUFOQmtBRlBCRUFnQkNBRUtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCUXdDQ3lBRUlBVTJBaEFnQTBFSmRDQUNhaUVDUVFjaEJRd0JDeUFFSUFVMkFoQkJDQ0VGSUFOQkNIUWdBbW9oQWdzZ0JVRUJheUVGSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QUtSU0FLSUJJYkRBRUxJQWNvQWdRTFJRMEFJQUVnQ3lBTktBSUVRUlIyUVFSeElBMUJCR3NpQ2lnQ0FFRVdka0VCY1NBR1FROTJRUkJ4SUFaQkUzWkJ3QUJ4SUE1QnFnRnhjbkp5Y2lJU1FlQzVBV290QUFCQkFuUnFJZ2tvQWdBaUJ5Z0NBQ0lEYXlFQkFuOGdBeUFDUVJCMlN3UkFJQWNvQWdRaERpQUpJQWRCQ0VFTUlBRWdBMGtpRlJ0cUtBSUFOZ0lBQTBBQ1FDQUZEUUFnQkNnQ0VDSUhRUUZxSVFVZ0J5MEFBU0VCSUFjdEFBQkIvd0ZHQkVBZ0FVR1FBVThFUUNBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VGREFJTElBUWdCVFlDRUNBQlFRbDBJQUpxSVFKQkJ5RUZEQUVMSUFRZ0JUWUNFRUVJSVFVZ0FVRUlkQ0FDYWlFQ0N5QUZRUUZySVFVZ0FrRUJkQ0VDSUFOQkFYUWlBMEdBZ0FKSkRRQUxJQU1oQVNBT0lBNUZJQlViREFFTElBSWdBMEVRZEdzaEFpQUJRWUNBQW5GRkJFQWdCeWdDQkNFT0lBa2dCMEVNUVFnZ0FTQURTU0lWRzJvb0FnQTJBZ0FEUUFKQUlBVU5BQ0FFS0FJUUlnZEJBV29oQlNBSExRQUJJUU1nQnkwQUFFSC9BVVlFUUNBRFFaQUJUd1JBSUFRZ0JDZ0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVVNQWdzZ0JDQUZOZ0lRSUFOQkNYUWdBbW9oQWtFSElRVU1BUXNnQkNBRk5nSVFRUWdoQlNBRFFRaDBJQUpxSVFJTElBVkJBV3NoQlNBQ1FRRjBJUUlnQVVFQmRDSUJRWUNBQWtrTkFBc2dEa1VnRGlBVkd3d0JDeUFIS0FJRUN5RURJQkVnRXlBVUlBTWdFa0hndXdGcUxRQUFjeUlER3pZQ2dBSWdDaUFLS0FJQVFZQUNjallDQUNBTklBMG9BZ1JCd0FCeU5nSUVJQVlnQTBFV2RISkJnQUZ5SVFZTEFrQWdCa0dBaUlEQUFIRU5BQ0FCSUFzZ0JDZ0NiQ0FHUVFaMklnNUI3d054YWkwQUFFRUNkR29pQ1NnQ0FDSUhLQUlBSWdOcklRRUNmeUFESUFKQkVIWkxCRUFnQnlnQ0JDRUtJQWtnQjBFSVFRd2dBU0FEU1NJU0cyb29BZ0EyQWdBRFFBSkFJQVVOQUNBRUtBSVFJZ2RCQVdvaEJTQUhMUUFCSVFFZ0J5MEFBRUgvQVVZRVFDQUJRWkFCVHdSQUlBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFVTUFnc2dCQ0FGTmdJUUlBRkJDWFFnQW1vaEFrRUhJUVVNQVFzZ0JDQUZOZ0lRUVFnaEJTQUJRUWgwSUFKcUlRSUxJQVZCQVdzaEJTQUNRUUYwSVFJZ0EwRUJkQ0lEUVlDQUFra05BQXNnQXlFQklBb2dDa1VnRWhzTUFRc2dBaUFEUVJCMGF5RUNJQUZCZ0lBQ2NVVUVRQ0FIS0FJRUlRb2dDU0FIUVF4QkNDQUJJQU5KSWhJYmFpZ0NBRFlDQUFOQUFrQWdCUTBBSUFRb0FoQWlCMEVCYWlFRklBY3RBQUVoQXlBSExRQUFRZjhCUmdSQUlBTkJrQUZQQkVBZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQlF3Q0N5QUVJQVUyQWhBZ0EwRUpkQ0FDYWlFQ1FRY2hCUXdCQ3lBRUlBVTJBaEJCQ0NFRklBTkJDSFFnQW1vaEFnc2dCVUVCYXlFRklBSkJBWFFoQWlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFLUlNBS0lCSWJEQUVMSUFjb0FnUUxSUTBBSUFFZ0N5QU5LQUlFUVJkMlFRUnhJQTFCQkdzaUNpZ0NBRUVaZGtFQmNTQUdRUkoyUVJCeElBWkJGblpCd0FCeElBNUJxZ0Z4Y25KeWNpSVNRZUM1QVdvdEFBQkJBblJxSWdrb0FnQWlCeWdDQUNJRGF5RUJBbjhnQXlBQ1FSQjJTd1JBSUFjb0FnUWhEaUFKSUFkQkNFRU1JQUVnQTBraUZSdHFLQUlBTmdJQUEwQUNRQ0FGRFFBZ0JDZ0NFQ0lIUVFGcUlRVWdCeTBBQVNFQklBY3RBQUJCL3dGR0JFQWdBVUdRQVU4RVFDQUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRkRBSUxJQVFnQlRZQ0VDQUJRUWwwSUFKcUlRSkJCeUVGREFFTElBUWdCVFlDRUVFSUlRVWdBVUVJZENBQ2FpRUNDeUFGUVFGcklRVWdBa0VCZENFQ0lBTkJBWFFpQTBHQWdBSkpEUUFMSUFNaEFTQU9JQTVGSUJVYkRBRUxJQUlnQTBFUWRHc2hBaUFCUVlDQUFuRkZCRUFnQnlnQ0JDRU9JQWtnQjBFTVFRZ2dBU0FEU1NJVkcyb29BZ0EyQWdBRFFBSkFJQVVOQUNBRUtBSVFJZ2RCQVdvaEJTQUhMUUFCSVFNZ0J5MEFBRUgvQVVZRVFDQURRWkFCVHdSQUlBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFVTUFnc2dCQ0FGTmdJUUlBTkJDWFFnQW1vaEFrRUhJUVVNQVFzZ0JDQUZOZ0lRUVFnaEJTQURRUWgwSUFKcUlRSUxJQVZCQVdzaEJTQUNRUUYwSVFJZ0FVRUJkQ0lCUVlDQUFra05BQXNnRGtVZ0RpQVZHd3dCQ3lBSEtBSUVDeUVESUJFZ0V5QVVJQU1nRWtIZ3V3RnFMUUFBY3lJREd6WUNnQVFnQ2lBS0tBSUFRWUFRY2pZQ0FDQU5JQTBvQWdSQmdBUnlOZ0lFSUFZZ0EwRVpkSEpCZ0FoeUlRWUxJQVpCZ01DQWdBUnhEUU1nQVNBTElBUW9BbXdnQmtFSmRpSVNRZThEY1dvdEFBQkJBblJxSWdrb0FnQWlBU2dDQUNJRGF5RUhBbjhnQXlBQ1FSQjJTd1JBSUFFb0FnUWhDaUFKSUFGQkNFRU1JQU1nQjBzaURodHFLQUlBTmdJQUEwQUNRQ0FGRFFBZ0JDZ0NFQ0lIUVFGcUlRVWdCeTBBQVNFQklBY3RBQUJCL3dGR0JFQWdBVUdRQVU4RVFDQUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRkRBSUxJQVFnQlRZQ0VDQUJRUWwwSUFKcUlRSkJCeUVGREFFTElBUWdCVFlDRUVFSUlRVWdBVUVJZENBQ2FpRUNDeUFGUVFGcklRVWdBa0VCZENFQ0lBTkJBWFFpQTBHQWdBSkpEUUFMSUFNaEJ5QUtJQXBGSUE0YkRBRUxJQUlnQTBFUWRHc2hBaUFIUVlDQUFuRkZCRUFnQVNnQ0JDRUtJQWtnQVVFTVFRZ2dBeUFIU3lJT0cyb29BZ0EyQWdBRFFBSkFJQVVOQUNBRUtBSVFJZ05CQVdvaEJTQURMUUFCSVFFZ0F5MEFBRUgvQVVZRVFDQUJRWkFCVHdSQUlBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFVTUFnc2dCQ0FGTmdJUUlBRkJDWFFnQW1vaEFrRUhJUVVNQVFzZ0JDQUZOZ0lRUVFnaEJTQUJRUWgwSUFKcUlRSUxJQVZCQVdzaEJTQUNRUUYwSVFJZ0IwRUJkQ0lIUVlDQUFra05BQXNnQ2tVZ0NpQU9Hd3dCQ3lBQktBSUVDMFVFUUNBSElRRU1CQXNnQnlBTElBMG9BZ1JCR25aQkJIRWdEVUVFYXlJT0tBSUFRUngyUVFGeElBWkJGWFpCRUhFZ0JrRVpka0hBQUhFZ0VrR3FBWEZ5Y25KeUlncEI0TGtCYWkwQUFFRUNkR29pQ1NnQ0FDSUhLQUlBSWdGcklRTWdBU0FDUVJCMlN3UkFJQWNvQWdRaEVpQUpJQWRCQ0VFTUlBRWdBMHNpRlJ0cUtBSUFOZ0lBQTBBQ1FDQUZEUUFnQkNnQ0VDSUhRUUZxSVFVZ0J5MEFBU0VESUFjdEFBQkIvd0ZHQkVBZ0EwR1FBVThFUUNBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VGREFJTElBUWdCVFlDRUNBRFFRbDBJQUpxSVFKQkJ5RUZEQUVMSUFRZ0JUWUNFRUVJSVFVZ0EwRUlkQ0FDYWlFQ0N5QUZRUUZySVFVZ0FrRUJkQ0VDSUFGQkFYUWlBVUdBZ0FKSkRRQUxJQklnRWtVZ0ZSc01Bd3NnQWlBQlFSQjBheUVDSUFOQmdJQUNjVVVOQVNBRElRRUxJQWNvQWdRTUFRc2dCeWdDQkNFU0lBa2dCMEVNUVFnZ0FTQURTeUlWRzJvb0FnQTJBZ0FEUUFKQUlBVU5BQ0FFS0FJUUlnZEJBV29oQlNBSExRQUJJUUVnQnkwQUFFSC9BVVlFUUNBQlFaQUJUd1JBSUFRZ0JDZ0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVVNQWdzZ0JDQUZOZ0lRSUFGQkNYUWdBbW9oQWtFSElRVU1BUXNnQkNBRk5nSVFRUWdoQlNBQlFRaDBJQUpxSVFJTElBVkJBV3NoQlNBQ1FRRjBJUUlnQTBFQmRDSURRWUNBQWtrTkFBc2dBeUVCSUJKRklCSWdGUnNMSVFNZ0VTQVRJQlFnQXlBS1FlQzdBV290QUFCeklnTWJOZ0tBQmlBT0lBNG9BZ0JCZ0lBQmNqWUNBQ0FOSUEwb0FnUkJnQ0J5TmdJRUlBMGdEU2dDaEFKQkJISTJBb1FDSUEwZ0RTZ0NqQUpCQVhJMkFvd0NJQTBnRFNnQ2lBSWdBMEVTZEhKQkFuSTJBb2dDSUFZZ0EwRWNkSEpCZ01BQWNpRUdDeUFOSUFaQi8vLy90bnR4TmdJQUN5QU5RUVJxSVFZZ0VVRUVhaUVESUF4QkFXb2lERUhBQUVjTkFBc2dEVUVNYWlFR0lCRkJoQVpxSVFNZ0YwRThTU0ZjSUJkQkJHb2hGeUJjRFFBTEN5QUVJQVUyQWdnZ0JDQUJOZ0lFSUFRZ0FqWUNBQ0FFSUFrMkFtZ0xBa0FnRmtFZ2NVVU5BQ0FFSUFSQjVBQnFOZ0pvSUFRZ0JDZ0NCQ0FFS0FKa0lnWW9BZ0FpQVdzaUFqWUNCQUpBSUFFZ0JDZ0NBQ0lGUVJCMlN3UkFJQVFnQVRZQ0JDQUVJQVpCQ0VFTUlBRWdBa3NiYWlnQ0FDSUdOZ0prSUFRb0FnZ2hBZ05BQWtBZ0FnMEFJQVFvQWhBaUIwRUJhaUVKSUFjdEFBRWhBeUFITFFBQVFmOEJSZ1JBSUFOQmtBRlBCRUFnQkNBRUtBSU1RUUZxTmdJTUlBVkJnUDREYWlFRlFRZ2hBZ3dDQ3lBRUlBazJBaEFnQTBFSmRDQUZhaUVGUVFjaEFnd0JDeUFFSUFrMkFoQkJDQ0VDSUFOQkNIUWdCV29oQlFzZ0JDQUNRUUZySWdJMkFnZ2dCQ0FGUVFGMElnVTJBZ0FnQkNBQlFRRjBJZ0UyQWdRZ0FVR0FnQUpKRFFBTElBRWhBZ3dCQ3lBRUlBVWdBVUVRZEdzaUJUWUNBQ0FDUVlDQUFuRU5BQ0FFSUFaQkRFRUlJQUVnQWtzYmFpZ0NBQ0lHTmdKa0lBUW9BZ2doQVFOQUFrQWdBUTBBSUFRb0FoQWlBVUVCYWlFSElBRXRBQUVoQXlBQkxRQUFRZjhCUmdSQUlBTkJrQUZQQkVBZ0JDQUVLQUlNUVFGcU5nSU1JQVZCZ1A0RGFpRUZRUWdoQVF3Q0N5QUVJQWMyQWhBZ0EwRUpkQ0FGYWlFRlFRY2hBUXdCQ3lBRUlBYzJBaEJCQ0NFQklBTkJDSFFnQldvaEJRc2dCQ0FCUVFGcklnRTJBZ2dnQkNBRlFRRjBJZ1UyQWdBZ0JDQUNRUUYwSWdJMkFnUWdBa0dBZ0FKSkRRQUxDeUFFSUFJZ0JpZ0NBQ0lCYXlJQ05nSUVBa0FnQVNBRlFSQjJTd1JBSUFRZ0FUWUNCQ0FFSUFaQkNFRU1JQUVnQWtzYmFpZ0NBQ0lHTmdKa0lBUW9BZ2doQWdOQUFrQWdBZzBBSUFRb0FoQWlCMEVCYWlFSklBY3RBQUVoQXlBSExRQUFRZjhCUmdSQUlBTkJrQUZQQkVBZ0JDQUVLQUlNUVFGcU5nSU1JQVZCZ1A0RGFpRUZRUWdoQWd3Q0N5QUVJQWsyQWhBZ0EwRUpkQ0FGYWlFRlFRY2hBZ3dCQ3lBRUlBazJBaEJCQ0NFQ0lBTkJDSFFnQldvaEJRc2dCQ0FDUVFGcklnSTJBZ2dnQkNBRlFRRjBJZ1UyQWdBZ0JDQUJRUUYwSWdFMkFnUWdBVUdBZ0FKSkRRQUxJQUVoQWd3QkN5QUVJQVVnQVVFUWRHc2lCVFlDQUNBQ1FZQ0FBbkVOQUNBRUlBWkJERUVJSUFFZ0Frc2JhaWdDQUNJR05nSmtJQVFvQWdnaEFRTkFBa0FnQVEwQUlBUW9BaEFpQVVFQmFpRUhJQUV0QUFFaEF5QUJMUUFBUWY4QlJnUkFJQU5Ca0FGUEJFQWdCQ0FFS0FJTVFRRnFOZ0lNSUFWQmdQNERhaUVGUVFnaEFRd0NDeUFFSUFjMkFoQWdBMEVKZENBRmFpRUZRUWNoQVF3QkN5QUVJQWMyQWhCQkNDRUJJQU5CQ0hRZ0JXb2hCUXNnQkNBQlFRRnJJZ0UyQWdnZ0JDQUZRUUYwSWdVMkFnQWdCQ0FDUVFGMElnSTJBZ1FnQWtHQWdBSkpEUUFMQ3lBRUlBSWdCaWdDQUNJQmF5SUNOZ0lFQWtBZ0FTQUZRUkIyU3dSQUlBUWdBVFlDQkNBRUlBWkJDRUVNSUFFZ0Frc2JhaWdDQUNJR05nSmtJQVFvQWdnaEFnTkFBa0FnQWcwQUlBUW9BaEFpQjBFQmFpRUpJQWN0QUFFaEF5QUhMUUFBUWY4QlJnUkFJQU5Ca0FGUEJFQWdCQ0FFS0FJTVFRRnFOZ0lNSUFWQmdQNERhaUVGUVFnaEFnd0NDeUFFSUFrMkFoQWdBMEVKZENBRmFpRUZRUWNoQWd3QkN5QUVJQWsyQWhCQkNDRUNJQU5CQ0hRZ0JXb2hCUXNnQkNBQ1FRRnJJZ0kyQWdnZ0JDQUZRUUYwSWdVMkFnQWdCQ0FCUVFGMElnRTJBZ1FnQVVHQWdBSkpEUUFMSUFFaEFnd0JDeUFFSUFVZ0FVRVFkR3NpQlRZQ0FDQUNRWUNBQW5FTkFDQUVJQVpCREVFSUlBRWdBa3NiYWlnQ0FDSUdOZ0prSUFRb0FnZ2hBUU5BQWtBZ0FRMEFJQVFvQWhBaUFVRUJhaUVISUFFdEFBRWhBeUFCTFFBQVFmOEJSZ1JBSUFOQmtBRlBCRUFnQkNBRUtBSU1RUUZxTmdJTUlBVkJnUDREYWlFRlFRZ2hBUXdDQ3lBRUlBYzJBaEFnQTBFSmRDQUZhaUVGUVFjaEFRd0JDeUFFSUFjMkFoQkJDQ0VCSUFOQkNIUWdCV29oQlFzZ0JDQUJRUUZySWdFMkFnZ2dCQ0FGUVFGMElnVTJBZ0FnQkNBQ1FRRjBJZ0kyQWdRZ0FrR0FnQUpKRFFBTEN5QUVJQUlnQmlnQ0FDSUJheUlDTmdJRUlBRWdCVUVRZGtzRVFDQUVJQUUyQWdRZ0JDQUdRUWhCRENBQklBSkxHMm9vQWdBMkFtUWdCQ2dDQ0NFQ0EwQUNRQ0FDRFFBZ0JDZ0NFQ0lHUVFGcUlRY2dCaTBBQVNFRElBWXRBQUJCL3dGR0JFQWdBMEdRQVU4RVFDQUVJQVFvQWd4QkFXbzJBZ3dnQlVHQS9nTnFJUVZCQ0NFQ0RBSUxJQVFnQnpZQ0VDQURRUWwwSUFWcUlRVkJCeUVDREFFTElBUWdCellDRUVFSUlRSWdBMEVJZENBRmFpRUZDeUFFSUFKQkFXc2lBallDQ0NBRUlBVkJBWFFpQlRZQ0FDQUVJQUZCQVhRaUFUWUNCQ0FCUVlDQUFra05BQXNNQVFzZ0JDQUZJQUZCRUhScklnYzJBZ0FnQWtHQWdBSnhEUUFnQkNBR1FReEJDQ0FCSUFKTEcyb29BZ0EyQW1RZ0JDZ0NDQ0VGQTBBQ1FDQUZEUUFnQkNnQ0VDSURRUUZxSVFZZ0F5MEFBU0VCSUFNdEFBQkIvd0ZHQkVBZ0FVR1FBVThFUUNBRUlBUW9BZ3hCQVdvMkFnd2dCMEdBL2dOcUlRZEJDQ0VGREFJTElBUWdCallDRUNBQlFRbDBJQWRxSVFkQkJ5RUZEQUVMSUFRZ0JqWUNFRUVJSVFVZ0FVRUlkQ0FIYWlFSEN5QUVJQVZCQVdzaUJUWUNDQ0FFSUFkQkFYUWlCellDQUNBRUlBSkJBWFFpQWpZQ0JDQUNRWUNBQWtrTkFBc0xDeUFuRFFBZ0JCQlRJQVJCd0trQk5nSmtJQVJCNEo0Qk5nSmdJQVJCZ0o4Qk5nSWNDMEVBSUI5QkFXb2lBU0FCUVFOR0lnRWJJUjhnR1NBQmF5RVpJQ1pCQVdvaUppQWdLQUlJVHcwQklCbEJBRW9OQUFzTElDZ2dLbW9oS0NBRUtBSVlJQVF2QVhBN0FBQWdLVUVCYWlJcElCb29BaXhKRFFBTEN3SkFJQ3RGRFFBQ1FDQUVLQUlZSWdFZ0JDZ0NFQ0lEUVFKcVN3UkFJQ0ZGRFFFZ0l5QUJJQVFvQWhRaUJtczJBamdnSXlBRElBWnJOZ0kwSUNNZ0FTQURhMEVDYXpZQ01DQWRRUUpCb1BJQUlDTkJNR29RQ0F3Q0N5QUVLQUlNSWdGQkEwa05BU0FoQkVBZ0l5QUJOZ0pRSUIxQkFrSHBOU0FqUWRBQWFoQUlEQUlMSUNNZ0FUWUNRQ0FkUVFKQjZUVWdJMEZBYXhBSURBRUxJQ01nQVNBRUtBSVVJZ1pyTmdJb0lDTWdBeUFHYXpZQ0pDQWpJQUVnQTJ0QkFtczJBaUFnSFVFQ1FhRHlBQ0FqUVNCcUVBZ0xJQm9vQWp4RkRRQWdCQ0FzTmdKMEN5QXdLQUlFSVFFZ0dpZ0NEQ0ZkSUJvb0FnZ2dNQ2dDQUdzaENDQXdLQUlRSWdaQkFYRUVRQ0F5S0FJY0lEZEJtQUZzYWlJSFFaQUJheWdDQUNBSWFpQUhRWmdCYXlnQ0FHc2hDQXNnWFNBQmF5RURJQVpCQW5FRVFDQXlLQUljSURkQm1BRnNhaUlCUVl3QmF5Z0NBQ0FEYWlBQlFaUUJheWdDQUdzaEF3c2dHaWdDUENJR0lRSWdCa1VFUUNBRUtBSjBJUUlMSUFRb0FvQUJJUllnQkNnQ2ZDRU5Ba0FnTHlnQ3FBWWlCMFVOQUNBV1JTQU5SWEloQVNBSFFSNU1CRUFnQVEwQlFRQWhFQU5BSUEwZ0VHd2hCRUVBSVFFRFFDQUNJQUVnQkdwQkFuUnFJaEVvQWdBaUNTQUpRUjkxSWdWeklBVnJJZ1VnQjNZRVFDQVJRUUFnQlNBdktBS29CbllpRVdzZ0VTQUpRUUJJR3pZQ0FBc2dBVUVCYWlJQklBMUhEUUFMSUJCQkFXb2lFQ0FXUncwQUN3d0JDeUFCRFFBZ0FrRUFJQTBnRm14QkFuUVFEaG9MSUFZRVFDQU5JQlpzSVFZZ0x5Z0NGRUVCUmdSQUlBWkZEUVZCQUNFQklBWkJCRThFUUNBR1FYeHhJUUZCQUNFRUEwQWdBaUFFUVFKMGFpSURJQVA5QUFJQUlsNzlHd0JCQW0zOUVTQmUvUnNCUVFKdC9Sd0JJRjc5R3dKQkFtMzlIQUlnWHYwYkEwRUNiZjBjQS8wTEFnQWdCRUVFYWlJRUlBRkhEUUFMSUFFZ0JrWU5CZ3NEUUNBQ0lBRkJBblJxSWdNZ0F5Z0NBRUVDYlRZQ0FDQUJRUUZxSWdFZ0JrY05BQXNNQlFzZ0JrVU5CQ0F3S2dJZ1F3QUFBRCtVSVdaQkFDRUVBa0FnQmtFRVNRUkFJQUloQVF3QkN5QUNJQVpCZkhFaUJFRUNkR29oQVNCbS9STWhYa0VBSVFNRFFDQUNJQU5CQW5ScUlnY2dYaUFIL1FBQ0FQMzZBZjNtQWYwTEFnQWdBMEVFYWlJRElBUkhEUUFMSUFRZ0JrWU5CUXNEUUNBQklHWWdBU2dDQUxLVU9BSUFJQUZCQkdvaEFTQUVRUUZxSWdRZ0JrY05BQXNNQkFzZ05pQTFheUVSSUM4b0FoUkJBVWNOQWlBV1JRMERJRElvQWlRaUJpQURJQkZzSWdOQkFuUnFJQWhCQW5ScUlRa2dEVUY4Y1NJTVFRRnJJZ0ZCQkhFaEN5QTJJQTBnTldwclFRSjBJUm9nQVVFQ2RrRUJha0grLy8vL0IzRWhIU0FESUFocVFRSjBJQVpxSUFKcklRcEJBQ0VJSUFGQkEwY2hGQU5BUVFBaEFRSkFJQXhGRFFBZ0NDQU5iQ0VESUFrZ0NDQVJiRUVDZEdvaEJrRUFJUWNnRkFSQUEwQWdCaUFCUVFKMGFpQUNJQUVnQTJwQkFuUnEvUUFDQUNKZS9Sc0FRUUp0L1JFZ1h2MGJBVUVDYmYwY0FTQmUvUnNDUVFKdC9Sd0NJRjc5R3dOQkFtMzlIQVA5Q3dJQUlBWWdBVUVFY2lJRVFRSjBhaUFDSUFNZ0JHcEJBblJxL1FBQ0FDSmUvUnNBUVFKdC9SRWdYdjBiQVVFQ2JmMGNBU0JlL1JzQ1FRSnQvUndDSUY3OUd3TkJBbTM5SEFQOUN3SUFJQUZCQ0dvaEFTQUhRUUpxSWdjZ0hVY05BQXNMSUFzTkFDQUdJQUZCQW5ScUlBSWdBU0FEYWtFQ2RHcjlBQUlBSWw3OUd3QkJBbTM5RVNCZS9Sc0JRUUp0L1J3QklGNzlHd0pCQW0zOUhBSWdYdjBiQTBFQ2JmMGNBLzBMQWdBZ0FVRUVhaUVCQ3dKQUlBRWdEVThOQUNBSUlBMXNJUU1nQ1NBSUlCRnNRUUowYWlFSEFrQWdEU0FCYXlJUVFRUkpCRUFnQVNFRURBRUxJQW9nQ0NBYWJHcEJFRWtFUUNBQklRUU1BUXNnQVNBUVFYeHhJZ1ZxSVFSQkFDRUdBMEFnQnlBQklBWnFJaUZCQW5ScUlBSWdBeUFoYWtFQ2RHcjlBQUlBSWw3OUd3QkJBbTM5RVNCZS9Sc0JRUUp0L1J3QklGNzlHd0pCQW0zOUhBSWdYdjBiQTBFQ2JmMGNBLzBMQWdBZ0JrRUVhaUlHSUFWSERRQUxJQVVnRUVZTkFRc2dCRUVCYWlFQklBMGdCR3RCQVhFRVFDQUhJQVJCQW5ScUlBSWdBeUFFYWtFQ2RHb29BZ0JCQW0wMkFnQWdBU0VFQ3lBQklBMUdEUUFEUUNBSElBUkJBblJxSUFJZ0F5QUVha0VDZEdvb0FnQkJBbTAyQWdBZ0J5QUVRUUZxSWdGQkFuUnFJQUlnQVNBRGFrRUNkR29vQWdCQkFtMDJBZ0FnQkVFQ2FpSUVJQTFIRFFBTEN5QUlRUUZxSWdnZ0ZrY05BQXNNQXdzZ0l5QVpOZ0lBSUIxQkFrSFd3QUFnSXhBSUN5QVFLQUlBUVFBMkFnQU1BUXNnRmtVTkFDQU5SUTBBSURJb0FpUWdBeUFSYkVFQ2RHb2dDRUVDZEdvaEJ5QU5RWHh4SWdOQkFuUWhCaUF3S2dJZ1F3QUFBRCtVSW1iOUV5RmVRUUFoRUNBTlFRUkpJUWdEUUFKQUFrQWdDQVJBSUFJaENTQUhJUUZCQUNFRURBRUxJQVlnQjJvaEFTQUNJQVpxSVFsQkFDRUVBMEFnQnlBRVFRSjBJZ1ZxSUY0Z0FpQUZhdjBBQWdEOStnSDk1Z0g5Q3dJQUlBUkJCR29pQkNBRFJ3MEFDeUFKSVFJZ0F5SUVJQTFHRFFFTElBa2hBZ05BSUFFZ1ppQUNLQUlBc3BRNEFnQWdBVUVFYWlFQklBSkJCR29oQWlBRVFRRnFJZ1FnRFVjTkFBc0xJQWNnRVVFQ2RHb2hCeUFRUVFGcUloQWdGa2NOQUFzTElBQVFDU0FqUWVBQWFpUUFDOVlFQVFsL0lBQW9BaXhCQ0U4RVFDQUFLQUlvSVFWQkNDRUtBMEFnQUNnQ0RFRUZkQ0VJSUFBb0FnQWhCQ0FBS0FJa0lRTUNRQ0FBS0FJVUlnWWdBQ2dDRUNJQlRRMEFJQVFnQ0dvaEJ5QUJRUUZxSVFJZ0JpQUJhMEVCY1FSQUlBY2dBVUVHZEdvaUNTQUZJQUVnQTJ4QkFuUnFJZ0g5QUFJQS9Rc0NBQ0FKSUFIOUFBSVEvUXNDRUNBQ0lRRUxJQUlnQmtZTkFBTkFJQWNnQVVFR2RHb2lBaUFGSUFFZ0EyeEJBblJxSWduOUFBSUEvUXNDQUNBQ0lBbjlBQUlRL1FzQ0VDQUhJQUZCQVdvaUFrRUdkR29pQ1NBRklBSWdBMnhCQW5ScUlnTDlBQUlRL1FzQ0VDQUpJQUw5QUFJQS9Rc0NBQ0FCUVFKcUlnRWdCa2NOQUFzTEFrQWdBQ2dDSENJR0lBQW9BaGdpQVUwTkFDQUVJQWhyUVNCcUlRY2dCU0FBS0FJSUlBTnNRUUowYWlFSUlBRkJBV29oQWlBR0lBRnJRUUZ4QkVBZ0J5QUJRUVowYWlJRUlBZ2dBU0FEYkVFQ2RHb2lBZjBBQWdEOUN3SUFJQVFnQWYwQUFoRDlDd0lRSUFJaEFRc2dBaUFHUmcwQUEwQWdCeUFCUVFaMGFpSUNJQWdnQVNBRGJFRUNkR29pQlAwQUFnRDlDd0lBSUFJZ0JQMEFBaEQ5Q3dJUUlBY2dBVUVCYWlJQ1FRWjBhaUlFSUFnZ0FpQURiRUVDZEdvaUF2MEFBaEQ5Q3dJUUlBUWdBdjBBQWdEOUN3SUFJQUZCQW1vaUFTQUdSdzBBQ3dzZ0FCQWNRUUFoQVNBQUtBSWdCRUFEUUNBRklBQW9BaVFnQVd4QkFuUnFJZ0lnQUNnQ0FDQUJRUVYwYWlJRC9RQUNBUDBMQWdBZ0FpQUQvUUFDRVAwTEFoQWdBVUVCYWlJQklBQW9BaUJKRFFBTEN5QUZRU0JxSVFVZ0NrRUlhaUlLSUFBb0FpeE5EUUFMQ3lBQUtBSUFFQWtnQUJBSkMvY05BU1YvSUFBb0FpeEJDRThFUUNBQUtBSWtJZ3BCQlhRaEhpQUtRUWRzSVJZZ0NrRUdiQ0VYSUFwQkJXd2hHQ0FLUVFOc0lSa2dDa0VCZENFYUlBQW9BaWdpQVNBS1FSeHNhaUVmSUFFZ0NrRVliR29oSUNBQklBcEJGR3hxSVNFZ0FTQUtRUVIwYWlFaUlBRWdDa0VNYkdvaEl5QUJJQXBCQTNRaUpHb2hKU0FCSUFwQkFuUWlHMm9oSmtFSUlSd0RRQ0FBSUFFZ0FDZ0NKRUVJRURRZ0FCQWNBa0FnQUNnQ0lDSUxSUTBBSUIwZ0htd2hDQ0FBS0FJQUlRWkJBQ0VFQWtBQ1FDQUxRZWdDU1EwQUlBWkJER29pRGlBTFFRRnJJZ0pCQlhRaUEyb2dEa2tOQUNBR1FRaHFJZzhnQTJvZ0Qwa05BQ0FESUFacUlBWkpEUUFnQmtFRWFpSVFJQU5xSUJCSkRRQWdBa0gvLy84L1N3MEFJQUVnQ0NBbWFpSURJQXRCQW5RaUJXb2lERWtnQXlBQklBVnFJZ2RKY1EwQUlBRWdDQ0FsYWlJQ0lBVnFJZzFKSUFJZ0IwbHhEUUFnQVNBRklBZ2dJMm9pQ1dvaUJVa2dCeUFKUzNFTkFDQUdJQWRKSUFFZ0JpQUxRUVYwYWlJUlFSeHJJaEpKY1EwQUlBRWdFVUVZYXlJVFNTQUhJQkJMY1EwQUlBRWdFVUVVYXlJVVNTQUhJQTlMY1EwQUlBY2dEa3NnQVNBUlFSQnJJZ2RKY1EwQUlBTWdEVWtnQWlBTVNYRU5BQ0FESUFWSklBa2dERWx4RFFBZ0F5QVNTU0FHSUF4SmNRMEFJQU1nRTBrZ0RDQVFTM0VOQUNBRElCUkpJQXdnRDB0eERRQWdBeUFIU1NBTUlBNUxjUTBBSUFJZ0JVa2dDU0FOU1hFTkFDQUNJQkpKSUFZZ0RVbHhEUUFnQWlBVFNTQU5JQkJMY1EwQUlBSWdGRWtnRFNBUFMzRU5BQ0FDSUFkSklBMGdEa3R4RFFBZ0NTQVNTU0FGSUFaTGNRMEFJQWtnRTBrZ0JTQVFTM0VOQUNBSklCUkpJQVVnRDB0eERRQWdCeUFKU3lBRklBNUxjUTBBSUF0Qi9QLy8vd0J4SVFSQkFDRURBMEFnQVNBRFFRSjBhaUFHSUFOQkJYUnFJZ0w5Q1FJQUlBSXFBaUQ5SUFFZ0FrRkFheW9DQVAwZ0FpQUNLZ0pnL1NBRC9Rc0NBQ0FCSUFNZ0NtcEJBblJxSUFMOUNRSUVJQUlxQWlUOUlBRWdBaW9DUlAwZ0FpQUNLZ0prL1NBRC9Rc0NBQ0FCSUFNZ0dtcEJBblJxSUFMOUNRSUlJQUlxQWlqOUlBRWdBaW9DU1AwZ0FpQUNLZ0pvL1NBRC9Rc0NBQ0FCSUFNZ0dXcEJBblJxSUFMOUNRSU1JQUlxQWl6OUlBRWdBaW9DVFAwZ0FpQUNLZ0pzL1NBRC9Rc0NBQ0FEUVFScUlnTWdCRWNOQUFzZ0JDQUxSZzBCQ3dOQUlBRWdCRUVDZEdvZ0JpQUVRUVYwYWlJREtnSUFPQUlBSUFFZ0JDQUtha0VDZEdvZ0F5b0NCRGdDQUNBQklBUWdHbXBCQW5ScUlBTXFBZ2c0QWdBZ0FTQUVJQmxxUVFKMGFpQURLZ0lNT0FJQUlBUkJBV29pQkNBTFJ3MEFDd3NnQUNnQ0FDRUdRUUFoQkFKQUlBdEIzQUJKRFFBZ0JrRWNhaUlQSUF0QkFXc2lBa0VGZENJRGFpQVBTUTBBSUFaQkdHb2lFQ0FEYWlBUVNRMEFJQVpCRUdvaUVTQURhaUFSU1EwQUlBWkJGR29pRWlBRGFpQVNTUTBBSUFKQi8vLy9QMHNOQUNBSUlDSnFJZ01nQ0NBaGFpSUNJQXRCQW5RaUJXb2lERWtnQWlBRElBVnFJZ2RKY1EwQUlBTWdDQ0FnYWlJSklBVnFJZzFKSUFjZ0NVdHhEUUFnQXlBSUlCOXFJZ2dnQldvaUJVa2dCeUFJUzNFTkFDQURJQVlnQzBFRmRHb2lEa0VNYXlJVFNTQUhJQkZMY1EwQUlBTWdEa0VJYXlJVVNTQUhJQkpMY1EwQUlBTWdEa0VFYXlJVlNTQUhJQkJMY1EwQUlBTWdEa2tnQnlBUFMzRU5BQ0FDSUExSklBa2dERWx4RFFBZ0FpQUZTU0FJSUF4SmNRMEFJQUlnRTBrZ0RDQVJTM0VOQUNBQ0lCUkpJQXdnRWt0eERRQWdBaUFWU1NBTUlCQkxjUTBBSUFJZ0Rra2dEQ0FQUzNFTkFDQUlJQTFKSUFVZ0NVdHhEUUFnQ1NBVFNTQU5JQkZMY1EwQUlBa2dGRWtnRFNBU1MzRU5BQ0FKSUJWSklBMGdFRXR4RFFBZ0NTQU9TU0FOSUE5TGNRMEFJQWdnRTBrZ0JTQVJTM0VOQUNBSUlCUkpJQVVnRWt0eERRQWdDQ0FWU1NBRklCQkxjUTBBSUFnZ0Rra2dCU0FQUzNFTkFDQUxRZnovLy84QWNTRUVRUUFoQXdOQUlBRWdBeUFiYWtFQ2RHb2dCaUFEUVFWMGFpSUMvUWtDRUNBQ0tnSXcvU0FCSUFJcUFsRDlJQUlnQWlvQ2NQMGdBLzBMQWdBZ0FTQURJQmhxUVFKMGFpQUMvUWtDRkNBQ0tnSTAvU0FCSUFJcUFsVDlJQUlnQWlvQ2RQMGdBLzBMQWdBZ0FTQURJQmRxUVFKMGFpQUMvUWtDR0NBQ0tnSTQvU0FCSUFJcUFsajlJQUlnQWlvQ2VQMGdBLzBMQWdBZ0FTQURJQlpxUVFKMGFpQUMvUWtDSENBQ0tnSTgvU0FCSUFJcUFsejlJQUlnQWlvQ2ZQMGdBLzBMQWdBZ0EwRUVhaUlESUFSSERRQUxJQVFnQzBZTkFRc0RRQ0FCSUFRZ0cycEJBblJxSUFZZ0JFRUZkR29pQXlvQ0VEZ0NBQ0FCSUFRZ0dHcEJBblJxSUFNcUFoUTRBZ0FnQVNBRUlCZHFRUUowYWlBREtnSVlPQUlBSUFFZ0JDQVdha0VDZEdvZ0F5b0NIRGdDQUNBRVFRRnFJZ1FnQzBjTkFBc0xJQjFCQVdvaEhTQUJJQ1JCQW5ScUlRRWdIRUVJYWlJY0lBQW9BaXhORFFBTEN5QUFLQUlBRUFrZ0FCQUpDM01CQW44Z0FDZ0NIQ0lCUVFocUlnTWdBQ2dDSUNJQ1RRUkFBMEFnQUNBQUtBSVlJQUZCQW5ScUlBQW9BaFJCQ0JBcklBTWlBVUVJYWlJRElBQW9BaUFpQWswTkFBc0xJQUVnQWtrRVFDQUFJQUFvQWhnZ0FVRUNkR29nQUNnQ0ZDQUNJQUZyRUNzTElBQW9BZ0FRQ1NBQUVBa0xSQUFnQUNnQ0hDSUJJQUFvQWlCSkJFQURRQ0FBSUFBb0FoZ2dBQ2dDRkNBQmJFRUNkR29RVmlBQlFRRnFJZ0VnQUNnQ0lFa05BQXNMSUFBb0FnQVFDU0FBRUFrTHFBRUJCWDhnQUNnQ1ZDSURLQUlBSVFVZ0F5Z0NCQ0lFSUFBb0FoUWdBQ2dDSENJSGF5SUdJQVFnQmtrYklnWUVRQ0FGSUFjZ0JoQUxHaUFESUFNb0FnQWdCbW9pQlRZQ0FDQURJQU1vQWdRZ0Jtc2lCRFlDQkFzZ0JDQUNJQUlnQkVzYklnUUVRQ0FGSUFFZ0JCQUxHaUFESUFNb0FnQWdCR29pQlRZQ0FDQURJQU1vQWdRZ0JHczJBZ1FMSUFWQkFEb0FBQ0FBSUFBb0Fpd2lBVFlDSENBQUlBRTJBaFFnQWd1ZUJRSUdmZ1IvSUFFZ0FTZ0NBRUVIYWtGNGNTSUJRUkJxTmdJQUlBQWhDeUFCS1FNQUlRTWdBU2tEQ0NFSEl3QkJJR3NpQ0NRQUlBZEMvLy8vLy8vL1A0TWhCQUorSUFkQ01JaEMvLzhCZ3lJRnB5SUtRWUg0QUd0Qi9ROU5CRUFnQkVJRWhpQURRanlJaENFQ0lBcEJnUGdBYTYwaEJRSkFJQU5DLy8vLy8vLy8vLzhQZ3lJRFFvR0FnSUNBZ0lDQUNGb0VRQ0FDUWdGOElRSU1BUXNnQTBLQWdJQ0FnSUNBZ0FoU0RRQWdBa0lCZ3lBQ2ZDRUNDMElBSUFJZ0FrTC8vLy8vLy8vL0IxWWlBQnNoQWlBQXJTQUZmQXdCQ3dKQUlBTWdCSVJRRFFBZ0JVTC8vd0ZTRFFBZ0JFSUVoaUFEUWp5SWhFS0FnSUNBZ0lDQUJJUWhBa0wvRHd3QkMwTC9EeUFLUWY2SEFVc05BQnBDQUVHQStBQkJnZmdBSUFWUUlnRWJJZ0FnQ21zaUNVSHdBRW9OQUJvZ0F5RUNJQVFnQkVLQWdJQ0FnSURBQUlRZ0FSc2lCaUVFQWtCQmdBRWdDV3NpQVVIQUFIRUVRQ0FESUFGQlFHcXRoaUVFUWdBaEFnd0JDeUFCUlEwQUlBUWdBYTBpQllZZ0FrSEFBQ0FCYTYySWhDRUVJQUlnQllZaEFnc2dDQ0FDTndNUUlBZ2dCRGNER0FKQUlBbEJ3QUJ4QkVBZ0JpQUpRVUJxcllnaEEwSUFJUVlNQVFzZ0NVVU5BQ0FHUWNBQUlBbHJyWVlnQXlBSnJTSUNpSVFoQXlBR0lBS0lJUVlMSUFnZ0F6Y0RBQ0FJSUFZM0F3Z2dDQ2tEQ0VJRWhpQUlLUU1BSWdKQ1BJaUVJUU1DUUNBQUlBcEhJQWdwQXhBZ0NDa0RHSVJDQUZKeHJTQUNRdi8vLy8vLy8vLy9ENE9FSWdKQ2dZQ0FnSUNBZ0lBSVdnUkFJQU5DQVh3aEF3d0JDeUFDUW9DQWdJQ0FnSUNBQ0ZJTkFDQURRZ0dESUFOOElRTUxJQU5DZ0lDQWdJQ0FnQWlGSUFNZ0EwTC8vLy8vLy8vL0IxWWlBQnNoQWlBQXJRc2hBeUFJUVNCcUpBQWdDeUFIUW9DQWdJQ0FnSUNBZ0grRElBTkNOSWFFSUFLRXZ6a0RBQXVjR0FNVGZ3RjhBMzRqQUVHd0JHc2lEQ1FBSUF4QkFEWUNMQUpBSUFHOUlocENBRk1FUUVFQklSQkJ1Z2doRXlBQm1pSUJ2U0VhREFFTElBUkJnQkJ4QkVCQkFTRVFRYjBJSVJNTUFRdEJ3QWhCdXdnZ0JFRUJjU0lRR3lFVElCQkZJUlVMQWtBZ0drS0FnSUNBZ0lDQStQOEFnMEtBZ0lDQWdJQ0ErUDhBVVFSQUlBQkJJQ0FDSUJCQkEyb2lBeUFFUWYvL2UzRVFGQ0FBSUJNZ0VCQVJJQUJCdHdsQjlnb2dCVUVnY1NJRkcwR2dDa0g2Q2lBRkd5QUJJQUZpRzBFREVCRWdBRUVnSUFJZ0F5QUVRWURBQUhNUUZDQURJQUlnQWlBRFNCc2hDUXdCQ3lBTVFSQnFJUklDUUFKL0FrQWdBU0FNUVN4cUVGOGlBU0FCb0NJQlJBQUFBQUFBQUFBQVlnUkFJQXdnRENnQ0xDSUdRUUZyTmdJc0lBVkJJSElpRGtIaEFFY05BUXdEQ3lBRlFTQnlJZzVCNFFCR0RRSWdEQ2dDTENFS1FRWWdBeUFEUVFCSUd3d0JDeUFNSUFaQkhXc2lDallDTENBQlJBQUFBQUFBQUxCQm9pRUJRUVlnQXlBRFFRQklHd3NoQ3lBTVFUQnFRYUFDUVFBZ0NrRUFUaHRxSWcwaEJ3TkFJQWNDZnlBQlJBQUFBQUFBQVBCQll5QUJSQUFBQUFBQUFBQUFabkVFUUNBQnF3d0JDMEVBQ3lJRE5nSUFJQWRCQkdvaEJ5QUJJQU80b1VRQUFBQUFaYzNOUWFJaUFVUUFBQUFBQUFBQUFHSU5BQXNDUUNBS1FRQk1CRUFnQ2lFRElBY2hCaUFOSVFnTUFRc2dEU0VJSUFvaEF3TkFRUjBnQXlBRFFSMVBHeUVEQWtBZ0IwRUVheUlHSUFoSkRRQWdBNjBoRzBJQUlSb0RRQ0FHSUJwQy8vLy8vdytESUFZMUFnQWdHNFo4SWh4Q2dKVHIzQU9BSWhwQ2dPeVVvd3grSUJ4OFBnSUFJQVpCQkdzaUJpQUlUdzBBQ3lBYXB5SUdSUTBBSUFoQkJHc2lDQ0FHTmdJQUN3TkFJQWdnQnlJR1NRUkFJQVpCQkdzaUJ5Z0NBRVVOQVFzTElBd2dEQ2dDTENBRGF5SUROZ0lzSUFZaEJ5QURRUUJLRFFBTEN5QURRUUJJQkVBZ0MwRVpha0VKYmtFQmFpRVJJQTVCNWdCR0lROERRRUVKUVFBZ0Eyc2lBeUFEUVFsUEd5RUpBa0FnQmlBSVRRUkFJQWdvQWdCRlFRSjBJUWNNQVF0QmdKVHIzQU1nQ1hZaEZFRi9JQWwwUVg5eklSWkJBQ0VESUFnaEJ3TkFJQWNnQXlBSEtBSUFJaGNnQ1hacU5nSUFJQllnRjNFZ0ZHd2hBeUFIUVFScUlnY2dCa2tOQUFzZ0NDZ0NBRVZCQW5RaEJ5QURSUTBBSUFZZ0F6WUNBQ0FHUVFScUlRWUxJQXdnRENnQ0xDQUphaUlETmdJc0lBMGdCeUFJYWlJSUlBOGJJZ2NnRVVFQ2RHb2dCaUFHSUFkclFRSjFJQkZLR3lFR0lBTkJBRWdOQUFzTFFRQWhBd0pBSUFZZ0NFME5BQ0FOSUFoclFRSjFRUWxzSVFOQkNpRUhJQWdvQWdBaUNVRUtTUTBBQTBBZ0EwRUJhaUVESUFrZ0IwRUtiQ0lIVHcwQUN3c2dDeUFEUVFBZ0RrSG1BRWNiYXlBT1FlY0FSaUFMUVFCSGNXc2lCeUFHSUExclFRSjFRUWxzUVFsclNBUkFJQXhCTUdwQkJFR2tBaUFLUVFCSUcyb2dCMEdBeUFCcUlnbEJDVzBpRDBFQ2RHb2lFVUdBSUdzaENrRUtJUWNnRDBGM2JDQUphaUlKUVFkTUJFQURRQ0FIUVFwc0lRY2dDVUVCYWlJSlFRaEhEUUFMQ3dKQUlBb29BZ0FpRHlBUElBZHVJaFFnQjJ3aUNVWWdFVUg4SDJzaUZpQUdSbkVOQUNBUElBbHJJUThDUUNBVVFRRnhSUVJBUkFBQUFBQUFBRUJESVFFZ0IwR0FsT3ZjQTBjTkFTQUlJQXBQRFFFZ0VVR0VJR3N0QUFCQkFYRkZEUUVMUkFFQUFBQUFBRUJESVFFTFJBQUFBQUFBQU9BL1JBQUFBQUFBQVBBL1JBQUFBQUFBQVBnL0lBWWdGa1liUkFBQUFBQUFBUGcvSUE4Z0IwRUJkaUlVUmhzZ0R5QVVTUnNoR1FKQUlCVU5BQ0FUTFFBQVFTMUhEUUFnR1pvaEdTQUJtaUVCQ3lBS0lBazJBZ0FnQVNBWm9DQUJZUTBBSUFvZ0J5QUphaUlETmdJQUlBTkJnSlRyM0FOUEJFQURRQ0FLUVFBMkFnQWdDQ0FLUVFScklncExCRUFnQ0VFRWF5SUlRUUEyQWdBTElBb2dDaWdDQUVFQmFpSUROZ0lBSUFOQi81UHIzQU5MRFFBTEN5QU5JQWhyUVFKMVFRbHNJUU5CQ2lFSElBZ29BZ0FpQ1VFS1NRMEFBMEFnQTBFQmFpRURJQWtnQjBFS2JDSUhUdzBBQ3dzZ0NrRUVhaUlISUFZZ0JpQUhTeHNoQmdzRFFDQUdJZ2NnQ0UwaUNVVUVRQ0FHUVFScklnWW9BZ0JGRFFFTEN3SkFJQTVCNXdCSEJFQWdCRUVJY1NFS0RBRUxJQU5CZjNOQmZ5QUxRUUVnQ3hzaUJpQURTaUFEUVh0S2NTSUtHeUFHYWlFTFFYOUJmaUFLR3lBRmFpRUZJQVJCQ0hFaUNnMEFRWGNoQmdKQUlBa05BQ0FIUVFScktBSUFJZzVGRFFCQkNpRUpRUUFoQmlBT1FRcHdEUUFEUUNBR0lncEJBV29oQmlBT0lBbEJDbXdpQ1hCRkRRQUxJQXBCZjNNaEJnc2dCeUFOYTBFQ2RVRUpiQ0VKSUFWQlgzRkJ4Z0JHQkVCQkFDRUtJQXNnQmlBSmFrRUpheUlHUVFBZ0JrRUFTaHNpQmlBR0lBdEtHeUVMREFFTFFRQWhDaUFMSUFNZ0NXb2dCbXBCQ1dzaUJrRUFJQVpCQUVvYklnWWdCaUFMU2hzaEN3dEJmeUVKSUF0Qi9mLy8vd2RCL3YvLy93Y2dDaUFMY2lJUEcwb05BU0FMSUE5QkFFZHFRUUZxSVE0Q1FDQUZRVjl4SWhWQnhnQkdCRUFnQXlBT1FmLy8vLzhIYzBvTkF5QURRUUFnQTBFQVNoc2hCZ3dCQ3lBU0lBTWdBMEVmZFNJR2N5QUdhNjBnRWhBaklnWnJRUUZNQkVBRFFDQUdRUUZySWdaQk1Eb0FBQ0FTSUFaclFRSklEUUFMQ3lBR1FRSnJJaEVnQlRvQUFDQUdRUUZyUVMxQkt5QURRUUJJR3pvQUFDQVNJQkZySWdZZ0RrSC8vLy8vQjNOS0RRSUxJQVlnRG1vaUF5QVFRZi8vLy84SGMwb05BU0FBUVNBZ0FpQURJQkJxSWdVZ0JCQVVJQUFnRXlBUUVCRWdBRUV3SUFJZ0JTQUVRWUNBQkhNUUZBSkFBa0FDUUNBVlFjWUFSZ1JBSUF4QkVHb2lCa0VJY2lFRElBWkJDWEloQ2lBTklBZ2dDQ0FOU3hzaUNTRUlBMEFnQ0RVQ0FDQUtFQ01oQmdKQUlBZ2dDVWNFUUNBR0lBeEJFR3BORFFFRFFDQUdRUUZySWdaQk1Eb0FBQ0FHSUF4QkVHcExEUUFMREFFTElBWWdDa2NOQUNBTVFUQTZBQmdnQXlFR0N5QUFJQVlnQ2lBR2F4QVJJQWhCQkdvaUNDQU5UUTBBQ3lBUEJFQWdBRUdDREVFQkVCRUxJQWNnQ0UwTkFTQUxRUUJNRFFFRFFDQUlOUUlBSUFvUUl5SUdJQXhCRUdwTEJFQURRQ0FHUVFGcklnWkJNRG9BQUNBR0lBeEJFR3BMRFFBTEN5QUFJQVpCQ1NBTElBdEJDVTRiRUJFZ0MwRUpheUVHSUFoQkJHb2lDQ0FIVHcwRElBdEJDVW9oR0NBR0lRc2dHQTBBQ3d3Q0N3SkFJQXRCQUVnTkFDQUhJQWhCQkdvZ0J5QUlTeHNoQ1NBTVFSQnFJZ1pCQ0hJaEF5QUdRUWx5SVEwZ0NDRUhBMEFnRFNBSE5RSUFJQTBRSXlJR1JnUkFJQXhCTURvQUdDQURJUVlMQWtBZ0J5QUlSd1JBSUFZZ0RFRVFhazBOQVFOQUlBWkJBV3NpQmtFd09nQUFJQVlnREVFUWFrc05BQXNNQVFzZ0FDQUdRUUVRRVNBR1FRRnFJUVlnQ2lBTGNrVU5BQ0FBUVlJTVFRRVFFUXNnQUNBR0lBMGdCbXNpQmlBTElBWWdDMGdiRUJFZ0N5QUdheUVMSUFkQkJHb2lCeUFKVHcwQklBdEJBRTROQUFzTElBQkJNQ0FMUVJKcVFSSkJBQkFVSUFBZ0VTQVNJQkZyRUJFTUFnc2dDeUVHQ3lBQVFUQWdCa0VKYWtFSlFRQVFGQXNnQUVFZ0lBSWdCU0FFUVlEQUFITVFGQ0FGSUFJZ0FpQUZTQnNoQ1F3QkN5QVRJQVZCR25SQkgzVkJDWEZxSVFnQ1FDQURRUXRMRFFCQkRDQURheUVHUkFBQUFBQUFBREJBSVJrRFFDQVpSQUFBQUFBQUFEQkFvaUVaSUFaQkFXc2lCZzBBQ3lBSUxRQUFRUzFHQkVBZ0dTQUJtaUFab2FDYUlRRU1BUXNnQVNBWm9DQVpvU0VCQ3lBUVFRSnlJUXNnQlVFZ2NTRU5JQklnRENnQ0xDSUhJQWRCSDNVaUJuTWdCbXV0SUJJUUl5SUdSZ1JBSUF4Qk1Eb0FEeUFNUVE5cUlRWUxJQVpCQW1zaUNpQUZRUTlxT2dBQUlBWkJBV3RCTFVFcklBZEJBRWdiT2dBQUlBUkJDSEVoQmlBTVFSQnFJUWNEUUNBSElnVUNmeUFCbVVRQUFBQUFBQURnUVdNRVFDQUJxZ3dCQzBHQWdJQ0FlQXNpQjBIZ3hBRnFMUUFBSUExeU9nQUFJQUVnQjdlaFJBQUFBQUFBQURCQW9pRUJBa0FnQlVFQmFpSUhJQXhCRUdwclFRRkhEUUFDUUNBR0RRQWdBMEVBU2cwQUlBRkVBQUFBQUFBQUFBQmhEUUVMSUFWQkxqb0FBU0FGUVFKcUlRY0xJQUZFQUFBQUFBQUFBQUJpRFFBTFFYOGhDVUg5Ly8vL0J5QUxJQklnQ21zaUJtb2lEV3NnQTBnTkFDQUFRU0FnQWlBTklBTkJBbW9nQnlBTVFSQnFJZ2RySWdVZ0JVRUNheUFEU0JzZ0JTQURHeUlKYWlJRElBUVFGQ0FBSUFnZ0N4QVJJQUJCTUNBQ0lBTWdCRUdBZ0FSekVCUWdBQ0FISUFVUUVTQUFRVEFnQ1NBRmEwRUFRUUFRRkNBQUlBb2dCaEFSSUFCQklDQUNJQU1nQkVHQXdBQnpFQlFnQXlBQ0lBSWdBMGdiSVFrTElBeEJzQVJxSkFBZ0NRc0VBRUlBQ3dRQVFRQUxud01CQ1g5QjVnb2hBQUpBQTBBZ0FDMEFBQ0lCUlEwQklBRkJQVVlOQVNBQVFRRnFJZ0JCQTNFTkFBc0NRQUpBUVlDQ2hBZ2dBQ2dDQUNJQ2F5QUNja0dBZ1lLRWVIRkJnSUdDaEhoSERRQURRRUdBZ29RSUlBSkJ2ZnIwNlFOeklnRnJJQUZ5UVlDQmdvUjRjVUdBZ1lLRWVFY05BU0FBS0FJRUlRSWdBRUVFYWlJQklRQWdBa0dBZ29RSUlBSnJja0dBZ1lLRWVIRkJnSUdDaEhoR0RRQUxEQUVMSUFBaEFRc0RRQ0FCSWdBdEFBQWlBa1VOQVNBQVFRRnFJUUVnQWtFOVJ3MEFDd3NnQUNJQlFlWUtSZ1JBUVFBUEN3SkFJQUZCNWdwcklnQkI1Z3BxTFFBQURRQkJzTTRCS0FJQUlnUkZEUUFnQkNnQ0FDSUZSUTBBQTBBQ1FBSi9JQVVoQWtIbUNpRUdRUUFnQUNJQlJRMEFHa0htQ2kwQUFDSURCSDhDUUFOQUlBTWdBaTBBQUNJSFJ3MEJJQWRGRFFFZ0FVRUJheUlCUlEwQklBSkJBV29oQWlBR0xRQUJJUU1nQmtFQmFpRUdJQU1OQUF0QkFDRURDeUFEQlVFQUN5QUNMUUFBYXd0RkJFQWdBQ0FGYWlJQkxRQUFRVDFHRFFFTElBUW9BZ1FoQlNBRVFRUnFJUVFnQlEwQkRBSUxDeUFCUVFGcUlRZ0xJQWdMemdJQkNIOGpBRUVnYXlJREpBQWdBeUFBS0FJY0lnUTJBaEFnQUNnQ0ZDRUZJQU1nQWpZQ0hDQURJQUUyQWhnZ0F5QUZJQVJySWdFMkFoUWdBU0FDYWlFRlFRSWhCaUFEUVJCcUlRRUNmd05BQWtBQ1FBSkFJQUFvQWp3Z0FTQUdJQU5CREdvUUJDSUVCSDlCbE1ZQklBUTJBZ0JCZndWQkFBdEZCRUFnQlNBREtBSU1JZ2RHRFFFZ0IwRUFUZzBDREFNTElBVkJmMGNOQWdzZ0FDQUFLQUlzSWdFMkFod2dBQ0FCTmdJVUlBQWdBU0FBS0FJd2FqWUNFQ0FDREFNTElBRWdCeUFCS0FJRUlnaExJZ2xCQTNScUlnUWdCeUFJUVFBZ0NSdHJJZ2dnQkNnQ0FHbzJBZ0FnQVVFTVFRUWdDUnRxSWdFZ0FTZ0NBQ0FJYXpZQ0FDQUZJQWRySVFVZ0JpQUpheUVHSUFRaEFRd0JDd3NnQUVFQU5nSWNJQUJDQURjREVDQUFJQUFvQWdCQklISTJBZ0JCQUNBR1FRSkdEUUFhSUFJZ0FTZ0NCR3NMSVFvZ0EwRWdhaVFBSUFvTEJnQWdBQkFBQ3dZQUlBQVFCZ3ZQSFFNTmZ3UjdBMzRqQUVIUXdBQnJJZ2trQUNBSlFRQTJBaEJCQWlFRUFrQUNRQ0FBS0FJQUlnTkJqWlNjMUFCR0RRQWdBMEgvbi8yUEJVY0VRQUpBSUFOQmdJQ0E0QUJIRFFBZ0FDZ0NCRUhxb0lHQkFrY05BQ0FBS0FJSVFZMlVuTlFBUmcwQ0MwSE5DQkFBUVFFaEFBd0NDMEVBSVFRTEFuOUJBRUVCUWVBQUVBd2lBMFVOQUJvZ0EwRUJOZ0pNQWtBQ1FBSkFBa0FnQkE0REFBTUJBd3NnQTBIREFEWUNXQ0FEUWNRQU5nSlVJQU5CeFFBMkFsQWdBMEhHQURZQ0VDQURRY2NBTmdJRUlBTkJ5QUEyQWh3Z0EwSEpBRFlDR0NBRFFjb0FOZ0lVSUFOQnl3QTJBZ0FnQTBITUFEWUNYQ0FEUWMwQU5nSXNJQU5CemdBMkFpZ2dBMEhQQURZQ0pDQURRZEFBTmdJZ0lBTkIwUUEyQWd3Z0EwSFNBRFlDQ0NBREVFWWlCRFlDTUNBRURRRU1BZ3NnQTBIVEFEWUNXQ0FEUWRRQU5nSlVJQU5CMVFBMkFsQWdBMEhXQURZQ0VDQURRZGNBTmdJRUlBTkIyQUEyQWx3Z0EwSFpBRFlDTENBRFFkb0FOZ0lvSUFOQjJ3QTJBaVFnQTBIY0FEWUNJQ0FEUWQwQU5nSWNJQU5CM2dBMkFoZ2dBMEhmQURZQ0ZDQURRZUFBTmdJTUlBTkI0UUEyQWdnZ0EwSGlBRFlDQUNBREFuOUJBVUdJQVJBTUlnUUVRQ0FFRUVZaUJUWUNBQUpBSUFWRkRRQWdCUDBNQUFBQUFBQUFBQUFBQUFBQUFBQUFBUDBMQW13Z0JFRUFPZ0I4SUFRUUxpSUZOZ0lFSUFWRkRRQWdCQkF1SWdVMkFnZ2dCVVVOQUNBRURBSUxJQVFRYVF0QkFBc2lCRFlDTUNBRVJRMEJDeUFEUVFFMkFrZ2dBMEVCTmdKQUlBTkJBRFlDUENBRFFnQTNBalFnQTBFQk5nSkVJQU1NQVFzZ0F4QUpRUUFMSWdRRVFDQUVRUUEyQWp3Z0JFSGpBRFlDU0FzZ0JBUkFJQVJCQURZQ09DQUVRZVFBTmdKRUN5QUVCRUFnQkVFQU5nSTBJQVJCNVFBMkFrQUxJQWxCRkdvaUJTSURCRUFnQTBFQVFiakFBQkFPSWdOQkFEWUN1RUFnQTBKL053S0lRQXNnQ1NBQk5nSU1JQWtnQURZQ0NDQUpJQUEyQWdSQkFTRUFRUUFoQXdKQUlBbEJCR29pQ2tVTkFFRUJRY2dBRUF3aUFRUi9BbjhnQVVHQWdNQUFOZ0pBSUFGQmdJREFBQkFOSWdnMkFpQWdDRVVFUUNBQkVBbEJBQXdCQ3lBQklBZzJBaVFnQVVFQ05nSWNJQUZCQXpZQ0dDQUJRUVEyQWhRZ0FVRUZOZ0lRSUFGQkJqWUNMQ0FCUVFnMkFpZ2dBU0FCS0FKRVFRSnlOZ0pFSUFFTEJVRUFDeUlCUlEwQUlBRUVRQ0FCUVFBMkFnUWdBU0FLTmdJQUN5QUtOUUlJSVJRZ0FRUkFJQUVnRkRjRENBc0NRQ0FCUlEwQUlBRXRBRVJCQW5GRkRRQWdBVUUvTmdJUUN5QUJCRUFnQVVIQkFEWUNHQXNnQVFSQUlBRkJ3Z0EyQWh3TElBRWhBd3NDZndKQUlBUkZEUUFnQlVVTkFDQUVLQUpNUlFSQUlBUkJOR3BCQVVHUHlRQkJBQkFJUVFBTUFnc2dCQ2dDTUNBRklBUW9BaGdSQXdCQkFTRUhDeUFIQzBVRVFFR0JDUkFBSUFNUUp5QUVFQ2dNQVFzQ2Z5QUpRUkJxSVFWQkFDRUJBa0FnQTBVTkFDQUVSUTBBSUFRb0FreEZCRUFnQkVFMGFrRUJRZURKQUVFQUVBaEJBQXdDQ3lBRElBUW9BakFnQlNBRVFUUnFJQVFvQWdBUkFRQWhBUXNnQVF0RkJFQkJuUWtRQUNBREVDY2dCQkFvSUFrb0FoQVFHQXdCQ3lBSktBSVFJUUFnQWdSQVFRZ2dBQ2dDRUNJQlFRSjBFQnNoQlFKQUlBRkZEUUJCQUNFQUlBRkJBMHNFUUNBQlFYeHhJUUQ5REFBQUFBQUJBQUFBQWdBQUFBTUFBQUFoRUFOQUlBVWdCa0VDZEdvZ0VQMExBZ0FnRVAwTUJBQUFBQVFBQUFBRUFBQUFCQUFBQVAydUFTRVFJQVpCQkdvaUJpQUFSdzBBQ3lBQUlBRkdEUUVMQTBBZ0JTQUFRUUowYWlBQU5nSUFJQUJCQVdvaUFDQUJSdzBBQ3dzQ2YwRUFJQVJGRFFBYUlBUW9Ba3hGQkVBZ0JFRTBha0VCUWJYSUFFRUFFQWhCQUF3QkN5QUVLQUl3SUFFZ0JTQUVRVFJxSUFRb0Fpd1JBUUFMUlFSQVFkd0lFQUFnQXhBbklBUVFLQ0FKS0FJUUVCZ2dCUkFKUVFFaEFBd0NDeUFGRUFrZ0NTZ0NFQ0VBQzBFQUlRRUNRQ0FFUlEwQUlBTkZEUUFnQkNnQ1RFVU5BQ0FFS0FJd0lBTWdBQ0FFUVRScUlBUW9BZ1FSQVFBaEFRc0NRQ0FCQkVCQkFDRUFBa0FnQkVVTkFDQURSUTBBSUFRb0FreEZEUUFnQkNnQ01DQURJQVJCTkdvZ0JDZ0NFQkVBQUNFQUN5QUFEUUVMUWFRS0VBQWdCQkFvSUFNUUp5QUpLQUlRRUJoQkFTRUFEQUVMSUFNUUp5QUVFQ2hCQ0NBSktBSVFJZ29vQWd3Z0NpZ0NDR3dpQlNBS0tBSVFJZ2RzSWcwUUd5RURBa0FnQWcwQUlBZEZEUUFnQ2lnQ0dDRU9BMEFnRGlBTFFUUnNhaUlHS0FJWUlnQkJDRWNFUUFKQUlBQkJCMDBFUUNBR0tBSU1JQVlvQWdoc0lRRWdCaWdDTENFQ0lBWW9BaUFFUUNBQlJRMENRUUVnQUVFQmEzU3RJUlJCQUNFQUlBRkJCRThFUUNBQlFYeHhJUUFnRlAwU0lSQkJBQ0VFQTBBZ0FpQUVRUUowYWlJSUlBajlBQUlBSWhMOXh3RkJCLzNMQVNJUi9SMEFJQkQ5SFFBaUZYLzlFaUFSL1IwQklCRDlIUUVpRm4vOUhnRWdFaUFRL1EwSUNRb0xEQTBPRHdBQkFnTUFBUUlEL2NjQlFRZjl5d0VpRXYwZEFDQVZmLzBTSUJMOUhRRWdGbi85SGdIOURRQUJBZ01JQ1FvTEVCRVNFeGdaR2h2OUN3SUFJQVJCQkdvaUJDQUFSdzBBQ3lBQUlBRkdEUU1MQTBBZ0FpQUFRUUowYWlJRUlBUTBBZ0JDQjRZZ0ZIOCtBZ0FnQUVFQmFpSUFJQUZIRFFBTERBSUxJQUZGRFFGQmZ5QUFkRUYvYzYwaEZFRUFJUUFnQVVFRVR3UkFJQUZCZkhFaEFDQVUvUkloRUVFQUlRUURRQ0FDSUFSQkFuUnFJZ2dnQ1AwQUFnQWlFdjNKQWYwTS93QUFBQUFBQUFEL0FBQUFBQUFBQVAzVkFTSVIvUjBBSUJEOUhRQWlGWUQ5RWlBUi9SMEJJQkQ5SFFFaUZvRDlIZ0VnRWlBUS9RMElDUW9MREEwT0R3QUJBZ01BQVFJRC9ja0IvUXovQUFBQUFBQUFBUDhBQUFBQUFBQUEvZFVCSWhMOUhRQWdGWUQ5RWlBUy9SMEJJQmFBL1I0Qi9RMEFBUUlEQ0FrS0N4QVJFaE1ZR1JvYi9Rc0NBQ0FFUVFScUlnUWdBRWNOQUFzZ0FDQUJSZzBDQ3dOQUlBSWdBRUVDZEdvaUJDQUVOUUlBUXY4QmZpQVVnRDRDQUNBQVFRRnFJZ0FnQVVjTkFBc01BUXNnQUVFSWF5RUVJQVlvQWd3Z0JpZ0NDR3doQWlBR0tBSXNJUWdnQmlnQ0lBUkFJQUpGRFFGQkFDRUFJQUpCQkU4RVFDQUNRWHh4SVFCQkFDRUJBMEFnQ0NBQlFRSjBhaUlNSUF6OUFBSUFJQVQ5ckFIOUN3SUFJQUZCQkdvaUFTQUFSdzBBQ3lBQUlBSkdEUUlMQTBBZ0NDQUFRUUowYWlJQklBRW9BZ0FnQkhVMkFnQWdBRUVCYWlJQUlBSkhEUUFMREFFTElBSkZEUUJCQUNFQUlBSkJCRThFUUNBQ1FYeHhJUUJCQUNFQkEwQWdDQ0FCUVFKMGFpSU1JQXo5QUFJQUlBVDlyUUg5Q3dJQUlBRkJCR29pQVNBQVJ3MEFDeUFBSUFKR0RRRUxBMEFnQ0NBQVFRSjBhaUlCSUFFb0FnQWdCSFkyQWdBZ0FFRUJhaUlBSUFKSERRQUxDeUFHUVFnMkFoZ0xJQXRCQVdvaUN5QUhSdzBBQ3dzQ1FBSkFBa0FDUUNBSFFRRnJEZ1FBQXdFQ0F3c2dCVVVOQWlBS0tBSVlLQUlzSVFKQkFDRUVRUUFoQVFKQUlBVkJERWtOQUNBQ0lBTWdCV3BKSUFJZ0JVRUNkR29nQTB0eERRQWdCVUY4Y1NFQlFRQWhBQU5BSUFBZ0Eyb2dBaUFBUVFKMGF2MEFBZ0FnRVAwTkFBUUlEQUFBQUFBQUFBQUFBQUFBQVAxYUFBQUFJQUJCQkdvaUFDQUJSdzBBQ3lBQklBVkdEUU1MSUFFaEFDQUZRUU54SWdZRVFBTkFJQUFnQTJvZ0FpQUFRUUowYWlnQ0FEb0FBQ0FBUVFGcUlRQWdCRUVCYWlJRUlBWkhEUUFMQ3lBQklBVnJRWHhMRFFJRFFDQUFJQU5xSUFJZ0FFRUNkR29vQWdBNkFBQWdBeUFBUVFGcUlnRnFJQUlnQVVFQ2RHb29BZ0E2QUFBZ0F5QUFRUUpxSWdGcUlBSWdBVUVDZEdvb0FnQTZBQUFnQXlBQVFRTnFJZ0ZxSUFJZ0FVRUNkR29vQWdBNkFBQWdBRUVFYWlJQUlBVkhEUUFMREFJTElBVkZEUUVnQ2lnQ0dDSUFLQUtVQVNFQklBQW9BbUFoQWlBQUtBSXNJUVJCQUNFQUlBVkJBVWNFUUNBRlFRRnhJUThnQlVGK2NTRUhBMEFnQXlBQVFRTnNhaUlGSUFRZ0FFRUNkQ0lHYWlnQ0FEb0FBQ0FGSUFJZ0Jtb29BZ0E2QUFFZ0JTQUJJQVpxS0FJQU9nQUNJQU1nQUVFQmNpSUdRUU5zYWlJRklBUWdCa0VDZENJR2FpZ0NBRG9BQUNBRklBSWdCbW9vQWdBNkFBRWdCU0FCSUFacUtBSUFPZ0FDSUFCQkFtb2lBQ0FIUncwQUN5QVBSUTBDQ3lBRElBQkJBMnhxSWdVZ0JDQUFRUUowSWdCcUtBSUFPZ0FBSUFVZ0FDQUNhaWdDQURvQUFTQUZJQUFnQVdvb0FnQTZBQUlNQVFzZ0JVVU5BQ0FLS0FJWUlnUW9Bc2dCSVFBZ0JDZ0NsQUVoQVNBRUtBSmdJUUlnQkNnQ0xDRUlRUUFoQkFKQUlBVkIxQUJKRFFBZ0F5QUZRUUZySWdkQkFuUWlCbW9nQTBrTkFDQURRUUZxSWdzZ0Jtb2dDMGtOQUNBRFFRSnFJZ3NnQm1vZ0Mwa05BQ0FHSUFOQkEyb2lDMm9nQzBrTkFDQUhRZi8vLy84RFN3MEFJQU1nQ0NBRlFRSjBJZ1pxU1NBSUlBTWdCbW9pQjBseERRQWdBaUFIU1NBRElBSWdCbXBKY1EwQUlBRWdCMGtnQXlBQklBWnFTWEVOQUNBQUlBZEpJQU1nQUNBR2FrbHhEUUFnQlVIOC8vLy9CM0VoQlAwTUFBQUFBQUVBQUFBQ0FBQUFBd0FBQUNFU1FRQWhCZ05BSUFNZ0VrRUMvYXNCSWhEOUd3QnFJQWdnQmtFQ2RDSUhhdjBBQWdBaUVmMGJBRG9BQUNBRElCRDlHd0ZxSUJIOUd3RTZBQUFnQXlBUS9Sc0NhaUFSL1JzQ09nQUFJQU1nRVAwYkEyb2dFZjBiQXpvQUFDQURJQkQ5REFFQUFBQUJBQUFBQVFBQUFBRUFBQUQ5VUNJUi9Sc0FhaUFDSUFkcS9RQUNBQ0lUL1JzQU9nQUFJQU1nRWYwYkFXb2dFLzBiQVRvQUFDQURJQkg5R3dKcUlCUDlHd0k2QUFBZ0F5QVIvUnNEYWlBVC9Sc0RPZ0FBSUFNZ0VQME1BZ0FBQUFJQUFBQUNBQUFBQWdBQUFQMVFJaEg5R3dCcUlBRWdCMnI5QUFJQUloUDlHd0E2QUFBZ0F5QVIvUnNCYWlBVC9Sc0JPZ0FBSUFNZ0VmMGJBbW9nRS8wYkFqb0FBQ0FESUJIOUd3TnFJQlA5R3dNNkFBQWdBeUFRL1F3REFBQUFBd0FBQUFNQUFBQURBQUFBL1ZBaUVQMGJBR29nQUNBSGF2MEFBZ0FpRWYwYkFEb0FBQ0FESUJEOUd3RnFJQkg5R3dFNkFBQWdBeUFRL1JzQ2FpQVIvUnNDT2dBQUlBTWdFUDBiQTJvZ0VmMGJBem9BQUNBUy9Rd0VBQUFBQkFBQUFBUUFBQUFFQUFBQS9hNEJJUklnQmtFRWFpSUdJQVJIRFFBTElBUWdCVVlOQVFzRFFDQURJQVJCQW5RaUJtb2lCeUFHSUFocUtBSUFPZ0FBSUFjZ0FpQUdhaWdDQURvQUFTQUhJQUVnQm1vb0FnQTZBQUlnQnlBQUlBWnFLQUlBT2dBRElBUkJBV29pQkNBRlJ3MEFDd3NnQ2hBWUlBTWdEUkFISUFNUUNVRUFJUUFMSUFsQjBNQUFhaVFBSUFBTENBQkJDQ0FBRUJzTHF3SUNBbjRDZjBKL0lRTWdBQzBBUkVFSWNVVUVRQ0FBSUFBb0FpQWlCallDSkFKQUFrQUNRQ0FBSUFBb0FqQWlCUVIvQTBBZ0JpQUZJQUFvQWdBZ0FDZ0NGQkVBQUNJRlFYOUdEUUlnQUNBQUtBSWtJQVZxSWdZMkFpUWdBQ0FBS0FJd0lBVnJJZ1UyQWpBZ0JRMEFDeUFBS0FJZ0JTQUdDellDSkNBQlFnQlZEUUZDQUNFRERBSUxJQUFnQUNnQ1JFRUljallDUkNBQ1FRUkJrZlVBUVFBUUNDQUFRUUEyQWpBZ0FDQUFLQUpFUVFoeU5nSkVRbjhQQzBJQUlRTURRQ0FCSUFBb0FnQWdBQ2dDR0JFTEFDSUVRbjlSQkVBZ0FrRUVRWUwxQUVFQUVBZ2dBQ0FBS0FKRVFRaHlOZ0pFSUFBZ0FDa0RPQ0FEZkRjRE9FSi9JQU1nQTFBYkR3c2dBeUFFZkNFRElBRWdCSDBpQVVJQVZRMEFDd3NnQUNBQUtRTTRJQU44TndNNEN5QURDeU1CQVg4Z0FTQUJLQUlBSUFFb0FnZ2lBU0FBcHlJQ0lBRWdBa2tiYWpZQ0JFRUJDendDQW44QmZpQUJLQUlBSUFFb0FnaHFJZ01nQVNnQ0JDSUNSZ1JBUW44UEN5QUJJQUlnQUtkcU5nSUVJQU1nQW11c0lnUWdBQ0FBSUFSVkd3dVlBd0lDZmdKL0lBQW9BakFpQlNBQnB5SUdUd1JBSUFBZ0JTQUdhellDTUNBQUlBQW9BaVFnQm1vMkFpUWdBQ0FBS1FNNElBRjhOd000SUFFUEN5QUFMUUJFUVFSeEJFQWdBRUVBTmdJd0lBQWdBQ2dDSkNBRmFqWUNKQ0FBSUFXdElnRWdBQ2tET0h3M0F6Z2dBVUovSUFVYkR3c0NRQ0FGUlFSQURBRUxJQUJCQURZQ01DQUFJQUFvQWlBMkFpUWdBU0FGclNJRGZTRUJDeUFCUWdCVkJFQURRQ0FBS1FNSUlBQXBBemdnQVNBRGZIeFVCRUFnQWtFRVFhdjFBRUVBRUFnZ0FFRUFOZ0l3SUFBZ0FDZ0NJRFlDSkNBQUlBQXBBemdnQTN3aUF6Y0RPQ0FBS1FNSUlnRWdBMzBoQkNBQklBQW9BZ0FnQUNnQ0hCRUpBQ0VGSUFBb0FrUWhBaUFBSUFVRWZ5QUFJQUUzQXpnZ0FrRjdjUVVnQWd0QkJISTJBa1JDZnlBRUlBRWdBMUViRHdzZ0FTQUFLQUlBSUFBb0FoZ1JDd0FpQkVKL1VRUkFJQUpCQkVHcjlRQkJBQkFJSUFBZ0FDZ0NSRUVFY2pZQ1JDQUFJQUFwQXpnZ0EzdzNBemhDZnlBRElBTlFHdzhMSUFNZ0JId2hBeUFCSUFSOUlnRkNBRlVOQUFzTElBQWdBQ2tET0NBRGZEY0RPQ0FEQzVzQkFRVi9RUUVnQWlnQ0NDSUhJQWRCQVUwYklRUWdBaWdDQkNJRElBSW9BZ0JySVFZRFFDQUVJZ1ZCQVhRaEJDQUZJQVpySUFGSkRRQUxJQVVnQjBjRVFDQUZFQTBpQTBVRVFFRi9Ed3NnQWlnQ0FDSUVCRUFnQXlBRUlBWVFDeG9nQWlnQ0FCQUpDeUFDSUFVMkFnZ2dBaUFETmdJQUlBSWdBeUFHYWlJRE5nSUVDeUFESUFBZ0FSQUxHaUFDSUFJb0FnUWdBV28yQWdRZ0FRdEdBUUovSUFJb0FnQWdBaWdDQ0dvaUJDQUNLQUlFSWdOR0JFQkJmdzhMSUFBZ0F5QUVJQU5ySWdBZ0FTQUFJQUZKR3lJQUVBc2FJQUlnQWlnQ0JDQUFhallDQkNBQUM2b0NBUVIvSXdCQkVHc2lCQ1FBQWtBZ0FDZ0NkQTBBSUFKQkFVMEVRQ0FEUVFGQi9NRUFRUUFRQ0F3QkN5QUJJQVJCREdwQkFoQUtJQVFvQWd3aUJrSC8vd054SWdkRkJFQWdBMEVCUVozQ0FFRUFFQWdNQVFzZ0FpQUhRUVpzUVFKcVNRUkFJQU5CQVVIOHdRQkJBQkFJREFFTElBWkJCbXdRRFNJRFJRMEFJQUJCQ0JBTklnSTJBblFnQWtVRVFDQURFQWtNQVFzZ0FpQUROZ0lBSUFJZ0JDOEJEQ0lDT3dFRUlBSkZCRUJCQVNFRkRBRUxRUUFoQWdOQUlBRkJBbW9nQkVFTWFpSUZRUUlRQ2lBRElBSkJCbXhxSWdZZ0JDZ0NERHNCQUNBQlFRUnFJQVZCQWhBS0lBWWdCQ2dDRERzQkFpQUJRUVpxSWdFZ0JVRUNFQW9nQmlBRUtBSU1Pd0VFUVFFaEJTQUNRUUZxSWdJZ0FDZ0NkQzhCQkVrTkFBc0xJQVJCRUdva0FDQUZDL0FCQVFWL0l3QkJFR3NpQkNRQUFuOGdBQ2dDZUNJRlJRUkFJQU5CQVVIT3dRQkJBQkFJUVFBTUFRc2dCU2dDREFSQUlBTkJBVUcyMVFCQkFCQUlRUUFNQVFzZ0FpQUZMUUFTSWdWQkFuUWlCa2tFUUNBRFFRRkJyY0VBUVFBUUNFRUFEQUVMUVFBZ0JoQU5JZ0pGRFFBYUlBVUVRRUVBSVFNRFFDQUJJQVJCREdvaUIwRUNFQW9nQWlBRFFRSjBhaUlHSUFRb0FndzdBUUFnQVVFQ2FpQUhRUUVRQ2lBR0lBUW9BZ3c2QUFJZ0FVRURhaUFIUVFFUUNpQUdJQVFvQWd3NkFBTWdBVUVFYWlFQklBTkJBV29pQXlBRlJ3MEFDd3NnQUNnQ2VDQUNOZ0lNUVFFTElRZ2dCRUVRYWlRQUlBZ0w4QU1CQ1g4akFFRVFheUlGSkFBQ1FDQUNRUU5KRFFBZ0FDZ0NlQTBBSUFFZ0JVRU1ha0VDRUFvZ0JTOEJEQ0lKUVlFSWEwSC9kMDBFUUNBRklBazJBZ0FnQTBFQlFiUWFJQVVRQ0F3QkN5QUJRUUpxSUFWQkRHcEJBUkFLSUFVdkFRd2lDRVVFUUNBRFFRRkIxQmRCQUJBSURBRUxJQWhCQTJvZ0Frc05BQ0FJSUFsc1FRSjBFQTBpQjBVTkFDQUlFQTBpQ2tVRVFDQUhFQWtNQVFzZ0NCQU5JZ3RGQkVBZ0J4QUpJQW9RQ1F3QkMwRVVFQTBpQmtVRVFDQUhFQWtnQ2hBSklBc1FDUXdCQ3lBQlFRTnFJUU1nQmlBS05nSUlJQVlnQ3pZQ0JDQUdJQWs3QVJBZ0JpQUhOZ0lBSUFVb0Fnd2hEQ0FHUVFBMkFnd2dCaUFNT2dBU0lBQWdCallDZUFOQUlBTWdCVUVNYWtFQkVBb2dCQ0FLYWlBRkxRQU1RZjhBY1VFQmFqb0FBQ0FFSUF0cUlBVW9BZ3hCZ0FGeFFRZDJPZ0FBSUFOQkFXb2hBeUFFUVFGcUlnUWdDRWNOQUFzZ0NVVUVRRUVCSVFRTUFRdEJBQ0VHQTBCQkFDRUVRUUFoQUFOQUlBSkJCQ0FFSUFwcUxRQUFRUWRxUVFOMklnUWdCRUVFVHhzaUJDQURJQUZyYWtnRVFFRUFJUVFNQXdzZ0F5QUZRUXhxSUFRUUNpQUhJQVVvQWd3MkFnQWdCMEVFYWlFSElBTWdCR29oQXlBQVFRRnFJZ0JCLy84RGNTSUVJQWhKRFFBTFFRRWhCQ0FHUVFGcUlnWkIvLzhEY1NBSlNRMEFDd3NnQlVFUWFpUUFJQVFMbUFFQkFuOGpBRUVRYXlJRkpBQWdBQ2dDR0NJRVFmOEJSd1JBSUFVZ0JEWUNBQ0FEUVFKQjVCTWdCUkFJQ3dKQUFrQWdBaUFBS0FJVVJnUkFJQUlOQVVFQklRUU1BZ3RCQUNFRUlBTkJBVUhMN0FCQkFCQUlEQUVMUVFBaEFnTkFRUUVoQkNBQklBQW9Ba2dnQWtFTWJHcEJDR3BCQVJBS0lBRkJBV29oQVNBQ1FRRnFJZ0lnQUNnQ0ZFa05BQXNMSUFWQkVHb2tBQ0FFQzQ0R0FRWi9Jd0JCMEFCcklnUWtBQUpBSUFKQkFrMEVRQ0FEUVFGQnErd0FRUUFRQ0F3QkN5QUFMUUI4QkVBZ0EwRUVRY25TQUVFQUVBaEJBU0VHREFFTFFRRWhCaUFCSUFCQktHcEJBUkFLSUFGQkFXb2dBRUUwYWtFQkVBb2dBVUVDYWlBQVFTeHFRUUVRQ2lBQlFRTnFJUVVDUUFKQUFrQUNRQUpBSUFBb0FpZ2lCMEVCYXc0Q0FBRUNDeUFDUVFaTkJFQWdCQ0FDTmdJUUlBTkJBVUhROFFBZ0JFRVFhaEFJUVFBaEJnd0ZDd0pBSUFKQkIwWU5BQ0FBS0FJd1FRNUdEUUFnQkNBQ05nSXdJQU5CQWtIUThRQWdCRUV3YWhBSUN5QUZJQUJCTUdwQkJCQUtJQUFvQWpCQkRrY05BMEVrRUEwaUJVVUVRRUVBSVFZZ0EwRUJRYk04UVFBUUNBd0ZDeUFGUVE0MkFnQWdCRUVBTmdKQUlBUkJBRFlDT0NBRVFRQTJBa2dnQkVFQU5nSThJQVJCQURZQ1JDQUVRUUEyQWt4QnNPcVFBaUVHSUFSQnNPcVFBallDTkNBRlFZQ01sYUlFTmdJRUFuOGdBa0VIUndSQUlBSkJJMFlFUUNBQlFRZHFJQVJCekFCcVFRUVFDaUFCUVF0cUlBUkJ5QUJxUVFRUUNpQUJRUTlxSUFSQnhBQnFRUVFRQ2lBQlFSTnFJQVJCUUd0QkJCQUtJQUZCRjJvZ0JFRThha0VFRUFvZ0FVRWJhaUFFUVRocVFRUVFDaUFCUVI5cUlBUkJOR3BCQkJBS0lBVkJBRFlDQkNBRUtBSTBJUVlnQkNnQ09DRUNJQVFvQWtBaEF5QUVLQUk4SVFjZ0JDZ0NSQ0VJSUFRb0Frd2hDU0FFS0FKSURBSUxJQVFnQWpZQ0lDQURRUUpCOVBFQUlBUkJJR29RQ0F0QkFDRUNRUUFoQTBFQUlRZEJBQXNoQVNBRklBYzJBaGdnQlNBSU5nSVFJQVVnQ1RZQ0NDQUZJQVkyQWlBZ0JTQUNOZ0ljSUFVZ0F6WUNGQ0FGSUFFMkFnd2dBRUVBTmdKd0lBQWdCVFlDYkF3REN5QUFJQUpCQTJzaUFUWUNjQ0FBUVFFZ0FSQU1JZ00yQW13Z0EwVU5BU0FDUVFOTURRSkJBQ0VDQTBBZ0JTQUVRY3dBYWtFQkVBb2dBQ2dDYkNBQ2FpQUVLQUpNT2dBQUlBVkJBV29oQlNBQ1FRRnFJZ0lnQVVjTkFBc01BZ3NnQjBFRFNRMENJQVFnQnpZQ0FDQURRUVJCNi9jQUlBUVFDQXdDQzBFQUlRWWdBRUVBTmdKd0RBRUxRUUVoQmlBQVFRRTZBSHdMSUFSQjBBQnFKQUFnQmd1MEF3RURmeU1BUVNCcklnUWtBQUpBSUFBb0FrZ0VRQ0FEUVFKQmpUVkJBQkFJUVFFaEFnd0JDeUFDUVE1SEJFQkJBQ0VDSUFOQkFVR0s3QUJCQUJBSURBRUxJQUVnQUVFUWFrRUVFQW9nQVVFRWFpQUFRUXhxUVFRUUNpQUJRUWhxSUFCQkZHcEJBaEFLSUFBb0Fnd2hCUUpBSUFRQ2Z5QUFLQUlRSWdaRkJFQWdBQ2dDRkF3QkN5QUFLQUlVSWdJZ0JVVU5BQm9nQWcwQlFRQUxOZ0lJSUFRZ0JqWUNCQ0FFSUFVMkFnQWdBMEVCUWU3cUFDQUVFQWhCQUNFQ0RBRUxJQUpCZ1lBQmEwSC8vMzVOQkVCQkFDRUNJQU5CQVVHWTZnQkJBQkFJREFFTElBQWdBa0VNRUF3aUFqWUNTQ0FDUlFSQVFRQWhBaUFEUVFGQnZlb0FRUUFRQ0F3QkMwRUJJUUlnQVVFS2FpQUFRUmhxUVFFUUNpQUJRUXRxSUFCQkhHcEJBUkFLSUFBb0Fod2lCVUVIUndSQUlBUWdCVFlDRUNBRFFRUkJyZm9BSUFSQkVHb1FDQXNnQVVFTWFpQUFRU0JxUVFFUUNpQUJRUTFxSUFCQkpHcEJBUkFLSUFBb0FnQWlBU0FCTFFDOEFVSDdBWEVnQUNnQ0dFSC9BVVpCQW5SeU9nQzhBU0FBS0FJQUlnRWdBQ2dDRERZQzJBRWdBU0FBS0FJUU5nTGNBU0FBUVFFNkFJVUJDeUFFUVNCcUpBQWdBZ3U2QkFFR2Z5TUFRUkJySWdZa0FBSi9JQUF0QUdSQkFuRkZCRUFnQTBFQlFlelRBRUVBRUFoQkFBd0JDeUFBUVFBMkFtZ0NRQUpBQWtBZ0FnUkFBMEFnQWtFSFRRUkFJQU5CQVVHNUdVRUFFQWdNQlFzZ0FTQUdRUXhxSWdWQkJCQUtJQVlvQWd3aEJDQUJRUVJxSUFWQkJCQUtRUWdoQnlBR0tBSU1JUVVDUUFKQUFrQUNRQ0FFRGdJQkFBTUxJQUpCRUVrRVFFSGhHU0VFREFjTElBRkJDR29nQmtFSWFrRUVFQW9nQmlnQ0NBUkFRY3MrSVFRTUJ3c2dBVUVNYWlBR1FReHFRUVFRQ2lBR0tBSU1JZ1FOQVVHeUdDRUVEQVlMSUFOQkFVR3lHRUVBRUFnTUJndEJFQ0VIQ3lBRUlBZEpCRUFnQTBFQlFZYkVBRUVBRUFnTUJRc2dBaUFFU1FSQUlBTkJBVUcrd3dCQkFCQUlRUUFNQmdzQ1FBSkFJQUFnQVNBSGFpQUVJQWRySUFNQ2Z3SkFBa0FDUUNBRlFmSFl2WnNHVEFSQUlBVkI0OGJCa3daR0RRRWdCVUhteXBHYkJrWU5BeUFGUWZEQ3Rac0dSdzBGUWZEQUFRd0VDeUFGUWZMWWpZTUhSZzBCUWREQUFTQUZRZkxJb2NzR1JnMERHaUFGUWZMWXZac0dSdzBFUWRqQUFRd0RDMEhnd0FFTUFndEI2TUFCREFFTFFmakFBUXNvQWdRUkFRQU5BVUVBREFjTElBQWdBQ2dDYUVILy8vLy9CM0kyQW1nTFFRRWdDQ0FGUWZMSW9jc0dSaHNoQ0NBQklBUnFJUUVnQWlBRWF5SUNEUUFMSUFnTkFRc2dBMEVCUWRyQ0FFRUFFQWhCQUF3REN5QUFRUUU2QUlRQklBQWdBQ2dDWkVFRWNqWUNaRUVCREFJTElBTkJBU0FFUVFBUUNBc2dBMEVCUVo0T1FRQVFDRUVBQ3lFSklBWkJFR29rQUNBSkMrSUJBUUYvSUFBb0FtUkJBVWNFUUNBRFFRRkJtZFFBUVFBUUNFRUFEd3NDUUNBQ1FRZE5CRUFNQVFzZ0FTQUFRVGhxUVFRUUNpQUJRUVJxSUFCQlBHcEJCQkFLSUFKQkEzRUVRQXdCQ3lBQUlBSkJDR3NpQWtFQ2RpSUVOZ0pBQWtBZ0FrVU5BQ0FBSUFSQkJCQU1JZ0kyQWtRZ0FrVUVRQ0FEUVFGQnFSQkJBQkFJUVFBUEN5QUFLQUpBUlEwQUlBRkJDR29oQTBFQUlRSURRQ0FESUFBb0FrUWdBa0VDZEdwQkJCQUtJQU5CQkdvaEF5QUNRUUZxSWdJZ0FDZ0NRRWtOQUFzTElBQWdBQ2dDWkVFQ2NqWUNaRUVCRHdzZ0EwRUJRYW90UVFBUUNFRUFDOFFCQVFKL0lBQWdBQ2dDSUNJRU5nSWtBa0FnQUNnQ01DSURCRUFEUUNBRUlBTWdBQ2dDQUNBQUtBSVVFUUFBSWdOQmYwWU5BaUFBSUFBb0FpUWdBMm9pQkRZQ0pDQUFJQUFvQWpBZ0Eyc2lBellDTUNBRERRQUxJQUFvQWlBaEJBc2dBRUVBTmdJd0lBQWdCRFlDSkNBQklBQW9BZ0FnQUNnQ0hCRUpBRVVFUUNBQUlBQW9Ba1JCQ0hJMkFrUkJBQThMSUFBZ0FUY0RPRUVCRHdzZ0FDQUFLQUpFUVFoeU5nSkVJQUpCQkVHUjlRQkJBQkFJSUFBZ0FDZ0NSRUVJY2pZQ1JFRUFDNElCQVFKL0l3QkJFR3NpQkNRQUFuOGdBQ2dDWkFSQUlBTkJBVUcyMHdCQkFCQUlRUUFNQVFzZ0FrRUVSd1JBSUFOQkFVSE9MVUVBRUFoQkFBd0JDeUFCSUFSQkRHcEJCQkFLSUFRb0FneEJpbzZxNkFCSEJFQWdBMEVCUWZZbFFRQVFDRUVBREFFTElBQWdBQ2dDWkVFQmNqWUNaRUVCQ3lFRklBUkJFR29rQUNBRkN3MEFJQUFvQWdBZ0FTQUNFRDRMQ1FBZ0FDZ0NBQkJEQ3drQUlBQW9BZ0FRUWdzTkFDQUFLQUlBSUFFZ0FoQkZDMEVCQVg4Z0FnUi9JQU5CQWtHMnl3QkJBQkFJSUFBb0FnQWdBU0FDSUFNZ0JCQS9SUVJBSUFOQkFVR3BMMEVBRUFoQkFBOExJQUFnQWlBREVHb0ZRUUFMQ3hVQUlBQW9BZ0FnQVNBQ0lBTWdCQ0FGSUFZUVJ3c1BBQ0FBS0FJQUlBRWdBaUFERUVnTEV3QWdBQ2dDQUNBQklBSWdBeUFFSUFVUUpBc2RBQ0FBS0FJQUlBRWdBaUFESUFRZ0JTQUdJQWNnQ0NBSklBb1FJQXZxQkFFSGZ3SkFJQUVvQWdoQk5TQURFQjVGRFFBZ0FTZ0NCQ0lIS0FJQUlRVWdCeWdDQ0NFRUFrQWdCUVJBUVFFaEJpQUZRUUZIQkVBZ0JVRitjU0VLQTBBQ2YwRUFJQVpGRFFBYVFRQWdBU0FBSUFNZ0JDZ0NBQkVBQUVVTkFCb2dBU0FBSUFNZ0JDZ0NCQkVBQUVFQVJ3c2hCaUFFUVFocUlRUWdDVUVDYWlJSklBcEhEUUFMQ3dKQUlBVkJBWEVFUUNBR1JRMEJJQUVnQUNBRElBUW9BZ0FSQUFCQkFFY2hCZ3NnQjBFQU5nSUFJQVpGRFFNTUFnc2dCMEVBTmdJQVFRQVBDeUFIUVFBMkFnQUxJQUVvQWdnaUJ5Z0NBQ0VGSUFjb0FnZ2hCQUpBQWtBQ2Z3SkFJQVVFUUVFQklRWWdCVUVCY1NFSUlBVkJBVWNOQVVFQURBSUxJQWRCQURZQ0FBd0NDeUFGUVg1eElRVkJBQ0VKQTBBQ2YwRUFJQVpGRFFBYVFRQWdBU0FBSUFNZ0JDZ0NBQkVBQUVVTkFCb2dBU0FBSUFNZ0JDZ0NCQkVBQUVFQVJ3c2hCaUFFUVFocUlRUWdDVUVDYWlJSklBVkhEUUFMSUFaRkN5RUZJQWdFUUNBRkRRSWdBU0FBSUFNZ0JDZ0NBQkVBQUVFQVJ5RUdDeUFIUVFBMkFnQkJBQ0VJSUFaRkRRSUxJQUV0QUlRQlJRUkFJQU5CQVVITjFnQkJBQkFJUVFBUEN5QUJMUUNGQVVVRVFDQURRUUZCc05ZQVFRQVFDRUVBRHdzZ0FDQUJLQUlBSUFJZ0F4QkpJUWdnQWtVTkFTQUNLQUlBSWdCRkRRRkJBU0VFQWtBQ1FBSkFBa0FDUUFKQUlBRW9BakJCREdzT0RRTUVCQVFGQUFFRUJBUUVCQUlFQzBFQ0lRUU1CQXRCQXlFRURBTUxRUVFoQkF3Q0MwRUZJUVFNQVF0QmZ5RUVDeUFBSUFRMkFoUWdBU2dDYkNJRFJRMEJJQUFnQXpZQ0hDQUNLQUlBSUFFb0FuQTJBaUFnQVVFQU5nSnNJQWdQQ3lBSFFRQTJBZ0JCQUNFSUN5QUlDK1FKQWdwL0FYNGpBRUh3QUdzaUF5UUFRWUFJSVFnQ2Z3SkFRUUZCZ0FnUURDSUdCRUFnQTBIY0FHb2hDeUFEUWV3QWFpRUpBMEFDUUFKQUFrQWdBU0FEUWVnQWFpSUVRUWdnQWhBU1FRaEhEUUFnQkNBRFFkZ0Fha0VFRUFvZ0NTQUxRUVFRQ2tFSUlRVUNRQUpBQWtBQ1FBSkFJQU1vQWxnT0FnQUJCQXNnQVNrRENDSU5VQVIrUWdBRklBMGdBU2tET0gwTElnMUMrUC8vL3c5VERRRWdBa0VCUWNzK1FRQVFDQXdFQ3lBQklBTkI2QUJxSWdSQkNDQUNFQkpCQ0VjTkF5QUVJQU5CNUFCcVFRUVFDaUFES0FKa1JRMEJJQUpCQVVITFBrRUFFQWdNQXdzZ0F5QU5wMEVJYWpZQ1dBd0JDeUFKSUFOQjJBQnFRUVFRQ2tFUUlRVUxJQU1vQWx3aUJFSGo1TURUQmtZRVFDQUFLQUprSWdGQkJIRUVRQ0FBSUFGQkNISTJBbVFNQWdzZ0FrRUJRYTByUVFBUUNDQUdFQWxCQUF3SEN5QURLQUpZSWdkRkJFQWdBa0VCUWJJWVFRQVFDQ0FHRUFsQkFBd0hDeUFGSUFkTEJFQWdBeUFFTmdJRUlBTWdCellDQUNBQ1FRRkJpdWdBSUFNUUNBd0dDd0pBQW44Q2Z3SkFBbjhDUUFKQUFrQUNRQUpBSUFSQjhkaTltd1pNQkVBZ0JFSGp4c0dUQmtZTkFpQUVRZWJLa1pzR1JnMEVJQVJCOE1LMW13WkhEUUZCOE1BQkRBWUxJQVJCbjhEQTBnWk1CRUFnQkVIeTJMMmJCa1lOQlVIUXdBRWdCRUh5eUtITEJrWU5CaG9nQkVIdzh0R3pCa2NOQVVHNHdBRU1DQXNnQkVIeTJJMkRCMFlOQWlBRVFhREF3TklHUmcwR1FjREFBU0FFUWVqa3dOTUdSZzBIR2dzZ0FDZ0NaQ0lFUVFGeERRZ2dBa0VCUWZ3T1FRQVFDQ0FHRUFsQkFBd1BDMEhnd0FFTUF3dEI2TUFCREFJTFFmakFBUXdCQzBIWXdBRUxJUW9nQXlBRVFmOEJjVFlDVENBRElBUkJHSFkyQWtBZ0F5QUVRUWgyUWY4QmNUWUNTQ0FESUFSQkVIWkIvd0Z4TmdKRUlBSkJBa0hKRGlBRFFVQnJFQWdnQnlBRmF5SUZJQUF0QUdSQkJIRU5BaG9nQXlBREtBSmNJZ1JCR0hZMkFqQWdBeUFFUWY4QmNUWUNQQ0FESUFSQkVIWkIvd0Z4TmdJMElBTWdCRUVJZGtIL0FYRTJBamdnQWtFQ1Fkb3pJQU5CTUdvUUNDQUFJQUFvQW1SQi8vLy8vd2R5TmdKa0lBRWdCYTBpRFNBQ0lBRW9BaWdSQ0FBZ0RWRU5CeUFDUVFGQmtoeEJBQkFJSUFZUUNVRUFEQW9MUWJEQUFRc2hDaUFISUFWckN5RUZJQUVwQXdnaURWQUVma0lBQlNBTklBRXBBemg5Q3lBRnJWTUVRQ0FES0FKWUlRUWdBeWdDWENFQUlBTWdBU2tEQ0NJTlVBUitRZ0FGSUEwZ0FTa0RPSDBMUGdJb0lBTWdCVFlDSkNBRElBQkIvd0Z4TmdJZ0lBTWdBRUVZZGpZQ0ZDQURJQVEyQWhBZ0F5QUFRUWgyUWY4QmNUWUNIQ0FESUFCQkVIWkIvd0Z4TmdJWUlBSkJBVUhkOVFBZ0EwRVFhaEFJREFjTElBVWdDRTBFUUNBR0lRUU1CQXNnQlNFSUlBWWdCUkFRSWdRTkF5QUdFQWtnQWtFQlFmOFBRUUFRQ0VFQURBY0xJQVJCQW5GRkJFQWdBa0VCUWNJUFFRQVFDQ0FHRUFsQkFBd0hDeUFBSUFSQi8vLy8vd2R5TmdKa0lBRWdCeUFGYTYwaURTQUNJQUVvQWlnUkNBQWdEVkVOQXlBQUxRQmtRUWh4UlEwQklBSkJBa0dTSEVFQUVBZ0xJQVlRQ1VFQkRBVUxJQUpCQVVHU0hFRUFFQWdnQmhBSlFRQU1CQXNnQVNBRUlBVWdBaEFTSUFWSEJFQWdBa0VCUWNRY1FRQVFDQ0FFRUFsQkFBd0VDeUFBSUFRaUJpQUZJQUlnQ2lnQ0JCRUJBQTBBQ3lBRUVBbEJBQXdDQ3lBQ1FRRkJvaVZCQUJBSVFRQU1BUXNnQmhBSlFRQUxJUXdnQTBId0FHb2tBQ0FNQytZQkFRWi9JQUFvQWdoQk5TQUNFQjRFUUFKQUlBQW9BZ2dpQmlnQ0FDRURJQVlvQWdnaEJRSkFBa0FDZndKQUlBTUVRRUVCSVFRZ0EwRUJjU0VISUFOQkFVY05BVUVBREFJTElBWkJBRFlDQUF3Q0N5QURRWDV4SVFNRFFBSi9RUUFnQkVVTkFCcEJBQ0FBSUFFZ0FpQUZLQUlBRVFBQVJRMEFHaUFBSUFFZ0FpQUZLQUlFRVFBQVFRQkhDeUVFSUFWQkNHb2hCU0FJUVFKcUlnZ2dBMGNOQUFzZ0JFVUxJUU1nQndSQUlBTU5BaUFBSUFFZ0FpQUZLQUlBRVFBQVFRQkhJUVFMSUFaQkFEWUNBQ0FFUlEwQ0N5QUFLQUlBR2tFQkR3c2dCa0VBTmdJQUN3dEJBQXNLQUNBQUtBSUFHa0VBQ3hRQUlBQW9BZ0FpQUFSQUlBQWdBVFlDdUFFTEN5RUFJQUFvQWdBZ0FSQk1JQUJCQURvQWZDQUFJQUVvQXJoQVFRRnhOZ0tBQVFzeUFDQUNSUVJBUVFBUEN5QUFLQUlBSUFFZ0FpQURFRUZGQkVBZ0EwRUJRYWt2UVFBUUNFRUFEd3NnQUNBQ0lBTVFhZ3RwQWdKL0FYd2pBRUVRYXlJREpBQWdBZ1JBQTBBZ0FDQURRUWhxRUQwZ0FRSi9JQU1yQXdnaUJabEVBQUFBQUFBQTRFRmpCRUFnQmFvTUFRdEJnSUNBZ0hnTE5nSUFJQUZCQkdvaEFTQUFRUWhxSVFBZ0JFRUJhaUlFSUFKSERRQUxDeUFEUVJCcUpBQUxoQUVDQW44QmZTTUFRUkJySWdNa0FDQUNCRUFEUUNBRElBQXRBQUE2QUE4Z0F5QUFMUUFCT2dBT0lBTWdBQzBBQWpvQURTQURJQUF0QUFNNkFBd2dBUUovSUFNcUFnd2lCWXREQUFBQVQxMEVRQ0FGcUF3QkMwR0FnSUNBZUFzMkFnQWdBVUVFYWlFQklBQkJCR29oQUNBRVFRRnFJZ1FnQWtjTkFBc0xJQU5CRUdva0FBdExBUUovSXdCQkVHc2lBeVFBSUFJRVFBTkFJQUFnQTBFTWFrRUVFQW9nQVNBREtBSU1OZ0lBSUFGQkJHb2hBU0FBUVFScUlRQWdCRUVCYWlJRUlBSkhEUUFMQ3lBRFFSQnFKQUFMU3dFQ2Z5TUFRUkJySWdNa0FDQUNCRUFEUUNBQUlBTkJER3BCQWhBS0lBRWdBeWdDRERZQ0FDQUJRUVJxSVFFZ0FFRUNhaUVBSUFSQkFXb2lCQ0FDUncwQUN3c2dBMEVRYWlRQUMwb0JBbjhqQUVFUWF5SURKQUFnQWdSQUEwQWdBQ0FEUVFocUVEMGdBU0FES3dNSXRqZ0NBQ0FCUVFScUlRRWdBRUVJYWlFQUlBUkJBV29pQkNBQ1J3MEFDd3NnQTBFUWFpUUFDMmdCQW44akFFRVFheUlESkFBZ0FnUkFBMEFnQXlBQUxRQUFPZ0FQSUFNZ0FDMEFBVG9BRGlBRElBQXRBQUk2QUEwZ0F5QUFMUUFET2dBTUlBRWdBeW9DRERnQ0FDQUJRUVJxSVFFZ0FFRUVhaUVBSUFSQkFXb2lCQ0FDUncwQUN3c2dBMEVRYWlRQUMwd0JBbjhqQUVFUWF5SURKQUFnQWdSQUEwQWdBQ0FEUVF4cVFRUVFDaUFCSUFNb0FneXpPQUlBSUFGQkJHb2hBU0FBUVFScUlRQWdCRUVCYWlJRUlBSkhEUUFMQ3lBRFFSQnFKQUFMVEFFQ2Z5TUFRUkJySWdNa0FDQUNCRUFEUUNBQUlBTkJER3BCQWhBS0lBRWdBeWdDRExNNEFnQWdBVUVFYWlFQklBQkJBbW9oQUNBRVFRRnFJZ1FnQWtjTkFBc0xJQU5CRUdva0FBdXFDQUlOZndGN0l3QkJFR3NpQ0NRQUFuOGdBQ2dDQ0VFUVJnUkFJQUFvQXB3QklBQW9Bc3dCUVl3c2JHb01BUXNnQUNnQ0RBc2hDUUpBSUFKRkJFQWdBMEVCUWZBZlFRQVFDQXdCQ3lBQUtBSklJUVpCQVNFRUlBRWdDRUVJYWtFQkVBb2dDQ2dDQ0NJRlFRSlBCRUFnQTBFQ1FjZkhBRUVBRUFnTUFRc2dBaUFGUVFGcVJ3UkFRUUFoQkNBRFFRSkI4QjlCQUJBSURBRUxBa0FnQmlnQ0VDSURSUTBBSUFrb0F0QXJJUVFnQTBFSVR3UkFJQU5CZUhFaEJrRUFJUUlEUUNBRVFRQTJBcnhESUFSQkFEWUNoRHNnQkVFQU5nTE1NaUFFUVFBMkFwUXFJQVJCQURZQzNDRWdCRUVBTmdLa0dTQUVRUUEyQXV3UUlBUkJBRFlDdEFnZ0JFSEF3d0JxSVFRZ0FrRUlhaUlDSUFaSERRQUxDeUFEUVFkeElnTkZEUUJCQUNFQ0EwQWdCRUVBTmdLMENDQUVRYmdJYWlFRUlBSkJBV29pQWlBRFJ3MEFDd3NnQ1NnQzZDc2lBZ1IvSUFJUUNTQUpRUUEyQXVncklBZ29BZ2dGSUFVTFJRUkFRUUVoQkF3QkN3TkFJQUZCQVdvaUFTQUlRUXhxUVFFUUNnSkFJQWtvQW9Bc1JRMEFJQWtvQXZ3cklnTW9BZ0FnQ0NnQ0RFY05BQ0FES0FJRUlnVWdBQ2dDU0NJR0tBSVFSdzBBSUFNb0FnZ2lBZ1JBUVFBaEJDQUNLQUlRSUFVZ0JXd2lCU0FDS0FJQVFRSjBRZUM5QVdvb0FnQnNSdzBESUFrZ0JVRUNkQkFOSWdjMkF1Z3JJQWRGRFFNZ0FpZ0NEQ0FISUFVZ0FpZ0NBRUVDZEVHUXdBRnFLQUlBRVFVQUN5QURLQUlNSWdKRkRRQkJBQ0VFSUFJb0FoQWdCaWdDRUNJRElBSW9BZ0JCQW5SQjRMMEJhaWdDQUd4SERRSWdBMEVDZEJBTklnVkZEUUlnQWlnQ0RDQUZJQU1nQWlnQ0FFRUNkRUdnd0FGcUtBSUFFUVVBQWtBZ0JpZ0NFQ0lIUlEwQUlBa29BdEFySVFSQkFDRUxBa0FDUUNBSFFRUkpEUUFnQkVHMENHb2lEQ0FGSUFkQkFuUnFTUVJBSUFVZ0JDQUhRYmdJYkdwSkRRRUxJQVJCM0NGcUlRMGdCRUdrR1dvaERpQUVRZXdRYWlFUElBVWdCMEY4Y1NJR1FRSjBhaUVDSUFRZ0JrRzRDR3hxSVFSQkFDRURBMEFnRENBRFFiZ0liQ0lLYWlBRklBTkJBblJxL1FBQ0FDSVIvVm9DQUFBZ0NpQVBhaUFSL1ZvQ0FBRWdDaUFPYWlBUi9Wb0NBQUlnQ2lBTmFpQVIvVm9DQUFNZ0EwRUVhaUlESUFaSERRQUxJQVlnQjBZTkFnd0JDeUFGSVFKQkFDRUdDeUFISUFZaUEydEJCM0VpQ2dSQUEwQWdCQ0FDS0FJQU5nSzBDQ0FEUVFGcUlRTWdCRUc0Q0dvaEJDQUNRUVJxSVFJZ0MwRUJhaUlMSUFwSERRQUxDeUFHSUFkclFYaExEUUFEUUNBRUlBSW9BZ0EyQXJRSUlBUWdBaWdDQkRZQzdCQWdCQ0FDS0FJSU5nS2tHU0FFSUFJb0FndzJBdHdoSUFRZ0FpZ0NFRFlDbENvZ0JDQUNLQUlVTmdMTU1pQUVJQUlvQWhnMkFvUTdJQVFnQWlnQ0hEWUN2RU1nQkVIQXd3QnFJUVFnQWtFZ2FpRUNJQU5CQ0dvaUF5QUhSdzBBQ3dzZ0JSQUpDMEVCSVFRZ0VFRUJhaUlRSUFnb0FnaEpEUUFMQ3lBSVFSQnFKQUFnQkFzRUFFSi9DNzhKQVF0L0l3QkJFR3NpQlNRQUFuOGdBQ2dDQ0VFUVJnUkFJQUFvQXB3QklBQW9Bc3dCUVl3c2JHb01BUXNnQUNnQ0RBc2hCd0ovSUFKQkFVMEVRQ0FEUVFGQjJDTkJBQkFJUVFBTUFRc2dBU0FGUVF4cVFRSVFDaUFGS0FJTUJFQWdBMEVDUWZBc1FRQVFDRUVCREFFTElBSkJCazBFUUNBRFFRRkIyQ05CQUJBSVFRQU1BUXNnQVVFQ2FpQUZRUWhxUVFFUUNpQUhLQUw4S3lJSklRQUNRQUpBQWtBZ0J5Z0NnQ3dpQmtVTkFDQUZLQUlJSVFnRFFDQUFLQUlBSUFoR0RRRWdBRUVVYWlFQUlBUkJBV29pQkNBR1J3MEFDd3dCQ3lBRUlBWkhEUUVMSUFjb0FvUXNJQVpHQkg4Z0J5QUdRUXBxSWdBMkFvUXNJQWtnQUVFVWJCQVFJZ0JGQkVBZ0J5Z0MvQ3NRQ1NBSFFRQTJBb1FzSUFkQ0FEY0MvQ3NnQTBFQlFmSWpRUUFRQ0VFQURBTUxJQWNnQURZQy9Dc2dBQ0FIS0FLQUxDSUVRUlJzYWtFQUlBY29Bb1FzSUFSclFSUnNFQTRhSUFjb0F2d3JJUWtnQnlnQ2dDd0ZJQVlMUVJSc0lBbHFJUUJCQVNFTEN5QUFJQVVvQWdnMkFnQWdBVUVEYWlBRlFReHFRUUlRQ2lBRktBSU1CRUFnQTBFQ1FmQXNRUUFRQ0VFQkRBRUxJQUZCQldvZ0JVRUVha0VDRUFvZ0JTZ0NCQ0lFUVFKUEJFQWdBMEVDUWFnWFFRQVFDRUVCREFFTElBSkJCMnNoQmlBRUJFQWdBVUVIYWlFQ1FRQWhDUU5BSUFaQkFrMEVRQ0FEUVFGQjJDTkJBQkFJUVFBTUF3c2dBaUFGUVF4cVFRRVFDaUFGS0FJTVFRRkhCRUFnQTBFQ1FiSXFRUUFRQ0VFQkRBTUxJQUpCQVdvZ0JVRUNFQW9nQUNBRktBSUFJZ1JCLy84QmNTSUJOZ0lFSUFaQkEyc2lDQ0FFUVE5MlFRRnFJZ1lnQVd4QkFtb2lDa2tFUUNBRFFRRkIyQ05CQUJBSVFRQU1Bd3NnQWtFRGFpRUNRUUFoQkNBQkJFQURRQ0FDSUFWQkRHb2dCaEFLSUFRZ0JTZ0NERWNFUUNBRFFRSkIyaTlCQUJBSVFRRU1CUXNnQWlBR2FpRUNJQVJCQVdvaUJDQUFLQUlFU1EwQUN3c2dBaUFGUVFJUUNpQUZJQVVvQWdBaUJFSC8vd0Z4SWdFMkFnQWdBQ2dDQkNBQlJ3UkFJQU5CQWtIWUdFRUFFQWhCQVF3REN5QUlJQXBySWdvZ0JFRVBka0VCYWlJR0lBRnNRUU5xSWd4SkJFQWdBMEVCUWRnalFRQVFDRUVBREFNTElBSkJBbW9oQWtFQUlRUWdBUVJBQTBBZ0FpQUZRUXhxSUFZUUNpQUVJQVVvQWd4SEJFQWdBMEVDUWRvdlFRQVFDRUVCREFVTElBSWdCbW9oQWlBRVFRRnFJZ1FnQUNnQ0JFa05BQXNMSUFJZ0JVRU1ha0VERUFvZ0JTZ0NEQ0VHSUFCQ0FEY0NDQ0FBSUFaQmdJQUVjVVVnQUMwQUVFSCtBWEZ5T2dBUUlBVWdCa0gvQVhFaUNEWUNDQUpBSUFoRkRRQWdCeWdDOUNzaURRUkFJQWNvQXZBcklRUkJBQ0VCQTBBZ0NDQUVLQUlJUmdSQUlBQWdCRFlDQ0F3REN5QUVRUlJxSVFRZ0FVRUJhaUlCSUExSERRQUxDeUFEUVFGQjJDTkJBQkFJUVFBTUF3c2dCU0FHUVFoMlFmOEJjU0lHTmdJSUFrQWdCa1VOQUNBSEtBTDBLeUlJQkVBZ0J5Z0M4Q3NoQkVFQUlRRURRQ0FHSUFRb0FnaEdCRUFnQUNBRU5nSU1EQU1MSUFSQkZHb2hCQ0FCUVFGcUlnRWdDRWNOQUFzTElBTkJBVUhZSTBFQUVBaEJBQXdEQ3lBS0lBeHJJUVlnQWtFRGFpRUNJQWxCQVdvaUNTQUZLQUlFU1EwQUN3c2dCZ1JBSUFOQkFVSFlJMEVBRUFoQkFBd0JDMEVCSUF0RkRRQWFJQWNnQnlnQ2dDeEJBV28yQW9Bc1FRRUxJUTRnQlVFUWFpUUFJQTRMOVFFQkJYOGpBRUVRYXlJRUpBQUNRQ0FDSUFBb0FrZ29BaEFpQmtFQ2FrY0VRQ0FEUVFGQjhDSkJBQkFJREFFTElBRWdCRUVNYWtFQ0VBb2dCaUFFS0FJTVJ3UkFJQU5CQVVId0lrRUFFQWdNQVFzZ0JrVUVRRUVCSVFVTUFRc2dBVUVDYWlFQ0lBQW9Ba2dvQWhnaEFFRUFJUUVEUUNBQ0lBUkJDR3BCQVJBS0lBQWdCQ2dDQ0NJRlFmOEFjU0lIUVFGcUlnZzJBaGdnQUNBRlFRZDJRUUZ4TmdJZ0lBZEJIMDhFUUNBRUlBZzJBZ1FnQkNBQk5nSUFJQU5CQVVISDh3QWdCQkFJUVFBaEJRd0NDeUFBUVRScUlRQkJBU0VGSUFKQkFXb2hBaUFCUVFGcUlnRWdCa2NOQUFzTElBUkJFR29rQUNBRkM1Z0ZBUXAvSXdCQkVHc2lCeVFBQW44Z0FDZ0NDRUVRUmdSQUlBQW9BcHdCSUFBb0Fzd0JRWXdzYkdvTUFRc2dBQ2dDREFzaEJRSi9JQUpCQVUwRVFDQURRUUZCOFI1QkFCQUlRUUFNQVFzZ0FTQUhRUXhxUVFJUUNnSkFJQWNvQWd3RVFDQURRUUpCaGh0QkFCQUlEQUVMSUFKQkJrMEVRQ0FEUVFGQjhSNUJBQkFJUVFBTUFnc2dBVUVDYWlBSFFReHFRUUlRQ2lBRktBTHdLeUVFSUFjdEFBd2hDZ0pBQWtBQ1FDQUZLQUwwS3lJR1JRUkFJQVFoQUF3QkN5QUVJUUFEUUNBQUtBSUlJQXBHRFFFZ0FFRVVhaUVBSUFoQkFXb2lDQ0FHUncwQUN3d0JDeUFHSUFoSERRRUxJQVVvQXZncklBWkdCRUFnQlNBR1FRcHFJZ0EyQXZncklBUWdBRUVVYkJBUUlRQWdCU2dDOENzaEJDQUFSUVJBSUFRUUNTQUZRUUEyQXZncklBVkNBRGNDOENzZ0EwRUJRWXNmUVFBUUNFRUFEQVFMQWtBZ0FDQUVSZzBBSUFVb0FvQXNJZ3RGRFFBZ0JTZ0MvQ3NoREVFQUlRZ0RRQ0FNSUFoQkZHeHFJZ1lvQWdnaUNRUkFJQVlnQUNBSklBUnJhallDQ0FzZ0JpZ0NEQ0lKQkVBZ0JpQUFJQWtnQkd0cU5nSU1DeUFJUVFGcUlnZ2dDMGNOQUFzTElBVWdBRFlDOENzZ0FDQUZLQUwwS3lJRVFSUnNha0VBSUFVb0F2Z3JJQVJyUVJSc0VBNGFJQVVvQXZRcklRWWdCU2dDOENzaEJBc2dCU0FHUVFGcU5nTDBLeUFFSUFaQkZHeHFJUUFMSUFBb0Fnd2lCQVJBSUFRUUNTQUFRZ0EzQWd3TElBQWdDallDQ0NBQUlBY29BZ3dpQkVFS2RrRURjVFlDQUNBQUlBUkJDSFpCQTNFMkFnUWdBVUVFYWlBSFFReHFRUUlRQ2lBSEtBSU1CRUFnQTBFQ1FiMFdRUUFRQ0F3QkN5QUFJQUpCQm1zaUFoQU5JZ1EyQWd3Z0JFVUVRQ0FEUVFGQjhSNUJBQkFJUVFBTUFnc2dCQ0FCUVFacUlBSVFDeG9nQUNBQ05nSVFDMEVCQ3lFTklBZEJFR29rQUNBTkN5Y0FRUUVoQVNBQ0lBQW9Ba2dvQWhCQkFuUkhCSDhnQTBFQlFkY2hRUUFRQ0VFQUJVRUJDd3VyQXdFRmZ5TUFRUkJySWdZa0FBSi9JQUpCQVUwRVFDQURRUUZCL1IxQkFCQUlRUUFNQVFzZ0FDMEF2QUZCQVhFRVFDQURRUUZCbWQ0QVFRQVFDRUVBREFFTElBQW9BcHdCSUFBb0Fzd0JRWXdzYkdvaUFDQUFMUUNJTEVFQ2Nqb0FpQ3dnQVNBR1FReHFRUUVRQ2dKQUlBQW9BcXdvSWdSRkJFQWdBQ0FHS0FJTVFRRnFJZ1ZCQ0JBTUlnUTJBcXdvSUFSRkJFQWdBMEVCUVpjZVFRQVFDRUVBREFNTElBQWdCVFlDcUNnTUFRc2dCaWdDRENJRklBQW9BcWdvU1EwQUlBUWdCVUVCYWlJRVFRTjBFQkFpQlVVRVFDQURRUUZCbHg1QkFCQUlRUUFNQWdzZ0FDQUZOZ0tzS0NBRklBQW9BcWdvSWdkQkEzUnFRUUFnQkNBSGEwRURkQkFPR2lBQUlBUTJBcWdvSUFBb0Fxd29JUVFMSUFRZ0JpZ0NEQ0lGUVFOMGFpZ0NBQVJBSUFZZ0JUWUNBQ0FEUVFGQnZUVWdCaEFJUVFBTUFRc2dBa0VCYXlJQ0VBMGhCQ0FBS0FLc0tDSUFJQVlvQWd3aUJVRURkR29nQkRZQ0FDQUVSUVJBSUFOQkFVR1hIa0VBRUFoQkFBd0JDeUFBSUFWQkEzUnFJQUkyQWdRZ0FDQUdLQUlNUVFOMGFpZ0NBQ0FCUVFGcUlBSVFDeHBCQVFzaENDQUdRUkJxSkFBZ0NBdjFBZ0VGZnlNQVFSQnJJZ1lrQUFKL0lBSkJBVTBFUUNBRFFRRkJwQ0JCQUJBSVFRQU1BUXNnQUNBQUxRQzhBVUVCY2pvQXZBRWdBU0FHUVF4cVFRRVFDZ0pBSUFBb0FuUWlCRVVFUUNBQUlBWW9BZ3hCQVdvaUJVRUlFQXdpQkRZQ2RDQUVSUVJBSUFOQkFVRytJRUVBRUFoQkFBd0RDeUFBSUFVMkFuQU1BUXNnQmlnQ0RDSUZJQUFvQW5CSkRRQWdCQ0FGUVFGcUlnUkJBM1FRRUNJRlJRUkFJQU5CQVVHK0lFRUFFQWhCQUF3Q0N5QUFJQVUyQW5RZ0JTQUFLQUp3SWdkQkEzUnFRUUFnQkNBSGEwRURkQkFPR2lBQUlBUTJBbkFnQUNnQ2RDRUVDeUFFSUFZb0Fnd2lCVUVEZEdvb0FnQUVRQ0FHSUFVMkFnQWdBMEVCUWRNMUlBWVFDRUVBREFFTElBSkJBV3NpQWhBTklRUWdBQ2dDZENJQUlBWW9BZ3dpQlVFRGRHb2dCRFlDQUNBRVJRUkFJQU5CQVVHK0lFRUFFQWhCQUF3QkN5QUFJQVZCQTNScUlBSTJBZ1FnQUNBR0tBSU1RUU4wYWlnQ0FDQUJRUUZxSUFJUUN4cEJBUXNoQ0NBR1FSQnFKQUFnQ0F1Z0FRRUVmeU1BUVJCcklnUWtBQUovSUFKRkJFQWdBMEVCUWRjZVFRQVFDRUVBREFFTElBRWdCRUVNYWtFQkVBcEJBU0FDUVFGcklnVkZEUUFhUVFBaEFFRUFJUUlEUUNBQlFRRnFJZ0VnQkVFSWFrRUJFQW9nQkNnQ0NDSUdRUmgwUVI5MUlBWkIvd0J4SUFKeVFRZDBjU0VDSUFCQkFXb2lBQ0FGUncwQUMwRUJJQUpGRFFBYUlBTkJBVUhYSGtFQUVBaEJBQXNoQnlBRVFSQnFKQUFnQndzYkFFRUJJUUFnQWdSL1FRRUZJQU5CQVVIK0lFRUFFQWhCQUFzTGdBRUJBWDhqQUVFUWF5SUFKQUJCQVNFRUFrQWdBa0VCVFFSQVFRQWhCQ0FEUVFGQjVDQkJBQkFJREFFTElBRWdBRUVNYWtFQkVBb2dBVUVCYWlBQVFRaHFRUUVRQ2lBQ1FRSnJJQUFvQWdnaUFVRUZka0VDY1NBQlFRUjJRUU54YWtFQ2FuQkZEUUJCQUNFRUlBTkJBVUhrSUVFQUVBZ0xJQUJCRUdva0FDQUVDd1FBUVFBTEMvbTdBUndBUVlBSUM2RjFZMkZ1Ym05MElHRnNiRzlqWVhSbElHOXdhbDkwWTJSZmMyVm5YMlJoZEdGZlkyaDFibXRmZENvZ1lYSnlZWGtBTFNzZ0lDQXdXREI0QUMwd1dDc3dXQ0F3V0Mwd2VDc3dlQ0F3ZUFCVmJtdHViM2R1SUdadmNtMWhkQUJHWVdsc1pXUWdkRzhnYzJWMElIUm9aU0JrWldOdlpHVmtJR052YlhCdmJtVnVkSE1BUm1GcGJHVmtJSFJ2SUhObGRIVndJSFJvWlNCa1pXTnZaR1Z5QUVaaGFXeGxaQ0IwYnlCeVpXRmtJSFJvWlNCb1pXRmtaWElBYm1GdUFDcHNYM1JwYkdWZmJHVnVJRDRnVlVsT1ZGOU5RVmdnTFNCUFVFcGZRMDlOVFU5T1gwTkNURXRmUkVGVVFWOUZXRlJTUVNBdElIQmZhakpyTFQ1dFgzTndaV05wWm1salgzQmhjbUZ0TG0xZlpHVmpiMlJsY2k1dFgzTnZkRjlzWlc1bmRHZ0FhVzVtQUVaaGFXeGxaQ0IwYnlCa1pXTnZaR1VnZEdobElHbHRZV2RsQUVsdWRtRnNhV1FnWVdOalpYTnpJSFJ2SUhCcExUNXBibU5zZFdSbEFFRk1URjlEVUZWVEFFOVFTbDlPVlUxZlZFaFNSVUZFVXdCT1FVNEFTVTVHQUhCZmFqSnJMVDV0WDNOd1pXTnBabWxqWDNCaGNtRnRMbTFmWkdWamIyUmxjaTV0WDNOdmRGOXNaVzVuZEdnZ1BpQlZTVTVVWDAxQldDQXRJRTlRU2w5RFQwMU5UMDVmUTBKTVMxOUVRVlJCWDBWWVZGSkJBQWtKQ1NCd2NtVmpZMmx1ZEhOcGVtVWdLSGNzYUNrOUFBa0pDU0J6ZEdWd2MybDZaWE1nS0cwc1pTazlBQzRBS0c1MWJHd3BBQ2dsWkN3bFpDa2dBQ1Z6ZlFvQUNRa2dmUW9BVzBSRlZsMGdSSFZ0Y0NCaGJpQnBiV0ZuWlY5amIyMXdYMmhsWVdSbGNpQnpkSEoxWTNRZ2V3b0FXMFJGVmwwZ1JIVnRjQ0JoYmlCcGJXRm5aVjlvWldGa1pYSWdjM1J5ZFdOMElIc0tBRWx0WVdkbElHbHVabThnZXdvQUNTQmtaV1poZFd4MElIUnBiR1VnZXdvQUpYTUpJR052YlhCdmJtVnVkQ0FsWkNCN0NnQUpDU0JqYjIxd0lDVmtJSHNLQUFrZ1ZHbHNaU0JwYm1SbGVEb2dld29BQ1NCTllYSnJaWElnYkdsemREb2dld29BUTI5a1pYTjBjbVZoYlNCcGJtUmxlQ0JtY205dElHMWhhVzRnYUdWaFpHVnlPaUI3Q2dCRGIyUmxjM1J5WldGdElHbHVabThnWm5KdmJTQnRZV2x1SUdobFlXUmxjam9nZXdvQVUzUnlaV0Z0SUdWeWNtOXlJSGRvYVd4bElISmxZV1JwYm1jZ1NsQXlJRWhsWVdSbGNpQmliM2dLQUVadmRXNWtJR0VnYldsemNHeGhZMlZrSUNjbFl5VmpKV01sWXljZ1ltOTRJRzkxZEhOcFpHVWdhbkF5YUNCaWIzZ0tBRTFoYkdadmNtMWxaQ0JLVURJZ1ptbHNaU0JtYjNKdFlYUTZJR1pwY25OMElHSnZlQ0J0ZFhOMElHSmxJRXBRUlVjZ01qQXdNQ0J6YVdkdVlYUjFjbVVnWW05NENnQk5ZV3htYjNKdFpXUWdTbEF5SUdacGJHVWdabTl5YldGME9pQnpaV052Ym1RZ1ltOTRJRzExYzNRZ1ltVWdabWxzWlNCMGVYQmxJR0p2ZUFvQVRtOTBJR1Z1YjNWbmFDQnRaVzF2Y25rZ2RHOGdhR0Z1Wkd4bElHcHdaV2N5TURBd0lHSnZlQW9BVG05MElHVnViM1ZuYUNCdFpXMXZjbmtnZDJsMGFDQkdWRmxRSUVKdmVBb0FRU0J0WVhKclpYSWdTVVFnZDJGeklHVjRjR1ZqZEdWa0lDZ3dlR1ptTFMwcElHbHVjM1JsWVdRZ2IyWWdKUzQ0ZUFvQUNRa2diV04wUFNWNENnQUpDUWtnWTJKc2EzTjBlVDBsSTNnS0FBa0pDU0JqYzNSNVBTVWplQW9BQ1FrZ2NISm5QU1VqZUFvQVNXNTBaV2RsY2lCdmRtVnlabXh2ZHdvQUNTQjBaSGc5SlhVc0lIUmtlVDBsZFFvQUNTQjBkejBsZFN3Z2RHZzlKWFVLQUFrZ2RIZ3dQU1YxTENCMGVUQTlKWFVLQUVsdWRtRnNhV1FnWTI5dGNHOXVaVzUwSUdsdVpHVjRPaUFsZFFvQVUzUnlaV0Z0SUhSdmJ5QnphRzl5ZEFvQVRXRnlhMlZ5SUdoaGJtUnNaWElnWm5WdVkzUnBiMjRnWm1GcGJHVmtJSFJ2SUhKbFlXUWdkR2hsSUcxaGNtdGxjaUJ6WldkdFpXNTBDZ0JPYjNRZ1pXNXZkV2RvSUcxbGJXOXllU0JtYjNJZ1kzVnljbVZ1ZENCd2NtVmphVzVqZENCamIyUmxZbXh2WTJzZ1pXeGxiV1Z1ZEFvQVJYSnliM0lnY21WaFpHbHVaeUJUVUVOdlpDQlRVRU52WXlCbGJHVnRaVzUwQ2dCRmNuSnZjaUJ5WldGa2FXNW5JRk5SWTJRZ2IzSWdVMUZqWXlCbGJHVnRaVzUwQ2dCQklFSlFRME1nYUdWaFpHVnlJR0p2ZUNCcGN5QmhkbUZwYkdGaWJHVWdZV3gwYUc5MVoyZ2dRbEJESUdkcGRtVnVJR0o1SUhSb1pTQkpTRVJTSUdKdmVDQW9KV1FwSUdsdVpHbGpZWFJsSUdOdmJYQnZibVZ1ZEhNZ1ltbDBJR1JsY0hSb0lHbHpJR052Ym5OMFlXNTBDZ0JGY25KdmNpQjNhWFJvSUZOSldpQnRZWEpyWlhJNklHbHNiR1ZuWVd3Z2RHbHNaU0J2Wm1aelpYUUtBRWx1ZG1Gc2FXUWdjSEpsWTJsdVkzUUtBRTV2ZENCbGJtOTFaMmdnYldWdGIzSjVJSFJ2SUdoaGJtUnNaU0JpWVc1a0lIQnlaV05wYm5SekNnQkdZV2xzWldRZ2RHOGdaR1ZqYjJSbElHRnNiQ0IxYzJWa0lHTnZiWEJ2Ym1WdWRITUtBRk5wZW1VZ2IyWWdZMjlrWlNCaWJHOWpheUJrWVhSaElHVjRZMlZsWkhNZ2MzbHpkR1Z0SUd4cGJXbDBjd29BVTJsNlpTQnZaaUIwYVd4bElHUmhkR0VnWlhoalpXVmtjeUJ6ZVhOMFpXMGdiR2x0YVhSekNnQkRZVzV1YjNRZ2RHRnJaU0JwYmlCamFHRnlaMlVnYlhWc2RHbHdiR1VnVFVOVUlHMWhjbXRsY25NS0FFTnZjbkoxY0hSbFpDQlFVRTBnYldGeWEyVnljd29BVG05MElHVnViM1ZuYUNCdFpXMXZjbmtnWm05eUlIUnBiR1VnY21WemIyeDFkR2x2Ym5NS0FFTmhibTV2ZENCMFlXdGxJR2x1SUdOb1lYSm5aU0J0ZFd4MGFYQnNaU0JqYjJ4c1pXTjBhVzl1Y3dvQVNXNTJZV3hwWkNCUVEweFNJR0p2ZUM0Z1VtVndiM0owY3lBd0lIQmhiR1YwZEdVZ1kyOXNkVzF1Y3dvQVYyVWdaRzhnYm05MElITjFjSEJ2Y25RZ1VrOUpJR2x1SUdSbFkyOWthVzVuSUVoVUlHTnZaR1ZpYkc5amEzTUtBRU5oYm01dmRDQm9ZVzVrYkdVZ1ltOTRJRzltSUhWdVpHVm1hVzVsWkNCemFYcGxjd29BUTJGdWJtOTBJSFJoYTJVZ2FXNGdZMmhoY21kbElHTnZiR3hsWTNScGIyNXpJSGRwZEdodmRYUWdjMkZ0WlNCdWRXMWlaWElnYjJZZ2FXNWthWGhsY3dvQVNXNTJZV3hwWkNCMGFXeGxZeTArZDJsdVgzaDRlQ0IyWVd4MVpYTUtBRU5oYm01dmRDQm9ZVzVrYkdVZ1ltOTRJRzltSUd4bGMzTWdkR2hoYmlBNElHSjVkR1Z6Q2dCRFlXNXViM1FnYUdGdVpHeGxJRmhNSUdKdmVDQnZaaUJzWlhOeklIUm9ZVzRnTVRZZ1lubDBaWE1LQUVOdmJYQnZibVZ1ZENCcGJtUmxlQ0FsZFNCMWMyVmtJSE5sZG1WeVlXd2dkR2x0WlhNS0FFbHVkbUZzYVdRZ1VFTk1VaUJpYjNndUlGSmxjRzl5ZEhNZ0pXUWdaVzUwY21sbGN3b0FUbTkwSUdWdWIzVm5hQ0J0WlcxdmNua2dkRzhnWTNKbFlYUmxJRlJoWnkxMGNtVmxJRzV2WkdWekNnQkRZVzV1YjNRZ2RHRnJaU0JwYmlCamFHRnlaMlVnYldOMElHUmhkR0VnZDJsMGFHbHVJRzExYkhScGNHeGxJRTFEVkNCeVpXTnZjbVJ6Q2dCRFlXNXViM1FnWkdWamIyUmxJSFJwYkdVc0lHMWxiVzl5ZVNCbGNuSnZjZ29BYjNCcVgyb3lhMTloY0hCc2VWOXVZbDkwYVd4bFgzQmhjblJ6WDJOdmNuSmxZM1JwYjI0Z1pYSnliM0lLQUZCeWIySnNaVzBnZDJsMGFDQnphMmx3Y0dsdVp5QktVRVZITWpBd01DQmliM2dzSUhOMGNtVmhiU0JsY25KdmNnb0FVSEp2WW14bGJTQjNhWFJvSUhKbFlXUnBibWNnU2xCRlJ6SXdNREFnWW05NExDQnpkSEpsWVcwZ1pYSnliM0lLQUZWdWEyNXZkMjRnYldGeWEyVnlDZ0JPYjNRZ1pXNXZkV2RvSUcxbGJXOXllU0IwYnlCaFpHUWdkR3dnYldGeWEyVnlDZ0JPYjNRZ1pXNXZkV2RvSUcxbGJXOXllU0IwYnlCaFpHUWdiV2dnYldGeWEyVnlDZ0JPYjNRZ1pXNXZkV2RvSUcxbGJXOXllU0IwYnlCMFlXdGxJR2x1SUdOb1lYSm5aU0JUU1ZvZ2JXRnlhMlZ5Q2dCRmNuSnZjaUJ5WldGa2FXNW5JRkJRVkNCdFlYSnJaWElLQUU1dmRDQmxibTkxWjJnZ2JXVnRiM0o1SUhSdklISmxZV1FnVUZCVUlHMWhjbXRsY2dvQVJYSnliM0lnY21WaFpHbHVaeUJUVDFRZ2JXRnlhMlZ5Q2dCRmNuSnZjaUJ5WldGa2FXNW5JRkJNVkNCdFlYSnJaWElLQUVWeWNtOXlJSEpsWVdScGJtY2dUVU5VSUcxaGNtdGxjZ29BVG05MElHVnViM1ZuYUNCdFpXMXZjbmtnZEc4Z2NtVmhaQ0JOUTFRZ2JXRnlhMlZ5Q2dCT2IzUWdaVzV2ZFdkb0lITndZV05sSUdadmNpQmxlSEJsWTNSbFpDQlRUMUFnYldGeWEyVnlDZ0JGZUhCbFkzUmxaQ0JUVDFBZ2JXRnlhMlZ5Q2dCRmNuSnZjaUJ5WldGa2FXNW5JRTFEVHlCdFlYSnJaWElLQUVWeWNtOXlJSEpsWVdScGJtY2dVa2RPSUcxaGNtdGxjZ29BUlhKeWIzSWdjbVZoWkdsdVp5QlFVRTBnYldGeWEyVnlDZ0JPYjNRZ1pXNXZkV2RvSUcxbGJXOXllU0IwYnlCeVpXRmtJRkJRVFNCdFlYSnJaWElLQUVWeWNtOXlJSEpsWVdScGJtY2dWRXhOSUcxaGNtdGxjZ29BUlhKeWIzSWdjbVZoWkdsdVp5QlFURTBnYldGeWEyVnlDZ0JPYjNRZ1pXNXZkV2RvSUhOd1lXTmxJR1p2Y2lCbGVIQmxZM1JsWkNCRlVFZ2diV0Z5YTJWeUNnQkZlSEJsWTNSbFpDQkZVRWdnYldGeWEyVnlDZ0JGY25KdmNpQnlaV0ZrYVc1bklFTlNSeUJ0WVhKclpYSUtBRlZ1YTI1dmQyNGdjSEp2WjNKbGMzTnBiMjRnYjNKa1pYSWdhVzRnUTA5RUlHMWhjbXRsY2dvQVZXNXJibTkzYmlCVFkyOWtJSFpoYkhWbElHbHVJRU5QUkNCdFlYSnJaWElLQUVWeWNtOXlJSEpsWVdScGJtY2dRMDlFSUcxaGNtdGxjZ29BUlhKeWIzSWdjbVZoWkdsdVp5QlJRMFFnYldGeWEyVnlDZ0JEY25KdmNpQnlaV0ZrYVc1bklFTkNSQ0J0WVhKclpYSUtBRVZ5Y205eUlISmxZV1JwYm1jZ1VFOURJRzFoY210bGNnb0FSWEp5YjNJZ2NtVmhaR2x1WnlCRFQwTWdiV0Z5YTJWeUNnQkZjbkp2Y2lCeVpXRmthVzVuSUZGRFF5QnRZWEpyWlhJS0FFVnljbTl5SUhKbFlXUnBibWNnVFVORElHMWhjbXRsY2dvQVRtOTBJR1Z1YjNWbmFDQnRaVzF2Y25rZ2RHOGdjbVZoWkNCTlEwTWdiV0Z5YTJWeUNnQnlaWEYxYVhKbFpDQlRTVm9nYldGeWEyVnlJRzV2ZENCbWIzVnVaQ0JwYmlCdFlXbHVJR2hsWVdSbGNnb0FjbVZ4ZFdseVpXUWdRMDlFSUcxaGNtdGxjaUJ1YjNRZ1ptOTFibVFnYVc0Z2JXRnBiaUJvWldGa1pYSUtBSEpsY1hWcGNtVmtJRkZEUkNCdFlYSnJaWElnYm05MElHWnZkVzVrSUdsdUlHMWhhVzRnYUdWaFpHVnlDZ0JPYjNRZ1pXNXZkV2RvSUcxbGJXOXllU0IwYnlCb1lXNWtiR1VnYW5CbFp6SXdNREFnWm1sc1pTQm9aV0ZrWlhJS0FFNXZkQ0JsYm05MVoyZ2diV1Z0YjNKNUlIUnZJSEpsWVdRZ2FHVmhaR1Z5Q2dCRmNuSnZjaUIzYVhSb0lFcFFJRk5wWjI1aGRIVnlaU0E2SUdKaFpDQnRZV2RwWXlCdWRXMWlaWElLQUVsdUlGTlBWQ0J0WVhKclpYSXNJRlJRVTI5MElDZ2xaQ2tnYVhNZ2JtOTBJSFpoYkdsa0lISmxaMkZ5WkhNZ2RHOGdkR2hsSUdOMWNuSmxiblFnYm5WdFltVnlJRzltSUhScGJHVXRjR0Z5ZENBb0pXUXBMQ0JuYVhacGJtY2dkWEFLQUVsdUlGTlBWQ0J0WVhKclpYSXNJRlJRVTI5MElDZ2xaQ2tnYVhNZ2JtOTBJSFpoYkdsa0lISmxaMkZ5WkhNZ2RHOGdkR2hsSUhCeVpYWnBiM1Z6SUc1MWJXSmxjaUJ2WmlCMGFXeGxMWEJoY25RZ0tDVmtLU3dnWjJsMmFXNW5JSFZ3Q2dCSmJpQlRUMVFnYldGeWEyVnlMQ0JVVUZOdmRDQW9KV1FwSUdseklHNXZkQ0IyWVd4cFpDQnlaV2RoY21SeklIUnZJSFJvWlNCamRYSnlaVzUwSUc1MWJXSmxjaUJ2WmlCMGFXeGxMWEJoY25RZ0tHaGxZV1JsY2lrZ0tDVmtLU3dnWjJsMmFXNW5JSFZ3Q2dCMGFXeGxjeUJ5WlhGMWFYSmxJR0YwSUd4bFlYTjBJRzl1WlNCeVpYTnZiSFYwYVc5dUNnQk5ZWEpyWlhJZ2FYTWdibTkwSUdOdmJYQnNhV0Z1ZENCM2FYUm9JR2wwY3lCd2IzTnBkR2x2YmdvQVVISnZZbXhsYlNCM2FYUm9JSE5sWldzZ1puVnVZM1JwYjI0S0FFVnljbTl5SUhKbFlXUnBibWNnVTFCRGIyUWdVMUJEYjJNZ1pXeGxiV1Z1ZEN3Z1NXNTJZV3hwWkNCallteHJkeTlqWW14cmFDQmpiMjFpYVc1aGRHbHZiZ29BU1c1MllXeHBaQ0J0ZFd4MGFYQnNaU0JqYjIxd2IyNWxiblFnZEhKaGJuTm1iM0p0WVhScGIyNEtBRU5oYm01dmRDQjBZV3RsSUdsdUlHTm9ZWEpuWlNCamIyeHNaV04wYVc5dWN5QnZkR2hsY2lCMGFHRnVJR0Z5Y21GNUlHUmxZMjl5Y21Wc1lYUnBiMjRLQUZSdmJ5QnNZWEpuWlNCMllXeDFaU0JtYjNJZ1RuQndiUW9BVG05MElHVnViM1ZuYUNCaWVYUmxjeUIwYnlCeVpXRmtJRTV3Y0cwS0FHSmhaQ0J3YkdGalpXUWdhbkJsWnlCamIyUmxjM1J5WldGdENnQUpJRTFoYVc0Z2FHVmhaR1Z5SUhOMFlYSjBJSEJ2YzJsMGFXOXVQU1ZzYkdrS0NTQk5ZV2x1SUdobFlXUmxjaUJsYm1RZ2NHOXphWFJwYjI0OUpXeHNhUW9BVFdGeWEyVnlJSE5wZW1VZ2FXNWpiMjV6YVhOMFpXNTBJSGRwZEdnZ2MzUnlaV0Z0SUd4bGJtZDBhQW9BVkdsc1pTQndZWEowSUd4bGJtZDBhQ0J6YVhwbElHbHVZMjl1YzJsemRHVnVkQ0IzYVhSb0lITjBjbVZoYlNCc1pXNW5kR2dLQUVOaGJtNXZkQ0IwWVd0bElHbHVJR05vWVhKblpTQnRkV3gwYVhCc1pTQmtZWFJoSUhOd1lXNXVhVzVuQ2dCWGNtOXVaeUJtYkdGbkNnQkZjbkp2Y2lCM2FYUm9JRVpVV1ZBZ2MybG5ibUYwZFhKbElFSnZlQ0J6YVhwbENnQkZjbkp2Y2lCM2FYUm9JRXBRSUhOcFoyNWhkSFZ5WlNCQ2IzZ2djMmw2WlFvQVNXNTJZV3hwWkNCd2NtVmphVzVqZENCemFYcGxDZ0JKYm1OdmJuTnBjM1JsYm5RZ2JXRnlhMlZ5SUhOcGVtVUtBRWx1ZG1Gc2FXUWdiV0Z5YTJWeUlITnBlbVVLQUVWeWNtOXlJSGRwZEdnZ1UwbGFJRzFoY210bGNpQnphWHBsQ2dCT2IzUWdaVzV2ZFdkb0lHMWxiVzl5ZVNCMGJ5QmhaR1FnWVNCdVpYY2dkbUZzYVdSaGRHbHZiaUJ3Y205alpXUjFjbVVLQUU1dmRDQmxibTkxWjJnZ2JXVnRiM0o1SUhSdklHUmxZMjlrWlNCMGFXeGxDZ0JHWVdsc1pXUWdkRzhnWkdWamIyUmxJSFJvWlNCamIyUmxjM1J5WldGdElHbHVJSFJvWlNCS1VESWdabWxzWlFvQVEyRnVibTkwSUhSaGEyVWdhVzRnWTJoaGNtZGxJR052Ykd4bFkzUnBiMjV6SUhkcGRHZ2dhVzVrYVhnZ2MyaDFabVpzWlFvQVEyRnVibTkwSUdGc2JHOWpZWFJsSUZScFpYSWdNU0JvWVc1a2JHVUtBRTV2SUdSbFkyOWtaV1FnWVhKbFlTQndZWEpoYldWMFpYSnpMQ0J6WlhRZ2RHaGxJR1JsWTI5a1pXUWdZWEpsWVNCMGJ5QjBhR1VnZDJodmJHVWdhVzFoWjJVS0FFNXZkQ0JsYm05MVoyZ2diV1Z0YjNKNUlIUnZJR055WldGMFpTQlVZV2N0ZEhKbFpRb0FUbTkwSUdWdWIzVm5hQ0J0WlcxdmNua2dkRzhnY21WcGJtbDBhV0ZzYVhwbElIUm9aU0IwWVdjZ2RISmxaUW9BUlhKeWIzSWdjbVZoWkdsdVp5QlRVRU52WkNCVFVFTnZZeUJsYkdWdFpXNTBMQ0JKYm5aaGJHbGtJSFJ5WVc1elptOXliV0YwYVc5dUlHWnZkVzVrQ2dCRmNuSnZjaUJ5WldGa2FXNW5JRk5RUTI5a0lGTlFRMjlqSUdWc1pXMWxiblF1SUZWdWMzVndjRzl5ZEdWa0lFMXBlR1ZrSUVoVUlHTnZaR1V0WW14dlkyc2djM1I1YkdVZ1ptOTFibVFLQUZScGJHVWdXU0JqYjI5eVpHbHVZWFJsY3lCaGNtVWdibTkwSUhOMWNIQnZjblJsWkFvQVZHbHNaU0JZSUdOdmIzSmthVzVoZEdWeklHRnlaU0J1YjNRZ2MzVndjRzl5ZEdWa0NnQkpiV0ZuWlNCamIyOXlaR2x1WVhSbGN5QmhZbTkyWlNCSlRsUmZUVUZZSUdGeVpTQnViM1FnYzNWd2NHOXlkR1ZrQ2dCS1VFVkhNakF3TUNCSVpXRmtaWElnWW05NElHNXZkQ0J5WldGa0lIbGxkQ3dnSnlWakpXTWxZeVZqSnlCaWIzZ2dkMmxzYkNCaVpTQnBaMjV2Y21Wa0NnQnZjR3BmYWpKclgyMWxjbWRsWDNCd2RDZ3BJR2hoY3lCaGJISmxZV1I1SUdKbFpXNGdZMkZzYkdWa0NnQk9iM1FnWlc1dmRXZG9JRzFsYlc5eWVTQjBieUJ5WldGa0lGTlBWQ0J0WVhKclpYSXVJRlJwYkdVZ2FXNWtaWGdnWVd4c2IyTmhkR2x2YmlCbVlXbHNaV1FLQUVsbmJtOXlhVzVuSUdsb1pISWdZbTk0TGlCR2FYSnpkQ0JwYUdSeUlHSnZlQ0JoYkhKbFlXUjVJSEpsWVdRS0FGcHdjSFFnSlhVZ1lXeHlaV0ZrZVNCeVpXRmtDZ0JhY0hCdElDVjFJR0ZzY21WaFpIa2djbVZoWkFvQVVGUkZVazBnWTJobFkyc2dabUZwYkhWeVpUb2dKV1FnYzNsdWRHaGxkR2w2WldRZ01IaEdSaUJ0WVhKclpYSnpJSEpsWVdRS0FBa0pDU0JqWW14cmR6MHlYaVZrQ2dBSkNRa2dZMkpzYTJnOU1sNGxaQW9BQ1FrSklIRnVkSE4wZVQwbFpBb0FKWE1nWkhnOUpXUXNJR1I1UFNWa0NnQUpDUWtnY205cGMyaHBablE5SldRS0FBa0pDU0J1ZFcxblltbDBjejBsWkFvQUNRa2diblZ0YkdGNVpYSnpQU1ZrQ2dBbGN5QnVkVzFqYjIxd2N6MGxaQW9BYjNCcVgycHdNbDloY0hCc2VWOWpaR1ZtT2lCaFkyNDlKV1FzSUc1MWJXTnZiWEJ6UFNWa0NnQnZjR3BmYW5BeVgyRndjR3g1WDJOa1pXWTZJR051UFNWa0xDQnVkVzFqYjIxd2N6MGxaQW9BQ1FrSklHNTFiWEpsYzI5c2RYUnBiMjV6UFNWa0NnQUpDU0IwZVhCbFBTVWplQ3dnY0c5elBTVnNiR2tzSUd4bGJqMGxaQW9BSlhNZ2MyZHVaRDBsWkFvQUNRa0pJSEZ0Wm1KcFpEMGxaQW9BSlhNZ2NISmxZejBsWkFvQUNRa2dibUlnYjJZZ2RHbHNaUzF3WVhKMElHbHVJSFJwYkdVZ1d5VmtYVDBsWkFvQUpYTWdlREU5SldRc0lIa3hQU1ZrQ2dBbGN5QjRNRDBsWkN3Z2VUQTlKV1FLQUVaaGFXeGxaQ0IwYnlCa1pXTnZaR1VnZEdsc1pTQWxaQzhsWkFvQVUyVjBkR2x1WnlCa1pXTnZaR2x1WnlCaGNtVmhJSFJ2SUNWa0xDVmtMQ1ZrTENWa0NnQkdZV2xzWldRZ2RHOGdaR1ZqYjJSbElHTnZiWEJ2Ym1WdWRDQWxaQW9BU1c1MllXeHBaQ0IyWVd4MVpTQm1iM0lnYm5WdGNtVnpiMngxZEdsdmJuTWdPaUFsWkN3Z2JXRjRJSFpoYkhWbElHbHpJSE5sZENCcGJpQnZjR1Z1YW5CbFp5NW9JR0YwSUNWa0NnQkpiblpoYkdsa0lHTnZiWEJ2Ym1WdWRDQnVkVzFpWlhJNklDVmtMQ0J5WldkaGNtUnBibWNnZEdobElHNTFiV0psY2lCdlppQmpiMjF3YjI1bGJuUnpJQ1ZrQ2dCVWIyOGdiV0Z1ZVNCUVQwTnpJQ1ZrQ2dCSmJuWmhiR2xrSUhScGJHVWdiblZ0WW1WeUlDVmtDZ0JKYm5aaGJHbGtJSFJwYkdVZ2NHRnlkQ0JwYm1SbGVDQm1iM0lnZEdsc1pTQnVkVzFpWlhJZ0pXUXVJRWR2ZENBbFpDd2daWGh3WldOMFpXUWdKV1FLQUVWeWNtOXlJSGRwZEdnZ1UwbGFJRzFoY210bGNqb2diblZ0WW1WeUlHOW1JR052YlhCdmJtVnVkQ0JwY3lCcGJHeGxaMkZzSUMwK0lDVmtDZ0JPYjNRZ1pXNXZkV2RvSUcxbGJXOXllU0JtYjNJZ1kybGxiR0ZpQ2dCRFlXNXViM1FnWVd4c2IyTmhkR1VnWTJKc2F5MCtaR1ZqYjJSbFpGOWtZWFJoQ2dCR1lXbHNaV1FnZEc4Z2JXVnlaMlVnVUZCVUlHUmhkR0VLQUVaaGFXeGxaQ0IwYnlCdFpYSm5aU0JRVUUwZ1pHRjBZUW9BU1c1MllXeHBaQ0J1ZFcxaVpYSWdiMllnYkdGNVpYSnpJR2x1SUVOUFJDQnRZWEpyWlhJZ09pQWxaQ0J1YjNRZ2FXNGdjbUZ1WjJVZ1d6RXROalUxTXpWZENnQlRkSEpsWVcwZ2RHOXZJSE5vYjNKMExDQmxlSEJsWTNSbFpDQlRUMVFLQUZWdVlXSnNaU0IwYnlCelpYUWdkREVnYUdGdVpHeGxJR0Z6SUZSTVV3b0FVM1J5WldGdElHUnZaWE1nYm05MElHVnVaQ0IzYVhSb0lFVlBRd29BUTJGdWJtOTBJR2hoYm1Sc1pTQmliM2dnYzJsNlpYTWdhR2xuYUdWeUlIUm9ZVzRnTWw0ek1nb0FiM0JxWDNCcFgyNWxlSFJmYkhKamNDZ3BPaUJwYm5aaGJHbGtJR052YlhCdWJ6QXZZMjl0Y0c1dk1Rb0FiM0JxWDNCcFgyNWxlSFJmY214amNDZ3BPaUJwYm5aaGJHbGtJR052YlhCdWJ6QXZZMjl0Y0c1dk1Rb0FiM0JxWDNCcFgyNWxlSFJmWTNCeWJDZ3BPaUJwYm5aaGJHbGtJR052YlhCdWJ6QXZZMjl0Y0c1dk1Rb0FiM0JxWDNCcFgyNWxlSFJmY0dOeWJDZ3BPaUJwYm5aaGJHbGtJR052YlhCdWJ6QXZZMjl0Y0c1dk1Rb0FiM0JxWDNCcFgyNWxlSFJmY25CamJDZ3BPaUJwYm5aaGJHbGtJR052YlhCdWJ6QXZZMjl0Y0c1dk1Rb0FiM0JxWDNReFgyUmxZMjlrWlY5allteHJLQ2s2SUhWdWMzVndjRzl5ZEdWa0lHSndibTlmY0d4MWMxOXZibVVnUFNBbFpDQStQU0F6TVFvQVJtRnBiR1ZrSUhSdklHUmxZMjlrWlNCMGFXeGxJREV2TVFvQVNXNXpkV1ptYVdOcFpXNTBJR1JoZEdFZ1ptOXlJRU5OUVZBZ1ltOTRMZ29BVG1WbFpDQjBieUJ5WldGa0lHRWdVRU5NVWlCaWIzZ2dZbVZtYjNKbElIUm9aU0JEVFVGUUlHSnZlQzRLQUVsdWMzVm1abWxqYVdWdWRDQmtZWFJoSUdadmNpQkRSRVZHSUdKdmVDNEtBRTUxYldKbGNpQnZaaUJqYUdGdWJtVnNJR1JsYzJOeWFYQjBhVzl1SUdseklHVnhkV0ZzSUhSdklIcGxjbThnYVc0Z1EwUkZSaUJpYjNndUNnQlRkSEpsWVcwZ1pYSnliM0lnZDJocGJHVWdjbVZoWkdsdVp5QktVRElnU0dWaFpHVnlJR0p2ZURvZ2JtOGdKMmxvWkhJbklHSnZlQzRLQUU1dmJpQmpiMjVtYjNKdFlXNTBJR052WkdWemRISmxZVzBnVkZCemIzUTlQVlJPYzI5MExnb0FVM1J5WldGdElHVnljbTl5SUhkb2FXeGxJSEpsWVdScGJtY2dTbEF5SUVobFlXUmxjaUJpYjNnNklHSnZlQ0JzWlc1bmRHZ2dhWE1nYVc1amIyNXphWE4wWlc1MExnb0FRbTk0SUd4bGJtZDBhQ0JwY3lCcGJtTnZibk5wYzNSbGJuUXVDZ0JTWlhOdmJIVjBhVzl1SUdaaFkzUnZjaUJwY3lCbmNtVmhkR1Z5SUhSb1lXNGdkR2hsSUcxaGVHbHRkVzBnY21WemIyeDFkR2x2YmlCcGJpQjBhR1VnWTI5dGNHOXVaVzUwTGdvQVEyOXRjRzl1Wlc1MElHMWhjSEJwYm1jZ2MyVmxiWE1nZDNKdmJtY3VJRlJ5ZVdsdVp5QjBieUJqYjNKeVpXTjBMZ29BU1c1amIyMXdiR1YwWlNCamFHRnVibVZzSUdSbFptbHVhWFJwYjI1ekxnb0FUV0ZzWm05eWJXVmtJRWhVSUdOdlpHVmliRzlqYXk0Z1NXNTJZV3hwWkNCamIyUmxZbXh2WTJzZ2JHVnVaM1JvSUhaaGJIVmxjeTRLQUZkbElHUnZJRzV2ZENCemRYQndiM0owSUcxdmNtVWdkR2hoYmlBeklHTnZaR2x1WnlCd1lYTnpaWE1nYVc0Z1lXNGdTRlFnWTI5a1pXSnNiMk5yT3lCVWFHbHpJR052WkdWaWJHOWphM01nYUdGeklDVmtJSEJoYzNObGN5NEtBRTFoYkdadmNtMWxaQ0JJVkNCamIyUmxZbXh2WTJzdUlFUmxZMjlrYVc1bklIUm9hWE1nWTI5a1pXSnNiMk5ySUdseklITjBiM0J3WldRdUlGUm9aWEpsSUdGeVpTQWxaQ0I2WlhKdklHSnBkSEJzWVc1bGN5QnBiaUFsWkNCaWFYUndiR0Z1WlhNdUNnQkRZVzV1YjNRZ2RHRnJaU0JwYmlCamFHRnlaMlVnYlhWc2RHbHdiR1VnZEhKaGJuTm1iM0p0WVhScGIyNGdjM1JoWjJWekxnb0FWVzVyYm05M2JpQnRZWEpyWlhJZ2FHRnpJR0psWlc0Z1pHVjBaV04wWldRZ1lXNWtJR2RsYm1WeVlYUmxaQ0JsY25KdmNpNEtBRU52WkdWaklIQnliM1pwWkdWa0lIUnZJSFJvWlNCdmNHcGZjMlYwWDJSbFkyOWtaV1JmWTI5dGNHOXVaVzUwY3lCbWRXNWpkR2x2YmlCcGN5QnViM1FnWVNCa1pXTnZiWEJ5WlhOemIzSWdhR0Z1Wkd4bGNpNEtBRU52WkdWaklIQnliM1pwWkdWa0lIUnZJSFJvWlNCdmNHcGZjMlYwZFhCZlpHVmpiMlJsY2lCbWRXNWpkR2x2YmlCcGN5QnViM1FnWVNCa1pXTnZiWEJ5WlhOemIzSWdhR0Z1Wkd4bGNpNEtBRU52WkdWaklIQnliM1pwWkdWa0lIUnZJSFJvWlNCdmNHcGZjbVZoWkY5b1pXRmtaWElnWm5WdVkzUnBiMjRnYVhNZ2JtOTBJR0VnWkdWamIyMXdjbVZ6YzI5eUlHaGhibVJzWlhJdUNnQlVhV3hsY3lCa2IyNG5kQ0JoYkd3Z2FHRjJaU0IwYUdVZ2MyRnRaU0JrYVcxbGJuTnBiMjR1SUZOcmFYQWdkR2hsSUUxRFZDQnpkR1Z3TGdvQVRuVnRZbVZ5SUc5bUlHTnZiWEJ2Ym1WdWRITWdLQ1ZrS1NCcGN5QnBibU52Ym5OcGMzUmxiblFnZDJsMGFDQmhJRTFEVkM0Z1UydHBjQ0IwYUdVZ1RVTlVJSE4wWlhBdUNnQktVRElnWW05NElIZG9hV05vSUdGeVpTQmhablJsY2lCMGFHVWdZMjlrWlhOMGNtVmhiU0IzYVd4c0lHNXZkQ0JpWlNCeVpXRmtJR0o1SUhSb2FYTWdablZ1WTNScGIyNHVDZ0JOWVd4bWIzSnRaV1FnU0ZRZ1kyOWtaV0pzYjJOckxpQlhhR1Z1SUhSb1pTQnVkVzFpWlhJZ2IyWWdlbVZ5YnlCd2JHRnVaWE1nWW1sMGNHeGhibVZ6SUdseklHVnhkV0ZzSUhSdklIUm9aU0J1ZFcxaVpYSWdiMllnWW1sMGNHeGhibVZ6TENCdmJteDVJSFJvWlNCamJHVmhiblZ3SUhCaGMzTWdiV0ZyWlhNZ2MyVnVjMlVzSUdKMWRDQjNaU0JvWVhabElDVmtJSEJoYzNObGN5QnBiaUIwYUdseklHTnZaR1ZpYkc5amF5NGdWR2hsY21WbWIzSmxMQ0J2Ym14NUlIUm9aU0JqYkdWaGJuVndJSEJoYzNNZ2QybHNiQ0JpWlNCa1pXTnZaR1ZrTGlCVWFHbHpJRzFsYzNOaFoyVWdkMmxzYkNCdWIzUWdZbVVnWkdsemNHeGhlV1ZrSUdGbllXbHVMZ29BU1cxaFoyVWdhR0Z6SUd4bGMzTWdZMjl0Y0c5dVpXNTBjeUIwYUdGdUlHTnZaR1Z6ZEhKbFlXMHVDZ0JPWldWa0lIUnZJR1JsWTI5a1pTQjBhR1VnYldGcGJpQm9aV0ZrWlhJZ1ltVm1iM0psSUdKbFoybHVJSFJ2SUdSbFkyOWtaU0IwYUdVZ2NtVnRZV2x1YVc1bklHTnZaR1Z6ZEhKbFlXMHVDZ0JRYzI5MElIWmhiSFZsSUc5bUlIUm9aU0JqZFhKeVpXNTBJSFJwYkdVdGNHRnlkQ0JwY3lCbGNYVmhiQ0IwYnlCNlpYSnZMQ0IzWlNCaGMzTjFiV2x1WnlCcGRDQnBjeUIwYUdVZ2JHRnpkQ0IwYVd4bExYQmhjblFnYjJZZ2RHaGxJR052WkdWemRISmxZVzB1Q2dCQklHMWhiR1p2Y20xbFpDQmpiMlJsWW14dlkyc2dkR2hoZENCb1lYTWdiVzl5WlNCMGFHRnVJRzl1WlNCamIyUnBibWNnY0dGemN5d2dZblYwSUhwbGNtOGdiR1Z1WjNSb0lHWnZjaUF5Ym1RZ1lXNWtJSEJ2ZEdWdWRHbGhiR3g1SUhSb1pTQXpjbVFnY0dGemN5QnBiaUJoYmlCSVZDQmpiMlJsWW14dlkyc3VDZ0FKQ1FrZ2RHbHNaUzF3WVhKMFd5VmtYVG9nYzNSaGNsOXdiM005Sld4c2FTd2daVzVrWDJobFlXUmxjajBsYkd4cExDQmxibVJmY0c5elBTVnNiR2t1Q2dCVWFXeGxJQ1YxSUdoaGN5QlVVSE52ZENBOVBTQXdJR0Z1WkNCVVRuTnZkQ0E5UFNBd0xDQmlkWFFnYm04Z2IzUm9aWElnZEdsc1pTMXdZWEowY3lCM1pYSmxJR1p2ZFc1a0xpQkZUME1nYVhNZ1lXeHpieUJ0YVhOemFXNW5MZ29BUTI5dGNHOXVaVzUwSUNWa0lHUnZaWE51SjNRZ2FHRjJaU0JoSUcxaGNIQnBibWN1Q2dCQklHTnZibVp2Y20xcGJtY2dTbEF5SUhKbFlXUmxjaUJ6YUdGc2JDQnBaMjV2Y21VZ1lXeHNJRU52Ykc5MWNpQlRjR1ZqYVdacFkyRjBhVzl1SUdKdmVHVnpJR0ZtZEdWeUlIUm9aU0JtYVhKemRDd2djMjhnZDJVZ2FXZHViM0psSUhSb2FYTWdiMjVsTGdvQVZHaGxJSE5wWjI1aGRIVnlaU0JpYjNnZ2JYVnpkQ0JpWlNCMGFHVWdabWx5YzNRZ1ltOTRJR2x1SUhSb1pTQm1hV3hsTGdvQVZHaGxJQ0JpYjNnZ2JYVnpkQ0JpWlNCMGFHVWdabWx5YzNRZ1ltOTRJR2x1SUhSb1pTQm1hV3hsTGdvQVZHaGxJR1owZVhBZ1ltOTRJRzExYzNRZ1ltVWdkR2hsSUhObFkyOXVaQ0JpYjNnZ2FXNGdkR2hsSUdacGJHVXVDZ0JHWVdsc1pXUWdkRzhnWkdWamIyUmxMZ29BVFdGc1ptOXliV1ZrSUVoVUlHTnZaR1ZpYkc5amF5NGdTVzVqYjNKeVpXTjBJRTFGVENCelpXZHRaVzUwSUhObGNYVmxibU5sTGdvQVEyOXRjRzl1Wlc1MElDVmtJR2x6SUcxaGNIQmxaQ0IwZDJsalpTNEtBRTl1YkhrZ2IyNWxJRU5OUVZBZ1ltOTRJR2x6SUdGc2JHOTNaV1F1Q2dCaGNIQnNlVjlqYjJ4dmNsOTBjbUZ1YzJadmNtMXpJRDBnVDFCS1gxUlNWVVVnYVhNZ2JtOTBJSE4xY0hCdmNuUmxaQzRLQUZkbElHNWxaV1FnWVc0Z2FXMWhaMlVnY0hKbGRtbHZkWE5zZVNCamNtVmhkR1ZrTGdvQVNVaEVVaUJpYjNoZmJXbHpjMmx1Wnk0Z1VtVnhkV2x5WldRdUNnQktVREpJSUdKdmVDQnRhWE56YVc1bkxpQlNaWEYxYVhKbFpDNEtBRTV2ZENCemRYSmxJR2h2ZHlCMGFHRjBJR2hoY0hCbGJtVmtMZ29BVFdGcGJpQm9aV0ZrWlhJZ2FHRnpJR0psWlc0Z1kyOXljbVZqZEd4NUlHUmxZMjlrWldRdUNnQlVhV3hsSUNWa0x5VmtJR2hoY3lCaVpXVnVJR1JsWTI5a1pXUXVDZ0JJWldGa1pYSWdiMllnZEdsc1pTQWxaQ0F2SUNWa0lHaGhjeUJpWldWdUlISmxZV1F1Q2dCRmJYQjBlU0JUVDFRZ2JXRnlhMlZ5SUdSbGRHVmpkR1ZrT2lCUWMyOTBQU1ZrTGdvQVJHbHlaV04wSUhWelpTQmhkQ0FqSldRZ2FHOTNaWFpsY2lCd1kyOXNQU1ZrTGdvQVNXMXdiR1Z0Wlc1MFlYUnBiMjRnYkdsdGFYUmhkR2x2YmpvZ1ptOXlJSEJoYkdWMGRHVWdiV0Z3Y0dsdVp5d2djR052YkZzbFpGMGdjMmh2ZFd4a0lHSmxJR1Z4ZFdGc0lIUnZJQ1ZrTENCaWRYUWdhWE1nWlhGMVlXd2dkRzhnSldRdUNnQkpiblpoYkdsa0lHTnZiWEJ2Ym1WdWRDOXdZV3hsZEhSbElHbHVaR1Y0SUdadmNpQmthWEpsWTNRZ2JXRndjR2x1WnlBbFpDNEtBRWx1ZG1Gc2FXUWdkbUZzZFdVZ1ptOXlJR050WVhCYkpXUmRMbTEwZVhBZ1BTQWxaQzRLQUZCemIzUWdkbUZzZFdVZ2FYTWdibTkwSUdOdmNuSmxZM1FnY21WbllYSmtjeUIwYnlCMGFHVWdTbEJGUnpJd01EQWdibTl5YlRvZ0pXUXVDZ0JOWVd4bWIzSnRaV1FnU0ZRZ1kyOWtaV0pzYjJOckxpQldURU1nWTI5a1pTQndjbTlrZFdObGN5QnphV2R1YVdacFkyRnVkQ0J6WVcxd2JHVnpJRzkxZEhOcFpHVWdkR2hsSUdOdlpHVmliRzlqYXlCaGNtVmhMZ29BVlc1bGVIQmxZM1JsWkNCUFQwMHVDZ0F6TWlCaWFYUnpJR0Z5WlNCdWIzUWdaVzV2ZFdkb0lIUnZJR1JsWTI5a1pTQjBhR2x6SUdOdlpHVmliRzlqYXl3Z2MybHVZMlVnZEdobElHNTFiV0psY2lCdlppQmlhWFJ3YkdGdVpTd2dKV1FzSUdseklHeGhjbWRsY2lCMGFHRnVJRE13TGdvQVFtOTBkRzl0SUhCdmMybDBhVzl1SUc5bUlIUm9aU0JrWldOdlpHVmtJR0Z5WldFZ0tISmxaMmx2Ymw5NU1UMGxaQ2tnYzJodmRXeGtJR0psSUQ0Z01DNEtBRkpwWjJoMElIQnZjMmwwYVc5dUlHOW1JSFJvWlNCa1pXTnZaR1ZrSUdGeVpXRWdLSEpsWjJsdmJsOTRNVDBsWkNrZ2MyaHZkV3hrSUdKbElENGdNQzRLQUZWd0lIQnZjMmwwYVc5dUlHOW1JSFJvWlNCa1pXTnZaR1ZrSUdGeVpXRWdLSEpsWjJsdmJsOTVNRDBsWkNrZ2MyaHZkV3hrSUdKbElENDlJREF1Q2dCTVpXWjBJSEJ2YzJsMGFXOXVJRzltSUhSb1pTQmtaV052WkdWa0lHRnlaV0VnS0hKbFoybHZibDk0TUQwbFpDa2djMmh2ZFd4a0lHSmxJRDQ5SURBdUNnQkZjbkp2Y2lCeVpXRmthVzVuSUZCUVZDQnRZWEpyWlhJNklIQmhZMnRsZENCb1pXRmtaWElnYUdGMlpTQmlaV1Z1SUhCeVpYWnBiM1Z6YkhrZ1ptOTFibVFnYVc0Z2RHaGxJRzFoYVc0Z2FHVmhaR1Z5SUNoUVVFMGdiV0Z5YTJWeUtTNEtBRk4wWVhKMElIUnZJSEpsWVdRZ2FqSnJJRzFoYVc0Z2FHVmhaR1Z5SUNnbGJHeGtLUzRLQUVKdmRIUnZiU0J3YjNOcGRHbHZiaUJ2WmlCMGFHVWdaR1ZqYjJSbFpDQmhjbVZoSUNoeVpXZHBiMjVmZVRFOUpXUXBJR2x6SUc5MWRITnBaR1VnZEdobElHbHRZV2RsSUdGeVpXRWdLRmx6YVhvOUpXUXBMZ29BVlhBZ2NHOXphWFJwYjI0Z2IyWWdkR2hsSUdSbFkyOWtaV1FnWVhKbFlTQW9jbVZuYVc5dVgza3dQU1ZrS1NCcGN5QnZkWFJ6YVdSbElIUm9aU0JwYldGblpTQmhjbVZoSUNoWmMybDZQU1ZrS1M0S0FGSnBaMmgwSUhCdmMybDBhVzl1SUc5bUlIUm9aU0JrWldOdlpHVmtJR0Z5WldFZ0tISmxaMmx2Ymw5NE1UMGxaQ2tnYVhNZ2IzVjBjMmxrWlNCMGFHVWdhVzFoWjJVZ1lYSmxZU0FvV0hOcGVqMGxaQ2t1Q2dCTVpXWjBJSEJ2YzJsMGFXOXVJRzltSUhSb1pTQmtaV052WkdWa0lHRnlaV0VnS0hKbFoybHZibDk0TUQwbFpDa2dhWE1nYjNWMGMybGtaU0IwYUdVZ2FXMWhaMlVnWVhKbFlTQW9XSE5wZWowbFpDa3VDZ0JDYjNSMGIyMGdjRzl6YVhScGIyNGdiMllnZEdobElHUmxZMjlrWldRZ1lYSmxZU0FvY21WbmFXOXVYM2t4UFNWa0tTQnBjeUJ2ZFhSemFXUmxJSFJvWlNCcGJXRm5aU0JoY21WaElDaFpUM05wZWowbFpDa3VDZ0JWY0NCd2IzTnBkR2x2YmlCdlppQjBhR1VnWkdWamIyUmxaQ0JoY21WaElDaHlaV2RwYjI1ZmVUQTlKV1FwSUdseklHOTFkSE5wWkdVZ2RHaGxJR2x0WVdkbElHRnlaV0VnS0ZsUGMybDZQU1ZrS1M0S0FGSnBaMmgwSUhCdmMybDBhVzl1SUc5bUlIUm9aU0JrWldOdlpHVmtJR0Z5WldFZ0tISmxaMmx2Ymw5NE1UMGxaQ2tnYVhNZ2IzVjBjMmxrWlNCMGFHVWdhVzFoWjJVZ1lYSmxZU0FvV0U5emFYbzlKV1FwTGdvQVRHVm1kQ0J3YjNOcGRHbHZiaUJ2WmlCMGFHVWdaR1ZqYjJSbFpDQmhjbVZoSUNoeVpXZHBiMjVmZURBOUpXUXBJR2x6SUc5MWRITnBaR1VnZEdobElHbHRZV2RsSUdGeVpXRWdLRmhQYzJsNlBTVmtLUzRLQUZOcGVtVWdlQ0J2WmlCMGFHVWdaR1ZqYjJSbFpDQmpiMjF3YjI1bGJuUWdhVzFoWjJVZ2FYTWdhVzVqYjNKeVpXTjBJQ2hqYjIxd1d5VmtYUzUzUFNWa0tTNEtBRk5wZW1VZ2VTQnZaaUIwYUdVZ1pHVmpiMlJsWkNCamIyMXdiMjVsYm5RZ2FXMWhaMlVnYVhNZ2FXNWpiM0p5WldOMElDaGpiMjF3V3lWa1hTNW9QU1ZrS1M0S0FGUnBiR1VnY21WaFpDd2daR1ZqYjJSbFpDQmhibVFnZFhCa1lYUmxaQ0JwY3lCdWIzUWdkR2hsSUdSbGMybHlaV1FnYjI1bElDZ2xaQ0IyY3lBbFpDa3VDZ0JKYm5aaGJHbGtJR052YlhCdmJtVnVkQ0JwYm1SbGVDQWxaQ0FvUGowZ0pXUXBMZ29BYjNCcVgzSmxZV1JmYUdWaFpHVnlLQ2tnYzJodmRXeGtJR0psSUdOaGJHeGxaQ0JpWldadmNtVWdiM0JxWDNObGRGOWtaV052WkdWa1gyTnZiWEJ2Ym1WdWRITW9LUzRLQUUxbGJXOXllU0JoYkd4dlkyRjBhVzl1SUdaaGFXeDFjbVVnYVc0Z2IzQnFYMnB3TWw5aGNIQnNlVjl3WTJ4eUtDa3VDZ0JwYldGblpTMCtZMjl0Y0hOYkpXUmRMbVJoZEdFZ1BUMGdUbFZNVENCcGJpQnZjR3BmYW5BeVgyRndjR3g1WDNCamJISW9LUzRLQUdsdWRtRnNhV1FnWW05NElITnBlbVVnSldRZ0tDVjRLUW9BUm1GcGJDQjBieUJ5WldGa0lIUm9aU0JqZFhKeVpXNTBJRzFoY210bGNpQnpaV2R0Wlc1MElDZ2xJM2dwQ2dCRmNuSnZjaUIzYVhSb0lGTkpXaUJ0WVhKclpYSTZJRWxJUkZJZ2R5Z2xkU2tnYUNnbGRTa2dkbk11SUZOSldpQjNLQ1YxS1NCb0tDVjFLUW9BUlhKeWIzSWdjbVZoWkdsdVp5QkRUME1nYldGeWEyVnlJQ2hpWVdRZ2JuVnRZbVZ5SUc5bUlHTnZiWEJ2Ym1WdWRITXBDZ0JKYm5aaGJHbGtJRzUxYldKbGNpQnZaaUIwYVd4bGN5QTZJQ1YxSUhnZ0pYVWdLRzFoZUdsdGRXMGdabWw0WldRZ1lua2dhbkJsWnpJd01EQWdibTl5YlNCcGN5QTJOVFV6TlNCMGFXeGxjeWtLQUVsdWRtRnNhV1FnYm5WdFltVnlJRzltSUdOdmJYQnZibVZ1ZEhNZ0tHbG9aSElwQ2dCT2IzUWdaVzV2ZFdkb0lHMWxiVzl5ZVNCMGJ5Qm9ZVzVrYkdVZ2FXMWhaMlVnYUdWaFpHVnlJQ2hwYUdSeUtRb0FWM0p2Ym1jZ2RtRnNkV1Z6SUdadmNqb2dkeWdsWkNrZ2FDZ2xaQ2tnYm5WdFkyOXRjSE1vSldRcElDaHBhR1J5S1FvQVNXNTJZV3hwWkNCMllXeDFaWE1nWm05eUlHTnZiWEFnUFNBbFpDQTZJR1I0UFNWMUlHUjVQU1YxSUNoemFHOTFiR1FnWW1VZ1ltVjBkMlZsYmlBeElHRnVaQ0F5TlRVZ1lXTmpiM0prYVc1bklIUnZJSFJvWlNCS1VFVkhNakF3TUNCdWIzSnRLUW9BUW1Ga0lHbHRZV2RsSUdobFlXUmxjaUJpYjNnZ0tHSmhaQ0J6YVhwbEtRb0FRbUZrSUVOUFRGSWdhR1ZoWkdWeUlHSnZlQ0FvWW1Ga0lITnBlbVVwQ2dCQ1lXUWdRbEJEUXlCb1pXRmtaWElnWW05NElDaGlZV1FnYzJsNlpTa0tBRVZ5Y205eUlIZHBkR2dnVTBsYUlHMWhjbXRsY2pvZ2JtVm5ZWFJwZG1VZ2IzSWdlbVZ5YnlCcGJXRm5aU0J6YVhwbElDZ2xiR3hrSUhnZ0pXeHNaQ2tLQUhOcmFYQTZJSE5sWjIxbGJuUWdkRzl2SUd4dmJtY2dLQ1ZrS1NCM2FYUm9JRzFoZUNBb0pXUXBJR1p2Y2lCamIyUmxZbXh2WTJzZ0pXUWdLSEE5SldRc0lHSTlKV1FzSUhJOUpXUXNJR005SldRcENnQnlaV0ZrT2lCelpXZHRaVzUwSUhSdmJ5QnNiMjVuSUNnbFpDa2dkMmwwYUNCdFlYZ2dLQ1ZrS1NCbWIzSWdZMjlrWldKc2IyTnJJQ1ZrSUNod1BTVmtMQ0JpUFNWa0xDQnlQU1ZrTENCalBTVmtLUW9BUkdWemNHbDBaU0JLVURJZ1FsQkRJVDB5TlRVc0lIQnlaV05wYzJsdmJpQmhibVF2YjNJZ2MyZHVaQ0IyWVd4MVpYTWdabTl5SUdOdmJYQmJKV1JkSUdseklHUnBabVpsY21WdWRDQjBhR0Z1SUdOdmJYQmJNRjA2Q2lBZ0lDQWdJQ0FnV3pCZElIQnlaV01vSldRcElITm5ibVFvSldRcElGc2xaRjBnY0hKbFl5Z2xaQ2tnYzJkdVpDZ2xaQ2tLQUdKaFpDQmpiMjF3YjI1bGJuUWdiblZ0WW1WeUlHbHVJRkpIVGlBb0pXUWdkMmhsYmlCMGFHVnlaU0JoY21VZ2IyNXNlU0FsWkNrS0FFVnljbTl5SUhkcGRHZ2dVMGxhSUcxaGNtdGxjam9nYm5WdFltVnlJRzltSUdOdmJYQnZibVZ1ZENCcGN5QnViM1FnWTI5dGNHRjBhV0pzWlNCM2FYUm9JSFJvWlNCeVpXMWhhVzVwYm1jZ2JuVnRZbVZ5SUc5bUlIQmhjbUZ0WlhSbGNuTWdLQ0FsWkNCMmN5QWxaQ2tLQUVWeWNtOXlJSGRwZEdnZ1UwbGFJRzFoY210bGNqb2dhVzUyWVd4cFpDQjBhV3hsSUhOcGVtVWdLSFJrZURvZ0pXUXNJSFJrZVRvZ0pXUXBDZ0JDWVdRZ1EwOU1VaUJvWldGa1pYSWdZbTk0SUNoaVlXUWdjMmw2WlRvZ0pXUXBDZ0JDWVdRZ1EwOU1VaUJvWldGa1pYSWdZbTk0SUNoRFNVVk1ZV0lzSUdKaFpDQnphWHBsT2lBbFpDa0tBRkJVUlZKTklHTm9aV05ySUdaaGFXeDFjbVU2SUNWa0lISmxiV0ZwYm1sdVp5QmllWFJsY3lCcGJpQmpiMlJsSUdKc2IyTnJJQ2dsWkNCMWMyVmtJQzhnSldRcENnQk5ZV3htYjNKdFpXUWdTRlFnWTI5a1pXSnNiMk5yTGlCUGJtVWdiMllnZEdobElHWnZiR3h2ZDJsdVp5QmpiMjVrYVhScGIyNGdhWE1nYm05MElHMWxkRG9nTWlBOFBTQlRZM1Z3SUR3OUlHMXBiaWhNWTNWd0xDQTBNRGM1S1FvQVNXNTJZV3hwWkNCMllXeDFaWE1nWm05eUlHTnZiWEFnUFNBbFpDQTZJSEJ5WldNOUpYVWdLSE5vYjNWc1pDQmlaU0JpWlhSM1pXVnVJREVnWVc1a0lETTRJR0ZqWTI5eVpHbHVaeUIwYnlCMGFHVWdTbEJGUnpJd01EQWdibTl5YlM0Z1QzQmxia3B3WldjZ2IyNXNlU0J6ZFhCd2IzSjBjeUIxY0NCMGJ5QXpNU2tLQUVsdWRtRnNhV1FnWW1sMElHNTFiV0psY2lBbFpDQnBiaUJ2Y0dwZmRESmZjbVZoWkY5d1lXTnJaWFJmYUdWaFpHVnlLQ2tLQUZOMGNtVmhiU0JsY25KdmNpRUtBRVZ5Y205eUlHOXVJSGR5YVhScGJtY2djM1J5WldGdElRb0FVM1J5WldGdElISmxZV05vWldRZ2FYUnpJR1Z1WkNBaENnQkZlSEJsWTNSbFpDQmhJRk5QUXlCdFlYSnJaWElnQ2dCSmJuWmhiR2xrSUdKdmVDQnphWHBsSUNWa0lHWnZjaUJpYjNnZ0p5VmpKV01sWXlWakp5NGdUbVZsWkNBbFpDQmllWFJsY3l3Z0pXUWdZbmwwWlhNZ2NtVnRZV2x1YVc1bklBb0FUV0ZzWm05eWJXVmtJRWhVSUdOdlpHVmliRzlqYXk0Z1JHVmpiMlJwYm1jZ2RHaHBjeUJqYjJSbFlteHZZMnNnYVhNZ2MzUnZjSEJsWkM0Z1ZWOXhJR2x6SUd4aGNtZGxjaUIwYUdGdUlIcGxjbThnWW1sMGNHeGhibVZ6SUNzZ01TQUtBRTFoYkdadmNtMWxaQ0JJVkNCamIyUmxZbXh2WTJzdUlFUmxZMjlrYVc1bklIUm9hWE1nWTI5a1pXSnNiMk5ySUdseklITjBiM0J3WldRdUlGVmZjU0JwYzJ4aGNtZGxjaUIwYUdGdUlHSnBkSEJzWVc1bGN5QXJJREVnQ2dCRFQweFNJRUpQV0NCdFpYUm9JSFpoYkhWbElHbHpJRzV2ZENCaElISmxaM1ZzWVhJZ2RtRnNkV1VnS0NWa0tTd2djMjhnZDJVZ2QybHNiQ0JwWjI1dmNtVWdkR2hsSUdWdWRHbHlaU0JEYjJ4dmRYSWdVM0JsWTJsbWFXTmhkR2x2YmlCaWIzZ3VJQW9BVjJocGJHVWdjbVZoWkdsdVp5QkRRMUJmVVU1VVUxUlpJR1ZzWlcxbGJuUWdhVzV6YVdSbElGRkRSQ0J2Y2lCUlEwTWdiV0Z5YTJWeUlITmxaMjFsYm5Rc0lHNTFiV0psY2lCdlppQnpkV0ppWVc1a2N5QW9KV1FwSUdseklHZHlaV0YwWlhJZ2RHOGdUMUJLWDBveVMxOU5RVmhDUVU1RVV5QW9KV1FwTGlCVGJ5QjNaU0JzYVcxcGRDQjBhR1VnYm5WdFltVnlJRzltSUdWc1pXMWxiblJ6SUhOMGIzSmxaQ0IwYnlCUFVFcGZTakpMWDAxQldFSkJUa1JUSUNnbFpDa2dZVzVrSUhOcmFYQWdkR2hsSUhKbGMzUXVJQW9BU2xBeUlFbElSRklnWW05NE9pQmpiMjF3Y21WemMybHZiaUIwZVhCbElHbHVaR2xqWVhSbElIUm9ZWFFnZEdobElHWnBiR1VnYVhNZ2JtOTBJR0VnWTI5dVptOXliV2x1WnlCS1VESWdabWxzWlNBb0pXUXBJQW9BVkdsc1pTQnBibVJsZUNCd2NtOTJhV1JsWkNCaWVTQjBhR1VnZFhObGNpQnBjeUJwYm1OdmNuSmxZM1FnSldRZ0tHMWhlQ0E5SUNWa0tTQUtBRVZ5Y205eUlHUmxZMjlrYVc1bklHTnZiWEJ2Ym1WdWRDQWxaQzRLVkdobElHNTFiV0psY2lCdlppQnlaWE52YkhWMGFXOXVjeUIwYnlCeVpXMXZkbVVnS0NWa0tTQnBjeUJuY21WaGRHVnlJRzl5SUdWeGRXRnNJSFJvWVc0Z2RHaGxJRzUxYldKbGNpQnZaaUJ5WlhOdmJIVjBhVzl1Y3lCdlppQjBhR2x6SUdOdmJYQnZibVZ1ZENBb0pXUXBDazF2WkdsbWVTQjBhR1VnWTNCZmNtVmtkV05sSUhCaGNtRnRaWFJsY2k0S0NnQkpiV0ZuWlNCa1lYUmhJR2hoY3lCaVpXVnVJSFZ3WkdGMFpXUWdkMmwwYUNCMGFXeGxJQ1ZrTGdvS0FFR3cvUUFMZ0NBakFLVUFRd0JtQUlNQTdxZ1VBTi9ZSXdDK0VFTUEvL1dEQUg0Z1ZRQmZVU01BTlFCREFFNUVnd0RPeEJRQXo4d2pBUDdpUXdEL21ZTUFsZ0RGQUQ4eEl3Q2xBRU1BWGtTREFNN0lGQURmRVNNQS92UkRBUC84Z3dDZUFGVUFkd0FqQURVQVF3RC84WU1Bcm9nVUFMY0FJd0QrK0VNQTcrU0RBSTZJeFFBZkVTTUFwUUJEQUdZQWd3RHVxQlFBMzFRakFMNFFRd0R2SW9NQWZpQlZBSDhpSXdBMUFFTUFUa1NEQU03RUZBQy9FU01BL3VKREFQY0Fnd0NXQU1VQVB5SWpBS1VBUXdCZVJJTUF6c2dVQU5jQUl3RCs5RU1BLzdxREFKNEFWUUJ2QUNNQU5RQkRBUC9tZ3dDdWlCUUFyNklqQVA3NFF3RG5BSU1Bam9qRkFDOGlBZ0RGQUlRQWZpQUNBTTdFSkFEM0FBSUEvcUpFQUZZQUFnQ2VBQlFBMXdBQ0FMNFFoQUJtQUFJQXJvZ2tBTjhSQWdEdXFFUUFOZ0FDQUk2SUZBQWZFUUlBeFFDRUFHNEFBZ0RPaUNRQS80Z0NBUDY0UkFCT1JBSUFsZ0FVQUxjQUFnRCs1SVFBWGtRQ0FLWUFKQURuQUFJQTNsUkVBQzRpQWdBK0FCUUFkd0FDQU1VQWhBQitJQUlBenNRa0FQL3hBZ0Qrb2tRQVZnQUNBSjRBRkFDL0VRSUF2aENFQUdZQUFnQ3VpQ1FBN3lJQ0FPNm9SQUEyQUFJQWpvZ1VBSDhpQWdERkFJUUFiZ0FDQU02SUpBRHY1QUlBL3JoRUFFNUVBZ0NXQUJRQXI2SUNBUDdraEFCZVJBSUFwZ0FrQU4vWUFnRGVWRVFBTGlJQ0FENEFGQUJmVVFJQVZRQ0VBR1lBQWdEZWlDUUEveklDQVA0UlJBQk9SQUlBcmdBVUFMY0FBZ0IrTVlRQVhsRUNBTVlBSkFEWEFBSUE3aUJFQUI0UkFnQ2VBQlFBZHdBQ0FGVUFoQUJlVkFJQXprUWtBT2NBQWdEKzhVUUFOZ0FDQUtZQUZBQmZWUUlBL25TRUFENFJBZ0MrSUNRQWYzUUNBTjdFUkFELytBSUFsZ0FVQUM4aUFnQlZBSVFBWmdBQ0FONklKQUQzQUFJQS9oRkVBRTVFQWdDdUFCUUFqNGdDQUg0eGhBQmVVUUlBeGdBa0FNL0lBZ0R1SUVRQUhoRUNBSjRBRkFCdkFBSUFWUUNFQUY1VUFnRE9SQ1FBMzlFQ0FQN3hSQUEyQUFJQXBnQVVBSDhpQWdEK2RJUUFQaEVDQUw0Z0pBQy9JZ0lBM3NSRUFPOGlBZ0NXQUJRQVB6SURBTjdVL2ZULy9CUUFQaEZWQUkrSUF3QytNb1VBNXdBbEFGNVIvcXAvY2dNQXprVDkrTzlFRkFCK1pFVUFyNklEQUtZQVhWWGZtZjN4TmdEKzlXOWlBd0RlMGYzMC8rWVVBSDV4VlFDL3NRTUFyb2lGQU4vVkpRQk9SUDd5ZjJZREFNWUEvZmp2NGhRQVhsUkZBSjhSQXdDV0FGMVZ6OGo5OFI0UjdzaG5BQU1BM3RUOTlQL3pGQUErRVZVQXZ4RURBTDR5aFFEZjJDVUFYbEgrcWk4aUF3RE9SUDM0OXdBVUFINWtSUUNmbUFNQXBnQmRWZGNBL2ZFMkFQNzFiMFFEQU43Ui9mVC91UlFBZm5GVkFMY0FBd0N1aUlVQTM5d2xBRTVFL3ZKM0FBTUF4Z0Q5K08va0ZBQmVWRVVBZjNNREFKWUFYVlcvdVAzeEhoSHV5RDh5QWdDbEFJUUFma0FDQU40UUpBRGZFUUlBL25KRUFGWUFBZ0N1cUJRQXY3SUNBSllBaEFCbUFBSUF4Z0FrQU9jQUFnRHV5RVFBTGlJQ0FJNklGQUIzQUFJQXBRQ0VBRzRBQWdET2lDUUE5d0FDQVA2UlJBQTJBQUlBcnFJVUFLK3FBZ0QrdUlRQVhnQUNBTDRBSkFEUHhBSUE3a1JFQVAvMEFnQStJaFFBSHhFQ0FLVUFoQUIrUUFJQTNoQWtBUCtaQWdEK2NrUUFWZ0FDQUs2b0ZBQzNBQUlBbGdDRUFHWUFBZ0RHQUNRQTF3QUNBTzdJUkFBdUlnSUFqb2dVQUU5RUFnQ2xBSVFBYmdBQ0FNNklKQUR2NGdJQS9wRkVBRFlBQWdDdW9oUUFmMFFDQVA2NGhBQmVBQUlBdmdBa0FKOEFBZ0R1UkVRQS8zWUNBRDRpRkFBL01RTUF4Z0NGQVAvWi9mSitaUDd4djVrREFLNmlKUUR2WnYzMFZnRHU0bjl6QXdDK21FVUE5d0Q5K0dZQS9uYWZpQU1Bam9nVkFOL1ZwUUF1SXQ2WVQwUURBTDZ5aFFELy9QM3liaUtXQUxjQUF3Q3VxaVVBMzlIOTlEWUEzdFJ2WkFNQXJxaEZBTy9xL2ZoZVJPN29mM0VEQUQ0eUZRRFB4S1VBLy9yT2lEOHhBd0RHQUlVQS8zZjk4bjVrL3ZHL3N3TUFycUlsQU9jQS9mUldBTzdpZHdBREFMNllSUUR2NVAzNFpnRCtkbjltQXdDT2lCVUExd0NsQUM0aTNwZy9Nd01BdnJLRkFQOTEvZkp1SXBZQW41RURBSzZxSlFEZm1mMzBOZ0RlMUY5UkF3Q3VxRVVBNyt6OStGNUU3dWgvY2dNQVBqSVZBTCt4cFFELzg4NklIeEVEQU41VS9mSWVFUlFBZm1UKytNL01Bd0Mra1VVQTd5SWxBQzRpL3ZPUGlBTUF4Z0NGQVBjQUZBQmVFZjc4cjZnREFLWUFOUURmeVAzeFBqSCtabTlrQXdET3lQM3kvL1VVQUdZQS92Uy91Z01BcmlKRkFPY0FKUUErTXY3cWYzTURBTDZ5aFFEZlZSUUFWZ0IrY1o4UkF3Q1dBRFVBejhUOThUNHo3dWhQUkFNQTNsVDk4aDRSRkFCK1pQNzR2NWtEQUw2UlJRRHY0aVVBTGlMKzgzOW1Bd0RHQUlVQTcrUVVBRjRSL3Z5Zm1BTUFwZ0ExQU5jQS9mRStNZjVtYnlJREFNN0kvZkwvdVJRQVpnRCs5TGNBQXdDdUlrVUEzOUVsQUQ0eS91cDNBQU1BdnJLRkFPL3NGQUJXQUg1eGYzSURBSllBTlFDL3VQM3hQalB1NkY5VS9QSGUwZjM2MXdEOCtCWUEvZjkvZFB6MGZuSDk4Nyt6L1BMdjZ1N29UMFQ4OGE0aUJRQy91UHo0OXdEKy9IY0EvUFJlRWYzMWYzWDg4dC9ZN3VJL00venh2ckw5K3MrSS9Qai8rLzMvZjNQODlHNEEvZk8zQVB6eTcyYisrVDh4L1BHZUFBVUF2N3I4K1AvOS92Wm5BUHowSmdEOTlZK0kvUExmM043VUx5TDg4ZDdSL2ZyUHhQejRGZ0Q5LzM5eS9QUitjZjN6djVuODh1L3M3dWhIQVB6eHJpSUZBS2NBL1BqLzkvNzhWd0Q4OUY0Ui9mV1hBUHp5MzlYdTRqY0EvUEcrc3YzNnh3RDgrUC8rL2Y5L1p2ejBiZ0Q5ODYrby9QTG5BUDc1UHpMODhaNEFCUUMvc2Z6NDcrVCs5bDlVL1BRbUFQMzFod0Q4OHQrWjN0UWZFUk1BWlFCREFONEFnd0NOaUNNQVRrUVRBS1VBUXdDdWlJTUFOUUFqQU5jQUV3REZBRU1BbmdDREFGVUFJd0F1SWhNQWxRQkRBSDRBZ3dEK0VDTUFkd0FUQUdVQVF3RE9pSU1BallnakFCNFJFd0NsQUVNQVhnQ0RBRFVBSXdEbkFCTUF4UUJEQUw0QWd3QlZBQ01BL3hFVEFKVUFRd0ErQUlNQTdrQWpBSytpRXdCbEFFTUEzZ0NEQUkySUl3Qk9SQk1BcFFCREFLNklnd0ExQUNNQTcwUVRBTVVBUXdDZUFJTUFWUUFqQUM0aUV3Q1ZBRU1BZmdDREFQNFFJd0MzQUJNQVpRQkRBTTZJZ3dDTmlDTUFIaEVUQUtVQVF3QmVBSU1BTlFBakFNL0VFd0RGQUVNQXZnQ0RBRlVBSXdEM0FCTUFsUUJEQUQ0QWd3RHVRQ01BYndBQkFJUUFBUUJXQUFFQUZBQUJBTmNBQVFBa0FBRUFsZ0FCQUVVQUFRQjNBQUVBaEFBQkFNWUFBUUFVQUFFQWo0Z0JBQ1FBQVFEM0FBRUFOUUFCQUM4aUFRQ0VBQUVBL2tBQkFCUUFBUUMzQUFFQUpBQUJBTDhBQVFCRkFBRUFad0FCQUlRQUFRQ21BQUVBRkFBQkFFOUVBUUFrQUFFQTV3QUJBRFVBQVFBL0VRRUFoQUFCQUZZQUFRQVVBQUVBendBQkFDUUFBUUNXQUFFQVJRQUJBRzhBQVFDRUFBRUF4Z0FCQUJRQUFRQ2ZBQUVBSkFBQkFPOEFBUUExQUFFQVB6SUJBSVFBQVFEK1FBRUFGQUFCQUs4QUFRQWtBQUVBLzBRQkFFVUFBUUJmQUFFQWhBQUJBS1lBQVFBVUFBRUFmd0FCQUNRQUFRRGZBQUVBTlFBQkFCOFJBUUFrQUFFQVZnQUJBSVVBQVFDL0FBRUFGQUFCQVBjQUFRREdBQUVBZHdBQkFDUUFBUUQvK0FFQVJRQUJBSDhBQVFBVUFBRUEzd0FCQUtZQUFRQS9NUUVBSkFBQkFDNGlBUUNGQUFFQXR3QUJBQlFBQVFEdlJBRUFycUlCQUdjQUFRQWtBQUVBLzFFQkFFVUFBUUNYQUFFQUZBQUJBTThBQVFBMkFBRUFQeUlCQUNRQUFRQldBQUVBaFFBQkFMK3lBUUFVQUFFQTcwQUJBTVlBQVFCdkFBRUFKQUFCQVA5eUFRQkZBQUVBbndBQkFCUUFBUURYQUFFQXBnQUJBRTlFQVFBa0FBRUFMaUlCQUlVQUFRQ3ZxQUVBRkFBQkFPY0FBUUN1b2dFQVh3QUJBQ1FBQVFEL1JBRUFSUUFCQUkrSUFRQVVBQUVBcjZvQkFEWUFBUUFmRVFJQS92Z2tBRllBQWdDMkFJVUEvMllDQU00QUZBQWVFUUlBbGdBMUFLK29BZ0QyQUNRQVBqRUNBS1lBUlFDL3N3SUF2cklVQVAvMUFnQm1BSDVSWDFRQ0FQN3lKQUF1SWdJQXJpS0ZBTzlFQWdER0FCUUEvL1FDQUhZQU5RQi9SQUlBM2tBa0FENHlBZ0NlQUVVQTF3QUNBTDZJRkFELytnSUFYaEgrOFU5RUFnRCsrQ1FBVmdBQ0FMWUFoUUR2eUFJQXpnQVVBQjRSQWdDV0FEVUFqNGdDQVBZQUpBQStNUUlBcGdCRkFOOUVBZ0Mrc2hRQS82Z0NBR1lBZmxGdkFBSUEvdklrQUM0aUFnQ3VJb1VBNXdBQ0FNWUFGQUR2NGdJQWRnQTFBSDl5QWdEZVFDUUFQaklDQUo0QVJRQy9zUUlBdm9nVUFQOXpBZ0JlRWY3eFB6TUJBSVFBQVFEdUlBRUF4UUFCQU0vRUFRQkVBQUVBL3pJQkFCVUFBUUNQaUFFQWhBQUJBR1lBQVFBbEFBRUFyd0FCQUVRQUFRRHZJZ0VBcGdBQkFGOEFBUUNFQUFFQVRrUUJBTVVBQVFEUHpBRUFSQUFCQVBjQUFRQVZBQUVBYndBQkFJUUFBUUJXQUFFQUpRQUJBSjhBQVFCRUFBRUEzd0FCQVA0d0FRQXZJZ0VBaEFBQkFPNGdBUURGQUFFQXo4Z0JBRVFBQVFEL0VRRUFGUUFCQUhjQUFRQ0VBQUVBWmdBQkFDVUFBUUIvQUFFQVJBQUJBT2NBQVFDbUFBRUFOd0FCQUlRQUFRQk9SQUVBeFFBQkFMY0FBUUJFQUFFQXZ3QUJBQlVBQVFBL0FBRUFoQUFCQUZZQUFRQWxBQUVBbHdBQkFFUUFBUURYQUFFQS9qQUJBQjhSQWdEdXFFUUFqb2dDQU5ZQXhRRC84d0lBL3Z3bEFENEFBZ0MyQUZVQTM5Z0NBUDc0UkFCbUFBSUFmaUNGQVArWkFnRG1BUFVBTmdBQ0FLWUFGUUNmQUFJQS92SkVBSFlBQWdET1JNVUEvM1lDQVA3eEpRQk9SQUlBcmdCVkFNL0lBZ0QrOUVRQVhrUUNBTDRRaFFEdjVBSUEzbFQxQUI0UkFnQ1dBQlVBTHlJQ0FPNm9SQUNPaUFJQTFnREZBUC82QWdEKy9DVUFQZ0FDQUxZQVZRQy9FUUlBL3ZoRUFHWUFBZ0IrSUlVQTd5SUNBT1lBOVFBMkFBSUFwZ0FWQUg4aUFnRCs4a1FBZGdBQ0FNNUV4UUQvMVFJQS92RWxBRTVFQWdDdUFGVUFid0FDQVA3MFJBQmVSQUlBdmhDRkFOOFJBZ0RlVlBVQUhoRUNBSllBRlFCZlVRTUE5Z0FVQUI0UlJBQ09pS1VBMzlRREFLNmlWUUQvZGlRQVBpSzJBSytxQXdEbUFCUUEvL1ZFQUdZQWhRRFB6QU1BbmdERkFPOUVKQUEyQVA3NGZ6RURBTzdvRkFELzhVUUFkZ0NsQU0vRUF3QitJbFVBMzlFa0FFNUUvdlJmVVFNQTFnQVVBTy9pUkFCZVJJVUF2eUlEQUpZQXhRRGZ5Q1FBTGlMKzhtOGlBd0QyQUJRQUhoRkVBSTZJcFFDL3NRTUFycUpWQVA4ekpBQStJcllBcjZnREFPWUFGQUQvdVVRQVpnQ0ZBTCtvQXdDZUFNVUE3K1FrQURZQS92aHZaQU1BN3VnVUFQLzhSQUIyQUtVQXo4Z0RBSDRpVlFEdjZpUUFUa1QrOUg5MEF3RFdBQlFBLy9wRUFGNUVoUUMvc2dNQWxnREZBTjlFSkFBdUl2N3lQekh6QVA3Ni9mRTJBQVFBdmpKMUFOOFI4d0RlVlAzeTcrVFZBSDV4L3Z4L2MvTUEvdlA5K0I0UkJBQ1dBRlVBdjdIekFNNEF0UURmMlAzMFpnRCt1VjlVOHdEK2R2M3hKZ0FFQUtZQWRRQ2ZBUE1BcmdEOTh2LzMxUUJHQVA3MWYzVHpBT1lBL2ZnV0FBUUFoZ0JWQUkrSTh3REdBTFVBNytMOTlGNFI3cWcvRWZNQS92cjk4VFlBQkFDK01uVUEzOUh6QU41VS9mTC8rOVVBZm5IKy9IOUU4d0QrOC8zNEhoRUVBSllBVlFCL2N2TUF6Z0MxQU84aS9mUm1BUDY1VDBUekFQNTIvZkVtQUFRQXBnQjFBTDhSOHdDdUFQM3kvLy9WQUVZQS92VS9Ndk1BNWdEOStCWUFCQUNHQUZVQWJ3RHpBTVlBdFFDL3VQMzBYaEh1cUM4aUFFRzhuUUVMcEI0QkFBQUFBUUFBQUFFQUFBQUNBQUFBQWdBQUFBSUFBQUFEQUFBQUF3QUFBQVFBQUFBRkFBQUF0eUZDSVdjaFFpRVJFUkVSTXpNek0zZDNkM2NBQUFBQUFBQUFBQUZXQUFBQUFBQUFJRThBQURCUEFBQUJWZ0FBQVFBQUFEQlBBQUFnVHdBQUFUUUFBQUFBQUFCQVR3QUF3RThBQUFFMEFBQUJBQUFBVUU4QUFOQlBBQUFCR0FBQUFBQUFBR0JQQUFBZ1VBQUFBUmdBQUFFQUFBQndUd0FBTUZBQUFNRUtBQUFBQUFBQWdFOEFBSUJRQUFEQkNnQUFBUUFBQUpCUEFBQ1FVQUFBSVFVQUFBQUFBQUNnVHdBQW9GSUFBQ0VGQUFBQkFBQUFzRThBQUxCU0FBQWhBZ0FBQUFBQUFNQlRBQUFnVXdBQUlRSUFBQUVBQUFEUVV3QUFNRk1BQUFGV0FBQUFBQUFBNEU4QUFOQlBBQUFCVmdBQUFRQUFBUEJQQUFEQVR3QUFBVlFBQUFBQUFBQUFVQUFBd0ZBQUFBRlVBQUFCQUFBQUVGQUFBTkJRQUFBQlNBQUFBQUFBQUNCUUFBREFVQUFBQVVnQUFBRUFBQUF3VUFBQTBGQUFBQUU0QUFBQUFBQUFRRkFBQU1CUUFBQUJPQUFBQVFBQUFGQlFBQURRVUFBQUFUQUFBQUFBQUFCZ1VBQUFJRkVBQUFFd0FBQUJBQUFBY0ZBQUFEQlJBQUFCSkFBQUFBQUFBSUJRQUFCQVVRQUFBU1FBQUFFQUFBQ1FVQUFBVUZFQUFBRWNBQUFBQUFBQW9GQUFBSUJSQUFBQkhBQUFBUUFBQUxCUUFBQ1FVUUFBQVJZQUFBQUFBQUNnVWdBQW9GRUFBQUVXQUFBQkFBQUFzRklBQUxCUkFBQUJWZ0FBQUFBQUFPQlFBQURRVUFBQUFWWUFBQUVBQUFEd1VBQUF3RkFBQUFGVUFBQUFBQUFBQUZFQUFNQlFBQUFCVkFBQUFRQUFBQkJSQUFEUVVBQUFBVkVBQUFBQUFBQWdVUUFBNEZBQUFBRlJBQUFCQUFBQU1GRUFBUEJRQUFBQlNBQUFBQUFBQUVCUkFBQUFVUUFBQVVnQUFBRUFBQUJRVVFBQUVGRUFBQUU0QUFBQUFBQUFZRkVBQUNCUkFBQUJPQUFBQVFBQUFIQlJBQUF3VVFBQUFUUUFBQUFBQUFDQVVRQUFRRkVBQUFFMEFBQUJBQUFBa0ZFQUFGQlJBQUFCTUFBQUFBQUFBS0JSQUFCZ1VRQUFBVEFBQUFFQUFBQ3dVUUFBY0ZFQUFBRW9BQUFBQUFBQXdGRUFBR0JSQUFBQktBQUFBUUFBQU5CUkFBQndVUUFBQVNRQUFBQUFBQURnVVFBQWdGRUFBQUVrQUFBQkFBQUE4RkVBQUpCUkFBQUJJZ0FBQUFBQUFBQlNBQUNnVVFBQUFTSUFBQUVBQUFBUVVnQUFzRkVBQUFFY0FBQUFBQUFBSUZJQUFNQlJBQUFCSEFBQUFRQUFBREJTQUFEUVVRQUFBUmdBQUFBQUFBQkFVZ0FBNEZFQUFBRVlBQUFCQUFBQVVGSUFBUEJSQUFBQkZnQUFBQUFBQUdCU0FBQUFVZ0FBQVJZQUFBRUFBQUJ3VWdBQUVGSUFBQUVVQUFBQUFBQUFnRklBQUNCU0FBQUJGQUFBQVFBQUFKQlNBQUF3VWdBQUFSSUFBQUFBQUFDZ1VnQUFRRklBQUFFU0FBQUJBQUFBc0ZJQUFGQlNBQUFCRVFBQUFBQUFBTUJTQUFCZ1VnQUFBUkVBQUFFQUFBRFFVZ0FBY0ZJQUFNRUtBQUFBQUFBQTRGSUFBSUJTQUFEQkNnQUFBUUFBQVBCU0FBQ1FVZ0FBd1FrQUFBQUFBQUFBVXdBQW9GSUFBTUVKQUFBQkFBQUFFRk1BQUxCU0FBQ2hDQUFBQUFBQUFDQlRBQURBVWdBQW9RZ0FBQUVBQUFBd1V3QUEwRklBQUNFRkFBQUFBQUFBUUZNQUFPQlNBQUFoQlFBQUFRQUFBRkJUQUFEd1VnQUFRUVFBQUFBQUFBQmdVd0FBQUZNQUFFRUVBQUFCQUFBQWNGTUFBQkJUQUFDaEFnQUFBQUFBQUlCVEFBQWdVd0FBb1FJQUFBRUFBQUNRVXdBQU1GTUFBQ0VDQUFBQUFBQUFvRk1BQUVCVEFBQWhBZ0FBQVFBQUFMQlRBQUJRVXdBQVFRRUFBQUFBQUFEQVV3QUFZRk1BQUVFQkFBQUJBQUFBMEZNQUFIQlRBQUFSQVFBQUFBQUFBT0JUQUFDQVV3QUFFUUVBQUFFQUFBRHdVd0FBa0ZNQUFJVUFBQUFBQUFBQUFGUUFBS0JUQUFDRkFBQUFBUUFBQUJCVUFBQ3dVd0FBU1FBQUFBQUFBQUFnVkFBQXdGTUFBRWtBQUFBQkFBQUFNRlFBQU5CVEFBQWxBQUFBQUFBQUFFQlVBQURnVXdBQUpRQUFBQUVBQUFCUVZBQUE4Rk1BQUJVQUFBQUFBQUFBWUZRQUFBQlVBQUFWQUFBQUFRQUFBSEJVQUFBUVZBQUFDUUFBQUFBQUFBQ0FWQUFBSUZRQUFBa0FBQUFCQUFBQWtGUUFBREJVQUFBRkFBQUFBQUFBQUtCVUFBQkFWQUFBQlFBQUFBRUFBQUN3VkFBQVVGUUFBQUVBQUFBQUFBQUFvRlFBQUdCVUFBQUJBQUFBQVFBQUFMQlVBQUJ3VkFBQUFWWUFBQUFBQUFEQVZBQUF3RlFBQUFGV0FBQUJBQUFBMEZRQUFOQlVBQUFBQVFNREFRSURBd1VHQndjR0JnY0hBQUVEQXdFQ0F3TUZCZ2NIQmdZSEJ3VUdCd2NHQmdjSENBZ0lDQWdJQ0FnRkJnY0hCZ1lIQndnSUNBZ0lDQWdJQVFJREF3SUNBd01HQmdjSEJnWUhCd0VDQXdNQ0FnTURCZ1lIQndZR0J3Y0dCZ2NIQmdZSEJ3Z0lDQWdJQ0FnSUJnWUhCd1lHQndjSUNBZ0lDQWdJQ0FNREJBUURBd1FFQndjSEJ3Y0hCd2NEQXdRRUF3TUVCQWNIQndjSEJ3Y0hCd2NIQndjSEJ3Y0lDQWdJQ0FnSUNBY0hCd2NIQndjSENBZ0lDQWdJQ0FnREF3UUVBd01FQkFjSEJ3Y0hCd2NIQXdNRUJBTURCQVFIQndjSEJ3Y0hCd2NIQndjSEJ3Y0hDQWdJQ0FnSUNBZ0hCd2NIQndjSEJ3Z0lDQWdJQ0FnSUFRSURBd0lDQXdNR0JnY0hCZ1lIQndFQ0F3TUNBZ01EQmdZSEJ3WUdCd2NHQmdjSEJnWUhCd2dJQ0FnSUNBZ0lCZ1lIQndZR0J3Y0lDQWdJQ0FnSUNBSUNBd01DQWdNREJnWUhCd1lHQndjQ0FnTURBZ0lEQXdZR0J3Y0dCZ2NIQmdZSEJ3WUdCd2NJQ0FnSUNBZ0lDQVlHQndjR0JnY0hDQWdJQ0FnSUNBZ0RBd1FFQXdNRUJBY0hCd2NIQndjSEF3TUVCQU1EQkFRSEJ3Y0hCd2NIQndjSEJ3Y0hCd2NIQ0FnSUNBZ0lDQWdIQndjSEJ3Y0hCd2dJQ0FnSUNBZ0lBd01FQkFNREJBUUhCd2NIQndjSEJ3TURCQVFEQXdRRUJ3Y0hCd2NIQndjSEJ3Y0hCd2NIQndnSUNBZ0lDQWdJQndjSEJ3Y0hCd2NJQ0FnSUNBZ0lDQUFCQlFZQkFnWUdBd01IQndNREJ3Y0FBUVVHQVFJR0JnTURCd2NEQXdjSEF3TUhCd01EQndjRUJBY0hCQVFIQndNREJ3Y0RBd2NIQkFRSEJ3UUVCd2NCQWdZR0FnSUdCZ01EQndjREF3Y0hBUUlHQmdJQ0JnWURBd2NIQXdNSEJ3TURCd2NEQXdjSEJBUUhCd1FFQndjREF3Y0hBd01IQndRRUJ3Y0VCQWNIQlFZSUNBWUdDQWdIQndnSUJ3Y0lDQVVHQ0FnR0JnZ0lCd2NJQ0FjSENBZ0hCd2dJQndjSUNBY0hDQWdIQndnSUJ3Y0lDQWNIQ0FnSEJ3Z0lCd2NJQ0FZR0NBZ0dCZ2dJQndjSUNBY0hDQWdHQmdnSUJnWUlDQWNIQ0FnSEJ3Z0lCd2NJQ0FjSENBZ0hCd2dJQndjSUNBY0hDQWdIQndnSUJ3Y0lDQWNIQ0FnQkFnWUdBZ0lHQmdNREJ3Y0RBd2NIQVFJR0JnSUNCZ1lEQXdjSEF3TUhCd01EQndjREF3Y0hCQVFIQndRRUJ3Y0RBd2NIQXdNSEJ3UUVCd2NFQkFjSEFnSUdCZ0lDQmdZREF3Y0hBd01IQndJQ0JnWUNBZ1lHQXdNSEJ3TURCd2NEQXdjSEF3TUhCd1FFQndjRUJBY0hBd01IQndNREJ3Y0VCQWNIQkFRSEJ3WUdDQWdHQmdnSUJ3Y0lDQWNIQ0FnR0JnZ0lCZ1lJQ0FjSENBZ0hCd2dJQndjSUNBY0hDQWdIQndnSUJ3Y0lDQWNIQ0FnSEJ3Z0lCd2NJQ0FjSENBZ0dCZ2dJQmdZSUNBY0hDQWdIQndnSUJnWUlDQVlHQ0FnSEJ3Z0lCd2NJQ0FjSENBZ0hCd2dJQndjSUNBY0hDQWdIQndnSUJ3Y0lDQWNIQ0FnSEJ3Z0lBQUVEQXdFQ0F3TUZCZ2NIQmdZSEJ3QUJBd01CQWdNREJRWUhCd1lHQndjRkJnY0hCZ1lIQndnSUNBZ0lDQWdJQlFZSEJ3WUdCd2NJQ0FnSUNBZ0lDQUVDQXdNQ0FnTURCZ1lIQndZR0J3Y0JBZ01EQWdJREF3WUdCd2NHQmdjSEJnWUhCd1lHQndjSUNBZ0lDQWdJQ0FZR0J3Y0dCZ2NIQ0FnSUNBZ0lDQWdEQXdRRUF3TUVCQWNIQndjSEJ3Y0hBd01FQkFNREJBUUhCd2NIQndjSEJ3Y0hCd2NIQndjSENBZ0lDQWdJQ0FnSEJ3Y0hCd2NIQndnSUNBZ0lDQWdJQXdNRUJBTURCQVFIQndjSEJ3Y0hCd01EQkFRREF3UUVCd2NIQndjSEJ3Y0hCd2NIQndjSEJ3Z0lDQWdJQ0FnSUJ3Y0hCd2NIQndjSUNBZ0lDQWdJQ0FFQ0F3TUNBZ01EQmdZSEJ3WUdCd2NCQWdNREFnSURBd1lHQndjR0JnY0hCZ1lIQndZR0J3Y0lDQWdJQ0FnSUNBWUdCd2NHQmdjSENBZ0lDQWdJQ0FnQ0FnTURBZ0lEQXdZR0J3Y0dCZ2NIQWdJREF3SUNBd01HQmdjSEJnWUhCd1lHQndjR0JnY0hDQWdJQ0FnSUNBZ0dCZ2NIQmdZSEJ3Z0lDQWdJQ0FnSUF3TUVCQU1EQkFRSEJ3Y0hCd2NIQndNREJBUURBd1FFQndjSEJ3Y0hCd2NIQndjSEJ3Y0hCd2dJQ0FnSUNBZ0lCd2NIQndjSEJ3Y0lDQWdJQ0FnSUNBTURCQVFEQXdRRUJ3Y0hCd2NIQndjREF3UUVBd01FQkFjSEJ3Y0hCd2NIQndjSEJ3Y0hCd2NJQ0FnSUNBZ0lDQWNIQndjSEJ3Y0hDQWdJQ0FnSUNBZ0FBd0VFQXdZRUJ3RUVBZ1VFQndVSEFBTUJCQU1HQkFjQkJBSUZCQWNGQndFRUFnVUVCd1VIQWdVQ0JRVUhCUWNCQkFJRkJBY0ZCd0lGQWdVRkJ3VUhBd1lFQndZSUJ3Z0VCd1VIQndnSENBTUdCQWNHQ0FjSUJBY0ZCd2NJQndnRUJ3VUhCd2dIQ0FVSEJRY0hDQWNJQkFjRkJ3Y0lCd2dGQndVSEJ3Z0hDQUVFQWdVRUJ3VUhBZ1VDQlFVSEJRY0JCQUlGQkFjRkJ3SUZBZ1VGQndVSEFnVUNCUVVIQlFjQ0JRSUZCUWNGQndJRkFnVUZCd1VIQWdVQ0JRVUhCUWNFQndVSEJ3Z0hDQVVIQlFjSENBY0lCQWNGQndjSUJ3Z0ZCd1VIQndnSENBVUhCUWNIQ0FjSUJRY0ZCd2NJQndnRkJ3VUhCd2dIQ0FVSEJRY0hDQWNJQXdZRUJ3WUlCd2dFQndVSEJ3Z0hDQU1HQkFjR0NBY0lCQWNGQndjSUJ3Z0VCd1VIQndnSENBVUhCUWNIQ0FjSUJBY0ZCd2NJQndnRkJ3VUhCd2dIQ0FZSUJ3Z0lDQWdJQndnSENBZ0lDQWdHQ0FjSUNBZ0lDQWNJQndnSUNBZ0lCd2dIQ0FnSUNBZ0hDQWNJQ0FnSUNBY0lCd2dJQ0FnSUJ3Z0hDQWdJQ0FnRUJ3VUhCd2dIQ0FVSEJRY0hDQWNJQkFjRkJ3Y0lCd2dGQndVSEJ3Z0hDQVVIQlFjSENBY0lCUWNGQndjSUJ3Z0ZCd1VIQndnSENBVUhCUWNIQ0FjSUJ3Z0hDQWdJQ0FnSENBY0lDQWdJQ0FjSUJ3Z0lDQWdJQndnSENBZ0lDQWdIQ0FjSUNBZ0lDQWNJQndnSUNBZ0lCd2dIQ0FnSUNBZ0hDQWNJQ0FnSUNBa0pDZ29KQ1FvS0RBd05Dd3dNRFFzSkNRb0tDUWtLQ2d3TUN3ME1EQXNOREF3TkRRd01Dd3NNQ1EwS0NRd0tDd3dNQ3dzTURBME5EQWtMQ2drTUNnMEpDUW9LQ1FrS0Nnd01EUXNNREEwTENRa0tDZ2tKQ2dvTURBc05EQXdMRFF3TURRME1EQXNMREFrTkNna01DZ3NNREFzTERBd05EUXdKQ3dvSkRBb05DZ29LQ2dvS0Nnb05DdzBMRFFzTkN3b0tDUWtLQ2drSkRRc01EQTBMREF3TkRRME5Dd3NMQ3cwS0RRb0tDd29MRFEwTURBc0xEQXdOQ2d3SkNnc0pEQW9LQ1FrS0Nna0pDdzBNREFzTkRBd0tDZ29LQ2dvS0Nnc05DdzBMRFFzTkN3c01EQTBOREF3TENnd0pDZzBKREFzTEN3c05EUTBOQ3dvTENnb05DZzBBUWVtN0FRczNBUUFCQUFFQUFRQUFBUUVBQUFFQkFBRUFBUUFCQUFFQUFBQUFBUUVCQVFBQUFBQUFBUUFCQUFBQUFBRUJBUUVBQUFBQkFBRUJBUUJCcWJ3QkN6Y0JBQUVBQVFBQkFBQUJBUUFBQVFFQUFRQUJBQUVBQVFBQUFBQUJBUUVCQUFBQUFBQUJBQUVBQUFBQUFRRUJBUUFBQUFFQUFRRUJBRUhwdkFFTEJ3RUFBUUFCQUFFQVFmbThBUXVWQWdFQUFRQUJBQUVBQUFBQUFRRUJBUUFBQUFBQUFRQUJBQUFBQUFFQkFRRUFBQUFBQUFFQUFRRUJBQUFCQVFBQUFBRUFBUUFCQUFFQkFRRUJBUUVCQVFBQkFBRUFBUUFCQUFBQUFBRUJBUUVBQVFBQUFRRUFBUUFBQUFBQkFRRUJBQUVBQVFFQkFRRUNBQUFBQkFBQUFBUUFBQUFJQUFBQWtQOEFBQXdBQUFBWUFBQUFVdjhBQUJRQUFBQVpBQUFBVS84QUFCUUFBQUFhQUFBQVh2OEFBQlFBQUFBYkFBQUFYUDhBQUJRQUFBQWNBQUFBWGY4QUFCUUFBQUFkQUFBQVgvOEFBQlFBQUFBZUFBQUFVZjhBQUFJQUFBQWZBQUFBVmY4QUFBUUFBQUFnQUFBQVYvOEFBQVFBQUFBaEFBQUFXUDhBQUJBQUFBQWlBQUFBWVA4QUFBUUFBQUFqQUFBQVlmOEFBQkFBQUFBa0FBQUFrZjhBUVppL0FRdGxZLzhBQUFRQUFBQWxBQUFBWlA4QUFCUUFBQUFtQUFBQWRQOEFBQlFBQUFBbkFBQUFlUDhBQUFRQUFBQW9BQUFBVVA4QUFBUUFBQUFwQUFBQVdmOEFBQVFBQUFBcUFBQUFkZjhBQUJRQUFBQXJBQUFBZC84QUFCUUFBQUFzQUFBQUFBQUFBQlFBUVpEQUFRczFMUUFBQUM0QUFBQXZBQUFBTUFBQUFERUFBQUF5QUFBQU13QUFBRFFBQUFBZ0lGQnFOZ0FBQUhCNWRHWTNBQUFBYURKd2FqZ0FRZERBQVFzeWNtUm9hVGtBQUFCeWJHOWpPZ0FBQUdOamNHSTdBQUFBY214amNEd0FBQUJ3WVcxalBRQUFBR1psWkdNK0FBQUFlR0lBUVpEQkFRdEJHUUFMQUJrWkdRQUFBQUFGQUFBQUFBQUFDUUFBQUFBTEFBQUFBQUFBQUFBWkFBb0tHUmtaQXdvSEFBRUFDUXNZQUFBSkJnc0FBQXNBQmhrQUFBQVpHUmtBUWVIQkFRc2hEZ0FBQUFBQUFBQUFHUUFMRFJrWkdRQU5BQUFDQUFrT0FBQUFDUUFPQUFBT0FFR2J3Z0VMQVF3QVFhZkNBUXNWRXdBQUFBQVRBQUFBQUFrTUFBQUFBQUFNQUFBTUFFSFZ3Z0VMQVJBQVFlSENBUXNWRHdBQUFBUVBBQUFBQUFrUUFBQUFBQUFRQUFBUUFFR1B3d0VMQVJJQVFadkRBUXNlRVFBQUFBQVJBQUFBQUFrU0FBQUFBQUFTQUFBU0FBQWFBQUFBR2hvYUFFSFN3d0VMRGhvQUFBQWFHaG9BQUFBQUFBQUpBRUdEeEFFTEFSUUFRWS9FQVFzVkZ3QUFBQUFYQUFBQUFBa1VBQUFBQUFBVUFBQVVBRUc5eEFFTEFSWUFRY25FQVFzbkZRQUFBQUFWQUFBQUFBa1dBQUFBQUFBV0FBQVdBQUF3TVRJek5EVTJOemc1UVVKRFJFVkdBRUh4eEFFTENHd0JBQUFBQUFBRkFFR0V4UUVMQVdrQVFaekZBUXNPYWdBQUFHc0FBQUQ0WndBQUFBUUFRYlRGQVFzQkFRQkJ4TVVCQ3dYLy8vLy9DZz09IjtmdW5jdGlvbiBpbnN0YW50aWF0ZVN5bmMoZSx0KXt2YXIgaSxhPWZ1bmN0aW9uIGdldEJpbmFyeVN5bmMoZSl7aWYoZT09dSYmZylyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoZyk7dmFyIHQ9dHJ5UGFyc2VBc0RhdGFVUkkoZSk7aWYodClyZXR1cm4gdDtpZihzKXJldHVybiBzKGUpO3Rocm93J3N5bmMgZmV0Y2hpbmcgb2YgdGhlIHdhc20gZmFpbGVkOiB5b3UgY2FuIHByZWxvYWQgaXQgdG8gTW9kdWxlWyJ3YXNtQmluYXJ5Il0gbWFudWFsbHksIG9yIGVtY2MucHkgd2lsbCBkbyB0aGF0IGZvciB5b3Ugd2hlbiBnZW5lcmF0aW5nIEhUTUwgKGJ1dCBub3QgSlMpJ30oZSk7aT1uZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGEpO3JldHVybltuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UoaSx0KSxpXX12YXIgRCxjYWxsUnVudGltZUNhbGxiYWNrcz1lPT57Zm9yKDtlLmxlbmd0aD4wOyllLnNoaWZ0KCkoYSl9LEY9KGEubm9FeGl0UnVudGltZSxlPT57dmFyIHQ9KGUtYy5idWZmZXIuYnl0ZUxlbmd0aCs2NTUzNSkvNjU1MzY7dHJ5e2MuZ3Jvdyh0KTt1cGRhdGVNZW1vcnlWaWV3cygpO3JldHVybiAxfWNhdGNoKGUpe319KSxTPXt9LGdldEVudlN0cmluZ3M9KCk9PntpZighZ2V0RW52U3RyaW5ncy5zdHJpbmdzKXt2YXIgZT17VVNFUjoid2ViX3VzZXIiLExPR05BTUU6IndlYl91c2VyIixQQVRIOiIvIixQV0Q6Ii8iLEhPTUU6Ii9ob21lL3dlYl91c2VyIixMQU5HOigib2JqZWN0Ij09dHlwZW9mIG5hdmlnYXRvciYmbmF2aWdhdG9yLmxhbmd1YWdlcyYmbmF2aWdhdG9yLmxhbmd1YWdlc1swXXx8IkMiKS5yZXBsYWNlKCItIiwiXyIpKyIuVVRGLTgiLF86bnx8Ii4vdGhpcy5wcm9ncmFtIn07Zm9yKHZhciB0IGluIFMpdm9pZCAwPT09U1t0XT9kZWxldGUgZVt0XTplW3RdPVNbdF07dmFyIGk9W107Zm9yKHZhciB0IGluIGUpaS5wdXNoKGAke3R9PSR7ZVt0XX1gKTtnZXRFbnZTdHJpbmdzLnN0cmluZ3M9aX1yZXR1cm4gZ2V0RW52U3RyaW5ncy5zdHJpbmdzfSxrPVtudWxsLFtdLFtdXSxOPSJ1bmRlZmluZWQiIT10eXBlb2YgVGV4dERlY29kZXI/bmV3IFRleHREZWNvZGVyKCJ1dGY4Iik6dm9pZCAwLFVURjhBcnJheVRvU3RyaW5nPShlLHQsaSk9Pntmb3IodmFyIGE9dCtpLHM9dDtlW3NdJiYhKHM+PWEpOykrK3M7aWYocy10PjE2JiZlLmJ1ZmZlciYmTilyZXR1cm4gTi5kZWNvZGUoZS5zdWJhcnJheSh0LHMpKTtmb3IodmFyIHI9IiI7dDxzOyl7dmFyIG49ZVt0KytdO2lmKDEyOCZuKXt2YXIgbz02MyZlW3QrK107aWYoMTkyIT0oMjI0Jm4pKXt2YXIgZz02MyZlW3QrK107aWYoKG49MjI0PT0oMjQwJm4pPygxNSZuKTw8MTJ8bzw8NnxnOig3Jm4pPDwxOHxvPDwxMnxnPDw2fDYzJmVbdCsrXSk8NjU1MzYpcis9U3RyaW5nLmZyb21DaGFyQ29kZShuKTtlbHNle3ZhciBjPW4tNjU1MzY7cis9U3RyaW5nLmZyb21DaGFyQ29kZSg1NTI5NnxjPj4xMCw1NjMyMHwxMDIzJmMpfX1lbHNlIHIrPVN0cmluZy5mcm9tQ2hhckNvZGUoKDMxJm4pPDw2fG8pfWVsc2Ugcis9U3RyaW5nLmZyb21DaGFyQ29kZShuKX1yZXR1cm4gcn0scHJpbnRDaGFyPShlLHQpPT57dmFyIGk9a1tlXTtpZigwPT09dHx8MTA9PT10KXsoMT09PWU/UTpFKShVVEY4QXJyYXlUb1N0cmluZyhpLDApKTtpLmxlbmd0aD0wfWVsc2UgaS5wdXNoKHQpfSxVVEY4VG9TdHJpbmc9KGUsdCk9PmU/VVRGOEFycmF5VG9TdHJpbmcoaCxlLHQpOiIiLFI9e2Y6KGUsdCxpKT0+aC5jb3B5V2l0aGluKGUsdCx0K2kpLGI6ZT0+e3ZhciB0PWgubGVuZ3RoLGk9MjE0NzQ4MzY0ODtpZigoZT4+Pj0wKT5pKXJldHVybiExO2Zvcih2YXIgYSxzLHI9MTtyPD00O3IqPTIpe3ZhciBuPXQqKDErLjIvcik7bj1NYXRoLm1pbihuLGUrMTAwNjYzMjk2KTt2YXIgbz1NYXRoLm1pbihpLChhPU1hdGgubWF4KGUsbikpKygocz02NTUzNiktYSVzKSVzKTtpZihGKG8pKXJldHVybiEwfXJldHVybiExfSxjOihlLHQpPT57dmFyIGk9MDtnZXRFbnZTdHJpbmdzKCkuZm9yRWFjaCgoKGEscyk9Pnt2YXIgcj10K2k7bFtlKzQqcz4+Ml09cjsoKGUsdCk9Pntmb3IodmFyIGk9MDtpPGUubGVuZ3RoOysraSlDW3QrK109ZS5jaGFyQ29kZUF0KGkpO0NbdF09MH0pKGEscik7aSs9YS5sZW5ndGgrMX0pKTtyZXR1cm4gMH0sZDooZSx0KT0+e3ZhciBpPWdldEVudlN0cmluZ3MoKTtsW2U+PjJdPWkubGVuZ3RoO3ZhciBhPTA7aS5mb3JFYWNoKChlPT5hKz1lLmxlbmd0aCsxKSk7bFt0Pj4yXT1hO3JldHVybiAwfSxlOihlLHQsaSxhKT0+e2Zvcih2YXIgcz0wLHI9MDtyPGk7cisrKXt2YXIgbj1sW3Q+PjJdLG89bFt0KzQ+PjJdO3QrPTg7Zm9yKHZhciBnPTA7ZzxvO2crKylwcmludENoYXIoZSxoW24rZ10pO3MrPW99bFthPj4yXT1zO3JldHVybiAwfSxnOmZ1bmN0aW9uIF9qc1ByaW50V2FybmluZyhlKXtjb25zdCB0PVVURjhUb1N0cmluZyhlKTsoYS53YXJufHxjb25zb2xlLndhcm4pKGBPcGVuSlBFRzogJHt0fWApfSxoOmZ1bmN0aW9uIF9zZXRJbWFnZURhdGEoZSx0KXthLmltYWdlRGF0YT1uZXcgVWludDhDbGFtcGVkQXJyYXkoYS5IRUFQVTguc3ViYXJyYXkoZSxlK3QpKX0sYTpmdW5jdGlvbiBfc3RvcmVFcnJvck1lc3NhZ2UoZSl7Y29uc3QgdD1VVEY4VG9TdHJpbmcoZSk7YS5lcnJvck1lc3NhZ2VzP2EuZXJyb3JNZXNzYWdlcys9IlxuIit0OmEuZXJyb3JNZXNzYWdlcz10fX0sRz1mdW5jdGlvbiBjcmVhdGVXYXNtKCl7dmFyIGU9e2E6Un07ZnVuY3Rpb24gcmVjZWl2ZUluc3RhbmNlKGUsdCl7Rz1lLmV4cG9ydHM7Yz1HLmk7dXBkYXRlTWVtb3J5Vmlld3MoKTshZnVuY3Rpb24gYWRkT25Jbml0KGUpe2YudW5zaGlmdChlKX0oRy5qKTshZnVuY3Rpb24gcmVtb3ZlUnVuRGVwZW5kZW5jeShlKXttLS07YS5tb25pdG9yUnVuRGVwZW5kZW5jaWVzPy4obSk7aWYoMD09bSl7aWYobnVsbCE9PXkpe2NsZWFySW50ZXJ2YWwoeSk7eT1udWxsfWlmKHcpe3ZhciB0PXc7dz1udWxsO3QoKX19fSgpO3JldHVybiBHfSFmdW5jdGlvbiBhZGRSdW5EZXBlbmRlbmN5KGUpe20rKzthLm1vbml0b3JSdW5EZXBlbmRlbmNpZXM/LihtKX0oKTtpZihhLmluc3RhbnRpYXRlV2FzbSl0cnl7cmV0dXJuIGEuaW5zdGFudGlhdGVXYXNtKGUscmVjZWl2ZUluc3RhbmNlKX1jYXRjaChlKXtFKGBNb2R1bGUuaW5zdGFudGlhdGVXYXNtIGNhbGxiYWNrIGZhaWxlZCB3aXRoIGVycm9yOiAke2V9YCk7aShlKX1yZXR1cm4gcmVjZWl2ZUluc3RhbmNlKGluc3RhbnRpYXRlU3luYyh1LGUpWzBdKX0oKTtHLmosYS5fbWFsbG9jPUcuayxhLl9mcmVlPUcubCxhLl9qcDJfZGVjb2RlPUcubixHLl9lbXNjcmlwdGVuX3N0YWNrX3Jlc3RvcmUsRy5fZW1zY3JpcHRlbl9zdGFja19hbGxvYyxHLmVtc2NyaXB0ZW5fc3RhY2tfZ2V0X2N1cnJlbnQ7dz1mdW5jdGlvbiBydW5DYWxsZXIoKXtEfHxydW4oKTtEfHwodz1ydW5DYWxsZXIpfTtmdW5jdGlvbiBydW4oKXtpZighKG0+MCkpeyFmdW5jdGlvbiBwcmVSdW4oKXtpZihhLnByZVJ1bil7ImZ1bmN0aW9uIj09dHlwZW9mIGEucHJlUnVuJiYoYS5wcmVSdW49W2EucHJlUnVuXSk7Zm9yKDthLnByZVJ1bi5sZW5ndGg7KWU9YS5wcmVSdW4uc2hpZnQoKSxkLnVuc2hpZnQoZSl9dmFyIGU7Y2FsbFJ1bnRpbWVDYWxsYmFja3MoZCl9KCk7aWYoIShtPjApKWlmKGEuc2V0U3RhdHVzKXthLnNldFN0YXR1cygiUnVubmluZy4uLiIpO3NldFRpbWVvdXQoKGZ1bmN0aW9uKCl7c2V0VGltZW91dCgoZnVuY3Rpb24oKXthLnNldFN0YXR1cygiIil9KSwxKTtkb1J1bigpfSksMSl9ZWxzZSBkb1J1bigpfWZ1bmN0aW9uIGRvUnVuKCl7aWYoIUQpe0Q9ITA7YS5jYWxsZWRSdW49ITA7IWZ1bmN0aW9uIGluaXRSdW50aW1lKCl7Y2FsbFJ1bnRpbWVDYWxsYmFja3MoZil9KCk7dChhKTthLm9uUnVudGltZUluaXRpYWxpemVkJiZhLm9uUnVudGltZUluaXRpYWxpemVkKCk7IWZ1bmN0aW9uIHBvc3RSdW4oKXtpZihhLnBvc3RSdW4peyJmdW5jdGlvbiI9PXR5cGVvZiBhLnBvc3RSdW4mJihhLnBvc3RSdW49W2EucG9zdFJ1bl0pO2Zvcig7YS5wb3N0UnVuLmxlbmd0aDspZT1hLnBvc3RSdW4uc2hpZnQoKSxwLnVuc2hpZnQoZSl9dmFyIGU7Y2FsbFJ1bnRpbWVDYWxsYmFja3MocCl9KCl9fX1pZihhLnByZUluaXQpeyJmdW5jdGlvbiI9PXR5cGVvZiBhLnByZUluaXQmJihhLnByZUluaXQ9W2EucHJlSW5pdF0pO2Zvcig7YS5wcmVJbml0Lmxlbmd0aD4wOylhLnByZUluaXQucG9wKCkoKX1ydW4oKTtyZXR1cm4gZX0pO2NvbnN0IElpPWdpO2NsYXNzIEpweEVycm9yIGV4dGVuZHMgcnR7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiSnB4RXJyb3IiKX19Y2xhc3MgSnB4SW1hZ2V7c3RhdGljI3k9bnVsbDtzdGF0aWMgZGVjb2RlKGUsdD0hMSl7dGhpcy4jeXx8PUlpKHt3YXJufSk7Y29uc3QgaT10aGlzLiN5LmRlY29kZShlLHQpO2lmKCJzdHJpbmciPT10eXBlb2YgaSl0aHJvdyBuZXcgSnB4RXJyb3IoaSk7cmV0dXJuIGl9c3RhdGljIGNsZWFudXAoKXt0aGlzLiN5PW51bGx9c3RhdGljIHBhcnNlSW1hZ2VQcm9wZXJ0aWVzKGUpe2xldCB0PWUuZ2V0Qnl0ZSgpO2Zvcig7dD49MDspe2NvbnN0IGk9dDt0PWUuZ2V0Qnl0ZSgpO2lmKDY1MzYxPT09KGk8PDh8dCkpe2Uuc2tpcCg0KTtjb25zdCB0PWUuZ2V0SW50MzIoKT4+PjAsaT1lLmdldEludDMyKCk+Pj4wLGE9ZS5nZXRJbnQzMigpPj4+MCxzPWUuZ2V0SW50MzIoKT4+PjA7ZS5za2lwKDE2KTtyZXR1cm57d2lkdGg6dC1hLGhlaWdodDppLXMsYml0c1BlckNvbXBvbmVudDo4LGNvbXBvbmVudHNDb3VudDplLmdldFVpbnQxNigpfX19dGhyb3cgbmV3IEpweEVycm9yKCJObyBzaXplIG1hcmtlciBmb3VuZCBpbiBKUFggc3RyZWFtIil9fWNsYXNzIEpweFN0cmVhbSBleHRlbmRzIERlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQsaSl7c3VwZXIodCk7dGhpcy5zdHJlYW09ZTt0aGlzLmRpY3Q9ZS5kaWN0O3RoaXMubWF5YmVMZW5ndGg9dDt0aGlzLnBhcmFtcz1pfWdldCBieXRlcygpe3JldHVybiBzaGFkb3codGhpcywiYnl0ZXMiLHRoaXMuc3RyZWFtLmdldEJ5dGVzKHRoaXMubWF5YmVMZW5ndGgpKX1lbnN1cmVCdWZmZXIoZSl7fXJlYWRCbG9jayhlKXtpZighdGhpcy5lb2Ype3RoaXMuYnVmZmVyPUpweEltYWdlLmRlY29kZSh0aGlzLmJ5dGVzLGUpO3RoaXMuYnVmZmVyTGVuZ3RoPXRoaXMuYnVmZmVyLmxlbmd0aDt0aGlzLmVvZj0hMH19fWNsYXNzIExaV1N0cmVhbSBleHRlbmRzIERlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQsaSl7c3VwZXIodCk7dGhpcy5zdHI9ZTt0aGlzLmRpY3Q9ZS5kaWN0O3RoaXMuY2FjaGVkRGF0YT0wO3RoaXMuYml0c0NhY2hlZD0wO2NvbnN0IGE9NDA5NixzPXtlYXJseUNoYW5nZTppLGNvZGVMZW5ndGg6OSxuZXh0Q29kZToyNTgsZGljdGlvbmFyeVZhbHVlczpuZXcgVWludDhBcnJheShhKSxkaWN0aW9uYXJ5TGVuZ3RoczpuZXcgVWludDE2QXJyYXkoYSksZGljdGlvbmFyeVByZXZDb2RlczpuZXcgVWludDE2QXJyYXkoYSksY3VycmVudFNlcXVlbmNlOm5ldyBVaW50OEFycmF5KGEpLGN1cnJlbnRTZXF1ZW5jZUxlbmd0aDowfTtmb3IobGV0IGU9MDtlPDI1NjsrK2Upe3MuZGljdGlvbmFyeVZhbHVlc1tlXT1lO3MuZGljdGlvbmFyeUxlbmd0aHNbZV09MX10aGlzLmx6d1N0YXRlPXN9cmVhZEJpdHMoZSl7bGV0IHQ9dGhpcy5iaXRzQ2FjaGVkLGk9dGhpcy5jYWNoZWREYXRhO2Zvcig7dDxlOyl7Y29uc3QgZT10aGlzLnN0ci5nZXRCeXRlKCk7aWYoLTE9PT1lKXt0aGlzLmVvZj0hMDtyZXR1cm4gbnVsbH1pPWk8PDh8ZTt0Kz04fXRoaXMuYml0c0NhY2hlZD10LT1lO3RoaXMuY2FjaGVkRGF0YT1pO3RoaXMubGFzdENvZGU9bnVsbDtyZXR1cm4gaT4+PnQmKDE8PGUpLTF9cmVhZEJsb2NrKCl7bGV0IGUsdCxpLGE9MTAyNDtjb25zdCBzPXRoaXMubHp3U3RhdGU7aWYoIXMpcmV0dXJuO2NvbnN0IHI9cy5lYXJseUNoYW5nZTtsZXQgbj1zLm5leHRDb2RlO2NvbnN0IG89cy5kaWN0aW9uYXJ5VmFsdWVzLGc9cy5kaWN0aW9uYXJ5TGVuZ3RocyxjPXMuZGljdGlvbmFyeVByZXZDb2RlcztsZXQgQz1zLmNvZGVMZW5ndGgsaD1zLnByZXZDb2RlO2NvbnN0IGw9cy5jdXJyZW50U2VxdWVuY2U7bGV0IFE9cy5jdXJyZW50U2VxdWVuY2VMZW5ndGgsRT0wLHU9dGhpcy5idWZmZXJMZW5ndGgsZD10aGlzLmVuc3VyZUJ1ZmZlcih0aGlzLmJ1ZmZlckxlbmd0aCthKTtmb3IoZT0wO2U8NTEyO2UrKyl7Y29uc3QgZT10aGlzLnJlYWRCaXRzKEMpLHM9UT4wO2lmKGU8MjU2KXtsWzBdPWU7UT0xfWVsc2V7aWYoIShlPj0yNTgpKXtpZigyNTY9PT1lKXtDPTk7bj0yNTg7UT0wO2NvbnRpbnVlfXRoaXMuZW9mPSEwO2RlbGV0ZSB0aGlzLmx6d1N0YXRlO2JyZWFrfWlmKGU8bil7UT1nW2VdO2Zvcih0PVEtMSxpPWU7dD49MDt0LS0pe2xbdF09b1tpXTtpPWNbaV19fWVsc2UgbFtRKytdPWxbMF19aWYocyl7Y1tuXT1oO2dbbl09Z1toXSsxO29bbl09bFswXTtuKys7Qz1uK3ImbityLTE/QzowfE1hdGgubWluKE1hdGgubG9nKG4rcikvLjY5MzE0NzE4MDU1OTk0NTMrMSwxMil9aD1lO0UrPVE7aWYoYTxFKXtkb3thKz01MTJ9d2hpbGUoYTxFKTtkPXRoaXMuZW5zdXJlQnVmZmVyKHRoaXMuYnVmZmVyTGVuZ3RoK2EpfWZvcih0PTA7dDxRO3QrKylkW3UrK109bFt0XX1zLm5leHRDb2RlPW47cy5jb2RlTGVuZ3RoPUM7cy5wcmV2Q29kZT1oO3MuY3VycmVudFNlcXVlbmNlTGVuZ3RoPVE7dGhpcy5idWZmZXJMZW5ndGg9dX19Y2xhc3MgUHJlZGljdG9yU3RyZWFtIGV4dGVuZHMgRGVjb2RlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCxpKXtzdXBlcih0KTtpZighKGkgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm4gZTtjb25zdCBhPXRoaXMucHJlZGljdG9yPWkuZ2V0KCJQcmVkaWN0b3IiKXx8MTtpZihhPD0xKXJldHVybiBlO2lmKDIhPT1hJiYoYTwxMHx8YT4xNSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBVbnN1cHBvcnRlZCBwcmVkaWN0b3I6ICR7YX1gKTt0aGlzLnJlYWRCbG9jaz0yPT09YT90aGlzLnJlYWRCbG9ja1RpZmY6dGhpcy5yZWFkQmxvY2tQbmc7dGhpcy5zdHI9ZTt0aGlzLmRpY3Q9ZS5kaWN0O2NvbnN0IHM9dGhpcy5jb2xvcnM9aS5nZXQoIkNvbG9ycyIpfHwxLHI9dGhpcy5iaXRzPWkuZ2V0KCJCUEMiLCJCaXRzUGVyQ29tcG9uZW50Iil8fDgsbj10aGlzLmNvbHVtbnM9aS5nZXQoIkNvbHVtbnMiKXx8MTt0aGlzLnBpeEJ5dGVzPXMqcis3Pj4zO3RoaXMucm93Qnl0ZXM9bipzKnIrNz4+MztyZXR1cm4gdGhpc31yZWFkQmxvY2tUaWZmKCl7Y29uc3QgZT10aGlzLnJvd0J5dGVzLHQ9dGhpcy5idWZmZXJMZW5ndGgsaT10aGlzLmVuc3VyZUJ1ZmZlcih0K2UpLGE9dGhpcy5iaXRzLHM9dGhpcy5jb2xvcnMscj10aGlzLnN0ci5nZXRCeXRlcyhlKTt0aGlzLmVvZj0hci5sZW5ndGg7aWYodGhpcy5lb2YpcmV0dXJuO2xldCBuLG89MCxnPTAsYz0wLEM9MCxoPXQ7aWYoMT09PWEmJjE9PT1zKWZvcihuPTA7bjxlOysrbil7bGV0IGU9cltuXV5vO2VePWU+PjE7ZV49ZT4+MjtlXj1lPj40O289KDEmZSk8PDc7aVtoKytdPWV9ZWxzZSBpZig4PT09YSl7Zm9yKG49MDtuPHM7KytuKWlbaCsrXT1yW25dO2Zvcig7bjxlOysrbil7aVtoXT1pW2gtc10rcltuXTtoKyt9fWVsc2UgaWYoMTY9PT1hKXtjb25zdCB0PTIqcztmb3Iobj0wO248dDsrK24paVtoKytdPXJbbl07Zm9yKDtuPGU7bis9Mil7Y29uc3QgZT0oKDI1NSZyW25dKTw8OCkrKDI1NSZyW24rMV0pKygoMjU1JmlbaC10XSk8PDgpKygyNTUmaVtoLXQrMV0pO2lbaCsrXT1lPj44JjI1NTtpW2grK109MjU1JmV9fWVsc2V7Y29uc3QgZT1uZXcgVWludDhBcnJheShzKzEpLGg9KDE8PGEpLTE7bGV0IGw9MCxRPXQ7Y29uc3QgRT10aGlzLmNvbHVtbnM7Zm9yKG49MDtuPEU7KytuKWZvcihsZXQgdD0wO3Q8czsrK3Qpe2lmKGM8YSl7bz1vPDw4fDI1NSZyW2wrK107Yys9OH1lW3RdPWVbdF0rKG8+PmMtYSkmaDtjLT1hO2c9Zzw8YXxlW3RdO0MrPWE7aWYoQz49OCl7aVtRKytdPWc+PkMtOCYyNTU7Qy09OH19Qz4wJiYoaVtRKytdPShnPDw4LUMpKyhvJigxPDw4LUMpLTEpKX10aGlzLmJ1ZmZlckxlbmd0aCs9ZX1yZWFkQmxvY2tQbmcoKXtjb25zdCBlPXRoaXMucm93Qnl0ZXMsdD10aGlzLnBpeEJ5dGVzLGk9dGhpcy5zdHIuZ2V0Qnl0ZSgpLGE9dGhpcy5zdHIuZ2V0Qnl0ZXMoZSk7dGhpcy5lb2Y9IWEubGVuZ3RoO2lmKHRoaXMuZW9mKXJldHVybjtjb25zdCBzPXRoaXMuYnVmZmVyTGVuZ3RoLHI9dGhpcy5lbnN1cmVCdWZmZXIocytlKTtsZXQgbj1yLnN1YmFycmF5KHMtZSxzKTswPT09bi5sZW5ndGgmJihuPW5ldyBVaW50OEFycmF5KGUpKTtsZXQgbyxnLGMsQz1zO3N3aXRjaChpKXtjYXNlIDA6Zm9yKG89MDtvPGU7KytvKXJbQysrXT1hW29dO2JyZWFrO2Nhc2UgMTpmb3Iobz0wO288dDsrK28pcltDKytdPWFbb107Zm9yKDtvPGU7KytvKXtyW0NdPXJbQy10XSthW29dJjI1NTtDKyt9YnJlYWs7Y2FzZSAyOmZvcihvPTA7bzxlOysrbylyW0MrK109bltvXSthW29dJjI1NTticmVhaztjYXNlIDM6Zm9yKG89MDtvPHQ7KytvKXJbQysrXT0obltvXT4+MSkrYVtvXTtmb3IoO288ZTsrK28pe3JbQ109KG5bb10rcltDLXRdPj4xKSthW29dJjI1NTtDKyt9YnJlYWs7Y2FzZSA0OmZvcihvPTA7bzx0Oysrbyl7Zz1uW29dO2M9YVtvXTtyW0MrK109ZytjfWZvcig7bzxlOysrbyl7Zz1uW29dO2NvbnN0IGU9bltvLXRdLGk9cltDLXRdLHM9aStnLWU7bGV0IGg9cy1pO2g8MCYmKGg9LWgpO2xldCBsPXMtZztsPDAmJihsPS1sKTtsZXQgUT1zLWU7UTwwJiYoUT0tUSk7Yz1hW29dO3JbQysrXT1oPD1sJiZoPD1RP2krYzpsPD1RP2crYzplK2N9YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYFVuc3VwcG9ydGVkIHByZWRpY3RvcjogJHtpfWApfXRoaXMuYnVmZmVyTGVuZ3RoKz1lfX1jbGFzcyBSdW5MZW5ndGhTdHJlYW0gZXh0ZW5kcyBEZWNvZGVTdHJlYW17Y29uc3RydWN0b3IoZSx0KXtzdXBlcih0KTt0aGlzLnN0cj1lO3RoaXMuZGljdD1lLmRpY3R9cmVhZEJsb2NrKCl7Y29uc3QgZT10aGlzLnN0ci5nZXRCeXRlcygyKTtpZighZXx8ZS5sZW5ndGg8Mnx8MTI4PT09ZVswXSl7dGhpcy5lb2Y9ITA7cmV0dXJufWxldCB0LGk9dGhpcy5idWZmZXJMZW5ndGgsYT1lWzBdO2lmKGE8MTI4KXt0PXRoaXMuZW5zdXJlQnVmZmVyKGkrYSsxKTt0W2krK109ZVsxXTtpZihhPjApe2NvbnN0IGU9dGhpcy5zdHIuZ2V0Qnl0ZXMoYSk7dC5zZXQoZSxpKTtpKz1hfX1lbHNle2E9MjU3LWE7Y29uc3Qgcz1lWzFdO3Q9dGhpcy5lbnN1cmVCdWZmZXIoaSthKzEpO2ZvcihsZXQgZT0wO2U8YTtlKyspdFtpKytdPXN9dGhpcy5idWZmZXJMZW5ndGg9aX19Y2xhc3MgUGFyc2Vye2NvbnN0cnVjdG9yKHtsZXhlcjplLHhyZWY6dCxhbGxvd1N0cmVhbXM6aT0hMSxyZWNvdmVyeU1vZGU6YT0hMX0pe3RoaXMubGV4ZXI9ZTt0aGlzLnhyZWY9dDt0aGlzLmFsbG93U3RyZWFtcz1pO3RoaXMucmVjb3ZlcnlNb2RlPWE7dGhpcy5pbWFnZUNhY2hlPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy5faW1hZ2VJZD0wO3RoaXMucmVmaWxsKCl9cmVmaWxsKCl7dGhpcy5idWYxPXRoaXMubGV4ZXIuZ2V0T2JqKCk7dGhpcy5idWYyPXRoaXMubGV4ZXIuZ2V0T2JqKCl9c2hpZnQoKXtpZih0aGlzLmJ1ZjIgaW5zdGFuY2VvZiBDbWQmJiJJRCI9PT10aGlzLmJ1ZjIuY21kKXt0aGlzLmJ1ZjE9dGhpcy5idWYyO3RoaXMuYnVmMj1udWxsfWVsc2V7dGhpcy5idWYxPXRoaXMuYnVmMjt0aGlzLmJ1ZjI9dGhpcy5sZXhlci5nZXRPYmooKX19dHJ5U2hpZnQoKXt0cnl7dGhpcy5zaGlmdCgpO3JldHVybiEwfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO3JldHVybiExfX1nZXRPYmooZT1udWxsKXtjb25zdCB0PXRoaXMuYnVmMTt0aGlzLnNoaWZ0KCk7aWYodCBpbnN0YW5jZW9mIENtZClzd2l0Y2godC5jbWQpe2Nhc2UiQkkiOnJldHVybiB0aGlzLm1ha2VJbmxpbmVJbWFnZShlKTtjYXNlIlsiOmNvbnN0IGk9W107Zm9yKDshaXNDbWQodGhpcy5idWYxLCJdIikmJnRoaXMuYnVmMSE9PXB0OylpLnB1c2godGhpcy5nZXRPYmooZSkpO2lmKHRoaXMuYnVmMT09PXB0KXtpZih0aGlzLnJlY292ZXJ5TW9kZSlyZXR1cm4gaTt0aHJvdyBuZXcgUGFyc2VyRU9GRXhjZXB0aW9uKCJFbmQgb2YgZmlsZSBpbnNpZGUgYXJyYXkuIil9dGhpcy5zaGlmdCgpO3JldHVybiBpO2Nhc2UiPDwiOmNvbnN0IGE9bmV3IERpY3QodGhpcy54cmVmKTtmb3IoOyFpc0NtZCh0aGlzLmJ1ZjEsIj4+IikmJnRoaXMuYnVmMSE9PXB0Oyl7aWYoISh0aGlzLmJ1ZjEgaW5zdGFuY2VvZiBOYW1lKSl7aW5mbygiTWFsZm9ybWVkIGRpY3Rpb25hcnk6IGtleSBtdXN0IGJlIGEgbmFtZSBvYmplY3QiKTt0aGlzLnNoaWZ0KCk7Y29udGludWV9Y29uc3QgdD10aGlzLmJ1ZjEubmFtZTt0aGlzLnNoaWZ0KCk7aWYodGhpcy5idWYxPT09cHQpYnJlYWs7YS5zZXQodCx0aGlzLmdldE9iaihlKSl9aWYodGhpcy5idWYxPT09cHQpe2lmKHRoaXMucmVjb3ZlcnlNb2RlKXJldHVybiBhO3Rocm93IG5ldyBQYXJzZXJFT0ZFeGNlcHRpb24oIkVuZCBvZiBmaWxlIGluc2lkZSBkaWN0aW9uYXJ5LiIpfWlmKGlzQ21kKHRoaXMuYnVmMiwic3RyZWFtIikpcmV0dXJuIHRoaXMuYWxsb3dTdHJlYW1zP3RoaXMubWFrZVN0cmVhbShhLGUpOmE7dGhpcy5zaGlmdCgpO3JldHVybiBhO2RlZmF1bHQ6cmV0dXJuIHR9aWYoTnVtYmVyLmlzSW50ZWdlcih0KSl7aWYoTnVtYmVyLmlzSW50ZWdlcih0aGlzLmJ1ZjEpJiZpc0NtZCh0aGlzLmJ1ZjIsIlIiKSl7Y29uc3QgZT1SZWYuZ2V0KHQsdGhpcy5idWYxKTt0aGlzLnNoaWZ0KCk7dGhpcy5zaGlmdCgpO3JldHVybiBlfXJldHVybiB0fXJldHVybiJzdHJpbmciPT10eXBlb2YgdCYmZT9lLmRlY3J5cHRTdHJpbmcodCk6dH1maW5kRGVmYXVsdElubGluZVN0cmVhbUVuZChlKXtjb25zdHtrbm93bkNvbW1hbmRzOnR9PXRoaXMubGV4ZXIsaT1lLnBvcztsZXQgYSxzLHI9MDtmb3IoOy0xIT09KGE9ZS5nZXRCeXRlKCkpOylpZigwPT09cilyPTY5PT09YT8xOjA7ZWxzZSBpZigxPT09cilyPTczPT09YT8yOjA7ZWxzZSBpZigzMj09PWF8fDEwPT09YXx8MTM9PT1hKXtzPWUucG9zO2NvbnN0IGk9ZS5wZWVrQnl0ZXMoMTUpLG49aS5sZW5ndGg7aWYoMD09PW4pYnJlYWs7Zm9yKGxldCBlPTA7ZTxuO2UrKyl7YT1pW2VdO2lmKCgwIT09YXx8MD09PWlbZSsxXSkmJigxMCE9PWEmJjEzIT09YSYmKGE8MzJ8fGE+MTI3KSkpe3I9MDticmVha319aWYoMiE9PXIpY29udGludWU7aWYoIXQpe3dhcm4oImZpbmREZWZhdWx0SW5saW5lU3RyZWFtRW5kIC0gYGxleGVyLmtub3duQ29tbWFuZHNgIGlzIHVuZGVmaW5lZC4iKTtjb250aW51ZX1jb25zdCBvPW5ldyBMZXhlcihuZXcgU3RyZWFtKGkuc2xpY2UoKSksdCk7by5faGV4U3RyaW5nV2Fybj0oKT0+e307bGV0IGc9MDtmb3IoOzspe2NvbnN0IGU9by5nZXRPYmooKTtpZihlPT09cHQpe3I9MDticmVha31pZihlIGluc3RhbmNlb2YgQ21kKXtjb25zdCBpPXRbZS5jbWRdO2lmKCFpKXtyPTA7YnJlYWt9aWYoaS52YXJpYWJsZUFyZ3M/Zzw9aS5udW1BcmdzOmc9PT1pLm51bUFyZ3MpYnJlYWs7Zz0wfWVsc2UgZysrfWlmKDI9PT1yKWJyZWFrfWVsc2Ugcj0wO2lmKC0xPT09YSl7d2FybigiZmluZERlZmF1bHRJbmxpbmVTdHJlYW1FbmQ6IFJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgc3RyZWFtIHdpdGhvdXQgZmluZGluZyBhIHZhbGlkIEVJIG1hcmtlciIpO2lmKHMpe3dhcm4oJy4uLiB0cnlpbmcgdG8gcmVjb3ZlciBieSB1c2luZyB0aGUgbGFzdCAiRUkiIG9jY3VycmVuY2UuJyk7ZS5za2lwKC0oZS5wb3MtcykpfX1sZXQgbj00O2Uuc2tpcCgtbik7YT1lLnBlZWtCeXRlKCk7ZS5za2lwKG4pO2lzV2hpdGVTcGFjZShhKXx8bi0tO3JldHVybiBlLnBvcy1uLWl9ZmluZERDVERlY29kZUlubGluZVN0cmVhbUVuZChlKXtjb25zdCB0PWUucG9zO2xldCBpLGEscz0hMTtmb3IoOy0xIT09KGk9ZS5nZXRCeXRlKCkpOylpZigyNTU9PT1pKXtzd2l0Y2goZS5nZXRCeXRlKCkpe2Nhc2UgMDpicmVhaztjYXNlIDI1NTplLnNraXAoLTEpO2JyZWFrO2Nhc2UgMjE3OnM9ITA7YnJlYWs7Y2FzZSAxOTI6Y2FzZSAxOTM6Y2FzZSAxOTQ6Y2FzZSAxOTU6Y2FzZSAxOTc6Y2FzZSAxOTg6Y2FzZSAxOTk6Y2FzZSAyMDE6Y2FzZSAyMDI6Y2FzZSAyMDM6Y2FzZSAyMDU6Y2FzZSAyMDY6Y2FzZSAyMDc6Y2FzZSAxOTY6Y2FzZSAyMDQ6Y2FzZSAyMTg6Y2FzZSAyMTk6Y2FzZSAyMjA6Y2FzZSAyMjE6Y2FzZSAyMjI6Y2FzZSAyMjM6Y2FzZSAyMjQ6Y2FzZSAyMjU6Y2FzZSAyMjY6Y2FzZSAyMjc6Y2FzZSAyMjg6Y2FzZSAyMjk6Y2FzZSAyMzA6Y2FzZSAyMzE6Y2FzZSAyMzI6Y2FzZSAyMzM6Y2FzZSAyMzQ6Y2FzZSAyMzU6Y2FzZSAyMzY6Y2FzZSAyMzc6Y2FzZSAyMzg6Y2FzZSAyMzk6Y2FzZSAyNTQ6YT1lLmdldFVpbnQxNigpO2E+Mj9lLnNraXAoYS0yKTplLnNraXAoLTIpfWlmKHMpYnJlYWt9Y29uc3Qgcj1lLnBvcy10O2lmKC0xPT09aSl7d2FybigiSW5saW5lIERDVERlY29kZSBpbWFnZSBzdHJlYW06IEVPSSBtYXJrZXIgbm90IGZvdW5kLCBzZWFyY2hpbmcgZm9yIC9FSS8gaW5zdGVhZC4iKTtlLnNraXAoLXIpO3JldHVybiB0aGlzLmZpbmREZWZhdWx0SW5saW5lU3RyZWFtRW5kKGUpfXRoaXMuaW5saW5lU3RyZWFtU2tpcEVJKGUpO3JldHVybiByfWZpbmRBU0NJSTg1RGVjb2RlSW5saW5lU3RyZWFtRW5kKGUpe2NvbnN0IHQ9ZS5wb3M7bGV0IGk7Zm9yKDstMSE9PShpPWUuZ2V0Qnl0ZSgpKTspaWYoMTI2PT09aSl7Y29uc3QgdD1lLnBvcztpPWUucGVla0J5dGUoKTtmb3IoO2lzV2hpdGVTcGFjZShpKTspe2Uuc2tpcCgpO2k9ZS5wZWVrQnl0ZSgpfWlmKDYyPT09aSl7ZS5za2lwKCk7YnJlYWt9aWYoZS5wb3M+dCl7Y29uc3QgdD1lLnBlZWtCeXRlcygyKTtpZig2OT09PXRbMF0mJjczPT09dFsxXSlicmVha319Y29uc3QgYT1lLnBvcy10O2lmKC0xPT09aSl7d2FybigiSW5saW5lIEFTQ0lJODVEZWNvZGUgaW1hZ2Ugc3RyZWFtOiBFT0QgbWFya2VyIG5vdCBmb3VuZCwgc2VhcmNoaW5nIGZvciAvRUkvIGluc3RlYWQuIik7ZS5za2lwKC1hKTtyZXR1cm4gdGhpcy5maW5kRGVmYXVsdElubGluZVN0cmVhbUVuZChlKX10aGlzLmlubGluZVN0cmVhbVNraXBFSShlKTtyZXR1cm4gYX1maW5kQVNDSUlIZXhEZWNvZGVJbmxpbmVTdHJlYW1FbmQoZSl7Y29uc3QgdD1lLnBvcztsZXQgaTtmb3IoOy0xIT09KGk9ZS5nZXRCeXRlKCkpJiY2MiE9PWk7KTtjb25zdCBhPWUucG9zLXQ7aWYoLTE9PT1pKXt3YXJuKCJJbmxpbmUgQVNDSUlIZXhEZWNvZGUgaW1hZ2Ugc3RyZWFtOiBFT0QgbWFya2VyIG5vdCBmb3VuZCwgc2VhcmNoaW5nIGZvciAvRUkvIGluc3RlYWQuIik7ZS5za2lwKC1hKTtyZXR1cm4gdGhpcy5maW5kRGVmYXVsdElubGluZVN0cmVhbUVuZChlKX10aGlzLmlubGluZVN0cmVhbVNraXBFSShlKTtyZXR1cm4gYX1pbmxpbmVTdHJlYW1Ta2lwRUkoZSl7bGV0IHQsaT0wO2Zvcig7LTEhPT0odD1lLmdldEJ5dGUoKSk7KWlmKDA9PT1pKWk9Njk9PT10PzE6MDtlbHNlIGlmKDE9PT1pKWk9NzM9PT10PzI6MDtlbHNlIGlmKDI9PT1pKWJyZWFrfW1ha2VJbmxpbmVJbWFnZShlKXtjb25zdCB0PXRoaXMubGV4ZXIsaT10LnN0cmVhbSxhPU9iamVjdC5jcmVhdGUobnVsbCk7bGV0IHM7Zm9yKDshaXNDbWQodGhpcy5idWYxLCJJRCIpJiZ0aGlzLmJ1ZjEhPT1wdDspe2lmKCEodGhpcy5idWYxIGluc3RhbmNlb2YgTmFtZSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJEaWN0aW9uYXJ5IGtleSBtdXN0IGJlIGEgbmFtZSBvYmplY3QiKTtjb25zdCB0PXRoaXMuYnVmMS5uYW1lO3RoaXMuc2hpZnQoKTtpZih0aGlzLmJ1ZjE9PT1wdClicmVhazthW3RdPXRoaXMuZ2V0T2JqKGUpfS0xIT09dC5iZWdpbklubGluZUltYWdlUG9zJiYocz1pLnBvcy10LmJlZ2luSW5saW5lSW1hZ2VQb3MpO2NvbnN0IHI9dGhpcy54cmVmLmZldGNoSWZSZWYoYS5GfHxhLkZpbHRlcik7bGV0IG47aWYociBpbnN0YW5jZW9mIE5hbWUpbj1yLm5hbWU7ZWxzZSBpZihBcnJheS5pc0FycmF5KHIpKXtjb25zdCBlPXRoaXMueHJlZi5mZXRjaElmUmVmKHJbMF0pO2UgaW5zdGFuY2VvZiBOYW1lJiYobj1lLm5hbWUpfWNvbnN0IG89aS5wb3M7bGV0IGcsYztzd2l0Y2gobil7Y2FzZSJEQ1QiOmNhc2UiRENURGVjb2RlIjpnPXRoaXMuZmluZERDVERlY29kZUlubGluZVN0cmVhbUVuZChpKTticmVhaztjYXNlIkE4NSI6Y2FzZSJBU0NJSTg1RGVjb2RlIjpnPXRoaXMuZmluZEFTQ0lJODVEZWNvZGVJbmxpbmVTdHJlYW1FbmQoaSk7YnJlYWs7Y2FzZSJBSHgiOmNhc2UiQVNDSUlIZXhEZWNvZGUiOmc9dGhpcy5maW5kQVNDSUlIZXhEZWNvZGVJbmxpbmVTdHJlYW1FbmQoaSk7YnJlYWs7ZGVmYXVsdDpnPXRoaXMuZmluZERlZmF1bHRJbmxpbmVTdHJlYW1FbmQoaSl9aWYoZzwxZTMmJnM+MCl7Y29uc3QgZT1pLnBvcztpLnBvcz10LmJlZ2luSW5saW5lSW1hZ2VQb3M7Yz1mdW5jdGlvbiBnZXRJbmxpbmVJbWFnZUNhY2hlS2V5KGUpe2NvbnN0IHQ9W10saT1lLmxlbmd0aDtsZXQgYT0wO2Zvcig7YTxpLTE7KXQucHVzaChlW2ErK108PDh8ZVthKytdKTthPGkmJnQucHVzaChlW2FdKTtyZXR1cm4gaSsiXyIrU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLHQpfShpLmdldEJ5dGVzKHMrZykpO2kucG9zPWU7Y29uc3QgYT10aGlzLmltYWdlQ2FjaGVbY107aWYodm9pZCAwIT09YSl7dGhpcy5idWYyPUNtZC5nZXQoIkVJIik7dGhpcy5zaGlmdCgpO2EucmVzZXQoKTtyZXR1cm4gYX19Y29uc3QgQz1uZXcgRGljdCh0aGlzLnhyZWYpO2Zvcihjb25zdCBlIGluIGEpQy5zZXQoZSxhW2VdKTtsZXQgaD1pLm1ha2VTdWJTdHJlYW0obyxnLEMpO2UmJihoPWUuY3JlYXRlU3RyZWFtKGgsZykpO2g9dGhpcy5maWx0ZXIoaCxDLGcpO2guZGljdD1DO2lmKHZvaWQgMCE9PWMpe2guY2FjaGVLZXk9ImlubGluZV9pbWdfIisgKyt0aGlzLl9pbWFnZUlkO3RoaXMuaW1hZ2VDYWNoZVtjXT1ofXRoaXMuYnVmMj1DbWQuZ2V0KCJFSSIpO3RoaXMuc2hpZnQoKTtyZXR1cm4gaH1fZmluZFN0cmVhbUxlbmd0aChlLHQpe2NvbnN0e3N0cmVhbTppfT10aGlzLmxleGVyO2kucG9zPWU7Y29uc3QgYT10Lmxlbmd0aDtmb3IoO2kucG9zPGkuZW5kOyl7Y29uc3Qgcz1pLnBlZWtCeXRlcygyMDQ4KSxyPXMubGVuZ3RoLWE7aWYocjw9MClicmVhaztsZXQgbj0wO2Zvcig7bjxyOyl7bGV0IHI9MDtmb3IoO3I8YSYmc1tuK3JdPT09dFtyXTspcisrO2lmKHI+PWEpe2kucG9zKz1uO3JldHVybiBpLnBvcy1lfW4rK31pLnBvcys9cn1yZXR1cm4tMX1tYWtlU3RyZWFtKGUsdCl7Y29uc3QgaT10aGlzLmxleGVyO2xldCBhPWkuc3RyZWFtO2kuc2tpcFRvTmV4dExpbmUoKTtjb25zdCBzPWEucG9zLTE7bGV0IHI9ZS5nZXQoIkxlbmd0aCIpO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKHIpKXtpbmZvKGBCYWQgbGVuZ3RoICIke3ImJnIudG9TdHJpbmcoKX0iIGluIHN0cmVhbS5gKTtyPTB9YS5wb3M9cytyO2kubmV4dENoYXIoKTtpZih0aGlzLnRyeVNoaWZ0KCkmJmlzQ21kKHRoaXMuYnVmMiwiZW5kc3RyZWFtIikpdGhpcy5zaGlmdCgpO2Vsc2V7Y29uc3QgZT1uZXcgVWludDhBcnJheShbMTAxLDExMCwxMDAsMTE1LDExNiwxMTQsMTAxLDk3LDEwOV0pO2xldCB0PXRoaXMuX2ZpbmRTdHJlYW1MZW5ndGgocyxlKTtpZih0PDApe2NvbnN0IGk9MTtmb3IobGV0IHI9MTtyPD1pO3IrKyl7Y29uc3QgaT1lLmxlbmd0aC1yLG49ZS5zbGljZSgwLGkpLG89dGhpcy5fZmluZFN0cmVhbUxlbmd0aChzLG4pO2lmKG8+PTApe2lmKCFpc1doaXRlU3BhY2UoYS5wZWVrQnl0ZXMoaSsxKVtpXSkpYnJlYWs7aW5mbyhgRm91bmQgIiR7Ynl0ZXNUb1N0cmluZyhuKX0iIHdoZW4gc2VhcmNoaW5nIGZvciBlbmRzdHJlYW0gY29tbWFuZC5gKTt0PW87YnJlYWt9fWlmKHQ8MCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIk1pc3NpbmcgZW5kc3RyZWFtIGNvbW1hbmQuIil9cj10O2kubmV4dENoYXIoKTt0aGlzLnNoaWZ0KCk7dGhpcy5zaGlmdCgpfXRoaXMuc2hpZnQoKTthPWEubWFrZVN1YlN0cmVhbShzLHIsZSk7dCYmKGE9dC5jcmVhdGVTdHJlYW0oYSxyKSk7YT10aGlzLmZpbHRlcihhLGUscik7YS5kaWN0PWU7cmV0dXJuIGF9ZmlsdGVyKGUsdCxpKXtsZXQgYT10LmdldCgiRiIsIkZpbHRlciIpLHM9dC5nZXQoIkRQIiwiRGVjb2RlUGFybXMiKTtpZihhIGluc3RhbmNlb2YgTmFtZSl7QXJyYXkuaXNBcnJheShzKSYmd2FybigiL0RlY29kZVBhcm1zIHNob3VsZCBub3QgYmUgYW4gQXJyYXksIHdoZW4gL0ZpbHRlciBpcyBhIE5hbWUuIik7cmV0dXJuIHRoaXMubWFrZUZpbHRlcihlLGEubmFtZSxpLHMpfWxldCByPWk7aWYoQXJyYXkuaXNBcnJheShhKSl7Y29uc3QgdD1hLGk9cztmb3IobGV0IG49MCxvPXQubGVuZ3RoO248bzsrK24pe2E9dGhpcy54cmVmLmZldGNoSWZSZWYodFtuXSk7aWYoIShhIGluc3RhbmNlb2YgTmFtZSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBCYWQgZmlsdGVyIG5hbWUgIiR7YX0iYCk7cz1udWxsO0FycmF5LmlzQXJyYXkoaSkmJm4gaW4gaSYmKHM9dGhpcy54cmVmLmZldGNoSWZSZWYoaVtuXSkpO2U9dGhpcy5tYWtlRmlsdGVyKGUsYS5uYW1lLHIscyk7cj1udWxsfX1yZXR1cm4gZX1tYWtlRmlsdGVyKGUsdCxpLGEpe2lmKDA9PT1pKXt3YXJuKGBFbXB0eSAiJHt0fSIgc3RyZWFtLmApO3JldHVybiBuZXcgTnVsbFN0cmVhbX10cnl7c3dpdGNoKHQpe2Nhc2UiRmwiOmNhc2UiRmxhdGVEZWNvZGUiOnJldHVybiBhP25ldyBQcmVkaWN0b3JTdHJlYW0obmV3IEZsYXRlU3RyZWFtKGUsaSksaSxhKTpuZXcgRmxhdGVTdHJlYW0oZSxpKTtjYXNlIkxaVyI6Y2FzZSJMWldEZWNvZGUiOmxldCB0PTE7aWYoYSl7YS5oYXMoIkVhcmx5Q2hhbmdlIikmJih0PWEuZ2V0KCJFYXJseUNoYW5nZSIpKTtyZXR1cm4gbmV3IFByZWRpY3RvclN0cmVhbShuZXcgTFpXU3RyZWFtKGUsaSx0KSxpLGEpfXJldHVybiBuZXcgTFpXU3RyZWFtKGUsaSx0KTtjYXNlIkRDVCI6Y2FzZSJEQ1REZWNvZGUiOnJldHVybiBuZXcgSnBlZ1N0cmVhbShlLGksYSk7Y2FzZSJKUFgiOmNhc2UiSlBYRGVjb2RlIjpyZXR1cm4gbmV3IEpweFN0cmVhbShlLGksYSk7Y2FzZSJBODUiOmNhc2UiQVNDSUk4NURlY29kZSI6cmV0dXJuIG5ldyBBc2NpaTg1U3RyZWFtKGUsaSk7Y2FzZSJBSHgiOmNhc2UiQVNDSUlIZXhEZWNvZGUiOnJldHVybiBuZXcgQXNjaWlIZXhTdHJlYW0oZSxpKTtjYXNlIkNDRiI6Y2FzZSJDQ0lUVEZheERlY29kZSI6cmV0dXJuIG5ldyBDQ0lUVEZheFN0cmVhbShlLGksYSk7Y2FzZSJSTCI6Y2FzZSJSdW5MZW5ndGhEZWNvZGUiOnJldHVybiBuZXcgUnVuTGVuZ3RoU3RyZWFtKGUsaSk7Y2FzZSJKQklHMkRlY29kZSI6cmV0dXJuIG5ldyBKYmlnMlN0cmVhbShlLGksYSl9d2FybihgRmlsdGVyICIke3R9IiBpcyBub3Qgc3VwcG9ydGVkLmApO3JldHVybiBlfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO3dhcm4oYEludmFsaWQgc3RyZWFtOiAiJHtlfSJgKTtyZXR1cm4gbmV3IE51bGxTdHJlYW19fX1jb25zdCBjaT1bMSwwLDAsMCwwLDAsMCwwLDAsMSwxLDAsMSwxLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMCwyLDAsMCwyLDIsMCwwLDAsMCwwLDIsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMiwwLDIsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwyLDAsMiwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMiwwLDIsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMF07ZnVuY3Rpb24gdG9IZXhEaWdpdChlKXtyZXR1cm4gZT49NDgmJmU8PTU3PzE1JmU6ZT49NjUmJmU8PTcwfHxlPj05NyYmZTw9MTAyPzkrKDE1JmUpOi0xfWNsYXNzIExleGVye2NvbnN0cnVjdG9yKGUsdD1udWxsKXt0aGlzLnN0cmVhbT1lO3RoaXMubmV4dENoYXIoKTt0aGlzLnN0ckJ1Zj1bXTt0aGlzLmtub3duQ29tbWFuZHM9dDt0aGlzLl9oZXhTdHJpbmdOdW1XYXJuPTA7dGhpcy5iZWdpbklubGluZUltYWdlUG9zPS0xfW5leHRDaGFyKCl7cmV0dXJuIHRoaXMuY3VycmVudENoYXI9dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpfXBlZWtDaGFyKCl7cmV0dXJuIHRoaXMuc3RyZWFtLnBlZWtCeXRlKCl9Z2V0TnVtYmVyKCl7bGV0IGU9dGhpcy5jdXJyZW50Q2hhcix0PSExLGk9MCxhPTE7aWYoNDU9PT1lKXthPS0xO2U9dGhpcy5uZXh0Q2hhcigpOzQ1PT09ZSYmKGU9dGhpcy5uZXh0Q2hhcigpKX1lbHNlIDQzPT09ZSYmKGU9dGhpcy5uZXh0Q2hhcigpKTtpZigxMD09PWV8fDEzPT09ZSlkb3tlPXRoaXMubmV4dENoYXIoKX13aGlsZSgxMD09PWV8fDEzPT09ZSk7aWYoNDY9PT1lKXtpPTEwO2U9dGhpcy5uZXh0Q2hhcigpfWlmKGU8NDh8fGU+NTcpe2NvbnN0IHQ9YEludmFsaWQgbnVtYmVyOiAke1N0cmluZy5mcm9tQ2hhckNvZGUoZSl9IChjaGFyQ29kZSAke2V9KWA7aWYoaXNXaGl0ZVNwYWNlKGUpfHwtMT09PWUpe2luZm8oYExleGVyLmdldE51bWJlciAtICIke3R9Ii5gKTtyZXR1cm4gMH10aHJvdyBuZXcgRm9ybWF0RXJyb3IodCl9bGV0IHM9ZS00OCxyPTAsbj0xO2Zvcig7KGU9dGhpcy5uZXh0Q2hhcigpKT49MDspaWYoZT49NDgmJmU8PTU3KXtjb25zdCBhPWUtNDg7aWYodClyPTEwKnIrYTtlbHNlezAhPT1pJiYoaSo9MTApO3M9MTAqcythfX1lbHNlIGlmKDQ2PT09ZSl7aWYoMCE9PWkpYnJlYWs7aT0xfWVsc2UgaWYoNDU9PT1lKXdhcm4oIkJhZGx5IGZvcm1hdHRlZCBudW1iZXI6IG1pbnVzIHNpZ24gaW4gdGhlIG1pZGRsZSIpO2Vsc2V7aWYoNjkhPT1lJiYxMDEhPT1lKWJyZWFrO2U9dGhpcy5wZWVrQ2hhcigpO2lmKDQzPT09ZXx8NDU9PT1lKXtuPTQ1PT09ZT8tMToxO3RoaXMubmV4dENoYXIoKX1lbHNlIGlmKGU8NDh8fGU+NTcpYnJlYWs7dD0hMH0wIT09aSYmKHMvPWkpO3QmJihzKj0xMCoqKG4qcikpO3JldHVybiBhKnN9Z2V0U3RyaW5nKCl7bGV0IGU9MSx0PSExO2NvbnN0IGk9dGhpcy5zdHJCdWY7aS5sZW5ndGg9MDtsZXQgYT10aGlzLm5leHRDaGFyKCk7Zm9yKDs7KXtsZXQgcz0hMTtzd2l0Y2goMHxhKXtjYXNlLTE6d2FybigiVW50ZXJtaW5hdGVkIHN0cmluZyIpO3Q9ITA7YnJlYWs7Y2FzZSA0MDorK2U7aS5wdXNoKCIoIik7YnJlYWs7Y2FzZSA0MTppZigwPT0tLWUpe3RoaXMubmV4dENoYXIoKTt0PSEwfWVsc2UgaS5wdXNoKCIpIik7YnJlYWs7Y2FzZSA5MjphPXRoaXMubmV4dENoYXIoKTtzd2l0Y2goYSl7Y2FzZS0xOndhcm4oIlVudGVybWluYXRlZCBzdHJpbmciKTt0PSEwO2JyZWFrO2Nhc2UgMTEwOmkucHVzaCgiXG4iKTticmVhaztjYXNlIDExNDppLnB1c2goIlxyIik7YnJlYWs7Y2FzZSAxMTY6aS5wdXNoKCJcdCIpO2JyZWFrO2Nhc2UgOTg6aS5wdXNoKCJcYiIpO2JyZWFrO2Nhc2UgMTAyOmkucHVzaCgiXGYiKTticmVhaztjYXNlIDkyOmNhc2UgNDA6Y2FzZSA0MTppLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShhKSk7YnJlYWs7Y2FzZSA0ODpjYXNlIDQ5OmNhc2UgNTA6Y2FzZSA1MTpjYXNlIDUyOmNhc2UgNTM6Y2FzZSA1NDpjYXNlIDU1OmxldCBlPTE1JmE7YT10aGlzLm5leHRDaGFyKCk7cz0hMDtpZihhPj00OCYmYTw9NTUpe2U9KGU8PDMpKygxNSZhKTthPXRoaXMubmV4dENoYXIoKTtpZihhPj00OCYmYTw9NTUpe3M9ITE7ZT0oZTw8MykrKDE1JmEpfX1pLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShlKSk7YnJlYWs7Y2FzZSAxMzoxMD09PXRoaXMucGVla0NoYXIoKSYmdGhpcy5uZXh0Q2hhcigpO2JyZWFrO2Nhc2UgMTA6YnJlYWs7ZGVmYXVsdDppLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShhKSl9YnJlYWs7ZGVmYXVsdDppLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShhKSl9aWYodClicmVhaztzfHwoYT10aGlzLm5leHRDaGFyKCkpfXJldHVybiBpLmpvaW4oIiIpfWdldE5hbWUoKXtsZXQgZSx0O2NvbnN0IGk9dGhpcy5zdHJCdWY7aS5sZW5ndGg9MDtmb3IoOyhlPXRoaXMubmV4dENoYXIoKSk+PTAmJiFjaVtlXTspaWYoMzU9PT1lKXtlPXRoaXMubmV4dENoYXIoKTtpZihjaVtlXSl7d2FybigiTGV4ZXJfZ2V0TmFtZTogTlVNQkVSIFNJR04gKCMpIHNob3VsZCBiZSBmb2xsb3dlZCBieSBhIGhleGFkZWNpbWFsIG51bWJlci4iKTtpLnB1c2goIiMiKTticmVha31jb25zdCBhPXRvSGV4RGlnaXQoZSk7aWYoLTEhPT1hKXt0PWU7ZT10aGlzLm5leHRDaGFyKCk7Y29uc3Qgcz10b0hleERpZ2l0KGUpO2lmKC0xPT09cyl7d2FybihgTGV4ZXJfZ2V0TmFtZTogSWxsZWdhbCBkaWdpdCAoJHtTdHJpbmcuZnJvbUNoYXJDb2RlKGUpfSkgaW4gaGV4YWRlY2ltYWwgbnVtYmVyLmApO2kucHVzaCgiIyIsU3RyaW5nLmZyb21DaGFyQ29kZSh0KSk7aWYoY2lbZV0pYnJlYWs7aS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoZSkpO2NvbnRpbnVlfWkucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGE8PDR8cykpfWVsc2UgaS5wdXNoKCIjIixTdHJpbmcuZnJvbUNoYXJDb2RlKGUpKX1lbHNlIGkucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGUpKTtpLmxlbmd0aD4xMjcmJndhcm4oYE5hbWUgdG9rZW4gaXMgbG9uZ2VyIHRoYW4gYWxsb3dlZCBieSB0aGUgc3BlYzogJHtpLmxlbmd0aH1gKTtyZXR1cm4gTmFtZS5nZXQoaS5qb2luKCIiKSl9X2hleFN0cmluZ1dhcm4oZSl7NSE9dGhpcy5faGV4U3RyaW5nTnVtV2FybisrP3RoaXMuX2hleFN0cmluZ051bVdhcm4+NXx8d2FybihgZ2V0SGV4U3RyaW5nIC0gaWdub3JpbmcgaW52YWxpZCBjaGFyYWN0ZXI6ICR7ZX1gKTp3YXJuKCJnZXRIZXhTdHJpbmcgLSBpZ25vcmluZyBhZGRpdGlvbmFsIGludmFsaWQgY2hhcmFjdGVycy4iKX1nZXRIZXhTdHJpbmcoKXtjb25zdCBlPXRoaXMuc3RyQnVmO2UubGVuZ3RoPTA7bGV0IHQsaSxhPXRoaXMuY3VycmVudENoYXIscz0hMDt0aGlzLl9oZXhTdHJpbmdOdW1XYXJuPTA7Zm9yKDs7KXtpZihhPDApe3dhcm4oIlVudGVybWluYXRlZCBoZXggc3RyaW5nIik7YnJlYWt9aWYoNjI9PT1hKXt0aGlzLm5leHRDaGFyKCk7YnJlYWt9aWYoMSE9PWNpW2FdKXtpZihzKXt0PXRvSGV4RGlnaXQoYSk7aWYoLTE9PT10KXt0aGlzLl9oZXhTdHJpbmdXYXJuKGEpO2E9dGhpcy5uZXh0Q2hhcigpO2NvbnRpbnVlfX1lbHNle2k9dG9IZXhEaWdpdChhKTtpZigtMT09PWkpe3RoaXMuX2hleFN0cmluZ1dhcm4oYSk7YT10aGlzLm5leHRDaGFyKCk7Y29udGludWV9ZS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUodDw8NHxpKSl9cz0hczthPXRoaXMubmV4dENoYXIoKX1lbHNlIGE9dGhpcy5uZXh0Q2hhcigpfXJldHVybiBlLmpvaW4oIiIpfWdldE9iaigpe2xldCBlPSExLHQ9dGhpcy5jdXJyZW50Q2hhcjtmb3IoOzspe2lmKHQ8MClyZXR1cm4gcHQ7aWYoZSkxMCE9PXQmJjEzIT09dHx8KGU9ITEpO2Vsc2UgaWYoMzc9PT10KWU9ITA7ZWxzZSBpZigxIT09Y2lbdF0pYnJlYWs7dD10aGlzLm5leHRDaGFyKCl9c3dpdGNoKDB8dCl7Y2FzZSA0ODpjYXNlIDQ5OmNhc2UgNTA6Y2FzZSA1MTpjYXNlIDUyOmNhc2UgNTM6Y2FzZSA1NDpjYXNlIDU1OmNhc2UgNTY6Y2FzZSA1NzpjYXNlIDQzOmNhc2UgNDU6Y2FzZSA0NjpyZXR1cm4gdGhpcy5nZXROdW1iZXIoKTtjYXNlIDQwOnJldHVybiB0aGlzLmdldFN0cmluZygpO2Nhc2UgNDc6cmV0dXJuIHRoaXMuZ2V0TmFtZSgpO2Nhc2UgOTE6dGhpcy5uZXh0Q2hhcigpO3JldHVybiBDbWQuZ2V0KCJbIik7Y2FzZSA5Mzp0aGlzLm5leHRDaGFyKCk7cmV0dXJuIENtZC5nZXQoIl0iKTtjYXNlIDYwOnQ9dGhpcy5uZXh0Q2hhcigpO2lmKDYwPT09dCl7dGhpcy5uZXh0Q2hhcigpO3JldHVybiBDbWQuZ2V0KCI8PCIpfXJldHVybiB0aGlzLmdldEhleFN0cmluZygpO2Nhc2UgNjI6dD10aGlzLm5leHRDaGFyKCk7aWYoNjI9PT10KXt0aGlzLm5leHRDaGFyKCk7cmV0dXJuIENtZC5nZXQoIj4+Iil9cmV0dXJuIENtZC5nZXQoIj4iKTtjYXNlIDEyMzp0aGlzLm5leHRDaGFyKCk7cmV0dXJuIENtZC5nZXQoInsiKTtjYXNlIDEyNTp0aGlzLm5leHRDaGFyKCk7cmV0dXJuIENtZC5nZXQoIn0iKTtjYXNlIDQxOnRoaXMubmV4dENoYXIoKTt0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYElsbGVnYWwgY2hhcmFjdGVyOiAke3R9YCl9bGV0IGk9U3RyaW5nLmZyb21DaGFyQ29kZSh0KTtpZih0PDMyfHx0PjEyNyl7Y29uc3QgZT10aGlzLnBlZWtDaGFyKCk7aWYoZT49MzImJmU8PTEyNyl7dGhpcy5uZXh0Q2hhcigpO3JldHVybiBDbWQuZ2V0KGkpfX1jb25zdCBhPXRoaXMua25vd25Db21tYW5kcztsZXQgcz12b2lkIDAhPT1hPy5baV07Zm9yKDsodD10aGlzLm5leHRDaGFyKCkpPj0wJiYhY2lbdF07KXtjb25zdCBlPWkrU3RyaW5nLmZyb21DaGFyQ29kZSh0KTtpZihzJiZ2b2lkIDA9PT1hW2VdKWJyZWFrO2lmKDEyOD09PWkubGVuZ3RoKXRocm93IG5ldyBGb3JtYXRFcnJvcihgQ29tbWFuZCB0b2tlbiB0b28gbG9uZzogJHtpLmxlbmd0aH1gKTtpPWU7cz12b2lkIDAhPT1hPy5baV19aWYoInRydWUiPT09aSlyZXR1cm4hMDtpZigiZmFsc2UiPT09aSlyZXR1cm4hMTtpZigibnVsbCI9PT1pKXJldHVybiBudWxsOyJCSSI9PT1pJiYodGhpcy5iZWdpbklubGluZUltYWdlUG9zPXRoaXMuc3RyZWFtLnBvcyk7cmV0dXJuIENtZC5nZXQoaSl9c2tpcFRvTmV4dExpbmUoKXtsZXQgZT10aGlzLmN1cnJlbnRDaGFyO2Zvcig7ZT49MDspe2lmKDEzPT09ZSl7ZT10aGlzLm5leHRDaGFyKCk7MTA9PT1lJiZ0aGlzLm5leHRDaGFyKCk7YnJlYWt9aWYoMTA9PT1lKXt0aGlzLm5leHRDaGFyKCk7YnJlYWt9ZT10aGlzLm5leHRDaGFyKCl9fX1jbGFzcyBMaW5lYXJpemF0aW9ue3N0YXRpYyBjcmVhdGUoZSl7ZnVuY3Rpb24gZ2V0SW50KGUsdCxpPSExKXtjb25zdCBhPWUuZ2V0KHQpO2lmKE51bWJlci5pc0ludGVnZXIoYSkmJihpP2E+PTA6YT4wKSlyZXR1cm4gYTt0aHJvdyBuZXcgRXJyb3IoYFRoZSAiJHt0fSIgcGFyYW1ldGVyIGluIHRoZSBsaW5lYXJpemF0aW9uIGRpY3Rpb25hcnkgaXMgaW52YWxpZC5gKX1jb25zdCB0PW5ldyBQYXJzZXIoe2xleGVyOm5ldyBMZXhlcihlKSx4cmVmOm51bGx9KSxpPXQuZ2V0T2JqKCksYT10LmdldE9iaigpLHM9dC5nZXRPYmooKSxyPXQuZ2V0T2JqKCk7bGV0IG4sbztpZighKE51bWJlci5pc0ludGVnZXIoaSkmJk51bWJlci5pc0ludGVnZXIoYSkmJmlzQ21kKHMsIm9iaiIpJiZyIGluc3RhbmNlb2YgRGljdCYmIm51bWJlciI9PXR5cGVvZihuPXIuZ2V0KCJMaW5lYXJpemVkIikpJiZuPjApKXJldHVybiBudWxsO2lmKChvPWdldEludChyLCJMIikpIT09ZS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCdUaGUgIkwiIHBhcmFtZXRlciBpbiB0aGUgbGluZWFyaXphdGlvbiBkaWN0aW9uYXJ5IGRvZXMgbm90IGVxdWFsIHRoZSBzdHJlYW0gbGVuZ3RoLicpO3JldHVybntsZW5ndGg6byxoaW50czpmdW5jdGlvbiBnZXRIaW50cyhlKXtjb25zdCB0PWUuZ2V0KCJIIik7bGV0IGk7aWYoQXJyYXkuaXNBcnJheSh0KSYmKDI9PT0oaT10Lmxlbmd0aCl8fDQ9PT1pKSl7Zm9yKGxldCBlPTA7ZTxpO2UrKyl7Y29uc3QgaT10W2VdO2lmKCEoTnVtYmVyLmlzSW50ZWdlcihpKSYmaT4wKSl0aHJvdyBuZXcgRXJyb3IoYEhpbnQgKCR7ZX0pIGluIHRoZSBsaW5lYXJpemF0aW9uIGRpY3Rpb25hcnkgaXMgaW52YWxpZC5gKX1yZXR1cm4gdH10aHJvdyBuZXcgRXJyb3IoIkhpbnQgYXJyYXkgaW4gdGhlIGxpbmVhcml6YXRpb24gZGljdGlvbmFyeSBpcyBpbnZhbGlkLiIpfShyKSxvYmplY3ROdW1iZXJGaXJzdDpnZXRJbnQociwiTyIpLGVuZEZpcnN0OmdldEludChyLCJFIiksbnVtUGFnZXM6Z2V0SW50KHIsIk4iKSxtYWluWFJlZkVudHJpZXNPZmZzZXQ6Z2V0SW50KHIsIlQiKSxwYWdlRmlyc3Q6ci5oYXMoIlAiKT9nZXRJbnQociwiUCIsITApOjB9fX1jb25zdCBDaT1bIkFkb2JlLUdCMS1VQ1MyIiwiQWRvYmUtQ05TMS1VQ1MyIiwiQWRvYmUtSmFwYW4xLVVDUzIiLCJBZG9iZS1Lb3JlYTEtVUNTMiIsIjc4LUVVQy1IIiwiNzgtRVVDLVYiLCI3OC1IIiwiNzgtUktTSi1IIiwiNzgtUktTSi1WIiwiNzgtViIsIjc4bXMtUktTSi1IIiwiNzhtcy1SS1NKLVYiLCI4M3B2LVJLU0otSCIsIjkwbXMtUktTSi1IIiwiOTBtcy1SS1NKLVYiLCI5MG1zcC1SS1NKLUgiLCI5MG1zcC1SS1NKLVYiLCI5MHB2LVJLU0otSCIsIjkwcHYtUktTSi1WIiwiQWRkLUgiLCJBZGQtUktTSi1IIiwiQWRkLVJLU0otViIsIkFkZC1WIiwiQWRvYmUtQ05TMS0wIiwiQWRvYmUtQ05TMS0xIiwiQWRvYmUtQ05TMS0yIiwiQWRvYmUtQ05TMS0zIiwiQWRvYmUtQ05TMS00IiwiQWRvYmUtQ05TMS01IiwiQWRvYmUtQ05TMS02IiwiQWRvYmUtR0IxLTAiLCJBZG9iZS1HQjEtMSIsIkFkb2JlLUdCMS0yIiwiQWRvYmUtR0IxLTMiLCJBZG9iZS1HQjEtNCIsIkFkb2JlLUdCMS01IiwiQWRvYmUtSmFwYW4xLTAiLCJBZG9iZS1KYXBhbjEtMSIsIkFkb2JlLUphcGFuMS0yIiwiQWRvYmUtSmFwYW4xLTMiLCJBZG9iZS1KYXBhbjEtNCIsIkFkb2JlLUphcGFuMS01IiwiQWRvYmUtSmFwYW4xLTYiLCJBZG9iZS1Lb3JlYTEtMCIsIkFkb2JlLUtvcmVhMS0xIiwiQWRvYmUtS29yZWExLTIiLCJCNS1IIiwiQjUtViIsIkI1cGMtSCIsIkI1cGMtViIsIkNOUy1FVUMtSCIsIkNOUy1FVUMtViIsIkNOUzEtSCIsIkNOUzEtViIsIkNOUzItSCIsIkNOUzItViIsIkVUSEstQjUtSCIsIkVUSEstQjUtViIsIkVUZW4tQjUtSCIsIkVUZW4tQjUtViIsIkVUZW5tcy1CNS1IIiwiRVRlbm1zLUI1LVYiLCJFVUMtSCIsIkVVQy1WIiwiRXh0LUgiLCJFeHQtUktTSi1IIiwiRXh0LVJLU0otViIsIkV4dC1WIiwiR0ItRVVDLUgiLCJHQi1FVUMtViIsIkdCLUgiLCJHQi1WIiwiR0JLLUVVQy1IIiwiR0JLLUVVQy1WIiwiR0JLMkstSCIsIkdCSzJLLVYiLCJHQktwLUVVQy1IIiwiR0JLcC1FVUMtViIsIkdCVC1FVUMtSCIsIkdCVC1FVUMtViIsIkdCVC1IIiwiR0JULVYiLCJHQlRwYy1FVUMtSCIsIkdCVHBjLUVVQy1WIiwiR0JwYy1FVUMtSCIsIkdCcGMtRVVDLVYiLCJIIiwiSEtkbGEtQjUtSCIsIkhLZGxhLUI1LVYiLCJIS2RsYi1CNS1IIiwiSEtkbGItQjUtViIsIkhLZ2Njcy1CNS1IIiwiSEtnY2NzLUI1LVYiLCJIS20zMTQtQjUtSCIsIkhLbTMxNC1CNS1WIiwiSEttNDcxLUI1LUgiLCJIS200NzEtQjUtViIsIkhLc2NzLUI1LUgiLCJIS3Njcy1CNS1WIiwiSGFua2FrdSIsIkhpcmFnYW5hIiwiS1NDLUVVQy1IIiwiS1NDLUVVQy1WIiwiS1NDLUgiLCJLU0MtSm9oYWItSCIsIktTQy1Kb2hhYi1WIiwiS1NDLVYiLCJLU0Ntcy1VSEMtSCIsIktTQ21zLVVIQy1IVy1IIiwiS1NDbXMtVUhDLUhXLVYiLCJLU0Ntcy1VSEMtViIsIktTQ3BjLUVVQy1IIiwiS1NDcGMtRVVDLVYiLCJLYXRha2FuYSIsIk5XUC1IIiwiTldQLVYiLCJSS1NKLUgiLCJSS1NKLVYiLCJSb21hbiIsIlVuaUNOUy1VQ1MyLUgiLCJVbmlDTlMtVUNTMi1WIiwiVW5pQ05TLVVURjE2LUgiLCJVbmlDTlMtVVRGMTYtViIsIlVuaUNOUy1VVEYzMi1IIiwiVW5pQ05TLVVURjMyLVYiLCJVbmlDTlMtVVRGOC1IIiwiVW5pQ05TLVVURjgtViIsIlVuaUdCLVVDUzItSCIsIlVuaUdCLVVDUzItViIsIlVuaUdCLVVURjE2LUgiLCJVbmlHQi1VVEYxNi1WIiwiVW5pR0ItVVRGMzItSCIsIlVuaUdCLVVURjMyLVYiLCJVbmlHQi1VVEY4LUgiLCJVbmlHQi1VVEY4LVYiLCJVbmlKSVMtVUNTMi1IIiwiVW5pSklTLVVDUzItSFctSCIsIlVuaUpJUy1VQ1MyLUhXLVYiLCJVbmlKSVMtVUNTMi1WIiwiVW5pSklTLVVURjE2LUgiLCJVbmlKSVMtVVRGMTYtViIsIlVuaUpJUy1VVEYzMi1IIiwiVW5pSklTLVVURjMyLVYiLCJVbmlKSVMtVVRGOC1IIiwiVW5pSklTLVVURjgtViIsIlVuaUpJUzIwMDQtVVRGMTYtSCIsIlVuaUpJUzIwMDQtVVRGMTYtViIsIlVuaUpJUzIwMDQtVVRGMzItSCIsIlVuaUpJUzIwMDQtVVRGMzItViIsIlVuaUpJUzIwMDQtVVRGOC1IIiwiVW5pSklTMjAwNC1VVEY4LVYiLCJVbmlKSVNQcm8tVUNTMi1IVy1WIiwiVW5pSklTUHJvLVVDUzItViIsIlVuaUpJU1Byby1VVEY4LVYiLCJVbmlKSVNYMDIxMy1VVEYzMi1IIiwiVW5pSklTWDAyMTMtVVRGMzItViIsIlVuaUpJU1gwMjEzMjAwNC1VVEYzMi1IIiwiVW5pSklTWDAyMTMyMDA0LVVURjMyLVYiLCJVbmlLUy1VQ1MyLUgiLCJVbmlLUy1VQ1MyLVYiLCJVbmlLUy1VVEYxNi1IIiwiVW5pS1MtVVRGMTYtViIsIlVuaUtTLVVURjMyLUgiLCJVbmlLUy1VVEYzMi1WIiwiVW5pS1MtVVRGOC1IIiwiVW5pS1MtVVRGOC1WIiwiViIsIldQLVN5bWJvbCJdLGhpPTIqKjI0LTE7Y2xhc3MgQ01hcHtjb25zdHJ1Y3RvcihlPSExKXt0aGlzLmNvZGVzcGFjZVJhbmdlcz1bW10sW10sW10sW11dO3RoaXMubnVtQ29kZXNwYWNlUmFuZ2VzPTA7dGhpcy5fbWFwPVtdO3RoaXMubmFtZT0iIjt0aGlzLnZlcnRpY2FsPSExO3RoaXMudXNlQ01hcD1udWxsO3RoaXMuYnVpbHRJbkNNYXA9ZX1hZGRDb2Rlc3BhY2VSYW5nZShlLHQsaSl7dGhpcy5jb2Rlc3BhY2VSYW5nZXNbZS0xXS5wdXNoKHQsaSk7dGhpcy5udW1Db2Rlc3BhY2VSYW5nZXMrK31tYXBDaWRSYW5nZShlLHQsaSl7aWYodC1lPmhpKXRocm93IG5ldyBFcnJvcigibWFwQ2lkUmFuZ2UgLSBpZ25vcmluZyBkYXRhIGFib3ZlIE1BWF9NQVBfUkFOR0UuIik7Zm9yKDtlPD10Oyl0aGlzLl9tYXBbZSsrXT1pKyt9bWFwQmZSYW5nZShlLHQsaSl7aWYodC1lPmhpKXRocm93IG5ldyBFcnJvcigibWFwQmZSYW5nZSAtIGlnbm9yaW5nIGRhdGEgYWJvdmUgTUFYX01BUF9SQU5HRS4iKTtjb25zdCBhPWkubGVuZ3RoLTE7Zm9yKDtlPD10Oyl7dGhpcy5fbWFwW2UrK109aTtjb25zdCB0PWkuY2hhckNvZGVBdChhKSsxO3Q+MjU1P2k9aS5zdWJzdHJpbmcoMCxhLTEpK1N0cmluZy5mcm9tQ2hhckNvZGUoaS5jaGFyQ29kZUF0KGEtMSkrMSkrIlwwIjppPWkuc3Vic3RyaW5nKDAsYSkrU3RyaW5nLmZyb21DaGFyQ29kZSh0KX19bWFwQmZSYW5nZVRvQXJyYXkoZSx0LGkpe2lmKHQtZT5oaSl0aHJvdyBuZXcgRXJyb3IoIm1hcEJmUmFuZ2VUb0FycmF5IC0gaWdub3JpbmcgZGF0YSBhYm92ZSBNQVhfTUFQX1JBTkdFLiIpO2NvbnN0IGE9aS5sZW5ndGg7bGV0IHM9MDtmb3IoO2U8PXQmJnM8YTspe3RoaXMuX21hcFtlXT1pW3MrK107KytlfX1tYXBPbmUoZSx0KXt0aGlzLl9tYXBbZV09dH1sb29rdXAoZSl7cmV0dXJuIHRoaXMuX21hcFtlXX1jb250YWlucyhlKXtyZXR1cm4gdm9pZCAwIT09dGhpcy5fbWFwW2VdfWZvckVhY2goZSl7Y29uc3QgdD10aGlzLl9tYXAsaT10Lmxlbmd0aDtpZihpPD02NTUzNilmb3IobGV0IGE9MDthPGk7YSsrKXZvaWQgMCE9PXRbYV0mJmUoYSx0W2FdKTtlbHNlIGZvcihjb25zdCBpIGluIHQpZShpLHRbaV0pfWNoYXJDb2RlT2YoZSl7Y29uc3QgdD10aGlzLl9tYXA7aWYodC5sZW5ndGg8PTY1NTM2KXJldHVybiB0LmluZGV4T2YoZSk7Zm9yKGNvbnN0IGkgaW4gdClpZih0W2ldPT09ZSlyZXR1cm4gMHxpO3JldHVybi0xfWdldE1hcCgpe3JldHVybiB0aGlzLl9tYXB9cmVhZENoYXJDb2RlKGUsdCxpKXtsZXQgYT0wO2NvbnN0IHM9dGhpcy5jb2Rlc3BhY2VSYW5nZXM7Zm9yKGxldCByPTAsbj1zLmxlbmd0aDtyPG47cisrKXthPShhPDw4fGUuY2hhckNvZGVBdCh0K3IpKT4+PjA7Y29uc3Qgbj1zW3JdO2ZvcihsZXQgZT0wLHQ9bi5sZW5ndGg7ZTx0Oyl7Y29uc3QgdD1uW2UrK10scz1uW2UrK107aWYoYT49dCYmYTw9cyl7aS5jaGFyY29kZT1hO2kubGVuZ3RoPXIrMTtyZXR1cm59fX1pLmNoYXJjb2RlPTA7aS5sZW5ndGg9MX1nZXRDaGFyQ29kZUxlbmd0aChlKXtjb25zdCB0PXRoaXMuY29kZXNwYWNlUmFuZ2VzO2ZvcihsZXQgaT0wLGE9dC5sZW5ndGg7aTxhO2krKyl7Y29uc3QgYT10W2ldO2ZvcihsZXQgdD0wLHM9YS5sZW5ndGg7dDxzOyl7Y29uc3Qgcz1hW3QrK10scj1hW3QrK107aWYoZT49cyYmZTw9cilyZXR1cm4gaSsxfX1yZXR1cm4gMX1nZXQgbGVuZ3RoKCl7cmV0dXJuIHRoaXMuX21hcC5sZW5ndGh9Z2V0IGlzSWRlbnRpdHlDTWFwKCl7aWYoIklkZW50aXR5LUgiIT09dGhpcy5uYW1lJiYiSWRlbnRpdHktViIhPT10aGlzLm5hbWUpcmV0dXJuITE7aWYoNjU1MzYhPT10aGlzLl9tYXAubGVuZ3RoKXJldHVybiExO2ZvcihsZXQgZT0wO2U8NjU1MzY7ZSsrKWlmKHRoaXMuX21hcFtlXSE9PWUpcmV0dXJuITE7cmV0dXJuITB9fWNsYXNzIElkZW50aXR5Q01hcCBleHRlbmRzIENNYXB7Y29uc3RydWN0b3IoZSx0KXtzdXBlcigpO3RoaXMudmVydGljYWw9ZTt0aGlzLmFkZENvZGVzcGFjZVJhbmdlKHQsMCw2NTUzNSl9bWFwQ2lkUmFuZ2UoZSx0LGkpe3VucmVhY2hhYmxlKCJzaG91bGQgbm90IGNhbGwgbWFwQ2lkUmFuZ2UiKX1tYXBCZlJhbmdlKGUsdCxpKXt1bnJlYWNoYWJsZSgic2hvdWxkIG5vdCBjYWxsIG1hcEJmUmFuZ2UiKX1tYXBCZlJhbmdlVG9BcnJheShlLHQsaSl7dW5yZWFjaGFibGUoInNob3VsZCBub3QgY2FsbCBtYXBCZlJhbmdlVG9BcnJheSIpfW1hcE9uZShlLHQpe3VucmVhY2hhYmxlKCJzaG91bGQgbm90IGNhbGwgbWFwQ2lkT25lIil9bG9va3VwKGUpe3JldHVybiBOdW1iZXIuaXNJbnRlZ2VyKGUpJiZlPD02NTUzNT9lOnZvaWQgMH1jb250YWlucyhlKXtyZXR1cm4gTnVtYmVyLmlzSW50ZWdlcihlKSYmZTw9NjU1MzV9Zm9yRWFjaChlKXtmb3IobGV0IHQ9MDt0PD02NTUzNTt0KyspZSh0LHQpfWNoYXJDb2RlT2YoZSl7cmV0dXJuIE51bWJlci5pc0ludGVnZXIoZSkmJmU8PTY1NTM1P2U6LTF9Z2V0TWFwKCl7Y29uc3QgZT1uZXcgQXJyYXkoNjU1MzYpO2ZvcihsZXQgdD0wO3Q8PTY1NTM1O3QrKyllW3RdPXQ7cmV0dXJuIGV9Z2V0IGxlbmd0aCgpe3JldHVybiA2NTUzNn1nZXQgaXNJZGVudGl0eUNNYXAoKXt1bnJlYWNoYWJsZSgic2hvdWxkIG5vdCBhY2Nlc3MgLmlzSWRlbnRpdHlDTWFwIil9fWZ1bmN0aW9uIHN0clRvSW50KGUpe2xldCB0PTA7Zm9yKGxldCBpPTA7aTxlLmxlbmd0aDtpKyspdD10PDw4fGUuY2hhckNvZGVBdChpKTtyZXR1cm4gdD4+PjB9ZnVuY3Rpb24gZXhwZWN0U3RyaW5nKGUpe2lmKCJzdHJpbmciIT10eXBlb2YgZSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIk1hbGZvcm1lZCBDTWFwOiBleHBlY3RlZCBzdHJpbmcuIil9ZnVuY3Rpb24gZXhwZWN0SW50KGUpe2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGUpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiTWFsZm9ybWVkIENNYXA6IGV4cGVjdGVkIGludC4iKX1mdW5jdGlvbiBwYXJzZUJmQ2hhcihlLHQpe2Zvcig7Oyl7bGV0IGk9dC5nZXRPYmooKTtpZihpPT09cHQpYnJlYWs7aWYoaXNDbWQoaSwiZW5kYmZjaGFyIikpcmV0dXJuO2V4cGVjdFN0cmluZyhpKTtjb25zdCBhPXN0clRvSW50KGkpO2k9dC5nZXRPYmooKTtleHBlY3RTdHJpbmcoaSk7Y29uc3Qgcz1pO2UubWFwT25lKGEscyl9fWZ1bmN0aW9uIHBhcnNlQmZSYW5nZShlLHQpe2Zvcig7Oyl7bGV0IGk9dC5nZXRPYmooKTtpZihpPT09cHQpYnJlYWs7aWYoaXNDbWQoaSwiZW5kYmZyYW5nZSIpKXJldHVybjtleHBlY3RTdHJpbmcoaSk7Y29uc3QgYT1zdHJUb0ludChpKTtpPXQuZ2V0T2JqKCk7ZXhwZWN0U3RyaW5nKGkpO2NvbnN0IHM9c3RyVG9JbnQoaSk7aT10LmdldE9iaigpO2lmKE51bWJlci5pc0ludGVnZXIoaSl8fCJzdHJpbmciPT10eXBlb2YgaSl7Y29uc3QgdD1OdW1iZXIuaXNJbnRlZ2VyKGkpP1N0cmluZy5mcm9tQ2hhckNvZGUoaSk6aTtlLm1hcEJmUmFuZ2UoYSxzLHQpfWVsc2V7aWYoIWlzQ21kKGksIlsiKSlicmVhazt7aT10LmdldE9iaigpO2NvbnN0IHI9W107Zm9yKDshaXNDbWQoaSwiXSIpJiZpIT09cHQ7KXtyLnB1c2goaSk7aT10LmdldE9iaigpfWUubWFwQmZSYW5nZVRvQXJyYXkoYSxzLHIpfX19dGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIGJmIHJhbmdlLiIpfWZ1bmN0aW9uIHBhcnNlQ2lkQ2hhcihlLHQpe2Zvcig7Oyl7bGV0IGk9dC5nZXRPYmooKTtpZihpPT09cHQpYnJlYWs7aWYoaXNDbWQoaSwiZW5kY2lkY2hhciIpKXJldHVybjtleHBlY3RTdHJpbmcoaSk7Y29uc3QgYT1zdHJUb0ludChpKTtpPXQuZ2V0T2JqKCk7ZXhwZWN0SW50KGkpO2NvbnN0IHM9aTtlLm1hcE9uZShhLHMpfX1mdW5jdGlvbiBwYXJzZUNpZFJhbmdlKGUsdCl7Zm9yKDs7KXtsZXQgaT10LmdldE9iaigpO2lmKGk9PT1wdClicmVhaztpZihpc0NtZChpLCJlbmRjaWRyYW5nZSIpKXJldHVybjtleHBlY3RTdHJpbmcoaSk7Y29uc3QgYT1zdHJUb0ludChpKTtpPXQuZ2V0T2JqKCk7ZXhwZWN0U3RyaW5nKGkpO2NvbnN0IHM9c3RyVG9JbnQoaSk7aT10LmdldE9iaigpO2V4cGVjdEludChpKTtjb25zdCByPWk7ZS5tYXBDaWRSYW5nZShhLHMscil9fWZ1bmN0aW9uIHBhcnNlQ29kZXNwYWNlUmFuZ2UoZSx0KXtmb3IoOzspe2xldCBpPXQuZ2V0T2JqKCk7aWYoaT09PXB0KWJyZWFrO2lmKGlzQ21kKGksImVuZGNvZGVzcGFjZXJhbmdlIikpcmV0dXJuO2lmKCJzdHJpbmciIT10eXBlb2YgaSlicmVhaztjb25zdCBhPXN0clRvSW50KGkpO2k9dC5nZXRPYmooKTtpZigic3RyaW5nIiE9dHlwZW9mIGkpYnJlYWs7Y29uc3Qgcz1zdHJUb0ludChpKTtlLmFkZENvZGVzcGFjZVJhbmdlKGkubGVuZ3RoLGEscyl9dGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIGNvZGVzcGFjZSByYW5nZS4iKX1mdW5jdGlvbiBwYXJzZVdNb2RlKGUsdCl7Y29uc3QgaT10LmdldE9iaigpO051bWJlci5pc0ludGVnZXIoaSkmJihlLnZlcnRpY2FsPSEhaSl9ZnVuY3Rpb24gcGFyc2VDTWFwTmFtZShlLHQpe2NvbnN0IGk9dC5nZXRPYmooKTtpIGluc3RhbmNlb2YgTmFtZSYmKGUubmFtZT1pLm5hbWUpfWFzeW5jIGZ1bmN0aW9uIHBhcnNlQ01hcChlLHQsaSxhKXtsZXQgcyxyO0E6Zm9yKDs7KXRyeXtjb25zdCBpPXQuZ2V0T2JqKCk7aWYoaT09PXB0KWJyZWFrO2lmKGkgaW5zdGFuY2VvZiBOYW1lKXsiV01vZGUiPT09aS5uYW1lP3BhcnNlV01vZGUoZSx0KToiQ01hcE5hbWUiPT09aS5uYW1lJiZwYXJzZUNNYXBOYW1lKGUsdCk7cz1pfWVsc2UgaWYoaSBpbnN0YW5jZW9mIENtZClzd2l0Y2goaS5jbWQpe2Nhc2UiZW5kY21hcCI6YnJlYWsgQTtjYXNlInVzZWNtYXAiOnMgaW5zdGFuY2VvZiBOYW1lJiYocj1zLm5hbWUpO2JyZWFrO2Nhc2UiYmVnaW5jb2Rlc3BhY2VyYW5nZSI6cGFyc2VDb2Rlc3BhY2VSYW5nZShlLHQpO2JyZWFrO2Nhc2UiYmVnaW5iZmNoYXIiOnBhcnNlQmZDaGFyKGUsdCk7YnJlYWs7Y2FzZSJiZWdpbmNpZGNoYXIiOnBhcnNlQ2lkQ2hhcihlLHQpO2JyZWFrO2Nhc2UiYmVnaW5iZnJhbmdlIjpwYXJzZUJmUmFuZ2UoZSx0KTticmVhaztjYXNlImJlZ2luY2lkcmFuZ2UiOnBhcnNlQ2lkUmFuZ2UoZSx0KX19Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7d2FybigiSW52YWxpZCBjTWFwIGRhdGE6ICIrZSk7Y29udGludWV9IWEmJnImJihhPXIpO3JldHVybiBhP2V4dGVuZENNYXAoZSxpLGEpOmV9YXN5bmMgZnVuY3Rpb24gZXh0ZW5kQ01hcChlLHQsaSl7ZS51c2VDTWFwPWF3YWl0IGNyZWF0ZUJ1aWx0SW5DTWFwKGksdCk7aWYoMD09PWUubnVtQ29kZXNwYWNlUmFuZ2VzKXtjb25zdCB0PWUudXNlQ01hcC5jb2Rlc3BhY2VSYW5nZXM7Zm9yKGxldCBpPTA7aTx0Lmxlbmd0aDtpKyspZS5jb2Rlc3BhY2VSYW5nZXNbaV09dFtpXS5zbGljZSgpO2UubnVtQ29kZXNwYWNlUmFuZ2VzPWUudXNlQ01hcC5udW1Db2Rlc3BhY2VSYW5nZXN9ZS51c2VDTWFwLmZvckVhY2goKGZ1bmN0aW9uKHQsaSl7ZS5jb250YWlucyh0KXx8ZS5tYXBPbmUodCxlLnVzZUNNYXAubG9va3VwKHQpKX0pKTtyZXR1cm4gZX1hc3luYyBmdW5jdGlvbiBjcmVhdGVCdWlsdEluQ01hcChlLHQpe2lmKCJJZGVudGl0eS1IIj09PWUpcmV0dXJuIG5ldyBJZGVudGl0eUNNYXAoITEsMik7aWYoIklkZW50aXR5LVYiPT09ZSlyZXR1cm4gbmV3IElkZW50aXR5Q01hcCghMCwyKTtpZighQ2kuaW5jbHVkZXMoZSkpdGhyb3cgbmV3IEVycm9yKCJVbmtub3duIENNYXAgbmFtZTogIitlKTtpZighdCl0aHJvdyBuZXcgRXJyb3IoIkJ1aWx0LWluIENNYXAgcGFyYW1ldGVycyBhcmUgbm90IHByb3ZpZGVkLiIpO2NvbnN0e2NNYXBEYXRhOmksY29tcHJlc3Npb25UeXBlOmF9PWF3YWl0IHQoZSkscz1uZXcgQ01hcCghMCk7aWYoYT09PW1BLkJJTkFSWSlyZXR1cm4obmV3IEJpbmFyeUNNYXBSZWFkZXIpLnByb2Nlc3MoaSxzLChlPT5leHRlbmRDTWFwKHMsdCxlKSkpO2lmKGE9PT1tQS5OT05FKXtjb25zdCBlPW5ldyBMZXhlcihuZXcgU3RyZWFtKGkpKTtyZXR1cm4gcGFyc2VDTWFwKHMsZSx0LG51bGwpfXRocm93IG5ldyBFcnJvcihgSW52YWxpZCBDTWFwICJjb21wcmVzc2lvblR5cGUiIHZhbHVlOiAke2F9YCl9Y2xhc3MgQ01hcEZhY3Rvcnl7c3RhdGljIGFzeW5jIGNyZWF0ZSh7ZW5jb2Rpbmc6ZSxmZXRjaEJ1aWx0SW5DTWFwOnQsdXNlQ01hcDppfSl7aWYoZSBpbnN0YW5jZW9mIE5hbWUpcmV0dXJuIGNyZWF0ZUJ1aWx0SW5DTWFwKGUubmFtZSx0KTtpZihlIGluc3RhbmNlb2YgQmFzZVN0cmVhbSl7Y29uc3QgYT1hd2FpdCBwYXJzZUNNYXAobmV3IENNYXAsbmV3IExleGVyKGUpLHQsaSk7cmV0dXJuIGEuaXNJZGVudGl0eUNNYXA/Y3JlYXRlQnVpbHRJbkNNYXAoYS5uYW1lLHQpOmF9dGhyb3cgbmV3IEVycm9yKCJFbmNvZGluZyByZXF1aXJlZC4iKX19Y29uc3QgbGk9WyIubm90ZGVmIiwic3BhY2UiLCJleGNsYW0iLCJxdW90ZWRibCIsIm51bWJlcnNpZ24iLCJkb2xsYXIiLCJwZXJjZW50IiwiYW1wZXJzYW5kIiwicXVvdGVyaWdodCIsInBhcmVubGVmdCIsInBhcmVucmlnaHQiLCJhc3RlcmlzayIsInBsdXMiLCJjb21tYSIsImh5cGhlbiIsInBlcmlvZCIsInNsYXNoIiwiemVybyIsIm9uZSIsInR3byIsInRocmVlIiwiZm91ciIsImZpdmUiLCJzaXgiLCJzZXZlbiIsImVpZ2h0IiwibmluZSIsImNvbG9uIiwic2VtaWNvbG9uIiwibGVzcyIsImVxdWFsIiwiZ3JlYXRlciIsInF1ZXN0aW9uIiwiYXQiLCJBIiwiQiIsIkMiLCJEIiwiRSIsIkYiLCJHIiwiSCIsIkkiLCJKIiwiSyIsIkwiLCJNIiwiTiIsIk8iLCJQIiwiUSIsIlIiLCJTIiwiVCIsIlUiLCJWIiwiVyIsIlgiLCJZIiwiWiIsImJyYWNrZXRsZWZ0IiwiYmFja3NsYXNoIiwiYnJhY2tldHJpZ2h0IiwiYXNjaWljaXJjdW0iLCJ1bmRlcnNjb3JlIiwicXVvdGVsZWZ0IiwiYSIsImIiLCJjIiwiZCIsImUiLCJmIiwiZyIsImgiLCJpIiwiaiIsImsiLCJsIiwibSIsIm4iLCJvIiwicCIsInEiLCJyIiwicyIsInQiLCJ1IiwidiIsInciLCJ4IiwieSIsInoiLCJicmFjZWxlZnQiLCJiYXIiLCJicmFjZXJpZ2h0IiwiYXNjaWl0aWxkZSIsImV4Y2xhbWRvd24iLCJjZW50Iiwic3RlcmxpbmciLCJmcmFjdGlvbiIsInllbiIsImZsb3JpbiIsInNlY3Rpb24iLCJjdXJyZW5jeSIsInF1b3Rlc2luZ2xlIiwicXVvdGVkYmxsZWZ0IiwiZ3VpbGxlbW90bGVmdCIsImd1aWxzaW5nbGxlZnQiLCJndWlsc2luZ2xyaWdodCIsImZpIiwiZmwiLCJlbmRhc2giLCJkYWdnZXIiLCJkYWdnZXJkYmwiLCJwZXJpb2RjZW50ZXJlZCIsInBhcmFncmFwaCIsImJ1bGxldCIsInF1b3Rlc2luZ2xiYXNlIiwicXVvdGVkYmxiYXNlIiwicXVvdGVkYmxyaWdodCIsImd1aWxsZW1vdHJpZ2h0IiwiZWxsaXBzaXMiLCJwZXJ0aG91c2FuZCIsInF1ZXN0aW9uZG93biIsImdyYXZlIiwiYWN1dGUiLCJjaXJjdW1mbGV4IiwidGlsZGUiLCJtYWNyb24iLCJicmV2ZSIsImRvdGFjY2VudCIsImRpZXJlc2lzIiwicmluZyIsImNlZGlsbGEiLCJodW5nYXJ1bWxhdXQiLCJvZ29uZWsiLCJjYXJvbiIsImVtZGFzaCIsIkFFIiwib3JkZmVtaW5pbmUiLCJMc2xhc2giLCJPc2xhc2giLCJPRSIsIm9yZG1hc2N1bGluZSIsImFlIiwiZG90bGVzc2kiLCJsc2xhc2giLCJvc2xhc2giLCJvZSIsImdlcm1hbmRibHMiLCJvbmVzdXBlcmlvciIsImxvZ2ljYWxub3QiLCJtdSIsInRyYWRlbWFyayIsIkV0aCIsIm9uZWhhbGYiLCJwbHVzbWludXMiLCJUaG9ybiIsIm9uZXF1YXJ0ZXIiLCJkaXZpZGUiLCJicm9rZW5iYXIiLCJkZWdyZWUiLCJ0aG9ybiIsInRocmVlcXVhcnRlcnMiLCJ0d29zdXBlcmlvciIsInJlZ2lzdGVyZWQiLCJtaW51cyIsImV0aCIsIm11bHRpcGx5IiwidGhyZWVzdXBlcmlvciIsImNvcHlyaWdodCIsIkFhY3V0ZSIsIkFjaXJjdW1mbGV4IiwiQWRpZXJlc2lzIiwiQWdyYXZlIiwiQXJpbmciLCJBdGlsZGUiLCJDY2VkaWxsYSIsIkVhY3V0ZSIsIkVjaXJjdW1mbGV4IiwiRWRpZXJlc2lzIiwiRWdyYXZlIiwiSWFjdXRlIiwiSWNpcmN1bWZsZXgiLCJJZGllcmVzaXMiLCJJZ3JhdmUiLCJOdGlsZGUiLCJPYWN1dGUiLCJPY2lyY3VtZmxleCIsIk9kaWVyZXNpcyIsIk9ncmF2ZSIsIk90aWxkZSIsIlNjYXJvbiIsIlVhY3V0ZSIsIlVjaXJjdW1mbGV4IiwiVWRpZXJlc2lzIiwiVWdyYXZlIiwiWWFjdXRlIiwiWWRpZXJlc2lzIiwiWmNhcm9uIiwiYWFjdXRlIiwiYWNpcmN1bWZsZXgiLCJhZGllcmVzaXMiLCJhZ3JhdmUiLCJhcmluZyIsImF0aWxkZSIsImNjZWRpbGxhIiwiZWFjdXRlIiwiZWNpcmN1bWZsZXgiLCJlZGllcmVzaXMiLCJlZ3JhdmUiLCJpYWN1dGUiLCJpY2lyY3VtZmxleCIsImlkaWVyZXNpcyIsImlncmF2ZSIsIm50aWxkZSIsIm9hY3V0ZSIsIm9jaXJjdW1mbGV4Iiwib2RpZXJlc2lzIiwib2dyYXZlIiwib3RpbGRlIiwic2Nhcm9uIiwidWFjdXRlIiwidWNpcmN1bWZsZXgiLCJ1ZGllcmVzaXMiLCJ1Z3JhdmUiLCJ5YWN1dGUiLCJ5ZGllcmVzaXMiLCJ6Y2Fyb24iXSxCaT1bIi5ub3RkZWYiLCJzcGFjZSIsImV4Y2xhbXNtYWxsIiwiSHVuZ2FydW1sYXV0c21hbGwiLCJkb2xsYXJvbGRzdHlsZSIsImRvbGxhcnN1cGVyaW9yIiwiYW1wZXJzYW5kc21hbGwiLCJBY3V0ZXNtYWxsIiwicGFyZW5sZWZ0c3VwZXJpb3IiLCJwYXJlbnJpZ2h0c3VwZXJpb3IiLCJ0d29kb3RlbmxlYWRlciIsIm9uZWRvdGVubGVhZGVyIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJmcmFjdGlvbiIsInplcm9vbGRzdHlsZSIsIm9uZW9sZHN0eWxlIiwidHdvb2xkc3R5bGUiLCJ0aHJlZW9sZHN0eWxlIiwiZm91cm9sZHN0eWxlIiwiZml2ZW9sZHN0eWxlIiwic2l4b2xkc3R5bGUiLCJzZXZlbm9sZHN0eWxlIiwiZWlnaHRvbGRzdHlsZSIsIm5pbmVvbGRzdHlsZSIsImNvbG9uIiwic2VtaWNvbG9uIiwiY29tbWFzdXBlcmlvciIsInRocmVlcXVhcnRlcnNlbWRhc2giLCJwZXJpb2RzdXBlcmlvciIsInF1ZXN0aW9uc21hbGwiLCJhc3VwZXJpb3IiLCJic3VwZXJpb3IiLCJjZW50c3VwZXJpb3IiLCJkc3VwZXJpb3IiLCJlc3VwZXJpb3IiLCJpc3VwZXJpb3IiLCJsc3VwZXJpb3IiLCJtc3VwZXJpb3IiLCJuc3VwZXJpb3IiLCJvc3VwZXJpb3IiLCJyc3VwZXJpb3IiLCJzc3VwZXJpb3IiLCJ0c3VwZXJpb3IiLCJmZiIsImZpIiwiZmwiLCJmZmkiLCJmZmwiLCJwYXJlbmxlZnRpbmZlcmlvciIsInBhcmVucmlnaHRpbmZlcmlvciIsIkNpcmN1bWZsZXhzbWFsbCIsImh5cGhlbnN1cGVyaW9yIiwiR3JhdmVzbWFsbCIsIkFzbWFsbCIsIkJzbWFsbCIsIkNzbWFsbCIsIkRzbWFsbCIsIkVzbWFsbCIsIkZzbWFsbCIsIkdzbWFsbCIsIkhzbWFsbCIsIklzbWFsbCIsIkpzbWFsbCIsIktzbWFsbCIsIkxzbWFsbCIsIk1zbWFsbCIsIk5zbWFsbCIsIk9zbWFsbCIsIlBzbWFsbCIsIlFzbWFsbCIsIlJzbWFsbCIsIlNzbWFsbCIsIlRzbWFsbCIsIlVzbWFsbCIsIlZzbWFsbCIsIldzbWFsbCIsIlhzbWFsbCIsIllzbWFsbCIsIlpzbWFsbCIsImNvbG9ubW9uZXRhcnkiLCJvbmVmaXR0ZWQiLCJydXBpYWgiLCJUaWxkZXNtYWxsIiwiZXhjbGFtZG93bnNtYWxsIiwiY2VudG9sZHN0eWxlIiwiTHNsYXNoc21hbGwiLCJTY2Fyb25zbWFsbCIsIlpjYXJvbnNtYWxsIiwiRGllcmVzaXNzbWFsbCIsIkJyZXZlc21hbGwiLCJDYXJvbnNtYWxsIiwiRG90YWNjZW50c21hbGwiLCJNYWNyb25zbWFsbCIsImZpZ3VyZWRhc2giLCJoeXBoZW5pbmZlcmlvciIsIk9nb25la3NtYWxsIiwiUmluZ3NtYWxsIiwiQ2VkaWxsYXNtYWxsIiwib25lcXVhcnRlciIsIm9uZWhhbGYiLCJ0aHJlZXF1YXJ0ZXJzIiwicXVlc3Rpb25kb3duc21hbGwiLCJvbmVlaWdodGgiLCJ0aHJlZWVpZ2h0aHMiLCJmaXZlZWlnaHRocyIsInNldmVuZWlnaHRocyIsIm9uZXRoaXJkIiwidHdvdGhpcmRzIiwiemVyb3N1cGVyaW9yIiwib25lc3VwZXJpb3IiLCJ0d29zdXBlcmlvciIsInRocmVlc3VwZXJpb3IiLCJmb3Vyc3VwZXJpb3IiLCJmaXZlc3VwZXJpb3IiLCJzaXhzdXBlcmlvciIsInNldmVuc3VwZXJpb3IiLCJlaWdodHN1cGVyaW9yIiwibmluZXN1cGVyaW9yIiwiemVyb2luZmVyaW9yIiwib25laW5mZXJpb3IiLCJ0d29pbmZlcmlvciIsInRocmVlaW5mZXJpb3IiLCJmb3VyaW5mZXJpb3IiLCJmaXZlaW5mZXJpb3IiLCJzaXhpbmZlcmlvciIsInNldmVuaW5mZXJpb3IiLCJlaWdodGluZmVyaW9yIiwibmluZWluZmVyaW9yIiwiY2VudGluZmVyaW9yIiwiZG9sbGFyaW5mZXJpb3IiLCJwZXJpb2RpbmZlcmlvciIsImNvbW1haW5mZXJpb3IiLCJBZ3JhdmVzbWFsbCIsIkFhY3V0ZXNtYWxsIiwiQWNpcmN1bWZsZXhzbWFsbCIsIkF0aWxkZXNtYWxsIiwiQWRpZXJlc2lzc21hbGwiLCJBcmluZ3NtYWxsIiwiQUVzbWFsbCIsIkNjZWRpbGxhc21hbGwiLCJFZ3JhdmVzbWFsbCIsIkVhY3V0ZXNtYWxsIiwiRWNpcmN1bWZsZXhzbWFsbCIsIkVkaWVyZXNpc3NtYWxsIiwiSWdyYXZlc21hbGwiLCJJYWN1dGVzbWFsbCIsIkljaXJjdW1mbGV4c21hbGwiLCJJZGllcmVzaXNzbWFsbCIsIkV0aHNtYWxsIiwiTnRpbGRlc21hbGwiLCJPZ3JhdmVzbWFsbCIsIk9hY3V0ZXNtYWxsIiwiT2NpcmN1bWZsZXhzbWFsbCIsIk90aWxkZXNtYWxsIiwiT2RpZXJlc2lzc21hbGwiLCJPRXNtYWxsIiwiT3NsYXNoc21hbGwiLCJVZ3JhdmVzbWFsbCIsIlVhY3V0ZXNtYWxsIiwiVWNpcmN1bWZsZXhzbWFsbCIsIlVkaWVyZXNpc3NtYWxsIiwiWWFjdXRlc21hbGwiLCJUaG9ybnNtYWxsIiwiWWRpZXJlc2lzc21hbGwiXSxRaT1bIi5ub3RkZWYiLCJzcGFjZSIsImRvbGxhcm9sZHN0eWxlIiwiZG9sbGFyc3VwZXJpb3IiLCJwYXJlbmxlZnRzdXBlcmlvciIsInBhcmVucmlnaHRzdXBlcmlvciIsInR3b2RvdGVubGVhZGVyIiwib25lZG90ZW5sZWFkZXIiLCJjb21tYSIsImh5cGhlbiIsInBlcmlvZCIsImZyYWN0aW9uIiwiemVyb29sZHN0eWxlIiwib25lb2xkc3R5bGUiLCJ0d29vbGRzdHlsZSIsInRocmVlb2xkc3R5bGUiLCJmb3Vyb2xkc3R5bGUiLCJmaXZlb2xkc3R5bGUiLCJzaXhvbGRzdHlsZSIsInNldmVub2xkc3R5bGUiLCJlaWdodG9sZHN0eWxlIiwibmluZW9sZHN0eWxlIiwiY29sb24iLCJzZW1pY29sb24iLCJjb21tYXN1cGVyaW9yIiwidGhyZWVxdWFydGVyc2VtZGFzaCIsInBlcmlvZHN1cGVyaW9yIiwiYXN1cGVyaW9yIiwiYnN1cGVyaW9yIiwiY2VudHN1cGVyaW9yIiwiZHN1cGVyaW9yIiwiZXN1cGVyaW9yIiwiaXN1cGVyaW9yIiwibHN1cGVyaW9yIiwibXN1cGVyaW9yIiwibnN1cGVyaW9yIiwib3N1cGVyaW9yIiwicnN1cGVyaW9yIiwic3N1cGVyaW9yIiwidHN1cGVyaW9yIiwiZmYiLCJmaSIsImZsIiwiZmZpIiwiZmZsIiwicGFyZW5sZWZ0aW5mZXJpb3IiLCJwYXJlbnJpZ2h0aW5mZXJpb3IiLCJoeXBoZW5zdXBlcmlvciIsImNvbG9ubW9uZXRhcnkiLCJvbmVmaXR0ZWQiLCJydXBpYWgiLCJjZW50b2xkc3R5bGUiLCJmaWd1cmVkYXNoIiwiaHlwaGVuaW5mZXJpb3IiLCJvbmVxdWFydGVyIiwib25laGFsZiIsInRocmVlcXVhcnRlcnMiLCJvbmVlaWdodGgiLCJ0aHJlZWVpZ2h0aHMiLCJmaXZlZWlnaHRocyIsInNldmVuZWlnaHRocyIsIm9uZXRoaXJkIiwidHdvdGhpcmRzIiwiemVyb3N1cGVyaW9yIiwib25lc3VwZXJpb3IiLCJ0d29zdXBlcmlvciIsInRocmVlc3VwZXJpb3IiLCJmb3Vyc3VwZXJpb3IiLCJmaXZlc3VwZXJpb3IiLCJzaXhzdXBlcmlvciIsInNldmVuc3VwZXJpb3IiLCJlaWdodHN1cGVyaW9yIiwibmluZXN1cGVyaW9yIiwiemVyb2luZmVyaW9yIiwib25laW5mZXJpb3IiLCJ0d29pbmZlcmlvciIsInRocmVlaW5mZXJpb3IiLCJmb3VyaW5mZXJpb3IiLCJmaXZlaW5mZXJpb3IiLCJzaXhpbmZlcmlvciIsInNldmVuaW5mZXJpb3IiLCJlaWdodGluZmVyaW9yIiwibmluZWluZmVyaW9yIiwiY2VudGluZmVyaW9yIiwiZG9sbGFyaW5mZXJpb3IiLCJwZXJpb2RpbmZlcmlvciIsImNvbW1haW5mZXJpb3IiXSxFaT1bIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsInNwYWNlIiwiZXhjbGFtc21hbGwiLCJIdW5nYXJ1bWxhdXRzbWFsbCIsIiIsImRvbGxhcm9sZHN0eWxlIiwiZG9sbGFyc3VwZXJpb3IiLCJhbXBlcnNhbmRzbWFsbCIsIkFjdXRlc21hbGwiLCJwYXJlbmxlZnRzdXBlcmlvciIsInBhcmVucmlnaHRzdXBlcmlvciIsInR3b2RvdGVubGVhZGVyIiwib25lZG90ZW5sZWFkZXIiLCJjb21tYSIsImh5cGhlbiIsInBlcmlvZCIsImZyYWN0aW9uIiwiemVyb29sZHN0eWxlIiwib25lb2xkc3R5bGUiLCJ0d29vbGRzdHlsZSIsInRocmVlb2xkc3R5bGUiLCJmb3Vyb2xkc3R5bGUiLCJmaXZlb2xkc3R5bGUiLCJzaXhvbGRzdHlsZSIsInNldmVub2xkc3R5bGUiLCJlaWdodG9sZHN0eWxlIiwibmluZW9sZHN0eWxlIiwiY29sb24iLCJzZW1pY29sb24iLCJjb21tYXN1cGVyaW9yIiwidGhyZWVxdWFydGVyc2VtZGFzaCIsInBlcmlvZHN1cGVyaW9yIiwicXVlc3Rpb25zbWFsbCIsIiIsImFzdXBlcmlvciIsImJzdXBlcmlvciIsImNlbnRzdXBlcmlvciIsImRzdXBlcmlvciIsImVzdXBlcmlvciIsIiIsIiIsIiIsImlzdXBlcmlvciIsIiIsIiIsImxzdXBlcmlvciIsIm1zdXBlcmlvciIsIm5zdXBlcmlvciIsIm9zdXBlcmlvciIsIiIsIiIsInJzdXBlcmlvciIsInNzdXBlcmlvciIsInRzdXBlcmlvciIsIiIsImZmIiwiZmkiLCJmbCIsImZmaSIsImZmbCIsInBhcmVubGVmdGluZmVyaW9yIiwiIiwicGFyZW5yaWdodGluZmVyaW9yIiwiQ2lyY3VtZmxleHNtYWxsIiwiaHlwaGVuc3VwZXJpb3IiLCJHcmF2ZXNtYWxsIiwiQXNtYWxsIiwiQnNtYWxsIiwiQ3NtYWxsIiwiRHNtYWxsIiwiRXNtYWxsIiwiRnNtYWxsIiwiR3NtYWxsIiwiSHNtYWxsIiwiSXNtYWxsIiwiSnNtYWxsIiwiS3NtYWxsIiwiTHNtYWxsIiwiTXNtYWxsIiwiTnNtYWxsIiwiT3NtYWxsIiwiUHNtYWxsIiwiUXNtYWxsIiwiUnNtYWxsIiwiU3NtYWxsIiwiVHNtYWxsIiwiVXNtYWxsIiwiVnNtYWxsIiwiV3NtYWxsIiwiWHNtYWxsIiwiWXNtYWxsIiwiWnNtYWxsIiwiY29sb25tb25ldGFyeSIsIm9uZWZpdHRlZCIsInJ1cGlhaCIsIlRpbGRlc21hbGwiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJleGNsYW1kb3duc21hbGwiLCJjZW50b2xkc3R5bGUiLCJMc2xhc2hzbWFsbCIsIiIsIiIsIlNjYXJvbnNtYWxsIiwiWmNhcm9uc21hbGwiLCJEaWVyZXNpc3NtYWxsIiwiQnJldmVzbWFsbCIsIkNhcm9uc21hbGwiLCIiLCJEb3RhY2NlbnRzbWFsbCIsIiIsIiIsIk1hY3JvbnNtYWxsIiwiIiwiIiwiZmlndXJlZGFzaCIsImh5cGhlbmluZmVyaW9yIiwiIiwiIiwiT2dvbmVrc21hbGwiLCJSaW5nc21hbGwiLCJDZWRpbGxhc21hbGwiLCIiLCIiLCIiLCJvbmVxdWFydGVyIiwib25laGFsZiIsInRocmVlcXVhcnRlcnMiLCJxdWVzdGlvbmRvd25zbWFsbCIsIm9uZWVpZ2h0aCIsInRocmVlZWlnaHRocyIsImZpdmVlaWdodGhzIiwic2V2ZW5laWdodGhzIiwib25ldGhpcmQiLCJ0d290aGlyZHMiLCIiLCIiLCJ6ZXJvc3VwZXJpb3IiLCJvbmVzdXBlcmlvciIsInR3b3N1cGVyaW9yIiwidGhyZWVzdXBlcmlvciIsImZvdXJzdXBlcmlvciIsImZpdmVzdXBlcmlvciIsInNpeHN1cGVyaW9yIiwic2V2ZW5zdXBlcmlvciIsImVpZ2h0c3VwZXJpb3IiLCJuaW5lc3VwZXJpb3IiLCJ6ZXJvaW5mZXJpb3IiLCJvbmVpbmZlcmlvciIsInR3b2luZmVyaW9yIiwidGhyZWVpbmZlcmlvciIsImZvdXJpbmZlcmlvciIsImZpdmVpbmZlcmlvciIsInNpeGluZmVyaW9yIiwic2V2ZW5pbmZlcmlvciIsImVpZ2h0aW5mZXJpb3IiLCJuaW5laW5mZXJpb3IiLCJjZW50aW5mZXJpb3IiLCJkb2xsYXJpbmZlcmlvciIsInBlcmlvZGluZmVyaW9yIiwiY29tbWFpbmZlcmlvciIsIkFncmF2ZXNtYWxsIiwiQWFjdXRlc21hbGwiLCJBY2lyY3VtZmxleHNtYWxsIiwiQXRpbGRlc21hbGwiLCJBZGllcmVzaXNzbWFsbCIsIkFyaW5nc21hbGwiLCJBRXNtYWxsIiwiQ2NlZGlsbGFzbWFsbCIsIkVncmF2ZXNtYWxsIiwiRWFjdXRlc21hbGwiLCJFY2lyY3VtZmxleHNtYWxsIiwiRWRpZXJlc2lzc21hbGwiLCJJZ3JhdmVzbWFsbCIsIklhY3V0ZXNtYWxsIiwiSWNpcmN1bWZsZXhzbWFsbCIsIklkaWVyZXNpc3NtYWxsIiwiRXRoc21hbGwiLCJOdGlsZGVzbWFsbCIsIk9ncmF2ZXNtYWxsIiwiT2FjdXRlc21hbGwiLCJPY2lyY3VtZmxleHNtYWxsIiwiT3RpbGRlc21hbGwiLCJPZGllcmVzaXNzbWFsbCIsIk9Fc21hbGwiLCJPc2xhc2hzbWFsbCIsIlVncmF2ZXNtYWxsIiwiVWFjdXRlc21hbGwiLCJVY2lyY3VtZmxleHNtYWxsIiwiVWRpZXJlc2lzc21hbGwiLCJZYWN1dGVzbWFsbCIsIlRob3Juc21hbGwiLCJZZGllcmVzaXNzbWFsbCJdLHVpPVsiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwic3BhY2UiLCJleGNsYW1zbWFsbCIsIkh1bmdhcnVtbGF1dHNtYWxsIiwiY2VudG9sZHN0eWxlIiwiZG9sbGFyb2xkc3R5bGUiLCJkb2xsYXJzdXBlcmlvciIsImFtcGVyc2FuZHNtYWxsIiwiQWN1dGVzbWFsbCIsInBhcmVubGVmdHN1cGVyaW9yIiwicGFyZW5yaWdodHN1cGVyaW9yIiwidHdvZG90ZW5sZWFkZXIiLCJvbmVkb3RlbmxlYWRlciIsImNvbW1hIiwiaHlwaGVuIiwicGVyaW9kIiwiZnJhY3Rpb24iLCJ6ZXJvb2xkc3R5bGUiLCJvbmVvbGRzdHlsZSIsInR3b29sZHN0eWxlIiwidGhyZWVvbGRzdHlsZSIsImZvdXJvbGRzdHlsZSIsImZpdmVvbGRzdHlsZSIsInNpeG9sZHN0eWxlIiwic2V2ZW5vbGRzdHlsZSIsImVpZ2h0b2xkc3R5bGUiLCJuaW5lb2xkc3R5bGUiLCJjb2xvbiIsInNlbWljb2xvbiIsIiIsInRocmVlcXVhcnRlcnNlbWRhc2giLCIiLCJxdWVzdGlvbnNtYWxsIiwiIiwiIiwiIiwiIiwiRXRoc21hbGwiLCIiLCIiLCJvbmVxdWFydGVyIiwib25laGFsZiIsInRocmVlcXVhcnRlcnMiLCJvbmVlaWdodGgiLCJ0aHJlZWVpZ2h0aHMiLCJmaXZlZWlnaHRocyIsInNldmVuZWlnaHRocyIsIm9uZXRoaXJkIiwidHdvdGhpcmRzIiwiIiwiIiwiIiwiIiwiIiwiIiwiZmYiLCJmaSIsImZsIiwiZmZpIiwiZmZsIiwicGFyZW5sZWZ0aW5mZXJpb3IiLCIiLCJwYXJlbnJpZ2h0aW5mZXJpb3IiLCJDaXJjdW1mbGV4c21hbGwiLCJoeXBoZW5pbmZlcmlvciIsIkdyYXZlc21hbGwiLCJBc21hbGwiLCJCc21hbGwiLCJDc21hbGwiLCJEc21hbGwiLCJFc21hbGwiLCJGc21hbGwiLCJHc21hbGwiLCJIc21hbGwiLCJJc21hbGwiLCJKc21hbGwiLCJLc21hbGwiLCJMc21hbGwiLCJNc21hbGwiLCJOc21hbGwiLCJPc21hbGwiLCJQc21hbGwiLCJRc21hbGwiLCJSc21hbGwiLCJTc21hbGwiLCJUc21hbGwiLCJVc21hbGwiLCJWc21hbGwiLCJXc21hbGwiLCJYc21hbGwiLCJZc21hbGwiLCJac21hbGwiLCJjb2xvbm1vbmV0YXJ5Iiwib25lZml0dGVkIiwicnVwaWFoIiwiVGlsZGVzbWFsbCIsIiIsIiIsImFzdXBlcmlvciIsImNlbnRzdXBlcmlvciIsIiIsIiIsIiIsIiIsIkFhY3V0ZXNtYWxsIiwiQWdyYXZlc21hbGwiLCJBY2lyY3VtZmxleHNtYWxsIiwiQWRpZXJlc2lzc21hbGwiLCJBdGlsZGVzbWFsbCIsIkFyaW5nc21hbGwiLCJDY2VkaWxsYXNtYWxsIiwiRWFjdXRlc21hbGwiLCJFZ3JhdmVzbWFsbCIsIkVjaXJjdW1mbGV4c21hbGwiLCJFZGllcmVzaXNzbWFsbCIsIklhY3V0ZXNtYWxsIiwiSWdyYXZlc21hbGwiLCJJY2lyY3VtZmxleHNtYWxsIiwiSWRpZXJlc2lzc21hbGwiLCJOdGlsZGVzbWFsbCIsIk9hY3V0ZXNtYWxsIiwiT2dyYXZlc21hbGwiLCJPY2lyY3VtZmxleHNtYWxsIiwiT2RpZXJlc2lzc21hbGwiLCJPdGlsZGVzbWFsbCIsIlVhY3V0ZXNtYWxsIiwiVWdyYXZlc21hbGwiLCJVY2lyY3VtZmxleHNtYWxsIiwiVWRpZXJlc2lzc21hbGwiLCIiLCJlaWdodHN1cGVyaW9yIiwiZm91cmluZmVyaW9yIiwidGhyZWVpbmZlcmlvciIsInNpeGluZmVyaW9yIiwiZWlnaHRpbmZlcmlvciIsInNldmVuaW5mZXJpb3IiLCJTY2Fyb25zbWFsbCIsIiIsImNlbnRpbmZlcmlvciIsInR3b2luZmVyaW9yIiwiIiwiRGllcmVzaXNzbWFsbCIsIiIsIkNhcm9uc21hbGwiLCJvc3VwZXJpb3IiLCJmaXZlaW5mZXJpb3IiLCIiLCJjb21tYWluZmVyaW9yIiwicGVyaW9kaW5mZXJpb3IiLCJZYWN1dGVzbWFsbCIsIiIsImRvbGxhcmluZmVyaW9yIiwiIiwiIiwiVGhvcm5zbWFsbCIsIiIsIm5pbmVpbmZlcmlvciIsInplcm9pbmZlcmlvciIsIlpjYXJvbnNtYWxsIiwiQUVzbWFsbCIsIk9zbGFzaHNtYWxsIiwicXVlc3Rpb25kb3duc21hbGwiLCJvbmVpbmZlcmlvciIsIkxzbGFzaHNtYWxsIiwiIiwiIiwiIiwiIiwiIiwiIiwiQ2VkaWxsYXNtYWxsIiwiIiwiIiwiIiwiIiwiIiwiT0VzbWFsbCIsImZpZ3VyZWRhc2giLCJoeXBoZW5zdXBlcmlvciIsIiIsIiIsIiIsIiIsImV4Y2xhbWRvd25zbWFsbCIsIiIsIllkaWVyZXNpc3NtYWxsIiwiIiwib25lc3VwZXJpb3IiLCJ0d29zdXBlcmlvciIsInRocmVlc3VwZXJpb3IiLCJmb3Vyc3VwZXJpb3IiLCJmaXZlc3VwZXJpb3IiLCJzaXhzdXBlcmlvciIsInNldmVuc3VwZXJpb3IiLCJuaW5lc3VwZXJpb3IiLCJ6ZXJvc3VwZXJpb3IiLCIiLCJlc3VwZXJpb3IiLCJyc3VwZXJpb3IiLCJ0c3VwZXJpb3IiLCIiLCIiLCJpc3VwZXJpb3IiLCJzc3VwZXJpb3IiLCJkc3VwZXJpb3IiLCIiLCIiLCIiLCIiLCIiLCJsc3VwZXJpb3IiLCJPZ29uZWtzbWFsbCIsIkJyZXZlc21hbGwiLCJNYWNyb25zbWFsbCIsImJzdXBlcmlvciIsIm5zdXBlcmlvciIsIm1zdXBlcmlvciIsImNvbW1hc3VwZXJpb3IiLCJwZXJpb2RzdXBlcmlvciIsIkRvdGFjY2VudHNtYWxsIiwiUmluZ3NtYWxsIiwiIiwiIiwiIiwiIl0sZGk9WyIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJzcGFjZSIsImV4Y2xhbSIsInF1b3RlZGJsIiwibnVtYmVyc2lnbiIsImRvbGxhciIsInBlcmNlbnQiLCJhbXBlcnNhbmQiLCJxdW90ZXNpbmdsZSIsInBhcmVubGVmdCIsInBhcmVucmlnaHQiLCJhc3RlcmlzayIsInBsdXMiLCJjb21tYSIsImh5cGhlbiIsInBlcmlvZCIsInNsYXNoIiwiemVybyIsIm9uZSIsInR3byIsInRocmVlIiwiZm91ciIsImZpdmUiLCJzaXgiLCJzZXZlbiIsImVpZ2h0IiwibmluZSIsImNvbG9uIiwic2VtaWNvbG9uIiwibGVzcyIsImVxdWFsIiwiZ3JlYXRlciIsInF1ZXN0aW9uIiwiYXQiLCJBIiwiQiIsIkMiLCJEIiwiRSIsIkYiLCJHIiwiSCIsIkkiLCJKIiwiSyIsIkwiLCJNIiwiTiIsIk8iLCJQIiwiUSIsIlIiLCJTIiwiVCIsIlUiLCJWIiwiVyIsIlgiLCJZIiwiWiIsImJyYWNrZXRsZWZ0IiwiYmFja3NsYXNoIiwiYnJhY2tldHJpZ2h0IiwiYXNjaWljaXJjdW0iLCJ1bmRlcnNjb3JlIiwiZ3JhdmUiLCJhIiwiYiIsImMiLCJkIiwiZSIsImYiLCJnIiwiaCIsImkiLCJqIiwiayIsImwiLCJtIiwibiIsIm8iLCJwIiwicSIsInIiLCJzIiwidCIsInUiLCJ2IiwidyIsIngiLCJ5IiwieiIsImJyYWNlbGVmdCIsImJhciIsImJyYWNlcmlnaHQiLCJhc2NpaXRpbGRlIiwiIiwiQWRpZXJlc2lzIiwiQXJpbmciLCJDY2VkaWxsYSIsIkVhY3V0ZSIsIk50aWxkZSIsIk9kaWVyZXNpcyIsIlVkaWVyZXNpcyIsImFhY3V0ZSIsImFncmF2ZSIsImFjaXJjdW1mbGV4IiwiYWRpZXJlc2lzIiwiYXRpbGRlIiwiYXJpbmciLCJjY2VkaWxsYSIsImVhY3V0ZSIsImVncmF2ZSIsImVjaXJjdW1mbGV4IiwiZWRpZXJlc2lzIiwiaWFjdXRlIiwiaWdyYXZlIiwiaWNpcmN1bWZsZXgiLCJpZGllcmVzaXMiLCJudGlsZGUiLCJvYWN1dGUiLCJvZ3JhdmUiLCJvY2lyY3VtZmxleCIsIm9kaWVyZXNpcyIsIm90aWxkZSIsInVhY3V0ZSIsInVncmF2ZSIsInVjaXJjdW1mbGV4IiwidWRpZXJlc2lzIiwiZGFnZ2VyIiwiZGVncmVlIiwiY2VudCIsInN0ZXJsaW5nIiwic2VjdGlvbiIsImJ1bGxldCIsInBhcmFncmFwaCIsImdlcm1hbmRibHMiLCJyZWdpc3RlcmVkIiwiY29weXJpZ2h0IiwidHJhZGVtYXJrIiwiYWN1dGUiLCJkaWVyZXNpcyIsIm5vdGVxdWFsIiwiQUUiLCJPc2xhc2giLCJpbmZpbml0eSIsInBsdXNtaW51cyIsImxlc3NlcXVhbCIsImdyZWF0ZXJlcXVhbCIsInllbiIsIm11IiwicGFydGlhbGRpZmYiLCJzdW1tYXRpb24iLCJwcm9kdWN0IiwicGkiLCJpbnRlZ3JhbCIsIm9yZGZlbWluaW5lIiwib3JkbWFzY3VsaW5lIiwiT21lZ2EiLCJhZSIsIm9zbGFzaCIsInF1ZXN0aW9uZG93biIsImV4Y2xhbWRvd24iLCJsb2dpY2Fsbm90IiwicmFkaWNhbCIsImZsb3JpbiIsImFwcHJveGVxdWFsIiwiRGVsdGEiLCJndWlsbGVtb3RsZWZ0IiwiZ3VpbGxlbW90cmlnaHQiLCJlbGxpcHNpcyIsInNwYWNlIiwiQWdyYXZlIiwiQXRpbGRlIiwiT3RpbGRlIiwiT0UiLCJvZSIsImVuZGFzaCIsImVtZGFzaCIsInF1b3RlZGJsbGVmdCIsInF1b3RlZGJscmlnaHQiLCJxdW90ZWxlZnQiLCJxdW90ZXJpZ2h0IiwiZGl2aWRlIiwibG96ZW5nZSIsInlkaWVyZXNpcyIsIllkaWVyZXNpcyIsImZyYWN0aW9uIiwiY3VycmVuY3kiLCJndWlsc2luZ2xsZWZ0IiwiZ3VpbHNpbmdscmlnaHQiLCJmaSIsImZsIiwiZGFnZ2VyZGJsIiwicGVyaW9kY2VudGVyZWQiLCJxdW90ZXNpbmdsYmFzZSIsInF1b3RlZGJsYmFzZSIsInBlcnRob3VzYW5kIiwiQWNpcmN1bWZsZXgiLCJFY2lyY3VtZmxleCIsIkFhY3V0ZSIsIkVkaWVyZXNpcyIsIkVncmF2ZSIsIklhY3V0ZSIsIkljaXJjdW1mbGV4IiwiSWRpZXJlc2lzIiwiSWdyYXZlIiwiT2FjdXRlIiwiT2NpcmN1bWZsZXgiLCJhcHBsZSIsIk9ncmF2ZSIsIlVhY3V0ZSIsIlVjaXJjdW1mbGV4IiwiVWdyYXZlIiwiZG90bGVzc2kiLCJjaXJjdW1mbGV4IiwidGlsZGUiLCJtYWNyb24iLCJicmV2ZSIsImRvdGFjY2VudCIsInJpbmciLCJjZWRpbGxhIiwiaHVuZ2FydW1sYXV0Iiwib2dvbmVrIiwiY2Fyb24iXSxmaT1bIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsInNwYWNlIiwiZXhjbGFtIiwicXVvdGVkYmwiLCJudW1iZXJzaWduIiwiZG9sbGFyIiwicGVyY2VudCIsImFtcGVyc2FuZCIsInF1b3RlcmlnaHQiLCJwYXJlbmxlZnQiLCJwYXJlbnJpZ2h0IiwiYXN0ZXJpc2siLCJwbHVzIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJzbGFzaCIsInplcm8iLCJvbmUiLCJ0d28iLCJ0aHJlZSIsImZvdXIiLCJmaXZlIiwic2l4Iiwic2V2ZW4iLCJlaWdodCIsIm5pbmUiLCJjb2xvbiIsInNlbWljb2xvbiIsImxlc3MiLCJlcXVhbCIsImdyZWF0ZXIiLCJxdWVzdGlvbiIsImF0IiwiQSIsIkIiLCJDIiwiRCIsIkUiLCJGIiwiRyIsIkgiLCJJIiwiSiIsIksiLCJMIiwiTSIsIk4iLCJPIiwiUCIsIlEiLCJSIiwiUyIsIlQiLCJVIiwiViIsIlciLCJYIiwiWSIsIloiLCJicmFja2V0bGVmdCIsImJhY2tzbGFzaCIsImJyYWNrZXRyaWdodCIsImFzY2lpY2lyY3VtIiwidW5kZXJzY29yZSIsInF1b3RlbGVmdCIsImEiLCJiIiwiYyIsImQiLCJlIiwiZiIsImciLCJoIiwiaSIsImoiLCJrIiwibCIsIm0iLCJuIiwibyIsInAiLCJxIiwiciIsInMiLCJ0IiwidSIsInYiLCJ3IiwieCIsInkiLCJ6IiwiYnJhY2VsZWZ0IiwiYmFyIiwiYnJhY2VyaWdodCIsImFzY2lpdGlsZGUiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJleGNsYW1kb3duIiwiY2VudCIsInN0ZXJsaW5nIiwiZnJhY3Rpb24iLCJ5ZW4iLCJmbG9yaW4iLCJzZWN0aW9uIiwiY3VycmVuY3kiLCJxdW90ZXNpbmdsZSIsInF1b3RlZGJsbGVmdCIsImd1aWxsZW1vdGxlZnQiLCJndWlsc2luZ2xsZWZ0IiwiZ3VpbHNpbmdscmlnaHQiLCJmaSIsImZsIiwiIiwiZW5kYXNoIiwiZGFnZ2VyIiwiZGFnZ2VyZGJsIiwicGVyaW9kY2VudGVyZWQiLCIiLCJwYXJhZ3JhcGgiLCJidWxsZXQiLCJxdW90ZXNpbmdsYmFzZSIsInF1b3RlZGJsYmFzZSIsInF1b3RlZGJscmlnaHQiLCJndWlsbGVtb3RyaWdodCIsImVsbGlwc2lzIiwicGVydGhvdXNhbmQiLCIiLCJxdWVzdGlvbmRvd24iLCIiLCJncmF2ZSIsImFjdXRlIiwiY2lyY3VtZmxleCIsInRpbGRlIiwibWFjcm9uIiwiYnJldmUiLCJkb3RhY2NlbnQiLCJkaWVyZXNpcyIsIiIsInJpbmciLCJjZWRpbGxhIiwiIiwiaHVuZ2FydW1sYXV0Iiwib2dvbmVrIiwiY2Fyb24iLCJlbWRhc2giLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJBRSIsIiIsIm9yZGZlbWluaW5lIiwiIiwiIiwiIiwiIiwiTHNsYXNoIiwiT3NsYXNoIiwiT0UiLCJvcmRtYXNjdWxpbmUiLCIiLCIiLCIiLCIiLCIiLCJhZSIsIiIsIiIsIiIsImRvdGxlc3NpIiwiIiwiIiwibHNsYXNoIiwib3NsYXNoIiwib2UiLCJnZXJtYW5kYmxzIiwiIiwiIiwiIiwiIl0scGk9WyIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJzcGFjZSIsImV4Y2xhbSIsInF1b3RlZGJsIiwibnVtYmVyc2lnbiIsImRvbGxhciIsInBlcmNlbnQiLCJhbXBlcnNhbmQiLCJxdW90ZXNpbmdsZSIsInBhcmVubGVmdCIsInBhcmVucmlnaHQiLCJhc3RlcmlzayIsInBsdXMiLCJjb21tYSIsImh5cGhlbiIsInBlcmlvZCIsInNsYXNoIiwiemVybyIsIm9uZSIsInR3byIsInRocmVlIiwiZm91ciIsImZpdmUiLCJzaXgiLCJzZXZlbiIsImVpZ2h0IiwibmluZSIsImNvbG9uIiwic2VtaWNvbG9uIiwibGVzcyIsImVxdWFsIiwiZ3JlYXRlciIsInF1ZXN0aW9uIiwiYXQiLCJBIiwiQiIsIkMiLCJEIiwiRSIsIkYiLCJHIiwiSCIsIkkiLCJKIiwiSyIsIkwiLCJNIiwiTiIsIk8iLCJQIiwiUSIsIlIiLCJTIiwiVCIsIlUiLCJWIiwiVyIsIlgiLCJZIiwiWiIsImJyYWNrZXRsZWZ0IiwiYmFja3NsYXNoIiwiYnJhY2tldHJpZ2h0IiwiYXNjaWljaXJjdW0iLCJ1bmRlcnNjb3JlIiwiZ3JhdmUiLCJhIiwiYiIsImMiLCJkIiwiZSIsImYiLCJnIiwiaCIsImkiLCJqIiwiayIsImwiLCJtIiwibiIsIm8iLCJwIiwicSIsInIiLCJzIiwidCIsInUiLCJ2IiwidyIsIngiLCJ5IiwieiIsImJyYWNlbGVmdCIsImJhciIsImJyYWNlcmlnaHQiLCJhc2NpaXRpbGRlIiwiYnVsbGV0IiwiRXVybyIsImJ1bGxldCIsInF1b3Rlc2luZ2xiYXNlIiwiZmxvcmluIiwicXVvdGVkYmxiYXNlIiwiZWxsaXBzaXMiLCJkYWdnZXIiLCJkYWdnZXJkYmwiLCJjaXJjdW1mbGV4IiwicGVydGhvdXNhbmQiLCJTY2Fyb24iLCJndWlsc2luZ2xsZWZ0IiwiT0UiLCJidWxsZXQiLCJaY2Fyb24iLCJidWxsZXQiLCJidWxsZXQiLCJxdW90ZWxlZnQiLCJxdW90ZXJpZ2h0IiwicXVvdGVkYmxsZWZ0IiwicXVvdGVkYmxyaWdodCIsImJ1bGxldCIsImVuZGFzaCIsImVtZGFzaCIsInRpbGRlIiwidHJhZGVtYXJrIiwic2Nhcm9uIiwiZ3VpbHNpbmdscmlnaHQiLCJvZSIsImJ1bGxldCIsInpjYXJvbiIsIllkaWVyZXNpcyIsInNwYWNlIiwiZXhjbGFtZG93biIsImNlbnQiLCJzdGVybGluZyIsImN1cnJlbmN5IiwieWVuIiwiYnJva2VuYmFyIiwic2VjdGlvbiIsImRpZXJlc2lzIiwiY29weXJpZ2h0Iiwib3JkZmVtaW5pbmUiLCJndWlsbGVtb3RsZWZ0IiwibG9naWNhbG5vdCIsImh5cGhlbiIsInJlZ2lzdGVyZWQiLCJtYWNyb24iLCJkZWdyZWUiLCJwbHVzbWludXMiLCJ0d29zdXBlcmlvciIsInRocmVlc3VwZXJpb3IiLCJhY3V0ZSIsIm11IiwicGFyYWdyYXBoIiwicGVyaW9kY2VudGVyZWQiLCJjZWRpbGxhIiwib25lc3VwZXJpb3IiLCJvcmRtYXNjdWxpbmUiLCJndWlsbGVtb3RyaWdodCIsIm9uZXF1YXJ0ZXIiLCJvbmVoYWxmIiwidGhyZWVxdWFydGVycyIsInF1ZXN0aW9uZG93biIsIkFncmF2ZSIsIkFhY3V0ZSIsIkFjaXJjdW1mbGV4IiwiQXRpbGRlIiwiQWRpZXJlc2lzIiwiQXJpbmciLCJBRSIsIkNjZWRpbGxhIiwiRWdyYXZlIiwiRWFjdXRlIiwiRWNpcmN1bWZsZXgiLCJFZGllcmVzaXMiLCJJZ3JhdmUiLCJJYWN1dGUiLCJJY2lyY3VtZmxleCIsIklkaWVyZXNpcyIsIkV0aCIsIk50aWxkZSIsIk9ncmF2ZSIsIk9hY3V0ZSIsIk9jaXJjdW1mbGV4IiwiT3RpbGRlIiwiT2RpZXJlc2lzIiwibXVsdGlwbHkiLCJPc2xhc2giLCJVZ3JhdmUiLCJVYWN1dGUiLCJVY2lyY3VtZmxleCIsIlVkaWVyZXNpcyIsIllhY3V0ZSIsIlRob3JuIiwiZ2VybWFuZGJscyIsImFncmF2ZSIsImFhY3V0ZSIsImFjaXJjdW1mbGV4IiwiYXRpbGRlIiwiYWRpZXJlc2lzIiwiYXJpbmciLCJhZSIsImNjZWRpbGxhIiwiZWdyYXZlIiwiZWFjdXRlIiwiZWNpcmN1bWZsZXgiLCJlZGllcmVzaXMiLCJpZ3JhdmUiLCJpYWN1dGUiLCJpY2lyY3VtZmxleCIsImlkaWVyZXNpcyIsImV0aCIsIm50aWxkZSIsIm9ncmF2ZSIsIm9hY3V0ZSIsIm9jaXJjdW1mbGV4Iiwib3RpbGRlIiwib2RpZXJlc2lzIiwiZGl2aWRlIiwib3NsYXNoIiwidWdyYXZlIiwidWFjdXRlIiwidWNpcmN1bWZsZXgiLCJ1ZGllcmVzaXMiLCJ5YWN1dGUiLCJ0aG9ybiIsInlkaWVyZXNpcyJdLG1pPVsiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwic3BhY2UiLCJleGNsYW0iLCJ1bml2ZXJzYWwiLCJudW1iZXJzaWduIiwiZXhpc3RlbnRpYWwiLCJwZXJjZW50IiwiYW1wZXJzYW5kIiwic3VjaHRoYXQiLCJwYXJlbmxlZnQiLCJwYXJlbnJpZ2h0IiwiYXN0ZXJpc2ttYXRoIiwicGx1cyIsImNvbW1hIiwibWludXMiLCJwZXJpb2QiLCJzbGFzaCIsInplcm8iLCJvbmUiLCJ0d28iLCJ0aHJlZSIsImZvdXIiLCJmaXZlIiwic2l4Iiwic2V2ZW4iLCJlaWdodCIsIm5pbmUiLCJjb2xvbiIsInNlbWljb2xvbiIsImxlc3MiLCJlcXVhbCIsImdyZWF0ZXIiLCJxdWVzdGlvbiIsImNvbmdydWVudCIsIkFscGhhIiwiQmV0YSIsIkNoaSIsIkRlbHRhIiwiRXBzaWxvbiIsIlBoaSIsIkdhbW1hIiwiRXRhIiwiSW90YSIsInRoZXRhMSIsIkthcHBhIiwiTGFtYmRhIiwiTXUiLCJOdSIsIk9taWNyb24iLCJQaSIsIlRoZXRhIiwiUmhvIiwiU2lnbWEiLCJUYXUiLCJVcHNpbG9uIiwic2lnbWExIiwiT21lZ2EiLCJYaSIsIlBzaSIsIlpldGEiLCJicmFja2V0bGVmdCIsInRoZXJlZm9yZSIsImJyYWNrZXRyaWdodCIsInBlcnBlbmRpY3VsYXIiLCJ1bmRlcnNjb3JlIiwicmFkaWNhbGV4IiwiYWxwaGEiLCJiZXRhIiwiY2hpIiwiZGVsdGEiLCJlcHNpbG9uIiwicGhpIiwiZ2FtbWEiLCJldGEiLCJpb3RhIiwicGhpMSIsImthcHBhIiwibGFtYmRhIiwibXUiLCJudSIsIm9taWNyb24iLCJwaSIsInRoZXRhIiwicmhvIiwic2lnbWEiLCJ0YXUiLCJ1cHNpbG9uIiwib21lZ2ExIiwib21lZ2EiLCJ4aSIsInBzaSIsInpldGEiLCJicmFjZWxlZnQiLCJiYXIiLCJicmFjZXJpZ2h0Iiwic2ltaWxhciIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIkV1cm8iLCJVcHNpbG9uMSIsIm1pbnV0ZSIsImxlc3NlcXVhbCIsImZyYWN0aW9uIiwiaW5maW5pdHkiLCJmbG9yaW4iLCJjbHViIiwiZGlhbW9uZCIsImhlYXJ0Iiwic3BhZGUiLCJhcnJvd2JvdGgiLCJhcnJvd2xlZnQiLCJhcnJvd3VwIiwiYXJyb3dyaWdodCIsImFycm93ZG93biIsImRlZ3JlZSIsInBsdXNtaW51cyIsInNlY29uZCIsImdyZWF0ZXJlcXVhbCIsIm11bHRpcGx5IiwicHJvcG9ydGlvbmFsIiwicGFydGlhbGRpZmYiLCJidWxsZXQiLCJkaXZpZGUiLCJub3RlcXVhbCIsImVxdWl2YWxlbmNlIiwiYXBwcm94ZXF1YWwiLCJlbGxpcHNpcyIsImFycm93dmVydGV4IiwiYXJyb3dob3JpemV4IiwiY2FycmlhZ2VyZXR1cm4iLCJhbGVwaCIsIklmcmFrdHVyIiwiUmZyYWt0dXIiLCJ3ZWllcnN0cmFzcyIsImNpcmNsZW11bHRpcGx5IiwiY2lyY2xlcGx1cyIsImVtcHR5c2V0IiwiaW50ZXJzZWN0aW9uIiwidW5pb24iLCJwcm9wZXJzdXBlcnNldCIsInJlZmxleHN1cGVyc2V0Iiwibm90c3Vic2V0IiwicHJvcGVyc3Vic2V0IiwicmVmbGV4c3Vic2V0IiwiZWxlbWVudCIsIm5vdGVsZW1lbnQiLCJhbmdsZSIsImdyYWRpZW50IiwicmVnaXN0ZXJzZXJpZiIsImNvcHlyaWdodHNlcmlmIiwidHJhZGVtYXJrc2VyaWYiLCJwcm9kdWN0IiwicmFkaWNhbCIsImRvdG1hdGgiLCJsb2dpY2Fsbm90IiwibG9naWNhbGFuZCIsImxvZ2ljYWxvciIsImFycm93ZGJsYm90aCIsImFycm93ZGJsbGVmdCIsImFycm93ZGJsdXAiLCJhcnJvd2RibHJpZ2h0IiwiYXJyb3dkYmxkb3duIiwibG96ZW5nZSIsImFuZ2xlbGVmdCIsInJlZ2lzdGVyc2FucyIsImNvcHlyaWdodHNhbnMiLCJ0cmFkZW1hcmtzYW5zIiwic3VtbWF0aW9uIiwicGFyZW5sZWZ0dHAiLCJwYXJlbmxlZnRleCIsInBhcmVubGVmdGJ0IiwiYnJhY2tldGxlZnR0cCIsImJyYWNrZXRsZWZ0ZXgiLCJicmFja2V0bGVmdGJ0IiwiYnJhY2VsZWZ0dHAiLCJicmFjZWxlZnRtaWQiLCJicmFjZWxlZnRidCIsImJyYWNlZXgiLCIiLCJhbmdsZXJpZ2h0IiwiaW50ZWdyYWwiLCJpbnRlZ3JhbHRwIiwiaW50ZWdyYWxleCIsImludGVncmFsYnQiLCJwYXJlbnJpZ2h0dHAiLCJwYXJlbnJpZ2h0ZXgiLCJwYXJlbnJpZ2h0YnQiLCJicmFja2V0cmlnaHR0cCIsImJyYWNrZXRyaWdodGV4IiwiYnJhY2tldHJpZ2h0YnQiLCJicmFjZXJpZ2h0dHAiLCJicmFjZXJpZ2h0bWlkIiwiYnJhY2VyaWdodGJ0IiwiIl0seWk9WyIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJzcGFjZSIsImExIiwiYTIiLCJhMjAyIiwiYTMiLCJhNCIsImE1IiwiYTExOSIsImExMTgiLCJhMTE3IiwiYTExIiwiYTEyIiwiYTEzIiwiYTE0IiwiYTE1IiwiYTE2IiwiYTEwNSIsImExNyIsImExOCIsImExOSIsImEyMCIsImEyMSIsImEyMiIsImEyMyIsImEyNCIsImEyNSIsImEyNiIsImEyNyIsImEyOCIsImE2IiwiYTciLCJhOCIsImE5IiwiYTEwIiwiYTI5IiwiYTMwIiwiYTMxIiwiYTMyIiwiYTMzIiwiYTM0IiwiYTM1IiwiYTM2IiwiYTM3IiwiYTM4IiwiYTM5IiwiYTQwIiwiYTQxIiwiYTQyIiwiYTQzIiwiYTQ0IiwiYTQ1IiwiYTQ2IiwiYTQ3IiwiYTQ4IiwiYTQ5IiwiYTUwIiwiYTUxIiwiYTUyIiwiYTUzIiwiYTU0IiwiYTU1IiwiYTU2IiwiYTU3IiwiYTU4IiwiYTU5IiwiYTYwIiwiYTYxIiwiYTYyIiwiYTYzIiwiYTY0IiwiYTY1IiwiYTY2IiwiYTY3IiwiYTY4IiwiYTY5IiwiYTcwIiwiYTcxIiwiYTcyIiwiYTczIiwiYTc0IiwiYTIwMyIsImE3NSIsImEyMDQiLCJhNzYiLCJhNzciLCJhNzgiLCJhNzkiLCJhODEiLCJhODIiLCJhODMiLCJhODQiLCJhOTciLCJhOTgiLCJhOTkiLCJhMTAwIiwiIiwiYTg5IiwiYTkwIiwiYTkzIiwiYTk0IiwiYTkxIiwiYTkyIiwiYTIwNSIsImE4NSIsImEyMDYiLCJhODYiLCJhODciLCJhODgiLCJhOTUiLCJhOTYiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJhMTAxIiwiYTEwMiIsImExMDMiLCJhMTA0IiwiYTEwNiIsImExMDciLCJhMTA4IiwiYTExMiIsImExMTEiLCJhMTEwIiwiYTEwOSIsImExMjAiLCJhMTIxIiwiYTEyMiIsImExMjMiLCJhMTI0IiwiYTEyNSIsImExMjYiLCJhMTI3IiwiYTEyOCIsImExMjkiLCJhMTMwIiwiYTEzMSIsImExMzIiLCJhMTMzIiwiYTEzNCIsImExMzUiLCJhMTM2IiwiYTEzNyIsImExMzgiLCJhMTM5IiwiYTE0MCIsImExNDEiLCJhMTQyIiwiYTE0MyIsImExNDQiLCJhMTQ1IiwiYTE0NiIsImExNDciLCJhMTQ4IiwiYTE0OSIsImExNTAiLCJhMTUxIiwiYTE1MiIsImExNTMiLCJhMTU0IiwiYTE1NSIsImExNTYiLCJhMTU3IiwiYTE1OCIsImExNTkiLCJhMTYwIiwiYTE2MSIsImExNjMiLCJhMTY0IiwiYTE5NiIsImExNjUiLCJhMTkyIiwiYTE2NiIsImExNjciLCJhMTY4IiwiYTE2OSIsImExNzAiLCJhMTcxIiwiYTE3MiIsImExNzMiLCJhMTYyIiwiYTE3NCIsImExNzUiLCJhMTc2IiwiYTE3NyIsImExNzgiLCJhMTc5IiwiYTE5MyIsImExODAiLCJhMTk5IiwiYTE4MSIsImEyMDAiLCJhMTgyIiwiIiwiYTIwMSIsImExODMiLCJhMTg0IiwiYTE5NyIsImExODUiLCJhMTk0IiwiYTE5OCIsImExODYiLCJhMTk1IiwiYTE4NyIsImExODgiLCJhMTg5IiwiYTE5MCIsImExOTEiLCIiXTtmdW5jdGlvbiBnZXRFbmNvZGluZyhlKXtzd2l0Y2goZSl7Y2FzZSJXaW5BbnNpRW5jb2RpbmciOnJldHVybiBwaTtjYXNlIlN0YW5kYXJkRW5jb2RpbmciOnJldHVybiBmaTtjYXNlIk1hY1JvbWFuRW5jb2RpbmciOnJldHVybiBkaTtjYXNlIlN5bWJvbFNldEVuY29kaW5nIjpyZXR1cm4gbWk7Y2FzZSJaYXBmRGluZ2JhdHNFbmNvZGluZyI6cmV0dXJuIHlpO2Nhc2UiRXhwZXJ0RW5jb2RpbmciOnJldHVybiBFaTtjYXNlIk1hY0V4cGVydEVuY29kaW5nIjpyZXR1cm4gdWk7ZGVmYXVsdDpyZXR1cm4gbnVsbH19Y29uc3Qgd2k9WyIubm90ZGVmIiwic3BhY2UiLCJleGNsYW0iLCJxdW90ZWRibCIsIm51bWJlcnNpZ24iLCJkb2xsYXIiLCJwZXJjZW50IiwiYW1wZXJzYW5kIiwicXVvdGVyaWdodCIsInBhcmVubGVmdCIsInBhcmVucmlnaHQiLCJhc3RlcmlzayIsInBsdXMiLCJjb21tYSIsImh5cGhlbiIsInBlcmlvZCIsInNsYXNoIiwiemVybyIsIm9uZSIsInR3byIsInRocmVlIiwiZm91ciIsImZpdmUiLCJzaXgiLCJzZXZlbiIsImVpZ2h0IiwibmluZSIsImNvbG9uIiwic2VtaWNvbG9uIiwibGVzcyIsImVxdWFsIiwiZ3JlYXRlciIsInF1ZXN0aW9uIiwiYXQiLCJBIiwiQiIsIkMiLCJEIiwiRSIsIkYiLCJHIiwiSCIsIkkiLCJKIiwiSyIsIkwiLCJNIiwiTiIsIk8iLCJQIiwiUSIsIlIiLCJTIiwiVCIsIlUiLCJWIiwiVyIsIlgiLCJZIiwiWiIsImJyYWNrZXRsZWZ0IiwiYmFja3NsYXNoIiwiYnJhY2tldHJpZ2h0IiwiYXNjaWljaXJjdW0iLCJ1bmRlcnNjb3JlIiwicXVvdGVsZWZ0IiwiYSIsImIiLCJjIiwiZCIsImUiLCJmIiwiZyIsImgiLCJpIiwiaiIsImsiLCJsIiwibSIsIm4iLCJvIiwicCIsInEiLCJyIiwicyIsInQiLCJ1IiwidiIsInciLCJ4IiwieSIsInoiLCJicmFjZWxlZnQiLCJiYXIiLCJicmFjZXJpZ2h0IiwiYXNjaWl0aWxkZSIsImV4Y2xhbWRvd24iLCJjZW50Iiwic3RlcmxpbmciLCJmcmFjdGlvbiIsInllbiIsImZsb3JpbiIsInNlY3Rpb24iLCJjdXJyZW5jeSIsInF1b3Rlc2luZ2xlIiwicXVvdGVkYmxsZWZ0IiwiZ3VpbGxlbW90bGVmdCIsImd1aWxzaW5nbGxlZnQiLCJndWlsc2luZ2xyaWdodCIsImZpIiwiZmwiLCJlbmRhc2giLCJkYWdnZXIiLCJkYWdnZXJkYmwiLCJwZXJpb2RjZW50ZXJlZCIsInBhcmFncmFwaCIsImJ1bGxldCIsInF1b3Rlc2luZ2xiYXNlIiwicXVvdGVkYmxiYXNlIiwicXVvdGVkYmxyaWdodCIsImd1aWxsZW1vdHJpZ2h0IiwiZWxsaXBzaXMiLCJwZXJ0aG91c2FuZCIsInF1ZXN0aW9uZG93biIsImdyYXZlIiwiYWN1dGUiLCJjaXJjdW1mbGV4IiwidGlsZGUiLCJtYWNyb24iLCJicmV2ZSIsImRvdGFjY2VudCIsImRpZXJlc2lzIiwicmluZyIsImNlZGlsbGEiLCJodW5nYXJ1bWxhdXQiLCJvZ29uZWsiLCJjYXJvbiIsImVtZGFzaCIsIkFFIiwib3JkZmVtaW5pbmUiLCJMc2xhc2giLCJPc2xhc2giLCJPRSIsIm9yZG1hc2N1bGluZSIsImFlIiwiZG90bGVzc2kiLCJsc2xhc2giLCJvc2xhc2giLCJvZSIsImdlcm1hbmRibHMiLCJvbmVzdXBlcmlvciIsImxvZ2ljYWxub3QiLCJtdSIsInRyYWRlbWFyayIsIkV0aCIsIm9uZWhhbGYiLCJwbHVzbWludXMiLCJUaG9ybiIsIm9uZXF1YXJ0ZXIiLCJkaXZpZGUiLCJicm9rZW5iYXIiLCJkZWdyZWUiLCJ0aG9ybiIsInRocmVlcXVhcnRlcnMiLCJ0d29zdXBlcmlvciIsInJlZ2lzdGVyZWQiLCJtaW51cyIsImV0aCIsIm11bHRpcGx5IiwidGhyZWVzdXBlcmlvciIsImNvcHlyaWdodCIsIkFhY3V0ZSIsIkFjaXJjdW1mbGV4IiwiQWRpZXJlc2lzIiwiQWdyYXZlIiwiQXJpbmciLCJBdGlsZGUiLCJDY2VkaWxsYSIsIkVhY3V0ZSIsIkVjaXJjdW1mbGV4IiwiRWRpZXJlc2lzIiwiRWdyYXZlIiwiSWFjdXRlIiwiSWNpcmN1bWZsZXgiLCJJZGllcmVzaXMiLCJJZ3JhdmUiLCJOdGlsZGUiLCJPYWN1dGUiLCJPY2lyY3VtZmxleCIsIk9kaWVyZXNpcyIsIk9ncmF2ZSIsIk90aWxkZSIsIlNjYXJvbiIsIlVhY3V0ZSIsIlVjaXJjdW1mbGV4IiwiVWRpZXJlc2lzIiwiVWdyYXZlIiwiWWFjdXRlIiwiWWRpZXJlc2lzIiwiWmNhcm9uIiwiYWFjdXRlIiwiYWNpcmN1bWZsZXgiLCJhZGllcmVzaXMiLCJhZ3JhdmUiLCJhcmluZyIsImF0aWxkZSIsImNjZWRpbGxhIiwiZWFjdXRlIiwiZWNpcmN1bWZsZXgiLCJlZGllcmVzaXMiLCJlZ3JhdmUiLCJpYWN1dGUiLCJpY2lyY3VtZmxleCIsImlkaWVyZXNpcyIsImlncmF2ZSIsIm50aWxkZSIsIm9hY3V0ZSIsIm9jaXJjdW1mbGV4Iiwib2RpZXJlc2lzIiwib2dyYXZlIiwib3RpbGRlIiwic2Nhcm9uIiwidWFjdXRlIiwidWNpcmN1bWZsZXgiLCJ1ZGllcmVzaXMiLCJ1Z3JhdmUiLCJ5YWN1dGUiLCJ5ZGllcmVzaXMiLCJ6Y2Fyb24iLCJleGNsYW1zbWFsbCIsIkh1bmdhcnVtbGF1dHNtYWxsIiwiZG9sbGFyb2xkc3R5bGUiLCJkb2xsYXJzdXBlcmlvciIsImFtcGVyc2FuZHNtYWxsIiwiQWN1dGVzbWFsbCIsInBhcmVubGVmdHN1cGVyaW9yIiwicGFyZW5yaWdodHN1cGVyaW9yIiwidHdvZG90ZW5sZWFkZXIiLCJvbmVkb3RlbmxlYWRlciIsInplcm9vbGRzdHlsZSIsIm9uZW9sZHN0eWxlIiwidHdvb2xkc3R5bGUiLCJ0aHJlZW9sZHN0eWxlIiwiZm91cm9sZHN0eWxlIiwiZml2ZW9sZHN0eWxlIiwic2l4b2xkc3R5bGUiLCJzZXZlbm9sZHN0eWxlIiwiZWlnaHRvbGRzdHlsZSIsIm5pbmVvbGRzdHlsZSIsImNvbW1hc3VwZXJpb3IiLCJ0aHJlZXF1YXJ0ZXJzZW1kYXNoIiwicGVyaW9kc3VwZXJpb3IiLCJxdWVzdGlvbnNtYWxsIiwiYXN1cGVyaW9yIiwiYnN1cGVyaW9yIiwiY2VudHN1cGVyaW9yIiwiZHN1cGVyaW9yIiwiZXN1cGVyaW9yIiwiaXN1cGVyaW9yIiwibHN1cGVyaW9yIiwibXN1cGVyaW9yIiwibnN1cGVyaW9yIiwib3N1cGVyaW9yIiwicnN1cGVyaW9yIiwic3N1cGVyaW9yIiwidHN1cGVyaW9yIiwiZmYiLCJmZmkiLCJmZmwiLCJwYXJlbmxlZnRpbmZlcmlvciIsInBhcmVucmlnaHRpbmZlcmlvciIsIkNpcmN1bWZsZXhzbWFsbCIsImh5cGhlbnN1cGVyaW9yIiwiR3JhdmVzbWFsbCIsIkFzbWFsbCIsIkJzbWFsbCIsIkNzbWFsbCIsIkRzbWFsbCIsIkVzbWFsbCIsIkZzbWFsbCIsIkdzbWFsbCIsIkhzbWFsbCIsIklzbWFsbCIsIkpzbWFsbCIsIktzbWFsbCIsIkxzbWFsbCIsIk1zbWFsbCIsIk5zbWFsbCIsIk9zbWFsbCIsIlBzbWFsbCIsIlFzbWFsbCIsIlJzbWFsbCIsIlNzbWFsbCIsIlRzbWFsbCIsIlVzbWFsbCIsIlZzbWFsbCIsIldzbWFsbCIsIlhzbWFsbCIsIllzbWFsbCIsIlpzbWFsbCIsImNvbG9ubW9uZXRhcnkiLCJvbmVmaXR0ZWQiLCJydXBpYWgiLCJUaWxkZXNtYWxsIiwiZXhjbGFtZG93bnNtYWxsIiwiY2VudG9sZHN0eWxlIiwiTHNsYXNoc21hbGwiLCJTY2Fyb25zbWFsbCIsIlpjYXJvbnNtYWxsIiwiRGllcmVzaXNzbWFsbCIsIkJyZXZlc21hbGwiLCJDYXJvbnNtYWxsIiwiRG90YWNjZW50c21hbGwiLCJNYWNyb25zbWFsbCIsImZpZ3VyZWRhc2giLCJoeXBoZW5pbmZlcmlvciIsIk9nb25la3NtYWxsIiwiUmluZ3NtYWxsIiwiQ2VkaWxsYXNtYWxsIiwicXVlc3Rpb25kb3duc21hbGwiLCJvbmVlaWdodGgiLCJ0aHJlZWVpZ2h0aHMiLCJmaXZlZWlnaHRocyIsInNldmVuZWlnaHRocyIsIm9uZXRoaXJkIiwidHdvdGhpcmRzIiwiemVyb3N1cGVyaW9yIiwiZm91cnN1cGVyaW9yIiwiZml2ZXN1cGVyaW9yIiwic2l4c3VwZXJpb3IiLCJzZXZlbnN1cGVyaW9yIiwiZWlnaHRzdXBlcmlvciIsIm5pbmVzdXBlcmlvciIsInplcm9pbmZlcmlvciIsIm9uZWluZmVyaW9yIiwidHdvaW5mZXJpb3IiLCJ0aHJlZWluZmVyaW9yIiwiZm91cmluZmVyaW9yIiwiZml2ZWluZmVyaW9yIiwic2l4aW5mZXJpb3IiLCJzZXZlbmluZmVyaW9yIiwiZWlnaHRpbmZlcmlvciIsIm5pbmVpbmZlcmlvciIsImNlbnRpbmZlcmlvciIsImRvbGxhcmluZmVyaW9yIiwicGVyaW9kaW5mZXJpb3IiLCJjb21tYWluZmVyaW9yIiwiQWdyYXZlc21hbGwiLCJBYWN1dGVzbWFsbCIsIkFjaXJjdW1mbGV4c21hbGwiLCJBdGlsZGVzbWFsbCIsIkFkaWVyZXNpc3NtYWxsIiwiQXJpbmdzbWFsbCIsIkFFc21hbGwiLCJDY2VkaWxsYXNtYWxsIiwiRWdyYXZlc21hbGwiLCJFYWN1dGVzbWFsbCIsIkVjaXJjdW1mbGV4c21hbGwiLCJFZGllcmVzaXNzbWFsbCIsIklncmF2ZXNtYWxsIiwiSWFjdXRlc21hbGwiLCJJY2lyY3VtZmxleHNtYWxsIiwiSWRpZXJlc2lzc21hbGwiLCJFdGhzbWFsbCIsIk50aWxkZXNtYWxsIiwiT2dyYXZlc21hbGwiLCJPYWN1dGVzbWFsbCIsIk9jaXJjdW1mbGV4c21hbGwiLCJPdGlsZGVzbWFsbCIsIk9kaWVyZXNpc3NtYWxsIiwiT0VzbWFsbCIsIk9zbGFzaHNtYWxsIiwiVWdyYXZlc21hbGwiLCJVYWN1dGVzbWFsbCIsIlVjaXJjdW1mbGV4c21hbGwiLCJVZGllcmVzaXNzbWFsbCIsIllhY3V0ZXNtYWxsIiwiVGhvcm5zbWFsbCIsIllkaWVyZXNpc3NtYWxsIiwiMDAxLjAwMCIsIjAwMS4wMDEiLCIwMDEuMDAyIiwiMDAxLjAwMyIsIkJsYWNrIiwiQm9sZCIsIkJvb2siLCJMaWdodCIsIk1lZGl1bSIsIlJlZ3VsYXIiLCJSb21hbiIsIlNlbWlib2xkIl0sYmk9MzkxLERpPVtudWxsLHtpZDoiaHN0ZW0iLG1pbjoyLHN0YWNrQ2xlYXJpbmc6ITAsc3RlbTohMH0sbnVsbCx7aWQ6InZzdGVtIixtaW46MixzdGFja0NsZWFyaW5nOiEwLHN0ZW06ITB9LHtpZDoidm1vdmV0byIsbWluOjEsc3RhY2tDbGVhcmluZzohMH0se2lkOiJybGluZXRvIixtaW46MixyZXNldFN0YWNrOiEwfSx7aWQ6ImhsaW5ldG8iLG1pbjoxLHJlc2V0U3RhY2s6ITB9LHtpZDoidmxpbmV0byIsbWluOjEscmVzZXRTdGFjazohMH0se2lkOiJycmN1cnZldG8iLG1pbjo2LHJlc2V0U3RhY2s6ITB9LG51bGwse2lkOiJjYWxsc3ViciIsbWluOjEsdW5kZWZTdGFjazohMH0se2lkOiJyZXR1cm4iLG1pbjowLHVuZGVmU3RhY2s6ITB9LG51bGwsbnVsbCx7aWQ6ImVuZGNoYXIiLG1pbjowLHN0YWNrQ2xlYXJpbmc6ITB9LG51bGwsbnVsbCxudWxsLHtpZDoiaHN0ZW1obSIsbWluOjIsc3RhY2tDbGVhcmluZzohMCxzdGVtOiEwfSx7aWQ6ImhpbnRtYXNrIixtaW46MCxzdGFja0NsZWFyaW5nOiEwfSx7aWQ6ImNudHJtYXNrIixtaW46MCxzdGFja0NsZWFyaW5nOiEwfSx7aWQ6InJtb3ZldG8iLG1pbjoyLHN0YWNrQ2xlYXJpbmc6ITB9LHtpZDoiaG1vdmV0byIsbWluOjEsc3RhY2tDbGVhcmluZzohMH0se2lkOiJ2c3RlbWhtIixtaW46MixzdGFja0NsZWFyaW5nOiEwLHN0ZW06ITB9LHtpZDoicmN1cnZlbGluZSIsbWluOjgscmVzZXRTdGFjazohMH0se2lkOiJybGluZWN1cnZlIixtaW46OCxyZXNldFN0YWNrOiEwfSx7aWQ6InZ2Y3VydmV0byIsbWluOjQscmVzZXRTdGFjazohMH0se2lkOiJoaGN1cnZldG8iLG1pbjo0LHJlc2V0U3RhY2s6ITB9LG51bGwse2lkOiJjYWxsZ3N1YnIiLG1pbjoxLHVuZGVmU3RhY2s6ITB9LHtpZDoidmhjdXJ2ZXRvIixtaW46NCxyZXNldFN0YWNrOiEwfSx7aWQ6Imh2Y3VydmV0byIsbWluOjQscmVzZXRTdGFjazohMH1dLEZpPVtudWxsLG51bGwsbnVsbCx7aWQ6ImFuZCIsbWluOjIsc3RhY2tEZWx0YTotMX0se2lkOiJvciIsbWluOjIsc3RhY2tEZWx0YTotMX0se2lkOiJub3QiLG1pbjoxLHN0YWNrRGVsdGE6MH0sbnVsbCxudWxsLG51bGwse2lkOiJhYnMiLG1pbjoxLHN0YWNrRGVsdGE6MH0se2lkOiJhZGQiLG1pbjoyLHN0YWNrRGVsdGE6LTEsc3RhY2tGbihlLHQpe2VbdC0yXT1lW3QtMl0rZVt0LTFdfX0se2lkOiJzdWIiLG1pbjoyLHN0YWNrRGVsdGE6LTEsc3RhY2tGbihlLHQpe2VbdC0yXT1lW3QtMl0tZVt0LTFdfX0se2lkOiJkaXYiLG1pbjoyLHN0YWNrRGVsdGE6LTEsc3RhY2tGbihlLHQpe2VbdC0yXT1lW3QtMl0vZVt0LTFdfX0sbnVsbCx7aWQ6Im5lZyIsbWluOjEsc3RhY2tEZWx0YTowLHN0YWNrRm4oZSx0KXtlW3QtMV09LWVbdC0xXX19LHtpZDoiZXEiLG1pbjoyLHN0YWNrRGVsdGE6LTF9LG51bGwsbnVsbCx7aWQ6ImRyb3AiLG1pbjoxLHN0YWNrRGVsdGE6LTF9LG51bGwse2lkOiJwdXQiLG1pbjoyLHN0YWNrRGVsdGE6LTJ9LHtpZDoiZ2V0IixtaW46MSxzdGFja0RlbHRhOjB9LHtpZDoiaWZlbHNlIixtaW46NCxzdGFja0RlbHRhOi0zfSx7aWQ6InJhbmRvbSIsbWluOjAsc3RhY2tEZWx0YToxfSx7aWQ6Im11bCIsbWluOjIsc3RhY2tEZWx0YTotMSxzdGFja0ZuKGUsdCl7ZVt0LTJdPWVbdC0yXSplW3QtMV19fSxudWxsLHtpZDoic3FydCIsbWluOjEsc3RhY2tEZWx0YTowfSx7aWQ6ImR1cCIsbWluOjEsc3RhY2tEZWx0YToxfSx7aWQ6ImV4Y2giLG1pbjoyLHN0YWNrRGVsdGE6MH0se2lkOiJpbmRleCIsbWluOjIsc3RhY2tEZWx0YTowfSx7aWQ6InJvbGwiLG1pbjozLHN0YWNrRGVsdGE6LTJ9LG51bGwsbnVsbCxudWxsLHtpZDoiaGZsZXgiLG1pbjo3LHJlc2V0U3RhY2s6ITB9LHtpZDoiZmxleCIsbWluOjEzLHJlc2V0U3RhY2s6ITB9LHtpZDoiaGZsZXgxIixtaW46OSxyZXNldFN0YWNrOiEwfSx7aWQ6ImZsZXgxIixtaW46MTEscmVzZXRTdGFjazohMH1dO2NsYXNzIENGRlBhcnNlcntjb25zdHJ1Y3RvcihlLHQsaSl7dGhpcy5ieXRlcz1lLmdldEJ5dGVzKCk7dGhpcy5wcm9wZXJ0aWVzPXQ7dGhpcy5zZWFjQW5hbHlzaXNFbmFibGVkPSEhaX1wYXJzZSgpe2NvbnN0IGU9dGhpcy5wcm9wZXJ0aWVzLHQ9bmV3IENGRjt0aGlzLmNmZj10O2NvbnN0IGk9dGhpcy5wYXJzZUhlYWRlcigpLGE9dGhpcy5wYXJzZUluZGV4KGkuZW5kUG9zKSxzPXRoaXMucGFyc2VJbmRleChhLmVuZFBvcykscj10aGlzLnBhcnNlSW5kZXgocy5lbmRQb3MpLG49dGhpcy5wYXJzZUluZGV4KHIuZW5kUG9zKSxvPXRoaXMucGFyc2VEaWN0KHMub2JqLmdldCgwKSksZz10aGlzLmNyZWF0ZURpY3QoQ0ZGVG9wRGljdCxvLHQuc3RyaW5ncyk7dC5oZWFkZXI9aS5vYmo7dC5uYW1lcz10aGlzLnBhcnNlTmFtZUluZGV4KGEub2JqKTt0LnN0cmluZ3M9dGhpcy5wYXJzZVN0cmluZ0luZGV4KHIub2JqKTt0LnRvcERpY3Q9Zzt0Lmdsb2JhbFN1YnJJbmRleD1uLm9iajt0aGlzLnBhcnNlUHJpdmF0ZURpY3QodC50b3BEaWN0KTt0LmlzQ0lERm9udD1nLmhhc05hbWUoIlJPUyIpO2NvbnN0IGM9Zy5nZXRCeU5hbWUoIkNoYXJTdHJpbmdzIiksQz10aGlzLnBhcnNlSW5kZXgoYykub2JqLGg9Zy5nZXRCeU5hbWUoIkZvbnRNYXRyaXgiKTtoJiYoZS5mb250TWF0cml4PWgpO2NvbnN0IGw9Zy5nZXRCeU5hbWUoIkZvbnRCQm94Iik7aWYobCl7ZS5hc2NlbnQ9TWF0aC5tYXgobFszXSxsWzFdKTtlLmRlc2NlbnQ9TWF0aC5taW4obFsxXSxsWzNdKTtlLmFzY2VudFNjYWxlZD0hMH1sZXQgUSxFO2lmKHQuaXNDSURGb250KXtjb25zdCBlPXRoaXMucGFyc2VJbmRleChnLmdldEJ5TmFtZSgiRkRBcnJheSIpKS5vYmo7Zm9yKGxldCBpPTAsYT1lLmNvdW50O2k8YTsrK2kpe2NvbnN0IGE9ZS5nZXQoaSkscz10aGlzLmNyZWF0ZURpY3QoQ0ZGVG9wRGljdCx0aGlzLnBhcnNlRGljdChhKSx0LnN0cmluZ3MpO3RoaXMucGFyc2VQcml2YXRlRGljdChzKTt0LmZkQXJyYXkucHVzaChzKX1FPW51bGw7UT10aGlzLnBhcnNlQ2hhcnNldHMoZy5nZXRCeU5hbWUoImNoYXJzZXQiKSxDLmNvdW50LHQuc3RyaW5ncywhMCk7dC5mZFNlbGVjdD10aGlzLnBhcnNlRkRTZWxlY3QoZy5nZXRCeU5hbWUoIkZEU2VsZWN0IiksQy5jb3VudCl9ZWxzZXtRPXRoaXMucGFyc2VDaGFyc2V0cyhnLmdldEJ5TmFtZSgiY2hhcnNldCIpLEMuY291bnQsdC5zdHJpbmdzLCExKTtFPXRoaXMucGFyc2VFbmNvZGluZyhnLmdldEJ5TmFtZSgiRW5jb2RpbmciKSxlLHQuc3RyaW5ncyxRLmNoYXJzZXQpfXQuY2hhcnNldD1RO3QuZW5jb2Rpbmc9RTtjb25zdCB1PXRoaXMucGFyc2VDaGFyU3RyaW5ncyh7Y2hhclN0cmluZ3M6Qyxsb2NhbFN1YnJJbmRleDpnLnByaXZhdGVEaWN0LnN1YnJzSW5kZXgsZ2xvYmFsU3VickluZGV4Om4ub2JqLGZkU2VsZWN0OnQuZmRTZWxlY3QsZmRBcnJheTp0LmZkQXJyYXkscHJpdmF0ZURpY3Q6Zy5wcml2YXRlRGljdH0pO3QuY2hhclN0cmluZ3M9dS5jaGFyU3RyaW5nczt0LnNlYWNzPXUuc2VhY3M7dC53aWR0aHM9dS53aWR0aHM7cmV0dXJuIHR9cGFyc2VIZWFkZXIoKXtsZXQgZT10aGlzLmJ5dGVzO2NvbnN0IHQ9ZS5sZW5ndGg7bGV0IGk9MDtmb3IoO2k8dCYmMSE9PWVbaV07KSsraTtpZihpPj10KXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBDRkYgaGVhZGVyIik7aWYoMCE9PWkpe2luZm8oImNmZiBkYXRhIGlzIHNoaWZ0ZWQiKTtlPWUuc3ViYXJyYXkoaSk7dGhpcy5ieXRlcz1lfWNvbnN0IGE9ZVswXSxzPWVbMV0scj1lWzJdLG49ZVszXTtyZXR1cm57b2JqOm5ldyBDRkZIZWFkZXIoYSxzLHIsbiksZW5kUG9zOnJ9fXBhcnNlRGljdChlKXtsZXQgdD0wO2Z1bmN0aW9uIHBhcnNlT3BlcmFuZCgpe2xldCBpPWVbdCsrXTtpZigzMD09PWkpcmV0dXJuIGZ1bmN0aW9uIHBhcnNlRmxvYXRPcGVyYW5kKCl7bGV0IGk9IiI7Y29uc3QgYT0xNSxzPVsiMCIsIjEiLCIyIiwiMyIsIjQiLCI1IiwiNiIsIjciLCI4IiwiOSIsIi4iLCJFIiwiRS0iLG51bGwsIi0iXSxyPWUubGVuZ3RoO2Zvcig7dDxyOyl7Y29uc3Qgcj1lW3QrK10sbj1yPj40LG89MTUmcjtpZihuPT09YSlicmVhaztpKz1zW25dO2lmKG89PT1hKWJyZWFrO2krPXNbb119cmV0dXJuIHBhcnNlRmxvYXQoaSl9KCk7aWYoMjg9PT1pKXtpPWVbdCsrXTtpPShpPDwyNHxlW3QrK108PDE2KT4+MTY7cmV0dXJuIGl9aWYoMjk9PT1pKXtpPWVbdCsrXTtpPWk8PDh8ZVt0KytdO2k9aTw8OHxlW3QrK107aT1pPDw4fGVbdCsrXTtyZXR1cm4gaX1pZihpPj0zMiYmaTw9MjQ2KXJldHVybiBpLTEzOTtpZihpPj0yNDcmJmk8PTI1MClyZXR1cm4gMjU2KihpLTI0NykrZVt0KytdKzEwODtpZihpPj0yNTEmJmk8PTI1NClyZXR1cm4tMjU2KihpLTI1MSktZVt0KytdLTEwODt3YXJuKCdDRkZQYXJzZXJfcGFyc2VEaWN0OiAiJytpKyciIGlzIGEgcmVzZXJ2ZWQgY29tbWFuZC4nKTtyZXR1cm4gTmFOfWxldCBpPVtdO2NvbnN0IGE9W107dD0wO2NvbnN0IHM9ZS5sZW5ndGg7Zm9yKDt0PHM7KXtsZXQgcz1lW3RdO2lmKHM8PTIxKXsxMj09PXMmJihzPXM8PDh8ZVsrK3RdKTthLnB1c2goW3MsaV0pO2k9W107Kyt0fWVsc2UgaS5wdXNoKHBhcnNlT3BlcmFuZCgpKX1yZXR1cm4gYX1wYXJzZUluZGV4KGUpe2NvbnN0IHQ9bmV3IENGRkluZGV4LGk9dGhpcy5ieXRlcyxhPWlbZSsrXTw8OHxpW2UrK10scz1bXTtsZXQgcixuLG89ZTtpZigwIT09YSl7Y29uc3QgdD1pW2UrK10sZz1lKyhhKzEpKnQtMTtmb3Iocj0wLG49YSsxO3I8bjsrK3Ipe2xldCBhPTA7Zm9yKGxldCBzPTA7czx0Oysrcyl7YTw8PTg7YSs9aVtlKytdfXMucHVzaChnK2EpfW89c1thXX1mb3Iocj0wLG49cy5sZW5ndGgtMTtyPG47KytyKXtjb25zdCBlPXNbcl0sYT1zW3IrMV07dC5hZGQoaS5zdWJhcnJheShlLGEpKX1yZXR1cm57b2JqOnQsZW5kUG9zOm99fXBhcnNlTmFtZUluZGV4KGUpe2NvbnN0IHQ9W107Zm9yKGxldCBpPTAsYT1lLmNvdW50O2k8YTsrK2kpe2NvbnN0IGE9ZS5nZXQoaSk7dC5wdXNoKGJ5dGVzVG9TdHJpbmcoYSkpfXJldHVybiB0fXBhcnNlU3RyaW5nSW5kZXgoZSl7Y29uc3QgdD1uZXcgQ0ZGU3RyaW5ncztmb3IobGV0IGk9MCxhPWUuY291bnQ7aTxhOysraSl7Y29uc3QgYT1lLmdldChpKTt0LmFkZChieXRlc1RvU3RyaW5nKGEpKX1yZXR1cm4gdH1jcmVhdGVEaWN0KGUsdCxpKXtjb25zdCBhPW5ldyBlKGkpO2Zvcihjb25zdFtlLGldb2YgdClhLnNldEJ5S2V5KGUsaSk7cmV0dXJuIGF9cGFyc2VDaGFyU3RyaW5nKGUsdCxpLGEpe2lmKCF0fHxlLmNhbGxEZXB0aD4xMClyZXR1cm4hMTtsZXQgcz1lLnN0YWNrU2l6ZTtjb25zdCByPWUuc3RhY2s7bGV0IG49dC5sZW5ndGg7Zm9yKGxldCBvPTA7bzxuOyl7Y29uc3QgZz10W28rK107bGV0IGM9bnVsbDtpZigxMj09PWcpe2NvbnN0IGU9dFtvKytdO2lmKDA9PT1lKXt0W28tMl09MTM5O3Rbby0xXT0yMjtzPTB9ZWxzZSBjPUZpW2VdfWVsc2UgaWYoMjg9PT1nKXtyW3NdPSh0W29dPDwyNHx0W28rMV08PDE2KT4+MTY7bys9MjtzKyt9ZWxzZSBpZigxND09PWcpe2lmKHM+PTQpe3MtPTQ7aWYodGhpcy5zZWFjQW5hbHlzaXNFbmFibGVkKXtlLnNlYWM9ci5zbGljZShzLHMrNCk7cmV0dXJuITF9fWM9RGlbZ119ZWxzZSBpZihnPj0zMiYmZzw9MjQ2KXtyW3NdPWctMTM5O3MrK31lbHNlIGlmKGc+PTI0NyYmZzw9MjU0KXtyW3NdPWc8MjUxPyhnLTI0Nzw8OCkrdFtvXSsxMDg6LShnLTI1MTw8OCktdFtvXS0xMDg7bysrO3MrK31lbHNlIGlmKDI1NT09PWcpe3Jbc109KHRbb108PDI0fHRbbysxXTw8MTZ8dFtvKzJdPDw4fHRbbyszXSkvNjU1MzY7bys9NDtzKyt9ZWxzZSBpZigxOT09PWd8fDIwPT09Zyl7ZS5oaW50cys9cz4+MTtpZigwPT09ZS5oaW50cyl7dC5jb3B5V2l0aGluKG8tMSxvLC0xKTtvLT0xO24tPTE7Y29udGludWV9bys9ZS5oaW50cys3Pj4zO3MlPTI7Yz1EaVtnXX1lbHNle2lmKDEwPT09Z3x8Mjk9PT1nKXtjb25zdCB0PTEwPT09Zz9pOmE7aWYoIXQpe2M9RGlbZ107d2FybigiTWlzc2luZyBzdWJyc0luZGV4IGZvciAiK2MuaWQpO3JldHVybiExfWxldCBuPTMyNzY4O3QuY291bnQ8MTI0MD9uPTEwNzp0LmNvdW50PDMzOTAwJiYobj0xMTMxKTtjb25zdCBvPXJbLS1zXStuO2lmKG88MHx8bz49dC5jb3VudHx8aXNOYU4obykpe2M9RGlbZ107d2FybigiT3V0IG9mIGJvdW5kcyBzdWJySW5kZXggZm9yICIrYy5pZCk7cmV0dXJuITF9ZS5zdGFja1NpemU9cztlLmNhbGxEZXB0aCsrO2lmKCF0aGlzLnBhcnNlQ2hhclN0cmluZyhlLHQuZ2V0KG8pLGksYSkpcmV0dXJuITE7ZS5jYWxsRGVwdGgtLTtzPWUuc3RhY2tTaXplO2NvbnRpbnVlfWlmKDExPT09Zyl7ZS5zdGFja1NpemU9cztyZXR1cm4hMH1pZigwPT09ZyYmbz09PXQubGVuZ3RoKXt0W28tMV09MTQ7Yz1EaVsxNF19ZWxzZXtpZig5PT09Zyl7dC5jb3B5V2l0aGluKG8tMSxvLC0xKTtvLT0xO24tPTE7Y29udGludWV9Yz1EaVtnXX19aWYoYyl7aWYoYy5zdGVtKXtlLmhpbnRzKz1zPj4xO2lmKDM9PT1nfHwyMz09PWcpZS5oYXNWU3RlbXM9ITA7ZWxzZSBpZihlLmhhc1ZTdGVtcyYmKDE9PT1nfHwxOD09PWcpKXt3YXJuKCJDRkYgc3RlbSBoaW50cyBhcmUgaW4gd3Jvbmcgb3JkZXIiKTt0W28tMV09MT09PWc/MzoyM319aWYoIm1pbiJpbiBjJiYhZS51bmRlZlN0YWNrJiZzPGMubWluKXt3YXJuKCJOb3QgZW5vdWdoIHBhcmFtZXRlcnMgZm9yICIrYy5pZCsiOyBhY3R1YWw6ICIrcysiLCBleHBlY3RlZDogIitjLm1pbik7aWYoMD09PXMpe3Rbby0xXT0xNDtyZXR1cm4hMH1yZXR1cm4hMX1pZihlLmZpcnN0U3RhY2tDbGVhcmluZyYmYy5zdGFja0NsZWFyaW5nKXtlLmZpcnN0U3RhY2tDbGVhcmluZz0hMTtzLT1jLm1pbjtzPj0yJiZjLnN0ZW0/cyU9MjpzPjEmJndhcm4oIkZvdW5kIHRvbyBtYW55IHBhcmFtZXRlcnMgZm9yIHN0YWNrLWNsZWFyaW5nIGNvbW1hbmQiKTtzPjAmJihlLndpZHRoPXJbcy0xXSl9aWYoInN0YWNrRGVsdGEiaW4gYyl7InN0YWNrRm4iaW4gYyYmYy5zdGFja0ZuKHIscyk7cys9Yy5zdGFja0RlbHRhfWVsc2UgaWYoYy5zdGFja0NsZWFyaW5nKXM9MDtlbHNlIGlmKGMucmVzZXRTdGFjayl7cz0wO2UudW5kZWZTdGFjaz0hMX1lbHNlIGlmKGMudW5kZWZTdGFjayl7cz0wO2UudW5kZWZTdGFjaz0hMDtlLmZpcnN0U3RhY2tDbGVhcmluZz0hMX19fW48dC5sZW5ndGgmJnQuZmlsbCgxNCxuKTtlLnN0YWNrU2l6ZT1zO3JldHVybiEwfXBhcnNlQ2hhclN0cmluZ3Moe2NoYXJTdHJpbmdzOmUsbG9jYWxTdWJySW5kZXg6dCxnbG9iYWxTdWJySW5kZXg6aSxmZFNlbGVjdDphLGZkQXJyYXk6cyxwcml2YXRlRGljdDpyfSl7Y29uc3Qgbj1bXSxvPVtdLGc9ZS5jb3VudDtmb3IobGV0IGM9MDtjPGc7YysrKXtjb25zdCBnPWUuZ2V0KGMpLEM9e2NhbGxEZXB0aDowLHN0YWNrU2l6ZTowLHN0YWNrOltdLHVuZGVmU3RhY2s6ITAsaGludHM6MCxmaXJzdFN0YWNrQ2xlYXJpbmc6ITAsc2VhYzpudWxsLHdpZHRoOm51bGwsaGFzVlN0ZW1zOiExfTtsZXQgaD0hMCxsPW51bGwsUT1yO2lmKGEmJnMubGVuZ3RoKXtjb25zdCBlPWEuZ2V0RkRJbmRleChjKTtpZigtMT09PWUpe3dhcm4oIkdseXBoIGluZGV4IGlzIG5vdCBpbiBmZCBzZWxlY3QuIik7aD0hMX1pZihlPj1zLmxlbmd0aCl7d2FybigiSW52YWxpZCBmZCBpbmRleCBmb3IgZ2x5cGggaW5kZXguIik7aD0hMX1pZihoKXtRPXNbZV0ucHJpdmF0ZURpY3Q7bD1RLnN1YnJzSW5kZXh9fWVsc2UgdCYmKGw9dCk7aCYmKGg9dGhpcy5wYXJzZUNoYXJTdHJpbmcoQyxnLGwsaSkpO2lmKG51bGwhPT1DLndpZHRoKXtjb25zdCBlPVEuZ2V0QnlOYW1lKCJub21pbmFsV2lkdGhYIik7b1tjXT1lK0Mud2lkdGh9ZWxzZXtjb25zdCBlPVEuZ2V0QnlOYW1lKCJkZWZhdWx0V2lkdGhYIik7b1tjXT1lfW51bGwhPT1DLnNlYWMmJihuW2NdPUMuc2VhYyk7aHx8ZS5zZXQoYyxuZXcgVWludDhBcnJheShbMTRdKSl9cmV0dXJue2NoYXJTdHJpbmdzOmUsc2VhY3M6bix3aWR0aHM6b319ZW1wdHlQcml2YXRlRGljdGlvbmFyeShlKXtjb25zdCB0PXRoaXMuY3JlYXRlRGljdChDRkZQcml2YXRlRGljdCxbXSxlLnN0cmluZ3MpO2Uuc2V0QnlLZXkoMTgsWzAsMF0pO2UucHJpdmF0ZURpY3Q9dH1wYXJzZVByaXZhdGVEaWN0KGUpe2lmKCFlLmhhc05hbWUoIlByaXZhdGUiKSl7dGhpcy5lbXB0eVByaXZhdGVEaWN0aW9uYXJ5KGUpO3JldHVybn1jb25zdCB0PWUuZ2V0QnlOYW1lKCJQcml2YXRlIik7aWYoIUFycmF5LmlzQXJyYXkodCl8fDIhPT10Lmxlbmd0aCl7ZS5yZW1vdmVCeU5hbWUoIlByaXZhdGUiKTtyZXR1cm59Y29uc3QgaT10WzBdLGE9dFsxXTtpZigwPT09aXx8YT49dGhpcy5ieXRlcy5sZW5ndGgpe3RoaXMuZW1wdHlQcml2YXRlRGljdGlvbmFyeShlKTtyZXR1cm59Y29uc3Qgcz1hK2kscj10aGlzLmJ5dGVzLnN1YmFycmF5KGEscyksbj10aGlzLnBhcnNlRGljdChyKSxvPXRoaXMuY3JlYXRlRGljdChDRkZQcml2YXRlRGljdCxuLGUuc3RyaW5ncyk7ZS5wcml2YXRlRGljdD1vOzA9PT1vLmdldEJ5TmFtZSgiRXhwYW5zaW9uRmFjdG9yIikmJm8uc2V0QnlOYW1lKCJFeHBhbnNpb25GYWN0b3IiLC4wNik7aWYoIW8uZ2V0QnlOYW1lKCJTdWJycyIpKXJldHVybjtjb25zdCBnPW8uZ2V0QnlOYW1lKCJTdWJycyIpLGM9YStnO2lmKDA9PT1nfHxjPj10aGlzLmJ5dGVzLmxlbmd0aCl7dGhpcy5lbXB0eVByaXZhdGVEaWN0aW9uYXJ5KGUpO3JldHVybn1jb25zdCBDPXRoaXMucGFyc2VJbmRleChjKTtvLnN1YnJzSW5kZXg9Qy5vYmp9cGFyc2VDaGFyc2V0cyhlLHQsaSxhKXtpZigwPT09ZSlyZXR1cm4gbmV3IENGRkNoYXJzZXQoITAsTmkuSVNPX0FET0JFLGxpKTtpZigxPT09ZSlyZXR1cm4gbmV3IENGRkNoYXJzZXQoITAsTmkuRVhQRVJULEJpKTtpZigyPT09ZSlyZXR1cm4gbmV3IENGRkNoYXJzZXQoITAsTmkuRVhQRVJUX1NVQlNFVCxRaSk7Y29uc3Qgcz10aGlzLmJ5dGVzLHI9ZSxuPXNbZSsrXSxvPVthPzA6Ii5ub3RkZWYiXTtsZXQgZyxjLEM7dC09MTtzd2l0Y2gobil7Y2FzZSAwOmZvcihDPTA7Qzx0O0MrKyl7Zz1zW2UrK108PDh8c1tlKytdO28ucHVzaChhP2c6aS5nZXQoZykpfWJyZWFrO2Nhc2UgMTpmb3IoO28ubGVuZ3RoPD10Oyl7Zz1zW2UrK108PDh8c1tlKytdO2M9c1tlKytdO2ZvcihDPTA7Qzw9YztDKyspby5wdXNoKGE/ZysrOmkuZ2V0KGcrKykpfWJyZWFrO2Nhc2UgMjpmb3IoO28ubGVuZ3RoPD10Oyl7Zz1zW2UrK108PDh8c1tlKytdO2M9c1tlKytdPDw4fHNbZSsrXTtmb3IoQz0wO0M8PWM7QysrKW8ucHVzaChhP2crKzppLmdldChnKyspKX1icmVhaztkZWZhdWx0OnRocm93IG5ldyBGb3JtYXRFcnJvcigiVW5rbm93biBjaGFyc2V0IGZvcm1hdCIpfWNvbnN0IGg9ZSxsPXMuc3ViYXJyYXkocixoKTtyZXR1cm4gbmV3IENGRkNoYXJzZXQoITEsbixvLGwpfXBhcnNlRW5jb2RpbmcoZSx0LGksYSl7Y29uc3Qgcz1PYmplY3QuY3JlYXRlKG51bGwpLHI9dGhpcy5ieXRlcztsZXQgbixvLGcsYz0hMSxDPW51bGw7aWYoMD09PWV8fDE9PT1lKXtjPSEwO249ZTtjb25zdCB0PWU/RWk6Zmk7Zm9yKG89MCxnPWEubGVuZ3RoO288ZztvKyspe2NvbnN0IGU9dC5pbmRleE9mKGFbb10pOy0xIT09ZSYmKHNbZV09byl9fWVsc2V7Y29uc3QgdD1lO249cltlKytdO3N3aXRjaCgxMjcmbil7Y2FzZSAwOmNvbnN0IHQ9cltlKytdO2ZvcihvPTE7bzw9dDtvKyspc1tyW2UrK11dPW87YnJlYWs7Y2FzZSAxOmNvbnN0IGk9cltlKytdO2xldCBhPTE7Zm9yKG89MDtvPGk7bysrKXtjb25zdCB0PXJbZSsrXSxpPXJbZSsrXTtmb3IobGV0IGU9dDtlPD10K2k7ZSsrKXNbZV09YSsrfWJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEZvcm1hdEVycm9yKGBVbmtub3duIGVuY29kaW5nIGZvcm1hdDogJHtufSBpbiBDRkZgKX1jb25zdCBnPWU7aWYoMTI4Jm4pe3JbdF0mPTEyNzshZnVuY3Rpb24gcmVhZFN1cHBsZW1lbnQoKXtjb25zdCB0PXJbZSsrXTtmb3Iobz0wO288dDtvKyspe2NvbnN0IHQ9cltlKytdLG49KHJbZSsrXTw8OCkrKDI1NSZyW2UrK10pO3NbdF09YS5pbmRleE9mKGkuZ2V0KG4pKX19KCl9Qz1yLnN1YmFycmF5KHQsZyl9biY9MTI3O3JldHVybiBuZXcgQ0ZGRW5jb2RpbmcoYyxuLHMsQyl9cGFyc2VGRFNlbGVjdChlLHQpe2NvbnN0IGk9dGhpcy5ieXRlcyxhPWlbZSsrXSxzPVtdO2xldCByO3N3aXRjaChhKXtjYXNlIDA6Zm9yKHI9MDtyPHQ7KytyKXtjb25zdCB0PWlbZSsrXTtzLnB1c2godCl9YnJlYWs7Y2FzZSAzOmNvbnN0IG49aVtlKytdPDw4fGlbZSsrXTtmb3Iocj0wO3I8bjsrK3Ipe2xldCB0PWlbZSsrXTw8OHxpW2UrK107aWYoMD09PXImJjAhPT10KXt3YXJuKCJwYXJzZUZEU2VsZWN0OiBUaGUgZmlyc3QgcmFuZ2UgbXVzdCBoYXZlIGEgZmlyc3QgR0lEIG9mIDAgLS0gdHJ5aW5nIHRvIHJlY292ZXIuIik7dD0wfWNvbnN0IGE9aVtlKytdLG49aVtlXTw8OHxpW2UrMV07Zm9yKGxldCBlPXQ7ZTxuOysrZSlzLnB1c2goYSl9ZSs9MjticmVhaztkZWZhdWx0OnRocm93IG5ldyBGb3JtYXRFcnJvcihgcGFyc2VGRFNlbGVjdDogVW5rbm93biBmb3JtYXQgIiR7YX0iLmApfWlmKHMubGVuZ3RoIT09dCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoInBhcnNlRkRTZWxlY3Q6IEludmFsaWQgZm9udCBkYXRhLiIpO3JldHVybiBuZXcgQ0ZGRkRTZWxlY3QoYSxzKX19Y2xhc3MgQ0ZGe2NvbnN0cnVjdG9yKCl7dGhpcy5oZWFkZXI9bnVsbDt0aGlzLm5hbWVzPVtdO3RoaXMudG9wRGljdD1udWxsO3RoaXMuc3RyaW5ncz1uZXcgQ0ZGU3RyaW5nczt0aGlzLmdsb2JhbFN1YnJJbmRleD1udWxsO3RoaXMuZW5jb2Rpbmc9bnVsbDt0aGlzLmNoYXJzZXQ9bnVsbDt0aGlzLmNoYXJTdHJpbmdzPW51bGw7dGhpcy5mZEFycmF5PVtdO3RoaXMuZmRTZWxlY3Q9bnVsbDt0aGlzLmlzQ0lERm9udD0hMX1kdXBsaWNhdGVGaXJzdEdseXBoKCl7aWYodGhpcy5jaGFyU3RyaW5ncy5jb3VudD49NjU1MzUpe3dhcm4oIk5vdCBlbm91Z2ggc3BhY2UgaW4gY2hhcnN0cmluZ3MgdG8gZHVwbGljYXRlIGZpcnN0IGdseXBoLiIpO3JldHVybn1jb25zdCBlPXRoaXMuY2hhclN0cmluZ3MuZ2V0KDApO3RoaXMuY2hhclN0cmluZ3MuYWRkKGUpO3RoaXMuaXNDSURGb250JiZ0aGlzLmZkU2VsZWN0LmZkU2VsZWN0LnB1c2godGhpcy5mZFNlbGVjdC5mZFNlbGVjdFswXSl9aGFzR2x5cGhJZChlKXtpZihlPDB8fGU+PXRoaXMuY2hhclN0cmluZ3MuY291bnQpcmV0dXJuITE7cmV0dXJuIHRoaXMuY2hhclN0cmluZ3MuZ2V0KGUpLmxlbmd0aD4wfX1jbGFzcyBDRkZIZWFkZXJ7Y29uc3RydWN0b3IoZSx0LGksYSl7dGhpcy5tYWpvcj1lO3RoaXMubWlub3I9dDt0aGlzLmhkclNpemU9aTt0aGlzLm9mZlNpemU9YX19Y2xhc3MgQ0ZGU3RyaW5nc3tjb25zdHJ1Y3Rvcigpe3RoaXMuc3RyaW5ncz1bXX1nZXQoZSl7cmV0dXJuIGU+PTAmJmU8PTM5MD93aVtlXTplLWJpPD10aGlzLnN0cmluZ3MubGVuZ3RoP3RoaXMuc3RyaW5nc1tlLWJpXTp3aVswXX1nZXRTSUQoZSl7bGV0IHQ9d2kuaW5kZXhPZihlKTtpZigtMSE9PXQpcmV0dXJuIHQ7dD10aGlzLnN0cmluZ3MuaW5kZXhPZihlKTtyZXR1cm4tMSE9PXQ/dCtiaTotMX1hZGQoZSl7dGhpcy5zdHJpbmdzLnB1c2goZSl9Z2V0IGNvdW50KCl7cmV0dXJuIHRoaXMuc3RyaW5ncy5sZW5ndGh9fWNsYXNzIENGRkluZGV4e2NvbnN0cnVjdG9yKCl7dGhpcy5vYmplY3RzPVtdO3RoaXMubGVuZ3RoPTB9YWRkKGUpe3RoaXMubGVuZ3RoKz1lLmxlbmd0aDt0aGlzLm9iamVjdHMucHVzaChlKX1zZXQoZSx0KXt0aGlzLmxlbmd0aCs9dC5sZW5ndGgtdGhpcy5vYmplY3RzW2VdLmxlbmd0aDt0aGlzLm9iamVjdHNbZV09dH1nZXQoZSl7cmV0dXJuIHRoaXMub2JqZWN0c1tlXX1nZXQgY291bnQoKXtyZXR1cm4gdGhpcy5vYmplY3RzLmxlbmd0aH19Y2xhc3MgQ0ZGRGljdHtjb25zdHJ1Y3RvcihlLHQpe3RoaXMua2V5VG9OYW1lTWFwPWUua2V5VG9OYW1lTWFwO3RoaXMubmFtZVRvS2V5TWFwPWUubmFtZVRvS2V5TWFwO3RoaXMuZGVmYXVsdHM9ZS5kZWZhdWx0czt0aGlzLnR5cGVzPWUudHlwZXM7dGhpcy5vcGNvZGVzPWUub3Bjb2Rlczt0aGlzLm9yZGVyPWUub3JkZXI7dGhpcy5zdHJpbmdzPXQ7dGhpcy52YWx1ZXM9T2JqZWN0LmNyZWF0ZShudWxsKX1zZXRCeUtleShlLHQpe2lmKCEoZSBpbiB0aGlzLmtleVRvTmFtZU1hcCkpcmV0dXJuITE7aWYoMD09PXQubGVuZ3RoKXJldHVybiEwO2Zvcihjb25zdCBpIG9mIHQpaWYoaXNOYU4oaSkpe3dhcm4oYEludmFsaWQgQ0ZGRGljdCB2YWx1ZTogIiR7dH0iIGZvciBrZXkgIiR7ZX0iLmApO3JldHVybiEwfWNvbnN0IGk9dGhpcy50eXBlc1tlXTsibnVtIiE9PWkmJiJzaWQiIT09aSYmIm9mZnNldCIhPT1pfHwodD10WzBdKTt0aGlzLnZhbHVlc1tlXT10O3JldHVybiEwfXNldEJ5TmFtZShlLHQpe2lmKCEoZSBpbiB0aGlzLm5hbWVUb0tleU1hcCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbnZhbGlkIGRpY3Rpb25hcnkgbmFtZSAiJHtlfSJgKTt0aGlzLnZhbHVlc1t0aGlzLm5hbWVUb0tleU1hcFtlXV09dH1oYXNOYW1lKGUpe3JldHVybiB0aGlzLm5hbWVUb0tleU1hcFtlXWluIHRoaXMudmFsdWVzfWdldEJ5TmFtZShlKXtpZighKGUgaW4gdGhpcy5uYW1lVG9LZXlNYXApKXRocm93IG5ldyBGb3JtYXRFcnJvcihgSW52YWxpZCBkaWN0aW9uYXJ5IG5hbWUgJHtlfSJgKTtjb25zdCB0PXRoaXMubmFtZVRvS2V5TWFwW2VdO3JldHVybiB0IGluIHRoaXMudmFsdWVzP3RoaXMudmFsdWVzW3RdOnRoaXMuZGVmYXVsdHNbdF19cmVtb3ZlQnlOYW1lKGUpe2RlbGV0ZSB0aGlzLnZhbHVlc1t0aGlzLm5hbWVUb0tleU1hcFtlXV19c3RhdGljIGNyZWF0ZVRhYmxlcyhlKXtjb25zdCB0PXtrZXlUb05hbWVNYXA6e30sbmFtZVRvS2V5TWFwOnt9LGRlZmF1bHRzOnt9LHR5cGVzOnt9LG9wY29kZXM6e30sb3JkZXI6W119O2Zvcihjb25zdCBpIG9mIGUpe2NvbnN0IGU9QXJyYXkuaXNBcnJheShpWzBdKT8oaVswXVswXTw8OCkraVswXVsxXTppWzBdO3Qua2V5VG9OYW1lTWFwW2VdPWlbMV07dC5uYW1lVG9LZXlNYXBbaVsxXV09ZTt0LnR5cGVzW2VdPWlbMl07dC5kZWZhdWx0c1tlXT1pWzNdO3Qub3Bjb2Rlc1tlXT1BcnJheS5pc0FycmF5KGlbMF0pP2lbMF06W2lbMF1dO3Qub3JkZXIucHVzaChlKX1yZXR1cm4gdH19Y29uc3QgU2k9W1tbMTIsMzBdLCJST1MiLFsic2lkIiwic2lkIiwibnVtIl0sbnVsbF0sW1sxMiwyMF0sIlN5bnRoZXRpY0Jhc2UiLCJudW0iLG51bGxdLFswLCJ2ZXJzaW9uIiwic2lkIixudWxsXSxbMSwiTm90aWNlIiwic2lkIixudWxsXSxbWzEyLDBdLCJDb3B5cmlnaHQiLCJzaWQiLG51bGxdLFsyLCJGdWxsTmFtZSIsInNpZCIsbnVsbF0sWzMsIkZhbWlseU5hbWUiLCJzaWQiLG51bGxdLFs0LCJXZWlnaHQiLCJzaWQiLG51bGxdLFtbMTIsMV0sImlzRml4ZWRQaXRjaCIsIm51bSIsMF0sW1sxMiwyXSwiSXRhbGljQW5nbGUiLCJudW0iLDBdLFtbMTIsM10sIlVuZGVybGluZVBvc2l0aW9uIiwibnVtIiwtMTAwXSxbWzEyLDRdLCJVbmRlcmxpbmVUaGlja25lc3MiLCJudW0iLDUwXSxbWzEyLDVdLCJQYWludFR5cGUiLCJudW0iLDBdLFtbMTIsNl0sIkNoYXJzdHJpbmdUeXBlIiwibnVtIiwyXSxbWzEyLDddLCJGb250TWF0cml4IixbIm51bSIsIm51bSIsIm51bSIsIm51bSIsIm51bSIsIm51bSJdLFsuMDAxLDAsMCwuMDAxLDAsMF1dLFsxMywiVW5pcXVlSUQiLCJudW0iLG51bGxdLFs1LCJGb250QkJveCIsWyJudW0iLCJudW0iLCJudW0iLCJudW0iXSxbMCwwLDAsMF1dLFtbMTIsOF0sIlN0cm9rZVdpZHRoIiwibnVtIiwwXSxbMTQsIlhVSUQiLCJhcnJheSIsbnVsbF0sWzE1LCJjaGFyc2V0Iiwib2Zmc2V0IiwwXSxbMTYsIkVuY29kaW5nIiwib2Zmc2V0IiwwXSxbMTcsIkNoYXJTdHJpbmdzIiwib2Zmc2V0IiwwXSxbMTgsIlByaXZhdGUiLFsib2Zmc2V0Iiwib2Zmc2V0Il0sbnVsbF0sW1sxMiwyMV0sIlBvc3RTY3JpcHQiLCJzaWQiLG51bGxdLFtbMTIsMjJdLCJCYXNlRm9udE5hbWUiLCJzaWQiLG51bGxdLFtbMTIsMjNdLCJCYXNlRm9udEJsZW5kIiwiZGVsdGEiLG51bGxdLFtbMTIsMzFdLCJDSURGb250VmVyc2lvbiIsIm51bSIsMF0sW1sxMiwzMl0sIkNJREZvbnRSZXZpc2lvbiIsIm51bSIsMF0sW1sxMiwzM10sIkNJREZvbnRUeXBlIiwibnVtIiwwXSxbWzEyLDM0XSwiQ0lEQ291bnQiLCJudW0iLDg3MjBdLFtbMTIsMzVdLCJVSURCYXNlIiwibnVtIixudWxsXSxbWzEyLDM3XSwiRkRTZWxlY3QiLCJvZmZzZXQiLG51bGxdLFtbMTIsMzZdLCJGREFycmF5Iiwib2Zmc2V0IixudWxsXSxbWzEyLDM4XSwiRm9udE5hbWUiLCJzaWQiLG51bGxdXTtjbGFzcyBDRkZUb3BEaWN0IGV4dGVuZHMgQ0ZGRGljdHtzdGF0aWMgZ2V0IHRhYmxlcygpe3JldHVybiBzaGFkb3codGhpcywidGFibGVzIix0aGlzLmNyZWF0ZVRhYmxlcyhTaSkpfWNvbnN0cnVjdG9yKGUpe3N1cGVyKENGRlRvcERpY3QudGFibGVzLGUpO3RoaXMucHJpdmF0ZURpY3Q9bnVsbH19Y29uc3Qga2k9W1s2LCJCbHVlVmFsdWVzIiwiZGVsdGEiLG51bGxdLFs3LCJPdGhlckJsdWVzIiwiZGVsdGEiLG51bGxdLFs4LCJGYW1pbHlCbHVlcyIsImRlbHRhIixudWxsXSxbOSwiRmFtaWx5T3RoZXJCbHVlcyIsImRlbHRhIixudWxsXSxbWzEyLDldLCJCbHVlU2NhbGUiLCJudW0iLC4wMzk2MjVdLFtbMTIsMTBdLCJCbHVlU2hpZnQiLCJudW0iLDddLFtbMTIsMTFdLCJCbHVlRnV6eiIsIm51bSIsMV0sWzEwLCJTdGRIVyIsIm51bSIsbnVsbF0sWzExLCJTdGRWVyIsIm51bSIsbnVsbF0sW1sxMiwxMl0sIlN0ZW1TbmFwSCIsImRlbHRhIixudWxsXSxbWzEyLDEzXSwiU3RlbVNuYXBWIiwiZGVsdGEiLG51bGxdLFtbMTIsMTRdLCJGb3JjZUJvbGQiLCJudW0iLDBdLFtbMTIsMTddLCJMYW5ndWFnZUdyb3VwIiwibnVtIiwwXSxbWzEyLDE4XSwiRXhwYW5zaW9uRmFjdG9yIiwibnVtIiwuMDZdLFtbMTIsMTldLCJpbml0aWFsUmFuZG9tU2VlZCIsIm51bSIsMF0sWzIwLCJkZWZhdWx0V2lkdGhYIiwibnVtIiwwXSxbMjEsIm5vbWluYWxXaWR0aFgiLCJudW0iLDBdLFsxOSwiU3VicnMiLCJvZmZzZXQiLG51bGxdXTtjbGFzcyBDRkZQcml2YXRlRGljdCBleHRlbmRzIENGRkRpY3R7c3RhdGljIGdldCB0YWJsZXMoKXtyZXR1cm4gc2hhZG93KHRoaXMsInRhYmxlcyIsdGhpcy5jcmVhdGVUYWJsZXMoa2kpKX1jb25zdHJ1Y3RvcihlKXtzdXBlcihDRkZQcml2YXRlRGljdC50YWJsZXMsZSk7dGhpcy5zdWJyc0luZGV4PW51bGx9fWNvbnN0IE5pPXtJU09fQURPQkU6MCxFWFBFUlQ6MSxFWFBFUlRfU1VCU0VUOjJ9O2NsYXNzIENGRkNoYXJzZXR7Y29uc3RydWN0b3IoZSx0LGksYSl7dGhpcy5wcmVkZWZpbmVkPWU7dGhpcy5mb3JtYXQ9dDt0aGlzLmNoYXJzZXQ9aTt0aGlzLnJhdz1hfX1jbGFzcyBDRkZFbmNvZGluZ3tjb25zdHJ1Y3RvcihlLHQsaSxhKXt0aGlzLnByZWRlZmluZWQ9ZTt0aGlzLmZvcm1hdD10O3RoaXMuZW5jb2Rpbmc9aTt0aGlzLnJhdz1hfX1jbGFzcyBDRkZGRFNlbGVjdHtjb25zdHJ1Y3RvcihlLHQpe3RoaXMuZm9ybWF0PWU7dGhpcy5mZFNlbGVjdD10fWdldEZESW5kZXgoZSl7cmV0dXJuIGU8MHx8ZT49dGhpcy5mZFNlbGVjdC5sZW5ndGg/LTE6dGhpcy5mZFNlbGVjdFtlXX19Y2xhc3MgQ0ZGT2Zmc2V0VHJhY2tlcntjb25zdHJ1Y3Rvcigpe3RoaXMub2Zmc2V0cz1PYmplY3QuY3JlYXRlKG51bGwpfWlzVHJhY2tpbmcoZSl7cmV0dXJuIGUgaW4gdGhpcy5vZmZzZXRzfXRyYWNrKGUsdCl7aWYoZSBpbiB0aGlzLm9mZnNldHMpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBBbHJlYWR5IHRyYWNraW5nIGxvY2F0aW9uIG9mICR7ZX1gKTt0aGlzLm9mZnNldHNbZV09dH1vZmZzZXQoZSl7Zm9yKGNvbnN0IHQgaW4gdGhpcy5vZmZzZXRzKXRoaXMub2Zmc2V0c1t0XSs9ZX1zZXRFbnRyeUxvY2F0aW9uKGUsdCxpKXtpZighKGUgaW4gdGhpcy5vZmZzZXRzKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYE5vdCB0cmFja2luZyBsb2NhdGlvbiBvZiAke2V9YCk7Y29uc3QgYT1pLmRhdGEscz10aGlzLm9mZnNldHNbZV07Zm9yKGxldCBlPTAsaT10Lmxlbmd0aDtlPGk7KytlKXtjb25zdCBpPTUqZStzLHI9aSsxLG49aSsyLG89aSszLGc9aSs0O2lmKDI5IT09YVtpXXx8MCE9PWFbcl18fDAhPT1hW25dfHwwIT09YVtvXXx8MCE9PWFbZ10pdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJ3cml0aW5nIHRvIGFuIG9mZnNldCB0aGF0IGlzIG5vdCBlbXB0eSIpO2NvbnN0IGM9dFtlXTthW2ldPTI5O2Fbcl09Yz4+MjQmMjU1O2Fbbl09Yz4+MTYmMjU1O2Fbb109Yz4+OCYyNTU7YVtnXT0yNTUmY319fWNsYXNzIENGRkNvbXBpbGVye2NvbnN0cnVjdG9yKGUpe3RoaXMuY2ZmPWV9Y29tcGlsZSgpe2NvbnN0IGU9dGhpcy5jZmYsdD17ZGF0YTpbXSxsZW5ndGg6MCxhZGQoZSl7dHJ5e3RoaXMuZGF0YS5wdXNoKC4uLmUpfWNhdGNoe3RoaXMuZGF0YT10aGlzLmRhdGEuY29uY2F0KGUpfXRoaXMubGVuZ3RoPXRoaXMuZGF0YS5sZW5ndGh9fSxpPXRoaXMuY29tcGlsZUhlYWRlcihlLmhlYWRlcik7dC5hZGQoaSk7Y29uc3QgYT10aGlzLmNvbXBpbGVOYW1lSW5kZXgoZS5uYW1lcyk7dC5hZGQoYSk7aWYoZS5pc0NJREZvbnQmJmUudG9wRGljdC5oYXNOYW1lKCJGb250TWF0cml4Iikpe2NvbnN0IHQ9ZS50b3BEaWN0LmdldEJ5TmFtZSgiRm9udE1hdHJpeCIpO2UudG9wRGljdC5yZW1vdmVCeU5hbWUoIkZvbnRNYXRyaXgiKTtmb3IoY29uc3QgaSBvZiBlLmZkQXJyYXkpe2xldCBlPXQuc2xpY2UoMCk7aS5oYXNOYW1lKCJGb250TWF0cml4IikmJihlPVV0aWwudHJhbnNmb3JtKGUsaS5nZXRCeU5hbWUoIkZvbnRNYXRyaXgiKSkpO2kuc2V0QnlOYW1lKCJGb250TWF0cml4IixlKX19Y29uc3Qgcz1lLnRvcERpY3QuZ2V0QnlOYW1lKCJYVUlEIik7cz8ubGVuZ3RoPjE2JiZlLnRvcERpY3QucmVtb3ZlQnlOYW1lKCJYVUlEIik7ZS50b3BEaWN0LnNldEJ5TmFtZSgiY2hhcnNldCIsMCk7bGV0IHI9dGhpcy5jb21waWxlVG9wRGljdHMoW2UudG9wRGljdF0sdC5sZW5ndGgsZS5pc0NJREZvbnQpO3QuYWRkKHIub3V0cHV0KTtjb25zdCBuPXIudHJhY2tlcnNbMF0sbz10aGlzLmNvbXBpbGVTdHJpbmdJbmRleChlLnN0cmluZ3Muc3RyaW5ncyk7dC5hZGQobyk7Y29uc3QgZz10aGlzLmNvbXBpbGVJbmRleChlLmdsb2JhbFN1YnJJbmRleCk7dC5hZGQoZyk7aWYoZS5lbmNvZGluZyYmZS50b3BEaWN0Lmhhc05hbWUoIkVuY29kaW5nIikpaWYoZS5lbmNvZGluZy5wcmVkZWZpbmVkKW4uc2V0RW50cnlMb2NhdGlvbigiRW5jb2RpbmciLFtlLmVuY29kaW5nLmZvcm1hdF0sdCk7ZWxzZXtjb25zdCBpPXRoaXMuY29tcGlsZUVuY29kaW5nKGUuZW5jb2RpbmcpO24uc2V0RW50cnlMb2NhdGlvbigiRW5jb2RpbmciLFt0Lmxlbmd0aF0sdCk7dC5hZGQoaSl9Y29uc3QgYz10aGlzLmNvbXBpbGVDaGFyc2V0KGUuY2hhcnNldCxlLmNoYXJTdHJpbmdzLmNvdW50LGUuc3RyaW5ncyxlLmlzQ0lERm9udCk7bi5zZXRFbnRyeUxvY2F0aW9uKCJjaGFyc2V0IixbdC5sZW5ndGhdLHQpO3QuYWRkKGMpO2NvbnN0IEM9dGhpcy5jb21waWxlQ2hhclN0cmluZ3MoZS5jaGFyU3RyaW5ncyk7bi5zZXRFbnRyeUxvY2F0aW9uKCJDaGFyU3RyaW5ncyIsW3QubGVuZ3RoXSx0KTt0LmFkZChDKTtpZihlLmlzQ0lERm9udCl7bi5zZXRFbnRyeUxvY2F0aW9uKCJGRFNlbGVjdCIsW3QubGVuZ3RoXSx0KTtjb25zdCBpPXRoaXMuY29tcGlsZUZEU2VsZWN0KGUuZmRTZWxlY3QpO3QuYWRkKGkpO3I9dGhpcy5jb21waWxlVG9wRGljdHMoZS5mZEFycmF5LHQubGVuZ3RoLCEwKTtuLnNldEVudHJ5TG9jYXRpb24oIkZEQXJyYXkiLFt0Lmxlbmd0aF0sdCk7dC5hZGQoci5vdXRwdXQpO2NvbnN0IGE9ci50cmFja2Vyczt0aGlzLmNvbXBpbGVQcml2YXRlRGljdHMoZS5mZEFycmF5LGEsdCl9dGhpcy5jb21waWxlUHJpdmF0ZURpY3RzKFtlLnRvcERpY3RdLFtuXSx0KTt0LmFkZChbMF0pO3JldHVybiB0LmRhdGF9ZW5jb2RlTnVtYmVyKGUpe3JldHVybiBOdW1iZXIuaXNJbnRlZ2VyKGUpP3RoaXMuZW5jb2RlSW50ZWdlcihlKTp0aGlzLmVuY29kZUZsb2F0KGUpfXN0YXRpYyBnZXQgRW5jb2RlRmxvYXRSZWdFeHAoKXtyZXR1cm4gc2hhZG93KHRoaXMsIkVuY29kZUZsb2F0UmVnRXhwIiwvXC4oXGQqPykoPzo5ezUsMjB9fDB7NSwyMH0pXGR7MCwyfSg/OmUoLispfCQpLyl9ZW5jb2RlRmxvYXQoZSl7bGV0IHQ9ZS50b1N0cmluZygpO2NvbnN0IGk9Q0ZGQ29tcGlsZXIuRW5jb2RlRmxvYXRSZWdFeHAuZXhlYyh0KTtpZihpKXtjb25zdCBhPXBhcnNlRmxvYXQoIjFlIisoKGlbMl0/K2lbMl06MCkraVsxXS5sZW5ndGgpKTt0PShNYXRoLnJvdW5kKGUqYSkvYSkudG9TdHJpbmcoKX1sZXQgYSxzLHI9IiI7Zm9yKGE9MCxzPXQubGVuZ3RoO2E8czsrK2Epe2NvbnN0IGU9dFthXTtyKz0iZSI9PT1lPyItIj09PXRbKythXT8iYyI6ImIiOiIuIj09PWU/ImEiOiItIj09PWU/ImUiOmV9cis9MSZyLmxlbmd0aD8iZiI6ImZmIjtjb25zdCBuPVszMF07Zm9yKGE9MCxzPXIubGVuZ3RoO2E8czthKz0yKW4ucHVzaChwYXJzZUludChyLnN1YnN0cmluZyhhLGErMiksMTYpKTtyZXR1cm4gbn1lbmNvZGVJbnRlZ2VyKGUpe2xldCB0O3Q9ZT49LTEwNyYmZTw9MTA3P1tlKzEzOV06ZT49MTA4JiZlPD0xMTMxP1syNDcrKChlLT0xMDgpPj44KSwyNTUmZV06ZT49LTExMzEmJmU8PS0xMDg/WzI1MSsoKGU9LWUtMTA4KT4+OCksMjU1JmVdOmU+PS0zMjc2OCYmZTw9MzI3Njc/WzI4LGU+PjgmMjU1LDI1NSZlXTpbMjksZT4+MjQmMjU1LGU+PjE2JjI1NSxlPj44JjI1NSwyNTUmZV07cmV0dXJuIHR9Y29tcGlsZUhlYWRlcihlKXtyZXR1cm5bZS5tYWpvcixlLm1pbm9yLDQsZS5vZmZTaXplXX1jb21waWxlTmFtZUluZGV4KGUpe2NvbnN0IHQ9bmV3IENGRkluZGV4O2Zvcihjb25zdCBpIG9mIGUpe2NvbnN0IGU9TWF0aC5taW4oaS5sZW5ndGgsMTI3KTtsZXQgYT1uZXcgQXJyYXkoZSk7Zm9yKGxldCB0PTA7dDxlO3QrKyl7bGV0IGU9aVt0XTsoZTwiISJ8fGU+In4ifHwiWyI9PT1lfHwiXSI9PT1lfHwiKCI9PT1lfHwiKSI9PT1lfHwieyI9PT1lfHwifSI9PT1lfHwiPCI9PT1lfHwiPiI9PT1lfHwiLyI9PT1lfHwiJSI9PT1lKSYmKGU9Il8iKTthW3RdPWV9YT1hLmpvaW4oIiIpOyIiPT09YSYmKGE9IkJhZF9Gb250X05hbWUiKTt0LmFkZChzdHJpbmdUb0J5dGVzKGEpKX1yZXR1cm4gdGhpcy5jb21waWxlSW5kZXgodCl9Y29tcGlsZVRvcERpY3RzKGUsdCxpKXtjb25zdCBhPVtdO2xldCBzPW5ldyBDRkZJbmRleDtmb3IoY29uc3QgciBvZiBlKXtpZihpKXtyLnJlbW92ZUJ5TmFtZSgiQ0lERm9udFZlcnNpb24iKTtyLnJlbW92ZUJ5TmFtZSgiQ0lERm9udFJldmlzaW9uIik7ci5yZW1vdmVCeU5hbWUoIkNJREZvbnRUeXBlIik7ci5yZW1vdmVCeU5hbWUoIkNJRENvdW50Iik7ci5yZW1vdmVCeU5hbWUoIlVJREJhc2UiKX1jb25zdCBlPW5ldyBDRkZPZmZzZXRUcmFja2VyLG49dGhpcy5jb21waWxlRGljdChyLGUpO2EucHVzaChlKTtzLmFkZChuKTtlLm9mZnNldCh0KX1zPXRoaXMuY29tcGlsZUluZGV4KHMsYSk7cmV0dXJue3RyYWNrZXJzOmEsb3V0cHV0OnN9fWNvbXBpbGVQcml2YXRlRGljdHMoZSx0LGkpe2ZvcihsZXQgYT0wLHM9ZS5sZW5ndGg7YTxzOysrYSl7Y29uc3Qgcz1lW2FdLHI9cy5wcml2YXRlRGljdDtpZighcnx8IXMuaGFzTmFtZSgiUHJpdmF0ZSIpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiVGhlcmUgbXVzdCBiZSBhIHByaXZhdGUgZGljdGlvbmFyeS4iKTtjb25zdCBuPW5ldyBDRkZPZmZzZXRUcmFja2VyLG89dGhpcy5jb21waWxlRGljdChyLG4pO2xldCBnPWkubGVuZ3RoO24ub2Zmc2V0KGcpO28ubGVuZ3RofHwoZz0wKTt0W2FdLnNldEVudHJ5TG9jYXRpb24oIlByaXZhdGUiLFtvLmxlbmd0aCxnXSxpKTtpLmFkZChvKTtpZihyLnN1YnJzSW5kZXgmJnIuaGFzTmFtZSgiU3VicnMiKSl7Y29uc3QgZT10aGlzLmNvbXBpbGVJbmRleChyLnN1YnJzSW5kZXgpO24uc2V0RW50cnlMb2NhdGlvbigiU3VicnMiLFtvLmxlbmd0aF0saSk7aS5hZGQoZSl9fX1jb21waWxlRGljdChlLHQpe2NvbnN0IGk9W107Zm9yKGNvbnN0IGEgb2YgZS5vcmRlcil7aWYoIShhIGluIGUudmFsdWVzKSljb250aW51ZTtsZXQgcz1lLnZhbHVlc1thXSxyPWUudHlwZXNbYV07QXJyYXkuaXNBcnJheShyKXx8KHI9W3JdKTtBcnJheS5pc0FycmF5KHMpfHwocz1bc10pO2lmKDAhPT1zLmxlbmd0aCl7Zm9yKGxldCBuPTAsbz1yLmxlbmd0aDtuPG87KytuKXtjb25zdCBvPXJbbl0sZz1zW25dO3N3aXRjaChvKXtjYXNlIm51bSI6Y2FzZSJzaWQiOmkucHVzaCguLi50aGlzLmVuY29kZU51bWJlcihnKSk7YnJlYWs7Y2FzZSJvZmZzZXQiOmNvbnN0IHI9ZS5rZXlUb05hbWVNYXBbYV07dC5pc1RyYWNraW5nKHIpfHx0LnRyYWNrKHIsaS5sZW5ndGgpO2kucHVzaCgyOSwwLDAsMCwwKTticmVhaztjYXNlImFycmF5IjpjYXNlImRlbHRhIjppLnB1c2goLi4udGhpcy5lbmNvZGVOdW1iZXIoZykpO2ZvcihsZXQgZT0xLHQ9cy5sZW5ndGg7ZTx0OysrZSlpLnB1c2goLi4udGhpcy5lbmNvZGVOdW1iZXIoc1tlXSkpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEZvcm1hdEVycm9yKGBVbmtub3duIGRhdGEgdHlwZSBvZiAke299YCl9fWkucHVzaCguLi5lLm9wY29kZXNbYV0pfX1yZXR1cm4gaX1jb21waWxlU3RyaW5nSW5kZXgoZSl7Y29uc3QgdD1uZXcgQ0ZGSW5kZXg7Zm9yKGNvbnN0IGkgb2YgZSl0LmFkZChzdHJpbmdUb0J5dGVzKGkpKTtyZXR1cm4gdGhpcy5jb21waWxlSW5kZXgodCl9Y29tcGlsZUNoYXJTdHJpbmdzKGUpe2NvbnN0IHQ9bmV3IENGRkluZGV4O2ZvcihsZXQgaT0wO2k8ZS5jb3VudDtpKyspe2NvbnN0IGE9ZS5nZXQoaSk7MCE9PWEubGVuZ3RoP3QuYWRkKGEpOnQuYWRkKG5ldyBVaW50OEFycmF5KFsxMzksMTRdKSl9cmV0dXJuIHRoaXMuY29tcGlsZUluZGV4KHQpfWNvbXBpbGVDaGFyc2V0KGUsdCxpLGEpe2xldCBzO2NvbnN0IHI9dC0xO2lmKGEpcz1uZXcgVWludDhBcnJheShbMiwwLDAscj4+OCYyNTUsMjU1JnJdKTtlbHNle3M9bmV3IFVpbnQ4QXJyYXkoMSsyKnIpO3NbMF09MDtsZXQgdD0wO2NvbnN0IGE9ZS5jaGFyc2V0Lmxlbmd0aDtsZXQgbj0hMTtmb3IobGV0IHI9MTtyPHMubGVuZ3RoO3IrPTIpe2xldCBvPTA7aWYodDxhKXtjb25zdCBhPWUuY2hhcnNldFt0KytdO289aS5nZXRTSUQoYSk7aWYoLTE9PT1vKXtvPTA7aWYoIW4pe249ITA7d2FybihgQ291bGRuJ3QgZmluZCAke2F9IGluIENGRiBzdHJpbmdzYCl9fX1zW3JdPW8+PjgmMjU1O3NbcisxXT0yNTUmb319cmV0dXJuIHRoaXMuY29tcGlsZVR5cGVkQXJyYXkocyl9Y29tcGlsZUVuY29kaW5nKGUpe3JldHVybiB0aGlzLmNvbXBpbGVUeXBlZEFycmF5KGUucmF3KX1jb21waWxlRkRTZWxlY3QoZSl7Y29uc3QgdD1lLmZvcm1hdDtsZXQgaSxhO3N3aXRjaCh0KXtjYXNlIDA6aT1uZXcgVWludDhBcnJheSgxK2UuZmRTZWxlY3QubGVuZ3RoKTtpWzBdPXQ7Zm9yKGE9MDthPGUuZmRTZWxlY3QubGVuZ3RoO2ErKylpW2ErMV09ZS5mZFNlbGVjdFthXTticmVhaztjYXNlIDM6Y29uc3Qgcz0wO2xldCByPWUuZmRTZWxlY3RbMF07Y29uc3Qgbj1bdCwwLDAscz4+OCYyNTUsMjU1JnMscl07Zm9yKGE9MTthPGUuZmRTZWxlY3QubGVuZ3RoO2ErKyl7Y29uc3QgdD1lLmZkU2VsZWN0W2FdO2lmKHQhPT1yKXtuLnB1c2goYT4+OCYyNTUsMjU1JmEsdCk7cj10fX1jb25zdCBvPShuLmxlbmd0aC0zKS8zO25bMV09bz4+OCYyNTU7blsyXT0yNTUmbztuLnB1c2goYT4+OCYyNTUsMjU1JmEpO2k9bmV3IFVpbnQ4QXJyYXkobil9cmV0dXJuIHRoaXMuY29tcGlsZVR5cGVkQXJyYXkoaSl9Y29tcGlsZVR5cGVkQXJyYXkoZSl7cmV0dXJuIEFycmF5LmZyb20oZSl9Y29tcGlsZUluZGV4KGUsdD1bXSl7Y29uc3QgaT1lLm9iamVjdHMsYT1pLmxlbmd0aDtpZigwPT09YSlyZXR1cm5bMCwwXTtjb25zdCBzPVthPj44JjI1NSwyNTUmYV07bGV0IHIsbixvPTE7Zm9yKHI9MDtyPGE7KytyKW8rPWlbcl0ubGVuZ3RoO249bzwyNTY/MTpvPDY1NTM2PzI6bzwxNjc3NzIxNj8zOjQ7cy5wdXNoKG4pO2xldCBnPTE7Zm9yKHI9MDtyPGErMTtyKyspezE9PT1uP3MucHVzaCgyNTUmZyk6Mj09PW4/cy5wdXNoKGc+PjgmMjU1LDI1NSZnKTozPT09bj9zLnB1c2goZz4+MTYmMjU1LGc+PjgmMjU1LDI1NSZnKTpzLnB1c2goZz4+PjI0JjI1NSxnPj4xNiYyNTUsZz4+OCYyNTUsMjU1JmcpO2lbcl0mJihnKz1pW3JdLmxlbmd0aCl9Zm9yKHI9MDtyPGE7cisrKXt0W3JdJiZ0W3JdLm9mZnNldChzLmxlbmd0aCk7cy5wdXNoKC4uLmlbcl0pfXJldHVybiBzfX1jb25zdCBSaT1nZXRMb29rdXBUYWJsZUZhY3RvcnkoKGZ1bmN0aW9uKGUpe2UuQT02NTtlLkFFPTE5ODtlLkFFYWN1dGU9NTA4O2UuQUVtYWNyb249NDgyO2UuQUVzbWFsbD02MzQ2MjtlLkFhY3V0ZT0xOTM7ZS5BYWN1dGVzbWFsbD02MzQ1NztlLkFicmV2ZT0yNTg7ZS5BYnJldmVhY3V0ZT03ODU0O2UuQWJyZXZlY3lyaWxsaWM9MTIzMjtlLkFicmV2ZWRvdGJlbG93PTc4NjI7ZS5BYnJldmVncmF2ZT03ODU2O2UuQWJyZXZlaG9va2Fib3ZlPTc4NTg7ZS5BYnJldmV0aWxkZT03ODYwO2UuQWNhcm9uPTQ2MTtlLkFjaXJjbGU9OTM5ODtlLkFjaXJjdW1mbGV4PTE5NDtlLkFjaXJjdW1mbGV4YWN1dGU9Nzg0NDtlLkFjaXJjdW1mbGV4ZG90YmVsb3c9Nzg1MjtlLkFjaXJjdW1mbGV4Z3JhdmU9Nzg0NjtlLkFjaXJjdW1mbGV4aG9va2Fib3ZlPTc4NDg7ZS5BY2lyY3VtZmxleHNtYWxsPTYzNDU4O2UuQWNpcmN1bWZsZXh0aWxkZT03ODUwO2UuQWN1dGU9NjMxNzc7ZS5BY3V0ZXNtYWxsPTYzNDEyO2UuQWN5cmlsbGljPTEwNDA7ZS5BZGJsZ3JhdmU9NTEyO2UuQWRpZXJlc2lzPTE5NjtlLkFkaWVyZXNpc2N5cmlsbGljPTEyMzQ7ZS5BZGllcmVzaXNtYWNyb249NDc4O2UuQWRpZXJlc2lzc21hbGw9NjM0NjA7ZS5BZG90YmVsb3c9Nzg0MDtlLkFkb3RtYWNyb249NDgwO2UuQWdyYXZlPTE5MjtlLkFncmF2ZXNtYWxsPTYzNDU2O2UuQWhvb2thYm92ZT03ODQyO2UuQWllY3lyaWxsaWM9MTIzNjtlLkFpbnZlcnRlZGJyZXZlPTUxNDtlLkFscGhhPTkxMztlLkFscGhhdG9ub3M9OTAyO2UuQW1hY3Jvbj0yNTY7ZS5BbW9ub3NwYWNlPTY1MzEzO2UuQW9nb25laz0yNjA7ZS5BcmluZz0xOTc7ZS5BcmluZ2FjdXRlPTUwNjtlLkFyaW5nYmVsb3c9NzY4MDtlLkFyaW5nc21hbGw9NjM0NjE7ZS5Bc21hbGw9NjMzMjk7ZS5BdGlsZGU9MTk1O2UuQXRpbGRlc21hbGw9NjM0NTk7ZS5BeWJhcm1lbmlhbj0xMzI5O2UuQj02NjtlLkJjaXJjbGU9OTM5OTtlLkJkb3RhY2NlbnQ9NzY4MjtlLkJkb3RiZWxvdz03Njg0O2UuQmVjeXJpbGxpYz0xMDQxO2UuQmVuYXJtZW5pYW49MTMzMDtlLkJldGE9OTE0O2UuQmhvb2s9Mzg1O2UuQmxpbmViZWxvdz03Njg2O2UuQm1vbm9zcGFjZT02NTMxNDtlLkJyZXZlc21hbGw9NjMyMjA7ZS5Cc21hbGw9NjMzMzA7ZS5CdG9wYmFyPTM4NjtlLkM9Njc7ZS5DYWFybWVuaWFuPTEzNDI7ZS5DYWN1dGU9MjYyO2UuQ2Fyb249NjMxNzg7ZS5DYXJvbnNtYWxsPTYzMjIxO2UuQ2Nhcm9uPTI2ODtlLkNjZWRpbGxhPTE5OTtlLkNjZWRpbGxhYWN1dGU9NzY4ODtlLkNjZWRpbGxhc21hbGw9NjM0NjM7ZS5DY2lyY2xlPTk0MDA7ZS5DY2lyY3VtZmxleD0yNjQ7ZS5DZG90PTI2NjtlLkNkb3RhY2NlbnQ9MjY2O2UuQ2VkaWxsYXNtYWxsPTYzNDE2O2UuQ2hhYXJtZW5pYW49MTM1MztlLkNoZWFia2hhc2lhbmN5cmlsbGljPTEyMTI7ZS5DaGVjeXJpbGxpYz0xMDYzO2UuQ2hlZGVzY2VuZGVyYWJraGFzaWFuY3lyaWxsaWM9MTIxNDtlLkNoZWRlc2NlbmRlcmN5cmlsbGljPTEyMDY7ZS5DaGVkaWVyZXNpc2N5cmlsbGljPTEyNjg7ZS5DaGVoYXJtZW5pYW49MTM0NztlLkNoZWtoYWthc3NpYW5jeXJpbGxpYz0xMjI3O2UuQ2hldmVydGljYWxzdHJva2VjeXJpbGxpYz0xMjA4O2UuQ2hpPTkzNTtlLkNob29rPTM5MTtlLkNpcmN1bWZsZXhzbWFsbD02MzIyMjtlLkNtb25vc3BhY2U9NjUzMTU7ZS5Db2FybWVuaWFuPTEzNjE7ZS5Dc21hbGw9NjMzMzE7ZS5EPTY4O2UuRFo9NDk3O2UuRFpjYXJvbj00NTI7ZS5EYWFybWVuaWFuPTEzMzI7ZS5EYWZyaWNhbj0zOTM7ZS5EY2Fyb249MjcwO2UuRGNlZGlsbGE9NzY5NjtlLkRjaXJjbGU9OTQwMTtlLkRjaXJjdW1mbGV4YmVsb3c9NzY5ODtlLkRjcm9hdD0yNzI7ZS5EZG90YWNjZW50PTc2OTA7ZS5EZG90YmVsb3c9NzY5MjtlLkRlY3lyaWxsaWM9MTA0NDtlLkRlaWNvcHRpYz0xMDA2O2UuRGVsdGE9ODcxMDtlLkRlbHRhZ3JlZWs9OTE2O2UuRGhvb2s9Mzk0O2UuRGllcmVzaXM9NjMxNzk7ZS5EaWVyZXNpc0FjdXRlPTYzMTgwO2UuRGllcmVzaXNHcmF2ZT02MzE4MTtlLkRpZXJlc2lzc21hbGw9NjM0MDA7ZS5EaWdhbW1hZ3JlZWs9OTg4O2UuRGplY3lyaWxsaWM9MTAyNjtlLkRsaW5lYmVsb3c9NzY5NDtlLkRtb25vc3BhY2U9NjUzMTY7ZS5Eb3RhY2NlbnRzbWFsbD02MzIyMztlLkRzbGFzaD0yNzI7ZS5Ec21hbGw9NjMzMzI7ZS5EdG9wYmFyPTM5NTtlLkR6PTQ5ODtlLkR6Y2Fyb249NDUzO2UuRHplYWJraGFzaWFuY3lyaWxsaWM9MTI0ODtlLkR6ZWN5cmlsbGljPTEwMjk7ZS5EemhlY3lyaWxsaWM9MTAzOTtlLkU9Njk7ZS5FYWN1dGU9MjAxO2UuRWFjdXRlc21hbGw9NjM0NjU7ZS5FYnJldmU9Mjc2O2UuRWNhcm9uPTI4MjtlLkVjZWRpbGxhYnJldmU9NzcwODtlLkVjaGFybWVuaWFuPTEzMzM7ZS5FY2lyY2xlPTk0MDI7ZS5FY2lyY3VtZmxleD0yMDI7ZS5FY2lyY3VtZmxleGFjdXRlPTc4NzA7ZS5FY2lyY3VtZmxleGJlbG93PTc3MDQ7ZS5FY2lyY3VtZmxleGRvdGJlbG93PTc4Nzg7ZS5FY2lyY3VtZmxleGdyYXZlPTc4NzI7ZS5FY2lyY3VtZmxleGhvb2thYm92ZT03ODc0O2UuRWNpcmN1bWZsZXhzbWFsbD02MzQ2NjtlLkVjaXJjdW1mbGV4dGlsZGU9Nzg3NjtlLkVjeXJpbGxpYz0xMDI4O2UuRWRibGdyYXZlPTUxNjtlLkVkaWVyZXNpcz0yMDM7ZS5FZGllcmVzaXNzbWFsbD02MzQ2NztlLkVkb3Q9Mjc4O2UuRWRvdGFjY2VudD0yNzg7ZS5FZG90YmVsb3c9Nzg2NDtlLkVmY3lyaWxsaWM9MTA2MDtlLkVncmF2ZT0yMDA7ZS5FZ3JhdmVzbWFsbD02MzQ2NDtlLkVoYXJtZW5pYW49MTMzNTtlLkVob29rYWJvdmU9Nzg2NjtlLkVpZ2h0cm9tYW49ODU1MTtlLkVpbnZlcnRlZGJyZXZlPTUxODtlLkVpb3RpZmllZGN5cmlsbGljPTExMjQ7ZS5FbGN5cmlsbGljPTEwNTE7ZS5FbGV2ZW5yb21hbj04NTU0O2UuRW1hY3Jvbj0yNzQ7ZS5FbWFjcm9uYWN1dGU9NzcwMjtlLkVtYWNyb25ncmF2ZT03NzAwO2UuRW1jeXJpbGxpYz0xMDUyO2UuRW1vbm9zcGFjZT02NTMxNztlLkVuY3lyaWxsaWM9MTA1MztlLkVuZGVzY2VuZGVyY3lyaWxsaWM9MTE4NjtlLkVuZz0zMzA7ZS5FbmdoZWN5cmlsbGljPTExODg7ZS5Fbmhvb2tjeXJpbGxpYz0xMjIzO2UuRW9nb25laz0yODA7ZS5Fb3Blbj00MDA7ZS5FcHNpbG9uPTkxNztlLkVwc2lsb250b25vcz05MDQ7ZS5FcmN5cmlsbGljPTEwNTY7ZS5FcmV2ZXJzZWQ9Mzk4O2UuRXJldmVyc2VkY3lyaWxsaWM9MTA2OTtlLkVzY3lyaWxsaWM9MTA1NztlLkVzZGVzY2VuZGVyY3lyaWxsaWM9MTE5NDtlLkVzaD00MjU7ZS5Fc21hbGw9NjMzMzM7ZS5FdGE9OTE5O2UuRXRhcm1lbmlhbj0xMzM2O2UuRXRhdG9ub3M9OTA1O2UuRXRoPTIwODtlLkV0aHNtYWxsPTYzNDcyO2UuRXRpbGRlPTc4Njg7ZS5FdGlsZGViZWxvdz03NzA2O2UuRXVybz04MzY0O2UuRXpoPTQzOTtlLkV6aGNhcm9uPTQ5NDtlLkV6aHJldmVyc2VkPTQ0MDtlLkY9NzA7ZS5GY2lyY2xlPTk0MDM7ZS5GZG90YWNjZW50PTc3MTA7ZS5GZWhhcm1lbmlhbj0xMzY2O2UuRmVpY29wdGljPTk5NjtlLkZob29rPTQwMTtlLkZpdGFjeXJpbGxpYz0xMTM4O2UuRml2ZXJvbWFuPTg1NDg7ZS5GbW9ub3NwYWNlPTY1MzE4O2UuRm91cnJvbWFuPTg1NDc7ZS5Gc21hbGw9NjMzMzQ7ZS5HPTcxO2UuR0JzcXVhcmU9MTMxOTE7ZS5HYWN1dGU9NTAwO2UuR2FtbWE9OTE1O2UuR2FtbWFhZnJpY2FuPTQwNDtlLkdhbmdpYWNvcHRpYz0xMDAyO2UuR2JyZXZlPTI4NjtlLkdjYXJvbj00ODY7ZS5HY2VkaWxsYT0yOTA7ZS5HY2lyY2xlPTk0MDQ7ZS5HY2lyY3VtZmxleD0yODQ7ZS5HY29tbWFhY2NlbnQ9MjkwO2UuR2RvdD0yODg7ZS5HZG90YWNjZW50PTI4ODtlLkdlY3lyaWxsaWM9MTA0MztlLkdoYWRhcm1lbmlhbj0xMzQ2O2UuR2hlbWlkZGxlaG9va2N5cmlsbGljPTExNzI7ZS5HaGVzdHJva2VjeXJpbGxpYz0xMTcwO2UuR2hldXB0dXJuY3lyaWxsaWM9MTE2ODtlLkdob29rPTQwMztlLkdpbWFybWVuaWFuPTEzMzE7ZS5HamVjeXJpbGxpYz0xMDI3O2UuR21hY3Jvbj03NzEyO2UuR21vbm9zcGFjZT02NTMxOTtlLkdyYXZlPTYzMTgyO2UuR3JhdmVzbWFsbD02MzMyODtlLkdzbWFsbD02MzMzNTtlLkdzbWFsbGhvb2s9NjY3O2UuR3N0cm9rZT00ODQ7ZS5IPTcyO2UuSDE4NTMzPTk2Nzk7ZS5IMTg1NDM9OTY0MjtlLkgxODU1MT05NjQzO2UuSDIyMDczPTk2MzM7ZS5IUHNxdWFyZT0xMzI1OTtlLkhhYWJraGFzaWFuY3lyaWxsaWM9MTE5MjtlLkhhZGVzY2VuZGVyY3lyaWxsaWM9MTIwMjtlLkhhcmRzaWduY3lyaWxsaWM9MTA2NjtlLkhiYXI9Mjk0O2UuSGJyZXZlYmVsb3c9NzcyMjtlLkhjZWRpbGxhPTc3MjA7ZS5IY2lyY2xlPTk0MDU7ZS5IY2lyY3VtZmxleD0yOTI7ZS5IZGllcmVzaXM9NzcxODtlLkhkb3RhY2NlbnQ9NzcxNDtlLkhkb3RiZWxvdz03NzE2O2UuSG1vbm9zcGFjZT02NTMyMDtlLkhvYXJtZW5pYW49MTM0NDtlLkhvcmljb3B0aWM9MWUzO2UuSHNtYWxsPTYzMzM2O2UuSHVuZ2FydW1sYXV0PTYzMTgzO2UuSHVuZ2FydW1sYXV0c21hbGw9NjMyMjQ7ZS5IenNxdWFyZT0xMzIwMDtlLkk9NzM7ZS5JQWN5cmlsbGljPTEwNzE7ZS5JSj0zMDY7ZS5JVWN5cmlsbGljPTEwNzA7ZS5JYWN1dGU9MjA1O2UuSWFjdXRlc21hbGw9NjM0Njk7ZS5JYnJldmU9MzAwO2UuSWNhcm9uPTQ2MztlLkljaXJjbGU9OTQwNjtlLkljaXJjdW1mbGV4PTIwNjtlLkljaXJjdW1mbGV4c21hbGw9NjM0NzA7ZS5JY3lyaWxsaWM9MTAzMDtlLklkYmxncmF2ZT01MjA7ZS5JZGllcmVzaXM9MjA3O2UuSWRpZXJlc2lzYWN1dGU9NzcyNjtlLklkaWVyZXNpc2N5cmlsbGljPTEyNTI7ZS5JZGllcmVzaXNzbWFsbD02MzQ3MTtlLklkb3Q9MzA0O2UuSWRvdGFjY2VudD0zMDQ7ZS5JZG90YmVsb3c9Nzg4MjtlLkllYnJldmVjeXJpbGxpYz0xMjM4O2UuSWVjeXJpbGxpYz0xMDQ1O2UuSWZyYWt0dXI9ODQ2NTtlLklncmF2ZT0yMDQ7ZS5JZ3JhdmVzbWFsbD02MzQ2ODtlLklob29rYWJvdmU9Nzg4MDtlLklpY3lyaWxsaWM9MTA0ODtlLklpbnZlcnRlZGJyZXZlPTUyMjtlLklpc2hvcnRjeXJpbGxpYz0xMDQ5O2UuSW1hY3Jvbj0yOTg7ZS5JbWFjcm9uY3lyaWxsaWM9MTI1MDtlLkltb25vc3BhY2U9NjUzMjE7ZS5Jbmlhcm1lbmlhbj0xMzM5O2UuSW9jeXJpbGxpYz0xMDI1O2UuSW9nb25laz0zMDI7ZS5Jb3RhPTkyMTtlLklvdGFhZnJpY2FuPTQwNjtlLklvdGFkaWVyZXNpcz05Mzg7ZS5Jb3RhdG9ub3M9OTA2O2UuSXNtYWxsPTYzMzM3O2UuSXN0cm9rZT00MDc7ZS5JdGlsZGU9Mjk2O2UuSXRpbGRlYmVsb3c9NzcyNDtlLkl6aGl0c2FjeXJpbGxpYz0xMTQwO2UuSXpoaXRzYWRibGdyYXZlY3lyaWxsaWM9MTE0MjtlLko9NzQ7ZS5KYWFybWVuaWFuPTEzNDU7ZS5KY2lyY2xlPTk0MDc7ZS5KY2lyY3VtZmxleD0zMDg7ZS5KZWN5cmlsbGljPTEwMzI7ZS5KaGVoYXJtZW5pYW49MTM1NTtlLkptb25vc3BhY2U9NjUzMjI7ZS5Kc21hbGw9NjMzMzg7ZS5LPTc1O2UuS0JzcXVhcmU9MTMxODk7ZS5LS3NxdWFyZT0xMzI2MTtlLkthYmFzaGtpcmN5cmlsbGljPTExODQ7ZS5LYWN1dGU9NzcyODtlLkthY3lyaWxsaWM9MTA1MDtlLkthZGVzY2VuZGVyY3lyaWxsaWM9MTE3ODtlLkthaG9va2N5cmlsbGljPTEyMTk7ZS5LYXBwYT05MjI7ZS5LYXN0cm9rZWN5cmlsbGljPTExODI7ZS5LYXZlcnRpY2Fsc3Ryb2tlY3lyaWxsaWM9MTE4MDtlLktjYXJvbj00ODg7ZS5LY2VkaWxsYT0zMTA7ZS5LY2lyY2xlPTk0MDg7ZS5LY29tbWFhY2NlbnQ9MzEwO2UuS2RvdGJlbG93PTc3MzA7ZS5LZWhhcm1lbmlhbj0xMzY0O2UuS2VuYXJtZW5pYW49MTM0MztlLktoYWN5cmlsbGljPTEwNjE7ZS5LaGVpY29wdGljPTk5ODtlLktob29rPTQwODtlLktqZWN5cmlsbGljPTEwMzY7ZS5LbGluZWJlbG93PTc3MzI7ZS5LbW9ub3NwYWNlPTY1MzIzO2UuS29wcGFjeXJpbGxpYz0xMTUyO2UuS29wcGFncmVlaz05OTA7ZS5Lc2ljeXJpbGxpYz0xMTM0O2UuS3NtYWxsPTYzMzM5O2UuTD03NjtlLkxKPTQ1NTtlLkxMPTYzMTY3O2UuTGFjdXRlPTMxMztlLkxhbWJkYT05MjM7ZS5MY2Fyb249MzE3O2UuTGNlZGlsbGE9MzE1O2UuTGNpcmNsZT05NDA5O2UuTGNpcmN1bWZsZXhiZWxvdz03NzQwO2UuTGNvbW1hYWNjZW50PTMxNTtlLkxkb3Q9MzE5O2UuTGRvdGFjY2VudD0zMTk7ZS5MZG90YmVsb3c9NzczNDtlLkxkb3RiZWxvd21hY3Jvbj03NzM2O2UuTGl3bmFybWVuaWFuPTEzNDA7ZS5Maj00NTY7ZS5MamVjeXJpbGxpYz0xMDMzO2UuTGxpbmViZWxvdz03NzM4O2UuTG1vbm9zcGFjZT02NTMyNDtlLkxzbGFzaD0zMjE7ZS5Mc2xhc2hzbWFsbD02MzIyNTtlLkxzbWFsbD02MzM0MDtlLk09Nzc7ZS5NQnNxdWFyZT0xMzE5MDtlLk1hY3Jvbj02MzE4NDtlLk1hY3JvbnNtYWxsPTYzNDA3O2UuTWFjdXRlPTc3NDI7ZS5NY2lyY2xlPTk0MTA7ZS5NZG90YWNjZW50PTc3NDQ7ZS5NZG90YmVsb3c9Nzc0NjtlLk1lbmFybWVuaWFuPTEzNDg7ZS5NbW9ub3NwYWNlPTY1MzI1O2UuTXNtYWxsPTYzMzQxO2UuTXR1cm5lZD00MTI7ZS5NdT05MjQ7ZS5OPTc4O2UuTko9NDU4O2UuTmFjdXRlPTMyMztlLk5jYXJvbj0zMjc7ZS5OY2VkaWxsYT0zMjU7ZS5OY2lyY2xlPTk0MTE7ZS5OY2lyY3VtZmxleGJlbG93PTc3NTQ7ZS5OY29tbWFhY2NlbnQ9MzI1O2UuTmRvdGFjY2VudD03NzQ4O2UuTmRvdGJlbG93PTc3NTA7ZS5OaG9va2xlZnQ9NDEzO2UuTmluZXJvbWFuPTg1NTI7ZS5Oaj00NTk7ZS5OamVjeXJpbGxpYz0xMDM0O2UuTmxpbmViZWxvdz03NzUyO2UuTm1vbm9zcGFjZT02NTMyNjtlLk5vd2FybWVuaWFuPTEzNTA7ZS5Oc21hbGw9NjMzNDI7ZS5OdGlsZGU9MjA5O2UuTnRpbGRlc21hbGw9NjM0NzM7ZS5OdT05MjU7ZS5PPTc5O2UuT0U9MzM4O2UuT0VzbWFsbD02MzIyNjtlLk9hY3V0ZT0yMTE7ZS5PYWN1dGVzbWFsbD02MzQ3NTtlLk9iYXJyZWRjeXJpbGxpYz0xMjU2O2UuT2JhcnJlZGRpZXJlc2lzY3lyaWxsaWM9MTI1ODtlLk9icmV2ZT0zMzQ7ZS5PY2Fyb249NDY1O2UuT2NlbnRlcmVkdGlsZGU9NDE1O2UuT2NpcmNsZT05NDEyO2UuT2NpcmN1bWZsZXg9MjEyO2UuT2NpcmN1bWZsZXhhY3V0ZT03ODg4O2UuT2NpcmN1bWZsZXhkb3RiZWxvdz03ODk2O2UuT2NpcmN1bWZsZXhncmF2ZT03ODkwO2UuT2NpcmN1bWZsZXhob29rYWJvdmU9Nzg5MjtlLk9jaXJjdW1mbGV4c21hbGw9NjM0NzY7ZS5PY2lyY3VtZmxleHRpbGRlPTc4OTQ7ZS5PY3lyaWxsaWM9MTA1NDtlLk9kYmxhY3V0ZT0zMzY7ZS5PZGJsZ3JhdmU9NTI0O2UuT2RpZXJlc2lzPTIxNDtlLk9kaWVyZXNpc2N5cmlsbGljPTEyNTQ7ZS5PZGllcmVzaXNzbWFsbD02MzQ3ODtlLk9kb3RiZWxvdz03ODg0O2UuT2dvbmVrc21hbGw9NjMyMjc7ZS5PZ3JhdmU9MjEwO2UuT2dyYXZlc21hbGw9NjM0NzQ7ZS5PaGFybWVuaWFuPTEzNjU7ZS5PaG09ODQ4NjtlLk9ob29rYWJvdmU9Nzg4NjtlLk9ob3JuPTQxNjtlLk9ob3JuYWN1dGU9Nzg5ODtlLk9ob3JuZG90YmVsb3c9NzkwNjtlLk9ob3JuZ3JhdmU9NzkwMDtlLk9ob3JuaG9va2Fib3ZlPTc5MDI7ZS5PaG9ybnRpbGRlPTc5MDQ7ZS5PaHVuZ2FydW1sYXV0PTMzNjtlLk9pPTQxODtlLk9pbnZlcnRlZGJyZXZlPTUyNjtlLk9tYWNyb249MzMyO2UuT21hY3JvbmFjdXRlPTc3NjI7ZS5PbWFjcm9uZ3JhdmU9Nzc2MDtlLk9tZWdhPTg0ODY7ZS5PbWVnYWN5cmlsbGljPTExMjA7ZS5PbWVnYWdyZWVrPTkzNztlLk9tZWdhcm91bmRjeXJpbGxpYz0xMTQ2O2UuT21lZ2F0aXRsb2N5cmlsbGljPTExNDg7ZS5PbWVnYXRvbm9zPTkxMTtlLk9taWNyb249OTI3O2UuT21pY3JvbnRvbm9zPTkwODtlLk9tb25vc3BhY2U9NjUzMjc7ZS5PbmVyb21hbj04NTQ0O2UuT29nb25laz00OTA7ZS5Pb2dvbmVrbWFjcm9uPTQ5MjtlLk9vcGVuPTM5MDtlLk9zbGFzaD0yMTY7ZS5Pc2xhc2hhY3V0ZT01MTA7ZS5Pc2xhc2hzbWFsbD02MzQ4MDtlLk9zbWFsbD02MzM0MztlLk9zdHJva2VhY3V0ZT01MTA7ZS5PdGN5cmlsbGljPTExNTA7ZS5PdGlsZGU9MjEzO2UuT3RpbGRlYWN1dGU9Nzc1NjtlLk90aWxkZWRpZXJlc2lzPTc3NTg7ZS5PdGlsZGVzbWFsbD02MzQ3NztlLlA9ODA7ZS5QYWN1dGU9Nzc2NDtlLlBjaXJjbGU9OTQxMztlLlBkb3RhY2NlbnQ9Nzc2NjtlLlBlY3lyaWxsaWM9MTA1NTtlLlBlaGFybWVuaWFuPTEzNTQ7ZS5QZW1pZGRsZWhvb2tjeXJpbGxpYz0xMTkwO2UuUGhpPTkzNDtlLlBob29rPTQyMDtlLlBpPTkyODtlLlBpd3Jhcm1lbmlhbj0xMzYzO2UuUG1vbm9zcGFjZT02NTMyODtlLlBzaT05MzY7ZS5Qc2ljeXJpbGxpYz0xMTM2O2UuUHNtYWxsPTYzMzQ0O2UuUT04MTtlLlFjaXJjbGU9OTQxNDtlLlFtb25vc3BhY2U9NjUzMjk7ZS5Rc21hbGw9NjMzNDU7ZS5SPTgyO2UuUmFhcm1lbmlhbj0xMzU2O2UuUmFjdXRlPTM0MDtlLlJjYXJvbj0zNDQ7ZS5SY2VkaWxsYT0zNDI7ZS5SY2lyY2xlPTk0MTU7ZS5SY29tbWFhY2NlbnQ9MzQyO2UuUmRibGdyYXZlPTUyODtlLlJkb3RhY2NlbnQ9Nzc2ODtlLlJkb3RiZWxvdz03NzcwO2UuUmRvdGJlbG93bWFjcm9uPTc3NzI7ZS5SZWhhcm1lbmlhbj0xMzYwO2UuUmZyYWt0dXI9ODQ3NjtlLlJobz05Mjk7ZS5SaW5nc21hbGw9NjMyMjg7ZS5SaW52ZXJ0ZWRicmV2ZT01MzA7ZS5SbGluZWJlbG93PTc3NzQ7ZS5SbW9ub3NwYWNlPTY1MzMwO2UuUnNtYWxsPTYzMzQ2O2UuUnNtYWxsaW52ZXJ0ZWQ9NjQxO2UuUnNtYWxsaW52ZXJ0ZWRzdXBlcmlvcj02OTQ7ZS5TPTgzO2UuU0YwMTAwMDA9OTQ4NDtlLlNGMDIwMDAwPTk0OTI7ZS5TRjAzMDAwMD05NDg4O2UuU0YwNDAwMDA9OTQ5NjtlLlNGMDUwMDAwPTk1MzI7ZS5TRjA2MDAwMD05NTE2O2UuU0YwNzAwMDA9OTUyNDtlLlNGMDgwMDAwPTk1MDA7ZS5TRjA5MDAwMD05NTA4O2UuU0YxMDAwMDA9OTQ3MjtlLlNGMTEwMDAwPTk0NzQ7ZS5TRjE5MDAwMD05NTY5O2UuU0YyMDAwMDA9OTU3MDtlLlNGMjEwMDAwPTk1NTg7ZS5TRjIyMDAwMD05NTU3O2UuU0YyMzAwMDA9OTU3MTtlLlNGMjQwMDAwPTk1NTM7ZS5TRjI1MDAwMD05NTU5O2UuU0YyNjAwMDA9OTU2NTtlLlNGMjcwMDAwPTk1NjQ7ZS5TRjI4MDAwMD05NTYzO2UuU0YzNjAwMDA9OTU2NjtlLlNGMzcwMDAwPTk1Njc7ZS5TRjM4MDAwMD05NTYyO2UuU0YzOTAwMDA9OTU1NjtlLlNGNDAwMDAwPTk1Nzc7ZS5TRjQxMDAwMD05NTc0O2UuU0Y0MjAwMDA9OTU2ODtlLlNGNDMwMDAwPTk1NTI7ZS5TRjQ0MDAwMD05NTgwO2UuU0Y0NTAwMDA9OTU3NTtlLlNGNDYwMDAwPTk1NzY7ZS5TRjQ3MDAwMD05NTcyO2UuU0Y0ODAwMDA9OTU3MztlLlNGNDkwMDAwPTk1NjE7ZS5TRjUwMDAwMD05NTYwO2UuU0Y1MTAwMDA9OTU1NDtlLlNGNTIwMDAwPTk1NTU7ZS5TRjUzMDAwMD05NTc5O2UuU0Y1NDAwMDA9OTU3ODtlLlNhY3V0ZT0zNDY7ZS5TYWN1dGVkb3RhY2NlbnQ9Nzc4MDtlLlNhbXBpZ3JlZWs9OTkyO2UuU2Nhcm9uPTM1MjtlLlNjYXJvbmRvdGFjY2VudD03NzgyO2UuU2Nhcm9uc21hbGw9NjMyMjk7ZS5TY2VkaWxsYT0zNTA7ZS5TY2h3YT0zOTk7ZS5TY2h3YWN5cmlsbGljPTEyNDA7ZS5TY2h3YWRpZXJlc2lzY3lyaWxsaWM9MTI0MjtlLlNjaXJjbGU9OTQxNjtlLlNjaXJjdW1mbGV4PTM0ODtlLlNjb21tYWFjY2VudD01MzY7ZS5TZG90YWNjZW50PTc3NzY7ZS5TZG90YmVsb3c9Nzc3ODtlLlNkb3RiZWxvd2RvdGFjY2VudD03Nzg0O2UuU2VoYXJtZW5pYW49MTM1NztlLlNldmVucm9tYW49ODU1MDtlLlNoYWFybWVuaWFuPTEzNTE7ZS5TaGFjeXJpbGxpYz0xMDY0O2UuU2hjaGFjeXJpbGxpYz0xMDY1O2UuU2hlaWNvcHRpYz05OTQ7ZS5TaGhhY3lyaWxsaWM9MTIxMDtlLlNoaW1hY29wdGljPTEwMDQ7ZS5TaWdtYT05MzE7ZS5TaXhyb21hbj04NTQ5O2UuU21vbm9zcGFjZT02NTMzMTtlLlNvZnRzaWduY3lyaWxsaWM9MTA2ODtlLlNzbWFsbD02MzM0NztlLlN0aWdtYWdyZWVrPTk4NjtlLlQ9ODQ7ZS5UYXU9OTMyO2UuVGJhcj0zNTg7ZS5UY2Fyb249MzU2O2UuVGNlZGlsbGE9MzU0O2UuVGNpcmNsZT05NDE3O2UuVGNpcmN1bWZsZXhiZWxvdz03NzkyO2UuVGNvbW1hYWNjZW50PTM1NDtlLlRkb3RhY2NlbnQ9Nzc4NjtlLlRkb3RiZWxvdz03Nzg4O2UuVGVjeXJpbGxpYz0xMDU4O2UuVGVkZXNjZW5kZXJjeXJpbGxpYz0xMTk2O2UuVGVucm9tYW49ODU1MztlLlRldHNlY3lyaWxsaWM9MTIwNDtlLlRoZXRhPTkyMDtlLlRob29rPTQyODtlLlRob3JuPTIyMjtlLlRob3Juc21hbGw9NjM0ODY7ZS5UaHJlZXJvbWFuPTg1NDY7ZS5UaWxkZXNtYWxsPTYzMjMwO2UuVGl3bmFybWVuaWFuPTEzNTk7ZS5UbGluZWJlbG93PTc3OTA7ZS5UbW9ub3NwYWNlPTY1MzMyO2UuVG9hcm1lbmlhbj0xMzM3O2UuVG9uZWZpdmU9NDQ0O2UuVG9uZXNpeD0zODg7ZS5Ub25ldHdvPTQyMztlLlRyZXRyb2ZsZXhob29rPTQzMDtlLlRzZWN5cmlsbGljPTEwNjI7ZS5Uc2hlY3lyaWxsaWM9MTAzNTtlLlRzbWFsbD02MzM0ODtlLlR3ZWx2ZXJvbWFuPTg1NTU7ZS5Ud29yb21hbj04NTQ1O2UuVT04NTtlLlVhY3V0ZT0yMTg7ZS5VYWN1dGVzbWFsbD02MzQ4MjtlLlVicmV2ZT0zNjQ7ZS5VY2Fyb249NDY3O2UuVWNpcmNsZT05NDE4O2UuVWNpcmN1bWZsZXg9MjE5O2UuVWNpcmN1bWZsZXhiZWxvdz03Nzk4O2UuVWNpcmN1bWZsZXhzbWFsbD02MzQ4MztlLlVjeXJpbGxpYz0xMDU5O2UuVWRibGFjdXRlPTM2ODtlLlVkYmxncmF2ZT01MzI7ZS5VZGllcmVzaXM9MjIwO2UuVWRpZXJlc2lzYWN1dGU9NDcxO2UuVWRpZXJlc2lzYmVsb3c9Nzc5NDtlLlVkaWVyZXNpc2Nhcm9uPTQ3MztlLlVkaWVyZXNpc2N5cmlsbGljPTEyNjQ7ZS5VZGllcmVzaXNncmF2ZT00NzU7ZS5VZGllcmVzaXNtYWNyb249NDY5O2UuVWRpZXJlc2lzc21hbGw9NjM0ODQ7ZS5VZG90YmVsb3c9NzkwODtlLlVncmF2ZT0yMTc7ZS5VZ3JhdmVzbWFsbD02MzQ4MTtlLlVob29rYWJvdmU9NzkxMDtlLlVob3JuPTQzMTtlLlVob3JuYWN1dGU9NzkxMjtlLlVob3JuZG90YmVsb3c9NzkyMDtlLlVob3JuZ3JhdmU9NzkxNDtlLlVob3JuaG9va2Fib3ZlPTc5MTY7ZS5VaG9ybnRpbGRlPTc5MTg7ZS5VaHVuZ2FydW1sYXV0PTM2ODtlLlVodW5nYXJ1bWxhdXRjeXJpbGxpYz0xMjY2O2UuVWludmVydGVkYnJldmU9NTM0O2UuVWtjeXJpbGxpYz0xMTQ0O2UuVW1hY3Jvbj0zNjI7ZS5VbWFjcm9uY3lyaWxsaWM9MTI2MjtlLlVtYWNyb25kaWVyZXNpcz03ODAyO2UuVW1vbm9zcGFjZT02NTMzMztlLlVvZ29uZWs9MzcwO2UuVXBzaWxvbj05MzM7ZS5VcHNpbG9uMT05Nzg7ZS5VcHNpbG9uYWN1dGVob29rc3ltYm9sZ3JlZWs9OTc5O2UuVXBzaWxvbmFmcmljYW49NDMzO2UuVXBzaWxvbmRpZXJlc2lzPTkzOTtlLlVwc2lsb25kaWVyZXNpc2hvb2tzeW1ib2xncmVlaz05ODA7ZS5VcHNpbG9uaG9va3N5bWJvbD05Nzg7ZS5VcHNpbG9udG9ub3M9OTEwO2UuVXJpbmc9MzY2O2UuVXNob3J0Y3lyaWxsaWM9MTAzODtlLlVzbWFsbD02MzM0OTtlLlVzdHJhaWdodGN5cmlsbGljPTExOTg7ZS5Vc3RyYWlnaHRzdHJva2VjeXJpbGxpYz0xMjAwO2UuVXRpbGRlPTM2MDtlLlV0aWxkZWFjdXRlPTc4MDA7ZS5VdGlsZGViZWxvdz03Nzk2O2UuVj04NjtlLlZjaXJjbGU9OTQxOTtlLlZkb3RiZWxvdz03ODA2O2UuVmVjeXJpbGxpYz0xMDQyO2UuVmV3YXJtZW5pYW49MTM1ODtlLlZob29rPTQzNDtlLlZtb25vc3BhY2U9NjUzMzQ7ZS5Wb2FybWVuaWFuPTEzNTI7ZS5Wc21hbGw9NjMzNTA7ZS5WdGlsZGU9NzgwNDtlLlc9ODc7ZS5XYWN1dGU9NzgxMDtlLldjaXJjbGU9OTQyMDtlLldjaXJjdW1mbGV4PTM3MjtlLldkaWVyZXNpcz03ODEyO2UuV2RvdGFjY2VudD03ODE0O2UuV2RvdGJlbG93PTc4MTY7ZS5XZ3JhdmU9NzgwODtlLldtb25vc3BhY2U9NjUzMzU7ZS5Xc21hbGw9NjMzNTE7ZS5YPTg4O2UuWGNpcmNsZT05NDIxO2UuWGRpZXJlc2lzPTc4MjA7ZS5YZG90YWNjZW50PTc4MTg7ZS5YZWhhcm1lbmlhbj0xMzQxO2UuWGk9OTI2O2UuWG1vbm9zcGFjZT02NTMzNjtlLlhzbWFsbD02MzM1MjtlLlk9ODk7ZS5ZYWN1dGU9MjIxO2UuWWFjdXRlc21hbGw9NjM0ODU7ZS5ZYXRjeXJpbGxpYz0xMTIyO2UuWWNpcmNsZT05NDIyO2UuWWNpcmN1bWZsZXg9Mzc0O2UuWWRpZXJlc2lzPTM3NjtlLllkaWVyZXNpc3NtYWxsPTYzNDg3O2UuWWRvdGFjY2VudD03ODIyO2UuWWRvdGJlbG93PTc5MjQ7ZS5ZZXJpY3lyaWxsaWM9MTA2NztlLlllcnVkaWVyZXNpc2N5cmlsbGljPTEyNzI7ZS5ZZ3JhdmU9NzkyMjtlLllob29rPTQzNTtlLllob29rYWJvdmU9NzkyNjtlLllpYXJtZW5pYW49MTM0OTtlLllpY3lyaWxsaWM9MTAzMTtlLllpd25hcm1lbmlhbj0xMzYyO2UuWW1vbm9zcGFjZT02NTMzNztlLllzbWFsbD02MzM1MztlLll0aWxkZT03OTI4O2UuWXVzYmlnY3lyaWxsaWM9MTEzMDtlLll1c2JpZ2lvdGlmaWVkY3lyaWxsaWM9MTEzMjtlLll1c2xpdHRsZWN5cmlsbGljPTExMjY7ZS5ZdXNsaXR0bGVpb3RpZmllZGN5cmlsbGljPTExMjg7ZS5aPTkwO2UuWmFhcm1lbmlhbj0xMzM0O2UuWmFjdXRlPTM3NztlLlpjYXJvbj0zODE7ZS5aY2Fyb25zbWFsbD02MzIzMTtlLlpjaXJjbGU9OTQyMztlLlpjaXJjdW1mbGV4PTc4MjQ7ZS5aZG90PTM3OTtlLlpkb3RhY2NlbnQ9Mzc5O2UuWmRvdGJlbG93PTc4MjY7ZS5aZWN5cmlsbGljPTEwNDc7ZS5aZWRlc2NlbmRlcmN5cmlsbGljPTExNzY7ZS5aZWRpZXJlc2lzY3lyaWxsaWM9MTI0NjtlLlpldGE9OTE4O2UuWmhlYXJtZW5pYW49MTMzODtlLlpoZWJyZXZlY3lyaWxsaWM9MTIxNztlLlpoZWN5cmlsbGljPTEwNDY7ZS5aaGVkZXNjZW5kZXJjeXJpbGxpYz0xMTc0O2UuWmhlZGllcmVzaXNjeXJpbGxpYz0xMjQ0O2UuWmxpbmViZWxvdz03ODI4O2UuWm1vbm9zcGFjZT02NTMzODtlLlpzbWFsbD02MzM1NDtlLlpzdHJva2U9NDM3O2UuYT05NztlLmFhYmVuZ2FsaT0yNDM4O2UuYWFjdXRlPTIyNTtlLmFhZGV2YT0yMzEwO2UuYWFndWphcmF0aT0yNjk0O2UuYWFndXJtdWtoaT0yNTY2O2UuYWFtYXRyYWd1cm11a2hpPTI2MjI7ZS5hYXJ1c3F1YXJlPTEzMDU5O2UuYWF2b3dlbHNpZ25iZW5nYWxpPTI0OTQ7ZS5hYXZvd2Vsc2lnbmRldmE9MjM2NjtlLmFhdm93ZWxzaWduZ3VqYXJhdGk9Mjc1MDtlLmFiYnJldmlhdGlvbm1hcmthcm1lbmlhbj0xMzc1O2UuYWJicmV2aWF0aW9uc2lnbmRldmE9MjQxNjtlLmFiZW5nYWxpPTI0Mzc7ZS5hYm9wb21vZm89MTI1NzA7ZS5hYnJldmU9MjU5O2UuYWJyZXZlYWN1dGU9Nzg1NTtlLmFicmV2ZWN5cmlsbGljPTEyMzM7ZS5hYnJldmVkb3RiZWxvdz03ODYzO2UuYWJyZXZlZ3JhdmU9Nzg1NztlLmFicmV2ZWhvb2thYm92ZT03ODU5O2UuYWJyZXZldGlsZGU9Nzg2MTtlLmFjYXJvbj00NjI7ZS5hY2lyY2xlPTk0MjQ7ZS5hY2lyY3VtZmxleD0yMjY7ZS5hY2lyY3VtZmxleGFjdXRlPTc4NDU7ZS5hY2lyY3VtZmxleGRvdGJlbG93PTc4NTM7ZS5hY2lyY3VtZmxleGdyYXZlPTc4NDc7ZS5hY2lyY3VtZmxleGhvb2thYm92ZT03ODQ5O2UuYWNpcmN1bWZsZXh0aWxkZT03ODUxO2UuYWN1dGU9MTgwO2UuYWN1dGViZWxvd2NtYj03OTE7ZS5hY3V0ZWNtYj03Njk7ZS5hY3V0ZWNvbWI9NzY5O2UuYWN1dGVkZXZhPTIzODg7ZS5hY3V0ZWxvd21vZD03MTk7ZS5hY3V0ZXRvbmVjbWI9ODMzO2UuYWN5cmlsbGljPTEwNzI7ZS5hZGJsZ3JhdmU9NTEzO2UuYWRkYWtndXJtdWtoaT0yNjczO2UuYWRldmE9MjMwOTtlLmFkaWVyZXNpcz0yMjg7ZS5hZGllcmVzaXNjeXJpbGxpYz0xMjM1O2UuYWRpZXJlc2lzbWFjcm9uPTQ3OTtlLmFkb3RiZWxvdz03ODQxO2UuYWRvdG1hY3Jvbj00ODE7ZS5hZT0yMzA7ZS5hZWFjdXRlPTUwOTtlLmFla29yZWFuPTEyNjI0O2UuYWVtYWNyb249NDgzO2UuYWZpaTAwMjA4PTgyMTM7ZS5hZmlpMDg5NDE9ODM1NjtlLmFmaWkxMDAxNz0xMDQwO2UuYWZpaTEwMDE4PTEwNDE7ZS5hZmlpMTAwMTk9MTA0MjtlLmFmaWkxMDAyMD0xMDQzO2UuYWZpaTEwMDIxPTEwNDQ7ZS5hZmlpMTAwMjI9MTA0NTtlLmFmaWkxMDAyMz0xMDI1O2UuYWZpaTEwMDI0PTEwNDY7ZS5hZmlpMTAwMjU9MTA0NztlLmFmaWkxMDAyNj0xMDQ4O2UuYWZpaTEwMDI3PTEwNDk7ZS5hZmlpMTAwMjg9MTA1MDtlLmFmaWkxMDAyOT0xMDUxO2UuYWZpaTEwMDMwPTEwNTI7ZS5hZmlpMTAwMzE9MTA1MztlLmFmaWkxMDAzMj0xMDU0O2UuYWZpaTEwMDMzPTEwNTU7ZS5hZmlpMTAwMzQ9MTA1NjtlLmFmaWkxMDAzNT0xMDU3O2UuYWZpaTEwMDM2PTEwNTg7ZS5hZmlpMTAwMzc9MTA1OTtlLmFmaWkxMDAzOD0xMDYwO2UuYWZpaTEwMDM5PTEwNjE7ZS5hZmlpMTAwNDA9MTA2MjtlLmFmaWkxMDA0MT0xMDYzO2UuYWZpaTEwMDQyPTEwNjQ7ZS5hZmlpMTAwNDM9MTA2NTtlLmFmaWkxMDA0ND0xMDY2O2UuYWZpaTEwMDQ1PTEwNjc7ZS5hZmlpMTAwNDY9MTA2ODtlLmFmaWkxMDA0Nz0xMDY5O2UuYWZpaTEwMDQ4PTEwNzA7ZS5hZmlpMTAwNDk9MTA3MTtlLmFmaWkxMDA1MD0xMTY4O2UuYWZpaTEwMDUxPTEwMjY7ZS5hZmlpMTAwNTI9MTAyNztlLmFmaWkxMDA1Mz0xMDI4O2UuYWZpaTEwMDU0PTEwMjk7ZS5hZmlpMTAwNTU9MTAzMDtlLmFmaWkxMDA1Nj0xMDMxO2UuYWZpaTEwMDU3PTEwMzI7ZS5hZmlpMTAwNTg9MTAzMztlLmFmaWkxMDA1OT0xMDM0O2UuYWZpaTEwMDYwPTEwMzU7ZS5hZmlpMTAwNjE9MTAzNjtlLmFmaWkxMDA2Mj0xMDM4O2UuYWZpaTEwMDYzPTYzMTcyO2UuYWZpaTEwMDY0PTYzMTczO2UuYWZpaTEwMDY1PTEwNzI7ZS5hZmlpMTAwNjY9MTA3MztlLmFmaWkxMDA2Nz0xMDc0O2UuYWZpaTEwMDY4PTEwNzU7ZS5hZmlpMTAwNjk9MTA3NjtlLmFmaWkxMDA3MD0xMDc3O2UuYWZpaTEwMDcxPTExMDU7ZS5hZmlpMTAwNzI9MTA3ODtlLmFmaWkxMDA3Mz0xMDc5O2UuYWZpaTEwMDc0PTEwODA7ZS5hZmlpMTAwNzU9MTA4MTtlLmFmaWkxMDA3Nj0xMDgyO2UuYWZpaTEwMDc3PTEwODM7ZS5hZmlpMTAwNzg9MTA4NDtlLmFmaWkxMDA3OT0xMDg1O2UuYWZpaTEwMDgwPTEwODY7ZS5hZmlpMTAwODE9MTA4NztlLmFmaWkxMDA4Mj0xMDg4O2UuYWZpaTEwMDgzPTEwODk7ZS5hZmlpMTAwODQ9MTA5MDtlLmFmaWkxMDA4NT0xMDkxO2UuYWZpaTEwMDg2PTEwOTI7ZS5hZmlpMTAwODc9MTA5MztlLmFmaWkxMDA4OD0xMDk0O2UuYWZpaTEwMDg5PTEwOTU7ZS5hZmlpMTAwOTA9MTA5NjtlLmFmaWkxMDA5MT0xMDk3O2UuYWZpaTEwMDkyPTEwOTg7ZS5hZmlpMTAwOTM9MTA5OTtlLmFmaWkxMDA5ND0xMTAwO2UuYWZpaTEwMDk1PTExMDE7ZS5hZmlpMTAwOTY9MTEwMjtlLmFmaWkxMDA5Nz0xMTAzO2UuYWZpaTEwMDk4PTExNjk7ZS5hZmlpMTAwOTk9MTEwNjtlLmFmaWkxMDEwMD0xMTA3O2UuYWZpaTEwMTAxPTExMDg7ZS5hZmlpMTAxMDI9MTEwOTtlLmFmaWkxMDEwMz0xMTEwO2UuYWZpaTEwMTA0PTExMTE7ZS5hZmlpMTAxMDU9MTExMjtlLmFmaWkxMDEwNj0xMTEzO2UuYWZpaTEwMTA3PTExMTQ7ZS5hZmlpMTAxMDg9MTExNTtlLmFmaWkxMDEwOT0xMTE2O2UuYWZpaTEwMTEwPTExMTg7ZS5hZmlpMTAxNDU9MTAzOTtlLmFmaWkxMDE0Nj0xMTIyO2UuYWZpaTEwMTQ3PTExMzg7ZS5hZmlpMTAxNDg9MTE0MDtlLmFmaWkxMDE5Mj02MzE3NDtlLmFmaWkxMDE5Mz0xMTE5O2UuYWZpaTEwMTk0PTExMjM7ZS5hZmlpMTAxOTU9MTEzOTtlLmFmaWkxMDE5Nj0xMTQxO2UuYWZpaTEwODMxPTYzMTc1O2UuYWZpaTEwODMyPTYzMTc2O2UuYWZpaTEwODQ2PTEyNDE7ZS5hZmlpMjk5PTgyMDY7ZS5hZmlpMzAwPTgyMDc7ZS5hZmlpMzAxPTgyMDU7ZS5hZmlpNTczODE9MTY0MjtlLmFmaWk1NzM4OD0xNTQ4O2UuYWZpaTU3MzkyPTE2MzI7ZS5hZmlpNTczOTM9MTYzMztlLmFmaWk1NzM5ND0xNjM0O2UuYWZpaTU3Mzk1PTE2MzU7ZS5hZmlpNTczOTY9MTYzNjtlLmFmaWk1NzM5Nz0xNjM3O2UuYWZpaTU3Mzk4PTE2Mzg7ZS5hZmlpNTczOTk9MTYzOTtlLmFmaWk1NzQwMD0xNjQwO2UuYWZpaTU3NDAxPTE2NDE7ZS5hZmlpNTc0MDM9MTU2MztlLmFmaWk1NzQwNz0xNTY3O2UuYWZpaTU3NDA5PTE1Njk7ZS5hZmlpNTc0MTA9MTU3MDtlLmFmaWk1NzQxMT0xNTcxO2UuYWZpaTU3NDEyPTE1NzI7ZS5hZmlpNTc0MTM9MTU3MztlLmFmaWk1NzQxND0xNTc0O2UuYWZpaTU3NDE1PTE1NzU7ZS5hZmlpNTc0MTY9MTU3NjtlLmFmaWk1NzQxNz0xNTc3O2UuYWZpaTU3NDE4PTE1Nzg7ZS5hZmlpNTc0MTk9MTU3OTtlLmFmaWk1NzQyMD0xNTgwO2UuYWZpaTU3NDIxPTE1ODE7ZS5hZmlpNTc0MjI9MTU4MjtlLmFmaWk1NzQyMz0xNTgzO2UuYWZpaTU3NDI0PTE1ODQ7ZS5hZmlpNTc0MjU9MTU4NTtlLmFmaWk1NzQyNj0xNTg2O2UuYWZpaTU3NDI3PTE1ODc7ZS5hZmlpNTc0Mjg9MTU4ODtlLmFmaWk1NzQyOT0xNTg5O2UuYWZpaTU3NDMwPTE1OTA7ZS5hZmlpNTc0MzE9MTU5MTtlLmFmaWk1NzQzMj0xNTkyO2UuYWZpaTU3NDMzPTE1OTM7ZS5hZmlpNTc0MzQ9MTU5NDtlLmFmaWk1NzQ0MD0xNjAwO2UuYWZpaTU3NDQxPTE2MDE7ZS5hZmlpNTc0NDI9MTYwMjtlLmFmaWk1NzQ0Mz0xNjAzO2UuYWZpaTU3NDQ0PTE2MDQ7ZS5hZmlpNTc0NDU9MTYwNTtlLmFmaWk1NzQ0Nj0xNjA2O2UuYWZpaTU3NDQ4PTE2MDg7ZS5hZmlpNTc0NDk9MTYwOTtlLmFmaWk1NzQ1MD0xNjEwO2UuYWZpaTU3NDUxPTE2MTE7ZS5hZmlpNTc0NTI9MTYxMjtlLmFmaWk1NzQ1Mz0xNjEzO2UuYWZpaTU3NDU0PTE2MTQ7ZS5hZmlpNTc0NTU9MTYxNTtlLmFmaWk1NzQ1Nj0xNjE2O2UuYWZpaTU3NDU3PTE2MTc7ZS5hZmlpNTc0NTg9MTYxODtlLmFmaWk1NzQ3MD0xNjA3O2UuYWZpaTU3NTA1PTE3MDA7ZS5hZmlpNTc1MDY9MTY2MjtlLmFmaWk1NzUwNz0xNjcwO2UuYWZpaTU3NTA4PTE2ODg7ZS5hZmlpNTc1MDk9MTcxMTtlLmFmaWk1NzUxMT0xNjU3O2UuYWZpaTU3NTEyPTE2NzI7ZS5hZmlpNTc1MTM9MTY4MTtlLmFmaWk1NzUxND0xNzIyO2UuYWZpaTU3NTE5PTE3NDY7ZS5hZmlpNTc1MzQ9MTc0OTtlLmFmaWk1NzYzNj04MzYyO2UuYWZpaTU3NjQ1PTE0NzA7ZS5hZmlpNTc2NTg9MTQ3NTtlLmFmaWk1NzY2ND0xNDg4O2UuYWZpaTU3NjY1PTE0ODk7ZS5hZmlpNTc2NjY9MTQ5MDtlLmFmaWk1NzY2Nz0xNDkxO2UuYWZpaTU3NjY4PTE0OTI7ZS5hZmlpNTc2Njk9MTQ5MztlLmFmaWk1NzY3MD0xNDk0O2UuYWZpaTU3NjcxPTE0OTU7ZS5hZmlpNTc2NzI9MTQ5NjtlLmFmaWk1NzY3Mz0xNDk3O2UuYWZpaTU3Njc0PTE0OTg7ZS5hZmlpNTc2NzU9MTQ5OTtlLmFmaWk1NzY3Nj0xNTAwO2UuYWZpaTU3Njc3PTE1MDE7ZS5hZmlpNTc2Nzg9MTUwMjtlLmFmaWk1NzY3OT0xNTAzO2UuYWZpaTU3NjgwPTE1MDQ7ZS5hZmlpNTc2ODE9MTUwNTtlLmFmaWk1NzY4Mj0xNTA2O2UuYWZpaTU3NjgzPTE1MDc7ZS5hZmlpNTc2ODQ9MTUwODtlLmFmaWk1NzY4NT0xNTA5O2UuYWZpaTU3Njg2PTE1MTA7ZS5hZmlpNTc2ODc9MTUxMTtlLmFmaWk1NzY4OD0xNTEyO2UuYWZpaTU3Njg5PTE1MTM7ZS5hZmlpNTc2OTA9MTUxNDtlLmFmaWk1NzY5ND02NDI5ODtlLmFmaWk1NzY5NT02NDI5OTtlLmFmaWk1NzcwMD02NDMzMTtlLmFmaWk1NzcwNT02NDI4NztlLmFmaWk1NzcxNj0xNTIwO2UuYWZpaTU3NzE3PTE1MjE7ZS5hZmlpNTc3MTg9MTUyMjtlLmFmaWk1NzcyMz02NDMwOTtlLmFmaWk1Nzc5Mz0xNDYwO2UuYWZpaTU3Nzk0PTE0NjE7ZS5hZmlpNTc3OTU9MTQ2MjtlLmFmaWk1Nzc5Nj0xNDY3O2UuYWZpaTU3Nzk3PTE0NjQ7ZS5hZmlpNTc3OTg9MTQ2MztlLmFmaWk1Nzc5OT0xNDU2O2UuYWZpaTU3ODAwPTE0NTg7ZS5hZmlpNTc4MDE9MTQ1NztlLmFmaWk1NzgwMj0xNDU5O2UuYWZpaTU3ODAzPTE0NzQ7ZS5hZmlpNTc4MDQ9MTQ3MztlLmFmaWk1NzgwNj0xNDY1O2UuYWZpaTU3ODA3PTE0Njg7ZS5hZmlpNTc4Mzk9MTQ2OTtlLmFmaWk1Nzg0MT0xNDcxO2UuYWZpaTU3ODQyPTE0NzI7ZS5hZmlpNTc5Mjk9NzAwO2UuYWZpaTYxMjQ4PTg0NTM7ZS5hZmlpNjEyODk9ODQ2NztlLmFmaWk2MTM1Mj04NDcwO2UuYWZpaTYxNTczPTgyMzY7ZS5hZmlpNjE1NzQ9ODIzNztlLmFmaWk2MTU3NT04MjM4O2UuYWZpaTYxNjY0PTgyMDQ7ZS5hZmlpNjMxNjc9MTY0NTtlLmFmaWk2NDkzNz03MDE7ZS5hZ3JhdmU9MjI0O2UuYWd1amFyYXRpPTI2OTM7ZS5hZ3VybXVraGk9MjU2NTtlLmFoaXJhZ2FuYT0xMjM1NDtlLmFob29rYWJvdmU9Nzg0MztlLmFpYmVuZ2FsaT0yNDQ4O2UuYWlib3BvbW9mbz0xMjU3NDtlLmFpZGV2YT0yMzIwO2UuYWllY3lyaWxsaWM9MTIzNztlLmFpZ3VqYXJhdGk9MjcwNDtlLmFpZ3VybXVraGk9MjU3NjtlLmFpbWF0cmFndXJtdWtoaT0yNjMyO2UuYWluYXJhYmljPTE1OTM7ZS5haW5maW5hbGFyYWJpYz02NTIyNjtlLmFpbmluaXRpYWxhcmFiaWM9NjUyMjc7ZS5haW5tZWRpYWxhcmFiaWM9NjUyMjg7ZS5haW52ZXJ0ZWRicmV2ZT01MTU7ZS5haXZvd2Vsc2lnbmJlbmdhbGk9MjUwNDtlLmFpdm93ZWxzaWduZGV2YT0yMzc2O2UuYWl2b3dlbHNpZ25ndWphcmF0aT0yNzYwO2UuYWthdGFrYW5hPTEyNDUwO2UuYWthdGFrYW5haGFsZndpZHRoPTY1MzkzO2UuYWtvcmVhbj0xMjYyMztlLmFsZWY9MTQ4ODtlLmFsZWZhcmFiaWM9MTU3NTtlLmFsZWZkYWdlc2hoZWJyZXc9NjQzMDQ7ZS5hbGVmZmluYWxhcmFiaWM9NjUxNjY7ZS5hbGVmaGFtemFhYm92ZWFyYWJpYz0xNTcxO2UuYWxlZmhhbXphYWJvdmVmaW5hbGFyYWJpYz02NTE1NjtlLmFsZWZoYW16YWJlbG93YXJhYmljPTE1NzM7ZS5hbGVmaGFtemFiZWxvd2ZpbmFsYXJhYmljPTY1MTYwO2UuYWxlZmhlYnJldz0xNDg4O2UuYWxlZmxhbWVkaGVicmV3PTY0MzM1O2UuYWxlZm1hZGRhYWJvdmVhcmFiaWM9MTU3MDtlLmFsZWZtYWRkYWFib3ZlZmluYWxhcmFiaWM9NjUxNTQ7ZS5hbGVmbWFrc3VyYWFyYWJpYz0xNjA5O2UuYWxlZm1ha3N1cmFmaW5hbGFyYWJpYz02NTI2NDtlLmFsZWZtYWtzdXJhaW5pdGlhbGFyYWJpYz02NTI2NztlLmFsZWZtYWtzdXJhbWVkaWFsYXJhYmljPTY1MjY4O2UuYWxlZnBhdGFoaGVicmV3PTY0MzAyO2UuYWxlZnFhbWF0c2hlYnJldz02NDMwMztlLmFsZXBoPTg1MDE7ZS5hbGxlcXVhbD04NzgwO2UuYWxwaGE9OTQ1O2UuYWxwaGF0b25vcz05NDA7ZS5hbWFjcm9uPTI1NztlLmFtb25vc3BhY2U9NjUzNDU7ZS5hbXBlcnNhbmQ9Mzg7ZS5hbXBlcnNhbmRtb25vc3BhY2U9NjUyODY7ZS5hbXBlcnNhbmRzbWFsbD02MzI3MDtlLmFtc3F1YXJlPTEzMjUwO2UuYW5ib3BvbW9mbz0xMjU3ODtlLmFuZ2JvcG9tb2ZvPTEyNTgwO2UuYW5nYnJhY2tldGxlZnQ9MTIyOTY7ZS5hbmdicmFja2V0cmlnaHQ9MTIyOTc7ZS5hbmdraGFua2h1dGhhaT0zNjc0O2UuYW5nbGU9ODczNjtlLmFuZ2xlYnJhY2tldGxlZnQ9MTIyOTY7ZS5hbmdsZWJyYWNrZXRsZWZ0dmVydGljYWw9NjUwODc7ZS5hbmdsZWJyYWNrZXRyaWdodD0xMjI5NztlLmFuZ2xlYnJhY2tldHJpZ2h0dmVydGljYWw9NjUwODg7ZS5hbmdsZWxlZnQ9OTAwMTtlLmFuZ2xlcmlnaHQ9OTAwMjtlLmFuZ3N0cm9tPTg0OTE7ZS5hbm90ZWxlaWE9OTAzO2UuYW51ZGF0dGFkZXZhPTIzODY7ZS5hbnVzdmFyYWJlbmdhbGk9MjQzNDtlLmFudXN2YXJhZGV2YT0yMzA2O2UuYW51c3ZhcmFndWphcmF0aT0yNjkwO2UuYW9nb25laz0yNjE7ZS5hcGFhdG9zcXVhcmU9MTMwNTY7ZS5hcGFyZW49OTM3MjtlLmFwb3N0cm9waGVhcm1lbmlhbj0xMzcwO2UuYXBvc3Ryb3BoZW1vZD03MDA7ZS5hcHBsZT02Mzc0MztlLmFwcHJvYWNoZXM9ODc4NDtlLmFwcHJveGVxdWFsPTg3NzY7ZS5hcHByb3hlcXVhbG9yaW1hZ2U9ODc4NjtlLmFwcHJveGltYXRlbHllcXVhbD04NzczO2UuYXJhZWFla29yZWFuPTEyNjg2O2UuYXJhZWFrb3JlYW49MTI2ODU7ZS5hcmM9ODk3ODtlLmFyaWdodGhhbGZyaW5nPTc4MzQ7ZS5hcmluZz0yMjk7ZS5hcmluZ2FjdXRlPTUwNztlLmFyaW5nYmVsb3c9NzY4MTtlLmFycm93Ym90aD04NTk2O2UuYXJyb3dkYXNoZG93bj04Njc1O2UuYXJyb3dkYXNobGVmdD04NjcyO2UuYXJyb3dkYXNocmlnaHQ9ODY3NDtlLmFycm93ZGFzaHVwPTg2NzM7ZS5hcnJvd2RibGJvdGg9ODY2MDtlLmFycm93ZGJsZG93bj04NjU5O2UuYXJyb3dkYmxsZWZ0PTg2NTY7ZS5hcnJvd2RibHJpZ2h0PTg2NTg7ZS5hcnJvd2RibHVwPTg2NTc7ZS5hcnJvd2Rvd249ODU5NTtlLmFycm93ZG93bmxlZnQ9ODYwMTtlLmFycm93ZG93bnJpZ2h0PTg2MDA7ZS5hcnJvd2Rvd253aGl0ZT04NjgxO2UuYXJyb3doZWFkZG93bm1vZD03MDk7ZS5hcnJvd2hlYWRsZWZ0bW9kPTcwNjtlLmFycm93aGVhZHJpZ2h0bW9kPTcwNztlLmFycm93aGVhZHVwbW9kPTcwODtlLmFycm93aG9yaXpleD02MzcxOTtlLmFycm93bGVmdD04NTkyO2UuYXJyb3dsZWZ0ZGJsPTg2NTY7ZS5hcnJvd2xlZnRkYmxzdHJva2U9ODY1MztlLmFycm93bGVmdG92ZXJyaWdodD04NjQ2O2UuYXJyb3dsZWZ0d2hpdGU9ODY3ODtlLmFycm93cmlnaHQ9ODU5NDtlLmFycm93cmlnaHRkYmxzdHJva2U9ODY1NTtlLmFycm93cmlnaHRoZWF2eT0xMDE0MjtlLmFycm93cmlnaHRvdmVybGVmdD04NjQ0O2UuYXJyb3dyaWdodHdoaXRlPTg2ODA7ZS5hcnJvd3RhYmxlZnQ9ODY3NjtlLmFycm93dGFicmlnaHQ9ODY3NztlLmFycm93dXA9ODU5MztlLmFycm93dXBkbj04NTk3O2UuYXJyb3d1cGRuYnNlPTg2MTY7ZS5hcnJvd3VwZG93bmJhc2U9ODYxNjtlLmFycm93dXBsZWZ0PTg1OTg7ZS5hcnJvd3VwbGVmdG9mZG93bj04NjQ1O2UuYXJyb3d1cHJpZ2h0PTg1OTk7ZS5hcnJvd3Vwd2hpdGU9ODY3OTtlLmFycm93dmVydGV4PTYzNzE4O2UuYXNjaWljaXJjdW09OTQ7ZS5hc2NpaWNpcmN1bW1vbm9zcGFjZT02NTM0MjtlLmFzY2lpdGlsZGU9MTI2O2UuYXNjaWl0aWxkZW1vbm9zcGFjZT02NTM3NDtlLmFzY3JpcHQ9NTkzO2UuYXNjcmlwdHR1cm5lZD01OTQ7ZS5hc21hbGxoaXJhZ2FuYT0xMjM1MztlLmFzbWFsbGthdGFrYW5hPTEyNDQ5O2UuYXNtYWxsa2F0YWthbmFoYWxmd2lkdGg9NjUzODM7ZS5hc3Rlcmlzaz00MjtlLmFzdGVyaXNrYWx0b25lYXJhYmljPTE2NDU7ZS5hc3Rlcmlza2FyYWJpYz0xNjQ1O2UuYXN0ZXJpc2ttYXRoPTg3Mjc7ZS5hc3Rlcmlza21vbm9zcGFjZT02NTI5MDtlLmFzdGVyaXNrc21hbGw9NjUxMjE7ZS5hc3RlcmlzbT04MjU4O2UuYXN1cGVyaW9yPTYzMjA5O2UuYXN5bXB0b3RpY2FsbHllcXVhbD04NzcxO2UuYXQ9NjQ7ZS5hdGlsZGU9MjI3O2UuYXRtb25vc3BhY2U9NjUzMTI7ZS5hdHNtYWxsPTY1MTMxO2UuYXR1cm5lZD01OTI7ZS5hdWJlbmdhbGk9MjQ1MjtlLmF1Ym9wb21vZm89MTI1NzY7ZS5hdWRldmE9MjMyNDtlLmF1Z3VqYXJhdGk9MjcwODtlLmF1Z3VybXVraGk9MjU4MDtlLmF1bGVuZ3RobWFya2JlbmdhbGk9MjUxOTtlLmF1bWF0cmFndXJtdWtoaT0yNjM2O2UuYXV2b3dlbHNpZ25iZW5nYWxpPTI1MDg7ZS5hdXZvd2Vsc2lnbmRldmE9MjM4MDtlLmF1dm93ZWxzaWduZ3VqYXJhdGk9Mjc2NDtlLmF2YWdyYWhhZGV2YT0yMzY1O2UuYXliYXJtZW5pYW49MTM3NztlLmF5aW49MTUwNjtlLmF5aW5hbHRvbmVoZWJyZXc9NjQyODg7ZS5heWluaGVicmV3PTE1MDY7ZS5iPTk4O2UuYmFiZW5nYWxpPTI0NzY7ZS5iYWNrc2xhc2g9OTI7ZS5iYWNrc2xhc2htb25vc3BhY2U9NjUzNDA7ZS5iYWRldmE9MjM0ODtlLmJhZ3VqYXJhdGk9MjczMjtlLmJhZ3VybXVraGk9MjYwNDtlLmJhaGlyYWdhbmE9MTI0MDA7ZS5iYWh0dGhhaT0zNjQ3O2UuYmFrYXRha2FuYT0xMjQ5NjtlLmJhcj0xMjQ7ZS5iYXJtb25vc3BhY2U9NjUzNzI7ZS5iYm9wb21vZm89MTI1NDk7ZS5iY2lyY2xlPTk0MjU7ZS5iZG90YWNjZW50PTc2ODM7ZS5iZG90YmVsb3c9NzY4NTtlLmJlYW1lZHNpeHRlZW50aG5vdGVzPTk4MzY7ZS5iZWNhdXNlPTg3NTc7ZS5iZWN5cmlsbGljPTEwNzM7ZS5iZWhhcmFiaWM9MTU3NjtlLmJlaGZpbmFsYXJhYmljPTY1MTY4O2UuYmVoaW5pdGlhbGFyYWJpYz02NTE2OTtlLmJlaGlyYWdhbmE9MTI0MDk7ZS5iZWhtZWRpYWxhcmFiaWM9NjUxNzA7ZS5iZWhtZWVtaW5pdGlhbGFyYWJpYz02NDY3MTtlLmJlaG1lZW1pc29sYXRlZGFyYWJpYz02NDUyMDtlLmJlaG5vb25maW5hbGFyYWJpYz02NDYyMTtlLmJla2F0YWthbmE9MTI1MDU7ZS5iZW5hcm1lbmlhbj0xMzc4O2UuYmV0PTE0ODk7ZS5iZXRhPTk0NjtlLmJldGFzeW1ib2xncmVlaz05NzY7ZS5iZXRkYWdlc2g9NjQzMDU7ZS5iZXRkYWdlc2hoZWJyZXc9NjQzMDU7ZS5iZXRoZWJyZXc9MTQ4OTtlLmJldHJhZmVoZWJyZXc9NjQzMzI7ZS5iaGFiZW5nYWxpPTI0Nzc7ZS5iaGFkZXZhPTIzNDk7ZS5iaGFndWphcmF0aT0yNzMzO2UuYmhhZ3VybXVraGk9MjYwNTtlLmJob29rPTU5NTtlLmJpaGlyYWdhbmE9MTI0MDM7ZS5iaWthdGFrYW5hPTEyNDk5O2UuYmlsYWJpYWxjbGljaz02NjQ7ZS5iaW5kaWd1cm11a2hpPTI1NjI7ZS5iaXJ1c3F1YXJlPTEzMTA1O2UuYmxhY2tjaXJjbGU9OTY3OTtlLmJsYWNrZGlhbW9uZD05NjcwO2UuYmxhY2tkb3ducG9pbnRpbmd0cmlhbmdsZT05NjYwO2UuYmxhY2tsZWZ0cG9pbnRpbmdwb2ludGVyPTk2Njg7ZS5ibGFja2xlZnRwb2ludGluZ3RyaWFuZ2xlPTk2NjQ7ZS5ibGFja2xlbnRpY3VsYXJicmFja2V0bGVmdD0xMjMwNDtlLmJsYWNrbGVudGljdWxhcmJyYWNrZXRsZWZ0dmVydGljYWw9NjUwODM7ZS5ibGFja2xlbnRpY3VsYXJicmFja2V0cmlnaHQ9MTIzMDU7ZS5ibGFja2xlbnRpY3VsYXJicmFja2V0cmlnaHR2ZXJ0aWNhbD02NTA4NDtlLmJsYWNrbG93ZXJsZWZ0dHJpYW5nbGU9OTY5OTtlLmJsYWNrbG93ZXJyaWdodHRyaWFuZ2xlPTk2OTg7ZS5ibGFja3JlY3RhbmdsZT05NjQ0O2UuYmxhY2tyaWdodHBvaW50aW5ncG9pbnRlcj05NjU4O2UuYmxhY2tyaWdodHBvaW50aW5ndHJpYW5nbGU9OTY1NDtlLmJsYWNrc21hbGxzcXVhcmU9OTY0MjtlLmJsYWNrc21pbGluZ2ZhY2U9OTc4NztlLmJsYWNrc3F1YXJlPTk2MzI7ZS5ibGFja3N0YXI9OTczMztlLmJsYWNrdXBwZXJsZWZ0dHJpYW5nbGU9OTcwMDtlLmJsYWNrdXBwZXJyaWdodHRyaWFuZ2xlPTk3MDE7ZS5ibGFja3VwcG9pbnRpbmdzbWFsbHRyaWFuZ2xlPTk2NTI7ZS5ibGFja3VwcG9pbnRpbmd0cmlhbmdsZT05NjUwO2UuYmxhbms9OTI1MTtlLmJsaW5lYmVsb3c9NzY4NztlLmJsb2NrPTk2MDg7ZS5ibW9ub3NwYWNlPTY1MzQ2O2UuYm9iYWltYWl0aGFpPTM2MTA7ZS5ib2hpcmFnYW5hPTEyNDEyO2UuYm9rYXRha2FuYT0xMjUwODtlLmJwYXJlbj05MzczO2UuYnFzcXVhcmU9MTMyNTE7ZS5icmFjZWV4PTYzNzMyO2UuYnJhY2VsZWZ0PTEyMztlLmJyYWNlbGVmdGJ0PTYzNzMxO2UuYnJhY2VsZWZ0bWlkPTYzNzMwO2UuYnJhY2VsZWZ0bW9ub3NwYWNlPTY1MzcxO2UuYnJhY2VsZWZ0c21hbGw9NjUxMTU7ZS5icmFjZWxlZnR0cD02MzcyOTtlLmJyYWNlbGVmdHZlcnRpY2FsPTY1MDc5O2UuYnJhY2VyaWdodD0xMjU7ZS5icmFjZXJpZ2h0YnQ9NjM3NDI7ZS5icmFjZXJpZ2h0bWlkPTYzNzQxO2UuYnJhY2VyaWdodG1vbm9zcGFjZT02NTM3MztlLmJyYWNlcmlnaHRzbWFsbD02NTExNjtlLmJyYWNlcmlnaHR0cD02Mzc0MDtlLmJyYWNlcmlnaHR2ZXJ0aWNhbD02NTA4MDtlLmJyYWNrZXRsZWZ0PTkxO2UuYnJhY2tldGxlZnRidD02MzcyODtlLmJyYWNrZXRsZWZ0ZXg9NjM3Mjc7ZS5icmFja2V0bGVmdG1vbm9zcGFjZT02NTMzOTtlLmJyYWNrZXRsZWZ0dHA9NjM3MjY7ZS5icmFja2V0cmlnaHQ9OTM7ZS5icmFja2V0cmlnaHRidD02MzczOTtlLmJyYWNrZXRyaWdodGV4PTYzNzM4O2UuYnJhY2tldHJpZ2h0bW9ub3NwYWNlPTY1MzQxO2UuYnJhY2tldHJpZ2h0dHA9NjM3Mzc7ZS5icmV2ZT03Mjg7ZS5icmV2ZWJlbG93Y21iPTgxNDtlLmJyZXZlY21iPTc3NDtlLmJyZXZlaW52ZXJ0ZWRiZWxvd2NtYj04MTU7ZS5icmV2ZWludmVydGVkY21iPTc4NTtlLmJyZXZlaW52ZXJ0ZWRkb3VibGVjbWI9ODY1O2UuYnJpZGdlYmVsb3djbWI9ODEwO2UuYnJpZGdlaW52ZXJ0ZWRiZWxvd2NtYj04MjY7ZS5icm9rZW5iYXI9MTY2O2UuYnN0cm9rZT0zODQ7ZS5ic3VwZXJpb3I9NjMyMTA7ZS5idG9wYmFyPTM4NztlLmJ1aGlyYWdhbmE9MTI0MDY7ZS5idWthdGFrYW5hPTEyNTAyO2UuYnVsbGV0PTgyMjY7ZS5idWxsZXRpbnZlcnNlPTk2ODg7ZS5idWxsZXRvcGVyYXRvcj04NzI5O2UuYnVsbHNleWU9OTY3ODtlLmM9OTk7ZS5jYWFybWVuaWFuPTEzOTA7ZS5jYWJlbmdhbGk9MjQ1ODtlLmNhY3V0ZT0yNjM7ZS5jYWRldmE9MjMzMDtlLmNhZ3VqYXJhdGk9MjcxNDtlLmNhZ3VybXVraGk9MjU4NjtlLmNhbHNxdWFyZT0xMzE5MjtlLmNhbmRyYWJpbmR1YmVuZ2FsaT0yNDMzO2UuY2FuZHJhYmluZHVjbWI9Nzg0O2UuY2FuZHJhYmluZHVkZXZhPTIzMDU7ZS5jYW5kcmFiaW5kdWd1amFyYXRpPTI2ODk7ZS5jYXBzbG9jaz04NjgyO2UuY2FyZW9mPTg0NTM7ZS5jYXJvbj03MTE7ZS5jYXJvbmJlbG93Y21iPTgxMjtlLmNhcm9uY21iPTc4MDtlLmNhcnJpYWdlcmV0dXJuPTg2Mjk7ZS5jYm9wb21vZm89MTI1Njg7ZS5jY2Fyb249MjY5O2UuY2NlZGlsbGE9MjMxO2UuY2NlZGlsbGFhY3V0ZT03Njg5O2UuY2NpcmNsZT05NDI2O2UuY2NpcmN1bWZsZXg9MjY1O2UuY2N1cmw9NTk3O2UuY2RvdD0yNjc7ZS5jZG90YWNjZW50PTI2NztlLmNkc3F1YXJlPTEzMjUzO2UuY2VkaWxsYT0xODQ7ZS5jZWRpbGxhY21iPTgwNztlLmNlbnQ9MTYyO2UuY2VudGlncmFkZT04NDUxO2UuY2VudGluZmVyaW9yPTYzMTk5O2UuY2VudG1vbm9zcGFjZT02NTUwNDtlLmNlbnRvbGRzdHlsZT02MzM5NDtlLmNlbnRzdXBlcmlvcj02MzIwMDtlLmNoYWFybWVuaWFuPTE0MDE7ZS5jaGFiZW5nYWxpPTI0NTk7ZS5jaGFkZXZhPTIzMzE7ZS5jaGFndWphcmF0aT0yNzE1O2UuY2hhZ3VybXVraGk9MjU4NztlLmNoYm9wb21vZm89MTI1NjQ7ZS5jaGVhYmtoYXNpYW5jeXJpbGxpYz0xMjEzO2UuY2hlY2ttYXJrPTEwMDAzO2UuY2hlY3lyaWxsaWM9MTA5NTtlLmNoZWRlc2NlbmRlcmFia2hhc2lhbmN5cmlsbGljPTEyMTU7ZS5jaGVkZXNjZW5kZXJjeXJpbGxpYz0xMjA3O2UuY2hlZGllcmVzaXNjeXJpbGxpYz0xMjY5O2UuY2hlaGFybWVuaWFuPTEzOTU7ZS5jaGVraGFrYXNzaWFuY3lyaWxsaWM9MTIyODtlLmNoZXZlcnRpY2Fsc3Ryb2tlY3lyaWxsaWM9MTIwOTtlLmNoaT05Njc7ZS5jaGlldWNoYWNpcmNsZWtvcmVhbj0xMjkxOTtlLmNoaWV1Y2hhcGFyZW5rb3JlYW49MTI4MjM7ZS5jaGlldWNoY2lyY2xla29yZWFuPTEyOTA1O2UuY2hpZXVjaGtvcmVhbj0xMjYxODtlLmNoaWV1Y2hwYXJlbmtvcmVhbj0xMjgwOTtlLmNob2NoYW5ndGhhaT0zNTk0O2UuY2hvY2hhbnRoYWk9MzU5MjtlLmNob2NoaW5ndGhhaT0zNTkzO2UuY2hvY2hvZXRoYWk9MzU5NjtlLmNob29rPTM5MjtlLmNpZXVjYWNpcmNsZWtvcmVhbj0xMjkxODtlLmNpZXVjYXBhcmVua29yZWFuPTEyODIyO2UuY2lldWNjaXJjbGVrb3JlYW49MTI5MDQ7ZS5jaWV1Y2tvcmVhbj0xMjYxNjtlLmNpZXVjcGFyZW5rb3JlYW49MTI4MDg7ZS5jaWV1Y3VwYXJlbmtvcmVhbj0xMjgyODtlLmNpcmNsZT05Njc1O2UuY2lyY2xlY29weXJ0PTE2OTtlLmNpcmNsZW11bHRpcGx5PTg4NTU7ZS5jaXJjbGVvdD04ODU3O2UuY2lyY2xlcGx1cz04ODUzO2UuY2lyY2xlcG9zdGFsbWFyaz0xMjM0MjtlLmNpcmNsZXdpdGhsZWZ0aGFsZmJsYWNrPTk2ODA7ZS5jaXJjbGV3aXRocmlnaHRoYWxmYmxhY2s9OTY4MTtlLmNpcmN1bWZsZXg9NzEwO2UuY2lyY3VtZmxleGJlbG93Y21iPTgxMztlLmNpcmN1bWZsZXhjbWI9NzcwO2UuY2xlYXI9ODk5OTtlLmNsaWNrYWx2ZW9sYXI9NDUwO2UuY2xpY2tkZW50YWw9NDQ4O2UuY2xpY2tsYXRlcmFsPTQ0OTtlLmNsaWNrcmV0cm9mbGV4PTQ1MTtlLmNsdWI9OTgyNztlLmNsdWJzdWl0YmxhY2s9OTgyNztlLmNsdWJzdWl0d2hpdGU9OTgzMTtlLmNtY3ViZWRzcXVhcmU9MTMyMjA7ZS5jbW9ub3NwYWNlPTY1MzQ3O2UuY21zcXVhcmVkc3F1YXJlPTEzMjE2O2UuY29hcm1lbmlhbj0xNDA5O2UuY29sb249NTg7ZS5jb2xvbm1vbmV0YXJ5PTgzNTM7ZS5jb2xvbm1vbm9zcGFjZT02NTMwNjtlLmNvbG9uc2lnbj04MzUzO2UuY29sb25zbWFsbD02NTEwOTtlLmNvbG9udHJpYW5ndWxhcmhhbGZtb2Q9NzIxO2UuY29sb250cmlhbmd1bGFybW9kPTcyMDtlLmNvbW1hPTQ0O2UuY29tbWFhYm92ZWNtYj03ODc7ZS5jb21tYWFib3ZlcmlnaHRjbWI9Nzg5O2UuY29tbWFhY2NlbnQ9NjMxNzE7ZS5jb21tYWFyYWJpYz0xNTQ4O2UuY29tbWFhcm1lbmlhbj0xMzczO2UuY29tbWFpbmZlcmlvcj02MzIwMTtlLmNvbW1hbW9ub3NwYWNlPTY1MjkyO2UuY29tbWFyZXZlcnNlZGFib3ZlY21iPTc4ODtlLmNvbW1hcmV2ZXJzZWRtb2Q9NzAxO2UuY29tbWFzbWFsbD02NTEwNDtlLmNvbW1hc3VwZXJpb3I9NjMyMDI7ZS5jb21tYXR1cm5lZGFib3ZlY21iPTc4NjtlLmNvbW1hdHVybmVkbW9kPTY5OTtlLmNvbXBhc3M9OTc4ODtlLmNvbmdydWVudD04NzczO2UuY29udG91cmludGVncmFsPTg3NTA7ZS5jb250cm9sPTg5NjM7ZS5jb250cm9sQUNLPTY7ZS5jb250cm9sQkVMPTc7ZS5jb250cm9sQlM9ODtlLmNvbnRyb2xDQU49MjQ7ZS5jb250cm9sQ1I9MTM7ZS5jb250cm9sREMxPTE3O2UuY29udHJvbERDMj0xODtlLmNvbnRyb2xEQzM9MTk7ZS5jb250cm9sREM0PTIwO2UuY29udHJvbERFTD0xMjc7ZS5jb250cm9sRExFPTE2O2UuY29udHJvbEVNPTI1O2UuY29udHJvbEVOUT01O2UuY29udHJvbEVPVD00O2UuY29udHJvbEVTQz0yNztlLmNvbnRyb2xFVEI9MjM7ZS5jb250cm9sRVRYPTM7ZS5jb250cm9sRkY9MTI7ZS5jb250cm9sRlM9Mjg7ZS5jb250cm9sR1M9Mjk7ZS5jb250cm9sSFQ9OTtlLmNvbnRyb2xMRj0xMDtlLmNvbnRyb2xOQUs9MjE7ZS5jb250cm9sTlVMTD0wO2UuY29udHJvbFJTPTMwO2UuY29udHJvbFNJPTE1O2UuY29udHJvbFNPPTE0O2UuY29udHJvbFNPVD0yO2UuY29udHJvbFNUWD0xO2UuY29udHJvbFNVQj0yNjtlLmNvbnRyb2xTWU49MjI7ZS5jb250cm9sVVM9MzE7ZS5jb250cm9sVlQ9MTE7ZS5jb3B5cmlnaHQ9MTY5O2UuY29weXJpZ2h0c2Fucz02MzcyMTtlLmNvcHlyaWdodHNlcmlmPTYzMTkzO2UuY29ybmVyYnJhY2tldGxlZnQ9MTIzMDA7ZS5jb3JuZXJicmFja2V0bGVmdGhhbGZ3aWR0aD02NTM3ODtlLmNvcm5lcmJyYWNrZXRsZWZ0dmVydGljYWw9NjUwODk7ZS5jb3JuZXJicmFja2V0cmlnaHQ9MTIzMDE7ZS5jb3JuZXJicmFja2V0cmlnaHRoYWxmd2lkdGg9NjUzNzk7ZS5jb3JuZXJicmFja2V0cmlnaHR2ZXJ0aWNhbD02NTA5MDtlLmNvcnBvcmF0aW9uc3F1YXJlPTEzMTgzO2UuY29zcXVhcmU9MTMyNTU7ZS5jb3Zlcmtnc3F1YXJlPTEzMjU0O2UuY3BhcmVuPTkzNzQ7ZS5jcnV6ZWlybz04MzU0O2UuY3N0cmV0Y2hlZD02NjM7ZS5jdXJseWFuZD04OTExO2UuY3VybHlvcj04OTEwO2UuY3VycmVuY3k9MTY0O2UuY3lyQnJldmU9NjMxODU7ZS5jeXJGbGV4PTYzMTg2O2UuY3lyYnJldmU9NjMxODg7ZS5jeXJmbGV4PTYzMTg5O2UuZD0xMDA7ZS5kYWFybWVuaWFuPTEzODA7ZS5kYWJlbmdhbGk9MjQ3MDtlLmRhZGFyYWJpYz0xNTkwO2UuZGFkZXZhPTIzNDI7ZS5kYWRmaW5hbGFyYWJpYz02NTIxNDtlLmRhZGluaXRpYWxhcmFiaWM9NjUyMTU7ZS5kYWRtZWRpYWxhcmFiaWM9NjUyMTY7ZS5kYWdlc2g9MTQ2ODtlLmRhZ2VzaGhlYnJldz0xNDY4O2UuZGFnZ2VyPTgyMjQ7ZS5kYWdnZXJkYmw9ODIyNTtlLmRhZ3VqYXJhdGk9MjcyNjtlLmRhZ3VybXVraGk9MjU5ODtlLmRhaGlyYWdhbmE9MTIzODQ7ZS5kYWthdGFrYW5hPTEyNDgwO2UuZGFsYXJhYmljPTE1ODM7ZS5kYWxldD0xNDkxO2UuZGFsZXRkYWdlc2g9NjQzMDc7ZS5kYWxldGRhZ2VzaGhlYnJldz02NDMwNztlLmRhbGV0aGVicmV3PTE0OTE7ZS5kYWxmaW5hbGFyYWJpYz02NTE5NDtlLmRhbW1hYXJhYmljPTE2MTU7ZS5kYW1tYWxvd2FyYWJpYz0xNjE1O2UuZGFtbWF0YW5hbHRvbmVhcmFiaWM9MTYxMjtlLmRhbW1hdGFuYXJhYmljPTE2MTI7ZS5kYW5kYT0yNDA0O2UuZGFyZ2FoZWJyZXc9MTQ0NztlLmRhcmdhbGVmdGhlYnJldz0xNDQ3O2UuZGFzaWFwbmV1bWF0YWN5cmlsbGljY21iPTExNTc7ZS5kYmxHcmF2ZT02MzE4NztlLmRibGFuZ2xlYnJhY2tldGxlZnQ9MTIyOTg7ZS5kYmxhbmdsZWJyYWNrZXRsZWZ0dmVydGljYWw9NjUwODU7ZS5kYmxhbmdsZWJyYWNrZXRyaWdodD0xMjI5OTtlLmRibGFuZ2xlYnJhY2tldHJpZ2h0dmVydGljYWw9NjUwODY7ZS5kYmxhcmNoaW52ZXJ0ZWRiZWxvd2NtYj04MTE7ZS5kYmxhcnJvd2xlZnQ9ODY2MDtlLmRibGFycm93cmlnaHQ9ODY1ODtlLmRibGRhbmRhPTI0MDU7ZS5kYmxncmF2ZT02MzE5MDtlLmRibGdyYXZlY21iPTc4MztlLmRibGludGVncmFsPTg3NDg7ZS5kYmxsb3dsaW5lPTgyMTU7ZS5kYmxsb3dsaW5lY21iPTgxOTtlLmRibG92ZXJsaW5lY21iPTgzMTtlLmRibHByaW1lbW9kPTY5ODtlLmRibHZlcnRpY2FsYmFyPTgyMTQ7ZS5kYmx2ZXJ0aWNhbGxpbmVhYm92ZWNtYj03ODI7ZS5kYm9wb21vZm89MTI1NTM7ZS5kYnNxdWFyZT0xMzI1NjtlLmRjYXJvbj0yNzE7ZS5kY2VkaWxsYT03Njk3O2UuZGNpcmNsZT05NDI3O2UuZGNpcmN1bWZsZXhiZWxvdz03Njk5O2UuZGNyb2F0PTI3MztlLmRkYWJlbmdhbGk9MjQ2NTtlLmRkYWRldmE9MjMzNztlLmRkYWd1amFyYXRpPTI3MjE7ZS5kZGFndXJtdWtoaT0yNTkzO2UuZGRhbGFyYWJpYz0xNjcyO2UuZGRhbGZpbmFsYXJhYmljPTY0MzkzO2UuZGRkaGFkZXZhPTIzOTY7ZS5kZGhhYmVuZ2FsaT0yNDY2O2UuZGRoYWRldmE9MjMzODtlLmRkaGFndWphcmF0aT0yNzIyO2UuZGRoYWd1cm11a2hpPTI1OTQ7ZS5kZG90YWNjZW50PTc2OTE7ZS5kZG90YmVsb3c9NzY5MztlLmRlY2ltYWxzZXBhcmF0b3JhcmFiaWM9MTY0MztlLmRlY2ltYWxzZXBhcmF0b3JwZXJzaWFuPTE2NDM7ZS5kZWN5cmlsbGljPTEwNzY7ZS5kZWdyZWU9MTc2O2UuZGVoaWhlYnJldz0xNDUzO2UuZGVoaXJhZ2FuYT0xMjM5MTtlLmRlaWNvcHRpYz0xMDA3O2UuZGVrYXRha2FuYT0xMjQ4NztlLmRlbGV0ZWxlZnQ9OTAwMztlLmRlbGV0ZXJpZ2h0PTg5OTg7ZS5kZWx0YT05NDg7ZS5kZWx0YXR1cm5lZD0zOTc7ZS5kZW5vbWluYXRvcm1pbnVzb25lbnVtZXJhdG9yYmVuZ2FsaT0yNTUyO2UuZGV6aD02NzY7ZS5kaGFiZW5nYWxpPTI0NzE7ZS5kaGFkZXZhPTIzNDM7ZS5kaGFndWphcmF0aT0yNzI3O2UuZGhhZ3VybXVraGk9MjU5OTtlLmRob29rPTU5OTtlLmRpYWx5dGlrYXRvbm9zPTkwMTtlLmRpYWx5dGlrYXRvbm9zY21iPTgzNjtlLmRpYW1vbmQ9OTgzMDtlLmRpYW1vbmRzdWl0d2hpdGU9OTgyNjtlLmRpZXJlc2lzPTE2ODtlLmRpZXJlc2lzYWN1dGU9NjMxOTE7ZS5kaWVyZXNpc2JlbG93Y21iPTgwNDtlLmRpZXJlc2lzY21iPTc3NjtlLmRpZXJlc2lzZ3JhdmU9NjMxOTI7ZS5kaWVyZXNpc3Rvbm9zPTkwMTtlLmRpaGlyYWdhbmE9MTIzODY7ZS5kaWthdGFrYW5hPTEyNDgyO2UuZGl0dG9tYXJrPTEyMjkxO2UuZGl2aWRlPTI0NztlLmRpdmlkZXM9ODczOTtlLmRpdmlzaW9uc2xhc2g9ODcyNTtlLmRqZWN5cmlsbGljPTExMDY7ZS5ka3NoYWRlPTk2MTk7ZS5kbGluZWJlbG93PTc2OTU7ZS5kbHNxdWFyZT0xMzIwNztlLmRtYWNyb249MjczO2UuZG1vbm9zcGFjZT02NTM0ODtlLmRuYmxvY2s9OTYwNDtlLmRvY2hhZGF0aGFpPTM1OTg7ZS5kb2Rla3RoYWk9MzYwNDtlLmRvaGlyYWdhbmE9MTIzOTM7ZS5kb2thdGFrYW5hPTEyNDg5O2UuZG9sbGFyPTM2O2UuZG9sbGFyaW5mZXJpb3I9NjMyMDM7ZS5kb2xsYXJtb25vc3BhY2U9NjUyODQ7ZS5kb2xsYXJvbGRzdHlsZT02MzI2ODtlLmRvbGxhcnNtYWxsPTY1MTI5O2UuZG9sbGFyc3VwZXJpb3I9NjMyMDQ7ZS5kb25nPTgzNjM7ZS5kb3J1c3F1YXJlPTEzMDk0O2UuZG90YWNjZW50PTcyOTtlLmRvdGFjY2VudGNtYj03NzU7ZS5kb3RiZWxvd2NtYj04MDM7ZS5kb3RiZWxvd2NvbWI9ODAzO2UuZG90a2F0YWthbmE9MTI1Mzk7ZS5kb3RsZXNzaT0zMDU7ZS5kb3RsZXNzaj02MzE2NjtlLmRvdGxlc3Nqc3Ryb2tlaG9vaz02NDQ7ZS5kb3RtYXRoPTg5MDE7ZS5kb3R0ZWRjaXJjbGU9OTY3NjtlLmRvdWJsZXlvZHBhdGFoPTY0Mjg3O2UuZG91YmxleW9kcGF0YWhoZWJyZXc9NjQyODc7ZS5kb3dudGFja2JlbG93Y21iPTc5ODtlLmRvd250YWNrbW9kPTcyNTtlLmRwYXJlbj05Mzc1O2UuZHN1cGVyaW9yPTYzMjExO2UuZHRhaWw9NTk4O2UuZHRvcGJhcj0zOTY7ZS5kdWhpcmFnYW5hPTEyMzg5O2UuZHVrYXRha2FuYT0xMjQ4NTtlLmR6PTQ5OTtlLmR6YWx0b25lPTY3NTtlLmR6Y2Fyb249NDU0O2UuZHpjdXJsPTY3NztlLmR6ZWFia2hhc2lhbmN5cmlsbGljPTEyNDk7ZS5kemVjeXJpbGxpYz0xMTA5O2UuZHpoZWN5cmlsbGljPTExMTk7ZS5lPTEwMTtlLmVhY3V0ZT0yMzM7ZS5lYXJ0aD05NzkzO2UuZWJlbmdhbGk9MjQ0NztlLmVib3BvbW9mbz0xMjU3MjtlLmVicmV2ZT0yNzc7ZS5lY2FuZHJhZGV2YT0yMzE3O2UuZWNhbmRyYWd1amFyYXRpPTI3MDE7ZS5lY2FuZHJhdm93ZWxzaWduZGV2YT0yMzczO2UuZWNhbmRyYXZvd2Vsc2lnbmd1amFyYXRpPTI3NTc7ZS5lY2Fyb249MjgzO2UuZWNlZGlsbGFicmV2ZT03NzA5O2UuZWNoYXJtZW5pYW49MTM4MTtlLmVjaHlpd25hcm1lbmlhbj0xNDE1O2UuZWNpcmNsZT05NDI4O2UuZWNpcmN1bWZsZXg9MjM0O2UuZWNpcmN1bWZsZXhhY3V0ZT03ODcxO2UuZWNpcmN1bWZsZXhiZWxvdz03NzA1O2UuZWNpcmN1bWZsZXhkb3RiZWxvdz03ODc5O2UuZWNpcmN1bWZsZXhncmF2ZT03ODczO2UuZWNpcmN1bWZsZXhob29rYWJvdmU9Nzg3NTtlLmVjaXJjdW1mbGV4dGlsZGU9Nzg3NztlLmVjeXJpbGxpYz0xMTA4O2UuZWRibGdyYXZlPTUxNztlLmVkZXZhPTIzMTk7ZS5lZGllcmVzaXM9MjM1O2UuZWRvdD0yNzk7ZS5lZG90YWNjZW50PTI3OTtlLmVkb3RiZWxvdz03ODY1O2UuZWVndXJtdWtoaT0yNTc1O2UuZWVtYXRyYWd1cm11a2hpPTI2MzE7ZS5lZmN5cmlsbGljPTEwOTI7ZS5lZ3JhdmU9MjMyO2UuZWd1amFyYXRpPTI3MDM7ZS5laGFybWVuaWFuPTEzODM7ZS5laGJvcG9tb2ZvPTEyNTczO2UuZWhpcmFnYW5hPTEyMzYwO2UuZWhvb2thYm92ZT03ODY3O2UuZWlib3BvbW9mbz0xMjU3NTtlLmVpZ2h0PTU2O2UuZWlnaHRhcmFiaWM9MTY0MDtlLmVpZ2h0YmVuZ2FsaT0yNTQyO2UuZWlnaHRjaXJjbGU9OTMxOTtlLmVpZ2h0Y2lyY2xlaW52ZXJzZXNhbnNzZXJpZj0xMDEyOTtlLmVpZ2h0ZGV2YT0yNDE0O2UuZWlnaHRlZW5jaXJjbGU9OTMyOTtlLmVpZ2h0ZWVucGFyZW49OTM0OTtlLmVpZ2h0ZWVucGVyaW9kPTkzNjk7ZS5laWdodGd1amFyYXRpPTI3OTg7ZS5laWdodGd1cm11a2hpPTI2NzA7ZS5laWdodGhhY2thcmFiaWM9MTY0MDtlLmVpZ2h0aGFuZ3pob3U9MTIzMjg7ZS5laWdodGhub3RlYmVhbWVkPTk4MzU7ZS5laWdodGlkZW9ncmFwaGljcGFyZW49MTI4Mzk7ZS5laWdodGluZmVyaW9yPTgzMjg7ZS5laWdodG1vbm9zcGFjZT02NTMwNDtlLmVpZ2h0b2xkc3R5bGU9NjMyODg7ZS5laWdodHBhcmVuPTkzMzk7ZS5laWdodHBlcmlvZD05MzU5O2UuZWlnaHRwZXJzaWFuPTE3ODQ7ZS5laWdodHJvbWFuPTg1Njc7ZS5laWdodHN1cGVyaW9yPTgzMTI7ZS5laWdodHRoYWk9MzY3MjtlLmVpbnZlcnRlZGJyZXZlPTUxOTtlLmVpb3RpZmllZGN5cmlsbGljPTExMjU7ZS5la2F0YWthbmE9MTI0NTY7ZS5la2F0YWthbmFoYWxmd2lkdGg9NjUzOTY7ZS5la29ua2FyZ3VybXVraGk9MjY3NjtlLmVrb3JlYW49MTI2Mjg7ZS5lbGN5cmlsbGljPTEwODM7ZS5lbGVtZW50PTg3MTI7ZS5lbGV2ZW5jaXJjbGU9OTMyMjtlLmVsZXZlbnBhcmVuPTkzNDI7ZS5lbGV2ZW5wZXJpb2Q9OTM2MjtlLmVsZXZlbnJvbWFuPTg1NzA7ZS5lbGxpcHNpcz04MjMwO2UuZWxsaXBzaXN2ZXJ0aWNhbD04OTQyO2UuZW1hY3Jvbj0yNzU7ZS5lbWFjcm9uYWN1dGU9NzcwMztlLmVtYWNyb25ncmF2ZT03NzAxO2UuZW1jeXJpbGxpYz0xMDg0O2UuZW1kYXNoPTgyMTI7ZS5lbWRhc2h2ZXJ0aWNhbD02NTA3MztlLmVtb25vc3BhY2U9NjUzNDk7ZS5lbXBoYXNpc21hcmthcm1lbmlhbj0xMzcxO2UuZW1wdHlzZXQ9ODcwOTtlLmVuYm9wb21vZm89MTI1Nzk7ZS5lbmN5cmlsbGljPTEwODU7ZS5lbmRhc2g9ODIxMTtlLmVuZGFzaHZlcnRpY2FsPTY1MDc0O2UuZW5kZXNjZW5kZXJjeXJpbGxpYz0xMTg3O2UuZW5nPTMzMTtlLmVuZ2JvcG9tb2ZvPTEyNTgxO2UuZW5naGVjeXJpbGxpYz0xMTg5O2UuZW5ob29rY3lyaWxsaWM9MTIyNDtlLmVuc3BhY2U9ODE5NDtlLmVvZ29uZWs9MjgxO2UuZW9rb3JlYW49MTI2Mjc7ZS5lb3Blbj02MDM7ZS5lb3BlbmNsb3NlZD02NjY7ZS5lb3BlbnJldmVyc2VkPTYwNDtlLmVvcGVucmV2ZXJzZWRjbG9zZWQ9NjA2O2UuZW9wZW5yZXZlcnNlZGhvb2s9NjA1O2UuZXBhcmVuPTkzNzY7ZS5lcHNpbG9uPTk0OTtlLmVwc2lsb250b25vcz05NDE7ZS5lcXVhbD02MTtlLmVxdWFsbW9ub3NwYWNlPTY1MzA5O2UuZXF1YWxzbWFsbD02NTEyNjtlLmVxdWFsc3VwZXJpb3I9ODMxNjtlLmVxdWl2YWxlbmNlPTg4MDE7ZS5lcmJvcG9tb2ZvPTEyNTgyO2UuZXJjeXJpbGxpYz0xMDg4O2UuZXJldmVyc2VkPTYwMDtlLmVyZXZlcnNlZGN5cmlsbGljPTExMDE7ZS5lc2N5cmlsbGljPTEwODk7ZS5lc2Rlc2NlbmRlcmN5cmlsbGljPTExOTU7ZS5lc2g9NjQzO2UuZXNoY3VybD02NDY7ZS5lc2hvcnRkZXZhPTIzMTg7ZS5lc2hvcnR2b3dlbHNpZ25kZXZhPTIzNzQ7ZS5lc2hyZXZlcnNlZGxvb3A9NDI2O2UuZXNoc3F1YXRyZXZlcnNlZD02NDU7ZS5lc21hbGxoaXJhZ2FuYT0xMjM1OTtlLmVzbWFsbGthdGFrYW5hPTEyNDU1O2UuZXNtYWxsa2F0YWthbmFoYWxmd2lkdGg9NjUzODY7ZS5lc3RpbWF0ZWQ9ODQ5NDtlLmVzdXBlcmlvcj02MzIxMjtlLmV0YT05NTE7ZS5ldGFybWVuaWFuPTEzODQ7ZS5ldGF0b25vcz05NDI7ZS5ldGg9MjQwO2UuZXRpbGRlPTc4Njk7ZS5ldGlsZGViZWxvdz03NzA3O2UuZXRuYWh0YWZvdWtoaGVicmV3PTE0MjU7ZS5ldG5haHRhZm91a2hsZWZ0aGVicmV3PTE0MjU7ZS5ldG5haHRhaGVicmV3PTE0MjU7ZS5ldG5haHRhbGVmdGhlYnJldz0xNDI1O2UuZXR1cm5lZD00Nzc7ZS5ldWtvcmVhbj0xMjY0MTtlLmV1cm89ODM2NDtlLmV2b3dlbHNpZ25iZW5nYWxpPTI1MDM7ZS5ldm93ZWxzaWduZGV2YT0yMzc1O2UuZXZvd2Vsc2lnbmd1amFyYXRpPTI3NTk7ZS5leGNsYW09MzM7ZS5leGNsYW1hcm1lbmlhbj0xMzcyO2UuZXhjbGFtZGJsPTgyNTI7ZS5leGNsYW1kb3duPTE2MTtlLmV4Y2xhbWRvd25zbWFsbD02MzM5MztlLmV4Y2xhbW1vbm9zcGFjZT02NTI4MTtlLmV4Y2xhbXNtYWxsPTYzMjY1O2UuZXhpc3RlbnRpYWw9ODcwNztlLmV6aD02NTg7ZS5lemhjYXJvbj00OTU7ZS5lemhjdXJsPTY1OTtlLmV6aHJldmVyc2VkPTQ0MTtlLmV6aHRhaWw9NDQyO2UuZj0xMDI7ZS5mYWRldmE9MjM5ODtlLmZhZ3VybXVraGk9MjY1NDtlLmZhaHJlbmhlaXQ9ODQ1NztlLmZhdGhhYXJhYmljPTE2MTQ7ZS5mYXRoYWxvd2FyYWJpYz0xNjE0O2UuZmF0aGF0YW5hcmFiaWM9MTYxMTtlLmZib3BvbW9mbz0xMjU1MjtlLmZjaXJjbGU9OTQyOTtlLmZkb3RhY2NlbnQ9NzcxMTtlLmZlaGFyYWJpYz0xNjAxO2UuZmVoYXJtZW5pYW49MTQxNDtlLmZlaGZpbmFsYXJhYmljPTY1MjM0O2UuZmVoaW5pdGlhbGFyYWJpYz02NTIzNTtlLmZlaG1lZGlhbGFyYWJpYz02NTIzNjtlLmZlaWNvcHRpYz05OTc7ZS5mZW1hbGU9OTc5MjtlLmZmPTY0MjU2O2UuZl9mPTY0MjU2O2UuZmZpPTY0MjU5O2UuZl9mX2k9NjQyNTk7ZS5mZmw9NjQyNjA7ZS5mX2ZfbD02NDI2MDtlLmZpPTY0MjU3O2UuZl9pPTY0MjU3O2UuZmlmdGVlbmNpcmNsZT05MzI2O2UuZmlmdGVlbnBhcmVuPTkzNDY7ZS5maWZ0ZWVucGVyaW9kPTkzNjY7ZS5maWd1cmVkYXNoPTgyMTA7ZS5maWxsZWRib3g9OTYzMjtlLmZpbGxlZHJlY3Q9OTY0NDtlLmZpbmFsa2FmPTE0OTg7ZS5maW5hbGthZmRhZ2VzaD02NDMxNDtlLmZpbmFsa2FmZGFnZXNoaGVicmV3PTY0MzE0O2UuZmluYWxrYWZoZWJyZXc9MTQ5ODtlLmZpbmFsbWVtPTE1MDE7ZS5maW5hbG1lbWhlYnJldz0xNTAxO2UuZmluYWxudW49MTUwMztlLmZpbmFsbnVuaGVicmV3PTE1MDM7ZS5maW5hbHBlPTE1MDc7ZS5maW5hbHBlaGVicmV3PTE1MDc7ZS5maW5hbHRzYWRpPTE1MDk7ZS5maW5hbHRzYWRpaGVicmV3PTE1MDk7ZS5maXJzdHRvbmVjaGluZXNlPTcxMztlLmZpc2hleWU9OTY3MztlLmZpdGFjeXJpbGxpYz0xMTM5O2UuZml2ZT01MztlLmZpdmVhcmFiaWM9MTYzNztlLmZpdmViZW5nYWxpPTI1Mzk7ZS5maXZlY2lyY2xlPTkzMTY7ZS5maXZlY2lyY2xlaW52ZXJzZXNhbnNzZXJpZj0xMDEyNjtlLmZpdmVkZXZhPTI0MTE7ZS5maXZlZWlnaHRocz04NTQxO2UuZml2ZWd1amFyYXRpPTI3OTU7ZS5maXZlZ3VybXVraGk9MjY2NztlLmZpdmVoYWNrYXJhYmljPTE2Mzc7ZS5maXZlaGFuZ3pob3U9MTIzMjU7ZS5maXZlaWRlb2dyYXBoaWNwYXJlbj0xMjgzNjtlLmZpdmVpbmZlcmlvcj04MzI1O2UuZml2ZW1vbm9zcGFjZT02NTMwMTtlLmZpdmVvbGRzdHlsZT02MzI4NTtlLmZpdmVwYXJlbj05MzM2O2UuZml2ZXBlcmlvZD05MzU2O2UuZml2ZXBlcnNpYW49MTc4MTtlLmZpdmVyb21hbj04NTY0O2UuZml2ZXN1cGVyaW9yPTgzMDk7ZS5maXZldGhhaT0zNjY5O2UuZmw9NjQyNTg7ZS5mX2w9NjQyNTg7ZS5mbG9yaW49NDAyO2UuZm1vbm9zcGFjZT02NTM1MDtlLmZtc3F1YXJlPTEzMjA5O2UuZm9mYW50aGFpPTM2MTU7ZS5mb2ZhdGhhaT0zNjEzO2UuZm9uZ21hbnRoYWk9MzY2MztlLmZvcmFsbD04NzA0O2UuZm91cj01MjtlLmZvdXJhcmFiaWM9MTYzNjtlLmZvdXJiZW5nYWxpPTI1Mzg7ZS5mb3VyY2lyY2xlPTkzMTU7ZS5mb3VyY2lyY2xlaW52ZXJzZXNhbnNzZXJpZj0xMDEyNTtlLmZvdXJkZXZhPTI0MTA7ZS5mb3VyZ3VqYXJhdGk9Mjc5NDtlLmZvdXJndXJtdWtoaT0yNjY2O2UuZm91cmhhY2thcmFiaWM9MTYzNjtlLmZvdXJoYW5nemhvdT0xMjMyNDtlLmZvdXJpZGVvZ3JhcGhpY3BhcmVuPTEyODM1O2UuZm91cmluZmVyaW9yPTgzMjQ7ZS5mb3VybW9ub3NwYWNlPTY1MzAwO2UuZm91cm51bWVyYXRvcmJlbmdhbGk9MjU1MTtlLmZvdXJvbGRzdHlsZT02MzI4NDtlLmZvdXJwYXJlbj05MzM1O2UuZm91cnBlcmlvZD05MzU1O2UuZm91cnBlcnNpYW49MTc4MDtlLmZvdXJyb21hbj04NTYzO2UuZm91cnN1cGVyaW9yPTgzMDg7ZS5mb3VydGVlbmNpcmNsZT05MzI1O2UuZm91cnRlZW5wYXJlbj05MzQ1O2UuZm91cnRlZW5wZXJpb2Q9OTM2NTtlLmZvdXJ0aGFpPTM2Njg7ZS5mb3VydGh0b25lY2hpbmVzZT03MTU7ZS5mcGFyZW49OTM3NztlLmZyYWN0aW9uPTgyNjA7ZS5mcmFuYz04MzU1O2UuZz0xMDM7ZS5nYWJlbmdhbGk9MjQ1NTtlLmdhY3V0ZT01MDE7ZS5nYWRldmE9MjMyNztlLmdhZmFyYWJpYz0xNzExO2UuZ2FmZmluYWxhcmFiaWM9NjQ0MDM7ZS5nYWZpbml0aWFsYXJhYmljPTY0NDA0O2UuZ2FmbWVkaWFsYXJhYmljPTY0NDA1O2UuZ2FndWphcmF0aT0yNzExO2UuZ2FndXJtdWtoaT0yNTgzO2UuZ2FoaXJhZ2FuYT0xMjM2NDtlLmdha2F0YWthbmE9MTI0NjA7ZS5nYW1tYT05NDc7ZS5nYW1tYWxhdGluc21hbGw9NjExO2UuZ2FtbWFzdXBlcmlvcj03MzY7ZS5nYW5naWFjb3B0aWM9MTAwMztlLmdib3BvbW9mbz0xMjU1NztlLmdicmV2ZT0yODc7ZS5nY2Fyb249NDg3O2UuZ2NlZGlsbGE9MjkxO2UuZ2NpcmNsZT05NDMwO2UuZ2NpcmN1bWZsZXg9Mjg1O2UuZ2NvbW1hYWNjZW50PTI5MTtlLmdkb3Q9Mjg5O2UuZ2RvdGFjY2VudD0yODk7ZS5nZWN5cmlsbGljPTEwNzU7ZS5nZWhpcmFnYW5hPTEyMzcwO2UuZ2VrYXRha2FuYT0xMjQ2NjtlLmdlb21ldHJpY2FsbHllcXVhbD04Nzg1O2UuZ2VyZXNoYWNjZW50aGVicmV3PTE0MzY7ZS5nZXJlc2hoZWJyZXc9MTUyMztlLmdlcmVzaG11cWRhbWhlYnJldz0xNDM3O2UuZ2VybWFuZGJscz0yMjM7ZS5nZXJzaGF5aW1hY2NlbnRoZWJyZXc9MTQzODtlLmdlcnNoYXlpbWhlYnJldz0xNTI0O2UuZ2V0YW1hcms9MTIzMDc7ZS5naGFiZW5nYWxpPTI0NTY7ZS5naGFkYXJtZW5pYW49MTM5NDtlLmdoYWRldmE9MjMyODtlLmdoYWd1amFyYXRpPTI3MTI7ZS5naGFndXJtdWtoaT0yNTg0O2UuZ2hhaW5hcmFiaWM9MTU5NDtlLmdoYWluZmluYWxhcmFiaWM9NjUyMzA7ZS5naGFpbmluaXRpYWxhcmFiaWM9NjUyMzE7ZS5naGFpbm1lZGlhbGFyYWJpYz02NTIzMjtlLmdoZW1pZGRsZWhvb2tjeXJpbGxpYz0xMTczO2UuZ2hlc3Ryb2tlY3lyaWxsaWM9MTE3MTtlLmdoZXVwdHVybmN5cmlsbGljPTExNjk7ZS5naGhhZGV2YT0yMzk0O2UuZ2hoYWd1cm11a2hpPTI2NTA7ZS5naG9vaz02MDg7ZS5naHpzcXVhcmU9MTMyMDM7ZS5naWhpcmFnYW5hPTEyMzY2O2UuZ2lrYXRha2FuYT0xMjQ2MjtlLmdpbWFybWVuaWFuPTEzNzk7ZS5naW1lbD0xNDkwO2UuZ2ltZWxkYWdlc2g9NjQzMDY7ZS5naW1lbGRhZ2VzaGhlYnJldz02NDMwNjtlLmdpbWVsaGVicmV3PTE0OTA7ZS5namVjeXJpbGxpYz0xMTA3O2UuZ2xvdHRhbGludmVydGVkc3Ryb2tlPTQ0NjtlLmdsb3R0YWxzdG9wPTY2MDtlLmdsb3R0YWxzdG9waW52ZXJ0ZWQ9NjYyO2UuZ2xvdHRhbHN0b3Btb2Q9NzA0O2UuZ2xvdHRhbHN0b3ByZXZlcnNlZD02NjE7ZS5nbG90dGFsc3RvcHJldmVyc2VkbW9kPTcwNTtlLmdsb3R0YWxzdG9wcmV2ZXJzZWRzdXBlcmlvcj03NDA7ZS5nbG90dGFsc3RvcHN0cm9rZT02NzM7ZS5nbG90dGFsc3RvcHN0cm9rZXJldmVyc2VkPTY3NDtlLmdtYWNyb249NzcxMztlLmdtb25vc3BhY2U9NjUzNTE7ZS5nb2hpcmFnYW5hPTEyMzcyO2UuZ29rYXRha2FuYT0xMjQ2ODtlLmdwYXJlbj05Mzc4O2UuZ3Bhc3F1YXJlPTEzMjI4O2UuZ3JhZGllbnQ9ODcxMTtlLmdyYXZlPTk2O2UuZ3JhdmViZWxvd2NtYj03OTA7ZS5ncmF2ZWNtYj03Njg7ZS5ncmF2ZWNvbWI9NzY4O2UuZ3JhdmVkZXZhPTIzODc7ZS5ncmF2ZWxvd21vZD03MTg7ZS5ncmF2ZW1vbm9zcGFjZT02NTM0NDtlLmdyYXZldG9uZWNtYj04MzI7ZS5ncmVhdGVyPTYyO2UuZ3JlYXRlcmVxdWFsPTg4MDU7ZS5ncmVhdGVyZXF1YWxvcmxlc3M9ODkyMztlLmdyZWF0ZXJtb25vc3BhY2U9NjUzMTA7ZS5ncmVhdGVyb3JlcXVpdmFsZW50PTg4MTk7ZS5ncmVhdGVyb3JsZXNzPTg4MjM7ZS5ncmVhdGVyb3ZlcmVxdWFsPTg4MDc7ZS5ncmVhdGVyc21hbGw9NjUxMjU7ZS5nc2NyaXB0PTYwOTtlLmdzdHJva2U9NDg1O2UuZ3VoaXJhZ2FuYT0xMjM2ODtlLmd1aWxsZW1vdGxlZnQ9MTcxO2UuZ3VpbGxlbW90cmlnaHQ9MTg3O2UuZ3VpbHNpbmdsbGVmdD04MjQ5O2UuZ3VpbHNpbmdscmlnaHQ9ODI1MDtlLmd1a2F0YWthbmE9MTI0NjQ7ZS5ndXJhbXVzcXVhcmU9MTMwODA7ZS5neXNxdWFyZT0xMzI1NztlLmg9MTA0O2UuaGFhYmtoYXNpYW5jeXJpbGxpYz0xMTkzO2UuaGFhbHRvbmVhcmFiaWM9MTcyOTtlLmhhYmVuZ2FsaT0yNDg5O2UuaGFkZXNjZW5kZXJjeXJpbGxpYz0xMjAzO2UuaGFkZXZhPTIzNjE7ZS5oYWd1amFyYXRpPTI3NDU7ZS5oYWd1cm11a2hpPTI2MTc7ZS5oYWhhcmFiaWM9MTU4MTtlLmhhaGZpbmFsYXJhYmljPTY1MTg2O2UuaGFoaW5pdGlhbGFyYWJpYz02NTE4NztlLmhhaGlyYWdhbmE9MTIzOTk7ZS5oYWhtZWRpYWxhcmFiaWM9NjUxODg7ZS5oYWl0dXNxdWFyZT0xMzA5ODtlLmhha2F0YWthbmE9MTI0OTU7ZS5oYWthdGFrYW5haGFsZndpZHRoPTY1NDE4O2UuaGFsYW50Z3VybXVraGk9MjYzNztlLmhhbXphYXJhYmljPTE1Njk7ZS5oYW16YWxvd2FyYWJpYz0xNTY5O2UuaGFuZ3VsZmlsbGVyPTEyNjQ0O2UuaGFyZHNpZ25jeXJpbGxpYz0xMDk4O2UuaGFycG9vbmxlZnRiYXJidXA9ODYzNjtlLmhhcnBvb25yaWdodGJhcmJ1cD04NjQwO2UuaGFzcXVhcmU9MTMyNTg7ZS5oYXRhZnBhdGFoPTE0NTg7ZS5oYXRhZnBhdGFoMTY9MTQ1ODtlLmhhdGFmcGF0YWgyMz0xNDU4O2UuaGF0YWZwYXRhaDJmPTE0NTg7ZS5oYXRhZnBhdGFoaGVicmV3PTE0NTg7ZS5oYXRhZnBhdGFobmFycm93aGVicmV3PTE0NTg7ZS5oYXRhZnBhdGFocXVhcnRlcmhlYnJldz0xNDU4O2UuaGF0YWZwYXRhaHdpZGVoZWJyZXc9MTQ1ODtlLmhhdGFmcWFtYXRzPTE0NTk7ZS5oYXRhZnFhbWF0czFiPTE0NTk7ZS5oYXRhZnFhbWF0czI4PTE0NTk7ZS5oYXRhZnFhbWF0czM0PTE0NTk7ZS5oYXRhZnFhbWF0c2hlYnJldz0xNDU5O2UuaGF0YWZxYW1hdHNuYXJyb3doZWJyZXc9MTQ1OTtlLmhhdGFmcWFtYXRzcXVhcnRlcmhlYnJldz0xNDU5O2UuaGF0YWZxYW1hdHN3aWRlaGVicmV3PTE0NTk7ZS5oYXRhZnNlZ29sPTE0NTc7ZS5oYXRhZnNlZ29sMTc9MTQ1NztlLmhhdGFmc2Vnb2wyND0xNDU3O2UuaGF0YWZzZWdvbDMwPTE0NTc7ZS5oYXRhZnNlZ29saGVicmV3PTE0NTc7ZS5oYXRhZnNlZ29sbmFycm93aGVicmV3PTE0NTc7ZS5oYXRhZnNlZ29scXVhcnRlcmhlYnJldz0xNDU3O2UuaGF0YWZzZWdvbHdpZGVoZWJyZXc9MTQ1NztlLmhiYXI9Mjk1O2UuaGJvcG9tb2ZvPTEyNTU5O2UuaGJyZXZlYmVsb3c9NzcyMztlLmhjZWRpbGxhPTc3MjE7ZS5oY2lyY2xlPTk0MzE7ZS5oY2lyY3VtZmxleD0yOTM7ZS5oZGllcmVzaXM9NzcxOTtlLmhkb3RhY2NlbnQ9NzcxNTtlLmhkb3RiZWxvdz03NzE3O2UuaGU9MTQ5MjtlLmhlYXJ0PTk4Mjk7ZS5oZWFydHN1aXRibGFjaz05ODI5O2UuaGVhcnRzdWl0d2hpdGU9OTgyNTtlLmhlZGFnZXNoPTY0MzA4O2UuaGVkYWdlc2hoZWJyZXc9NjQzMDg7ZS5oZWhhbHRvbmVhcmFiaWM9MTcyOTtlLmhlaGFyYWJpYz0xNjA3O2UuaGVoZWJyZXc9MTQ5MjtlLmhlaGZpbmFsYWx0b25lYXJhYmljPTY0NDIzO2UuaGVoZmluYWxhbHR0d29hcmFiaWM9NjUyNTg7ZS5oZWhmaW5hbGFyYWJpYz02NTI1ODtlLmhlaGhhbXphYWJvdmVmaW5hbGFyYWJpYz02NDQyMTtlLmhlaGhhbXphYWJvdmVpc29sYXRlZGFyYWJpYz02NDQyMDtlLmhlaGluaXRpYWxhbHRvbmVhcmFiaWM9NjQ0MjQ7ZS5oZWhpbml0aWFsYXJhYmljPTY1MjU5O2UuaGVoaXJhZ2FuYT0xMjQwODtlLmhlaG1lZGlhbGFsdG9uZWFyYWJpYz02NDQyNTtlLmhlaG1lZGlhbGFyYWJpYz02NTI2MDtlLmhlaXNlaWVyYXNxdWFyZT0xMzE3OTtlLmhla2F0YWthbmE9MTI1MDQ7ZS5oZWthdGFrYW5haGFsZndpZHRoPTY1NDIxO2UuaGVrdXRhYXJ1c3F1YXJlPTEzMTEwO2UuaGVuZ2hvb2s9NjE1O2UuaGVydXR1c3F1YXJlPTEzMTEzO2UuaGV0PTE0OTU7ZS5oZXRoZWJyZXc9MTQ5NTtlLmhob29rPTYxNDtlLmhob29rc3VwZXJpb3I9Njg5O2UuaGlldWhhY2lyY2xla29yZWFuPTEyOTIzO2UuaGlldWhhcGFyZW5rb3JlYW49MTI4Mjc7ZS5oaWV1aGNpcmNsZWtvcmVhbj0xMjkwOTtlLmhpZXVoa29yZWFuPTEyNjIyO2UuaGlldWhwYXJlbmtvcmVhbj0xMjgxMztlLmhpaGlyYWdhbmE9MTI0MDI7ZS5oaWthdGFrYW5hPTEyNDk4O2UuaGlrYXRha2FuYWhhbGZ3aWR0aD02NTQxOTtlLmhpcmlxPTE0NjA7ZS5oaXJpcTE0PTE0NjA7ZS5oaXJpcTIxPTE0NjA7ZS5oaXJpcTJkPTE0NjA7ZS5oaXJpcWhlYnJldz0xNDYwO2UuaGlyaXFuYXJyb3doZWJyZXc9MTQ2MDtlLmhpcmlxcXVhcnRlcmhlYnJldz0xNDYwO2UuaGlyaXF3aWRlaGVicmV3PTE0NjA7ZS5obGluZWJlbG93PTc4MzA7ZS5obW9ub3NwYWNlPTY1MzUyO2UuaG9hcm1lbmlhbj0xMzkyO2UuaG9oaXB0aGFpPTM2Mjc7ZS5ob2hpcmFnYW5hPTEyNDExO2UuaG9rYXRha2FuYT0xMjUwNztlLmhva2F0YWthbmFoYWxmd2lkdGg9NjU0MjI7ZS5ob2xhbT0xNDY1O2UuaG9sYW0xOT0xNDY1O2UuaG9sYW0yNj0xNDY1O2UuaG9sYW0zMj0xNDY1O2UuaG9sYW1oZWJyZXc9MTQ2NTtlLmhvbGFtbmFycm93aGVicmV3PTE0NjU7ZS5ob2xhbXF1YXJ0ZXJoZWJyZXc9MTQ2NTtlLmhvbGFtd2lkZWhlYnJldz0xNDY1O2UuaG9ub2todWt0aGFpPTM2MzA7ZS5ob29rYWJvdmVjb21iPTc3NztlLmhvb2tjbWI9Nzc3O2UuaG9va3BhbGF0YWxpemVkYmVsb3djbWI9ODAxO2UuaG9va3JldHJvZmxleGJlbG93Y21iPTgwMjtlLmhvb25zcXVhcmU9MTMxMjI7ZS5ob3JpY29wdGljPTEwMDE7ZS5ob3Jpem9udGFsYmFyPTgyMTM7ZS5ob3JuY21iPTc5NTtlLmhvdHNwcmluZ3M9OTgzMjtlLmhvdXNlPTg5NjI7ZS5ocGFyZW49OTM3OTtlLmhzdXBlcmlvcj02ODg7ZS5odHVybmVkPTYxMztlLmh1aGlyYWdhbmE9MTI0MDU7ZS5odWlpdG9zcXVhcmU9MTMxMDc7ZS5odWthdGFrYW5hPTEyNTAxO2UuaHVrYXRha2FuYWhhbGZ3aWR0aD02NTQyMDtlLmh1bmdhcnVtbGF1dD03MzM7ZS5odW5nYXJ1bWxhdXRjbWI9Nzc5O2UuaHY9NDA1O2UuaHlwaGVuPTQ1O2UuaHlwaGVuaW5mZXJpb3I9NjMyMDU7ZS5oeXBoZW5tb25vc3BhY2U9NjUyOTM7ZS5oeXBoZW5zbWFsbD02NTEyMztlLmh5cGhlbnN1cGVyaW9yPTYzMjA2O2UuaHlwaGVudHdvPTgyMDg7ZS5pPTEwNTtlLmlhY3V0ZT0yMzc7ZS5pYWN5cmlsbGljPTExMDM7ZS5pYmVuZ2FsaT0yNDM5O2UuaWJvcG9tb2ZvPTEyNTgzO2UuaWJyZXZlPTMwMTtlLmljYXJvbj00NjQ7ZS5pY2lyY2xlPTk0MzI7ZS5pY2lyY3VtZmxleD0yMzg7ZS5pY3lyaWxsaWM9MTExMDtlLmlkYmxncmF2ZT01MjE7ZS5pZGVvZ3JhcGhlYXJ0aGNpcmNsZT0xMjk0MztlLmlkZW9ncmFwaGZpcmVjaXJjbGU9MTI5Mzk7ZS5pZGVvZ3JhcGhpY2FsbGlhbmNlcGFyZW49MTI4NjM7ZS5pZGVvZ3JhcGhpY2NhbGxwYXJlbj0xMjg1ODtlLmlkZW9ncmFwaGljY2VudHJlY2lyY2xlPTEyOTY1O2UuaWRlb2dyYXBoaWNjbG9zZT0xMjI5NDtlLmlkZW9ncmFwaGljY29tbWE9MTIyODk7ZS5pZGVvZ3JhcGhpY2NvbW1hbGVmdD02NTM4MDtlLmlkZW9ncmFwaGljY29uZ3JhdHVsYXRpb25wYXJlbj0xMjg1NTtlLmlkZW9ncmFwaGljY29ycmVjdGNpcmNsZT0xMjk2MztlLmlkZW9ncmFwaGljZWFydGhwYXJlbj0xMjg0NztlLmlkZW9ncmFwaGljZW50ZXJwcmlzZXBhcmVuPTEyODYxO2UuaWRlb2dyYXBoaWNleGNlbGxlbnRjaXJjbGU9MTI5NTc7ZS5pZGVvZ3JhcGhpY2Zlc3RpdmFscGFyZW49MTI4NjQ7ZS5pZGVvZ3JhcGhpY2ZpbmFuY2lhbGNpcmNsZT0xMjk1MDtlLmlkZW9ncmFwaGljZmluYW5jaWFscGFyZW49MTI4NTQ7ZS5pZGVvZ3JhcGhpY2ZpcmVwYXJlbj0xMjg0MztlLmlkZW9ncmFwaGljaGF2ZXBhcmVuPTEyODUwO2UuaWRlb2dyYXBoaWNoaWdoY2lyY2xlPTEyOTY0O2UuaWRlb2dyYXBoaWNpdGVyYXRpb25tYXJrPTEyMjkzO2UuaWRlb2dyYXBoaWNsYWJvcmNpcmNsZT0xMjk1MjtlLmlkZW9ncmFwaGljbGFib3JwYXJlbj0xMjg1NjtlLmlkZW9ncmFwaGljbGVmdGNpcmNsZT0xMjk2NztlLmlkZW9ncmFwaGljbG93Y2lyY2xlPTEyOTY2O2UuaWRlb2dyYXBoaWNtZWRpY2luZWNpcmNsZT0xMjk2OTtlLmlkZW9ncmFwaGljbWV0YWxwYXJlbj0xMjg0NjtlLmlkZW9ncmFwaGljbW9vbnBhcmVuPTEyODQyO2UuaWRlb2dyYXBoaWNuYW1lcGFyZW49MTI4NTI7ZS5pZGVvZ3JhcGhpY3BlcmlvZD0xMjI5MDtlLmlkZW9ncmFwaGljcHJpbnRjaXJjbGU9MTI5NTg7ZS5pZGVvZ3JhcGhpY3JlYWNocGFyZW49MTI4Njc7ZS5pZGVvZ3JhcGhpY3JlcHJlc2VudHBhcmVuPTEyODU3O2UuaWRlb2dyYXBoaWNyZXNvdXJjZXBhcmVuPTEyODYyO2UuaWRlb2dyYXBoaWNyaWdodGNpcmNsZT0xMjk2ODtlLmlkZW9ncmFwaGljc2VjcmV0Y2lyY2xlPTEyOTUzO2UuaWRlb2dyYXBoaWNzZWxmcGFyZW49MTI4NjY7ZS5pZGVvZ3JhcGhpY3NvY2lldHlwYXJlbj0xMjg1MTtlLmlkZW9ncmFwaGljc3BhY2U9MTIyODg7ZS5pZGVvZ3JhcGhpY3NwZWNpYWxwYXJlbj0xMjg1MztlLmlkZW9ncmFwaGljc3RvY2twYXJlbj0xMjg0OTtlLmlkZW9ncmFwaGljc3R1ZHlwYXJlbj0xMjg1OTtlLmlkZW9ncmFwaGljc3VucGFyZW49MTI4NDg7ZS5pZGVvZ3JhcGhpY3N1cGVydmlzZXBhcmVuPTEyODYwO2UuaWRlb2dyYXBoaWN3YXRlcnBhcmVuPTEyODQ0O2UuaWRlb2dyYXBoaWN3b29kcGFyZW49MTI4NDU7ZS5pZGVvZ3JhcGhpY3plcm89MTIyOTU7ZS5pZGVvZ3JhcGhtZXRhbGNpcmNsZT0xMjk0MjtlLmlkZW9ncmFwaG1vb25jaXJjbGU9MTI5Mzg7ZS5pZGVvZ3JhcGhuYW1lY2lyY2xlPTEyOTQ4O2UuaWRlb2dyYXBoc3VuY2lyY2xlPTEyOTQ0O2UuaWRlb2dyYXBod2F0ZXJjaXJjbGU9MTI5NDA7ZS5pZGVvZ3JhcGh3b29kY2lyY2xlPTEyOTQxO2UuaWRldmE9MjMxMTtlLmlkaWVyZXNpcz0yMzk7ZS5pZGllcmVzaXNhY3V0ZT03NzI3O2UuaWRpZXJlc2lzY3lyaWxsaWM9MTI1MztlLmlkb3RiZWxvdz03ODgzO2UuaWVicmV2ZWN5cmlsbGljPTEyMzk7ZS5pZWN5cmlsbGljPTEwNzc7ZS5pZXVuZ2FjaXJjbGVrb3JlYW49MTI5MTc7ZS5pZXVuZ2FwYXJlbmtvcmVhbj0xMjgyMTtlLmlldW5nY2lyY2xla29yZWFuPTEyOTAzO2UuaWV1bmdrb3JlYW49MTI2MTU7ZS5pZXVuZ3BhcmVua29yZWFuPTEyODA3O2UuaWdyYXZlPTIzNjtlLmlndWphcmF0aT0yNjk1O2UuaWd1cm11a2hpPTI1Njc7ZS5paGlyYWdhbmE9MTIzNTY7ZS5paG9va2Fib3ZlPTc4ODE7ZS5paWJlbmdhbGk9MjQ0MDtlLmlpY3lyaWxsaWM9MTA4MDtlLmlpZGV2YT0yMzEyO2UuaWlndWphcmF0aT0yNjk2O2UuaWlndXJtdWtoaT0yNTY4O2UuaWltYXRyYWd1cm11a2hpPTI2MjQ7ZS5paW52ZXJ0ZWRicmV2ZT01MjM7ZS5paXNob3J0Y3lyaWxsaWM9MTA4MTtlLmlpdm93ZWxzaWduYmVuZ2FsaT0yNDk2O2UuaWl2b3dlbHNpZ25kZXZhPTIzNjg7ZS5paXZvd2Vsc2lnbmd1amFyYXRpPTI3NTI7ZS5paj0zMDc7ZS5pa2F0YWthbmE9MTI0NTI7ZS5pa2F0YWthbmFoYWxmd2lkdGg9NjUzOTQ7ZS5pa29yZWFuPTEyNjQzO2UuaWxkZT03MzI7ZS5pbHV5aGVicmV3PTE0NTI7ZS5pbWFjcm9uPTI5OTtlLmltYWNyb25jeXJpbGxpYz0xMjUxO2UuaW1hZ2VvcmFwcHJveGltYXRlbHllcXVhbD04Nzg3O2UuaW1hdHJhZ3VybXVraGk9MjYyMztlLmltb25vc3BhY2U9NjUzNTM7ZS5pbmNyZW1lbnQ9ODcxMDtlLmluZmluaXR5PTg3MzQ7ZS5pbmlhcm1lbmlhbj0xMzg3O2UuaW50ZWdyYWw9ODc0NztlLmludGVncmFsYm90dG9tPTg5OTM7ZS5pbnRlZ3JhbGJ0PTg5OTM7ZS5pbnRlZ3JhbGV4PTYzNzMzO2UuaW50ZWdyYWx0b3A9ODk5MjtlLmludGVncmFsdHA9ODk5MjtlLmludGVyc2VjdGlvbj04NzQ1O2UuaW50aXNxdWFyZT0xMzA2MTtlLmludmJ1bGxldD05Njg4O2UuaW52Y2lyY2xlPTk2ODk7ZS5pbnZzbWlsZWZhY2U9OTc4NztlLmlvY3lyaWxsaWM9MTEwNTtlLmlvZ29uZWs9MzAzO2UuaW90YT05NTM7ZS5pb3RhZGllcmVzaXM9OTcwO2UuaW90YWRpZXJlc2lzdG9ub3M9OTEyO2UuaW90YWxhdGluPTYxNztlLmlvdGF0b25vcz05NDM7ZS5pcGFyZW49OTM4MDtlLmlyaWd1cm11a2hpPTI2NzQ7ZS5pc21hbGxoaXJhZ2FuYT0xMjM1NTtlLmlzbWFsbGthdGFrYW5hPTEyNDUxO2UuaXNtYWxsa2F0YWthbmFoYWxmd2lkdGg9NjUzODQ7ZS5pc3NoYXJiZW5nYWxpPTI1NTQ7ZS5pc3Ryb2tlPTYxNjtlLmlzdXBlcmlvcj02MzIxMztlLml0ZXJhdGlvbmhpcmFnYW5hPTEyNDQ1O2UuaXRlcmF0aW9ua2F0YWthbmE9MTI1NDE7ZS5pdGlsZGU9Mjk3O2UuaXRpbGRlYmVsb3c9NzcyNTtlLml1Ym9wb21vZm89MTI1ODU7ZS5pdWN5cmlsbGljPTExMDI7ZS5pdm93ZWxzaWduYmVuZ2FsaT0yNDk1O2UuaXZvd2Vsc2lnbmRldmE9MjM2NztlLml2b3dlbHNpZ25ndWphcmF0aT0yNzUxO2UuaXpoaXRzYWN5cmlsbGljPTExNDE7ZS5pemhpdHNhZGJsZ3JhdmVjeXJpbGxpYz0xMTQzO2Uuaj0xMDY7ZS5qYWFybWVuaWFuPTEzOTM7ZS5qYWJlbmdhbGk9MjQ2MDtlLmphZGV2YT0yMzMyO2UuamFndWphcmF0aT0yNzE2O2UuamFndXJtdWtoaT0yNTg4O2UuamJvcG9tb2ZvPTEyNTYwO2UuamNhcm9uPTQ5NjtlLmpjaXJjbGU9OTQzMztlLmpjaXJjdW1mbGV4PTMwOTtlLmpjcm9zc2VkdGFpbD02Njk7ZS5qZG90bGVzc3N0cm9rZT02MDc7ZS5qZWN5cmlsbGljPTExMTI7ZS5qZWVtYXJhYmljPTE1ODA7ZS5qZWVtZmluYWxhcmFiaWM9NjUxODI7ZS5qZWVtaW5pdGlhbGFyYWJpYz02NTE4MztlLmplZW1tZWRpYWxhcmFiaWM9NjUxODQ7ZS5qZWhhcmFiaWM9MTY4ODtlLmplaGZpbmFsYXJhYmljPTY0Mzk1O2UuamhhYmVuZ2FsaT0yNDYxO2UuamhhZGV2YT0yMzMzO2UuamhhZ3VqYXJhdGk9MjcxNztlLmpoYWd1cm11a2hpPTI1ODk7ZS5qaGVoYXJtZW5pYW49MTQwMztlLmppcz0xMjI5MjtlLmptb25vc3BhY2U9NjUzNTQ7ZS5qcGFyZW49OTM4MTtlLmpzdXBlcmlvcj02OTA7ZS5rPTEwNztlLmthYmFzaGtpcmN5cmlsbGljPTExODU7ZS5rYWJlbmdhbGk9MjQ1MztlLmthY3V0ZT03NzI5O2Uua2FjeXJpbGxpYz0xMDgyO2Uua2FkZXNjZW5kZXJjeXJpbGxpYz0xMTc5O2Uua2FkZXZhPTIzMjU7ZS5rYWY9MTQ5OTtlLmthZmFyYWJpYz0xNjAzO2Uua2FmZGFnZXNoPTY0MzE1O2Uua2FmZGFnZXNoaGVicmV3PTY0MzE1O2Uua2FmZmluYWxhcmFiaWM9NjUyNDI7ZS5rYWZoZWJyZXc9MTQ5OTtlLmthZmluaXRpYWxhcmFiaWM9NjUyNDM7ZS5rYWZtZWRpYWxhcmFiaWM9NjUyNDQ7ZS5rYWZyYWZlaGVicmV3PTY0MzMzO2Uua2FndWphcmF0aT0yNzA5O2Uua2FndXJtdWtoaT0yNTgxO2Uua2FoaXJhZ2FuYT0xMjM2MztlLmthaG9va2N5cmlsbGljPTEyMjA7ZS5rYWthdGFrYW5hPTEyNDU5O2Uua2FrYXRha2FuYWhhbGZ3aWR0aD02NTM5ODtlLmthcHBhPTk1NDtlLmthcHBhc3ltYm9sZ3JlZWs9MTAwODtlLmthcHllb3VubWlldW1rb3JlYW49MTI2NTc7ZS5rYXB5ZW91bnBoaWV1cGhrb3JlYW49MTI2NzY7ZS5rYXB5ZW91bnBpZXVwa29yZWFuPTEyNjY0O2Uua2FweWVvdW5zc2FuZ3BpZXVwa29yZWFuPTEyNjY1O2Uua2Fyb3JpaXNxdWFyZT0xMzA2OTtlLmthc2hpZGFhdXRvYXJhYmljPTE2MDA7ZS5rYXNoaWRhYXV0b25vc2lkZWJlYXJpbmdhcmFiaWM9MTYwMDtlLmthc21hbGxrYXRha2FuYT0xMjUzMztlLmthc3F1YXJlPTEzMTg4O2Uua2FzcmFhcmFiaWM9MTYxNjtlLmthc3JhdGFuYXJhYmljPTE2MTM7ZS5rYXN0cm9rZWN5cmlsbGljPTExODM7ZS5rYXRhaGlyYXByb2xvbmdtYXJraGFsZndpZHRoPTY1MzkyO2Uua2F2ZXJ0aWNhbHN0cm9rZWN5cmlsbGljPTExODE7ZS5rYm9wb21vZm89MTI1NTg7ZS5rY2Fsc3F1YXJlPTEzMTkzO2Uua2Nhcm9uPTQ4OTtlLmtjZWRpbGxhPTMxMTtlLmtjaXJjbGU9OTQzNDtlLmtjb21tYWFjY2VudD0zMTE7ZS5rZG90YmVsb3c9NzczMTtlLmtlaGFybWVuaWFuPTE0MTI7ZS5rZWhpcmFnYW5hPTEyMzY5O2Uua2VrYXRha2FuYT0xMjQ2NTtlLmtla2F0YWthbmFoYWxmd2lkdGg9NjU0MDE7ZS5rZW5hcm1lbmlhbj0xMzkxO2Uua2VzbWFsbGthdGFrYW5hPTEyNTM0O2Uua2dyZWVubGFuZGljPTMxMjtlLmtoYWJlbmdhbGk9MjQ1NDtlLmtoYWN5cmlsbGljPTEwOTM7ZS5raGFkZXZhPTIzMjY7ZS5raGFndWphcmF0aT0yNzEwO2Uua2hhZ3VybXVraGk9MjU4MjtlLmtoYWhhcmFiaWM9MTU4MjtlLmtoYWhmaW5hbGFyYWJpYz02NTE5MDtlLmtoYWhpbml0aWFsYXJhYmljPTY1MTkxO2Uua2hhaG1lZGlhbGFyYWJpYz02NTE5MjtlLmtoZWljb3B0aWM9OTk5O2Uua2hoYWRldmE9MjM5MztlLmtoaGFndXJtdWtoaT0yNjQ5O2Uua2hpZXVraGFjaXJjbGVrb3JlYW49MTI5MjA7ZS5raGlldWtoYXBhcmVua29yZWFuPTEyODI0O2Uua2hpZXVraGNpcmNsZWtvcmVhbj0xMjkwNjtlLmtoaWV1a2hrb3JlYW49MTI2MTk7ZS5raGlldWtocGFyZW5rb3JlYW49MTI4MTA7ZS5raG9raGFpdGhhaT0zNTg2O2Uua2hva2hvbnRoYWk9MzU4OTtlLmtob2todWF0dGhhaT0zNTg3O2Uua2hva2h3YWl0aGFpPTM1ODg7ZS5raG9tdXR0aGFpPTM2NzU7ZS5raG9vaz00MDk7ZS5raG9yYWtoYW5ndGhhaT0zNTkwO2Uua2h6c3F1YXJlPTEzMjAxO2Uua2loaXJhZ2FuYT0xMjM2NTtlLmtpa2F0YWthbmE9MTI0NjE7ZS5raWthdGFrYW5haGFsZndpZHRoPTY1Mzk5O2Uua2lyb2d1cmFtdXNxdWFyZT0xMzA3NztlLmtpcm9tZWV0b3J1c3F1YXJlPTEzMDc4O2Uua2lyb3NxdWFyZT0xMzA3NjtlLmtpeWVva2FjaXJjbGVrb3JlYW49MTI5MTA7ZS5raXllb2thcGFyZW5rb3JlYW49MTI4MTQ7ZS5raXllb2tjaXJjbGVrb3JlYW49MTI4OTY7ZS5raXllb2trb3JlYW49MTI1OTM7ZS5raXllb2twYXJlbmtvcmVhbj0xMjgwMDtlLmtpeWVva3Npb3Nrb3JlYW49MTI1OTU7ZS5ramVjeXJpbGxpYz0xMTE2O2Uua2xpbmViZWxvdz03NzMzO2Uua2xzcXVhcmU9MTMyMDg7ZS5rbWN1YmVkc3F1YXJlPTEzMjIyO2Uua21vbm9zcGFjZT02NTM1NTtlLmttc3F1YXJlZHNxdWFyZT0xMzIxODtlLmtvaGlyYWdhbmE9MTIzNzE7ZS5rb2htc3F1YXJlPTEzMjQ4O2Uua29rYWl0aGFpPTM1ODU7ZS5rb2thdGFrYW5hPTEyNDY3O2Uua29rYXRha2FuYWhhbGZ3aWR0aD02NTQwMjtlLmtvb3Bvc3F1YXJlPTEzMDg2O2Uua29wcGFjeXJpbGxpYz0xMTUzO2Uua29yZWFuc3RhbmRhcmRzeW1ib2w9MTI5Mjc7ZS5rb3JvbmlzY21iPTgzNTtlLmtwYXJlbj05MzgyO2Uua3Bhc3F1YXJlPTEzMjI2O2Uua3NpY3lyaWxsaWM9MTEzNTtlLmt0c3F1YXJlPTEzMjYzO2Uua3R1cm5lZD02NzA7ZS5rdWhpcmFnYW5hPTEyMzY3O2Uua3VrYXRha2FuYT0xMjQ2MztlLmt1a2F0YWthbmFoYWxmd2lkdGg9NjU0MDA7ZS5rdnNxdWFyZT0xMzI0MDtlLmt3c3F1YXJlPTEzMjQ2O2UubD0xMDg7ZS5sYWJlbmdhbGk9MjQ4MjtlLmxhY3V0ZT0zMTQ7ZS5sYWRldmE9MjM1NDtlLmxhZ3VqYXJhdGk9MjczODtlLmxhZ3VybXVraGk9MjYxMDtlLmxha2toYW5neWFvdGhhaT0zNjUzO2UubGFtYWxlZmZpbmFsYXJhYmljPTY1Mjc2O2UubGFtYWxlZmhhbXphYWJvdmVmaW5hbGFyYWJpYz02NTI3MjtlLmxhbWFsZWZoYW16YWFib3ZlaXNvbGF0ZWRhcmFiaWM9NjUyNzE7ZS5sYW1hbGVmaGFtemFiZWxvd2ZpbmFsYXJhYmljPTY1Mjc0O2UubGFtYWxlZmhhbXphYmVsb3dpc29sYXRlZGFyYWJpYz02NTI3MztlLmxhbWFsZWZpc29sYXRlZGFyYWJpYz02NTI3NTtlLmxhbWFsZWZtYWRkYWFib3ZlZmluYWxhcmFiaWM9NjUyNzA7ZS5sYW1hbGVmbWFkZGFhYm92ZWlzb2xhdGVkYXJhYmljPTY1MjY5O2UubGFtYXJhYmljPTE2MDQ7ZS5sYW1iZGE9OTU1O2UubGFtYmRhc3Ryb2tlPTQxMTtlLmxhbWVkPTE1MDA7ZS5sYW1lZGRhZ2VzaD02NDMxNjtlLmxhbWVkZGFnZXNoaGVicmV3PTY0MzE2O2UubGFtZWRoZWJyZXc9MTUwMDtlLmxhbWZpbmFsYXJhYmljPTY1MjQ2O2UubGFtaGFoaW5pdGlhbGFyYWJpYz02NDcxNDtlLmxhbWluaXRpYWxhcmFiaWM9NjUyNDc7ZS5sYW1qZWVtaW5pdGlhbGFyYWJpYz02NDcxMztlLmxhbWtoYWhpbml0aWFsYXJhYmljPTY0NzE1O2UubGFtbGFtaGVoaXNvbGF0ZWRhcmFiaWM9NjUwMTA7ZS5sYW1tZWRpYWxhcmFiaWM9NjUyNDg7ZS5sYW1tZWVtaGFoaW5pdGlhbGFyYWJpYz02NDkwNDtlLmxhbW1lZW1pbml0aWFsYXJhYmljPTY0NzE2O2UubGFyZ2VjaXJjbGU9OTcxMTtlLmxiYXI9NDEwO2UubGJlbHQ9NjIwO2UubGJvcG9tb2ZvPTEyNTU2O2UubGNhcm9uPTMxODtlLmxjZWRpbGxhPTMxNjtlLmxjaXJjbGU9OTQzNTtlLmxjaXJjdW1mbGV4YmVsb3c9Nzc0MTtlLmxjb21tYWFjY2VudD0zMTY7ZS5sZG90PTMyMDtlLmxkb3RhY2NlbnQ9MzIwO2UubGRvdGJlbG93PTc3MzU7ZS5sZG90YmVsb3dtYWNyb249NzczNztlLmxlZnRhbmdsZWFib3ZlY21iPTc5NDtlLmxlZnR0YWNrYmVsb3djbWI9NzkyO2UubGVzcz02MDtlLmxlc3NlcXVhbD04ODA0O2UubGVzc2VxdWFsb3JncmVhdGVyPTg5MjI7ZS5sZXNzbW9ub3NwYWNlPTY1MzA4O2UubGVzc29yZXF1aXZhbGVudD04ODE4O2UubGVzc29yZ3JlYXRlcj04ODIyO2UubGVzc292ZXJlcXVhbD04ODA2O2UubGVzc3NtYWxsPTY1MTI0O2UubGV6aD02MjI7ZS5sZmJsb2NrPTk2MTI7ZS5saG9va3JldHJvZmxleD02MjE7ZS5saXJhPTgzNTY7ZS5saXduYXJtZW5pYW49MTM4ODtlLmxqPTQ1NztlLmxqZWN5cmlsbGljPTExMTM7ZS5sbD02MzE2ODtlLmxsYWRldmE9MjM1NTtlLmxsYWd1amFyYXRpPTI3Mzk7ZS5sbGluZWJlbG93PTc3Mzk7ZS5sbGxhZGV2YT0yMzU2O2UubGx2b2NhbGljYmVuZ2FsaT0yNTI5O2UubGx2b2NhbGljZGV2YT0yNDAxO2UubGx2b2NhbGljdm93ZWxzaWduYmVuZ2FsaT0yNTMxO2UubGx2b2NhbGljdm93ZWxzaWduZGV2YT0yNDAzO2UubG1pZGRsZXRpbGRlPTYxOTtlLmxtb25vc3BhY2U9NjUzNTY7ZS5sbXNxdWFyZT0xMzI2NDtlLmxvY2h1bGF0aGFpPTM2Mjg7ZS5sb2dpY2FsYW5kPTg3NDM7ZS5sb2dpY2Fsbm90PTE3MjtlLmxvZ2ljYWxub3RyZXZlcnNlZD04OTc2O2UubG9naWNhbG9yPTg3NDQ7ZS5sb2xpbmd0aGFpPTM2MjE7ZS5sb25ncz0zODM7ZS5sb3dsaW5lY2VudGVybGluZT02NTEwMjtlLmxvd2xpbmVjbWI9ODE4O2UubG93bGluZWRhc2hlZD02NTEwMTtlLmxvemVuZ2U9OTY3NDtlLmxwYXJlbj05MzgzO2UubHNsYXNoPTMyMjtlLmxzcXVhcmU9ODQ2NztlLmxzdXBlcmlvcj02MzIxNDtlLmx0c2hhZGU9OTYxNztlLmx1dGhhaT0zNjIyO2UubHZvY2FsaWNiZW5nYWxpPTI0NDQ7ZS5sdm9jYWxpY2RldmE9MjMxNjtlLmx2b2NhbGljdm93ZWxzaWduYmVuZ2FsaT0yNTMwO2UubHZvY2FsaWN2b3dlbHNpZ25kZXZhPTI0MDI7ZS5seHNxdWFyZT0xMzI2NztlLm09MTA5O2UubWFiZW5nYWxpPTI0Nzg7ZS5tYWNyb249MTc1O2UubWFjcm9uYmVsb3djbWI9ODE3O2UubWFjcm9uY21iPTc3MjtlLm1hY3Jvbmxvd21vZD03MTc7ZS5tYWNyb25tb25vc3BhY2U9NjU1MDc7ZS5tYWN1dGU9Nzc0MztlLm1hZGV2YT0yMzUwO2UubWFndWphcmF0aT0yNzM0O2UubWFndXJtdWtoaT0yNjA2O2UubWFoYXBha2hoZWJyZXc9MTQ0NDtlLm1haGFwYWtobGVmdGhlYnJldz0xNDQ0O2UubWFoaXJhZ2FuYT0xMjQxNDtlLm1haWNoYXR0YXdhbG93bGVmdHRoYWk9NjM2Mzc7ZS5tYWljaGF0dGF3YWxvd3JpZ2h0dGhhaT02MzYzNjtlLm1haWNoYXR0YXdhdGhhaT0zNjU5O2UubWFpY2hhdHRhd2F1cHBlcmxlZnR0aGFpPTYzNjM1O2UubWFpZWtsb3dsZWZ0dGhhaT02MzYyODtlLm1haWVrbG93cmlnaHR0aGFpPTYzNjI3O2UubWFpZWt0aGFpPTM2NTY7ZS5tYWlla3VwcGVybGVmdHRoYWk9NjM2MjY7ZS5tYWloYW5ha2F0bGVmdHRoYWk9NjM2MjA7ZS5tYWloYW5ha2F0dGhhaT0zNjMzO2UubWFpdGFpa2h1bGVmdHRoYWk9NjM2MjU7ZS5tYWl0YWlraHV0aGFpPTM2NTU7ZS5tYWl0aG9sb3dsZWZ0dGhhaT02MzYzMTtlLm1haXRob2xvd3JpZ2h0dGhhaT02MzYzMDtlLm1haXRob3RoYWk9MzY1NztlLm1haXRob3VwcGVybGVmdHRoYWk9NjM2Mjk7ZS5tYWl0cmlsb3dsZWZ0dGhhaT02MzYzNDtlLm1haXRyaWxvd3JpZ2h0dGhhaT02MzYzMztlLm1haXRyaXRoYWk9MzY1ODtlLm1haXRyaXVwcGVybGVmdHRoYWk9NjM2MzI7ZS5tYWl5YW1va3RoYWk9MzY1NDtlLm1ha2F0YWthbmE9MTI1MTA7ZS5tYWthdGFrYW5haGFsZndpZHRoPTY1NDIzO2UubWFsZT05Nzk0O2UubWFuc3lvbnNxdWFyZT0xMzEyNztlLm1hcWFmaGVicmV3PTE0NzA7ZS5tYXJzPTk3OTQ7ZS5tYXNvcmFjaXJjbGVoZWJyZXc9MTQ1NTtlLm1hc3F1YXJlPTEzMTg3O2UubWJvcG9tb2ZvPTEyNTUxO2UubWJzcXVhcmU9MTMyNjg7ZS5tY2lyY2xlPTk0MzY7ZS5tY3ViZWRzcXVhcmU9MTMyMjE7ZS5tZG90YWNjZW50PTc3NDU7ZS5tZG90YmVsb3c9Nzc0NztlLm1lZW1hcmFiaWM9MTYwNTtlLm1lZW1maW5hbGFyYWJpYz02NTI1MDtlLm1lZW1pbml0aWFsYXJhYmljPTY1MjUxO2UubWVlbW1lZGlhbGFyYWJpYz02NTI1MjtlLm1lZW1tZWVtaW5pdGlhbGFyYWJpYz02NDcyMTtlLm1lZW1tZWVtaXNvbGF0ZWRhcmFiaWM9NjQ1ODQ7ZS5tZWV0b3J1c3F1YXJlPTEzMTMzO2UubWVoaXJhZ2FuYT0xMjQxNztlLm1laXppZXJhc3F1YXJlPTEzMTgyO2UubWVrYXRha2FuYT0xMjUxMztlLm1la2F0YWthbmFoYWxmd2lkdGg9NjU0MjY7ZS5tZW09MTUwMjtlLm1lbWRhZ2VzaD02NDMxODtlLm1lbWRhZ2VzaGhlYnJldz02NDMxODtlLm1lbWhlYnJldz0xNTAyO2UubWVuYXJtZW5pYW49MTM5NjtlLm1lcmtoYWhlYnJldz0xNDQ1O2UubWVya2hha2VmdWxhaGVicmV3PTE0NDY7ZS5tZXJraGFrZWZ1bGFsZWZ0aGVicmV3PTE0NDY7ZS5tZXJraGFsZWZ0aGVicmV3PTE0NDU7ZS5taG9vaz02MjU7ZS5taHpzcXVhcmU9MTMyMDI7ZS5taWRkbGVkb3RrYXRha2FuYWhhbGZ3aWR0aD02NTM4MTtlLm1pZGRvdD0xODM7ZS5taWV1bWFjaXJjbGVrb3JlYW49MTI5MTQ7ZS5taWV1bWFwYXJlbmtvcmVhbj0xMjgxODtlLm1pZXVtY2lyY2xla29yZWFuPTEyOTAwO2UubWlldW1rb3JlYW49MTI2MDk7ZS5taWV1bXBhbnNpb3Nrb3JlYW49MTI2NTY7ZS5taWV1bXBhcmVua29yZWFuPTEyODA0O2UubWlldW1waWV1cGtvcmVhbj0xMjY1NDtlLm1pZXVtc2lvc2tvcmVhbj0xMjY1NTtlLm1paGlyYWdhbmE9MTI0MTU7ZS5taWthdGFrYW5hPTEyNTExO2UubWlrYXRha2FuYWhhbGZ3aWR0aD02NTQyNDtlLm1pbnVzPTg3MjI7ZS5taW51c2JlbG93Y21iPTgwMDtlLm1pbnVzY2lyY2xlPTg4NTQ7ZS5taW51c21vZD03Mjc7ZS5taW51c3BsdXM9ODcyMztlLm1pbnV0ZT04MjQyO2UubWlyaWJhYXJ1c3F1YXJlPTEzMTMwO2UubWlyaXNxdWFyZT0xMzEyOTtlLm1sb25nbGVndHVybmVkPTYyNDtlLm1sc3F1YXJlPTEzMjA2O2UubW1jdWJlZHNxdWFyZT0xMzIxOTtlLm1tb25vc3BhY2U9NjUzNTc7ZS5tbXNxdWFyZWRzcXVhcmU9MTMyMTU7ZS5tb2hpcmFnYW5hPTEyNDE4O2UubW9obXNxdWFyZT0xMzI0OTtlLm1va2F0YWthbmE9MTI1MTQ7ZS5tb2thdGFrYW5haGFsZndpZHRoPTY1NDI3O2UubW9sc3F1YXJlPTEzMjcwO2UubW9tYXRoYWk9MzYxNztlLm1vdmVyc3NxdWFyZT0xMzIyMztlLm1vdmVyc3NxdWFyZWRzcXVhcmU9MTMyMjQ7ZS5tcGFyZW49OTM4NDtlLm1wYXNxdWFyZT0xMzIyNztlLm1zc3F1YXJlPTEzMjM1O2UubXN1cGVyaW9yPTYzMjE1O2UubXR1cm5lZD02MjM7ZS5tdT0xODE7ZS5tdTE9MTgxO2UubXVhc3F1YXJlPTEzMTg2O2UubXVjaGdyZWF0ZXI9ODgxMTtlLm11Y2hsZXNzPTg4MTA7ZS5tdWZzcXVhcmU9MTMxOTY7ZS5tdWdyZWVrPTk1NjtlLm11Z3NxdWFyZT0xMzE5NztlLm11aGlyYWdhbmE9MTI0MTY7ZS5tdWthdGFrYW5hPTEyNTEyO2UubXVrYXRha2FuYWhhbGZ3aWR0aD02NTQyNTtlLm11bHNxdWFyZT0xMzIwNTtlLm11bHRpcGx5PTIxNTtlLm11bXNxdWFyZT0xMzIxMTtlLm11bmFoaGVicmV3PTE0NDM7ZS5tdW5haGxlZnRoZWJyZXc9MTQ0MztlLm11c2ljYWxub3RlPTk4MzQ7ZS5tdXNpY2Fsbm90ZWRibD05ODM1O2UubXVzaWNmbGF0c2lnbj05ODM3O2UubXVzaWNzaGFycHNpZ249OTgzOTtlLm11c3NxdWFyZT0xMzIzNDtlLm11dnNxdWFyZT0xMzIzODtlLm11d3NxdWFyZT0xMzI0NDtlLm12bWVnYXNxdWFyZT0xMzI0MTtlLm12c3F1YXJlPTEzMjM5O2UubXdtZWdhc3F1YXJlPTEzMjQ3O2UubXdzcXVhcmU9MTMyNDU7ZS5uPTExMDtlLm5hYmVuZ2FsaT0yNDcyO2UubmFibGE9ODcxMTtlLm5hY3V0ZT0zMjQ7ZS5uYWRldmE9MjM0NDtlLm5hZ3VqYXJhdGk9MjcyODtlLm5hZ3VybXVraGk9MjYwMDtlLm5haGlyYWdhbmE9MTIzOTQ7ZS5uYWthdGFrYW5hPTEyNDkwO2UubmFrYXRha2FuYWhhbGZ3aWR0aD02NTQxMztlLm5hcG9zdHJvcGhlPTMyOTtlLm5hc3F1YXJlPTEzMTg1O2UubmJvcG9tb2ZvPTEyNTU1O2UubmJzcGFjZT0xNjA7ZS5uY2Fyb249MzI4O2UubmNlZGlsbGE9MzI2O2UubmNpcmNsZT05NDM3O2UubmNpcmN1bWZsZXhiZWxvdz03NzU1O2UubmNvbW1hYWNjZW50PTMyNjtlLm5kb3RhY2NlbnQ9Nzc0OTtlLm5kb3RiZWxvdz03NzUxO2UubmVoaXJhZ2FuYT0xMjM5NztlLm5la2F0YWthbmE9MTI0OTM7ZS5uZWthdGFrYW5haGFsZndpZHRoPTY1NDE2O2UubmV3c2hlcWVsc2lnbj04MzYyO2UubmZzcXVhcmU9MTMxOTU7ZS5uZ2FiZW5nYWxpPTI0NTc7ZS5uZ2FkZXZhPTIzMjk7ZS5uZ2FndWphcmF0aT0yNzEzO2UubmdhZ3VybXVraGk9MjU4NTtlLm5nb25ndXRoYWk9MzU5MTtlLm5oaXJhZ2FuYT0xMjQzNTtlLm5ob29rbGVmdD02MjY7ZS5uaG9va3JldHJvZmxleD02Mjc7ZS5uaWV1bmFjaXJjbGVrb3JlYW49MTI5MTE7ZS5uaWV1bmFwYXJlbmtvcmVhbj0xMjgxNTtlLm5pZXVuY2lldWNrb3JlYW49MTI1OTc7ZS5uaWV1bmNpcmNsZWtvcmVhbj0xMjg5NztlLm5pZXVuaGlldWhrb3JlYW49MTI1OTg7ZS5uaWV1bmtvcmVhbj0xMjU5NjtlLm5pZXVucGFuc2lvc2tvcmVhbj0xMjY0ODtlLm5pZXVucGFyZW5rb3JlYW49MTI4MDE7ZS5uaWV1bnNpb3Nrb3JlYW49MTI2NDc7ZS5uaWV1bnRpa2V1dGtvcmVhbj0xMjY0NjtlLm5paGlyYWdhbmE9MTIzOTU7ZS5uaWthdGFrYW5hPTEyNDkxO2UubmlrYXRha2FuYWhhbGZ3aWR0aD02NTQxNDtlLm5pa2hhaGl0bGVmdHRoYWk9NjM2NDE7ZS5uaWtoYWhpdHRoYWk9MzY2MTtlLm5pbmU9NTc7ZS5uaW5lYXJhYmljPTE2NDE7ZS5uaW5lYmVuZ2FsaT0yNTQzO2UubmluZWNpcmNsZT05MzIwO2UubmluZWNpcmNsZWludmVyc2VzYW5zc2VyaWY9MTAxMzA7ZS5uaW5lZGV2YT0yNDE1O2UubmluZWd1amFyYXRpPTI3OTk7ZS5uaW5lZ3VybXVraGk9MjY3MTtlLm5pbmVoYWNrYXJhYmljPTE2NDE7ZS5uaW5laGFuZ3pob3U9MTIzMjk7ZS5uaW5laWRlb2dyYXBoaWNwYXJlbj0xMjg0MDtlLm5pbmVpbmZlcmlvcj04MzI5O2UubmluZW1vbm9zcGFjZT02NTMwNTtlLm5pbmVvbGRzdHlsZT02MzI4OTtlLm5pbmVwYXJlbj05MzQwO2UubmluZXBlcmlvZD05MzYwO2UubmluZXBlcnNpYW49MTc4NTtlLm5pbmVyb21hbj04NTY4O2UubmluZXN1cGVyaW9yPTgzMTM7ZS5uaW5ldGVlbmNpcmNsZT05MzMwO2UubmluZXRlZW5wYXJlbj05MzUwO2UubmluZXRlZW5wZXJpb2Q9OTM3MDtlLm5pbmV0aGFpPTM2NzM7ZS5uaj00NjA7ZS5uamVjeXJpbGxpYz0xMTE0O2UubmthdGFrYW5hPTEyNTMxO2UubmthdGFrYW5haGFsZndpZHRoPTY1NDM3O2UubmxlZ3JpZ2h0bG9uZz00MTQ7ZS5ubGluZWJlbG93PTc3NTM7ZS5ubW9ub3NwYWNlPTY1MzU4O2Uubm1zcXVhcmU9MTMyMTA7ZS5ubmFiZW5nYWxpPTI0Njc7ZS5ubmFkZXZhPTIzMzk7ZS5ubmFndWphcmF0aT0yNzIzO2Uubm5hZ3VybXVraGk9MjU5NTtlLm5ubmFkZXZhPTIzNDU7ZS5ub2hpcmFnYW5hPTEyMzk4O2Uubm9rYXRha2FuYT0xMjQ5NDtlLm5va2F0YWthbmFoYWxmd2lkdGg9NjU0MTc7ZS5ub25icmVha2luZ3NwYWNlPTE2MDtlLm5vbmVudGhhaT0zNjAzO2Uubm9udXRoYWk9MzYwOTtlLm5vb25hcmFiaWM9MTYwNjtlLm5vb25maW5hbGFyYWJpYz02NTI1NDtlLm5vb25naHVubmFhcmFiaWM9MTcyMjtlLm5vb25naHVubmFmaW5hbGFyYWJpYz02NDQxNTtlLm5vb25pbml0aWFsYXJhYmljPTY1MjU1O2Uubm9vbmplZW1pbml0aWFsYXJhYmljPTY0NzIyO2Uubm9vbmplZW1pc29sYXRlZGFyYWJpYz02NDU4NztlLm5vb25tZWRpYWxhcmFiaWM9NjUyNTY7ZS5ub29ubWVlbWluaXRpYWxhcmFiaWM9NjQ3MjU7ZS5ub29ubWVlbWlzb2xhdGVkYXJhYmljPTY0NTkwO2Uubm9vbm5vb25maW5hbGFyYWJpYz02NDY1MztlLm5vdGNvbnRhaW5zPTg3MTY7ZS5ub3RlbGVtZW50PTg3MTM7ZS5ub3RlbGVtZW50b2Y9ODcxMztlLm5vdGVxdWFsPTg4MDA7ZS5ub3RncmVhdGVyPTg4MTU7ZS5ub3RncmVhdGVybm9yZXF1YWw9ODgxNztlLm5vdGdyZWF0ZXJub3JsZXNzPTg4MjU7ZS5ub3RpZGVudGljYWw9ODgwMjtlLm5vdGxlc3M9ODgxNDtlLm5vdGxlc3Nub3JlcXVhbD04ODE2O2Uubm90cGFyYWxsZWw9ODc0MjtlLm5vdHByZWNlZGVzPTg4MzI7ZS5ub3RzdWJzZXQ9ODgzNjtlLm5vdHN1Y2NlZWRzPTg4MzM7ZS5ub3RzdXBlcnNldD04ODM3O2Uubm93YXJtZW5pYW49MTM5ODtlLm5wYXJlbj05Mzg1O2UubnNzcXVhcmU9MTMyMzM7ZS5uc3VwZXJpb3I9ODMxOTtlLm50aWxkZT0yNDE7ZS5udT05NTc7ZS5udWhpcmFnYW5hPTEyMzk2O2UubnVrYXRha2FuYT0xMjQ5MjtlLm51a2F0YWthbmFoYWxmd2lkdGg9NjU0MTU7ZS5udWt0YWJlbmdhbGk9MjQ5MjtlLm51a3RhZGV2YT0yMzY0O2UubnVrdGFndWphcmF0aT0yNzQ4O2UubnVrdGFndXJtdWtoaT0yNjIwO2UubnVtYmVyc2lnbj0zNTtlLm51bWJlcnNpZ25tb25vc3BhY2U9NjUyODM7ZS5udW1iZXJzaWduc21hbGw9NjUxMTk7ZS5udW1lcmFsc2lnbmdyZWVrPTg4NDtlLm51bWVyYWxzaWdubG93ZXJncmVlaz04ODU7ZS5udW1lcm89ODQ3MDtlLm51bj0xNTA0O2UubnVuZGFnZXNoPTY0MzIwO2UubnVuZGFnZXNoaGVicmV3PTY0MzIwO2UubnVuaGVicmV3PTE1MDQ7ZS5udnNxdWFyZT0xMzIzNztlLm53c3F1YXJlPTEzMjQzO2UubnlhYmVuZ2FsaT0yNDYyO2UubnlhZGV2YT0yMzM0O2UubnlhZ3VqYXJhdGk9MjcxODtlLm55YWd1cm11a2hpPTI1OTA7ZS5vPTExMTtlLm9hY3V0ZT0yNDM7ZS5vYW5ndGhhaT0zNjI5O2Uub2JhcnJlZD02Mjk7ZS5vYmFycmVkY3lyaWxsaWM9MTI1NztlLm9iYXJyZWRkaWVyZXNpc2N5cmlsbGljPTEyNTk7ZS5vYmVuZ2FsaT0yNDUxO2Uub2JvcG9tb2ZvPTEyNTcxO2Uub2JyZXZlPTMzNTtlLm9jYW5kcmFkZXZhPTIzMjE7ZS5vY2FuZHJhZ3VqYXJhdGk9MjcwNTtlLm9jYW5kcmF2b3dlbHNpZ25kZXZhPTIzNzc7ZS5vY2FuZHJhdm93ZWxzaWduZ3VqYXJhdGk9Mjc2MTtlLm9jYXJvbj00NjY7ZS5vY2lyY2xlPTk0Mzg7ZS5vY2lyY3VtZmxleD0yNDQ7ZS5vY2lyY3VtZmxleGFjdXRlPTc4ODk7ZS5vY2lyY3VtZmxleGRvdGJlbG93PTc4OTc7ZS5vY2lyY3VtZmxleGdyYXZlPTc4OTE7ZS5vY2lyY3VtZmxleGhvb2thYm92ZT03ODkzO2Uub2NpcmN1bWZsZXh0aWxkZT03ODk1O2Uub2N5cmlsbGljPTEwODY7ZS5vZGJsYWN1dGU9MzM3O2Uub2RibGdyYXZlPTUyNTtlLm9kZXZhPTIzMjM7ZS5vZGllcmVzaXM9MjQ2O2Uub2RpZXJlc2lzY3lyaWxsaWM9MTI1NTtlLm9kb3RiZWxvdz03ODg1O2Uub2U9MzM5O2Uub2Vrb3JlYW49MTI2MzQ7ZS5vZ29uZWs9NzMxO2Uub2dvbmVrY21iPTgwODtlLm9ncmF2ZT0yNDI7ZS5vZ3VqYXJhdGk9MjcwNztlLm9oYXJtZW5pYW49MTQxMztlLm9oaXJhZ2FuYT0xMjM2MjtlLm9ob29rYWJvdmU9Nzg4NztlLm9ob3JuPTQxNztlLm9ob3JuYWN1dGU9Nzg5OTtlLm9ob3JuZG90YmVsb3c9NzkwNztlLm9ob3JuZ3JhdmU9NzkwMTtlLm9ob3JuaG9va2Fib3ZlPTc5MDM7ZS5vaG9ybnRpbGRlPTc5MDU7ZS5vaHVuZ2FydW1sYXV0PTMzNztlLm9pPTQxOTtlLm9pbnZlcnRlZGJyZXZlPTUyNztlLm9rYXRha2FuYT0xMjQ1ODtlLm9rYXRha2FuYWhhbGZ3aWR0aD02NTM5NztlLm9rb3JlYW49MTI2MzE7ZS5vbGVoZWJyZXc9MTQ1MTtlLm9tYWNyb249MzMzO2Uub21hY3JvbmFjdXRlPTc3NjM7ZS5vbWFjcm9uZ3JhdmU9Nzc2MTtlLm9tZGV2YT0yMzg0O2Uub21lZ2E9OTY5O2Uub21lZ2ExPTk4MjtlLm9tZWdhY3lyaWxsaWM9MTEyMTtlLm9tZWdhbGF0aW5jbG9zZWQ9NjMxO2Uub21lZ2Fyb3VuZGN5cmlsbGljPTExNDc7ZS5vbWVnYXRpdGxvY3lyaWxsaWM9MTE0OTtlLm9tZWdhdG9ub3M9OTc0O2Uub21ndWphcmF0aT0yNzY4O2Uub21pY3Jvbj05NTk7ZS5vbWljcm9udG9ub3M9OTcyO2Uub21vbm9zcGFjZT02NTM1OTtlLm9uZT00OTtlLm9uZWFyYWJpYz0xNjMzO2Uub25lYmVuZ2FsaT0yNTM1O2Uub25lY2lyY2xlPTkzMTI7ZS5vbmVjaXJjbGVpbnZlcnNlc2Fuc3NlcmlmPTEwMTIyO2Uub25lZGV2YT0yNDA3O2Uub25lZG90ZW5sZWFkZXI9ODIyODtlLm9uZWVpZ2h0aD04NTM5O2Uub25lZml0dGVkPTYzMTk2O2Uub25lZ3VqYXJhdGk9Mjc5MTtlLm9uZWd1cm11a2hpPTI2NjM7ZS5vbmVoYWNrYXJhYmljPTE2MzM7ZS5vbmVoYWxmPTE4OTtlLm9uZWhhbmd6aG91PTEyMzIxO2Uub25laWRlb2dyYXBoaWNwYXJlbj0xMjgzMjtlLm9uZWluZmVyaW9yPTgzMjE7ZS5vbmVtb25vc3BhY2U9NjUyOTc7ZS5vbmVudW1lcmF0b3JiZW5nYWxpPTI1NDg7ZS5vbmVvbGRzdHlsZT02MzI4MTtlLm9uZXBhcmVuPTkzMzI7ZS5vbmVwZXJpb2Q9OTM1MjtlLm9uZXBlcnNpYW49MTc3NztlLm9uZXF1YXJ0ZXI9MTg4O2Uub25lcm9tYW49ODU2MDtlLm9uZXN1cGVyaW9yPTE4NTtlLm9uZXRoYWk9MzY2NTtlLm9uZXRoaXJkPTg1MzE7ZS5vb2dvbmVrPTQ5MTtlLm9vZ29uZWttYWNyb249NDkzO2Uub29ndXJtdWtoaT0yNTc5O2Uub29tYXRyYWd1cm11a2hpPTI2MzU7ZS5vb3Blbj01OTY7ZS5vcGFyZW49OTM4NjtlLm9wZW5idWxsZXQ9OTcwMjtlLm9wdGlvbj04OTk3O2Uub3JkZmVtaW5pbmU9MTcwO2Uub3JkbWFzY3VsaW5lPTE4NjtlLm9ydGhvZ29uYWw9ODczNTtlLm9zaG9ydGRldmE9MjMyMjtlLm9zaG9ydHZvd2Vsc2lnbmRldmE9MjM3ODtlLm9zbGFzaD0yNDg7ZS5vc2xhc2hhY3V0ZT01MTE7ZS5vc21hbGxoaXJhZ2FuYT0xMjM2MTtlLm9zbWFsbGthdGFrYW5hPTEyNDU3O2Uub3NtYWxsa2F0YWthbmFoYWxmd2lkdGg9NjUzODc7ZS5vc3Ryb2tlYWN1dGU9NTExO2Uub3N1cGVyaW9yPTYzMjE2O2Uub3RjeXJpbGxpYz0xMTUxO2Uub3RpbGRlPTI0NTtlLm90aWxkZWFjdXRlPTc3NTc7ZS5vdGlsZGVkaWVyZXNpcz03NzU5O2Uub3Vib3BvbW9mbz0xMjU3NztlLm92ZXJsaW5lPTgyNTQ7ZS5vdmVybGluZWNlbnRlcmxpbmU9NjUwOTg7ZS5vdmVybGluZWNtYj03NzM7ZS5vdmVybGluZWRhc2hlZD02NTA5NztlLm92ZXJsaW5lZGJsd2F2eT02NTEwMDtlLm92ZXJsaW5ld2F2eT02NTA5OTtlLm92ZXJzY29yZT0xNzU7ZS5vdm93ZWxzaWduYmVuZ2FsaT0yNTA3O2Uub3Zvd2Vsc2lnbmRldmE9MjM3OTtlLm92b3dlbHNpZ25ndWphcmF0aT0yNzYzO2UucD0xMTI7ZS5wYWFtcHNzcXVhcmU9MTMxODQ7ZS5wYWFzZW50b3NxdWFyZT0xMzA5OTtlLnBhYmVuZ2FsaT0yNDc0O2UucGFjdXRlPTc3NjU7ZS5wYWRldmE9MjM0NjtlLnBhZ2Vkb3duPTg2NzE7ZS5wYWdldXA9ODY3MDtlLnBhZ3VqYXJhdGk9MjczMDtlLnBhZ3VybXVraGk9MjYwMjtlLnBhaGlyYWdhbmE9MTI0MDE7ZS5wYWl5YW5ub2l0aGFpPTM2MzE7ZS5wYWthdGFrYW5hPTEyNDk3O2UucGFsYXRhbGl6YXRpb25jeXJpbGxpY2NtYj0xMTU2O2UucGFsb2Noa2FjeXJpbGxpYz0xMjE2O2UucGFuc2lvc2tvcmVhbj0xMjY3MTtlLnBhcmFncmFwaD0xODI7ZS5wYXJhbGxlbD04NzQxO2UucGFyZW5sZWZ0PTQwO2UucGFyZW5sZWZ0YWx0b25lYXJhYmljPTY0ODMwO2UucGFyZW5sZWZ0YnQ9NjM3MjU7ZS5wYXJlbmxlZnRleD02MzcyNDtlLnBhcmVubGVmdGluZmVyaW9yPTgzMzM7ZS5wYXJlbmxlZnRtb25vc3BhY2U9NjUyODg7ZS5wYXJlbmxlZnRzbWFsbD02NTExMztlLnBhcmVubGVmdHN1cGVyaW9yPTgzMTc7ZS5wYXJlbmxlZnR0cD02MzcyMztlLnBhcmVubGVmdHZlcnRpY2FsPTY1MDc3O2UucGFyZW5yaWdodD00MTtlLnBhcmVucmlnaHRhbHRvbmVhcmFiaWM9NjQ4MzE7ZS5wYXJlbnJpZ2h0YnQ9NjM3MzY7ZS5wYXJlbnJpZ2h0ZXg9NjM3MzU7ZS5wYXJlbnJpZ2h0aW5mZXJpb3I9ODMzNDtlLnBhcmVucmlnaHRtb25vc3BhY2U9NjUyODk7ZS5wYXJlbnJpZ2h0c21hbGw9NjUxMTQ7ZS5wYXJlbnJpZ2h0c3VwZXJpb3I9ODMxODtlLnBhcmVucmlnaHR0cD02MzczNDtlLnBhcmVucmlnaHR2ZXJ0aWNhbD02NTA3ODtlLnBhcnRpYWxkaWZmPTg3MDY7ZS5wYXNlcWhlYnJldz0xNDcyO2UucGFzaHRhaGVicmV3PTE0MzM7ZS5wYXNxdWFyZT0xMzIyNTtlLnBhdGFoPTE0NjM7ZS5wYXRhaDExPTE0NjM7ZS5wYXRhaDFkPTE0NjM7ZS5wYXRhaDJhPTE0NjM7ZS5wYXRhaGhlYnJldz0xNDYzO2UucGF0YWhuYXJyb3doZWJyZXc9MTQ2MztlLnBhdGFocXVhcnRlcmhlYnJldz0xNDYzO2UucGF0YWh3aWRlaGVicmV3PTE0NjM7ZS5wYXplcmhlYnJldz0xNDQxO2UucGJvcG9tb2ZvPTEyNTUwO2UucGNpcmNsZT05NDM5O2UucGRvdGFjY2VudD03NzY3O2UucGU9MTUwODtlLnBlY3lyaWxsaWM9MTA4NztlLnBlZGFnZXNoPTY0MzI0O2UucGVkYWdlc2hoZWJyZXc9NjQzMjQ7ZS5wZWV6aXNxdWFyZT0xMzExNTtlLnBlZmluYWxkYWdlc2hoZWJyZXc9NjQzMjM7ZS5wZWhhcmFiaWM9MTY2MjtlLnBlaGFybWVuaWFuPTE0MDI7ZS5wZWhlYnJldz0xNTA4O2UucGVoZmluYWxhcmFiaWM9NjQzNDM7ZS5wZWhpbml0aWFsYXJhYmljPTY0MzQ0O2UucGVoaXJhZ2FuYT0xMjQxMDtlLnBlaG1lZGlhbGFyYWJpYz02NDM0NTtlLnBla2F0YWthbmE9MTI1MDY7ZS5wZW1pZGRsZWhvb2tjeXJpbGxpYz0xMTkxO2UucGVyYWZlaGVicmV3PTY0MzM0O2UucGVyY2VudD0zNztlLnBlcmNlbnRhcmFiaWM9MTY0MjtlLnBlcmNlbnRtb25vc3BhY2U9NjUyODU7ZS5wZXJjZW50c21hbGw9NjUxMzA7ZS5wZXJpb2Q9NDY7ZS5wZXJpb2Rhcm1lbmlhbj0xNDE3O2UucGVyaW9kY2VudGVyZWQ9MTgzO2UucGVyaW9kaGFsZndpZHRoPTY1Mzc3O2UucGVyaW9kaW5mZXJpb3I9NjMyMDc7ZS5wZXJpb2Rtb25vc3BhY2U9NjUyOTQ7ZS5wZXJpb2RzbWFsbD02NTEwNjtlLnBlcmlvZHN1cGVyaW9yPTYzMjA4O2UucGVyaXNwb21lbmlncmVla2NtYj04MzQ7ZS5wZXJwZW5kaWN1bGFyPTg4Njk7ZS5wZXJ0aG91c2FuZD04MjQwO2UucGVzZXRhPTgzNTk7ZS5wZnNxdWFyZT0xMzE5NDtlLnBoYWJlbmdhbGk9MjQ3NTtlLnBoYWRldmE9MjM0NztlLnBoYWd1amFyYXRpPTI3MzE7ZS5waGFndXJtdWtoaT0yNjAzO2UucGhpPTk2NjtlLnBoaTE9OTgxO2UucGhpZXVwaGFjaXJjbGVrb3JlYW49MTI5MjI7ZS5waGlldXBoYXBhcmVua29yZWFuPTEyODI2O2UucGhpZXVwaGNpcmNsZWtvcmVhbj0xMjkwODtlLnBoaWV1cGhrb3JlYW49MTI2MjE7ZS5waGlldXBocGFyZW5rb3JlYW49MTI4MTI7ZS5waGlsYXRpbj02MzI7ZS5waGludGh1dGhhaT0zNjQyO2UucGhpc3ltYm9sZ3JlZWs9OTgxO2UucGhvb2s9NDIxO2UucGhvcGhhbnRoYWk9MzYxNDtlLnBob3BodW5ndGhhaT0zNjEyO2UucGhvc2FtcGhhb3RoYWk9MzYxNjtlLnBpPTk2MDtlLnBpZXVwYWNpcmNsZWtvcmVhbj0xMjkxNTtlLnBpZXVwYXBhcmVua29yZWFuPTEyODE5O2UucGlldXBjaWV1Y2tvcmVhbj0xMjY2MjtlLnBpZXVwY2lyY2xla29yZWFuPTEyOTAxO2UucGlldXBraXllb2trb3JlYW49MTI2NTg7ZS5waWV1cGtvcmVhbj0xMjYxMDtlLnBpZXVwcGFyZW5rb3JlYW49MTI4MDU7ZS5waWV1cHNpb3NraXllb2trb3JlYW49MTI2NjA7ZS5waWV1cHNpb3Nrb3JlYW49MTI2MTI7ZS5waWV1cHNpb3N0aWtldXRrb3JlYW49MTI2NjE7ZS5waWV1cHRoaWV1dGhrb3JlYW49MTI2NjM7ZS5waWV1cHRpa2V1dGtvcmVhbj0xMjY1OTtlLnBpaGlyYWdhbmE9MTI0MDQ7ZS5waWthdGFrYW5hPTEyNTAwO2UucGlzeW1ib2xncmVlaz05ODI7ZS5waXdyYXJtZW5pYW49MTQxMTtlLnBsYW5ja292ZXIycGk9ODQ2MztlLnBsYW5ja292ZXIycGkxPTg0NjM7ZS5wbHVzPTQzO2UucGx1c2JlbG93Y21iPTc5OTtlLnBsdXNjaXJjbGU9ODg1MztlLnBsdXNtaW51cz0xNzc7ZS5wbHVzbW9kPTcyNjtlLnBsdXNtb25vc3BhY2U9NjUyOTE7ZS5wbHVzc21hbGw9NjUxMjI7ZS5wbHVzc3VwZXJpb3I9ODMxNDtlLnBtb25vc3BhY2U9NjUzNjA7ZS5wbXNxdWFyZT0xMzI3MjtlLnBvaGlyYWdhbmE9MTI0MTM7ZS5wb2ludGluZ2luZGV4ZG93bndoaXRlPTk3NTk7ZS5wb2ludGluZ2luZGV4bGVmdHdoaXRlPTk3NTY7ZS5wb2ludGluZ2luZGV4cmlnaHR3aGl0ZT05NzU4O2UucG9pbnRpbmdpbmRleHVwd2hpdGU9OTc1NztlLnBva2F0YWthbmE9MTI1MDk7ZS5wb3BsYXRoYWk9MzYxMTtlLnBvc3RhbG1hcms9MTIzMDY7ZS5wb3N0YWxtYXJrZmFjZT0xMjMyMDtlLnBwYXJlbj05Mzg3O2UucHJlY2VkZXM9ODgyNjtlLnByZXNjcmlwdGlvbj04NDc4O2UucHJpbWVtb2Q9Njk3O2UucHJpbWVyZXZlcnNlZD04MjQ1O2UucHJvZHVjdD04NzE5O2UucHJvamVjdGl2ZT04OTY1O2UucHJvbG9uZ2Vka2FuYT0xMjU0MDtlLnByb3BlbGxvcj04OTg0O2UucHJvcGVyc3Vic2V0PTg4MzQ7ZS5wcm9wZXJzdXBlcnNldD04ODM1O2UucHJvcG9ydGlvbj04NzU5O2UucHJvcG9ydGlvbmFsPTg3MzM7ZS5wc2k9OTY4O2UucHNpY3lyaWxsaWM9MTEzNztlLnBzaWxpcG5ldW1hdGFjeXJpbGxpY2NtYj0xMTU4O2UucHNzcXVhcmU9MTMyMzI7ZS5wdWhpcmFnYW5hPTEyNDA3O2UucHVrYXRha2FuYT0xMjUwMztlLnB2c3F1YXJlPTEzMjM2O2UucHdzcXVhcmU9MTMyNDI7ZS5xPTExMztlLnFhZGV2YT0yMzkyO2UucWFkbWFoZWJyZXc9MTQ0ODtlLnFhZmFyYWJpYz0xNjAyO2UucWFmZmluYWxhcmFiaWM9NjUyMzg7ZS5xYWZpbml0aWFsYXJhYmljPTY1MjM5O2UucWFmbWVkaWFsYXJhYmljPTY1MjQwO2UucWFtYXRzPTE0NjQ7ZS5xYW1hdHMxMD0xNDY0O2UucWFtYXRzMWE9MTQ2NDtlLnFhbWF0czFjPTE0NjQ7ZS5xYW1hdHMyNz0xNDY0O2UucWFtYXRzMjk9MTQ2NDtlLnFhbWF0czMzPTE0NjQ7ZS5xYW1hdHNkZT0xNDY0O2UucWFtYXRzaGVicmV3PTE0NjQ7ZS5xYW1hdHNuYXJyb3doZWJyZXc9MTQ2NDtlLnFhbWF0c3FhdGFuaGVicmV3PTE0NjQ7ZS5xYW1hdHNxYXRhbm5hcnJvd2hlYnJldz0xNDY0O2UucWFtYXRzcWF0YW5xdWFydGVyaGVicmV3PTE0NjQ7ZS5xYW1hdHNxYXRhbndpZGVoZWJyZXc9MTQ2NDtlLnFhbWF0c3F1YXJ0ZXJoZWJyZXc9MTQ2NDtlLnFhbWF0c3dpZGVoZWJyZXc9MTQ2NDtlLnFhcm5leXBhcmFoZWJyZXc9MTQzOTtlLnFib3BvbW9mbz0xMjU2MTtlLnFjaXJjbGU9OTQ0MDtlLnFob29rPTY3MjtlLnFtb25vc3BhY2U9NjUzNjE7ZS5xb2Y9MTUxMTtlLnFvZmRhZ2VzaD02NDMyNztlLnFvZmRhZ2VzaGhlYnJldz02NDMyNztlLnFvZmhlYnJldz0xNTExO2UucXBhcmVuPTkzODg7ZS5xdWFydGVybm90ZT05ODMzO2UucXVidXRzPTE0Njc7ZS5xdWJ1dHMxOD0xNDY3O2UucXVidXRzMjU9MTQ2NztlLnF1YnV0czMxPTE0Njc7ZS5xdWJ1dHNoZWJyZXc9MTQ2NztlLnF1YnV0c25hcnJvd2hlYnJldz0xNDY3O2UucXVidXRzcXVhcnRlcmhlYnJldz0xNDY3O2UucXVidXRzd2lkZWhlYnJldz0xNDY3O2UucXVlc3Rpb249NjM7ZS5xdWVzdGlvbmFyYWJpYz0xNTY3O2UucXVlc3Rpb25hcm1lbmlhbj0xMzc0O2UucXVlc3Rpb25kb3duPTE5MTtlLnF1ZXN0aW9uZG93bnNtYWxsPTYzNDIzO2UucXVlc3Rpb25ncmVlaz04OTQ7ZS5xdWVzdGlvbm1vbm9zcGFjZT02NTMxMTtlLnF1ZXN0aW9uc21hbGw9NjMyOTU7ZS5xdW90ZWRibD0zNDtlLnF1b3RlZGJsYmFzZT04MjIyO2UucXVvdGVkYmxsZWZ0PTgyMjA7ZS5xdW90ZWRibG1vbm9zcGFjZT02NTI4MjtlLnF1b3RlZGJscHJpbWU9MTIzMTg7ZS5xdW90ZWRibHByaW1lcmV2ZXJzZWQ9MTIzMTc7ZS5xdW90ZWRibHJpZ2h0PTgyMjE7ZS5xdW90ZWxlZnQ9ODIxNjtlLnF1b3RlbGVmdHJldmVyc2VkPTgyMTk7ZS5xdW90ZXJldmVyc2VkPTgyMTk7ZS5xdW90ZXJpZ2h0PTgyMTc7ZS5xdW90ZXJpZ2h0bj0zMjk7ZS5xdW90ZXNpbmdsYmFzZT04MjE4O2UucXVvdGVzaW5nbGU9Mzk7ZS5xdW90ZXNpbmdsZW1vbm9zcGFjZT02NTI4NztlLnI9MTE0O2UucmFhcm1lbmlhbj0xNDA0O2UucmFiZW5nYWxpPTI0ODA7ZS5yYWN1dGU9MzQxO2UucmFkZXZhPTIzNTI7ZS5yYWRpY2FsPTg3MzA7ZS5yYWRpY2FsZXg9NjM3MTc7ZS5yYWRvdmVyc3NxdWFyZT0xMzIzMDtlLnJhZG92ZXJzc3F1YXJlZHNxdWFyZT0xMzIzMTtlLnJhZHNxdWFyZT0xMzIyOTtlLnJhZmU9MTQ3MTtlLnJhZmVoZWJyZXc9MTQ3MTtlLnJhZ3VqYXJhdGk9MjczNjtlLnJhZ3VybXVraGk9MjYwODtlLnJhaGlyYWdhbmE9MTI0MjU7ZS5yYWthdGFrYW5hPTEyNTIxO2UucmFrYXRha2FuYWhhbGZ3aWR0aD02NTQzMTtlLnJhbG93ZXJkaWFnb25hbGJlbmdhbGk9MjU0NTtlLnJhbWlkZGxlZGlhZ29uYWxiZW5nYWxpPTI1NDQ7ZS5yYW1zaG9ybj02MTI7ZS5yYXRpbz04NzU4O2UucmJvcG9tb2ZvPTEyNTY2O2UucmNhcm9uPTM0NTtlLnJjZWRpbGxhPTM0MztlLnJjaXJjbGU9OTQ0MTtlLnJjb21tYWFjY2VudD0zNDM7ZS5yZGJsZ3JhdmU9NTI5O2UucmRvdGFjY2VudD03NzY5O2UucmRvdGJlbG93PTc3NzE7ZS5yZG90YmVsb3dtYWNyb249Nzc3MztlLnJlZmVyZW5jZW1hcms9ODI1MTtlLnJlZmxleHN1YnNldD04ODM4O2UucmVmbGV4c3VwZXJzZXQ9ODgzOTtlLnJlZ2lzdGVyZWQ9MTc0O2UucmVnaXN0ZXJzYW5zPTYzNzIwO2UucmVnaXN0ZXJzZXJpZj02MzE5NDtlLnJlaGFyYWJpYz0xNTg1O2UucmVoYXJtZW5pYW49MTQwODtlLnJlaGZpbmFsYXJhYmljPTY1MTk4O2UucmVoaXJhZ2FuYT0xMjQyODtlLnJla2F0YWthbmE9MTI1MjQ7ZS5yZWthdGFrYW5haGFsZndpZHRoPTY1NDM0O2UucmVzaD0xNTEyO2UucmVzaGRhZ2VzaGhlYnJldz02NDMyODtlLnJlc2hoZWJyZXc9MTUxMjtlLnJldmVyc2VkdGlsZGU9ODc2NTtlLnJldmlhaGVicmV3PTE0MzE7ZS5yZXZpYW11Z3Jhc2hoZWJyZXc9MTQzMTtlLnJldmxvZ2ljYWxub3Q9ODk3NjtlLnJmaXNoaG9vaz02Mzg7ZS5yZmlzaGhvb2tyZXZlcnNlZD02Mzk7ZS5yaGFiZW5nYWxpPTI1MjU7ZS5yaGFkZXZhPTIzOTc7ZS5yaG89OTYxO2Uucmhvb2s9NjM3O2Uucmhvb2t0dXJuZWQ9NjM1O2Uucmhvb2t0dXJuZWRzdXBlcmlvcj02OTM7ZS5yaG9zeW1ib2xncmVlaz0xMDA5O2UucmhvdGljaG9va21vZD03MzQ7ZS5yaWV1bGFjaXJjbGVrb3JlYW49MTI5MTM7ZS5yaWV1bGFwYXJlbmtvcmVhbj0xMjgxNztlLnJpZXVsY2lyY2xla29yZWFuPTEyODk5O2UucmlldWxoaWV1aGtvcmVhbj0xMjYwODtlLnJpZXVsa2l5ZW9ra29yZWFuPTEyNjAyO2UucmlldWxraXllb2tzaW9za29yZWFuPTEyNjQ5O2UucmlldWxrb3JlYW49MTI2MDE7ZS5yaWV1bG1pZXVta29yZWFuPTEyNjAzO2UucmlldWxwYW5zaW9za29yZWFuPTEyNjUyO2UucmlldWxwYXJlbmtvcmVhbj0xMjgwMztlLnJpZXVscGhpZXVwaGtvcmVhbj0xMjYwNztlLnJpZXVscGlldXBrb3JlYW49MTI2MDQ7ZS5yaWV1bHBpZXVwc2lvc2tvcmVhbj0xMjY1MTtlLnJpZXVsc2lvc2tvcmVhbj0xMjYwNTtlLnJpZXVsdGhpZXV0aGtvcmVhbj0xMjYwNjtlLnJpZXVsdGlrZXV0a29yZWFuPTEyNjUwO2UucmlldWx5ZW9yaW5oaWV1aGtvcmVhbj0xMjY1MztlLnJpZ2h0YW5nbGU9ODczNTtlLnJpZ2h0dGFja2JlbG93Y21iPTc5MztlLnJpZ2h0dHJpYW5nbGU9ODg5NTtlLnJpaGlyYWdhbmE9MTI0MjY7ZS5yaWthdGFrYW5hPTEyNTIyO2UucmlrYXRha2FuYWhhbGZ3aWR0aD02NTQzMjtlLnJpbmc9NzMwO2UucmluZ2JlbG93Y21iPTgwNTtlLnJpbmdjbWI9Nzc4O2UucmluZ2hhbGZsZWZ0PTcwMztlLnJpbmdoYWxmbGVmdGFybWVuaWFuPTEzNjk7ZS5yaW5naGFsZmxlZnRiZWxvd2NtYj03OTY7ZS5yaW5naGFsZmxlZnRjZW50ZXJlZD03MjM7ZS5yaW5naGFsZnJpZ2h0PTcwMjtlLnJpbmdoYWxmcmlnaHRiZWxvd2NtYj04MjU7ZS5yaW5naGFsZnJpZ2h0Y2VudGVyZWQ9NzIyO2UucmludmVydGVkYnJldmU9NTMxO2Uucml0dG9ydXNxdWFyZT0xMzEzNztlLnJsaW5lYmVsb3c9Nzc3NTtlLnJsb25nbGVnPTYzNjtlLnJsb25nbGVndHVybmVkPTYzNDtlLnJtb25vc3BhY2U9NjUzNjI7ZS5yb2hpcmFnYW5hPTEyNDI5O2Uucm9rYXRha2FuYT0xMjUyNTtlLnJva2F0YWthbmFoYWxmd2lkdGg9NjU0MzU7ZS5yb3J1YXRoYWk9MzYxOTtlLnJwYXJlbj05Mzg5O2UucnJhYmVuZ2FsaT0yNTI0O2UucnJhZGV2YT0yMzUzO2UucnJhZ3VybXVraGk9MjY1MjtlLnJyZWhhcmFiaWM9MTY4MTtlLnJyZWhmaW5hbGFyYWJpYz02NDM5NztlLnJydm9jYWxpY2JlbmdhbGk9MjUyODtlLnJydm9jYWxpY2RldmE9MjQwMDtlLnJydm9jYWxpY2d1amFyYXRpPTI3ODQ7ZS5ycnZvY2FsaWN2b3dlbHNpZ25iZW5nYWxpPTI1MDA7ZS5ycnZvY2FsaWN2b3dlbHNpZ25kZXZhPTIzNzI7ZS5ycnZvY2FsaWN2b3dlbHNpZ25ndWphcmF0aT0yNzU2O2UucnN1cGVyaW9yPTYzMjE3O2UucnRibG9jaz05NjE2O2UucnR1cm5lZD02MzM7ZS5ydHVybmVkc3VwZXJpb3I9NjkyO2UucnVoaXJhZ2FuYT0xMjQyNztlLnJ1a2F0YWthbmE9MTI1MjM7ZS5ydWthdGFrYW5haGFsZndpZHRoPTY1NDMzO2UucnVwZWVtYXJrYmVuZ2FsaT0yNTQ2O2UucnVwZWVzaWduYmVuZ2FsaT0yNTQ3O2UucnVwaWFoPTYzMTk3O2UucnV0aGFpPTM2MjA7ZS5ydm9jYWxpY2JlbmdhbGk9MjQ0MztlLnJ2b2NhbGljZGV2YT0yMzE1O2UucnZvY2FsaWNndWphcmF0aT0yNjk5O2UucnZvY2FsaWN2b3dlbHNpZ25iZW5nYWxpPTI0OTk7ZS5ydm9jYWxpY3Zvd2Vsc2lnbmRldmE9MjM3MTtlLnJ2b2NhbGljdm93ZWxzaWduZ3VqYXJhdGk9Mjc1NTtlLnM9MTE1O2Uuc2FiZW5nYWxpPTI0ODg7ZS5zYWN1dGU9MzQ3O2Uuc2FjdXRlZG90YWNjZW50PTc3ODE7ZS5zYWRhcmFiaWM9MTU4OTtlLnNhZGV2YT0yMzYwO2Uuc2FkZmluYWxhcmFiaWM9NjUyMTA7ZS5zYWRpbml0aWFsYXJhYmljPTY1MjExO2Uuc2FkbWVkaWFsYXJhYmljPTY1MjEyO2Uuc2FndWphcmF0aT0yNzQ0O2Uuc2FndXJtdWtoaT0yNjE2O2Uuc2FoaXJhZ2FuYT0xMjM3MztlLnNha2F0YWthbmE9MTI0Njk7ZS5zYWthdGFrYW5haGFsZndpZHRoPTY1NDAzO2Uuc2FsbGFsbGFob3VhbGF5aGV3YXNhbGxhbWFyYWJpYz02NTAxODtlLnNhbWVraD0xNTA1O2Uuc2FtZWtoZGFnZXNoPTY0MzIxO2Uuc2FtZWtoZGFnZXNoaGVicmV3PTY0MzIxO2Uuc2FtZWtoaGVicmV3PTE1MDU7ZS5zYXJhYWF0aGFpPTM2MzQ7ZS5zYXJhYWV0aGFpPTM2NDk7ZS5zYXJhYWltYWltYWxhaXRoYWk9MzY1MjtlLnNhcmFhaW1haW11YW50aGFpPTM2NTE7ZS5zYXJhYW10aGFpPTM2MzU7ZS5zYXJhYXRoYWk9MzYzMjtlLnNhcmFldGhhaT0zNjQ4O2Uuc2FyYWlpbGVmdHRoYWk9NjM2MjI7ZS5zYXJhaWl0aGFpPTM2Mzc7ZS5zYXJhaWxlZnR0aGFpPTYzNjIxO2Uuc2FyYWl0aGFpPTM2MzY7ZS5zYXJhb3RoYWk9MzY1MDtlLnNhcmF1ZWVsZWZ0dGhhaT02MzYyNDtlLnNhcmF1ZWV0aGFpPTM2Mzk7ZS5zYXJhdWVsZWZ0dGhhaT02MzYyMztlLnNhcmF1ZXRoYWk9MzYzODtlLnNhcmF1dGhhaT0zNjQwO2Uuc2FyYXV1dGhhaT0zNjQxO2Uuc2JvcG9tb2ZvPTEyNTY5O2Uuc2Nhcm9uPTM1MztlLnNjYXJvbmRvdGFjY2VudD03NzgzO2Uuc2NlZGlsbGE9MzUxO2Uuc2Nod2E9NjAxO2Uuc2Nod2FjeXJpbGxpYz0xMjQxO2Uuc2Nod2FkaWVyZXNpc2N5cmlsbGljPTEyNDM7ZS5zY2h3YWhvb2s9NjAyO2Uuc2NpcmNsZT05NDQyO2Uuc2NpcmN1bWZsZXg9MzQ5O2Uuc2NvbW1hYWNjZW50PTUzNztlLnNkb3RhY2NlbnQ9Nzc3NztlLnNkb3RiZWxvdz03Nzc5O2Uuc2RvdGJlbG93ZG90YWNjZW50PTc3ODU7ZS5zZWFndWxsYmVsb3djbWI9ODI4O2Uuc2Vjb25kPTgyNDM7ZS5zZWNvbmR0b25lY2hpbmVzZT03MTQ7ZS5zZWN0aW9uPTE2NztlLnNlZW5hcmFiaWM9MTU4NztlLnNlZW5maW5hbGFyYWJpYz02NTIwMjtlLnNlZW5pbml0aWFsYXJhYmljPTY1MjAzO2Uuc2Vlbm1lZGlhbGFyYWJpYz02NTIwNDtlLnNlZ29sPTE0NjI7ZS5zZWdvbDEzPTE0NjI7ZS5zZWdvbDFmPTE0NjI7ZS5zZWdvbDJjPTE0NjI7ZS5zZWdvbGhlYnJldz0xNDYyO2Uuc2Vnb2xuYXJyb3doZWJyZXc9MTQ2MjtlLnNlZ29scXVhcnRlcmhlYnJldz0xNDYyO2Uuc2Vnb2x0YWhlYnJldz0xNDI2O2Uuc2Vnb2x3aWRlaGVicmV3PTE0NjI7ZS5zZWhhcm1lbmlhbj0xNDA1O2Uuc2VoaXJhZ2FuYT0xMjM3OTtlLnNla2F0YWthbmE9MTI0NzU7ZS5zZWthdGFrYW5haGFsZndpZHRoPTY1NDA2O2Uuc2VtaWNvbG9uPTU5O2Uuc2VtaWNvbG9uYXJhYmljPTE1NjM7ZS5zZW1pY29sb25tb25vc3BhY2U9NjUzMDc7ZS5zZW1pY29sb25zbWFsbD02NTEwODtlLnNlbWl2b2ljZWRtYXJra2FuYT0xMjQ0NDtlLnNlbWl2b2ljZWRtYXJra2FuYWhhbGZ3aWR0aD02NTQzOTtlLnNlbnRpc3F1YXJlPTEzMDkwO2Uuc2VudG9zcXVhcmU9MTMwOTE7ZS5zZXZlbj01NTtlLnNldmVuYXJhYmljPTE2Mzk7ZS5zZXZlbmJlbmdhbGk9MjU0MTtlLnNldmVuY2lyY2xlPTkzMTg7ZS5zZXZlbmNpcmNsZWludmVyc2VzYW5zc2VyaWY9MTAxMjg7ZS5zZXZlbmRldmE9MjQxMztlLnNldmVuZWlnaHRocz04NTQyO2Uuc2V2ZW5ndWphcmF0aT0yNzk3O2Uuc2V2ZW5ndXJtdWtoaT0yNjY5O2Uuc2V2ZW5oYWNrYXJhYmljPTE2Mzk7ZS5zZXZlbmhhbmd6aG91PTEyMzI3O2Uuc2V2ZW5pZGVvZ3JhcGhpY3BhcmVuPTEyODM4O2Uuc2V2ZW5pbmZlcmlvcj04MzI3O2Uuc2V2ZW5tb25vc3BhY2U9NjUzMDM7ZS5zZXZlbm9sZHN0eWxlPTYzMjg3O2Uuc2V2ZW5wYXJlbj05MzM4O2Uuc2V2ZW5wZXJpb2Q9OTM1ODtlLnNldmVucGVyc2lhbj0xNzgzO2Uuc2V2ZW5yb21hbj04NTY2O2Uuc2V2ZW5zdXBlcmlvcj04MzExO2Uuc2V2ZW50ZWVuY2lyY2xlPTkzMjg7ZS5zZXZlbnRlZW5wYXJlbj05MzQ4O2Uuc2V2ZW50ZWVucGVyaW9kPTkzNjg7ZS5zZXZlbnRoYWk9MzY3MTtlLnNmdGh5cGhlbj0xNzM7ZS5zaGFhcm1lbmlhbj0xMzk5O2Uuc2hhYmVuZ2FsaT0yNDg2O2Uuc2hhY3lyaWxsaWM9MTA5NjtlLnNoYWRkYWFyYWJpYz0xNjE3O2Uuc2hhZGRhZGFtbWFhcmFiaWM9NjQ2MDk7ZS5zaGFkZGFkYW1tYXRhbmFyYWJpYz02NDYwNjtlLnNoYWRkYWZhdGhhYXJhYmljPTY0NjA4O2Uuc2hhZGRha2FzcmFhcmFiaWM9NjQ2MTA7ZS5zaGFkZGFrYXNyYXRhbmFyYWJpYz02NDYwNztlLnNoYWRlPTk2MTg7ZS5zaGFkZWRhcms9OTYxOTtlLnNoYWRlbGlnaHQ9OTYxNztlLnNoYWRlbWVkaXVtPTk2MTg7ZS5zaGFkZXZhPTIzNTg7ZS5zaGFndWphcmF0aT0yNzQyO2Uuc2hhZ3VybXVraGk9MjYxNDtlLnNoYWxzaGVsZXRoZWJyZXc9MTQyNztlLnNoYm9wb21vZm89MTI1NjU7ZS5zaGNoYWN5cmlsbGljPTEwOTc7ZS5zaGVlbmFyYWJpYz0xNTg4O2Uuc2hlZW5maW5hbGFyYWJpYz02NTIwNjtlLnNoZWVuaW5pdGlhbGFyYWJpYz02NTIwNztlLnNoZWVubWVkaWFsYXJhYmljPTY1MjA4O2Uuc2hlaWNvcHRpYz05OTU7ZS5zaGVxZWw9ODM2MjtlLnNoZXFlbGhlYnJldz04MzYyO2Uuc2hldmE9MTQ1NjtlLnNoZXZhMTE1PTE0NTY7ZS5zaGV2YTE1PTE0NTY7ZS5zaGV2YTIyPTE0NTY7ZS5zaGV2YTJlPTE0NTY7ZS5zaGV2YWhlYnJldz0xNDU2O2Uuc2hldmFuYXJyb3doZWJyZXc9MTQ1NjtlLnNoZXZhcXVhcnRlcmhlYnJldz0xNDU2O2Uuc2hldmF3aWRlaGVicmV3PTE0NTY7ZS5zaGhhY3lyaWxsaWM9MTIxMTtlLnNoaW1hY29wdGljPTEwMDU7ZS5zaGluPTE1MTM7ZS5zaGluZGFnZXNoPTY0MzI5O2Uuc2hpbmRhZ2VzaGhlYnJldz02NDMyOTtlLnNoaW5kYWdlc2hzaGluZG90PTY0MzAwO2Uuc2hpbmRhZ2VzaHNoaW5kb3RoZWJyZXc9NjQzMDA7ZS5zaGluZGFnZXNoc2luZG90PTY0MzAxO2Uuc2hpbmRhZ2VzaHNpbmRvdGhlYnJldz02NDMwMTtlLnNoaW5kb3RoZWJyZXc9MTQ3MztlLnNoaW5oZWJyZXc9MTUxMztlLnNoaW5zaGluZG90PTY0Mjk4O2Uuc2hpbnNoaW5kb3RoZWJyZXc9NjQyOTg7ZS5zaGluc2luZG90PTY0Mjk5O2Uuc2hpbnNpbmRvdGhlYnJldz02NDI5OTtlLnNob29rPTY0MjtlLnNpZ21hPTk2MztlLnNpZ21hMT05NjI7ZS5zaWdtYWZpbmFsPTk2MjtlLnNpZ21hbHVuYXRlc3ltYm9sZ3JlZWs9MTAxMDtlLnNpaGlyYWdhbmE9MTIzNzU7ZS5zaWthdGFrYW5hPTEyNDcxO2Uuc2lrYXRha2FuYWhhbGZ3aWR0aD02NTQwNDtlLnNpbHVxaGVicmV3PTE0Njk7ZS5zaWx1cWxlZnRoZWJyZXc9MTQ2OTtlLnNpbWlsYXI9ODc2NDtlLnNpbmRvdGhlYnJldz0xNDc0O2Uuc2lvc2FjaXJjbGVrb3JlYW49MTI5MTY7ZS5zaW9zYXBhcmVua29yZWFuPTEyODIwO2Uuc2lvc2NpZXVja29yZWFuPTEyNjcwO2Uuc2lvc2NpcmNsZWtvcmVhbj0xMjkwMjtlLnNpb3NraXllb2trb3JlYW49MTI2NjY7ZS5zaW9za29yZWFuPTEyNjEzO2Uuc2lvc25pZXVua29yZWFuPTEyNjY3O2Uuc2lvc3BhcmVua29yZWFuPTEyODA2O2Uuc2lvc3BpZXVwa29yZWFuPTEyNjY5O2Uuc2lvc3Rpa2V1dGtvcmVhbj0xMjY2ODtlLnNpeD01NDtlLnNpeGFyYWJpYz0xNjM4O2Uuc2l4YmVuZ2FsaT0yNTQwO2Uuc2l4Y2lyY2xlPTkzMTc7ZS5zaXhjaXJjbGVpbnZlcnNlc2Fuc3NlcmlmPTEwMTI3O2Uuc2l4ZGV2YT0yNDEyO2Uuc2l4Z3VqYXJhdGk9Mjc5NjtlLnNpeGd1cm11a2hpPTI2Njg7ZS5zaXhoYWNrYXJhYmljPTE2Mzg7ZS5zaXhoYW5nemhvdT0xMjMyNjtlLnNpeGlkZW9ncmFwaGljcGFyZW49MTI4Mzc7ZS5zaXhpbmZlcmlvcj04MzI2O2Uuc2l4bW9ub3NwYWNlPTY1MzAyO2Uuc2l4b2xkc3R5bGU9NjMyODY7ZS5zaXhwYXJlbj05MzM3O2Uuc2l4cGVyaW9kPTkzNTc7ZS5zaXhwZXJzaWFuPTE3ODI7ZS5zaXhyb21hbj04NTY1O2Uuc2l4c3VwZXJpb3I9ODMxMDtlLnNpeHRlZW5jaXJjbGU9OTMyNztlLnNpeHRlZW5jdXJyZW5jeWRlbm9taW5hdG9yYmVuZ2FsaT0yNTUzO2Uuc2l4dGVlbnBhcmVuPTkzNDc7ZS5zaXh0ZWVucGVyaW9kPTkzNjc7ZS5zaXh0aGFpPTM2NzA7ZS5zbGFzaD00NztlLnNsYXNobW9ub3NwYWNlPTY1Mjk1O2Uuc2xvbmc9MzgzO2Uuc2xvbmdkb3RhY2NlbnQ9NzgzNTtlLnNtaWxlZmFjZT05Nzg2O2Uuc21vbm9zcGFjZT02NTM2MztlLnNvZnBhc3VxaGVicmV3PTE0NzU7ZS5zb2Z0aHlwaGVuPTE3MztlLnNvZnRzaWduY3lyaWxsaWM9MTEwMDtlLnNvaGlyYWdhbmE9MTIzODE7ZS5zb2thdGFrYW5hPTEyNDc3O2Uuc29rYXRha2FuYWhhbGZ3aWR0aD02NTQwNztlLnNvbGlkdXNsb25nb3ZlcmxheWNtYj04MjQ7ZS5zb2xpZHVzc2hvcnRvdmVybGF5Y21iPTgyMztlLnNvcnVzaXRoYWk9MzYyNTtlLnNvc2FsYXRoYWk9MzYyNDtlLnNvc290aGFpPTM1OTU7ZS5zb3N1YXRoYWk9MzYyNjtlLnNwYWNlPTMyO2Uuc3BhY2VoYWNrYXJhYmljPTMyO2Uuc3BhZGU9OTgyNDtlLnNwYWRlc3VpdGJsYWNrPTk4MjQ7ZS5zcGFkZXN1aXR3aGl0ZT05ODI4O2Uuc3BhcmVuPTkzOTA7ZS5zcXVhcmViZWxvd2NtYj04Mjc7ZS5zcXVhcmVjYz0xMzI1MjtlLnNxdWFyZWNtPTEzMjEzO2Uuc3F1YXJlZGlhZ29uYWxjcm9zc2hhdGNoZmlsbD05NjQxO2Uuc3F1YXJlaG9yaXpvbnRhbGZpbGw9OTYzNjtlLnNxdWFyZWtnPTEzMTk5O2Uuc3F1YXJla209MTMyMTQ7ZS5zcXVhcmVrbWNhcGl0YWw9MTMyNjI7ZS5zcXVhcmVsbj0xMzI2NTtlLnNxdWFyZWxvZz0xMzI2NjtlLnNxdWFyZW1nPTEzMTk4O2Uuc3F1YXJlbWlsPTEzMjY5O2Uuc3F1YXJlbW09MTMyMTI7ZS5zcXVhcmVtc3F1YXJlZD0xMzIxNztlLnNxdWFyZW9ydGhvZ29uYWxjcm9zc2hhdGNoZmlsbD05NjM4O2Uuc3F1YXJldXBwZXJsZWZ0dG9sb3dlcnJpZ2h0ZmlsbD05NjM5O2Uuc3F1YXJldXBwZXJyaWdodHRvbG93ZXJsZWZ0ZmlsbD05NjQwO2Uuc3F1YXJldmVydGljYWxmaWxsPTk2Mzc7ZS5zcXVhcmV3aGl0ZXdpdGhzbWFsbGJsYWNrPTk2MzU7ZS5zcnNxdWFyZT0xMzI3NTtlLnNzYWJlbmdhbGk9MjQ4NztlLnNzYWRldmE9MjM1OTtlLnNzYWd1amFyYXRpPTI3NDM7ZS5zc2FuZ2NpZXVja29yZWFuPTEyNjE3O2Uuc3NhbmdoaWV1aGtvcmVhbj0xMjY3NztlLnNzYW5naWV1bmdrb3JlYW49MTI2NzI7ZS5zc2FuZ2tpeWVva2tvcmVhbj0xMjU5NDtlLnNzYW5nbmlldW5rb3JlYW49MTI2NDU7ZS5zc2FuZ3BpZXVwa29yZWFuPTEyNjExO2Uuc3NhbmdzaW9za29yZWFuPTEyNjE0O2Uuc3Nhbmd0aWtldXRrb3JlYW49MTI2MDA7ZS5zc3VwZXJpb3I9NjMyMTg7ZS5zdGVybGluZz0xNjM7ZS5zdGVybGluZ21vbm9zcGFjZT02NTUwNTtlLnN0cm9rZWxvbmdvdmVybGF5Y21iPTgyMjtlLnN0cm9rZXNob3J0b3ZlcmxheWNtYj04MjE7ZS5zdWJzZXQ9ODgzNDtlLnN1YnNldG5vdGVxdWFsPTg4NDI7ZS5zdWJzZXRvcmVxdWFsPTg4Mzg7ZS5zdWNjZWVkcz04ODI3O2Uuc3VjaHRoYXQ9ODcxNTtlLnN1aGlyYWdhbmE9MTIzNzc7ZS5zdWthdGFrYW5hPTEyNDczO2Uuc3VrYXRha2FuYWhhbGZ3aWR0aD02NTQwNTtlLnN1a3VuYXJhYmljPTE2MTg7ZS5zdW1tYXRpb249ODcyMTtlLnN1bj05Nzg4O2Uuc3VwZXJzZXQ9ODgzNTtlLnN1cGVyc2V0bm90ZXF1YWw9ODg0MztlLnN1cGVyc2V0b3JlcXVhbD04ODM5O2Uuc3ZzcXVhcmU9MTMyNzY7ZS5zeW91d2FlcmFzcXVhcmU9MTMxODA7ZS50PTExNjtlLnRhYmVuZ2FsaT0yNDY4O2UudGFja2Rvd249ODg2ODtlLnRhY2tsZWZ0PTg4Njc7ZS50YWRldmE9MjM0MDtlLnRhZ3VqYXJhdGk9MjcyNDtlLnRhZ3VybXVraGk9MjU5NjtlLnRhaGFyYWJpYz0xNTkxO2UudGFoZmluYWxhcmFiaWM9NjUyMTg7ZS50YWhpbml0aWFsYXJhYmljPTY1MjE5O2UudGFoaXJhZ2FuYT0xMjM4MztlLnRhaG1lZGlhbGFyYWJpYz02NTIyMDtlLnRhaXN5b3VlcmFzcXVhcmU9MTMxODE7ZS50YWthdGFrYW5hPTEyNDc5O2UudGFrYXRha2FuYWhhbGZ3aWR0aD02NTQwODtlLnRhdHdlZWxhcmFiaWM9MTYwMDtlLnRhdT05NjQ7ZS50YXY9MTUxNDtlLnRhdmRhZ2VzPTY0MzMwO2UudGF2ZGFnZXNoPTY0MzMwO2UudGF2ZGFnZXNoaGVicmV3PTY0MzMwO2UudGF2aGVicmV3PTE1MTQ7ZS50YmFyPTM1OTtlLnRib3BvbW9mbz0xMjU1NDtlLnRjYXJvbj0zNTc7ZS50Y2N1cmw9NjgwO2UudGNlZGlsbGE9MzU1O2UudGNoZWhhcmFiaWM9MTY3MDtlLnRjaGVoZmluYWxhcmFiaWM9NjQzNzk7ZS50Y2hlaGluaXRpYWxhcmFiaWM9NjQzODA7ZS50Y2hlaG1lZGlhbGFyYWJpYz02NDM4MTtlLnRjaXJjbGU9OTQ0MztlLnRjaXJjdW1mbGV4YmVsb3c9Nzc5MztlLnRjb21tYWFjY2VudD0zNTU7ZS50ZGllcmVzaXM9NzgzMTtlLnRkb3RhY2NlbnQ9Nzc4NztlLnRkb3RiZWxvdz03Nzg5O2UudGVjeXJpbGxpYz0xMDkwO2UudGVkZXNjZW5kZXJjeXJpbGxpYz0xMTk3O2UudGVoYXJhYmljPTE1Nzg7ZS50ZWhmaW5hbGFyYWJpYz02NTE3NDtlLnRlaGhhaGluaXRpYWxhcmFiaWM9NjQ2NzQ7ZS50ZWhoYWhpc29sYXRlZGFyYWJpYz02NDUyNDtlLnRlaGluaXRpYWxhcmFiaWM9NjUxNzU7ZS50ZWhpcmFnYW5hPTEyMzkwO2UudGVoamVlbWluaXRpYWxhcmFiaWM9NjQ2NzM7ZS50ZWhqZWVtaXNvbGF0ZWRhcmFiaWM9NjQ1MjM7ZS50ZWhtYXJidXRhYXJhYmljPTE1Nzc7ZS50ZWhtYXJidXRhZmluYWxhcmFiaWM9NjUxNzI7ZS50ZWhtZWRpYWxhcmFiaWM9NjUxNzY7ZS50ZWhtZWVtaW5pdGlhbGFyYWJpYz02NDY3NjtlLnRlaG1lZW1pc29sYXRlZGFyYWJpYz02NDUyNjtlLnRlaG5vb25maW5hbGFyYWJpYz02NDYyNztlLnRla2F0YWthbmE9MTI0ODY7ZS50ZWthdGFrYW5haGFsZndpZHRoPTY1NDExO2UudGVsZXBob25lPTg0ODE7ZS50ZWxlcGhvbmVibGFjaz05NzQyO2UudGVsaXNoYWdlZG9sYWhlYnJldz0xNDQwO2UudGVsaXNoYXFldGFuYWhlYnJldz0xNDQ5O2UudGVuY2lyY2xlPTkzMjE7ZS50ZW5pZGVvZ3JhcGhpY3BhcmVuPTEyODQxO2UudGVucGFyZW49OTM0MTtlLnRlbnBlcmlvZD05MzYxO2UudGVucm9tYW49ODU2OTtlLnRlc2g9Njc5O2UudGV0PTE0OTY7ZS50ZXRkYWdlc2g9NjQzMTI7ZS50ZXRkYWdlc2hoZWJyZXc9NjQzMTI7ZS50ZXRoZWJyZXc9MTQ5NjtlLnRldHNlY3lyaWxsaWM9MTIwNTtlLnRldmlyaGVicmV3PTE0MzU7ZS50ZXZpcmxlZnRoZWJyZXc9MTQzNTtlLnRoYWJlbmdhbGk9MjQ2OTtlLnRoYWRldmE9MjM0MTtlLnRoYWd1amFyYXRpPTI3MjU7ZS50aGFndXJtdWtoaT0yNTk3O2UudGhhbGFyYWJpYz0xNTg0O2UudGhhbGZpbmFsYXJhYmljPTY1MTk2O2UudGhhbnRoYWtoYXRsb3dsZWZ0dGhhaT02MzY0MDtlLnRoYW50aGFraGF0bG93cmlnaHR0aGFpPTYzNjM5O2UudGhhbnRoYWtoYXR0aGFpPTM2NjA7ZS50aGFudGhha2hhdHVwcGVybGVmdHRoYWk9NjM2Mzg7ZS50aGVoYXJhYmljPTE1Nzk7ZS50aGVoZmluYWxhcmFiaWM9NjUxNzg7ZS50aGVoaW5pdGlhbGFyYWJpYz02NTE3OTtlLnRoZWhtZWRpYWxhcmFiaWM9NjUxODA7ZS50aGVyZWV4aXN0cz04NzA3O2UudGhlcmVmb3JlPTg3NTY7ZS50aGV0YT05NTI7ZS50aGV0YTE9OTc3O2UudGhldGFzeW1ib2xncmVlaz05Nzc7ZS50aGlldXRoYWNpcmNsZWtvcmVhbj0xMjkyMTtlLnRoaWV1dGhhcGFyZW5rb3JlYW49MTI4MjU7ZS50aGlldXRoY2lyY2xla29yZWFuPTEyOTA3O2UudGhpZXV0aGtvcmVhbj0xMjYyMDtlLnRoaWV1dGhwYXJlbmtvcmVhbj0xMjgxMTtlLnRoaXJ0ZWVuY2lyY2xlPTkzMjQ7ZS50aGlydGVlbnBhcmVuPTkzNDQ7ZS50aGlydGVlbnBlcmlvZD05MzY0O2UudGhvbmFuZ21vbnRob3RoYWk9MzYwMTtlLnRob29rPTQyOTtlLnRob3BodXRoYW90aGFpPTM2MDI7ZS50aG9ybj0yNTQ7ZS50aG90aGFoYW50aGFpPTM2MDc7ZS50aG90aGFudGhhaT0zNjAwO2UudGhvdGhvbmd0aGFpPTM2MDg7ZS50aG90aHVuZ3RoYWk9MzYwNjtlLnRob3VzYW5kY3lyaWxsaWM9MTE1NDtlLnRob3VzYW5kc3NlcGFyYXRvcmFyYWJpYz0xNjQ0O2UudGhvdXNhbmRzc2VwYXJhdG9ycGVyc2lhbj0xNjQ0O2UudGhyZWU9NTE7ZS50aHJlZWFyYWJpYz0xNjM1O2UudGhyZWViZW5nYWxpPTI1Mzc7ZS50aHJlZWNpcmNsZT05MzE0O2UudGhyZWVjaXJjbGVpbnZlcnNlc2Fuc3NlcmlmPTEwMTI0O2UudGhyZWVkZXZhPTI0MDk7ZS50aHJlZWVpZ2h0aHM9ODU0MDtlLnRocmVlZ3VqYXJhdGk9Mjc5MztlLnRocmVlZ3VybXVraGk9MjY2NTtlLnRocmVlaGFja2FyYWJpYz0xNjM1O2UudGhyZWVoYW5nemhvdT0xMjMyMztlLnRocmVlaWRlb2dyYXBoaWNwYXJlbj0xMjgzNDtlLnRocmVlaW5mZXJpb3I9ODMyMztlLnRocmVlbW9ub3NwYWNlPTY1Mjk5O2UudGhyZWVudW1lcmF0b3JiZW5nYWxpPTI1NTA7ZS50aHJlZW9sZHN0eWxlPTYzMjgzO2UudGhyZWVwYXJlbj05MzM0O2UudGhyZWVwZXJpb2Q9OTM1NDtlLnRocmVlcGVyc2lhbj0xNzc5O2UudGhyZWVxdWFydGVycz0xOTA7ZS50aHJlZXF1YXJ0ZXJzZW1kYXNoPTYzMTk4O2UudGhyZWVyb21hbj04NTYyO2UudGhyZWVzdXBlcmlvcj0xNzk7ZS50aHJlZXRoYWk9MzY2NztlLnRoenNxdWFyZT0xMzIwNDtlLnRpaGlyYWdhbmE9MTIzODU7ZS50aWthdGFrYW5hPTEyNDgxO2UudGlrYXRha2FuYWhhbGZ3aWR0aD02NTQwOTtlLnRpa2V1dGFjaXJjbGVrb3JlYW49MTI5MTI7ZS50aWtldXRhcGFyZW5rb3JlYW49MTI4MTY7ZS50aWtldXRjaXJjbGVrb3JlYW49MTI4OTg7ZS50aWtldXRrb3JlYW49MTI1OTk7ZS50aWtldXRwYXJlbmtvcmVhbj0xMjgwMjtlLnRpbGRlPTczMjtlLnRpbGRlYmVsb3djbWI9ODE2O2UudGlsZGVjbWI9NzcxO2UudGlsZGVjb21iPTc3MTtlLnRpbGRlZG91YmxlY21iPTg2NDtlLnRpbGRlb3BlcmF0b3I9ODc2NDtlLnRpbGRlb3ZlcmxheWNtYj04MjA7ZS50aWxkZXZlcnRpY2FsY21iPTgzMDtlLnRpbWVzY2lyY2xlPTg4NTU7ZS50aXBlaGFoZWJyZXc9MTQzMDtlLnRpcGVoYWxlZnRoZWJyZXc9MTQzMDtlLnRpcHBpZ3VybXVraGk9MjY3MjtlLnRpdGxvY3lyaWxsaWNjbWI9MTE1NTtlLnRpd25hcm1lbmlhbj0xNDA3O2UudGxpbmViZWxvdz03NzkxO2UudG1vbm9zcGFjZT02NTM2NDtlLnRvYXJtZW5pYW49MTM4NTtlLnRvaGlyYWdhbmE9MTIzOTI7ZS50b2thdGFrYW5hPTEyNDg4O2UudG9rYXRha2FuYWhhbGZ3aWR0aD02NTQxMjtlLnRvbmViYXJleHRyYWhpZ2htb2Q9NzQxO2UudG9uZWJhcmV4dHJhbG93bW9kPTc0NTtlLnRvbmViYXJoaWdobW9kPTc0MjtlLnRvbmViYXJsb3dtb2Q9NzQ0O2UudG9uZWJhcm1pZG1vZD03NDM7ZS50b25lZml2ZT00NDU7ZS50b25lc2l4PTM4OTtlLnRvbmV0d289NDI0O2UudG9ub3M9OTAwO2UudG9uc3F1YXJlPTEzMDk1O2UudG9wYXRha3RoYWk9MzU5OTtlLnRvcnRvaXNlc2hlbGxicmFja2V0bGVmdD0xMjMwODtlLnRvcnRvaXNlc2hlbGxicmFja2V0bGVmdHNtYWxsPTY1MTE3O2UudG9ydG9pc2VzaGVsbGJyYWNrZXRsZWZ0dmVydGljYWw9NjUwODE7ZS50b3J0b2lzZXNoZWxsYnJhY2tldHJpZ2h0PTEyMzA5O2UudG9ydG9pc2VzaGVsbGJyYWNrZXRyaWdodHNtYWxsPTY1MTE4O2UudG9ydG9pc2VzaGVsbGJyYWNrZXRyaWdodHZlcnRpY2FsPTY1MDgyO2UudG90YW90aGFpPTM2MDU7ZS50cGFsYXRhbGhvb2s9NDI3O2UudHBhcmVuPTkzOTE7ZS50cmFkZW1hcms9ODQ4MjtlLnRyYWRlbWFya3NhbnM9NjM3MjI7ZS50cmFkZW1hcmtzZXJpZj02MzE5NTtlLnRyZXRyb2ZsZXhob29rPTY0ODtlLnRyaWFnZG49OTY2MDtlLnRyaWFnbGY9OTY2ODtlLnRyaWFncnQ9OTY1ODtlLnRyaWFndXA9OTY1MDtlLnRzPTY3ODtlLnRzYWRpPTE1MTA7ZS50c2FkaWRhZ2VzaD02NDMyNjtlLnRzYWRpZGFnZXNoaGVicmV3PTY0MzI2O2UudHNhZGloZWJyZXc9MTUxMDtlLnRzZWN5cmlsbGljPTEwOTQ7ZS50c2VyZT0xNDYxO2UudHNlcmUxMj0xNDYxO2UudHNlcmUxZT0xNDYxO2UudHNlcmUyYj0xNDYxO2UudHNlcmVoZWJyZXc9MTQ2MTtlLnRzZXJlbmFycm93aGVicmV3PTE0NjE7ZS50c2VyZXF1YXJ0ZXJoZWJyZXc9MTQ2MTtlLnRzZXJld2lkZWhlYnJldz0xNDYxO2UudHNoZWN5cmlsbGljPTExMTU7ZS50c3VwZXJpb3I9NjMyMTk7ZS50dGFiZW5nYWxpPTI0NjM7ZS50dGFkZXZhPTIzMzU7ZS50dGFndWphcmF0aT0yNzE5O2UudHRhZ3VybXVraGk9MjU5MTtlLnR0ZWhhcmFiaWM9MTY1NztlLnR0ZWhmaW5hbGFyYWJpYz02NDM1OTtlLnR0ZWhpbml0aWFsYXJhYmljPTY0MzYwO2UudHRlaG1lZGlhbGFyYWJpYz02NDM2MTtlLnR0aGFiZW5nYWxpPTI0NjQ7ZS50dGhhZGV2YT0yMzM2O2UudHRoYWd1amFyYXRpPTI3MjA7ZS50dGhhZ3VybXVraGk9MjU5MjtlLnR0dXJuZWQ9NjQ3O2UudHVoaXJhZ2FuYT0xMjM4ODtlLnR1a2F0YWthbmE9MTI0ODQ7ZS50dWthdGFrYW5haGFsZndpZHRoPTY1NDEwO2UudHVzbWFsbGhpcmFnYW5hPTEyMzg3O2UudHVzbWFsbGthdGFrYW5hPTEyNDgzO2UudHVzbWFsbGthdGFrYW5haGFsZndpZHRoPTY1MzkxO2UudHdlbHZlY2lyY2xlPTkzMjM7ZS50d2VsdmVwYXJlbj05MzQzO2UudHdlbHZlcGVyaW9kPTkzNjM7ZS50d2VsdmVyb21hbj04NTcxO2UudHdlbnR5Y2lyY2xlPTkzMzE7ZS50d2VudHloYW5nemhvdT0yMTMxNjtlLnR3ZW50eXBhcmVuPTkzNTE7ZS50d2VudHlwZXJpb2Q9OTM3MTtlLnR3bz01MDtlLnR3b2FyYWJpYz0xNjM0O2UudHdvYmVuZ2FsaT0yNTM2O2UudHdvY2lyY2xlPTkzMTM7ZS50d29jaXJjbGVpbnZlcnNlc2Fuc3NlcmlmPTEwMTIzO2UudHdvZGV2YT0yNDA4O2UudHdvZG90ZW5sZWFkZXI9ODIyOTtlLnR3b2RvdGxlYWRlcj04MjI5O2UudHdvZG90bGVhZGVydmVydGljYWw9NjUwNzI7ZS50d29ndWphcmF0aT0yNzkyO2UudHdvZ3VybXVraGk9MjY2NDtlLnR3b2hhY2thcmFiaWM9MTYzNDtlLnR3b2hhbmd6aG91PTEyMzIyO2UudHdvaWRlb2dyYXBoaWNwYXJlbj0xMjgzMztlLnR3b2luZmVyaW9yPTgzMjI7ZS50d29tb25vc3BhY2U9NjUyOTg7ZS50d29udW1lcmF0b3JiZW5nYWxpPTI1NDk7ZS50d29vbGRzdHlsZT02MzI4MjtlLnR3b3BhcmVuPTkzMzM7ZS50d29wZXJpb2Q9OTM1MztlLnR3b3BlcnNpYW49MTc3ODtlLnR3b3JvbWFuPTg1NjE7ZS50d29zdHJva2U9NDQzO2UudHdvc3VwZXJpb3I9MTc4O2UudHdvdGhhaT0zNjY2O2UudHdvdGhpcmRzPTg1MzI7ZS51PTExNztlLnVhY3V0ZT0yNTA7ZS51YmFyPTY0OTtlLnViZW5nYWxpPTI0NDE7ZS51Ym9wb21vZm89MTI1ODQ7ZS51YnJldmU9MzY1O2UudWNhcm9uPTQ2ODtlLnVjaXJjbGU9OTQ0NDtlLnVjaXJjdW1mbGV4PTI1MTtlLnVjaXJjdW1mbGV4YmVsb3c9Nzc5OTtlLnVjeXJpbGxpYz0xMDkxO2UudWRhdHRhZGV2YT0yMzg1O2UudWRibGFjdXRlPTM2OTtlLnVkYmxncmF2ZT01MzM7ZS51ZGV2YT0yMzEzO2UudWRpZXJlc2lzPTI1MjtlLnVkaWVyZXNpc2FjdXRlPTQ3MjtlLnVkaWVyZXNpc2JlbG93PTc3OTU7ZS51ZGllcmVzaXNjYXJvbj00NzQ7ZS51ZGllcmVzaXNjeXJpbGxpYz0xMjY1O2UudWRpZXJlc2lzZ3JhdmU9NDc2O2UudWRpZXJlc2lzbWFjcm9uPTQ3MDtlLnVkb3RiZWxvdz03OTA5O2UudWdyYXZlPTI0OTtlLnVndWphcmF0aT0yNjk3O2UudWd1cm11a2hpPTI1Njk7ZS51aGlyYWdhbmE9MTIzNTg7ZS51aG9va2Fib3ZlPTc5MTE7ZS51aG9ybj00MzI7ZS51aG9ybmFjdXRlPTc5MTM7ZS51aG9ybmRvdGJlbG93PTc5MjE7ZS51aG9ybmdyYXZlPTc5MTU7ZS51aG9ybmhvb2thYm92ZT03OTE3O2UudWhvcm50aWxkZT03OTE5O2UudWh1bmdhcnVtbGF1dD0zNjk7ZS51aHVuZ2FydW1sYXV0Y3lyaWxsaWM9MTI2NztlLnVpbnZlcnRlZGJyZXZlPTUzNTtlLnVrYXRha2FuYT0xMjQ1NDtlLnVrYXRha2FuYWhhbGZ3aWR0aD02NTM5NTtlLnVrY3lyaWxsaWM9MTE0NTtlLnVrb3JlYW49MTI2MzY7ZS51bWFjcm9uPTM2MztlLnVtYWNyb25jeXJpbGxpYz0xMjYzO2UudW1hY3JvbmRpZXJlc2lzPTc4MDM7ZS51bWF0cmFndXJtdWtoaT0yNjI1O2UudW1vbm9zcGFjZT02NTM2NTtlLnVuZGVyc2NvcmU9OTU7ZS51bmRlcnNjb3JlZGJsPTgyMTU7ZS51bmRlcnNjb3JlbW9ub3NwYWNlPTY1MzQzO2UudW5kZXJzY29yZXZlcnRpY2FsPTY1MDc1O2UudW5kZXJzY29yZXdhdnk9NjUxMDM7ZS51bmlvbj04NzQ2O2UudW5pdmVyc2FsPTg3MDQ7ZS51b2dvbmVrPTM3MTtlLnVwYXJlbj05MzkyO2UudXBibG9jaz05NjAwO2UudXBwZXJkb3RoZWJyZXc9MTQ3NjtlLnVwc2lsb249OTY1O2UudXBzaWxvbmRpZXJlc2lzPTk3MTtlLnVwc2lsb25kaWVyZXNpc3Rvbm9zPTk0NDtlLnVwc2lsb25sYXRpbj02NTA7ZS51cHNpbG9udG9ub3M9OTczO2UudXB0YWNrYmVsb3djbWI9Nzk3O2UudXB0YWNrbW9kPTcyNDtlLnVyYWd1cm11a2hpPTI2NzU7ZS51cmluZz0zNjc7ZS51c2hvcnRjeXJpbGxpYz0xMTE4O2UudXNtYWxsaGlyYWdhbmE9MTIzNTc7ZS51c21hbGxrYXRha2FuYT0xMjQ1MztlLnVzbWFsbGthdGFrYW5haGFsZndpZHRoPTY1Mzg1O2UudXN0cmFpZ2h0Y3lyaWxsaWM9MTE5OTtlLnVzdHJhaWdodHN0cm9rZWN5cmlsbGljPTEyMDE7ZS51dGlsZGU9MzYxO2UudXRpbGRlYWN1dGU9NzgwMTtlLnV0aWxkZWJlbG93PTc3OTc7ZS51dWJlbmdhbGk9MjQ0MjtlLnV1ZGV2YT0yMzE0O2UudXVndWphcmF0aT0yNjk4O2UudXVndXJtdWtoaT0yNTcwO2UudXVtYXRyYWd1cm11a2hpPTI2MjY7ZS51dXZvd2Vsc2lnbmJlbmdhbGk9MjQ5ODtlLnV1dm93ZWxzaWduZGV2YT0yMzcwO2UudXV2b3dlbHNpZ25ndWphcmF0aT0yNzU0O2UudXZvd2Vsc2lnbmJlbmdhbGk9MjQ5NztlLnV2b3dlbHNpZ25kZXZhPTIzNjk7ZS51dm93ZWxzaWduZ3VqYXJhdGk9Mjc1MztlLnY9MTE4O2UudmFkZXZhPTIzNTc7ZS52YWd1amFyYXRpPTI3NDE7ZS52YWd1cm11a2hpPTI2MTM7ZS52YWthdGFrYW5hPTEyNTM1O2UudmF2PTE0OTM7ZS52YXZkYWdlc2g9NjQzMDk7ZS52YXZkYWdlc2g2NT02NDMwOTtlLnZhdmRhZ2VzaGhlYnJldz02NDMwOTtlLnZhdmhlYnJldz0xNDkzO2UudmF2aG9sYW09NjQzMzE7ZS52YXZob2xhbWhlYnJldz02NDMzMTtlLnZhdnZhdmhlYnJldz0xNTIwO2UudmF2eW9kaGVicmV3PTE1MjE7ZS52Y2lyY2xlPTk0NDU7ZS52ZG90YmVsb3c9NzgwNztlLnZlY3lyaWxsaWM9MTA3NDtlLnZlaGFyYWJpYz0xNzAwO2UudmVoZmluYWxhcmFiaWM9NjQzNjM7ZS52ZWhpbml0aWFsYXJhYmljPTY0MzY0O2UudmVobWVkaWFsYXJhYmljPTY0MzY1O2UudmVrYXRha2FuYT0xMjUzNztlLnZlbnVzPTk3OTI7ZS52ZXJ0aWNhbGJhcj0xMjQ7ZS52ZXJ0aWNhbGxpbmVhYm92ZWNtYj03ODE7ZS52ZXJ0aWNhbGxpbmViZWxvd2NtYj04MDk7ZS52ZXJ0aWNhbGxpbmVsb3dtb2Q9NzE2O2UudmVydGljYWxsaW5lbW9kPTcxMjtlLnZld2FybWVuaWFuPTE0MDY7ZS52aG9vaz02NTE7ZS52aWthdGFrYW5hPTEyNTM2O2UudmlyYW1hYmVuZ2FsaT0yNTA5O2UudmlyYW1hZGV2YT0yMzgxO2UudmlyYW1hZ3VqYXJhdGk9Mjc2NTtlLnZpc2FyZ2FiZW5nYWxpPTI0MzU7ZS52aXNhcmdhZGV2YT0yMzA3O2UudmlzYXJnYWd1amFyYXRpPTI2OTE7ZS52bW9ub3NwYWNlPTY1MzY2O2Uudm9hcm1lbmlhbj0xNDAwO2Uudm9pY2VkaXRlcmF0aW9uaGlyYWdhbmE9MTI0NDY7ZS52b2ljZWRpdGVyYXRpb25rYXRha2FuYT0xMjU0MjtlLnZvaWNlZG1hcmtrYW5hPTEyNDQzO2Uudm9pY2VkbWFya2thbmFoYWxmd2lkdGg9NjU0Mzg7ZS52b2thdGFrYW5hPTEyNTM4O2UudnBhcmVuPTkzOTM7ZS52dGlsZGU9NzgwNTtlLnZ0dXJuZWQ9NjUyO2UudnVoaXJhZ2FuYT0xMjQzNjtlLnZ1a2F0YWthbmE9MTI1MzI7ZS53PTExOTtlLndhY3V0ZT03ODExO2Uud2Fla29yZWFuPTEyNjMzO2Uud2FoaXJhZ2FuYT0xMjQzMTtlLndha2F0YWthbmE9MTI1Mjc7ZS53YWthdGFrYW5haGFsZndpZHRoPTY1NDM2O2Uud2Frb3JlYW49MTI2MzI7ZS53YXNtYWxsaGlyYWdhbmE9MTI0MzA7ZS53YXNtYWxsa2F0YWthbmE9MTI1MjY7ZS53YXR0b3NxdWFyZT0xMzE0MztlLndhdmVkYXNoPTEyMzE2O2Uud2F2eXVuZGVyc2NvcmV2ZXJ0aWNhbD02NTA3NjtlLndhd2FyYWJpYz0xNjA4O2Uud2F3ZmluYWxhcmFiaWM9NjUyNjI7ZS53YXdoYW16YWFib3ZlYXJhYmljPTE1NzI7ZS53YXdoYW16YWFib3ZlZmluYWxhcmFiaWM9NjUxNTg7ZS53YnNxdWFyZT0xMzI3NztlLndjaXJjbGU9OTQ0NjtlLndjaXJjdW1mbGV4PTM3MztlLndkaWVyZXNpcz03ODEzO2Uud2RvdGFjY2VudD03ODE1O2Uud2RvdGJlbG93PTc4MTc7ZS53ZWhpcmFnYW5hPTEyNDMzO2Uud2VpZXJzdHJhc3M9ODQ3MjtlLndla2F0YWthbmE9MTI1Mjk7ZS53ZWtvcmVhbj0xMjYzODtlLndlb2tvcmVhbj0xMjYzNztlLndncmF2ZT03ODA5O2Uud2hpdGVidWxsZXQ9OTcwMjtlLndoaXRlY2lyY2xlPTk2NzU7ZS53aGl0ZWNpcmNsZWludmVyc2U9OTY4OTtlLndoaXRlY29ybmVyYnJhY2tldGxlZnQ9MTIzMDI7ZS53aGl0ZWNvcm5lcmJyYWNrZXRsZWZ0dmVydGljYWw9NjUwOTE7ZS53aGl0ZWNvcm5lcmJyYWNrZXRyaWdodD0xMjMwMztlLndoaXRlY29ybmVyYnJhY2tldHJpZ2h0dmVydGljYWw9NjUwOTI7ZS53aGl0ZWRpYW1vbmQ9OTY3MTtlLndoaXRlZGlhbW9uZGNvbnRhaW5pbmdibGFja3NtYWxsZGlhbW9uZD05NjcyO2Uud2hpdGVkb3ducG9pbnRpbmdzbWFsbHRyaWFuZ2xlPTk2NjM7ZS53aGl0ZWRvd25wb2ludGluZ3RyaWFuZ2xlPTk2NjE7ZS53aGl0ZWxlZnRwb2ludGluZ3NtYWxsdHJpYW5nbGU9OTY2NztlLndoaXRlbGVmdHBvaW50aW5ndHJpYW5nbGU9OTY2NTtlLndoaXRlbGVudGljdWxhcmJyYWNrZXRsZWZ0PTEyMzEwO2Uud2hpdGVsZW50aWN1bGFyYnJhY2tldHJpZ2h0PTEyMzExO2Uud2hpdGVyaWdodHBvaW50aW5nc21hbGx0cmlhbmdsZT05NjU3O2Uud2hpdGVyaWdodHBvaW50aW5ndHJpYW5nbGU9OTY1NTtlLndoaXRlc21hbGxzcXVhcmU9OTY0MztlLndoaXRlc21pbGluZ2ZhY2U9OTc4NjtlLndoaXRlc3F1YXJlPTk2MzM7ZS53aGl0ZXN0YXI9OTczNDtlLndoaXRldGVsZXBob25lPTk3NDM7ZS53aGl0ZXRvcnRvaXNlc2hlbGxicmFja2V0bGVmdD0xMjMxMjtlLndoaXRldG9ydG9pc2VzaGVsbGJyYWNrZXRyaWdodD0xMjMxMztlLndoaXRldXBwb2ludGluZ3NtYWxsdHJpYW5nbGU9OTY1MztlLndoaXRldXBwb2ludGluZ3RyaWFuZ2xlPTk2NTE7ZS53aWhpcmFnYW5hPTEyNDMyO2Uud2lrYXRha2FuYT0xMjUyODtlLndpa29yZWFuPTEyNjM5O2Uud21vbm9zcGFjZT02NTM2NztlLndvaGlyYWdhbmE9MTI0MzQ7ZS53b2thdGFrYW5hPTEyNTMwO2Uud29rYXRha2FuYWhhbGZ3aWR0aD02NTM4MjtlLndvbj04MzYxO2Uud29ubW9ub3NwYWNlPTY1NTEwO2Uud293YWVudGhhaT0zNjIzO2Uud3BhcmVuPTkzOTQ7ZS53cmluZz03ODMyO2Uud3N1cGVyaW9yPTY5NTtlLnd0dXJuZWQ9NjUzO2Uud3lubj00NDc7ZS54PTEyMDtlLnhhYm92ZWNtYj04Mjk7ZS54Ym9wb21vZm89MTI1NjI7ZS54Y2lyY2xlPTk0NDc7ZS54ZGllcmVzaXM9NzgyMTtlLnhkb3RhY2NlbnQ9NzgxOTtlLnhlaGFybWVuaWFuPTEzODk7ZS54aT05NTg7ZS54bW9ub3NwYWNlPTY1MzY4O2UueHBhcmVuPTkzOTU7ZS54c3VwZXJpb3I9NzM5O2UueT0xMjE7ZS55YWFkb3NxdWFyZT0xMzEzNDtlLnlhYmVuZ2FsaT0yNDc5O2UueWFjdXRlPTI1MztlLnlhZGV2YT0yMzUxO2UueWFla29yZWFuPTEyNjI2O2UueWFndWphcmF0aT0yNzM1O2UueWFndXJtdWtoaT0yNjA3O2UueWFoaXJhZ2FuYT0xMjQyMDtlLnlha2F0YWthbmE9MTI1MTY7ZS55YWthdGFrYW5haGFsZndpZHRoPTY1NDI4O2UueWFrb3JlYW49MTI2MjU7ZS55YW1ha2thbnRoYWk9MzY2MjtlLnlhc21hbGxoaXJhZ2FuYT0xMjQxOTtlLnlhc21hbGxrYXRha2FuYT0xMjUxNTtlLnlhc21hbGxrYXRha2FuYWhhbGZ3aWR0aD02NTM4ODtlLnlhdGN5cmlsbGljPTExMjM7ZS55Y2lyY2xlPTk0NDg7ZS55Y2lyY3VtZmxleD0zNzU7ZS55ZGllcmVzaXM9MjU1O2UueWRvdGFjY2VudD03ODIzO2UueWRvdGJlbG93PTc5MjU7ZS55ZWhhcmFiaWM9MTYxMDtlLnllaGJhcnJlZWFyYWJpYz0xNzQ2O2UueWVoYmFycmVlZmluYWxhcmFiaWM9NjQ0MzE7ZS55ZWhmaW5hbGFyYWJpYz02NTI2NjtlLnllaGhhbXphYWJvdmVhcmFiaWM9MTU3NDtlLnllaGhhbXphYWJvdmVmaW5hbGFyYWJpYz02NTE2MjtlLnllaGhhbXphYWJvdmVpbml0aWFsYXJhYmljPTY1MTYzO2UueWVoaGFtemFhYm92ZW1lZGlhbGFyYWJpYz02NTE2NDtlLnllaGluaXRpYWxhcmFiaWM9NjUyNjc7ZS55ZWhtZWRpYWxhcmFiaWM9NjUyNjg7ZS55ZWhtZWVtaW5pdGlhbGFyYWJpYz02NDczMztlLnllaG1lZW1pc29sYXRlZGFyYWJpYz02NDYwMDtlLnllaG5vb25maW5hbGFyYWJpYz02NDY2MDtlLnllaHRocmVlZG90c2JlbG93YXJhYmljPTE3NDU7ZS55ZWtvcmVhbj0xMjYzMDtlLnllbj0xNjU7ZS55ZW5tb25vc3BhY2U9NjU1MDk7ZS55ZW9rb3JlYW49MTI2Mjk7ZS55ZW9yaW5oaWV1aGtvcmVhbj0xMjY3ODtlLnllcmFoYmVueW9tb2hlYnJldz0xNDUwO2UueWVyYWhiZW55b21vbGVmdGhlYnJldz0xNDUwO2UueWVyaWN5cmlsbGljPTEwOTk7ZS55ZXJ1ZGllcmVzaXNjeXJpbGxpYz0xMjczO2UueWVzaWV1bmdrb3JlYW49MTI2NzM7ZS55ZXNpZXVuZ3BhbnNpb3Nrb3JlYW49MTI2NzU7ZS55ZXNpZXVuZ3Npb3Nrb3JlYW49MTI2NzQ7ZS55ZXRpdmhlYnJldz0xNDM0O2UueWdyYXZlPTc5MjM7ZS55aG9vaz00MzY7ZS55aG9va2Fib3ZlPTc5Mjc7ZS55aWFybWVuaWFuPTEzOTc7ZS55aWN5cmlsbGljPTExMTE7ZS55aWtvcmVhbj0xMjY0MjtlLnlpbnlhbmc9OTc3NTtlLnlpd25hcm1lbmlhbj0xNDEwO2UueW1vbm9zcGFjZT02NTM2OTtlLnlvZD0xNDk3O2UueW9kZGFnZXNoPTY0MzEzO2UueW9kZGFnZXNoaGVicmV3PTY0MzEzO2UueW9kaGVicmV3PTE0OTc7ZS55b2R5b2RoZWJyZXc9MTUyMjtlLnlvZHlvZHBhdGFoaGVicmV3PTY0Mjg3O2UueW9oaXJhZ2FuYT0xMjQyNDtlLnlvaWtvcmVhbj0xMjY4MTtlLnlva2F0YWthbmE9MTI1MjA7ZS55b2thdGFrYW5haGFsZndpZHRoPTY1NDMwO2UueW9rb3JlYW49MTI2MzU7ZS55b3NtYWxsaGlyYWdhbmE9MTI0MjM7ZS55b3NtYWxsa2F0YWthbmE9MTI1MTk7ZS55b3NtYWxsa2F0YWthbmFoYWxmd2lkdGg9NjUzOTA7ZS55b3RncmVlaz0xMDExO2UueW95YWVrb3JlYW49MTI2ODA7ZS55b3lha29yZWFuPTEyNjc5O2UueW95YWt0aGFpPTM2MTg7ZS55b3lpbmd0aGFpPTM1OTc7ZS55cGFyZW49OTM5NjtlLnlwb2dlZ3JhbW1lbmk9ODkwO2UueXBvZ2VncmFtbWVuaWdyZWVrY21iPTgzNztlLnlyPTQyMjtlLnlyaW5nPTc4MzM7ZS55c3VwZXJpb3I9Njk2O2UueXRpbGRlPTc5Mjk7ZS55dHVybmVkPTY1NDtlLnl1aGlyYWdhbmE9MTI0MjI7ZS55dWlrb3JlYW49MTI2ODQ7ZS55dWthdGFrYW5hPTEyNTE4O2UueXVrYXRha2FuYWhhbGZ3aWR0aD02NTQyOTtlLnl1a29yZWFuPTEyNjQwO2UueXVzYmlnY3lyaWxsaWM9MTEzMTtlLnl1c2JpZ2lvdGlmaWVkY3lyaWxsaWM9MTEzMztlLnl1c2xpdHRsZWN5cmlsbGljPTExMjc7ZS55dXNsaXR0bGVpb3RpZmllZGN5cmlsbGljPTExMjk7ZS55dXNtYWxsaGlyYWdhbmE9MTI0MjE7ZS55dXNtYWxsa2F0YWthbmE9MTI1MTc7ZS55dXNtYWxsa2F0YWthbmFoYWxmd2lkdGg9NjUzODk7ZS55dXlla29yZWFuPTEyNjgzO2UueXV5ZW9rb3JlYW49MTI2ODI7ZS55eWFiZW5nYWxpPTI1Mjc7ZS55eWFkZXZhPTIzOTk7ZS56PTEyMjtlLnphYXJtZW5pYW49MTM4MjtlLnphY3V0ZT0zNzg7ZS56YWRldmE9MjM5NTtlLnphZ3VybXVraGk9MjY1MTtlLnphaGFyYWJpYz0xNTkyO2UuemFoZmluYWxhcmFiaWM9NjUyMjI7ZS56YWhpbml0aWFsYXJhYmljPTY1MjIzO2UuemFoaXJhZ2FuYT0xMjM3NDtlLnphaG1lZGlhbGFyYWJpYz02NTIyNDtlLnphaW5hcmFiaWM9MTU4NjtlLnphaW5maW5hbGFyYWJpYz02NTIwMDtlLnpha2F0YWthbmE9MTI0NzA7ZS56YXFlZmdhZG9saGVicmV3PTE0Mjk7ZS56YXFlZnFhdGFuaGVicmV3PTE0Mjg7ZS56YXJxYWhlYnJldz0xNDMyO2UuemF5aW49MTQ5NDtlLnpheWluZGFnZXNoPTY0MzEwO2UuemF5aW5kYWdlc2hoZWJyZXc9NjQzMTA7ZS56YXlpbmhlYnJldz0xNDk0O2UuemJvcG9tb2ZvPTEyNTY3O2UuemNhcm9uPTM4MjtlLnpjaXJjbGU9OTQ0OTtlLnpjaXJjdW1mbGV4PTc4MjU7ZS56Y3VybD02NTc7ZS56ZG90PTM4MDtlLnpkb3RhY2NlbnQ9MzgwO2UuemRvdGJlbG93PTc4Mjc7ZS56ZWN5cmlsbGljPTEwNzk7ZS56ZWRlc2NlbmRlcmN5cmlsbGljPTExNzc7ZS56ZWRpZXJlc2lzY3lyaWxsaWM9MTI0NztlLnplaGlyYWdhbmE9MTIzODA7ZS56ZWthdGFrYW5hPTEyNDc2O2UuemVybz00ODtlLnplcm9hcmFiaWM9MTYzMjtlLnplcm9iZW5nYWxpPTI1MzQ7ZS56ZXJvZGV2YT0yNDA2O2UuemVyb2d1amFyYXRpPTI3OTA7ZS56ZXJvZ3VybXVraGk9MjY2MjtlLnplcm9oYWNrYXJhYmljPTE2MzI7ZS56ZXJvaW5mZXJpb3I9ODMyMDtlLnplcm9tb25vc3BhY2U9NjUyOTY7ZS56ZXJvb2xkc3R5bGU9NjMyODA7ZS56ZXJvcGVyc2lhbj0xNzc2O2UuemVyb3N1cGVyaW9yPTgzMDQ7ZS56ZXJvdGhhaT0zNjY0O2UuemVyb3dpZHRoam9pbmVyPTY1Mjc5O2UuemVyb3dpZHRobm9uam9pbmVyPTgyMDQ7ZS56ZXJvd2lkdGhzcGFjZT04MjAzO2UuemV0YT05NTA7ZS56aGJvcG9tb2ZvPTEyNTYzO2UuemhlYXJtZW5pYW49MTM4NjtlLnpoZWJyZXZlY3lyaWxsaWM9MTIxODtlLnpoZWN5cmlsbGljPTEwNzg7ZS56aGVkZXNjZW5kZXJjeXJpbGxpYz0xMTc1O2UuemhlZGllcmVzaXNjeXJpbGxpYz0xMjQ1O2UuemloaXJhZ2FuYT0xMjM3NjtlLnppa2F0YWthbmE9MTI0NzI7ZS56aW5vcmhlYnJldz0xNDU0O2UuemxpbmViZWxvdz03ODI5O2Uuem1vbm9zcGFjZT02NTM3MDtlLnpvaGlyYWdhbmE9MTIzODI7ZS56b2thdGFrYW5hPTEyNDc4O2UuenBhcmVuPTkzOTc7ZS56cmV0cm9mbGV4aG9vaz02NTY7ZS56c3Ryb2tlPTQzODtlLnp1aGlyYWdhbmE9MTIzNzg7ZS56dWthdGFrYW5hPTEyNDc0O2VbIi5ub3RkZWYiXT0wO2UuYW5nYnJhY2tldGxlZnRiaWc9OTAwMTtlLmFuZ2JyYWNrZXRsZWZ0QmlnPTkwMDE7ZS5hbmdicmFja2V0bGVmdGJpZ2c9OTAwMTtlLmFuZ2JyYWNrZXRsZWZ0QmlnZz05MDAxO2UuYW5nYnJhY2tldHJpZ2h0QmlnPTkwMDI7ZS5hbmdicmFja2V0cmlnaHRiaWc9OTAwMjtlLmFuZ2JyYWNrZXRyaWdodEJpZ2c9OTAwMjtlLmFuZ2JyYWNrZXRyaWdodGJpZ2c9OTAwMjtlLmFycm93aG9va2xlZnQ9ODYxODtlLmFycm93aG9va3JpZ2h0PTg2MTc7ZS5hcnJvd2xlZnR0b3BoYWxmPTg2MzY7ZS5hcnJvd2xlZnRib3RoYWxmPTg2Mzc7ZS5hcnJvd25vcnRoZWFzdD04NTk5O2UuYXJyb3dub3J0aHdlc3Q9ODU5ODtlLmFycm93cmlnaHR0b3BoYWxmPTg2NDA7ZS5hcnJvd3JpZ2h0Ym90aGFsZj04NjQxO2UuYXJyb3dzb3V0aGVhc3Q9ODYwMDtlLmFycm93c291dGh3ZXN0PTg2MDE7ZS5iYWNrc2xhc2hiaWc9ODcyNjtlLmJhY2tzbGFzaEJpZz04NzI2O2UuYmFja3NsYXNoQmlnZz04NzI2O2UuYmFja3NsYXNoYmlnZz04NzI2O2UuYmFyZGJsPTgyMTQ7ZS5icmFjZWh0aXBkb3dubGVmdD02NTA3OTtlLmJyYWNlaHRpcGRvd25yaWdodD02NTA3OTtlLmJyYWNlaHRpcHVwbGVmdD02NTA4MDtlLmJyYWNlaHRpcHVwcmlnaHQ9NjUwODA7ZS5icmFjZWxlZnRCaWc9MTIzO2UuYnJhY2VsZWZ0YmlnPTEyMztlLmJyYWNlbGVmdGJpZ2c9MTIzO2UuYnJhY2VsZWZ0QmlnZz0xMjM7ZS5icmFjZXJpZ2h0QmlnPTEyNTtlLmJyYWNlcmlnaHRiaWc9MTI1O2UuYnJhY2VyaWdodGJpZ2c9MTI1O2UuYnJhY2VyaWdodEJpZ2c9MTI1O2UuYnJhY2tldGxlZnRiaWc9OTE7ZS5icmFja2V0bGVmdEJpZz05MTtlLmJyYWNrZXRsZWZ0YmlnZz05MTtlLmJyYWNrZXRsZWZ0QmlnZz05MTtlLmJyYWNrZXRyaWdodEJpZz05MztlLmJyYWNrZXRyaWdodGJpZz05MztlLmJyYWNrZXRyaWdodGJpZ2c9OTM7ZS5icmFja2V0cmlnaHRCaWdnPTkzO2UuY2VpbGluZ2xlZnRiaWc9ODk2ODtlLmNlaWxpbmdsZWZ0QmlnPTg5Njg7ZS5jZWlsaW5nbGVmdEJpZ2c9ODk2ODtlLmNlaWxpbmdsZWZ0YmlnZz04OTY4O2UuY2VpbGluZ3JpZ2h0YmlnPTg5Njk7ZS5jZWlsaW5ncmlnaHRCaWc9ODk2OTtlLmNlaWxpbmdyaWdodGJpZ2c9ODk2OTtlLmNlaWxpbmdyaWdodEJpZ2c9ODk2OTtlLmNpcmNsZWRvdGRpc3BsYXk9ODg1NztlLmNpcmNsZWRvdHRleHQ9ODg1NztlLmNpcmNsZW11bHRpcGx5ZGlzcGxheT04ODU1O2UuY2lyY2xlbXVsdGlwbHl0ZXh0PTg4NTU7ZS5jaXJjbGVwbHVzZGlzcGxheT04ODUzO2UuY2lyY2xlcGx1c3RleHQ9ODg1MztlLmNvbnRpbnRlZ3JhbGRpc3BsYXk9ODc1MDtlLmNvbnRpbnRlZ3JhbHRleHQ9ODc1MDtlLmNvcHJvZHVjdGRpc3BsYXk9ODcyMDtlLmNvcHJvZHVjdHRleHQ9ODcyMDtlLmZsb29ybGVmdEJpZz04OTcwO2UuZmxvb3JsZWZ0YmlnPTg5NzA7ZS5mbG9vcmxlZnRiaWdnPTg5NzA7ZS5mbG9vcmxlZnRCaWdnPTg5NzA7ZS5mbG9vcnJpZ2h0YmlnPTg5NzE7ZS5mbG9vcnJpZ2h0QmlnPTg5NzE7ZS5mbG9vcnJpZ2h0QmlnZz04OTcxO2UuZmxvb3JyaWdodGJpZ2c9ODk3MTtlLmhhdHdpZGU9NzcwO2UuaGF0d2lkZXI9NzcwO2UuaGF0d2lkZXN0PTc3MDtlLmludGVyY2FsPTc0ODg7ZS5pbnRlZ3JhbGRpc3BsYXk9ODc0NztlLmludGVncmFsdGV4dD04NzQ3O2UuaW50ZXJzZWN0aW9uZGlzcGxheT04ODk4O2UuaW50ZXJzZWN0aW9udGV4dD04ODk4O2UubG9naWNhbGFuZGRpc3BsYXk9ODc0MztlLmxvZ2ljYWxhbmR0ZXh0PTg3NDM7ZS5sb2dpY2Fsb3JkaXNwbGF5PTg3NDQ7ZS5sb2dpY2Fsb3J0ZXh0PTg3NDQ7ZS5wYXJlbmxlZnRCaWc9NDA7ZS5wYXJlbmxlZnRiaWc9NDA7ZS5wYXJlbmxlZnRCaWdnPTQwO2UucGFyZW5sZWZ0YmlnZz00MDtlLnBhcmVucmlnaHRCaWc9NDE7ZS5wYXJlbnJpZ2h0YmlnPTQxO2UucGFyZW5yaWdodEJpZ2c9NDE7ZS5wYXJlbnJpZ2h0YmlnZz00MTtlLnByaW1lPTgyNDI7ZS5wcm9kdWN0ZGlzcGxheT04NzE5O2UucHJvZHVjdHRleHQ9ODcxOTtlLnJhZGljYWxiaWc9ODczMDtlLnJhZGljYWxCaWc9ODczMDtlLnJhZGljYWxCaWdnPTg3MzA7ZS5yYWRpY2FsYmlnZz04NzMwO2UucmFkaWNhbGJ0PTg3MzA7ZS5yYWRpY2FsdHA9ODczMDtlLnJhZGljYWx2ZXJ0ZXg9ODczMDtlLnNsYXNoYmlnPTQ3O2Uuc2xhc2hCaWc9NDc7ZS5zbGFzaEJpZ2c9NDc7ZS5zbGFzaGJpZ2c9NDc7ZS5zdW1tYXRpb25kaXNwbGF5PTg3MjE7ZS5zdW1tYXRpb250ZXh0PTg3MjE7ZS50aWxkZXdpZGU9NzMyO2UudGlsZGV3aWRlcj03MzI7ZS50aWxkZXdpZGVzdD03MzI7ZS51bmlvbmRpc3BsYXk9ODg5OTtlLnVuaW9ubXVsdGlkaXNwbGF5PTg4NDY7ZS51bmlvbm11bHRpdGV4dD04ODQ2O2UudW5pb25zcWRpc3BsYXk9ODg1MjtlLnVuaW9uc3F0ZXh0PTg4NTI7ZS51bmlvbnRleHQ9ODg5OTtlLnZleHRlbmRkb3VibGU9ODc0MTtlLnZleHRlbmRzaW5nbGU9ODczOX0pKSxHaT1nZXRMb29rdXBUYWJsZUZhY3RvcnkoKGZ1bmN0aW9uKGUpe2Uuc3BhY2U9MzI7ZS5hMT05OTg1O2UuYTI9OTk4NjtlLmEyMDI9OTk4NztlLmEzPTk5ODg7ZS5hND05NzQyO2UuYTU9OTk5MDtlLmExMTk9OTk5MTtlLmExMTg9OTk5MjtlLmExMTc9OTk5MztlLmExMT05NzU1O2UuYTEyPTk3NTg7ZS5hMTM9OTk5NjtlLmExND05OTk3O2UuYTE1PTk5OTg7ZS5hMTY9OTk5OTtlLmExMDU9MWU0O2UuYTE3PTEwMDAxO2UuYTE4PTEwMDAyO2UuYTE5PTEwMDAzO2UuYTIwPTEwMDA0O2UuYTIxPTEwMDA1O2UuYTIyPTEwMDA2O2UuYTIzPTEwMDA3O2UuYTI0PTEwMDA4O2UuYTI1PTEwMDA5O2UuYTI2PTEwMDEwO2UuYTI3PTEwMDExO2UuYTI4PTEwMDEyO2UuYTY9MTAwMTM7ZS5hNz0xMDAxNDtlLmE4PTEwMDE1O2UuYTk9MTAwMTY7ZS5hMTA9MTAwMTc7ZS5hMjk9MTAwMTg7ZS5hMzA9MTAwMTk7ZS5hMzE9MTAwMjA7ZS5hMzI9MTAwMjE7ZS5hMzM9MTAwMjI7ZS5hMzQ9MTAwMjM7ZS5hMzU9OTczMztlLmEzNj0xMDAyNTtlLmEzNz0xMDAyNjtlLmEzOD0xMDAyNztlLmEzOT0xMDAyODtlLmE0MD0xMDAyOTtlLmE0MT0xMDAzMDtlLmE0Mj0xMDAzMTtlLmE0Mz0xMDAzMjtlLmE0ND0xMDAzMztlLmE0NT0xMDAzNDtlLmE0Nj0xMDAzNTtlLmE0Nz0xMDAzNjtlLmE0OD0xMDAzNztlLmE0OT0xMDAzODtlLmE1MD0xMDAzOTtlLmE1MT0xMDA0MDtlLmE1Mj0xMDA0MTtlLmE1Mz0xMDA0MjtlLmE1ND0xMDA0MztlLmE1NT0xMDA0NDtlLmE1Nj0xMDA0NTtlLmE1Nz0xMDA0NjtlLmE1OD0xMDA0NztlLmE1OT0xMDA0ODtlLmE2MD0xMDA0OTtlLmE2MT0xMDA1MDtlLmE2Mj0xMDA1MTtlLmE2Mz0xMDA1MjtlLmE2ND0xMDA1MztlLmE2NT0xMDA1NDtlLmE2Nj0xMDA1NTtlLmE2Nz0xMDA1NjtlLmE2OD0xMDA1NztlLmE2OT0xMDA1ODtlLmE3MD0xMDA1OTtlLmE3MT05Njc5O2UuYTcyPTEwMDYxO2UuYTczPTk2MzI7ZS5hNzQ9MTAwNjM7ZS5hMjAzPTEwMDY0O2UuYTc1PTEwMDY1O2UuYTIwND0xMDA2NjtlLmE3Nj05NjUwO2UuYTc3PTk2NjA7ZS5hNzg9OTY3MDtlLmE3OT0xMDA3MDtlLmE4MT05Njg3O2UuYTgyPTEwMDcyO2UuYTgzPTEwMDczO2UuYTg0PTEwMDc0O2UuYTk3PTEwMDc1O2UuYTk4PTEwMDc2O2UuYTk5PTEwMDc3O2UuYTEwMD0xMDA3ODtlLmExMDE9MTAwODE7ZS5hMTAyPTEwMDgyO2UuYTEwMz0xMDA4MztlLmExMDQ9MTAwODQ7ZS5hMTA2PTEwMDg1O2UuYTEwNz0xMDA4NjtlLmExMDg9MTAwODc7ZS5hMTEyPTk4Mjc7ZS5hMTExPTk4MzA7ZS5hMTEwPTk4Mjk7ZS5hMTA5PTk4MjQ7ZS5hMTIwPTkzMTI7ZS5hMTIxPTkzMTM7ZS5hMTIyPTkzMTQ7ZS5hMTIzPTkzMTU7ZS5hMTI0PTkzMTY7ZS5hMTI1PTkzMTc7ZS5hMTI2PTkzMTg7ZS5hMTI3PTkzMTk7ZS5hMTI4PTkzMjA7ZS5hMTI5PTkzMjE7ZS5hMTMwPTEwMTAyO2UuYTEzMT0xMDEwMztlLmExMzI9MTAxMDQ7ZS5hMTMzPTEwMTA1O2UuYTEzND0xMDEwNjtlLmExMzU9MTAxMDc7ZS5hMTM2PTEwMTA4O2UuYTEzNz0xMDEwOTtlLmExMzg9MTAxMTA7ZS5hMTM5PTEwMTExO2UuYTE0MD0xMDExMjtlLmExNDE9MTAxMTM7ZS5hMTQyPTEwMTE0O2UuYTE0Mz0xMDExNTtlLmExNDQ9MTAxMTY7ZS5hMTQ1PTEwMTE3O2UuYTE0Nj0xMDExODtlLmExNDc9MTAxMTk7ZS5hMTQ4PTEwMTIwO2UuYTE0OT0xMDEyMTtlLmExNTA9MTAxMjI7ZS5hMTUxPTEwMTIzO2UuYTE1Mj0xMDEyNDtlLmExNTM9MTAxMjU7ZS5hMTU0PTEwMTI2O2UuYTE1NT0xMDEyNztlLmExNTY9MTAxMjg7ZS5hMTU3PTEwMTI5O2UuYTE1OD0xMDEzMDtlLmExNTk9MTAxMzE7ZS5hMTYwPTEwMTMyO2UuYTE2MT04NTk0O2UuYTE2Mz04NTk2O2UuYTE2ND04NTk3O2UuYTE5Nj0xMDEzNjtlLmExNjU9MTAxMzc7ZS5hMTkyPTEwMTM4O2UuYTE2Nj0xMDEzOTtlLmExNjc9MTAxNDA7ZS5hMTY4PTEwMTQxO2UuYTE2OT0xMDE0MjtlLmExNzA9MTAxNDM7ZS5hMTcxPTEwMTQ0O2UuYTE3Mj0xMDE0NTtlLmExNzM9MTAxNDY7ZS5hMTYyPTEwMTQ3O2UuYTE3ND0xMDE0ODtlLmExNzU9MTAxNDk7ZS5hMTc2PTEwMTUwO2UuYTE3Nz0xMDE1MTtlLmExNzg9MTAxNTI7ZS5hMTc5PTEwMTUzO2UuYTE5Mz0xMDE1NDtlLmExODA9MTAxNTU7ZS5hMTk5PTEwMTU2O2UuYTE4MT0xMDE1NztlLmEyMDA9MTAxNTg7ZS5hMTgyPTEwMTU5O2UuYTIwMT0xMDE2MTtlLmExODM9MTAxNjI7ZS5hMTg0PTEwMTYzO2UuYTE5Nz0xMDE2NDtlLmExODU9MTAxNjU7ZS5hMTk0PTEwMTY2O2UuYTE5OD0xMDE2NztlLmExODY9MTAxNjg7ZS5hMTk1PTEwMTY5O2UuYTE4Nz0xMDE3MDtlLmExODg9MTAxNzE7ZS5hMTg5PTEwMTcyO2UuYTE5MD0xMDE3MztlLmExOTE9MTAxNzQ7ZS5hODk9MTAwODg7ZS5hOTA9MTAwODk7ZS5hOTM9MTAwOTA7ZS5hOTQ9MTAwOTE7ZS5hOTE9MTAwOTI7ZS5hOTI9MTAwOTM7ZS5hMjA1PTEwMDk0O2UuYTg1PTEwMDk1O2UuYTIwNj0xMDA5NjtlLmE4Nj0xMDA5NztlLmE4Nz0xMDA5ODtlLmE4OD0xMDA5OTtlLmE5NT0xMDEwMDtlLmE5Nj0xMDEwMTtlWyIubm90ZGVmIl09MH0pKSx4aT1nZXRMb29rdXBUYWJsZUZhY3RvcnkoKGZ1bmN0aW9uKGUpe2VbNjM3MjFdPTE2OTtlWzYzMTkzXT0xNjk7ZVs2MzcyMF09MTc0O2VbNjMxOTRdPTE3NDtlWzYzNzIyXT04NDgyO2VbNjMxOTVdPTg0ODI7ZVs2MzcyOV09OTEyNztlWzYzNzMwXT05MTI4O2VbNjM3MzFdPTkxMjk7ZVs2Mzc0MF09OTEzMTtlWzYzNzQxXT05MTMyO2VbNjM3NDJdPTkxMzM7ZVs2MzcyNl09OTEyMTtlWzYzNzI3XT05MTIyO2VbNjM3MjhdPTkxMjM7ZVs2MzczN109OTEyNDtlWzYzNzM4XT05MTI1O2VbNjM3MzldPTkxMjY7ZVs2MzcyM109OTExNTtlWzYzNzI0XT05MTE2O2VbNjM3MjVdPTkxMTc7ZVs2MzczNF09OTExODtlWzYzNzM1XT05MTE5O2VbNjM3MzZdPTkxMjB9KSk7ZnVuY3Rpb24gZ2V0VW5pY29kZUZvckdseXBoKGUsdCl7bGV0IGk9dFtlXTtpZih2b2lkIDAhPT1pKXJldHVybiBpO2lmKCFlKXJldHVybi0xO2lmKCJ1Ij09PWVbMF0pe2NvbnN0IHQ9ZS5sZW5ndGg7bGV0IGE7aWYoNz09PXQmJiJuIj09PWVbMV0mJiJpIj09PWVbMl0pYT1lLnN1YnN0cmluZygzKTtlbHNle2lmKCEodD49NSYmdDw9NykpcmV0dXJuLTE7YT1lLnN1YnN0cmluZygxKX1pZihhPT09YS50b1VwcGVyQ2FzZSgpKXtpPXBhcnNlSW50KGEsMTYpO2lmKGk+PTApcmV0dXJuIGl9fXJldHVybi0xfWNvbnN0IE1pPVtbMCwxMjddLFsxMjgsMjU1XSxbMjU2LDM4M10sWzM4NCw1OTFdLFs1OTIsNjg3LDc0MjQsNzU1MSw3NTUyLDc2MTVdLFs2ODgsNzY3LDQyNzUyLDQyNzgzXSxbNzY4LDg3OSw3NjE2LDc2NzldLFs4ODAsMTAyM10sWzExMzkyLDExNTE5XSxbMTAyNCwxMjc5LDEyODAsMTMyNywxMTc0NCwxMTc3NSw0MjU2MCw0MjY1NV0sWzEzMjgsMTQyM10sWzE0MjQsMTUzNV0sWzQyMjQwLDQyNTU5XSxbMTUzNiwxNzkxLDE4NzIsMTkxOV0sWzE5ODQsMjA0N10sWzIzMDQsMjQzMV0sWzI0MzIsMjU1OV0sWzI1NjAsMjY4N10sWzI2ODgsMjgxNV0sWzI4MTYsMjk0M10sWzI5NDQsMzA3MV0sWzMwNzIsMzE5OV0sWzMyMDAsMzMyN10sWzMzMjgsMzQ1NV0sWzM1ODQsMzcxMV0sWzM3MTIsMzgzOV0sWzQyNTYsNDM1MSwxMTUyMCwxMTU2N10sWzY5MTIsNzAzOV0sWzQzNTIsNDYwN10sWzc2ODAsNzkzNSwxMTM2MCwxMTM5MSw0Mjc4NCw0MzAwN10sWzc5MzYsODE5MV0sWzgxOTIsODMwMywxMTc3NiwxMTkwM10sWzgzMDQsODM1MV0sWzgzNTIsODM5OV0sWzg0MDAsODQ0N10sWzg0NDgsODUyN10sWzg1MjgsODU5MV0sWzg1OTIsODcwMywxMDIyNCwxMDIzOSwxMDQ5NiwxMDYyMywxMTAwOCwxMTI2M10sWzg3MDQsODk1OSwxMDc1MiwxMTAwNywxMDE3NiwxMDIyMywxMDYyNCwxMDc1MV0sWzg5NjAsOTIxNV0sWzkyMTYsOTI3OV0sWzkyODAsOTMxMV0sWzkzMTIsOTQ3MV0sWzk0NzIsOTU5OV0sWzk2MDAsOTYzMV0sWzk2MzIsOTcyN10sWzk3MjgsOTk4M10sWzk5ODQsMTAxNzVdLFsxMjI4OCwxMjM1MV0sWzEyMzUyLDEyNDQ3XSxbMTI0NDgsMTI1NDMsMTI3ODQsMTI3OTldLFsxMjU0NCwxMjU5MSwxMjcwNCwxMjczNV0sWzEyNTkyLDEyNjg3XSxbNDMwNzIsNDMxMzVdLFsxMjgwMCwxMzA1NV0sWzEzMDU2LDEzMzExXSxbNDQwMzIsNTUyMTVdLFs1NTI5Niw1NzM0M10sWzY3ODQwLDY3ODcxXSxbMTk5NjgsNDA5NTksMTE5MDQsMTIwMzEsMTIwMzIsMTIyNTUsMTIyNzIsMTIyODcsMTMzMTIsMTk5MDMsMTMxMDcyLDE3Mzc5MSwxMjY4OCwxMjcwM10sWzU3MzQ0LDYzNzQzXSxbMTI3MzYsMTI3ODMsNjM3NDQsNjQyNTUsMTk0NTYwLDE5NTEwM10sWzY0MjU2LDY0MzM1XSxbNjQzMzYsNjUwMjNdLFs2NTA1Niw2NTA3MV0sWzY1MDQwLDY1MDU1XSxbNjUxMDQsNjUxMzVdLFs2NTEzNiw2NTI3OV0sWzY1MjgwLDY1NTE5XSxbNjU1MjAsNjU1MzVdLFszODQwLDQwOTVdLFsxNzkyLDE4NzFdLFsxOTIwLDE5ODNdLFszNDU2LDM1ODNdLFs0MDk2LDQyNTVdLFs0NjA4LDQ5OTEsNDk5Miw1MDIzLDExNjQ4LDExNzQzXSxbNTAyNCw1MTE5XSxbNTEyMCw1NzU5XSxbNTc2MCw1NzkxXSxbNTc5Miw1ODg3XSxbNjAxNiw2MTQzXSxbNjE0NCw2MzE5XSxbMTAyNDAsMTA0OTVdLFs0MDk2MCw0MjEyN10sWzU4ODgsNTkxOSw1OTIwLDU5NTEsNTk1Miw1OTgzLDU5ODQsNjAxNV0sWzY2MzA0LDY2MzUxXSxbNjYzNTIsNjYzODNdLFs2NjU2MCw2NjYzOV0sWzExODc4NCwxMTkwMzksMTE5MDQwLDExOTI5NSwxMTkyOTYsMTE5Mzc1XSxbMTE5ODA4LDEyMDgzMV0sWzEwNDQ0ODAsMTA0ODU3M10sWzY1MDI0LDY1MDM5LDkxNzc2MCw5MTc5OTldLFs5MTc1MDQsOTE3NjMxXSxbNjQwMCw2NDc5XSxbNjQ4MCw2NTI3XSxbNjUyOCw2NjIzXSxbNjY1Niw2Njg3XSxbMTEyNjQsMTEzNTldLFsxMTU2OCwxMTY0N10sWzE5OTA0LDE5OTY3XSxbNDMwMDgsNDMwNTVdLFs2NTUzNiw2NTY2Myw2NTY2NCw2NTc5MSw2NTc5Miw2NTg1NV0sWzY1ODU2LDY1OTM1XSxbNjY0MzIsNjY0NjNdLFs2NjQ2NCw2NjUyN10sWzY2NjQwLDY2Njg3XSxbNjY2ODgsNjY3MzVdLFs2NzU4NCw2NzY0N10sWzY4MDk2LDY4MTkxXSxbMTE5NTUyLDExOTY0N10sWzczNzI4LDc0NzUxLDc0NzUyLDc0ODc5XSxbMTE5NjQ4LDExOTY3OV0sWzcwNDAsNzEwM10sWzcxNjgsNzI0N10sWzcyNDgsNzI5NV0sWzQzMTM2LDQzMjMxXSxbNDMyNjQsNDMzMTFdLFs0MzMxMiw0MzM1OV0sWzQzNTIwLDQzNjE1XSxbNjU5MzYsNjU5OTldLFs2NmUzLDY2MDQ3XSxbNjYyMDgsNjYyNzEsNjYxNzYsNjYyMDcsNjc4NzIsNjc5MDNdLFsxMjcwMjQsMTI3MTM1LDEyNjk3NiwxMjcwMjNdXTtmdW5jdGlvbiBnZXRVbmljb2RlUmFuZ2VGb3IoZSx0PS0xKXtpZigtMSE9PXQpe2NvbnN0IGk9TWlbdF07Zm9yKGxldCBhPTAscz1pLmxlbmd0aDthPHM7YSs9MilpZihlPj1pW2FdJiZlPD1pW2ErMV0pcmV0dXJuIHR9Zm9yKGxldCB0PTAsaT1NaS5sZW5ndGg7dDxpO3QrKyl7Y29uc3QgaT1NaVt0XTtmb3IobGV0IGE9MCxzPWkubGVuZ3RoO2E8czthKz0yKWlmKGU+PWlbYV0mJmU8PWlbYSsxXSlyZXR1cm4gdH1yZXR1cm4tMX1jb25zdCBIaT1uZXcgUmVnRXhwKCJeKFxccyl8KFxccHtNbn0pfChcXHB7Q2Z9KSQiLCJ1IiksSmk9bmV3IE1hcDtjb25zdCBZaT0hMCx2aT0xLEtpPTIsVGk9NCxxaT0zMixPaT1bIi5ub3RkZWYiLCIubnVsbCIsIm5vbm1hcmtpbmdyZXR1cm4iLCJzcGFjZSIsImV4Y2xhbSIsInF1b3RlZGJsIiwibnVtYmVyc2lnbiIsImRvbGxhciIsInBlcmNlbnQiLCJhbXBlcnNhbmQiLCJxdW90ZXNpbmdsZSIsInBhcmVubGVmdCIsInBhcmVucmlnaHQiLCJhc3RlcmlzayIsInBsdXMiLCJjb21tYSIsImh5cGhlbiIsInBlcmlvZCIsInNsYXNoIiwiemVybyIsIm9uZSIsInR3byIsInRocmVlIiwiZm91ciIsImZpdmUiLCJzaXgiLCJzZXZlbiIsImVpZ2h0IiwibmluZSIsImNvbG9uIiwic2VtaWNvbG9uIiwibGVzcyIsImVxdWFsIiwiZ3JlYXRlciIsInF1ZXN0aW9uIiwiYXQiLCJBIiwiQiIsIkMiLCJEIiwiRSIsIkYiLCJHIiwiSCIsIkkiLCJKIiwiSyIsIkwiLCJNIiwiTiIsIk8iLCJQIiwiUSIsIlIiLCJTIiwiVCIsIlUiLCJWIiwiVyIsIlgiLCJZIiwiWiIsImJyYWNrZXRsZWZ0IiwiYmFja3NsYXNoIiwiYnJhY2tldHJpZ2h0IiwiYXNjaWljaXJjdW0iLCJ1bmRlcnNjb3JlIiwiZ3JhdmUiLCJhIiwiYiIsImMiLCJkIiwiZSIsImYiLCJnIiwiaCIsImkiLCJqIiwiayIsImwiLCJtIiwibiIsIm8iLCJwIiwicSIsInIiLCJzIiwidCIsInUiLCJ2IiwidyIsIngiLCJ5IiwieiIsImJyYWNlbGVmdCIsImJhciIsImJyYWNlcmlnaHQiLCJhc2NpaXRpbGRlIiwiQWRpZXJlc2lzIiwiQXJpbmciLCJDY2VkaWxsYSIsIkVhY3V0ZSIsIk50aWxkZSIsIk9kaWVyZXNpcyIsIlVkaWVyZXNpcyIsImFhY3V0ZSIsImFncmF2ZSIsImFjaXJjdW1mbGV4IiwiYWRpZXJlc2lzIiwiYXRpbGRlIiwiYXJpbmciLCJjY2VkaWxsYSIsImVhY3V0ZSIsImVncmF2ZSIsImVjaXJjdW1mbGV4IiwiZWRpZXJlc2lzIiwiaWFjdXRlIiwiaWdyYXZlIiwiaWNpcmN1bWZsZXgiLCJpZGllcmVzaXMiLCJudGlsZGUiLCJvYWN1dGUiLCJvZ3JhdmUiLCJvY2lyY3VtZmxleCIsIm9kaWVyZXNpcyIsIm90aWxkZSIsInVhY3V0ZSIsInVncmF2ZSIsInVjaXJjdW1mbGV4IiwidWRpZXJlc2lzIiwiZGFnZ2VyIiwiZGVncmVlIiwiY2VudCIsInN0ZXJsaW5nIiwic2VjdGlvbiIsImJ1bGxldCIsInBhcmFncmFwaCIsImdlcm1hbmRibHMiLCJyZWdpc3RlcmVkIiwiY29weXJpZ2h0IiwidHJhZGVtYXJrIiwiYWN1dGUiLCJkaWVyZXNpcyIsIm5vdGVxdWFsIiwiQUUiLCJPc2xhc2giLCJpbmZpbml0eSIsInBsdXNtaW51cyIsImxlc3NlcXVhbCIsImdyZWF0ZXJlcXVhbCIsInllbiIsIm11IiwicGFydGlhbGRpZmYiLCJzdW1tYXRpb24iLCJwcm9kdWN0IiwicGkiLCJpbnRlZ3JhbCIsIm9yZGZlbWluaW5lIiwib3JkbWFzY3VsaW5lIiwiT21lZ2EiLCJhZSIsIm9zbGFzaCIsInF1ZXN0aW9uZG93biIsImV4Y2xhbWRvd24iLCJsb2dpY2Fsbm90IiwicmFkaWNhbCIsImZsb3JpbiIsImFwcHJveGVxdWFsIiwiRGVsdGEiLCJndWlsbGVtb3RsZWZ0IiwiZ3VpbGxlbW90cmlnaHQiLCJlbGxpcHNpcyIsIm5vbmJyZWFraW5nc3BhY2UiLCJBZ3JhdmUiLCJBdGlsZGUiLCJPdGlsZGUiLCJPRSIsIm9lIiwiZW5kYXNoIiwiZW1kYXNoIiwicXVvdGVkYmxsZWZ0IiwicXVvdGVkYmxyaWdodCIsInF1b3RlbGVmdCIsInF1b3RlcmlnaHQiLCJkaXZpZGUiLCJsb3plbmdlIiwieWRpZXJlc2lzIiwiWWRpZXJlc2lzIiwiZnJhY3Rpb24iLCJjdXJyZW5jeSIsImd1aWxzaW5nbGxlZnQiLCJndWlsc2luZ2xyaWdodCIsImZpIiwiZmwiLCJkYWdnZXJkYmwiLCJwZXJpb2RjZW50ZXJlZCIsInF1b3Rlc2luZ2xiYXNlIiwicXVvdGVkYmxiYXNlIiwicGVydGhvdXNhbmQiLCJBY2lyY3VtZmxleCIsIkVjaXJjdW1mbGV4IiwiQWFjdXRlIiwiRWRpZXJlc2lzIiwiRWdyYXZlIiwiSWFjdXRlIiwiSWNpcmN1bWZsZXgiLCJJZGllcmVzaXMiLCJJZ3JhdmUiLCJPYWN1dGUiLCJPY2lyY3VtZmxleCIsImFwcGxlIiwiT2dyYXZlIiwiVWFjdXRlIiwiVWNpcmN1bWZsZXgiLCJVZ3JhdmUiLCJkb3RsZXNzaSIsImNpcmN1bWZsZXgiLCJ0aWxkZSIsIm1hY3JvbiIsImJyZXZlIiwiZG90YWNjZW50IiwicmluZyIsImNlZGlsbGEiLCJodW5nYXJ1bWxhdXQiLCJvZ29uZWsiLCJjYXJvbiIsIkxzbGFzaCIsImxzbGFzaCIsIlNjYXJvbiIsInNjYXJvbiIsIlpjYXJvbiIsInpjYXJvbiIsImJyb2tlbmJhciIsIkV0aCIsImV0aCIsIllhY3V0ZSIsInlhY3V0ZSIsIlRob3JuIiwidGhvcm4iLCJtaW51cyIsIm11bHRpcGx5Iiwib25lc3VwZXJpb3IiLCJ0d29zdXBlcmlvciIsInRocmVlc3VwZXJpb3IiLCJvbmVoYWxmIiwib25lcXVhcnRlciIsInRocmVlcXVhcnRlcnMiLCJmcmFuYyIsIkdicmV2ZSIsImdicmV2ZSIsIklkb3RhY2NlbnQiLCJTY2VkaWxsYSIsInNjZWRpbGxhIiwiQ2FjdXRlIiwiY2FjdXRlIiwiQ2Nhcm9uIiwiY2Nhcm9uIiwiZGNyb2F0Il07ZnVuY3Rpb24gcmVjb3ZlckdseXBoTmFtZShlLHQpe2lmKHZvaWQgMCE9PXRbZV0pcmV0dXJuIGU7Y29uc3QgaT1nZXRVbmljb2RlRm9yR2x5cGgoZSx0KTtpZigtMSE9PWkpZm9yKGNvbnN0IGUgaW4gdClpZih0W2VdPT09aSlyZXR1cm4gZTtpbmZvKCJVbmFibGUgdG8gcmVjb3ZlciBhIHN0YW5kYXJkIGdseXBoIG5hbWUgZm9yOiAiK2UpO3JldHVybiBlfWZ1bmN0aW9uIHR5cGUxRm9udEdseXBoTWFwcGluZyhlLHQsaSl7Y29uc3QgYT1PYmplY3QuY3JlYXRlKG51bGwpO2xldCBzLHIsbjtjb25zdCBvPSEhKGUuZmxhZ3MmVGkpO2lmKGUuaXNJbnRlcm5hbEZvbnQpe249dDtmb3Iocj0wO3I8bi5sZW5ndGg7cisrKXtzPWkuaW5kZXhPZihuW3JdKTthW3JdPXM+PTA/czowfX1lbHNlIGlmKGUuYmFzZUVuY29kaW5nTmFtZSl7bj1nZXRFbmNvZGluZyhlLmJhc2VFbmNvZGluZ05hbWUpO2ZvcihyPTA7cjxuLmxlbmd0aDtyKyspe3M9aS5pbmRleE9mKG5bcl0pO2Fbcl09cz49MD9zOjB9fWVsc2UgaWYobylmb3IociBpbiB0KWFbcl09dFtyXTtlbHNle249Zmk7Zm9yKHI9MDtyPG4ubGVuZ3RoO3IrKyl7cz1pLmluZGV4T2YobltyXSk7YVtyXT1zPj0wP3M6MH19Y29uc3QgZz1lLmRpZmZlcmVuY2VzO2xldCBjO2lmKGcpZm9yKHIgaW4gZyl7Y29uc3QgZT1nW3JdO3M9aS5pbmRleE9mKGUpO2lmKC0xPT09cyl7Y3x8KGM9UmkoKSk7Y29uc3QgdD1yZWNvdmVyR2x5cGhOYW1lKGUsYyk7dCE9PWUmJihzPWkuaW5kZXhPZih0KSl9YVtyXT1zPj0wP3M6MH1yZXR1cm4gYX1mdW5jdGlvbiBub3JtYWxpemVGb250TmFtZShlKXtyZXR1cm4gZS5yZXBsYWNlQWxsKC9bLF9dL2csIi0iKS5yZXBsYWNlQWxsKC9ccy9nLCIiKX1jb25zdCBQaT1nZXRMb29rdXBUYWJsZUZhY3RvcnkoKGZ1bmN0aW9uKGUpe2VbIlRpbWVzLVJvbWFuIl09IlRpbWVzLVJvbWFuIjtlLkhlbHZldGljYT0iSGVsdmV0aWNhIjtlLkNvdXJpZXI9IkNvdXJpZXIiO2UuU3ltYm9sPSJTeW1ib2wiO2VbIlRpbWVzLUJvbGQiXT0iVGltZXMtQm9sZCI7ZVsiSGVsdmV0aWNhLUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIkNvdXJpZXItQm9sZCJdPSJDb3VyaWVyLUJvbGQiO2UuWmFwZkRpbmdiYXRzPSJaYXBmRGluZ2JhdHMiO2VbIlRpbWVzLUl0YWxpYyJdPSJUaW1lcy1JdGFsaWMiO2VbIkhlbHZldGljYS1PYmxpcXVlIl09IkhlbHZldGljYS1PYmxpcXVlIjtlWyJDb3VyaWVyLU9ibGlxdWUiXT0iQ291cmllci1PYmxpcXVlIjtlWyJUaW1lcy1Cb2xkSXRhbGljIl09IlRpbWVzLUJvbGRJdGFsaWMiO2VbIkhlbHZldGljYS1Cb2xkT2JsaXF1ZSJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkNvdXJpZXItQm9sZE9ibGlxdWUiXT0iQ291cmllci1Cb2xkT2JsaXF1ZSI7ZS5BcmlhbE5hcnJvdz0iSGVsdmV0aWNhIjtlWyJBcmlhbE5hcnJvdy1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJBcmlhbE5hcnJvdy1Cb2xkSXRhbGljIl09IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSI7ZVsiQXJpYWxOYXJyb3ctSXRhbGljIl09IkhlbHZldGljYS1PYmxpcXVlIjtlLkFyaWFsQmxhY2s9IkhlbHZldGljYSI7ZVsiQXJpYWxCbGFjay1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJBcmlhbEJsYWNrLUJvbGRJdGFsaWMiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIjtlWyJBcmlhbEJsYWNrLUl0YWxpYyJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSI7ZVsiQXJpYWwtQmxhY2siXT0iSGVsdmV0aWNhIjtlWyJBcmlhbC1CbGFjay1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJBcmlhbC1CbGFjay1Cb2xkSXRhbGljIl09IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSI7ZVsiQXJpYWwtQmxhY2stSXRhbGljIl09IkhlbHZldGljYS1PYmxpcXVlIjtlLkFyaWFsPSJIZWx2ZXRpY2EiO2VbIkFyaWFsLUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIkFyaWFsLUJvbGRJdGFsaWMiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIjtlWyJBcmlhbC1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2UuQXJpYWxNVD0iSGVsdmV0aWNhIjtlWyJBcmlhbC1Cb2xkSXRhbGljTVQiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIjtlWyJBcmlhbC1Cb2xkTVQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIkFyaWFsLUl0YWxpY01UIl09IkhlbHZldGljYS1PYmxpcXVlIjtlWyJBcmlhbC1Cb2xkSXRhbGljTVQtQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkFyaWFsLUJvbGRNVC1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJBcmlhbC1JdGFsaWNNVC1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2UuQXJpYWxVbmljb2RlTVM9IkhlbHZldGljYSI7ZVsiQXJpYWxVbmljb2RlTVMtQm9sZCJdPSJIZWx2ZXRpY2EtQm9sZCI7ZVsiQXJpYWxVbmljb2RlTVMtQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkFyaWFsVW5pY29kZU1TLUl0YWxpYyJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSI7ZVsiQ291cmllci1Cb2xkSXRhbGljIl09IkNvdXJpZXItQm9sZE9ibGlxdWUiO2VbIkNvdXJpZXItSXRhbGljIl09IkNvdXJpZXItT2JsaXF1ZSI7ZS5Db3VyaWVyTmV3PSJDb3VyaWVyIjtlWyJDb3VyaWVyTmV3LUJvbGQiXT0iQ291cmllci1Cb2xkIjtlWyJDb3VyaWVyTmV3LUJvbGRJdGFsaWMiXT0iQ291cmllci1Cb2xkT2JsaXF1ZSI7ZVsiQ291cmllck5ldy1JdGFsaWMiXT0iQ291cmllci1PYmxpcXVlIjtlWyJDb3VyaWVyTmV3UFMtQm9sZEl0YWxpY01UIl09IkNvdXJpZXItQm9sZE9ibGlxdWUiO2VbIkNvdXJpZXJOZXdQUy1Cb2xkTVQiXT0iQ291cmllci1Cb2xkIjtlWyJDb3VyaWVyTmV3UFMtSXRhbGljTVQiXT0iQ291cmllci1PYmxpcXVlIjtlLkNvdXJpZXJOZXdQU01UPSJDb3VyaWVyIjtlWyJIZWx2ZXRpY2EtQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkhlbHZldGljYS1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2VbIlN5bWJvbC1Cb2xkIl09IlN5bWJvbCI7ZVsiU3ltYm9sLUJvbGRJdGFsaWMiXT0iU3ltYm9sIjtlWyJTeW1ib2wtSXRhbGljIl09IlN5bWJvbCI7ZS5UaW1lc05ld1JvbWFuPSJUaW1lcy1Sb21hbiI7ZVsiVGltZXNOZXdSb21hbi1Cb2xkIl09IlRpbWVzLUJvbGQiO2VbIlRpbWVzTmV3Um9tYW4tQm9sZEl0YWxpYyJdPSJUaW1lcy1Cb2xkSXRhbGljIjtlWyJUaW1lc05ld1JvbWFuLUl0YWxpYyJdPSJUaW1lcy1JdGFsaWMiO2UuVGltZXNOZXdSb21hblBTPSJUaW1lcy1Sb21hbiI7ZVsiVGltZXNOZXdSb21hblBTLUJvbGQiXT0iVGltZXMtQm9sZCI7ZVsiVGltZXNOZXdSb21hblBTLUJvbGRJdGFsaWMiXT0iVGltZXMtQm9sZEl0YWxpYyI7ZVsiVGltZXNOZXdSb21hblBTLUJvbGRJdGFsaWNNVCJdPSJUaW1lcy1Cb2xkSXRhbGljIjtlWyJUaW1lc05ld1JvbWFuUFMtQm9sZE1UIl09IlRpbWVzLUJvbGQiO2VbIlRpbWVzTmV3Um9tYW5QUy1JdGFsaWMiXT0iVGltZXMtSXRhbGljIjtlWyJUaW1lc05ld1JvbWFuUFMtSXRhbGljTVQiXT0iVGltZXMtSXRhbGljIjtlLlRpbWVzTmV3Um9tYW5QU01UPSJUaW1lcy1Sb21hbiI7ZVsiVGltZXNOZXdSb21hblBTTVQtQm9sZCJdPSJUaW1lcy1Cb2xkIjtlWyJUaW1lc05ld1JvbWFuUFNNVC1Cb2xkSXRhbGljIl09IlRpbWVzLUJvbGRJdGFsaWMiO2VbIlRpbWVzTmV3Um9tYW5QU01ULUl0YWxpYyJdPSJUaW1lcy1JdGFsaWMifSkpLFdpPWdldExvb2t1cFRhYmxlRmFjdG9yeSgoZnVuY3Rpb24oZSl7ZS5Db3VyaWVyPSJGb3hpdEZpeGVkLnBmYiI7ZVsiQ291cmllci1Cb2xkIl09IkZveGl0Rml4ZWRCb2xkLnBmYiI7ZVsiQ291cmllci1Cb2xkT2JsaXF1ZSJdPSJGb3hpdEZpeGVkQm9sZEl0YWxpYy5wZmIiO2VbIkNvdXJpZXItT2JsaXF1ZSJdPSJGb3hpdEZpeGVkSXRhbGljLnBmYiI7ZS5IZWx2ZXRpY2E9IkxpYmVyYXRpb25TYW5zLVJlZ3VsYXIudHRmIjtlWyJIZWx2ZXRpY2EtQm9sZCJdPSJMaWJlcmF0aW9uU2Fucy1Cb2xkLnR0ZiI7ZVsiSGVsdmV0aWNhLUJvbGRPYmxpcXVlIl09IkxpYmVyYXRpb25TYW5zLUJvbGRJdGFsaWMudHRmIjtlWyJIZWx2ZXRpY2EtT2JsaXF1ZSJdPSJMaWJlcmF0aW9uU2Fucy1JdGFsaWMudHRmIjtlWyJUaW1lcy1Sb21hbiJdPSJGb3hpdFNlcmlmLnBmYiI7ZVsiVGltZXMtQm9sZCJdPSJGb3hpdFNlcmlmQm9sZC5wZmIiO2VbIlRpbWVzLUJvbGRJdGFsaWMiXT0iRm94aXRTZXJpZkJvbGRJdGFsaWMucGZiIjtlWyJUaW1lcy1JdGFsaWMiXT0iRm94aXRTZXJpZkl0YWxpYy5wZmIiO2UuU3ltYm9sPSJGb3hpdFN5bWJvbC5wZmIiO2UuWmFwZkRpbmdiYXRzPSJGb3hpdERpbmdiYXRzLnBmYiI7ZVsiTGliZXJhdGlvblNhbnMtUmVndWxhciJdPSJMaWJlcmF0aW9uU2Fucy1SZWd1bGFyLnR0ZiI7ZVsiTGliZXJhdGlvblNhbnMtQm9sZCJdPSJMaWJlcmF0aW9uU2Fucy1Cb2xkLnR0ZiI7ZVsiTGliZXJhdGlvblNhbnMtSXRhbGljIl09IkxpYmVyYXRpb25TYW5zLUl0YWxpYy50dGYiO2VbIkxpYmVyYXRpb25TYW5zLUJvbGRJdGFsaWMiXT0iTGliZXJhdGlvblNhbnMtQm9sZEl0YWxpYy50dGYifSkpLGppPWdldExvb2t1cFRhYmxlRmFjdG9yeSgoZnVuY3Rpb24oZSl7ZS5DYWxpYnJpPSJIZWx2ZXRpY2EiO2VbIkNhbGlicmktQm9sZCJdPSJIZWx2ZXRpY2EtQm9sZCI7ZVsiQ2FsaWJyaS1Cb2xkSXRhbGljIl09IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSI7ZVsiQ2FsaWJyaS1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2UuQ2VudHVyeUdvdGhpYz0iSGVsdmV0aWNhIjtlWyJDZW50dXJ5R290aGljLUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIkNlbnR1cnlHb3RoaWMtQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkNlbnR1cnlHb3RoaWMtSXRhbGljIl09IkhlbHZldGljYS1PYmxpcXVlIjtlLkNvbWljU2Fuc01TPSJDb21pYyBTYW5zIE1TIjtlWyJDb21pY1NhbnNNUy1Cb2xkIl09IkNvbWljIFNhbnMgTVMtQm9sZCI7ZVsiQ29taWNTYW5zTVMtQm9sZEl0YWxpYyJdPSJDb21pYyBTYW5zIE1TLUJvbGRJdGFsaWMiO2VbIkNvbWljU2Fuc01TLUl0YWxpYyJdPSJDb21pYyBTYW5zIE1TLUl0YWxpYyI7ZS5JbXBhY3Q9IkhlbHZldGljYSI7ZVsiSXRjU3ltYm9sLUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIkl0Y1N5bWJvbC1Cb2xkSXRhbGljIl09IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSI7ZVsiSXRjU3ltYm9sLUJvb2siXT0iSGVsdmV0aWNhIjtlWyJJdGNTeW1ib2wtQm9va0l0YWxpYyJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSI7ZVsiSXRjU3ltYm9sLU1lZGl1bSJdPSJIZWx2ZXRpY2EiO2VbIkl0Y1N5bWJvbC1NZWRpdW1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2UuTHVjaWRhQ29uc29sZT0iQ291cmllciI7ZVsiTHVjaWRhQ29uc29sZS1Cb2xkIl09IkNvdXJpZXItQm9sZCI7ZVsiTHVjaWRhQ29uc29sZS1Cb2xkSXRhbGljIl09IkNvdXJpZXItQm9sZE9ibGlxdWUiO2VbIkx1Y2lkYUNvbnNvbGUtSXRhbGljIl09IkNvdXJpZXItT2JsaXF1ZSI7ZVsiTHVjaWRhU2Fucy1EZW1pIl09IkhlbHZldGljYS1Cb2xkIjtlWyJNUy1Hb3RoaWMiXT0iTVMgR290aGljIjtlWyJNUy1Hb3RoaWMtQm9sZCJdPSJNUyBHb3RoaWMtQm9sZCI7ZVsiTVMtR290aGljLUJvbGRJdGFsaWMiXT0iTVMgR290aGljLUJvbGRJdGFsaWMiO2VbIk1TLUdvdGhpYy1JdGFsaWMiXT0iTVMgR290aGljLUl0YWxpYyI7ZVsiTVMtTWluY2hvIl09Ik1TIE1pbmNobyI7ZVsiTVMtTWluY2hvLUJvbGQiXT0iTVMgTWluY2hvLUJvbGQiO2VbIk1TLU1pbmNoby1Cb2xkSXRhbGljIl09Ik1TIE1pbmNoby1Cb2xkSXRhbGljIjtlWyJNUy1NaW5jaG8tSXRhbGljIl09Ik1TIE1pbmNoby1JdGFsaWMiO2VbIk1TLVBHb3RoaWMiXT0iTVMgUEdvdGhpYyI7ZVsiTVMtUEdvdGhpYy1Cb2xkIl09Ik1TIFBHb3RoaWMtQm9sZCI7ZVsiTVMtUEdvdGhpYy1Cb2xkSXRhbGljIl09Ik1TIFBHb3RoaWMtQm9sZEl0YWxpYyI7ZVsiTVMtUEdvdGhpYy1JdGFsaWMiXT0iTVMgUEdvdGhpYy1JdGFsaWMiO2VbIk1TLVBNaW5jaG8iXT0iTVMgUE1pbmNobyI7ZVsiTVMtUE1pbmNoby1Cb2xkIl09Ik1TIFBNaW5jaG8tQm9sZCI7ZVsiTVMtUE1pbmNoby1Cb2xkSXRhbGljIl09Ik1TIFBNaW5jaG8tQm9sZEl0YWxpYyI7ZVsiTVMtUE1pbmNoby1JdGFsaWMiXT0iTVMgUE1pbmNoby1JdGFsaWMiO2UuTnVwdGlhbFNjcmlwdD0iVGltZXMtSXRhbGljIjtlLlNlZ29lVUlTeW1ib2w9IkhlbHZldGljYSJ9KSksWGk9Z2V0TG9va3VwVGFibGVGYWN0b3J5KChmdW5jdGlvbihlKXtlWyJBZG9iZSBKZW5zb24iXT0hMDtlWyJBZG9iZSBUZXh0Il09ITA7ZS5BbGJlcnR1cz0hMDtlLkFsZHVzPSEwO2UuQWxleGFuZHJpYT0hMDtlLkFsZ2VyaWFuPSEwO2VbIkFtZXJpY2FuIFR5cGV3cml0ZXIiXT0hMDtlLkFudGlxdWE9ITA7ZS5BcGV4PSEwO2UuQXJubz0hMDtlLkFzdGVyPSEwO2UuQXVyb3JhPSEwO2UuQmFza2VydmlsbGU9ITA7ZS5CZWxsPSEwO2UuQmVtYm89ITA7ZVsiQmVtYm8gU2Nob29sYm9vayJdPSEwO2UuQmVuZ3VpYXQ9ITA7ZVsiQmVya2VsZXkgT2xkIFN0eWxlIl09ITA7ZVsiQmVybmhhcmQgTW9kZXJuIl09ITA7ZVsiQmVydGhvbGQgQ2l0eSJdPSEwO2UuQm9kb25pPSEwO2VbIkJhdWVyIEJvZG9uaSJdPSEwO2VbIkJvb2sgQW50aXF1YSJdPSEwO2UuQm9va21hbj0hMDtlWyJCb3JkZWF1eCBSb21hbiJdPSEwO2VbIkNhbGlmb3JuaWFuIEZCIl09ITA7ZS5DYWxpc3RvPSEwO2UuQ2FsdmVydD0hMDtlLkNhcGl0YWxzPSEwO2UuQ2FtYnJpYT0hMDtlLkNhcnRpZXI9ITA7ZS5DYXNsb249ITA7ZS5DYXR1bGw9ITA7ZS5DZW50YXVyPSEwO2VbIkNlbnR1cnkgT2xkIFN0eWxlIl09ITA7ZVsiQ2VudHVyeSBTY2hvb2xib29rIl09ITA7ZS5DaGFwYXJyYWw9ITA7ZVsiQ2hhcmlzIFNJTCJdPSEwO2UuQ2hlbHRlbmhhbT0hMDtlWyJDaG9sbGEgU2xhYiJdPSEwO2UuQ2xhcmVuZG9uPSEwO2UuQ2xlYXJmYWNlPSEwO2UuQ29jaGluPSEwO2UuQ29sb25uYT0hMDtlWyJDb21wdXRlciBNb2Rlcm4iXT0hMDtlWyJDb25jcmV0ZSBSb21hbiJdPSEwO2UuQ29uc3RhbnRpYT0hMDtlWyJDb29wZXIgQmxhY2siXT0hMDtlLkNvcm9uYT0hMDtlLkVjb3R5cGU9ITA7ZS5FZ3lwdGllbm5lPSEwO2UuRWxlcGhhbnQ9ITA7ZS5FeGNlbHNpb3I9ITA7ZS5GYWlyZmllbGQ9ITA7ZVsiRkYgU2NhbGEiXT0hMDtlLkZvbGthcmQ9ITA7ZS5Gb290bGlnaHQ9ITA7ZS5GcmVlU2VyaWY9ITA7ZVsiRnJpeiBRdWFkcmF0YSJdPSEwO2UuR2FyYW1vbmQ9ITA7ZS5HZW50aXVtPSEwO2UuR2VvcmdpYT0hMDtlLkdsb3VjZXN0ZXI9ITA7ZVsiR291ZHkgT2xkIFN0eWxlIl09ITA7ZVsiR291ZHkgU2Nob29sYm9vayJdPSEwO2VbIkdvdWR5IFBybyBGb250Il09ITA7ZS5HcmFuam9uPSEwO2VbIkd1YXJkaWFuIEVneXB0aWFuIl09ITA7ZS5IZWF0aGVyPSEwO2UuSGVyY3VsZXM9ITA7ZVsiSGlnaCBUb3dlciBUZXh0Il09ITA7ZS5IaXJvc2hpZ2U9ITA7ZVsiSG9lZmxlciBUZXh0Il09ITA7ZVsiSHVtYW5hIFNlcmlmIl09ITA7ZS5JbXByaW50PSEwO2VbIklvbmljIE5vLiA1Il09ITA7ZS5KYW5zb249ITA7ZS5Kb2FubmE9ITA7ZS5Lb3Jpbm5hPSEwO2UuTGV4aWNvbj0hMDtlLkxpYmVyYXRpb25TZXJpZj0hMDtlWyJMaWJlcmF0aW9uIFNlcmlmIl09ITA7ZVsiTGludXggTGliZXJ0aW5lIl09ITA7ZS5MaXRlcmF0dXJuYXlhPSEwO2UuTHVjaWRhPSEwO2VbIkx1Y2lkYSBCcmlnaHQiXT0hMDtlLk1lbGlvcj0hMDtlLk1lbXBoaXM9ITA7ZS5NaWxsZXI9ITA7ZS5NaW5pb249ITA7ZS5Nb2Rlcm49ITA7ZVsiTW9uYSBMaXNhIl09ITA7ZVsiTXJzIEVhdmVzIl09ITA7ZVsiTVMgU2VyaWYiXT0hMDtlWyJNdXNlbyBTbGFiIl09ITA7ZVsiTmV3IFlvcmsiXT0hMDtlWyJOaW1idXMgUm9tYW4iXT0hMDtlWyJOUFMgUmF3bGluc29uIFJvYWR3YXkiXT0hMDtlLk51cHRpYWxTY3JpcHQ9ITA7ZS5QYWxhdGlubz0hMDtlLlBlcnBldHVhPSEwO2UuUGxhbnRpbj0hMDtlWyJQbGFudGluIFNjaG9vbGJvb2siXT0hMDtlLlBsYXliaWxsPSEwO2VbIlBvb3IgUmljaGFyZCJdPSEwO2VbIlJhd2xpbnNvbiBSb2Fkd2F5Il09ITA7ZS5SZW5hdWx0PSEwO2UuUmVxdWllbT0hMDtlLlJvY2t3ZWxsPSEwO2UuUm9tYW49ITA7ZVsiUm90aXMgU2VyaWYiXT0hMDtlLlNhYm9uPSEwO2UuU2NhbGE9ITA7ZS5TZWFndWxsPSEwO2UuU2lzdGluYT0hMDtlLlNvdXZlbmlyPSEwO2UuU1RJWD0hMDtlWyJTdG9uZSBJbmZvcm1hbCJdPSEwO2VbIlN0b25lIFNlcmlmIl09ITA7ZS5TeWxmYWVuPSEwO2UuVGltZXM9ITA7ZS5UcmFqYW49ITA7ZVsiVHJpbml0w6kiXT0hMDtlWyJUcnVtcCBNZWRpYWV2YWwiXT0hMDtlLlV0b3BpYT0hMDtlWyJWYWxlIFR5cGUiXT0hMDtlWyJCaXRzdHJlYW0gVmVyYSJdPSEwO2VbIlZlcmEgU2VyaWYiXT0hMDtlLlZlcnNhaWxsZXM9ITA7ZS5XYW50ZWQ9ITA7ZS5XZWlzcz0hMDtlWyJXaWRlIExhdGluIl09ITA7ZS5XaW5kc29yPSEwO2UuWElUUz0hMH0pKSxaaT1nZXRMb29rdXBUYWJsZUZhY3RvcnkoKGZ1bmN0aW9uKGUpe2UuRGluZ2JhdHM9ITA7ZS5TeW1ib2w9ITA7ZS5aYXBmRGluZ2JhdHM9ITA7ZS5XaW5nZGluZ3M9ITA7ZVsiV2luZ2RpbmdzLUJvbGQiXT0hMDtlWyJXaW5nZGluZ3MtUmVndWxhciJdPSEwfSkpLFZpPWdldExvb2t1cFRhYmxlRmFjdG9yeSgoZnVuY3Rpb24oZSl7ZVsyXT0xMDtlWzNdPTMyO2VbNF09MzM7ZVs1XT0zNDtlWzZdPTM1O2VbN109MzY7ZVs4XT0zNztlWzldPTM4O2VbMTBdPTM5O2VbMTFdPTQwO2VbMTJdPTQxO2VbMTNdPTQyO2VbMTRdPTQzO2VbMTVdPTQ0O2VbMTZdPTQ1O2VbMTddPTQ2O2VbMThdPTQ3O2VbMTldPTQ4O2VbMjBdPTQ5O2VbMjFdPTUwO2VbMjJdPTUxO2VbMjNdPTUyO2VbMjRdPTUzO2VbMjVdPTU0O2VbMjZdPTU1O2VbMjddPTU2O2VbMjhdPTU3O2VbMjldPTU4O2VbMzBdPTg5NDtlWzMxXT02MDtlWzMyXT02MTtlWzMzXT02MjtlWzM0XT02MztlWzM1XT02NDtlWzM2XT02NTtlWzM3XT02NjtlWzM4XT02NztlWzM5XT02ODtlWzQwXT02OTtlWzQxXT03MDtlWzQyXT03MTtlWzQzXT03MjtlWzQ0XT03MztlWzQ1XT03NDtlWzQ2XT03NTtlWzQ3XT03NjtlWzQ4XT03NztlWzQ5XT03ODtlWzUwXT03OTtlWzUxXT04MDtlWzUyXT04MTtlWzUzXT04MjtlWzU0XT04MztlWzU1XT04NDtlWzU2XT04NTtlWzU3XT04NjtlWzU4XT04NztlWzU5XT04ODtlWzYwXT04OTtlWzYxXT05MDtlWzYyXT05MTtlWzYzXT05MjtlWzY0XT05MztlWzY1XT05NDtlWzY2XT05NTtlWzY3XT05NjtlWzY4XT05NztlWzY5XT05ODtlWzcwXT05OTtlWzcxXT0xMDA7ZVs3Ml09MTAxO2VbNzNdPTEwMjtlWzc0XT0xMDM7ZVs3NV09MTA0O2VbNzZdPTEwNTtlWzc3XT0xMDY7ZVs3OF09MTA3O2VbNzldPTEwODtlWzgwXT0xMDk7ZVs4MV09MTEwO2VbODJdPTExMTtlWzgzXT0xMTI7ZVs4NF09MTEzO2VbODVdPTExNDtlWzg2XT0xMTU7ZVs4N109MTE2O2VbODhdPTExNztlWzg5XT0xMTg7ZVs5MF09MTE5O2VbOTFdPTEyMDtlWzkyXT0xMjE7ZVs5M109MTIyO2VbOTRdPTEyMztlWzk1XT0xMjQ7ZVs5Nl09MTI1O2VbOTddPTEyNjtlWzk4XT0xOTY7ZVs5OV09MTk3O2VbMTAwXT0xOTk7ZVsxMDFdPTIwMTtlWzEwMl09MjA5O2VbMTAzXT0yMTQ7ZVsxMDRdPTIyMDtlWzEwNV09MjI1O2VbMTA2XT0yMjQ7ZVsxMDddPTIyNjtlWzEwOF09MjI4O2VbMTA5XT0yMjc7ZVsxMTBdPTIyOTtlWzExMV09MjMxO2VbMTEyXT0yMzM7ZVsxMTNdPTIzMjtlWzExNF09MjM0O2VbMTE1XT0yMzU7ZVsxMTZdPTIzNztlWzExN109MjM2O2VbMTE4XT0yMzg7ZVsxMTldPTIzOTtlWzEyMF09MjQxO2VbMTIxXT0yNDM7ZVsxMjJdPTI0MjtlWzEyM109MjQ0O2VbMTI0XT0yNDY7ZVsxMjVdPTI0NTtlWzEyNl09MjUwO2VbMTI3XT0yNDk7ZVsxMjhdPTI1MTtlWzEyOV09MjUyO2VbMTMwXT04MjI0O2VbMTMxXT0xNzY7ZVsxMzJdPTE2MjtlWzEzM109MTYzO2VbMTM0XT0xNjc7ZVsxMzVdPTgyMjY7ZVsxMzZdPTE4MjtlWzEzN109MjIzO2VbMTM4XT0xNzQ7ZVsxMzldPTE2OTtlWzE0MF09ODQ4MjtlWzE0MV09MTgwO2VbMTQyXT0xNjg7ZVsxNDNdPTg4MDA7ZVsxNDRdPTE5ODtlWzE0NV09MjE2O2VbMTQ2XT04NzM0O2VbMTQ3XT0xNzc7ZVsxNDhdPTg4MDQ7ZVsxNDldPTg4MDU7ZVsxNTBdPTE2NTtlWzE1MV09MTgxO2VbMTUyXT04NzA2O2VbMTUzXT04NzIxO2VbMTU0XT04NzE5O2VbMTU2XT04NzQ3O2VbMTU3XT0xNzA7ZVsxNThdPTE4NjtlWzE1OV09ODQ4NjtlWzE2MF09MjMwO2VbMTYxXT0yNDg7ZVsxNjJdPTE5MTtlWzE2M109MTYxO2VbMTY0XT0xNzI7ZVsxNjVdPTg3MzA7ZVsxNjZdPTQwMjtlWzE2N109ODc3NjtlWzE2OF09ODcxMDtlWzE2OV09MTcxO2VbMTcwXT0xODc7ZVsxNzFdPTgyMzA7ZVsxNzldPTgyMjA7ZVsxODBdPTgyMjE7ZVsxODFdPTgyMTY7ZVsxODJdPTgyMTc7ZVsyMDBdPTE5MztlWzIwM109MjA1O2VbMjA3XT0yMTE7ZVsyMTBdPTIxODtlWzIyM109NzExO2VbMjI0XT0zMjE7ZVsyMjVdPTMyMjtlWzIyNl09MzUyO2VbMjI3XT0zNTM7ZVsyMjhdPTM4MTtlWzIyOV09MzgyO2VbMjMzXT0yMjE7ZVsyMzRdPTI1MztlWzI1Ml09MjYzO2VbMjUzXT0yNjg7ZVsyNTRdPTI2OTtlWzI1OF09MjU4O2VbMjYwXT0yNjA7ZVsyNjFdPTI2MTtlWzI2NV09MjgwO2VbMjY2XT0yODE7ZVsyNjddPTI4MjtlWzI2OF09MjgzO2VbMjY5XT0zMTM7ZVsyNzVdPTMyMztlWzI3Nl09MzI0O2VbMjc4XT0zMjg7ZVsyODNdPTM0NDtlWzI4NF09MzQ1O2VbMjg1XT0zNDY7ZVsyODZdPTM0NztlWzI5Ml09MzY3O2VbMjk1XT0zNzc7ZVsyOTZdPTM3ODtlWzI5OF09MzgwO2VbMzA1XT05NjM7ZVszMDZdPTk2NDtlWzMwN109OTY2O2VbMzA4XT04MjE1O2VbMzA5XT04MjUyO2VbMzEwXT04MzE5O2VbMzExXT04MzU5O2VbMzEyXT04NTkyO2VbMzEzXT04NTkzO2VbMzM3XT05NTUyO2VbNDkzXT0xMDM5O2VbNDk0XT0xMDQwO2VbNjcyXT0xNDg4O2VbNjczXT0xNDg5O2VbNjc0XT0xNDkwO2VbNjc1XT0xNDkxO2VbNjc2XT0xNDkyO2VbNjc3XT0xNDkzO2VbNjc4XT0xNDk0O2VbNjc5XT0xNDk1O2VbNjgwXT0xNDk2O2VbNjgxXT0xNDk3O2VbNjgyXT0xNDk4O2VbNjgzXT0xNDk5O2VbNjg0XT0xNTAwO2VbNjg1XT0xNTAxO2VbNjg2XT0xNTAyO2VbNjg3XT0xNTAzO2VbNjg4XT0xNTA0O2VbNjg5XT0xNTA1O2VbNjkwXT0xNTA2O2VbNjkxXT0xNTA3O2VbNjkyXT0xNTA4O2VbNjkzXT0xNTA5O2VbNjk0XT0xNTEwO2VbNjk1XT0xNTExO2VbNjk2XT0xNTEyO2VbNjk3XT0xNTEzO2VbNjk4XT0xNTE0O2VbNzA1XT0xNTI0O2VbNzA2XT04MzYyO2VbNzEwXT02NDI4ODtlWzcxMV09NjQyOTg7ZVs3NTldPTE2MTc7ZVs3NjFdPTE3NzY7ZVs3NjNdPTE3Nzg7ZVs3NzVdPTE2NTI7ZVs3NzddPTE3NjQ7ZVs3NzhdPTE3ODA7ZVs3NzldPTE3ODE7ZVs3ODBdPTE3ODI7ZVs3ODJdPTc3MTtlWzc4M109NjQ3MjY7ZVs3ODZdPTgzNjM7ZVs3ODhdPTg1MzI7ZVs3OTBdPTc2ODtlWzc5MV09NzY5O2VbNzkyXT03Njg7ZVs3OTVdPTgwMztlWzc5N109NjQzMzY7ZVs3OThdPTY0MzM3O2VbNzk5XT02NDM0MjtlWzgwMF09NjQzNDM7ZVs4MDFdPTY0MzQ0O2VbODAyXT02NDM0NTtlWzgwM109NjQzNjI7ZVs4MDRdPTY0MzYzO2VbODA1XT02NDM2NDtlWzI0MjRdPTc4MjE7ZVsyNDI1XT03ODIyO2VbMjQyNl09NzgyMztlWzI0MjddPTc4MjQ7ZVsyNDI4XT03ODI1O2VbMjQyOV09NzgyNjtlWzI0MzBdPTc4Mjc7ZVsyNDMzXT03NjgyO2VbMjY3OF09ODA0NTtlWzI2NzldPTgwNDY7ZVsyODMwXT0xNTUyO2VbMjgzOF09Njg2O2VbMjg0MF09NzUxO2VbMjg0Ml09NzUzO2VbMjg0M109NzU0O2VbMjg0NF09NzU1O2VbMjg0Nl09NzU3O2VbMjg1Nl09NzY3O2VbMjg1N109ODQ4O2VbMjg1OF09ODQ5O2VbMjg2Ml09ODUzO2VbMjg2M109ODU0O2VbMjg2NF09ODU1O2VbMjg2NV09ODYxO2VbMjg2Nl09ODYyO2VbMjkwNl09NzQ2MDtlWzI5MDhdPTc0NjI7ZVsyOTA5XT03NDYzO2VbMjkxMF09NzQ2NDtlWzI5MTJdPTc0NjY7ZVsyOTEzXT03NDY3O2VbMjkxNF09NzQ2ODtlWzI5MTZdPTc0NzA7ZVsyOTE3XT03NDcxO2VbMjkxOF09NzQ3MjtlWzI5MjBdPTc0NzQ7ZVsyOTIxXT03NDc1O2VbMjkyMl09NzQ3NjtlWzI5MjRdPTc0Nzg7ZVsyOTI1XT03NDc5O2VbMjkyNl09NzQ4MDtlWzI5MjhdPTc0ODI7ZVsyOTI5XT03NDgzO2VbMjkzMF09NzQ4NDtlWzI5MzJdPTc0ODY7ZVsyOTMzXT03NDg3O2VbMjkzNF09NzQ4ODtlWzI5MzZdPTc0OTA7ZVsyOTM3XT03NDkxO2VbMjkzOF09NzQ5MjtlWzI5NDBdPTc0OTQ7ZVsyOTQxXT03NDk1O2VbMjk0Ml09NzQ5NjtlWzI5NDRdPTc0OTg7ZVsyOTQ2XT03NTAwO2VbMjk0OF09NzUwMjtlWzI5NTBdPTc1MDQ7ZVsyOTUxXT03NTA1O2VbMjk1Ml09NzUwNjtlWzI5NTRdPTc1MDg7ZVsyOTU1XT03NTA5O2VbMjk1Nl09NzUxMDtlWzI5NThdPTc1MTI7ZVsyOTU5XT03NTEzO2VbMjk2MF09NzUxNDtlWzI5NjJdPTc1MTY7ZVsyOTYzXT03NTE3O2VbMjk2NF09NzUxODtlWzI5NjZdPTc1MjA7ZVsyOTY3XT03NTIxO2VbMjk2OF09NzUyMjtlWzI5NzBdPTc1MjQ7ZVsyOTcxXT03NTI1O2VbMjk3Ml09NzUyNjtlWzI5NzRdPTc1Mjg7ZVsyOTc1XT03NTI5O2VbMjk3Nl09NzUzMDtlWzI5NzhdPTE1Mzc7ZVsyOTc5XT0xNTM4O2VbMjk4MF09MTUzOTtlWzI5ODJdPTE1NDk7ZVsyOTgzXT0xNTUxO2VbMjk4NF09MTU1MjtlWzI5ODZdPTE1NTQ7ZVsyOTg3XT0xNTU1O2VbMjk4OF09MTU1NjtlWzI5OTBdPTE2MjM7ZVsyOTkxXT0xNjI0O2VbMjk5NV09MTc3NTtlWzI5OTldPTE3OTE7ZVszMDAyXT02NDI5MDtlWzMwMDNdPTY0MjkxO2VbMzAwNF09NjQyOTI7ZVszMDA2XT02NDI5NDtlWzMwMDddPTY0Mjk1O2VbMzAwOF09NjQyOTY7ZVszMDExXT0xOTAwO2VbMzAxNF09ODIyMztlWzMwMTVdPTgyNDQ7ZVszMDE3XT03NTMyO2VbMzAxOF09NzUzMztlWzMwMTldPTc1MzQ7ZVszMDc1XT03NTkwO2VbMzA3Nl09NzU5MTtlWzMwNzldPTc1OTQ7ZVszMDgwXT03NTk1O2VbMzA4M109NzU5ODtlWzMwODRdPTc1OTk7ZVszMDg3XT03NjAyO2VbMzA4OF09NzYwMztlWzMwOTFdPTc2MDY7ZVszMDkyXT03NjA3O2VbMzA5NV09NzYxMDtlWzMwOTZdPTc2MTE7ZVszMDk5XT03NjE0O2VbMzEwMF09NzYxNTtlWzMxMDNdPTc2MTg7ZVszMTA0XT03NjE5O2VbMzEwN109ODMzNztlWzMxMDhdPTgzMzg7ZVszMTE2XT0xODg0O2VbMzExOV09MTg4NTtlWzMxMjBdPTE4ODU7ZVszMTIzXT0xODg2O2VbMzEyNF09MTg4NjtlWzMxMjddPTE4ODc7ZVszMTI4XT0xODg3O2VbMzEzMV09MTg4ODtlWzMxMzJdPTE4ODg7ZVszMTM1XT0xODg5O2VbMzEzNl09MTg4OTtlWzMxMzldPTE4OTA7ZVszMTQwXT0xODkwO2VbMzE0M109MTg5MTtlWzMxNDRdPTE4OTE7ZVszMTQ3XT0xODkyO2VbMzE0OF09MTg5MjtlWzMxNTNdPTU4MDtlWzMxNTRdPTU4MTtlWzMxNTddPTU4NDtlWzMxNThdPTU4NTtlWzMxNjFdPTU4ODtlWzMxNjJdPTU4OTtlWzMxNjVdPTg5MTtlWzMxNjZdPTg5MjtlWzMxNjldPTEyNzQ7ZVszMTcwXT0xMjc1O2VbMzE3M109MTI3ODtlWzMxNzRdPTEyNzk7ZVszMTgxXT03NjIyO2VbMzE4Ml09NzYyMztlWzMyODJdPTExNzk5O2VbMzMxNl09NTc4O2VbMzM3OV09NDI3ODU7ZVszMzkzXT0xMTU5O2VbMzQxNl09ODM3N30pKSx6aT1nZXRMb29rdXBUYWJsZUZhY3RvcnkoKGZ1bmN0aW9uKGUpe2VbMjI3XT0zMjI7ZVsyNjRdPTI2MTtlWzI5MV09MzQ2fSkpLF9pPWdldExvb2t1cFRhYmxlRmFjdG9yeSgoZnVuY3Rpb24oZSl7ZVsxXT0zMjtlWzRdPTY1O2VbNV09MTkyO2VbNl09MTkzO2VbOV09MTk2O2VbMTddPTY2O2VbMThdPTY3O2VbMjFdPTI2ODtlWzI0XT02ODtlWzI4XT02OTtlWzI5XT0yMDA7ZVszMF09MjAxO2VbMzJdPTI4MjtlWzM4XT03MDtlWzM5XT03MTtlWzQ0XT03MjtlWzQ3XT03MztlWzQ4XT0yMDQ7ZVs0OV09MjA1O2VbNThdPTc0O2VbNjBdPTc1O2VbNjJdPTc2O2VbNjhdPTc3O2VbNjldPTc4O2VbNzVdPTc5O2VbNzZdPTIxMDtlWzgwXT0yMTQ7ZVs4N109ODA7ZVs4OV09ODE7ZVs5MF09ODI7ZVs5Ml09MzQ0O2VbOTRdPTgzO2VbOTddPTM1MjtlWzEwMF09ODQ7ZVsxMDRdPTg1O2VbMTA5XT0yMjA7ZVsxMTVdPTg2O2VbMTE2XT04NztlWzEyMV09ODg7ZVsxMjJdPTg5O2VbMTI0XT0yMjE7ZVsxMjddPTkwO2VbMTI5XT0zODE7ZVsyNThdPTk3O2VbMjU5XT0yMjQ7ZVsyNjBdPTIyNTtlWzI2M109MjI4O2VbMjY4XT0yNjE7ZVsyNzFdPTk4O2VbMjcyXT05OTtlWzI3M109MjYzO2VbMjc1XT0yNjk7ZVsyODJdPTEwMDtlWzI4Nl09MTAxO2VbMjg3XT0yMzI7ZVsyODhdPTIzMztlWzI5MF09MjgzO2VbMjk1XT0yODE7ZVsyOTZdPTEwMjtlWzMzNl09MTAzO2VbMzQ2XT0xMDQ7ZVszNDldPTEwNTtlWzM1MF09MjM2O2VbMzUxXT0yMzc7ZVszNjFdPTEwNjtlWzM2NF09MTA3O2VbMzY3XT0xMDg7ZVszNzFdPTMyMjtlWzM3M109MTA5O2VbMzc0XT0xMTA7ZVszODFdPTExMTtlWzM4Ml09MjQyO2VbMzgzXT0yNDM7ZVszODZdPTI0NjtlWzM5M109MTEyO2VbMzk1XT0xMTM7ZVszOTZdPTExNDtlWzM5OF09MzQ1O2VbNDAwXT0xMTU7ZVs0MDFdPTM0NztlWzQwM109MzUzO2VbNDEwXT0xMTY7ZVs0MzddPTExNztlWzQ0Ml09MjUyO2VbNDQ4XT0xMTg7ZVs0NDldPTExOTtlWzQ1NF09MTIwO2VbNDU1XT0xMjE7ZVs0NTddPTI1MztlWzQ2MF09MTIyO2VbNDYyXT0zODI7ZVs0NjNdPTM4MDtlWzg1M109NDQ7ZVs4NTVdPTU4O2VbODU2XT00NjtlWzg3Nl09NDc7ZVs4NzhdPTQ1O2VbODgyXT00NTtlWzg5NF09NDA7ZVs4OTVdPTQxO2VbODk2XT05MTtlWzg5N109OTM7ZVs5MjNdPTY0O2VbMTAwNF09NDg7ZVsxMDA1XT00OTtlWzEwMDZdPTUwO2VbMTAwN109NTE7ZVsxMDA4XT01MjtlWzEwMDldPTUzO2VbMTAxMF09NTQ7ZVsxMDExXT01NTtlWzEwMTJdPTU2O2VbMTAxM109NTc7ZVsxMDgxXT0zNztlWzEwODVdPTQzO2VbMTA4Nl09NDV9KSk7ZnVuY3Rpb24gZ2V0U3RhbmRhcmRGb250TmFtZShlKXtjb25zdCB0PW5vcm1hbGl6ZUZvbnROYW1lKGUpO3JldHVybiBQaSgpW3RdfWZ1bmN0aW9uIGlzS25vd25Gb250TmFtZShlKXtjb25zdCB0PW5vcm1hbGl6ZUZvbnROYW1lKGUpO3JldHVybiEhKFBpKClbdF18fGppKClbdF18fFhpKClbdF18fFppKClbdF0pfWNsYXNzIFRvVW5pY29kZU1hcHtjb25zdHJ1Y3RvcihlPVtdKXt0aGlzLl9tYXA9ZX1nZXQgbGVuZ3RoKCl7cmV0dXJuIHRoaXMuX21hcC5sZW5ndGh9Zm9yRWFjaChlKXtmb3IoY29uc3QgdCBpbiB0aGlzLl9tYXApZSh0LHRoaXMuX21hcFt0XS5jaGFyQ29kZUF0KDApKX1oYXMoZSl7cmV0dXJuIHZvaWQgMCE9PXRoaXMuX21hcFtlXX1nZXQoZSl7cmV0dXJuIHRoaXMuX21hcFtlXX1jaGFyQ29kZU9mKGUpe2NvbnN0IHQ9dGhpcy5fbWFwO2lmKHQubGVuZ3RoPD02NTUzNilyZXR1cm4gdC5pbmRleE9mKGUpO2Zvcihjb25zdCBpIGluIHQpaWYodFtpXT09PWUpcmV0dXJuIDB8aTtyZXR1cm4tMX1hbWVuZChlKXtmb3IoY29uc3QgdCBpbiBlKXRoaXMuX21hcFt0XT1lW3RdfX1jbGFzcyBJZGVudGl0eVRvVW5pY29kZU1hcHtjb25zdHJ1Y3RvcihlLHQpe3RoaXMuZmlyc3RDaGFyPWU7dGhpcy5sYXN0Q2hhcj10fWdldCBsZW5ndGgoKXtyZXR1cm4gdGhpcy5sYXN0Q2hhcisxLXRoaXMuZmlyc3RDaGFyfWZvckVhY2goZSl7Zm9yKGxldCB0PXRoaXMuZmlyc3RDaGFyLGk9dGhpcy5sYXN0Q2hhcjt0PD1pO3QrKyllKHQsdCl9aGFzKGUpe3JldHVybiB0aGlzLmZpcnN0Q2hhcjw9ZSYmZTw9dGhpcy5sYXN0Q2hhcn1nZXQoZSl7aWYodGhpcy5maXJzdENoYXI8PWUmJmU8PXRoaXMubGFzdENoYXIpcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoZSl9Y2hhckNvZGVPZihlKXtyZXR1cm4gTnVtYmVyLmlzSW50ZWdlcihlKSYmZT49dGhpcy5maXJzdENoYXImJmU8PXRoaXMubGFzdENoYXI/ZTotMX1hbWVuZChlKXt1bnJlYWNoYWJsZSgiU2hvdWxkIG5vdCBjYWxsIGFtZW5kKCkiKX19Y2xhc3MgQ0ZGRm9udHtjb25zdHJ1Y3RvcihlLHQpe3RoaXMucHJvcGVydGllcz10O2NvbnN0IGk9bmV3IENGRlBhcnNlcihlLHQsWWkpO3RoaXMuY2ZmPWkucGFyc2UoKTt0aGlzLmNmZi5kdXBsaWNhdGVGaXJzdEdseXBoKCk7Y29uc3QgYT1uZXcgQ0ZGQ29tcGlsZXIodGhpcy5jZmYpO3RoaXMuc2VhY3M9dGhpcy5jZmYuc2VhY3M7dHJ5e3RoaXMuZGF0YT1hLmNvbXBpbGUoKX1jYXRjaHt3YXJuKCJGYWlsZWQgdG8gY29tcGlsZSBmb250ICIrdC5sb2FkZWROYW1lKTt0aGlzLmRhdGE9ZX10aGlzLl9jcmVhdGVCdWlsdEluRW5jb2RpbmcoKX1nZXQgbnVtR2x5cGhzKCl7cmV0dXJuIHRoaXMuY2ZmLmNoYXJTdHJpbmdzLmNvdW50fWdldENoYXJzZXQoKXtyZXR1cm4gdGhpcy5jZmYuY2hhcnNldC5jaGFyc2V0fWdldEdseXBoTWFwcGluZygpe2NvbnN0IGU9dGhpcy5jZmYsdD10aGlzLnByb3BlcnRpZXMse2NpZFRvR2lkTWFwOmksY01hcDphfT10LHM9ZS5jaGFyc2V0LmNoYXJzZXQ7bGV0IHIsbjtpZih0LmNvbXBvc2l0ZSl7bGV0IHQsbztpZihpPy5sZW5ndGg+MCl7dD1PYmplY3QuY3JlYXRlKG51bGwpO2ZvcihsZXQgZT0wLGE9aS5sZW5ndGg7ZTxhO2UrKyl7Y29uc3QgYT1pW2VdO3ZvaWQgMCE9PWEmJih0W2FdPWUpfX1yPU9iamVjdC5jcmVhdGUobnVsbCk7aWYoZS5pc0NJREZvbnQpZm9yKG49MDtuPHMubGVuZ3RoO24rKyl7Y29uc3QgZT1zW25dO289YS5jaGFyQ29kZU9mKGUpO3ZvaWQgMCE9PXQ/LltvXSYmKG89dFtvXSk7cltvXT1ufWVsc2UgZm9yKG49MDtuPGUuY2hhclN0cmluZ3MuY291bnQ7bisrKXtvPWEuY2hhckNvZGVPZihuKTtyW29dPW59cmV0dXJuIHJ9bGV0IG89ZS5lbmNvZGluZz9lLmVuY29kaW5nLmVuY29kaW5nOm51bGw7dC5pc0ludGVybmFsRm9udCYmKG89dC5kZWZhdWx0RW5jb2RpbmcpO3I9dHlwZTFGb250R2x5cGhNYXBwaW5nKHQsbyxzKTtyZXR1cm4gcn1oYXNHbHlwaElkKGUpe3JldHVybiB0aGlzLmNmZi5oYXNHbHlwaElkKGUpfV9jcmVhdGVCdWlsdEluRW5jb2RpbmcoKXtjb25zdHtjaGFyc2V0OmUsZW5jb2Rpbmc6dH09dGhpcy5jZmY7aWYoIWV8fCF0KXJldHVybjtjb25zdCBpPWUuY2hhcnNldCxhPXQuZW5jb2Rpbmcscz1bXTtmb3IoY29uc3QgZSBpbiBhKXtjb25zdCB0PWFbZV07aWYodD49MCl7Y29uc3QgYT1pW3RdO2EmJihzW2VdPWEpfX1zLmxlbmd0aD4wJiYodGhpcy5wcm9wZXJ0aWVzLmJ1aWx0SW5FbmNvZGluZz1zKX19ZnVuY3Rpb24gZ2V0VWludDMyKGUsdCl7cmV0dXJuKGVbdF08PDI0fGVbdCsxXTw8MTZ8ZVt0KzJdPDw4fGVbdCszXSk+Pj4wfWZ1bmN0aW9uIGdldFVpbnQxNihlLHQpe3JldHVybiBlW3RdPDw4fGVbdCsxXX1mdW5jdGlvbiBnZXRJbnQxNihlLHQpe3JldHVybihlW3RdPDwyNHxlW3QrMV08PDE2KT4+MTZ9ZnVuY3Rpb24gZ2V0SW50OChlLHQpe3JldHVybiBlW3RdPDwyND4+MjR9ZnVuY3Rpb24gZ2V0RmxvYXQyMTQoZSx0KXtyZXR1cm4gZ2V0SW50MTYoZSx0KS8xNjM4NH1mdW5jdGlvbiBnZXRTdWJyb3V0aW5lQmlhcyhlKXtjb25zdCB0PWUubGVuZ3RoO2xldCBpPTMyNzY4O3Q8MTI0MD9pPTEwNzp0PDMzOTAwJiYoaT0xMTMxKTtyZXR1cm4gaX1mdW5jdGlvbiBwYXJzZUNtYXAoZSx0LGkpe2NvbnN0IGE9MT09PWdldFVpbnQxNihlLHQrMik/Z2V0VWludDMyKGUsdCs4KTpnZXRVaW50MzIoZSx0KzE2KSxzPWdldFVpbnQxNihlLHQrYSk7bGV0IHIsbixvO2lmKDQ9PT1zKXtnZXRVaW50MTYoZSx0K2ErMik7Y29uc3QgaT1nZXRVaW50MTYoZSx0K2ErNik+PjE7bj10K2ErMTQ7cj1bXTtmb3Iobz0wO288aTtvKyssbis9MilyW29dPXtlbmQ6Z2V0VWludDE2KGUsbil9O24rPTI7Zm9yKG89MDtvPGk7bysrLG4rPTIpcltvXS5zdGFydD1nZXRVaW50MTYoZSxuKTtmb3Iobz0wO288aTtvKyssbis9MilyW29dLmlkRGVsdGE9Z2V0VWludDE2KGUsbik7Zm9yKG89MDtvPGk7bysrLG4rPTIpe2xldCB0PWdldFVpbnQxNihlLG4pO2lmKDAhPT10KXtyW29dLmlkcz1bXTtmb3IobGV0IGk9MCxhPXJbb10uZW5kLXJbb10uc3RhcnQrMTtpPGE7aSsrKXtyW29dLmlkc1tpXT1nZXRVaW50MTYoZSxuK3QpO3QrPTJ9fX1yZXR1cm4gcn1pZigxMj09PXMpe2NvbnN0IGk9Z2V0VWludDMyKGUsdCthKzEyKTtuPXQrYSsxNjtyPVtdO2ZvcihvPTA7bzxpO28rKyl7dD1nZXRVaW50MzIoZSxuKTtyLnB1c2goe3N0YXJ0OnQsZW5kOmdldFVpbnQzMihlLG4rNCksaWREZWx0YTpnZXRVaW50MzIoZSxuKzgpLXR9KTtuKz0xMn1yZXR1cm4gcn10aHJvdyBuZXcgRm9ybWF0RXJyb3IoYHVuc3VwcG9ydGVkIGNtYXA6ICR7c31gKX1mdW5jdGlvbiBwYXJzZUNmZihlLHQsaSxhKXtjb25zdCBzPW5ldyBDRkZQYXJzZXIobmV3IFN0cmVhbShlLHQsaS10KSx7fSxhKS5wYXJzZSgpO3JldHVybntnbHlwaHM6cy5jaGFyU3RyaW5ncy5vYmplY3RzLHN1YnJzOnMudG9wRGljdC5wcml2YXRlRGljdD8uc3VicnNJbmRleD8ub2JqZWN0cyxnc3VicnM6cy5nbG9iYWxTdWJySW5kZXg/Lm9iamVjdHMsaXNDRkZDSURGb250OnMuaXNDSURGb250LGZkU2VsZWN0OnMuZmRTZWxlY3QsZmRBcnJheTpzLmZkQXJyYXl9fWZ1bmN0aW9uIGxvb2t1cENtYXAoZSx0KXtjb25zdCBpPXQuY29kZVBvaW50QXQoMCk7bGV0IGE9MCxzPTAscj1lLmxlbmd0aC0xO2Zvcig7czxyOyl7Y29uc3QgdD1zK3IrMT4+MTtpPGVbdF0uc3RhcnQ/cj10LTE6cz10fWVbc10uc3RhcnQ8PWkmJmk8PWVbc10uZW5kJiYoYT1lW3NdLmlkRGVsdGErKGVbc10uaWRzP2Vbc10uaWRzW2ktZVtzXS5zdGFydF06aSkmNjU1MzUpO3JldHVybntjaGFyQ29kZTppLGdseXBoSWQ6YX19ZnVuY3Rpb24gY29tcGlsZUdseWYoZSx0LGkpe2Z1bmN0aW9uIG1vdmVUbyhlLGkpe3QuYWRkKEN0LFtlLGldKX1mdW5jdGlvbiBsaW5lVG8oZSxpKXt0LmFkZChodCxbZSxpXSl9ZnVuY3Rpb24gcXVhZHJhdGljQ3VydmVUbyhlLGksYSxzKXt0LmFkZChsdCxbZSxpLGEsc10pfWxldCBhPTA7Y29uc3Qgcz1nZXRJbnQxNihlLGEpO2xldCByLG49MCxvPTA7YSs9MTA7aWYoczwwKWRve3I9Z2V0VWludDE2KGUsYSk7Y29uc3Qgcz1nZXRVaW50MTYoZSxhKzIpO2ErPTQ7bGV0IGcsYztpZigxJnIpe2lmKDImcil7Zz1nZXRJbnQxNihlLGEpO2M9Z2V0SW50MTYoZSxhKzIpfWVsc2V7Zz1nZXRVaW50MTYoZSxhKTtjPWdldFVpbnQxNihlLGErMil9YSs9NH1lbHNlIGlmKDImcil7Zz1nZXRJbnQ4KGUsYSsrKTtjPWdldEludDgoZSxhKyspfWVsc2V7Zz1lW2ErK107Yz1lW2ErK119aWYoMiZyKXtuPWc7bz1jfWVsc2V7bj0wO289MH1sZXQgQz0xLGg9MSxsPTAsUT0wO2lmKDgmcil7Qz1oPWdldEZsb2F0MjE0KGUsYSk7YSs9Mn1lbHNlIGlmKDY0JnIpe0M9Z2V0RmxvYXQyMTQoZSxhKTtoPWdldEZsb2F0MjE0KGUsYSsyKTthKz00fWVsc2UgaWYoMTI4JnIpe0M9Z2V0RmxvYXQyMTQoZSxhKTtsPWdldEZsb2F0MjE0KGUsYSsyKTtRPWdldEZsb2F0MjE0KGUsYSs0KTtoPWdldEZsb2F0MjE0KGUsYSs2KTthKz04fWNvbnN0IEU9aS5nbHlwaHNbc107aWYoRSl7dC5hZGQoUXQpO3QuYWRkKHV0LFtDLGwsUSxoLG4sb10pO2NvbXBpbGVHbHlmKEUsdCxpKTt0LmFkZChCdCl9fXdoaWxlKDMyJnIpO2Vsc2V7Y29uc3QgdD1bXTtsZXQgaSxnO2ZvcihpPTA7aTxzO2krKyl7dC5wdXNoKGdldFVpbnQxNihlLGEpKTthKz0yfWErPTIrZ2V0VWludDE2KGUsYSk7Y29uc3QgYz10LmF0KC0xKSsxLEM9W107Zm9yKDtDLmxlbmd0aDxjOyl7cj1lW2ErK107bGV0IHQ9MTs4JnImJih0Kz1lW2ErK10pO2Zvcig7dC0tID4wOylDLnB1c2goe2ZsYWdzOnJ9KX1mb3IoaT0wO2k8YztpKyspe3N3aXRjaCgxOCZDW2ldLmZsYWdzKXtjYXNlIDA6bis9Z2V0SW50MTYoZSxhKTthKz0yO2JyZWFrO2Nhc2UgMjpuLT1lW2ErK107YnJlYWs7Y2FzZSAxODpuKz1lW2ErK119Q1tpXS54PW59Zm9yKGk9MDtpPGM7aSsrKXtzd2l0Y2goMzYmQ1tpXS5mbGFncyl7Y2FzZSAwOm8rPWdldEludDE2KGUsYSk7YSs9MjticmVhaztjYXNlIDQ6by09ZVthKytdO2JyZWFrO2Nhc2UgMzY6bys9ZVthKytdfUNbaV0ueT1vfWxldCBoPTA7Zm9yKGE9MDthPHM7YSsrKXtjb25zdCBlPXRbYV0scz1DLnNsaWNlKGgsZSsxKTtpZigxJnNbMF0uZmxhZ3Mpcy5wdXNoKHNbMF0pO2Vsc2UgaWYoMSZzLmF0KC0xKS5mbGFncylzLnVuc2hpZnQocy5hdCgtMSkpO2Vsc2V7Y29uc3QgZT17ZmxhZ3M6MSx4OihzWzBdLngrcy5hdCgtMSkueCkvMix5OihzWzBdLnkrcy5hdCgtMSkueSkvMn07cy51bnNoaWZ0KGUpO3MucHVzaChlKX1tb3ZlVG8oc1swXS54LHNbMF0ueSk7Zm9yKGk9MSxnPXMubGVuZ3RoO2k8ZztpKyspaWYoMSZzW2ldLmZsYWdzKWxpbmVUbyhzW2ldLngsc1tpXS55KTtlbHNlIGlmKDEmc1tpKzFdLmZsYWdzKXtxdWFkcmF0aWNDdXJ2ZVRvKHNbaV0ueCxzW2ldLnksc1tpKzFdLngsc1tpKzFdLnkpO2krK31lbHNlIHF1YWRyYXRpY0N1cnZlVG8oc1tpXS54LHNbaV0ueSwoc1tpXS54K3NbaSsxXS54KS8yLChzW2ldLnkrc1tpKzFdLnkpLzIpO2g9ZSsxfX19ZnVuY3Rpb24gY29tcGlsZUNoYXJTdHJpbmcoZSx0LGksYSl7ZnVuY3Rpb24gbW92ZVRvKGUsaSl7dC5hZGQoQ3QsW2UsaV0pfWZ1bmN0aW9uIGxpbmVUbyhlLGkpe3QuYWRkKGh0LFtlLGldKX1mdW5jdGlvbiBiZXppZXJDdXJ2ZVRvKGUsaSxhLHMscixuKXt0LmFkZChjdCxbZSxpLGEscyxyLG5dKX1jb25zdCBzPVtdO2xldCByPTAsbj0wLG89MDshZnVuY3Rpb24gcGFyc2UoZSl7bGV0IGc9MDtmb3IoO2c8ZS5sZW5ndGg7KXtsZXQgYyxDLGgsbCxRLEUsdSxkLGYscD0hMSxtPWVbZysrXTtzd2l0Y2gobSl7Y2FzZSAxOmNhc2UgMzpjYXNlIDE4OmNhc2UgMjM6bys9cy5sZW5ndGg+PjE7cD0hMDticmVhaztjYXNlIDQ6bis9cy5wb3AoKTttb3ZlVG8ocixuKTtwPSEwO2JyZWFrO2Nhc2UgNTpmb3IoO3MubGVuZ3RoPjA7KXtyKz1zLnNoaWZ0KCk7bis9cy5zaGlmdCgpO2xpbmVUbyhyLG4pfWJyZWFrO2Nhc2UgNjpmb3IoO3MubGVuZ3RoPjA7KXtyKz1zLnNoaWZ0KCk7bGluZVRvKHIsbik7aWYoMD09PXMubGVuZ3RoKWJyZWFrO24rPXMuc2hpZnQoKTtsaW5lVG8ocixuKX1icmVhaztjYXNlIDc6Zm9yKDtzLmxlbmd0aD4wOyl7bis9cy5zaGlmdCgpO2xpbmVUbyhyLG4pO2lmKDA9PT1zLmxlbmd0aClicmVhaztyKz1zLnNoaWZ0KCk7bGluZVRvKHIsbil9YnJlYWs7Y2FzZSA4OmZvcig7cy5sZW5ndGg+MDspe2M9citzLnNoaWZ0KCk7aD1uK3Muc2hpZnQoKTtDPWMrcy5zaGlmdCgpO2w9aCtzLnNoaWZ0KCk7cj1DK3Muc2hpZnQoKTtuPWwrcy5zaGlmdCgpO2JlemllckN1cnZlVG8oYyxoLEMsbCxyLG4pfWJyZWFrO2Nhc2UgMTA6ZD1zLnBvcCgpO2Y9bnVsbDtpZihpLmlzQ0ZGQ0lERm9udCl7Y29uc3QgZT1pLmZkU2VsZWN0LmdldEZESW5kZXgoYSk7aWYoZT49MCYmZTxpLmZkQXJyYXkubGVuZ3RoKXtjb25zdCB0PWkuZmRBcnJheVtlXTtsZXQgYTt0LnByaXZhdGVEaWN0Py5zdWJyc0luZGV4JiYoYT10LnByaXZhdGVEaWN0LnN1YnJzSW5kZXgub2JqZWN0cyk7aWYoYSl7ZCs9Z2V0U3Vicm91dGluZUJpYXMoYSk7Zj1hW2RdfX1lbHNlIHdhcm4oIkludmFsaWQgZmQgaW5kZXggZm9yIGdseXBoIGluZGV4LiIpfWVsc2UgZj1pLnN1YnJzW2QraS5zdWJyc0JpYXNdO2YmJnBhcnNlKGYpO2JyZWFrO2Nhc2UgMTE6cmV0dXJuO2Nhc2UgMTI6bT1lW2crK107c3dpdGNoKG0pe2Nhc2UgMzQ6Yz1yK3Muc2hpZnQoKTtDPWMrcy5zaGlmdCgpO1E9bitzLnNoaWZ0KCk7cj1DK3Muc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKGMsbixDLFEscixRKTtjPXIrcy5zaGlmdCgpO0M9YytzLnNoaWZ0KCk7cj1DK3Muc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKGMsUSxDLG4scixuKTticmVhaztjYXNlIDM1OmM9citzLnNoaWZ0KCk7aD1uK3Muc2hpZnQoKTtDPWMrcy5zaGlmdCgpO2w9aCtzLnNoaWZ0KCk7cj1DK3Muc2hpZnQoKTtuPWwrcy5zaGlmdCgpO2JlemllckN1cnZlVG8oYyxoLEMsbCxyLG4pO2M9citzLnNoaWZ0KCk7aD1uK3Muc2hpZnQoKTtDPWMrcy5zaGlmdCgpO2w9aCtzLnNoaWZ0KCk7cj1DK3Muc2hpZnQoKTtuPWwrcy5zaGlmdCgpO2JlemllckN1cnZlVG8oYyxoLEMsbCxyLG4pO3MucG9wKCk7YnJlYWs7Y2FzZSAzNjpjPXIrcy5zaGlmdCgpO1E9bitzLnNoaWZ0KCk7Qz1jK3Muc2hpZnQoKTtFPVErcy5zaGlmdCgpO3I9QytzLnNoaWZ0KCk7YmV6aWVyQ3VydmVUbyhjLFEsQyxFLHIsRSk7Yz1yK3Muc2hpZnQoKTtDPWMrcy5zaGlmdCgpO3U9RStzLnNoaWZ0KCk7cj1DK3Muc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKGMsRSxDLHUscixuKTticmVhaztjYXNlIDM3OmNvbnN0IGU9cix0PW47Yz1yK3Muc2hpZnQoKTtoPW4rcy5zaGlmdCgpO0M9YytzLnNoaWZ0KCk7bD1oK3Muc2hpZnQoKTtyPUMrcy5zaGlmdCgpO249bCtzLnNoaWZ0KCk7YmV6aWVyQ3VydmVUbyhjLGgsQyxsLHIsbik7Yz1yK3Muc2hpZnQoKTtoPW4rcy5zaGlmdCgpO0M9YytzLnNoaWZ0KCk7bD1oK3Muc2hpZnQoKTtyPUM7bj1sO01hdGguYWJzKHItZSk+TWF0aC5hYnMobi10KT9yKz1zLnNoaWZ0KCk6bis9cy5zaGlmdCgpO2JlemllckN1cnZlVG8oYyxoLEMsbCxyLG4pO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEZvcm1hdEVycm9yKGB1bmtub3duIG9wZXJhdG9yOiAxMiAke219YCl9YnJlYWs7Y2FzZSAxNDppZihzLmxlbmd0aD49NCl7Y29uc3QgZT1zLnBvcCgpLGE9cy5wb3AoKTtuPXMucG9wKCk7cj1zLnBvcCgpO3QuYWRkKFF0KTt0LmFkZChkdCxbcixuXSk7bGV0IG89bG9va3VwQ21hcChpLmNtYXAsU3RyaW5nLmZyb21DaGFyQ29kZShpLmdseXBoTmFtZU1hcFtmaVtlXV0pKTtjb21waWxlQ2hhclN0cmluZyhpLmdseXBoc1tvLmdseXBoSWRdLHQsaSxvLmdseXBoSWQpO3QuYWRkKEJ0KTtvPWxvb2t1cENtYXAoaS5jbWFwLFN0cmluZy5mcm9tQ2hhckNvZGUoaS5nbHlwaE5hbWVNYXBbZmlbYV1dKSk7Y29tcGlsZUNoYXJTdHJpbmcoaS5nbHlwaHNbby5nbHlwaElkXSx0LGksby5nbHlwaElkKX1yZXR1cm47Y2FzZSAxOTpjYXNlIDIwOm8rPXMubGVuZ3RoPj4xO2crPW8rNz4+MztwPSEwO2JyZWFrO2Nhc2UgMjE6bis9cy5wb3AoKTtyKz1zLnBvcCgpO21vdmVUbyhyLG4pO3A9ITA7YnJlYWs7Y2FzZSAyMjpyKz1zLnBvcCgpO21vdmVUbyhyLG4pO3A9ITA7YnJlYWs7Y2FzZSAyNDpmb3IoO3MubGVuZ3RoPjI7KXtjPXIrcy5zaGlmdCgpO2g9bitzLnNoaWZ0KCk7Qz1jK3Muc2hpZnQoKTtsPWgrcy5zaGlmdCgpO3I9QytzLnNoaWZ0KCk7bj1sK3Muc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKGMsaCxDLGwscixuKX1yKz1zLnNoaWZ0KCk7bis9cy5zaGlmdCgpO2xpbmVUbyhyLG4pO2JyZWFrO2Nhc2UgMjU6Zm9yKDtzLmxlbmd0aD42Oyl7cis9cy5zaGlmdCgpO24rPXMuc2hpZnQoKTtsaW5lVG8ocixuKX1jPXIrcy5zaGlmdCgpO2g9bitzLnNoaWZ0KCk7Qz1jK3Muc2hpZnQoKTtsPWgrcy5zaGlmdCgpO3I9QytzLnNoaWZ0KCk7bj1sK3Muc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKGMsaCxDLGwscixuKTticmVhaztjYXNlIDI2OnMubGVuZ3RoJTImJihyKz1zLnNoaWZ0KCkpO2Zvcig7cy5sZW5ndGg+MDspe2M9cjtoPW4rcy5zaGlmdCgpO0M9YytzLnNoaWZ0KCk7bD1oK3Muc2hpZnQoKTtyPUM7bj1sK3Muc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKGMsaCxDLGwscixuKX1icmVhaztjYXNlIDI3OnMubGVuZ3RoJTImJihuKz1zLnNoaWZ0KCkpO2Zvcig7cy5sZW5ndGg+MDspe2M9citzLnNoaWZ0KCk7aD1uO0M9YytzLnNoaWZ0KCk7bD1oK3Muc2hpZnQoKTtyPUMrcy5zaGlmdCgpO249bDtiZXppZXJDdXJ2ZVRvKGMsaCxDLGwscixuKX1icmVhaztjYXNlIDI4OnMucHVzaCgoZVtnXTw8MjR8ZVtnKzFdPDwxNik+PjE2KTtnKz0yO2JyZWFrO2Nhc2UgMjk6ZD1zLnBvcCgpK2kuZ3N1YnJzQmlhcztmPWkuZ3N1YnJzW2RdO2YmJnBhcnNlKGYpO2JyZWFrO2Nhc2UgMzA6Zm9yKDtzLmxlbmd0aD4wOyl7Yz1yO2g9bitzLnNoaWZ0KCk7Qz1jK3Muc2hpZnQoKTtsPWgrcy5zaGlmdCgpO3I9QytzLnNoaWZ0KCk7bj1sKygxPT09cy5sZW5ndGg/cy5zaGlmdCgpOjApO2JlemllckN1cnZlVG8oYyxoLEMsbCxyLG4pO2lmKDA9PT1zLmxlbmd0aClicmVhaztjPXIrcy5zaGlmdCgpO2g9bjtDPWMrcy5zaGlmdCgpO2w9aCtzLnNoaWZ0KCk7bj1sK3Muc2hpZnQoKTtyPUMrKDE9PT1zLmxlbmd0aD9zLnNoaWZ0KCk6MCk7YmV6aWVyQ3VydmVUbyhjLGgsQyxsLHIsbil9YnJlYWs7Y2FzZSAzMTpmb3IoO3MubGVuZ3RoPjA7KXtjPXIrcy5zaGlmdCgpO2g9bjtDPWMrcy5zaGlmdCgpO2w9aCtzLnNoaWZ0KCk7bj1sK3Muc2hpZnQoKTtyPUMrKDE9PT1zLmxlbmd0aD9zLnNoaWZ0KCk6MCk7YmV6aWVyQ3VydmVUbyhjLGgsQyxsLHIsbik7aWYoMD09PXMubGVuZ3RoKWJyZWFrO2M9cjtoPW4rcy5zaGlmdCgpO0M9YytzLnNoaWZ0KCk7bD1oK3Muc2hpZnQoKTtyPUMrcy5zaGlmdCgpO249bCsoMT09PXMubGVuZ3RoP3Muc2hpZnQoKTowKTtiZXppZXJDdXJ2ZVRvKGMsaCxDLGwscixuKX1icmVhaztkZWZhdWx0OmlmKG08MzIpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGB1bmtub3duIG9wZXJhdG9yOiAke219YCk7aWYobTwyNDcpcy5wdXNoKG0tMTM5KTtlbHNlIGlmKG08MjUxKXMucHVzaCgyNTYqKG0tMjQ3KStlW2crK10rMTA4KTtlbHNlIGlmKG08MjU1KXMucHVzaCgyNTYqLShtLTI1MSktZVtnKytdLTEwOCk7ZWxzZXtzLnB1c2goKGVbZ108PDI0fGVbZysxXTw8MTZ8ZVtnKzJdPDw4fGVbZyszXSkvNjU1MzYpO2crPTR9fXAmJihzLmxlbmd0aD0wKX19KGUpfWNvbnN0ICRpPVtdO2NsYXNzIENvbW1hbmRze2NtZHM9W107YWRkKGUsdCl7aWYodClpZihpc051bWJlckFycmF5KHQsbnVsbCkpdGhpcy5jbWRzLnB1c2goZSwuLi50KTtlbHNle3dhcm4oYENvbW1hbmRzLmFkZCAtICIke2V9IiBoYXMgYXQgbGVhc3Qgb25lIG5vbi1udW1iZXIgYXJnOiAiJHt0fSIuYCk7Y29uc3QgaT10Lm1hcCgoZT0+Im51bWJlciI9PXR5cGVvZiBlP2U6MCkpO3RoaXMuY21kcy5wdXNoKGUsLi4uaSl9ZWxzZSB0aGlzLmNtZHMucHVzaChlKX19Y2xhc3MgQ29tcGlsZWRGb250e2NvbnN0cnVjdG9yKGUpe3RoaXMuY29uc3RydWN0b3I9PT1Db21waWxlZEZvbnQmJnVucmVhY2hhYmxlKCJDYW5ub3QgaW5pdGlhbGl6ZSBDb21waWxlZEZvbnQuIik7dGhpcy5mb250TWF0cml4PWU7dGhpcy5jb21waWxlZEdseXBocz1PYmplY3QuY3JlYXRlKG51bGwpO3RoaXMuY29tcGlsZWRDaGFyQ29kZVRvR2x5cGhJZD1PYmplY3QuY3JlYXRlKG51bGwpfWdldFBhdGhKcyhlKXtjb25zdHtjaGFyQ29kZTp0LGdseXBoSWQ6aX09bG9va3VwQ21hcCh0aGlzLmNtYXAsZSk7bGV0IGEscz10aGlzLmNvbXBpbGVkR2x5cGhzW2ldO2lmKCFzKXt0cnl7cz10aGlzLmNvbXBpbGVHbHlwaCh0aGlzLmdseXBoc1tpXSxpKX1jYXRjaChlKXtzPSRpO2E9ZX10aGlzLmNvbXBpbGVkR2x5cGhzW2ldPXN9dGhpcy5jb21waWxlZENoYXJDb2RlVG9HbHlwaElkW3RdPz89aTtpZihhKXRocm93IGE7cmV0dXJuIHN9Y29tcGlsZUdseXBoKGUsdCl7aWYoIWV8fDA9PT1lLmxlbmd0aHx8MTQ9PT1lWzBdKXJldHVybiAkaTtsZXQgaT10aGlzLmZvbnRNYXRyaXg7aWYodGhpcy5pc0NGRkNJREZvbnQpe2NvbnN0IGU9dGhpcy5mZFNlbGVjdC5nZXRGREluZGV4KHQpO2lmKGU+PTAmJmU8dGhpcy5mZEFycmF5Lmxlbmd0aCl7aT10aGlzLmZkQXJyYXlbZV0uZ2V0QnlOYW1lKCJGb250TWF0cml4Iil8fGF9ZWxzZSB3YXJuKCJJbnZhbGlkIGZkIGluZGV4IGZvciBnbHlwaCBpbmRleC4iKX1jb25zdCBzPW5ldyBDb21tYW5kcztzLmFkZChRdCk7cy5hZGQodXQsaS5zbGljZSgpKTtzLmFkZChFdCk7dGhpcy5jb21waWxlR2x5cGhJbXBsKGUscyx0KTtzLmFkZChCdCk7cmV0dXJuIHMuY21kc31jb21waWxlR2x5cGhJbXBsKCl7dW5yZWFjaGFibGUoIkNoaWxkcmVuIGNsYXNzZXMgc2hvdWxkIGltcGxlbWVudCB0aGlzLiIpfWhhc0J1aWx0UGF0aChlKXtjb25zdHtjaGFyQ29kZTp0LGdseXBoSWQ6aX09bG9va3VwQ21hcCh0aGlzLmNtYXAsZSk7cmV0dXJuIHZvaWQgMCE9PXRoaXMuY29tcGlsZWRHbHlwaHNbaV0mJnZvaWQgMCE9PXRoaXMuY29tcGlsZWRDaGFyQ29kZVRvR2x5cGhJZFt0XX19Y2xhc3MgVHJ1ZVR5cGVDb21waWxlZCBleHRlbmRzIENvbXBpbGVkRm9udHtjb25zdHJ1Y3RvcihlLHQsaSl7c3VwZXIoaXx8WzQ4OGUtNiwwLDAsNDg4ZS02LDAsMF0pO3RoaXMuZ2x5cGhzPWU7dGhpcy5jbWFwPXR9Y29tcGlsZUdseXBoSW1wbChlLHQpe2NvbXBpbGVHbHlmKGUsdCx0aGlzKX19Y2xhc3MgVHlwZTJDb21waWxlZCBleHRlbmRzIENvbXBpbGVkRm9udHtjb25zdHJ1Y3RvcihlLHQsaSxhKXtzdXBlcihpfHxbLjAwMSwwLDAsLjAwMSwwLDBdKTt0aGlzLmdseXBocz1lLmdseXBoczt0aGlzLmdzdWJycz1lLmdzdWJyc3x8W107dGhpcy5zdWJycz1lLnN1YnJzfHxbXTt0aGlzLmNtYXA9dDt0aGlzLmdseXBoTmFtZU1hcD1hfHxSaSgpO3RoaXMuZ3N1YnJzQmlhcz1nZXRTdWJyb3V0aW5lQmlhcyh0aGlzLmdzdWJycyk7dGhpcy5zdWJyc0JpYXM9Z2V0U3Vicm91dGluZUJpYXModGhpcy5zdWJycyk7dGhpcy5pc0NGRkNJREZvbnQ9ZS5pc0NGRkNJREZvbnQ7dGhpcy5mZFNlbGVjdD1lLmZkU2VsZWN0O3RoaXMuZmRBcnJheT1lLmZkQXJyYXl9Y29tcGlsZUdseXBoSW1wbChlLHQsaSl7Y29tcGlsZUNoYXJTdHJpbmcoZSx0LHRoaXMsaSl9fWNsYXNzIEZvbnRSZW5kZXJlckZhY3Rvcnl7c3RhdGljIGNyZWF0ZShlLHQpe2NvbnN0IGk9bmV3IFVpbnQ4QXJyYXkoZS5kYXRhKTtsZXQgYSxzLHIsbixvLGc7Y29uc3QgYz1nZXRVaW50MTYoaSw0KTtmb3IobGV0IGU9MCxDPTEyO2U8YztlKyssQys9MTYpe2NvbnN0IGU9Ynl0ZXNUb1N0cmluZyhpLnN1YmFycmF5KEMsQys0KSksYz1nZXRVaW50MzIoaSxDKzgpLGg9Z2V0VWludDMyKGksQysxMik7c3dpdGNoKGUpe2Nhc2UiY21hcCI6YT1wYXJzZUNtYXAoaSxjKTticmVhaztjYXNlImdseWYiOnM9aS5zdWJhcnJheShjLGMraCk7YnJlYWs7Y2FzZSJsb2NhIjpyPWkuc3ViYXJyYXkoYyxjK2gpO2JyZWFrO2Nhc2UiaGVhZCI6Zz1nZXRVaW50MTYoaSxjKzE4KTtvPWdldFVpbnQxNihpLGMrNTApO2JyZWFrO2Nhc2UiQ0ZGICI6bj1wYXJzZUNmZihpLGMsYytoLHQpfX1pZihzKXtjb25zdCB0PWc/WzEvZywwLDAsMS9nLDAsMF06ZS5mb250TWF0cml4O3JldHVybiBuZXcgVHJ1ZVR5cGVDb21waWxlZChmdW5jdGlvbiBwYXJzZUdseWZUYWJsZShlLHQsaSl7bGV0IGEscztpZihpKXthPTQ7cz1nZXRVaW50MzJ9ZWxzZXthPTI7cz0oZSx0KT0+MipnZXRVaW50MTYoZSx0KX1jb25zdCByPVtdO2xldCBuPXModCwwKTtmb3IobGV0IGk9YTtpPHQubGVuZ3RoO2krPWEpe2NvbnN0IGE9cyh0LGkpO3IucHVzaChlLnN1YmFycmF5KG4sYSkpO249YX1yZXR1cm4gcn0ocyxyLG8pLGEsdCl9cmV0dXJuIG5ldyBUeXBlMkNvbXBpbGVkKG4sYSxlLmZvbnRNYXRyaXgsZS5nbHlwaE5hbWVNYXApfX1jb25zdCBBYT1nZXRMb29rdXBUYWJsZUZhY3RvcnkoKGZ1bmN0aW9uKGUpe2UuQ291cmllcj02MDA7ZVsiQ291cmllci1Cb2xkIl09NjAwO2VbIkNvdXJpZXItQm9sZE9ibGlxdWUiXT02MDA7ZVsiQ291cmllci1PYmxpcXVlIl09NjAwO2UuSGVsdmV0aWNhPWdldExvb2t1cFRhYmxlRmFjdG9yeSgoZnVuY3Rpb24oZSl7ZS5zcGFjZT0yNzg7ZS5leGNsYW09Mjc4O2UucXVvdGVkYmw9MzU1O2UubnVtYmVyc2lnbj01NTY7ZS5kb2xsYXI9NTU2O2UucGVyY2VudD04ODk7ZS5hbXBlcnNhbmQ9NjY3O2UucXVvdGVyaWdodD0yMjI7ZS5wYXJlbmxlZnQ9MzMzO2UucGFyZW5yaWdodD0zMzM7ZS5hc3Rlcmlzaz0zODk7ZS5wbHVzPTU4NDtlLmNvbW1hPTI3ODtlLmh5cGhlbj0zMzM7ZS5wZXJpb2Q9Mjc4O2Uuc2xhc2g9Mjc4O2UuemVybz01NTY7ZS5vbmU9NTU2O2UudHdvPTU1NjtlLnRocmVlPTU1NjtlLmZvdXI9NTU2O2UuZml2ZT01NTY7ZS5zaXg9NTU2O2Uuc2V2ZW49NTU2O2UuZWlnaHQ9NTU2O2UubmluZT01NTY7ZS5jb2xvbj0yNzg7ZS5zZW1pY29sb249Mjc4O2UubGVzcz01ODQ7ZS5lcXVhbD01ODQ7ZS5ncmVhdGVyPTU4NDtlLnF1ZXN0aW9uPTU1NjtlLmF0PTEwMTU7ZS5BPTY2NztlLkI9NjY3O2UuQz03MjI7ZS5EPTcyMjtlLkU9NjY3O2UuRj02MTE7ZS5HPTc3ODtlLkg9NzIyO2UuST0yNzg7ZS5KPTUwMDtlLks9NjY3O2UuTD01NTY7ZS5NPTgzMztlLk49NzIyO2UuTz03Nzg7ZS5QPTY2NztlLlE9Nzc4O2UuUj03MjI7ZS5TPTY2NztlLlQ9NjExO2UuVT03MjI7ZS5WPTY2NztlLlc9OTQ0O2UuWD02Njc7ZS5ZPTY2NztlLlo9NjExO2UuYnJhY2tldGxlZnQ9Mjc4O2UuYmFja3NsYXNoPTI3ODtlLmJyYWNrZXRyaWdodD0yNzg7ZS5hc2NpaWNpcmN1bT00Njk7ZS51bmRlcnNjb3JlPTU1NjtlLnF1b3RlbGVmdD0yMjI7ZS5hPTU1NjtlLmI9NTU2O2UuYz01MDA7ZS5kPTU1NjtlLmU9NTU2O2UuZj0yNzg7ZS5nPTU1NjtlLmg9NTU2O2UuaT0yMjI7ZS5qPTIyMjtlLms9NTAwO2UubD0yMjI7ZS5tPTgzMztlLm49NTU2O2Uubz01NTY7ZS5wPTU1NjtlLnE9NTU2O2Uucj0zMzM7ZS5zPTUwMDtlLnQ9Mjc4O2UudT01NTY7ZS52PTUwMDtlLnc9NzIyO2UueD01MDA7ZS55PTUwMDtlLno9NTAwO2UuYnJhY2VsZWZ0PTMzNDtlLmJhcj0yNjA7ZS5icmFjZXJpZ2h0PTMzNDtlLmFzY2lpdGlsZGU9NTg0O2UuZXhjbGFtZG93bj0zMzM7ZS5jZW50PTU1NjtlLnN0ZXJsaW5nPTU1NjtlLmZyYWN0aW9uPTE2NztlLnllbj01NTY7ZS5mbG9yaW49NTU2O2Uuc2VjdGlvbj01NTY7ZS5jdXJyZW5jeT01NTY7ZS5xdW90ZXNpbmdsZT0xOTE7ZS5xdW90ZWRibGxlZnQ9MzMzO2UuZ3VpbGxlbW90bGVmdD01NTY7ZS5ndWlsc2luZ2xsZWZ0PTMzMztlLmd1aWxzaW5nbHJpZ2h0PTMzMztlLmZpPTUwMDtlLmZsPTUwMDtlLmVuZGFzaD01NTY7ZS5kYWdnZXI9NTU2O2UuZGFnZ2VyZGJsPTU1NjtlLnBlcmlvZGNlbnRlcmVkPTI3ODtlLnBhcmFncmFwaD01Mzc7ZS5idWxsZXQ9MzUwO2UucXVvdGVzaW5nbGJhc2U9MjIyO2UucXVvdGVkYmxiYXNlPTMzMztlLnF1b3RlZGJscmlnaHQ9MzMzO2UuZ3VpbGxlbW90cmlnaHQ9NTU2O2UuZWxsaXBzaXM9MWUzO2UucGVydGhvdXNhbmQ9MWUzO2UucXVlc3Rpb25kb3duPTYxMTtlLmdyYXZlPTMzMztlLmFjdXRlPTMzMztlLmNpcmN1bWZsZXg9MzMzO2UudGlsZGU9MzMzO2UubWFjcm9uPTMzMztlLmJyZXZlPTMzMztlLmRvdGFjY2VudD0zMzM7ZS5kaWVyZXNpcz0zMzM7ZS5yaW5nPTMzMztlLmNlZGlsbGE9MzMzO2UuaHVuZ2FydW1sYXV0PTMzMztlLm9nb25laz0zMzM7ZS5jYXJvbj0zMzM7ZS5lbWRhc2g9MWUzO2UuQUU9MWUzO2Uub3JkZmVtaW5pbmU9MzcwO2UuTHNsYXNoPTU1NjtlLk9zbGFzaD03Nzg7ZS5PRT0xZTM7ZS5vcmRtYXNjdWxpbmU9MzY1O2UuYWU9ODg5O2UuZG90bGVzc2k9Mjc4O2UubHNsYXNoPTIyMjtlLm9zbGFzaD02MTE7ZS5vZT05NDQ7ZS5nZXJtYW5kYmxzPTYxMTtlLklkaWVyZXNpcz0yNzg7ZS5lYWN1dGU9NTU2O2UuYWJyZXZlPTU1NjtlLnVodW5nYXJ1bWxhdXQ9NTU2O2UuZWNhcm9uPTU1NjtlLllkaWVyZXNpcz02Njc7ZS5kaXZpZGU9NTg0O2UuWWFjdXRlPTY2NztlLkFjaXJjdW1mbGV4PTY2NztlLmFhY3V0ZT01NTY7ZS5VY2lyY3VtZmxleD03MjI7ZS55YWN1dGU9NTAwO2Uuc2NvbW1hYWNjZW50PTUwMDtlLmVjaXJjdW1mbGV4PTU1NjtlLlVyaW5nPTcyMjtlLlVkaWVyZXNpcz03MjI7ZS5hb2dvbmVrPTU1NjtlLlVhY3V0ZT03MjI7ZS51b2dvbmVrPTU1NjtlLkVkaWVyZXNpcz02Njc7ZS5EY3JvYXQ9NzIyO2UuY29tbWFhY2NlbnQ9MjUwO2UuY29weXJpZ2h0PTczNztlLkVtYWNyb249NjY3O2UuY2Nhcm9uPTUwMDtlLmFyaW5nPTU1NjtlLk5jb21tYWFjY2VudD03MjI7ZS5sYWN1dGU9MjIyO2UuYWdyYXZlPTU1NjtlLlRjb21tYWFjY2VudD02MTE7ZS5DYWN1dGU9NzIyO2UuYXRpbGRlPTU1NjtlLkVkb3RhY2NlbnQ9NjY3O2Uuc2Nhcm9uPTUwMDtlLnNjZWRpbGxhPTUwMDtlLmlhY3V0ZT0yNzg7ZS5sb3plbmdlPTQ3MTtlLlJjYXJvbj03MjI7ZS5HY29tbWFhY2NlbnQ9Nzc4O2UudWNpcmN1bWZsZXg9NTU2O2UuYWNpcmN1bWZsZXg9NTU2O2UuQW1hY3Jvbj02Njc7ZS5yY2Fyb249MzMzO2UuY2NlZGlsbGE9NTAwO2UuWmRvdGFjY2VudD02MTE7ZS5UaG9ybj02Njc7ZS5PbWFjcm9uPTc3ODtlLlJhY3V0ZT03MjI7ZS5TYWN1dGU9NjY3O2UuZGNhcm9uPTY0MztlLlVtYWNyb249NzIyO2UudXJpbmc9NTU2O2UudGhyZWVzdXBlcmlvcj0zMzM7ZS5PZ3JhdmU9Nzc4O2UuQWdyYXZlPTY2NztlLkFicmV2ZT02Njc7ZS5tdWx0aXBseT01ODQ7ZS51YWN1dGU9NTU2O2UuVGNhcm9uPTYxMTtlLnBhcnRpYWxkaWZmPTQ3NjtlLnlkaWVyZXNpcz01MDA7ZS5OYWN1dGU9NzIyO2UuaWNpcmN1bWZsZXg9Mjc4O2UuRWNpcmN1bWZsZXg9NjY3O2UuYWRpZXJlc2lzPTU1NjtlLmVkaWVyZXNpcz01NTY7ZS5jYWN1dGU9NTAwO2UubmFjdXRlPTU1NjtlLnVtYWNyb249NTU2O2UuTmNhcm9uPTcyMjtlLklhY3V0ZT0yNzg7ZS5wbHVzbWludXM9NTg0O2UuYnJva2VuYmFyPTI2MDtlLnJlZ2lzdGVyZWQ9NzM3O2UuR2JyZXZlPTc3ODtlLklkb3RhY2NlbnQ9Mjc4O2Uuc3VtbWF0aW9uPTYwMDtlLkVncmF2ZT02Njc7ZS5yYWN1dGU9MzMzO2Uub21hY3Jvbj01NTY7ZS5aYWN1dGU9NjExO2UuWmNhcm9uPTYxMTtlLmdyZWF0ZXJlcXVhbD01NDk7ZS5FdGg9NzIyO2UuQ2NlZGlsbGE9NzIyO2UubGNvbW1hYWNjZW50PTIyMjtlLnRjYXJvbj0zMTc7ZS5lb2dvbmVrPTU1NjtlLlVvZ29uZWs9NzIyO2UuQWFjdXRlPTY2NztlLkFkaWVyZXNpcz02Njc7ZS5lZ3JhdmU9NTU2O2UuemFjdXRlPTUwMDtlLmlvZ29uZWs9MjIyO2UuT2FjdXRlPTc3ODtlLm9hY3V0ZT01NTY7ZS5hbWFjcm9uPTU1NjtlLnNhY3V0ZT01MDA7ZS5pZGllcmVzaXM9Mjc4O2UuT2NpcmN1bWZsZXg9Nzc4O2UuVWdyYXZlPTcyMjtlLkRlbHRhPTYxMjtlLnRob3JuPTU1NjtlLnR3b3N1cGVyaW9yPTMzMztlLk9kaWVyZXNpcz03Nzg7ZS5tdT01NTY7ZS5pZ3JhdmU9Mjc4O2Uub2h1bmdhcnVtbGF1dD01NTY7ZS5Fb2dvbmVrPTY2NztlLmRjcm9hdD01NTY7ZS50aHJlZXF1YXJ0ZXJzPTgzNDtlLlNjZWRpbGxhPTY2NztlLmxjYXJvbj0yOTk7ZS5LY29tbWFhY2NlbnQ9NjY3O2UuTGFjdXRlPTU1NjtlLnRyYWRlbWFyaz0xZTM7ZS5lZG90YWNjZW50PTU1NjtlLklncmF2ZT0yNzg7ZS5JbWFjcm9uPTI3ODtlLkxjYXJvbj01NTY7ZS5vbmVoYWxmPTgzNDtlLmxlc3NlcXVhbD01NDk7ZS5vY2lyY3VtZmxleD01NTY7ZS5udGlsZGU9NTU2O2UuVWh1bmdhcnVtbGF1dD03MjI7ZS5FYWN1dGU9NjY3O2UuZW1hY3Jvbj01NTY7ZS5nYnJldmU9NTU2O2Uub25lcXVhcnRlcj04MzQ7ZS5TY2Fyb249NjY3O2UuU2NvbW1hYWNjZW50PTY2NztlLk9odW5nYXJ1bWxhdXQ9Nzc4O2UuZGVncmVlPTQwMDtlLm9ncmF2ZT01NTY7ZS5DY2Fyb249NzIyO2UudWdyYXZlPTU1NjtlLnJhZGljYWw9NDUzO2UuRGNhcm9uPTcyMjtlLnJjb21tYWFjY2VudD0zMzM7ZS5OdGlsZGU9NzIyO2Uub3RpbGRlPTU1NjtlLlJjb21tYWFjY2VudD03MjI7ZS5MY29tbWFhY2NlbnQ9NTU2O2UuQXRpbGRlPTY2NztlLkFvZ29uZWs9NjY3O2UuQXJpbmc9NjY3O2UuT3RpbGRlPTc3ODtlLnpkb3RhY2NlbnQ9NTAwO2UuRWNhcm9uPTY2NztlLklvZ29uZWs9Mjc4O2Uua2NvbW1hYWNjZW50PTUwMDtlLm1pbnVzPTU4NDtlLkljaXJjdW1mbGV4PTI3ODtlLm5jYXJvbj01NTY7ZS50Y29tbWFhY2NlbnQ9Mjc4O2UubG9naWNhbG5vdD01ODQ7ZS5vZGllcmVzaXM9NTU2O2UudWRpZXJlc2lzPTU1NjtlLm5vdGVxdWFsPTU0OTtlLmdjb21tYWFjY2VudD01NTY7ZS5ldGg9NTU2O2UuemNhcm9uPTUwMDtlLm5jb21tYWFjY2VudD01NTY7ZS5vbmVzdXBlcmlvcj0zMzM7ZS5pbWFjcm9uPTI3ODtlLkV1cm89NTU2fSkpO2VbIkhlbHZldGljYS1Cb2xkIl09Z2V0TG9va3VwVGFibGVGYWN0b3J5KChmdW5jdGlvbihlKXtlLnNwYWNlPTI3ODtlLmV4Y2xhbT0zMzM7ZS5xdW90ZWRibD00NzQ7ZS5udW1iZXJzaWduPTU1NjtlLmRvbGxhcj01NTY7ZS5wZXJjZW50PTg4OTtlLmFtcGVyc2FuZD03MjI7ZS5xdW90ZXJpZ2h0PTI3ODtlLnBhcmVubGVmdD0zMzM7ZS5wYXJlbnJpZ2h0PTMzMztlLmFzdGVyaXNrPTM4OTtlLnBsdXM9NTg0O2UuY29tbWE9Mjc4O2UuaHlwaGVuPTMzMztlLnBlcmlvZD0yNzg7ZS5zbGFzaD0yNzg7ZS56ZXJvPTU1NjtlLm9uZT01NTY7ZS50d289NTU2O2UudGhyZWU9NTU2O2UuZm91cj01NTY7ZS5maXZlPTU1NjtlLnNpeD01NTY7ZS5zZXZlbj01NTY7ZS5laWdodD01NTY7ZS5uaW5lPTU1NjtlLmNvbG9uPTMzMztlLnNlbWljb2xvbj0zMzM7ZS5sZXNzPTU4NDtlLmVxdWFsPTU4NDtlLmdyZWF0ZXI9NTg0O2UucXVlc3Rpb249NjExO2UuYXQ9OTc1O2UuQT03MjI7ZS5CPTcyMjtlLkM9NzIyO2UuRD03MjI7ZS5FPTY2NztlLkY9NjExO2UuRz03Nzg7ZS5IPTcyMjtlLkk9Mjc4O2UuSj01NTY7ZS5LPTcyMjtlLkw9NjExO2UuTT04MzM7ZS5OPTcyMjtlLk89Nzc4O2UuUD02Njc7ZS5RPTc3ODtlLlI9NzIyO2UuUz02Njc7ZS5UPTYxMTtlLlU9NzIyO2UuVj02Njc7ZS5XPTk0NDtlLlg9NjY3O2UuWT02Njc7ZS5aPTYxMTtlLmJyYWNrZXRsZWZ0PTMzMztlLmJhY2tzbGFzaD0yNzg7ZS5icmFja2V0cmlnaHQ9MzMzO2UuYXNjaWljaXJjdW09NTg0O2UudW5kZXJzY29yZT01NTY7ZS5xdW90ZWxlZnQ9Mjc4O2UuYT01NTY7ZS5iPTYxMTtlLmM9NTU2O2UuZD02MTE7ZS5lPTU1NjtlLmY9MzMzO2UuZz02MTE7ZS5oPTYxMTtlLmk9Mjc4O2Uuaj0yNzg7ZS5rPTU1NjtlLmw9Mjc4O2UubT04ODk7ZS5uPTYxMTtlLm89NjExO2UucD02MTE7ZS5xPTYxMTtlLnI9Mzg5O2Uucz01NTY7ZS50PTMzMztlLnU9NjExO2Uudj01NTY7ZS53PTc3ODtlLng9NTU2O2UueT01NTY7ZS56PTUwMDtlLmJyYWNlbGVmdD0zODk7ZS5iYXI9MjgwO2UuYnJhY2VyaWdodD0zODk7ZS5hc2NpaXRpbGRlPTU4NDtlLmV4Y2xhbWRvd249MzMzO2UuY2VudD01NTY7ZS5zdGVybGluZz01NTY7ZS5mcmFjdGlvbj0xNjc7ZS55ZW49NTU2O2UuZmxvcmluPTU1NjtlLnNlY3Rpb249NTU2O2UuY3VycmVuY3k9NTU2O2UucXVvdGVzaW5nbGU9MjM4O2UucXVvdGVkYmxsZWZ0PTUwMDtlLmd1aWxsZW1vdGxlZnQ9NTU2O2UuZ3VpbHNpbmdsbGVmdD0zMzM7ZS5ndWlsc2luZ2xyaWdodD0zMzM7ZS5maT02MTE7ZS5mbD02MTE7ZS5lbmRhc2g9NTU2O2UuZGFnZ2VyPTU1NjtlLmRhZ2dlcmRibD01NTY7ZS5wZXJpb2RjZW50ZXJlZD0yNzg7ZS5wYXJhZ3JhcGg9NTU2O2UuYnVsbGV0PTM1MDtlLnF1b3Rlc2luZ2xiYXNlPTI3ODtlLnF1b3RlZGJsYmFzZT01MDA7ZS5xdW90ZWRibHJpZ2h0PTUwMDtlLmd1aWxsZW1vdHJpZ2h0PTU1NjtlLmVsbGlwc2lzPTFlMztlLnBlcnRob3VzYW5kPTFlMztlLnF1ZXN0aW9uZG93bj02MTE7ZS5ncmF2ZT0zMzM7ZS5hY3V0ZT0zMzM7ZS5jaXJjdW1mbGV4PTMzMztlLnRpbGRlPTMzMztlLm1hY3Jvbj0zMzM7ZS5icmV2ZT0zMzM7ZS5kb3RhY2NlbnQ9MzMzO2UuZGllcmVzaXM9MzMzO2UucmluZz0zMzM7ZS5jZWRpbGxhPTMzMztlLmh1bmdhcnVtbGF1dD0zMzM7ZS5vZ29uZWs9MzMzO2UuY2Fyb249MzMzO2UuZW1kYXNoPTFlMztlLkFFPTFlMztlLm9yZGZlbWluaW5lPTM3MDtlLkxzbGFzaD02MTE7ZS5Pc2xhc2g9Nzc4O2UuT0U9MWUzO2Uub3JkbWFzY3VsaW5lPTM2NTtlLmFlPTg4OTtlLmRvdGxlc3NpPTI3ODtlLmxzbGFzaD0yNzg7ZS5vc2xhc2g9NjExO2Uub2U9OTQ0O2UuZ2VybWFuZGJscz02MTE7ZS5JZGllcmVzaXM9Mjc4O2UuZWFjdXRlPTU1NjtlLmFicmV2ZT01NTY7ZS51aHVuZ2FydW1sYXV0PTYxMTtlLmVjYXJvbj01NTY7ZS5ZZGllcmVzaXM9NjY3O2UuZGl2aWRlPTU4NDtlLllhY3V0ZT02Njc7ZS5BY2lyY3VtZmxleD03MjI7ZS5hYWN1dGU9NTU2O2UuVWNpcmN1bWZsZXg9NzIyO2UueWFjdXRlPTU1NjtlLnNjb21tYWFjY2VudD01NTY7ZS5lY2lyY3VtZmxleD01NTY7ZS5VcmluZz03MjI7ZS5VZGllcmVzaXM9NzIyO2UuYW9nb25laz01NTY7ZS5VYWN1dGU9NzIyO2UudW9nb25laz02MTE7ZS5FZGllcmVzaXM9NjY3O2UuRGNyb2F0PTcyMjtlLmNvbW1hYWNjZW50PTI1MDtlLmNvcHlyaWdodD03Mzc7ZS5FbWFjcm9uPTY2NztlLmNjYXJvbj01NTY7ZS5hcmluZz01NTY7ZS5OY29tbWFhY2NlbnQ9NzIyO2UubGFjdXRlPTI3ODtlLmFncmF2ZT01NTY7ZS5UY29tbWFhY2NlbnQ9NjExO2UuQ2FjdXRlPTcyMjtlLmF0aWxkZT01NTY7ZS5FZG90YWNjZW50PTY2NztlLnNjYXJvbj01NTY7ZS5zY2VkaWxsYT01NTY7ZS5pYWN1dGU9Mjc4O2UubG96ZW5nZT00OTQ7ZS5SY2Fyb249NzIyO2UuR2NvbW1hYWNjZW50PTc3ODtlLnVjaXJjdW1mbGV4PTYxMTtlLmFjaXJjdW1mbGV4PTU1NjtlLkFtYWNyb249NzIyO2UucmNhcm9uPTM4OTtlLmNjZWRpbGxhPTU1NjtlLlpkb3RhY2NlbnQ9NjExO2UuVGhvcm49NjY3O2UuT21hY3Jvbj03Nzg7ZS5SYWN1dGU9NzIyO2UuU2FjdXRlPTY2NztlLmRjYXJvbj03NDM7ZS5VbWFjcm9uPTcyMjtlLnVyaW5nPTYxMTtlLnRocmVlc3VwZXJpb3I9MzMzO2UuT2dyYXZlPTc3ODtlLkFncmF2ZT03MjI7ZS5BYnJldmU9NzIyO2UubXVsdGlwbHk9NTg0O2UudWFjdXRlPTYxMTtlLlRjYXJvbj02MTE7ZS5wYXJ0aWFsZGlmZj00OTQ7ZS55ZGllcmVzaXM9NTU2O2UuTmFjdXRlPTcyMjtlLmljaXJjdW1mbGV4PTI3ODtlLkVjaXJjdW1mbGV4PTY2NztlLmFkaWVyZXNpcz01NTY7ZS5lZGllcmVzaXM9NTU2O2UuY2FjdXRlPTU1NjtlLm5hY3V0ZT02MTE7ZS51bWFjcm9uPTYxMTtlLk5jYXJvbj03MjI7ZS5JYWN1dGU9Mjc4O2UucGx1c21pbnVzPTU4NDtlLmJyb2tlbmJhcj0yODA7ZS5yZWdpc3RlcmVkPTczNztlLkdicmV2ZT03Nzg7ZS5JZG90YWNjZW50PTI3ODtlLnN1bW1hdGlvbj02MDA7ZS5FZ3JhdmU9NjY3O2UucmFjdXRlPTM4OTtlLm9tYWNyb249NjExO2UuWmFjdXRlPTYxMTtlLlpjYXJvbj02MTE7ZS5ncmVhdGVyZXF1YWw9NTQ5O2UuRXRoPTcyMjtlLkNjZWRpbGxhPTcyMjtlLmxjb21tYWFjY2VudD0yNzg7ZS50Y2Fyb249Mzg5O2UuZW9nb25laz01NTY7ZS5Vb2dvbmVrPTcyMjtlLkFhY3V0ZT03MjI7ZS5BZGllcmVzaXM9NzIyO2UuZWdyYXZlPTU1NjtlLnphY3V0ZT01MDA7ZS5pb2dvbmVrPTI3ODtlLk9hY3V0ZT03Nzg7ZS5vYWN1dGU9NjExO2UuYW1hY3Jvbj01NTY7ZS5zYWN1dGU9NTU2O2UuaWRpZXJlc2lzPTI3ODtlLk9jaXJjdW1mbGV4PTc3ODtlLlVncmF2ZT03MjI7ZS5EZWx0YT02MTI7ZS50aG9ybj02MTE7ZS50d29zdXBlcmlvcj0zMzM7ZS5PZGllcmVzaXM9Nzc4O2UubXU9NjExO2UuaWdyYXZlPTI3ODtlLm9odW5nYXJ1bWxhdXQ9NjExO2UuRW9nb25laz02Njc7ZS5kY3JvYXQ9NjExO2UudGhyZWVxdWFydGVycz04MzQ7ZS5TY2VkaWxsYT02Njc7ZS5sY2Fyb249NDAwO2UuS2NvbW1hYWNjZW50PTcyMjtlLkxhY3V0ZT02MTE7ZS50cmFkZW1hcms9MWUzO2UuZWRvdGFjY2VudD01NTY7ZS5JZ3JhdmU9Mjc4O2UuSW1hY3Jvbj0yNzg7ZS5MY2Fyb249NjExO2Uub25laGFsZj04MzQ7ZS5sZXNzZXF1YWw9NTQ5O2Uub2NpcmN1bWZsZXg9NjExO2UubnRpbGRlPTYxMTtlLlVodW5nYXJ1bWxhdXQ9NzIyO2UuRWFjdXRlPTY2NztlLmVtYWNyb249NTU2O2UuZ2JyZXZlPTYxMTtlLm9uZXF1YXJ0ZXI9ODM0O2UuU2Nhcm9uPTY2NztlLlNjb21tYWFjY2VudD02Njc7ZS5PaHVuZ2FydW1sYXV0PTc3ODtlLmRlZ3JlZT00MDA7ZS5vZ3JhdmU9NjExO2UuQ2Nhcm9uPTcyMjtlLnVncmF2ZT02MTE7ZS5yYWRpY2FsPTU0OTtlLkRjYXJvbj03MjI7ZS5yY29tbWFhY2NlbnQ9Mzg5O2UuTnRpbGRlPTcyMjtlLm90aWxkZT02MTE7ZS5SY29tbWFhY2NlbnQ9NzIyO2UuTGNvbW1hYWNjZW50PTYxMTtlLkF0aWxkZT03MjI7ZS5Bb2dvbmVrPTcyMjtlLkFyaW5nPTcyMjtlLk90aWxkZT03Nzg7ZS56ZG90YWNjZW50PTUwMDtlLkVjYXJvbj02Njc7ZS5Jb2dvbmVrPTI3ODtlLmtjb21tYWFjY2VudD01NTY7ZS5taW51cz01ODQ7ZS5JY2lyY3VtZmxleD0yNzg7ZS5uY2Fyb249NjExO2UudGNvbW1hYWNjZW50PTMzMztlLmxvZ2ljYWxub3Q9NTg0O2Uub2RpZXJlc2lzPTYxMTtlLnVkaWVyZXNpcz02MTE7ZS5ub3RlcXVhbD01NDk7ZS5nY29tbWFhY2NlbnQ9NjExO2UuZXRoPTYxMTtlLnpjYXJvbj01MDA7ZS5uY29tbWFhY2NlbnQ9NjExO2Uub25lc3VwZXJpb3I9MzMzO2UuaW1hY3Jvbj0yNzg7ZS5FdXJvPTU1Nn0pKTtlWyJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiXT1nZXRMb29rdXBUYWJsZUZhY3RvcnkoKGZ1bmN0aW9uKGUpe2Uuc3BhY2U9Mjc4O2UuZXhjbGFtPTMzMztlLnF1b3RlZGJsPTQ3NDtlLm51bWJlcnNpZ249NTU2O2UuZG9sbGFyPTU1NjtlLnBlcmNlbnQ9ODg5O2UuYW1wZXJzYW5kPTcyMjtlLnF1b3RlcmlnaHQ9Mjc4O2UucGFyZW5sZWZ0PTMzMztlLnBhcmVucmlnaHQ9MzMzO2UuYXN0ZXJpc2s9Mzg5O2UucGx1cz01ODQ7ZS5jb21tYT0yNzg7ZS5oeXBoZW49MzMzO2UucGVyaW9kPTI3ODtlLnNsYXNoPTI3ODtlLnplcm89NTU2O2Uub25lPTU1NjtlLnR3bz01NTY7ZS50aHJlZT01NTY7ZS5mb3VyPTU1NjtlLmZpdmU9NTU2O2Uuc2l4PTU1NjtlLnNldmVuPTU1NjtlLmVpZ2h0PTU1NjtlLm5pbmU9NTU2O2UuY29sb249MzMzO2Uuc2VtaWNvbG9uPTMzMztlLmxlc3M9NTg0O2UuZXF1YWw9NTg0O2UuZ3JlYXRlcj01ODQ7ZS5xdWVzdGlvbj02MTE7ZS5hdD05NzU7ZS5BPTcyMjtlLkI9NzIyO2UuQz03MjI7ZS5EPTcyMjtlLkU9NjY3O2UuRj02MTE7ZS5HPTc3ODtlLkg9NzIyO2UuST0yNzg7ZS5KPTU1NjtlLks9NzIyO2UuTD02MTE7ZS5NPTgzMztlLk49NzIyO2UuTz03Nzg7ZS5QPTY2NztlLlE9Nzc4O2UuUj03MjI7ZS5TPTY2NztlLlQ9NjExO2UuVT03MjI7ZS5WPTY2NztlLlc9OTQ0O2UuWD02Njc7ZS5ZPTY2NztlLlo9NjExO2UuYnJhY2tldGxlZnQ9MzMzO2UuYmFja3NsYXNoPTI3ODtlLmJyYWNrZXRyaWdodD0zMzM7ZS5hc2NpaWNpcmN1bT01ODQ7ZS51bmRlcnNjb3JlPTU1NjtlLnF1b3RlbGVmdD0yNzg7ZS5hPTU1NjtlLmI9NjExO2UuYz01NTY7ZS5kPTYxMTtlLmU9NTU2O2UuZj0zMzM7ZS5nPTYxMTtlLmg9NjExO2UuaT0yNzg7ZS5qPTI3ODtlLms9NTU2O2UubD0yNzg7ZS5tPTg4OTtlLm49NjExO2Uubz02MTE7ZS5wPTYxMTtlLnE9NjExO2Uucj0zODk7ZS5zPTU1NjtlLnQ9MzMzO2UudT02MTE7ZS52PTU1NjtlLnc9Nzc4O2UueD01NTY7ZS55PTU1NjtlLno9NTAwO2UuYnJhY2VsZWZ0PTM4OTtlLmJhcj0yODA7ZS5icmFjZXJpZ2h0PTM4OTtlLmFzY2lpdGlsZGU9NTg0O2UuZXhjbGFtZG93bj0zMzM7ZS5jZW50PTU1NjtlLnN0ZXJsaW5nPTU1NjtlLmZyYWN0aW9uPTE2NztlLnllbj01NTY7ZS5mbG9yaW49NTU2O2Uuc2VjdGlvbj01NTY7ZS5jdXJyZW5jeT01NTY7ZS5xdW90ZXNpbmdsZT0yMzg7ZS5xdW90ZWRibGxlZnQ9NTAwO2UuZ3VpbGxlbW90bGVmdD01NTY7ZS5ndWlsc2luZ2xsZWZ0PTMzMztlLmd1aWxzaW5nbHJpZ2h0PTMzMztlLmZpPTYxMTtlLmZsPTYxMTtlLmVuZGFzaD01NTY7ZS5kYWdnZXI9NTU2O2UuZGFnZ2VyZGJsPTU1NjtlLnBlcmlvZGNlbnRlcmVkPTI3ODtlLnBhcmFncmFwaD01NTY7ZS5idWxsZXQ9MzUwO2UucXVvdGVzaW5nbGJhc2U9Mjc4O2UucXVvdGVkYmxiYXNlPTUwMDtlLnF1b3RlZGJscmlnaHQ9NTAwO2UuZ3VpbGxlbW90cmlnaHQ9NTU2O2UuZWxsaXBzaXM9MWUzO2UucGVydGhvdXNhbmQ9MWUzO2UucXVlc3Rpb25kb3duPTYxMTtlLmdyYXZlPTMzMztlLmFjdXRlPTMzMztlLmNpcmN1bWZsZXg9MzMzO2UudGlsZGU9MzMzO2UubWFjcm9uPTMzMztlLmJyZXZlPTMzMztlLmRvdGFjY2VudD0zMzM7ZS5kaWVyZXNpcz0zMzM7ZS5yaW5nPTMzMztlLmNlZGlsbGE9MzMzO2UuaHVuZ2FydW1sYXV0PTMzMztlLm9nb25laz0zMzM7ZS5jYXJvbj0zMzM7ZS5lbWRhc2g9MWUzO2UuQUU9MWUzO2Uub3JkZmVtaW5pbmU9MzcwO2UuTHNsYXNoPTYxMTtlLk9zbGFzaD03Nzg7ZS5PRT0xZTM7ZS5vcmRtYXNjdWxpbmU9MzY1O2UuYWU9ODg5O2UuZG90bGVzc2k9Mjc4O2UubHNsYXNoPTI3ODtlLm9zbGFzaD02MTE7ZS5vZT05NDQ7ZS5nZXJtYW5kYmxzPTYxMTtlLklkaWVyZXNpcz0yNzg7ZS5lYWN1dGU9NTU2O2UuYWJyZXZlPTU1NjtlLnVodW5nYXJ1bWxhdXQ9NjExO2UuZWNhcm9uPTU1NjtlLllkaWVyZXNpcz02Njc7ZS5kaXZpZGU9NTg0O2UuWWFjdXRlPTY2NztlLkFjaXJjdW1mbGV4PTcyMjtlLmFhY3V0ZT01NTY7ZS5VY2lyY3VtZmxleD03MjI7ZS55YWN1dGU9NTU2O2Uuc2NvbW1hYWNjZW50PTU1NjtlLmVjaXJjdW1mbGV4PTU1NjtlLlVyaW5nPTcyMjtlLlVkaWVyZXNpcz03MjI7ZS5hb2dvbmVrPTU1NjtlLlVhY3V0ZT03MjI7ZS51b2dvbmVrPTYxMTtlLkVkaWVyZXNpcz02Njc7ZS5EY3JvYXQ9NzIyO2UuY29tbWFhY2NlbnQ9MjUwO2UuY29weXJpZ2h0PTczNztlLkVtYWNyb249NjY3O2UuY2Nhcm9uPTU1NjtlLmFyaW5nPTU1NjtlLk5jb21tYWFjY2VudD03MjI7ZS5sYWN1dGU9Mjc4O2UuYWdyYXZlPTU1NjtlLlRjb21tYWFjY2VudD02MTE7ZS5DYWN1dGU9NzIyO2UuYXRpbGRlPTU1NjtlLkVkb3RhY2NlbnQ9NjY3O2Uuc2Nhcm9uPTU1NjtlLnNjZWRpbGxhPTU1NjtlLmlhY3V0ZT0yNzg7ZS5sb3plbmdlPTQ5NDtlLlJjYXJvbj03MjI7ZS5HY29tbWFhY2NlbnQ9Nzc4O2UudWNpcmN1bWZsZXg9NjExO2UuYWNpcmN1bWZsZXg9NTU2O2UuQW1hY3Jvbj03MjI7ZS5yY2Fyb249Mzg5O2UuY2NlZGlsbGE9NTU2O2UuWmRvdGFjY2VudD02MTE7ZS5UaG9ybj02Njc7ZS5PbWFjcm9uPTc3ODtlLlJhY3V0ZT03MjI7ZS5TYWN1dGU9NjY3O2UuZGNhcm9uPTc0MztlLlVtYWNyb249NzIyO2UudXJpbmc9NjExO2UudGhyZWVzdXBlcmlvcj0zMzM7ZS5PZ3JhdmU9Nzc4O2UuQWdyYXZlPTcyMjtlLkFicmV2ZT03MjI7ZS5tdWx0aXBseT01ODQ7ZS51YWN1dGU9NjExO2UuVGNhcm9uPTYxMTtlLnBhcnRpYWxkaWZmPTQ5NDtlLnlkaWVyZXNpcz01NTY7ZS5OYWN1dGU9NzIyO2UuaWNpcmN1bWZsZXg9Mjc4O2UuRWNpcmN1bWZsZXg9NjY3O2UuYWRpZXJlc2lzPTU1NjtlLmVkaWVyZXNpcz01NTY7ZS5jYWN1dGU9NTU2O2UubmFjdXRlPTYxMTtlLnVtYWNyb249NjExO2UuTmNhcm9uPTcyMjtlLklhY3V0ZT0yNzg7ZS5wbHVzbWludXM9NTg0O2UuYnJva2VuYmFyPTI4MDtlLnJlZ2lzdGVyZWQ9NzM3O2UuR2JyZXZlPTc3ODtlLklkb3RhY2NlbnQ9Mjc4O2Uuc3VtbWF0aW9uPTYwMDtlLkVncmF2ZT02Njc7ZS5yYWN1dGU9Mzg5O2Uub21hY3Jvbj02MTE7ZS5aYWN1dGU9NjExO2UuWmNhcm9uPTYxMTtlLmdyZWF0ZXJlcXVhbD01NDk7ZS5FdGg9NzIyO2UuQ2NlZGlsbGE9NzIyO2UubGNvbW1hYWNjZW50PTI3ODtlLnRjYXJvbj0zODk7ZS5lb2dvbmVrPTU1NjtlLlVvZ29uZWs9NzIyO2UuQWFjdXRlPTcyMjtlLkFkaWVyZXNpcz03MjI7ZS5lZ3JhdmU9NTU2O2UuemFjdXRlPTUwMDtlLmlvZ29uZWs9Mjc4O2UuT2FjdXRlPTc3ODtlLm9hY3V0ZT02MTE7ZS5hbWFjcm9uPTU1NjtlLnNhY3V0ZT01NTY7ZS5pZGllcmVzaXM9Mjc4O2UuT2NpcmN1bWZsZXg9Nzc4O2UuVWdyYXZlPTcyMjtlLkRlbHRhPTYxMjtlLnRob3JuPTYxMTtlLnR3b3N1cGVyaW9yPTMzMztlLk9kaWVyZXNpcz03Nzg7ZS5tdT02MTE7ZS5pZ3JhdmU9Mjc4O2Uub2h1bmdhcnVtbGF1dD02MTE7ZS5Fb2dvbmVrPTY2NztlLmRjcm9hdD02MTE7ZS50aHJlZXF1YXJ0ZXJzPTgzNDtlLlNjZWRpbGxhPTY2NztlLmxjYXJvbj00MDA7ZS5LY29tbWFhY2NlbnQ9NzIyO2UuTGFjdXRlPTYxMTtlLnRyYWRlbWFyaz0xZTM7ZS5lZG90YWNjZW50PTU1NjtlLklncmF2ZT0yNzg7ZS5JbWFjcm9uPTI3ODtlLkxjYXJvbj02MTE7ZS5vbmVoYWxmPTgzNDtlLmxlc3NlcXVhbD01NDk7ZS5vY2lyY3VtZmxleD02MTE7ZS5udGlsZGU9NjExO2UuVWh1bmdhcnVtbGF1dD03MjI7ZS5FYWN1dGU9NjY3O2UuZW1hY3Jvbj01NTY7ZS5nYnJldmU9NjExO2Uub25lcXVhcnRlcj04MzQ7ZS5TY2Fyb249NjY3O2UuU2NvbW1hYWNjZW50PTY2NztlLk9odW5nYXJ1bWxhdXQ9Nzc4O2UuZGVncmVlPTQwMDtlLm9ncmF2ZT02MTE7ZS5DY2Fyb249NzIyO2UudWdyYXZlPTYxMTtlLnJhZGljYWw9NTQ5O2UuRGNhcm9uPTcyMjtlLnJjb21tYWFjY2VudD0zODk7ZS5OdGlsZGU9NzIyO2Uub3RpbGRlPTYxMTtlLlJjb21tYWFjY2VudD03MjI7ZS5MY29tbWFhY2NlbnQ9NjExO2UuQXRpbGRlPTcyMjtlLkFvZ29uZWs9NzIyO2UuQXJpbmc9NzIyO2UuT3RpbGRlPTc3ODtlLnpkb3RhY2NlbnQ9NTAwO2UuRWNhcm9uPTY2NztlLklvZ29uZWs9Mjc4O2Uua2NvbW1hYWNjZW50PTU1NjtlLm1pbnVzPTU4NDtlLkljaXJjdW1mbGV4PTI3ODtlLm5jYXJvbj02MTE7ZS50Y29tbWFhY2NlbnQ9MzMzO2UubG9naWNhbG5vdD01ODQ7ZS5vZGllcmVzaXM9NjExO2UudWRpZXJlc2lzPTYxMTtlLm5vdGVxdWFsPTU0OTtlLmdjb21tYWFjY2VudD02MTE7ZS5ldGg9NjExO2UuemNhcm9uPTUwMDtlLm5jb21tYWFjY2VudD02MTE7ZS5vbmVzdXBlcmlvcj0zMzM7ZS5pbWFjcm9uPTI3ODtlLkV1cm89NTU2fSkpO2VbIkhlbHZldGljYS1PYmxpcXVlIl09Z2V0TG9va3VwVGFibGVGYWN0b3J5KChmdW5jdGlvbihlKXtlLnNwYWNlPTI3ODtlLmV4Y2xhbT0yNzg7ZS5xdW90ZWRibD0zNTU7ZS5udW1iZXJzaWduPTU1NjtlLmRvbGxhcj01NTY7ZS5wZXJjZW50PTg4OTtlLmFtcGVyc2FuZD02Njc7ZS5xdW90ZXJpZ2h0PTIyMjtlLnBhcmVubGVmdD0zMzM7ZS5wYXJlbnJpZ2h0PTMzMztlLmFzdGVyaXNrPTM4OTtlLnBsdXM9NTg0O2UuY29tbWE9Mjc4O2UuaHlwaGVuPTMzMztlLnBlcmlvZD0yNzg7ZS5zbGFzaD0yNzg7ZS56ZXJvPTU1NjtlLm9uZT01NTY7ZS50d289NTU2O2UudGhyZWU9NTU2O2UuZm91cj01NTY7ZS5maXZlPTU1NjtlLnNpeD01NTY7ZS5zZXZlbj01NTY7ZS5laWdodD01NTY7ZS5uaW5lPTU1NjtlLmNvbG9uPTI3ODtlLnNlbWljb2xvbj0yNzg7ZS5sZXNzPTU4NDtlLmVxdWFsPTU4NDtlLmdyZWF0ZXI9NTg0O2UucXVlc3Rpb249NTU2O2UuYXQ9MTAxNTtlLkE9NjY3O2UuQj02Njc7ZS5DPTcyMjtlLkQ9NzIyO2UuRT02Njc7ZS5GPTYxMTtlLkc9Nzc4O2UuSD03MjI7ZS5JPTI3ODtlLko9NTAwO2UuSz02Njc7ZS5MPTU1NjtlLk09ODMzO2UuTj03MjI7ZS5PPTc3ODtlLlA9NjY3O2UuUT03Nzg7ZS5SPTcyMjtlLlM9NjY3O2UuVD02MTE7ZS5VPTcyMjtlLlY9NjY3O2UuVz05NDQ7ZS5YPTY2NztlLlk9NjY3O2UuWj02MTE7ZS5icmFja2V0bGVmdD0yNzg7ZS5iYWNrc2xhc2g9Mjc4O2UuYnJhY2tldHJpZ2h0PTI3ODtlLmFzY2lpY2lyY3VtPTQ2OTtlLnVuZGVyc2NvcmU9NTU2O2UucXVvdGVsZWZ0PTIyMjtlLmE9NTU2O2UuYj01NTY7ZS5jPTUwMDtlLmQ9NTU2O2UuZT01NTY7ZS5mPTI3ODtlLmc9NTU2O2UuaD01NTY7ZS5pPTIyMjtlLmo9MjIyO2Uuaz01MDA7ZS5sPTIyMjtlLm09ODMzO2Uubj01NTY7ZS5vPTU1NjtlLnA9NTU2O2UucT01NTY7ZS5yPTMzMztlLnM9NTAwO2UudD0yNzg7ZS51PTU1NjtlLnY9NTAwO2Uudz03MjI7ZS54PTUwMDtlLnk9NTAwO2Uuej01MDA7ZS5icmFjZWxlZnQ9MzM0O2UuYmFyPTI2MDtlLmJyYWNlcmlnaHQ9MzM0O2UuYXNjaWl0aWxkZT01ODQ7ZS5leGNsYW1kb3duPTMzMztlLmNlbnQ9NTU2O2Uuc3Rlcmxpbmc9NTU2O2UuZnJhY3Rpb249MTY3O2UueWVuPTU1NjtlLmZsb3Jpbj01NTY7ZS5zZWN0aW9uPTU1NjtlLmN1cnJlbmN5PTU1NjtlLnF1b3Rlc2luZ2xlPTE5MTtlLnF1b3RlZGJsbGVmdD0zMzM7ZS5ndWlsbGVtb3RsZWZ0PTU1NjtlLmd1aWxzaW5nbGxlZnQ9MzMzO2UuZ3VpbHNpbmdscmlnaHQ9MzMzO2UuZmk9NTAwO2UuZmw9NTAwO2UuZW5kYXNoPTU1NjtlLmRhZ2dlcj01NTY7ZS5kYWdnZXJkYmw9NTU2O2UucGVyaW9kY2VudGVyZWQ9Mjc4O2UucGFyYWdyYXBoPTUzNztlLmJ1bGxldD0zNTA7ZS5xdW90ZXNpbmdsYmFzZT0yMjI7ZS5xdW90ZWRibGJhc2U9MzMzO2UucXVvdGVkYmxyaWdodD0zMzM7ZS5ndWlsbGVtb3RyaWdodD01NTY7ZS5lbGxpcHNpcz0xZTM7ZS5wZXJ0aG91c2FuZD0xZTM7ZS5xdWVzdGlvbmRvd249NjExO2UuZ3JhdmU9MzMzO2UuYWN1dGU9MzMzO2UuY2lyY3VtZmxleD0zMzM7ZS50aWxkZT0zMzM7ZS5tYWNyb249MzMzO2UuYnJldmU9MzMzO2UuZG90YWNjZW50PTMzMztlLmRpZXJlc2lzPTMzMztlLnJpbmc9MzMzO2UuY2VkaWxsYT0zMzM7ZS5odW5nYXJ1bWxhdXQ9MzMzO2Uub2dvbmVrPTMzMztlLmNhcm9uPTMzMztlLmVtZGFzaD0xZTM7ZS5BRT0xZTM7ZS5vcmRmZW1pbmluZT0zNzA7ZS5Mc2xhc2g9NTU2O2UuT3NsYXNoPTc3ODtlLk9FPTFlMztlLm9yZG1hc2N1bGluZT0zNjU7ZS5hZT04ODk7ZS5kb3RsZXNzaT0yNzg7ZS5sc2xhc2g9MjIyO2Uub3NsYXNoPTYxMTtlLm9lPTk0NDtlLmdlcm1hbmRibHM9NjExO2UuSWRpZXJlc2lzPTI3ODtlLmVhY3V0ZT01NTY7ZS5hYnJldmU9NTU2O2UudWh1bmdhcnVtbGF1dD01NTY7ZS5lY2Fyb249NTU2O2UuWWRpZXJlc2lzPTY2NztlLmRpdmlkZT01ODQ7ZS5ZYWN1dGU9NjY3O2UuQWNpcmN1bWZsZXg9NjY3O2UuYWFjdXRlPTU1NjtlLlVjaXJjdW1mbGV4PTcyMjtlLnlhY3V0ZT01MDA7ZS5zY29tbWFhY2NlbnQ9NTAwO2UuZWNpcmN1bWZsZXg9NTU2O2UuVXJpbmc9NzIyO2UuVWRpZXJlc2lzPTcyMjtlLmFvZ29uZWs9NTU2O2UuVWFjdXRlPTcyMjtlLnVvZ29uZWs9NTU2O2UuRWRpZXJlc2lzPTY2NztlLkRjcm9hdD03MjI7ZS5jb21tYWFjY2VudD0yNTA7ZS5jb3B5cmlnaHQ9NzM3O2UuRW1hY3Jvbj02Njc7ZS5jY2Fyb249NTAwO2UuYXJpbmc9NTU2O2UuTmNvbW1hYWNjZW50PTcyMjtlLmxhY3V0ZT0yMjI7ZS5hZ3JhdmU9NTU2O2UuVGNvbW1hYWNjZW50PTYxMTtlLkNhY3V0ZT03MjI7ZS5hdGlsZGU9NTU2O2UuRWRvdGFjY2VudD02Njc7ZS5zY2Fyb249NTAwO2Uuc2NlZGlsbGE9NTAwO2UuaWFjdXRlPTI3ODtlLmxvemVuZ2U9NDcxO2UuUmNhcm9uPTcyMjtlLkdjb21tYWFjY2VudD03Nzg7ZS51Y2lyY3VtZmxleD01NTY7ZS5hY2lyY3VtZmxleD01NTY7ZS5BbWFjcm9uPTY2NztlLnJjYXJvbj0zMzM7ZS5jY2VkaWxsYT01MDA7ZS5aZG90YWNjZW50PTYxMTtlLlRob3JuPTY2NztlLk9tYWNyb249Nzc4O2UuUmFjdXRlPTcyMjtlLlNhY3V0ZT02Njc7ZS5kY2Fyb249NjQzO2UuVW1hY3Jvbj03MjI7ZS51cmluZz01NTY7ZS50aHJlZXN1cGVyaW9yPTMzMztlLk9ncmF2ZT03Nzg7ZS5BZ3JhdmU9NjY3O2UuQWJyZXZlPTY2NztlLm11bHRpcGx5PTU4NDtlLnVhY3V0ZT01NTY7ZS5UY2Fyb249NjExO2UucGFydGlhbGRpZmY9NDc2O2UueWRpZXJlc2lzPTUwMDtlLk5hY3V0ZT03MjI7ZS5pY2lyY3VtZmxleD0yNzg7ZS5FY2lyY3VtZmxleD02Njc7ZS5hZGllcmVzaXM9NTU2O2UuZWRpZXJlc2lzPTU1NjtlLmNhY3V0ZT01MDA7ZS5uYWN1dGU9NTU2O2UudW1hY3Jvbj01NTY7ZS5OY2Fyb249NzIyO2UuSWFjdXRlPTI3ODtlLnBsdXNtaW51cz01ODQ7ZS5icm9rZW5iYXI9MjYwO2UucmVnaXN0ZXJlZD03Mzc7ZS5HYnJldmU9Nzc4O2UuSWRvdGFjY2VudD0yNzg7ZS5zdW1tYXRpb249NjAwO2UuRWdyYXZlPTY2NztlLnJhY3V0ZT0zMzM7ZS5vbWFjcm9uPTU1NjtlLlphY3V0ZT02MTE7ZS5aY2Fyb249NjExO2UuZ3JlYXRlcmVxdWFsPTU0OTtlLkV0aD03MjI7ZS5DY2VkaWxsYT03MjI7ZS5sY29tbWFhY2NlbnQ9MjIyO2UudGNhcm9uPTMxNztlLmVvZ29uZWs9NTU2O2UuVW9nb25laz03MjI7ZS5BYWN1dGU9NjY3O2UuQWRpZXJlc2lzPTY2NztlLmVncmF2ZT01NTY7ZS56YWN1dGU9NTAwO2UuaW9nb25laz0yMjI7ZS5PYWN1dGU9Nzc4O2Uub2FjdXRlPTU1NjtlLmFtYWNyb249NTU2O2Uuc2FjdXRlPTUwMDtlLmlkaWVyZXNpcz0yNzg7ZS5PY2lyY3VtZmxleD03Nzg7ZS5VZ3JhdmU9NzIyO2UuRGVsdGE9NjEyO2UudGhvcm49NTU2O2UudHdvc3VwZXJpb3I9MzMzO2UuT2RpZXJlc2lzPTc3ODtlLm11PTU1NjtlLmlncmF2ZT0yNzg7ZS5vaHVuZ2FydW1sYXV0PTU1NjtlLkVvZ29uZWs9NjY3O2UuZGNyb2F0PTU1NjtlLnRocmVlcXVhcnRlcnM9ODM0O2UuU2NlZGlsbGE9NjY3O2UubGNhcm9uPTI5OTtlLktjb21tYWFjY2VudD02Njc7ZS5MYWN1dGU9NTU2O2UudHJhZGVtYXJrPTFlMztlLmVkb3RhY2NlbnQ9NTU2O2UuSWdyYXZlPTI3ODtlLkltYWNyb249Mjc4O2UuTGNhcm9uPTU1NjtlLm9uZWhhbGY9ODM0O2UubGVzc2VxdWFsPTU0OTtlLm9jaXJjdW1mbGV4PTU1NjtlLm50aWxkZT01NTY7ZS5VaHVuZ2FydW1sYXV0PTcyMjtlLkVhY3V0ZT02Njc7ZS5lbWFjcm9uPTU1NjtlLmdicmV2ZT01NTY7ZS5vbmVxdWFydGVyPTgzNDtlLlNjYXJvbj02Njc7ZS5TY29tbWFhY2NlbnQ9NjY3O2UuT2h1bmdhcnVtbGF1dD03Nzg7ZS5kZWdyZWU9NDAwO2Uub2dyYXZlPTU1NjtlLkNjYXJvbj03MjI7ZS51Z3JhdmU9NTU2O2UucmFkaWNhbD00NTM7ZS5EY2Fyb249NzIyO2UucmNvbW1hYWNjZW50PTMzMztlLk50aWxkZT03MjI7ZS5vdGlsZGU9NTU2O2UuUmNvbW1hYWNjZW50PTcyMjtlLkxjb21tYWFjY2VudD01NTY7ZS5BdGlsZGU9NjY3O2UuQW9nb25laz02Njc7ZS5BcmluZz02Njc7ZS5PdGlsZGU9Nzc4O2UuemRvdGFjY2VudD01MDA7ZS5FY2Fyb249NjY3O2UuSW9nb25laz0yNzg7ZS5rY29tbWFhY2NlbnQ9NTAwO2UubWludXM9NTg0O2UuSWNpcmN1bWZsZXg9Mjc4O2UubmNhcm9uPTU1NjtlLnRjb21tYWFjY2VudD0yNzg7ZS5sb2dpY2Fsbm90PTU4NDtlLm9kaWVyZXNpcz01NTY7ZS51ZGllcmVzaXM9NTU2O2Uubm90ZXF1YWw9NTQ5O2UuZ2NvbW1hYWNjZW50PTU1NjtlLmV0aD01NTY7ZS56Y2Fyb249NTAwO2UubmNvbW1hYWNjZW50PTU1NjtlLm9uZXN1cGVyaW9yPTMzMztlLmltYWNyb249Mjc4O2UuRXVybz01NTZ9KSk7ZS5TeW1ib2w9Z2V0TG9va3VwVGFibGVGYWN0b3J5KChmdW5jdGlvbihlKXtlLnNwYWNlPTI1MDtlLmV4Y2xhbT0zMzM7ZS51bml2ZXJzYWw9NzEzO2UubnVtYmVyc2lnbj01MDA7ZS5leGlzdGVudGlhbD01NDk7ZS5wZXJjZW50PTgzMztlLmFtcGVyc2FuZD03Nzg7ZS5zdWNodGhhdD00Mzk7ZS5wYXJlbmxlZnQ9MzMzO2UucGFyZW5yaWdodD0zMzM7ZS5hc3Rlcmlza21hdGg9NTAwO2UucGx1cz01NDk7ZS5jb21tYT0yNTA7ZS5taW51cz01NDk7ZS5wZXJpb2Q9MjUwO2Uuc2xhc2g9Mjc4O2UuemVybz01MDA7ZS5vbmU9NTAwO2UudHdvPTUwMDtlLnRocmVlPTUwMDtlLmZvdXI9NTAwO2UuZml2ZT01MDA7ZS5zaXg9NTAwO2Uuc2V2ZW49NTAwO2UuZWlnaHQ9NTAwO2UubmluZT01MDA7ZS5jb2xvbj0yNzg7ZS5zZW1pY29sb249Mjc4O2UubGVzcz01NDk7ZS5lcXVhbD01NDk7ZS5ncmVhdGVyPTU0OTtlLnF1ZXN0aW9uPTQ0NDtlLmNvbmdydWVudD01NDk7ZS5BbHBoYT03MjI7ZS5CZXRhPTY2NztlLkNoaT03MjI7ZS5EZWx0YT02MTI7ZS5FcHNpbG9uPTYxMTtlLlBoaT03NjM7ZS5HYW1tYT02MDM7ZS5FdGE9NzIyO2UuSW90YT0zMzM7ZS50aGV0YTE9NjMxO2UuS2FwcGE9NzIyO2UuTGFtYmRhPTY4NjtlLk11PTg4OTtlLk51PTcyMjtlLk9taWNyb249NzIyO2UuUGk9NzY4O2UuVGhldGE9NzQxO2UuUmhvPTU1NjtlLlNpZ21hPTU5MjtlLlRhdT02MTE7ZS5VcHNpbG9uPTY5MDtlLnNpZ21hMT00Mzk7ZS5PbWVnYT03Njg7ZS5YaT02NDU7ZS5Qc2k9Nzk1O2UuWmV0YT02MTE7ZS5icmFja2V0bGVmdD0zMzM7ZS50aGVyZWZvcmU9ODYzO2UuYnJhY2tldHJpZ2h0PTMzMztlLnBlcnBlbmRpY3VsYXI9NjU4O2UudW5kZXJzY29yZT01MDA7ZS5yYWRpY2FsZXg9NTAwO2UuYWxwaGE9NjMxO2UuYmV0YT01NDk7ZS5jaGk9NTQ5O2UuZGVsdGE9NDk0O2UuZXBzaWxvbj00Mzk7ZS5waGk9NTIxO2UuZ2FtbWE9NDExO2UuZXRhPTYwMztlLmlvdGE9MzI5O2UucGhpMT02MDM7ZS5rYXBwYT01NDk7ZS5sYW1iZGE9NTQ5O2UubXU9NTc2O2UubnU9NTIxO2Uub21pY3Jvbj01NDk7ZS5waT01NDk7ZS50aGV0YT01MjE7ZS5yaG89NTQ5O2Uuc2lnbWE9NjAzO2UudGF1PTQzOTtlLnVwc2lsb249NTc2O2Uub21lZ2ExPTcxMztlLm9tZWdhPTY4NjtlLnhpPTQ5MztlLnBzaT02ODY7ZS56ZXRhPTQ5NDtlLmJyYWNlbGVmdD00ODA7ZS5iYXI9MjAwO2UuYnJhY2VyaWdodD00ODA7ZS5zaW1pbGFyPTU0OTtlLkV1cm89NzUwO2UuVXBzaWxvbjE9NjIwO2UubWludXRlPTI0NztlLmxlc3NlcXVhbD01NDk7ZS5mcmFjdGlvbj0xNjc7ZS5pbmZpbml0eT03MTM7ZS5mbG9yaW49NTAwO2UuY2x1Yj03NTM7ZS5kaWFtb25kPTc1MztlLmhlYXJ0PTc1MztlLnNwYWRlPTc1MztlLmFycm93Ym90aD0xMDQyO2UuYXJyb3dsZWZ0PTk4NztlLmFycm93dXA9NjAzO2UuYXJyb3dyaWdodD05ODc7ZS5hcnJvd2Rvd249NjAzO2UuZGVncmVlPTQwMDtlLnBsdXNtaW51cz01NDk7ZS5zZWNvbmQ9NDExO2UuZ3JlYXRlcmVxdWFsPTU0OTtlLm11bHRpcGx5PTU0OTtlLnByb3BvcnRpb25hbD03MTM7ZS5wYXJ0aWFsZGlmZj00OTQ7ZS5idWxsZXQ9NDYwO2UuZGl2aWRlPTU0OTtlLm5vdGVxdWFsPTU0OTtlLmVxdWl2YWxlbmNlPTU0OTtlLmFwcHJveGVxdWFsPTU0OTtlLmVsbGlwc2lzPTFlMztlLmFycm93dmVydGV4PTYwMztlLmFycm93aG9yaXpleD0xZTM7ZS5jYXJyaWFnZXJldHVybj02NTg7ZS5hbGVwaD04MjM7ZS5JZnJha3R1cj02ODY7ZS5SZnJha3R1cj03OTU7ZS53ZWllcnN0cmFzcz05ODc7ZS5jaXJjbGVtdWx0aXBseT03Njg7ZS5jaXJjbGVwbHVzPTc2ODtlLmVtcHR5c2V0PTgyMztlLmludGVyc2VjdGlvbj03Njg7ZS51bmlvbj03Njg7ZS5wcm9wZXJzdXBlcnNldD03MTM7ZS5yZWZsZXhzdXBlcnNldD03MTM7ZS5ub3RzdWJzZXQ9NzEzO2UucHJvcGVyc3Vic2V0PTcxMztlLnJlZmxleHN1YnNldD03MTM7ZS5lbGVtZW50PTcxMztlLm5vdGVsZW1lbnQ9NzEzO2UuYW5nbGU9NzY4O2UuZ3JhZGllbnQ9NzEzO2UucmVnaXN0ZXJzZXJpZj03OTA7ZS5jb3B5cmlnaHRzZXJpZj03OTA7ZS50cmFkZW1hcmtzZXJpZj04OTA7ZS5wcm9kdWN0PTgyMztlLnJhZGljYWw9NTQ5O2UuZG90bWF0aD0yNTA7ZS5sb2dpY2Fsbm90PTcxMztlLmxvZ2ljYWxhbmQ9NjAzO2UubG9naWNhbG9yPTYwMztlLmFycm93ZGJsYm90aD0xMDQyO2UuYXJyb3dkYmxsZWZ0PTk4NztlLmFycm93ZGJsdXA9NjAzO2UuYXJyb3dkYmxyaWdodD05ODc7ZS5hcnJvd2RibGRvd249NjAzO2UubG96ZW5nZT00OTQ7ZS5hbmdsZWxlZnQ9MzI5O2UucmVnaXN0ZXJzYW5zPTc5MDtlLmNvcHlyaWdodHNhbnM9NzkwO2UudHJhZGVtYXJrc2Fucz03ODY7ZS5zdW1tYXRpb249NzEzO2UucGFyZW5sZWZ0dHA9Mzg0O2UucGFyZW5sZWZ0ZXg9Mzg0O2UucGFyZW5sZWZ0YnQ9Mzg0O2UuYnJhY2tldGxlZnR0cD0zODQ7ZS5icmFja2V0bGVmdGV4PTM4NDtlLmJyYWNrZXRsZWZ0YnQ9Mzg0O2UuYnJhY2VsZWZ0dHA9NDk0O2UuYnJhY2VsZWZ0bWlkPTQ5NDtlLmJyYWNlbGVmdGJ0PTQ5NDtlLmJyYWNlZXg9NDk0O2UuYW5nbGVyaWdodD0zMjk7ZS5pbnRlZ3JhbD0yNzQ7ZS5pbnRlZ3JhbHRwPTY4NjtlLmludGVncmFsZXg9Njg2O2UuaW50ZWdyYWxidD02ODY7ZS5wYXJlbnJpZ2h0dHA9Mzg0O2UucGFyZW5yaWdodGV4PTM4NDtlLnBhcmVucmlnaHRidD0zODQ7ZS5icmFja2V0cmlnaHR0cD0zODQ7ZS5icmFja2V0cmlnaHRleD0zODQ7ZS5icmFja2V0cmlnaHRidD0zODQ7ZS5icmFjZXJpZ2h0dHA9NDk0O2UuYnJhY2VyaWdodG1pZD00OTQ7ZS5icmFjZXJpZ2h0YnQ9NDk0O2UuYXBwbGU9NzkwfSkpO2VbIlRpbWVzLVJvbWFuIl09Z2V0TG9va3VwVGFibGVGYWN0b3J5KChmdW5jdGlvbihlKXtlLnNwYWNlPTI1MDtlLmV4Y2xhbT0zMzM7ZS5xdW90ZWRibD00MDg7ZS5udW1iZXJzaWduPTUwMDtlLmRvbGxhcj01MDA7ZS5wZXJjZW50PTgzMztlLmFtcGVyc2FuZD03Nzg7ZS5xdW90ZXJpZ2h0PTMzMztlLnBhcmVubGVmdD0zMzM7ZS5wYXJlbnJpZ2h0PTMzMztlLmFzdGVyaXNrPTUwMDtlLnBsdXM9NTY0O2UuY29tbWE9MjUwO2UuaHlwaGVuPTMzMztlLnBlcmlvZD0yNTA7ZS5zbGFzaD0yNzg7ZS56ZXJvPTUwMDtlLm9uZT01MDA7ZS50d289NTAwO2UudGhyZWU9NTAwO2UuZm91cj01MDA7ZS5maXZlPTUwMDtlLnNpeD01MDA7ZS5zZXZlbj01MDA7ZS5laWdodD01MDA7ZS5uaW5lPTUwMDtlLmNvbG9uPTI3ODtlLnNlbWljb2xvbj0yNzg7ZS5sZXNzPTU2NDtlLmVxdWFsPTU2NDtlLmdyZWF0ZXI9NTY0O2UucXVlc3Rpb249NDQ0O2UuYXQ9OTIxO2UuQT03MjI7ZS5CPTY2NztlLkM9NjY3O2UuRD03MjI7ZS5FPTYxMTtlLkY9NTU2O2UuRz03MjI7ZS5IPTcyMjtlLkk9MzMzO2UuSj0zODk7ZS5LPTcyMjtlLkw9NjExO2UuTT04ODk7ZS5OPTcyMjtlLk89NzIyO2UuUD01NTY7ZS5RPTcyMjtlLlI9NjY3O2UuUz01NTY7ZS5UPTYxMTtlLlU9NzIyO2UuVj03MjI7ZS5XPTk0NDtlLlg9NzIyO2UuWT03MjI7ZS5aPTYxMTtlLmJyYWNrZXRsZWZ0PTMzMztlLmJhY2tzbGFzaD0yNzg7ZS5icmFja2V0cmlnaHQ9MzMzO2UuYXNjaWljaXJjdW09NDY5O2UudW5kZXJzY29yZT01MDA7ZS5xdW90ZWxlZnQ9MzMzO2UuYT00NDQ7ZS5iPTUwMDtlLmM9NDQ0O2UuZD01MDA7ZS5lPTQ0NDtlLmY9MzMzO2UuZz01MDA7ZS5oPTUwMDtlLmk9Mjc4O2Uuaj0yNzg7ZS5rPTUwMDtlLmw9Mjc4O2UubT03Nzg7ZS5uPTUwMDtlLm89NTAwO2UucD01MDA7ZS5xPTUwMDtlLnI9MzMzO2Uucz0zODk7ZS50PTI3ODtlLnU9NTAwO2Uudj01MDA7ZS53PTcyMjtlLng9NTAwO2UueT01MDA7ZS56PTQ0NDtlLmJyYWNlbGVmdD00ODA7ZS5iYXI9MjAwO2UuYnJhY2VyaWdodD00ODA7ZS5hc2NpaXRpbGRlPTU0MTtlLmV4Y2xhbWRvd249MzMzO2UuY2VudD01MDA7ZS5zdGVybGluZz01MDA7ZS5mcmFjdGlvbj0xNjc7ZS55ZW49NTAwO2UuZmxvcmluPTUwMDtlLnNlY3Rpb249NTAwO2UuY3VycmVuY3k9NTAwO2UucXVvdGVzaW5nbGU9MTgwO2UucXVvdGVkYmxsZWZ0PTQ0NDtlLmd1aWxsZW1vdGxlZnQ9NTAwO2UuZ3VpbHNpbmdsbGVmdD0zMzM7ZS5ndWlsc2luZ2xyaWdodD0zMzM7ZS5maT01NTY7ZS5mbD01NTY7ZS5lbmRhc2g9NTAwO2UuZGFnZ2VyPTUwMDtlLmRhZ2dlcmRibD01MDA7ZS5wZXJpb2RjZW50ZXJlZD0yNTA7ZS5wYXJhZ3JhcGg9NDUzO2UuYnVsbGV0PTM1MDtlLnF1b3Rlc2luZ2xiYXNlPTMzMztlLnF1b3RlZGJsYmFzZT00NDQ7ZS5xdW90ZWRibHJpZ2h0PTQ0NDtlLmd1aWxsZW1vdHJpZ2h0PTUwMDtlLmVsbGlwc2lzPTFlMztlLnBlcnRob3VzYW5kPTFlMztlLnF1ZXN0aW9uZG93bj00NDQ7ZS5ncmF2ZT0zMzM7ZS5hY3V0ZT0zMzM7ZS5jaXJjdW1mbGV4PTMzMztlLnRpbGRlPTMzMztlLm1hY3Jvbj0zMzM7ZS5icmV2ZT0zMzM7ZS5kb3RhY2NlbnQ9MzMzO2UuZGllcmVzaXM9MzMzO2UucmluZz0zMzM7ZS5jZWRpbGxhPTMzMztlLmh1bmdhcnVtbGF1dD0zMzM7ZS5vZ29uZWs9MzMzO2UuY2Fyb249MzMzO2UuZW1kYXNoPTFlMztlLkFFPTg4OTtlLm9yZGZlbWluaW5lPTI3NjtlLkxzbGFzaD02MTE7ZS5Pc2xhc2g9NzIyO2UuT0U9ODg5O2Uub3JkbWFzY3VsaW5lPTMxMDtlLmFlPTY2NztlLmRvdGxlc3NpPTI3ODtlLmxzbGFzaD0yNzg7ZS5vc2xhc2g9NTAwO2Uub2U9NzIyO2UuZ2VybWFuZGJscz01MDA7ZS5JZGllcmVzaXM9MzMzO2UuZWFjdXRlPTQ0NDtlLmFicmV2ZT00NDQ7ZS51aHVuZ2FydW1sYXV0PTUwMDtlLmVjYXJvbj00NDQ7ZS5ZZGllcmVzaXM9NzIyO2UuZGl2aWRlPTU2NDtlLllhY3V0ZT03MjI7ZS5BY2lyY3VtZmxleD03MjI7ZS5hYWN1dGU9NDQ0O2UuVWNpcmN1bWZsZXg9NzIyO2UueWFjdXRlPTUwMDtlLnNjb21tYWFjY2VudD0zODk7ZS5lY2lyY3VtZmxleD00NDQ7ZS5VcmluZz03MjI7ZS5VZGllcmVzaXM9NzIyO2UuYW9nb25laz00NDQ7ZS5VYWN1dGU9NzIyO2UudW9nb25laz01MDA7ZS5FZGllcmVzaXM9NjExO2UuRGNyb2F0PTcyMjtlLmNvbW1hYWNjZW50PTI1MDtlLmNvcHlyaWdodD03NjA7ZS5FbWFjcm9uPTYxMTtlLmNjYXJvbj00NDQ7ZS5hcmluZz00NDQ7ZS5OY29tbWFhY2NlbnQ9NzIyO2UubGFjdXRlPTI3ODtlLmFncmF2ZT00NDQ7ZS5UY29tbWFhY2NlbnQ9NjExO2UuQ2FjdXRlPTY2NztlLmF0aWxkZT00NDQ7ZS5FZG90YWNjZW50PTYxMTtlLnNjYXJvbj0zODk7ZS5zY2VkaWxsYT0zODk7ZS5pYWN1dGU9Mjc4O2UubG96ZW5nZT00NzE7ZS5SY2Fyb249NjY3O2UuR2NvbW1hYWNjZW50PTcyMjtlLnVjaXJjdW1mbGV4PTUwMDtlLmFjaXJjdW1mbGV4PTQ0NDtlLkFtYWNyb249NzIyO2UucmNhcm9uPTMzMztlLmNjZWRpbGxhPTQ0NDtlLlpkb3RhY2NlbnQ9NjExO2UuVGhvcm49NTU2O2UuT21hY3Jvbj03MjI7ZS5SYWN1dGU9NjY3O2UuU2FjdXRlPTU1NjtlLmRjYXJvbj01ODg7ZS5VbWFjcm9uPTcyMjtlLnVyaW5nPTUwMDtlLnRocmVlc3VwZXJpb3I9MzAwO2UuT2dyYXZlPTcyMjtlLkFncmF2ZT03MjI7ZS5BYnJldmU9NzIyO2UubXVsdGlwbHk9NTY0O2UudWFjdXRlPTUwMDtlLlRjYXJvbj02MTE7ZS5wYXJ0aWFsZGlmZj00NzY7ZS55ZGllcmVzaXM9NTAwO2UuTmFjdXRlPTcyMjtlLmljaXJjdW1mbGV4PTI3ODtlLkVjaXJjdW1mbGV4PTYxMTtlLmFkaWVyZXNpcz00NDQ7ZS5lZGllcmVzaXM9NDQ0O2UuY2FjdXRlPTQ0NDtlLm5hY3V0ZT01MDA7ZS51bWFjcm9uPTUwMDtlLk5jYXJvbj03MjI7ZS5JYWN1dGU9MzMzO2UucGx1c21pbnVzPTU2NDtlLmJyb2tlbmJhcj0yMDA7ZS5yZWdpc3RlcmVkPTc2MDtlLkdicmV2ZT03MjI7ZS5JZG90YWNjZW50PTMzMztlLnN1bW1hdGlvbj02MDA7ZS5FZ3JhdmU9NjExO2UucmFjdXRlPTMzMztlLm9tYWNyb249NTAwO2UuWmFjdXRlPTYxMTtlLlpjYXJvbj02MTE7ZS5ncmVhdGVyZXF1YWw9NTQ5O2UuRXRoPTcyMjtlLkNjZWRpbGxhPTY2NztlLmxjb21tYWFjY2VudD0yNzg7ZS50Y2Fyb249MzI2O2UuZW9nb25laz00NDQ7ZS5Vb2dvbmVrPTcyMjtlLkFhY3V0ZT03MjI7ZS5BZGllcmVzaXM9NzIyO2UuZWdyYXZlPTQ0NDtlLnphY3V0ZT00NDQ7ZS5pb2dvbmVrPTI3ODtlLk9hY3V0ZT03MjI7ZS5vYWN1dGU9NTAwO2UuYW1hY3Jvbj00NDQ7ZS5zYWN1dGU9Mzg5O2UuaWRpZXJlc2lzPTI3ODtlLk9jaXJjdW1mbGV4PTcyMjtlLlVncmF2ZT03MjI7ZS5EZWx0YT02MTI7ZS50aG9ybj01MDA7ZS50d29zdXBlcmlvcj0zMDA7ZS5PZGllcmVzaXM9NzIyO2UubXU9NTAwO2UuaWdyYXZlPTI3ODtlLm9odW5nYXJ1bWxhdXQ9NTAwO2UuRW9nb25laz02MTE7ZS5kY3JvYXQ9NTAwO2UudGhyZWVxdWFydGVycz03NTA7ZS5TY2VkaWxsYT01NTY7ZS5sY2Fyb249MzQ0O2UuS2NvbW1hYWNjZW50PTcyMjtlLkxhY3V0ZT02MTE7ZS50cmFkZW1hcms9OTgwO2UuZWRvdGFjY2VudD00NDQ7ZS5JZ3JhdmU9MzMzO2UuSW1hY3Jvbj0zMzM7ZS5MY2Fyb249NjExO2Uub25laGFsZj03NTA7ZS5sZXNzZXF1YWw9NTQ5O2Uub2NpcmN1bWZsZXg9NTAwO2UubnRpbGRlPTUwMDtlLlVodW5nYXJ1bWxhdXQ9NzIyO2UuRWFjdXRlPTYxMTtlLmVtYWNyb249NDQ0O2UuZ2JyZXZlPTUwMDtlLm9uZXF1YXJ0ZXI9NzUwO2UuU2Nhcm9uPTU1NjtlLlNjb21tYWFjY2VudD01NTY7ZS5PaHVuZ2FydW1sYXV0PTcyMjtlLmRlZ3JlZT00MDA7ZS5vZ3JhdmU9NTAwO2UuQ2Nhcm9uPTY2NztlLnVncmF2ZT01MDA7ZS5yYWRpY2FsPTQ1MztlLkRjYXJvbj03MjI7ZS5yY29tbWFhY2NlbnQ9MzMzO2UuTnRpbGRlPTcyMjtlLm90aWxkZT01MDA7ZS5SY29tbWFhY2NlbnQ9NjY3O2UuTGNvbW1hYWNjZW50PTYxMTtlLkF0aWxkZT03MjI7ZS5Bb2dvbmVrPTcyMjtlLkFyaW5nPTcyMjtlLk90aWxkZT03MjI7ZS56ZG90YWNjZW50PTQ0NDtlLkVjYXJvbj02MTE7ZS5Jb2dvbmVrPTMzMztlLmtjb21tYWFjY2VudD01MDA7ZS5taW51cz01NjQ7ZS5JY2lyY3VtZmxleD0zMzM7ZS5uY2Fyb249NTAwO2UudGNvbW1hYWNjZW50PTI3ODtlLmxvZ2ljYWxub3Q9NTY0O2Uub2RpZXJlc2lzPTUwMDtlLnVkaWVyZXNpcz01MDA7ZS5ub3RlcXVhbD01NDk7ZS5nY29tbWFhY2NlbnQ9NTAwO2UuZXRoPTUwMDtlLnpjYXJvbj00NDQ7ZS5uY29tbWFhY2NlbnQ9NTAwO2Uub25lc3VwZXJpb3I9MzAwO2UuaW1hY3Jvbj0yNzg7ZS5FdXJvPTUwMH0pKTtlWyJUaW1lcy1Cb2xkIl09Z2V0TG9va3VwVGFibGVGYWN0b3J5KChmdW5jdGlvbihlKXtlLnNwYWNlPTI1MDtlLmV4Y2xhbT0zMzM7ZS5xdW90ZWRibD01NTU7ZS5udW1iZXJzaWduPTUwMDtlLmRvbGxhcj01MDA7ZS5wZXJjZW50PTFlMztlLmFtcGVyc2FuZD04MzM7ZS5xdW90ZXJpZ2h0PTMzMztlLnBhcmVubGVmdD0zMzM7ZS5wYXJlbnJpZ2h0PTMzMztlLmFzdGVyaXNrPTUwMDtlLnBsdXM9NTcwO2UuY29tbWE9MjUwO2UuaHlwaGVuPTMzMztlLnBlcmlvZD0yNTA7ZS5zbGFzaD0yNzg7ZS56ZXJvPTUwMDtlLm9uZT01MDA7ZS50d289NTAwO2UudGhyZWU9NTAwO2UuZm91cj01MDA7ZS5maXZlPTUwMDtlLnNpeD01MDA7ZS5zZXZlbj01MDA7ZS5laWdodD01MDA7ZS5uaW5lPTUwMDtlLmNvbG9uPTMzMztlLnNlbWljb2xvbj0zMzM7ZS5sZXNzPTU3MDtlLmVxdWFsPTU3MDtlLmdyZWF0ZXI9NTcwO2UucXVlc3Rpb249NTAwO2UuYXQ9OTMwO2UuQT03MjI7ZS5CPTY2NztlLkM9NzIyO2UuRD03MjI7ZS5FPTY2NztlLkY9NjExO2UuRz03Nzg7ZS5IPTc3ODtlLkk9Mzg5O2UuSj01MDA7ZS5LPTc3ODtlLkw9NjY3O2UuTT05NDQ7ZS5OPTcyMjtlLk89Nzc4O2UuUD02MTE7ZS5RPTc3ODtlLlI9NzIyO2UuUz01NTY7ZS5UPTY2NztlLlU9NzIyO2UuVj03MjI7ZS5XPTFlMztlLlg9NzIyO2UuWT03MjI7ZS5aPTY2NztlLmJyYWNrZXRsZWZ0PTMzMztlLmJhY2tzbGFzaD0yNzg7ZS5icmFja2V0cmlnaHQ9MzMzO2UuYXNjaWljaXJjdW09NTgxO2UudW5kZXJzY29yZT01MDA7ZS5xdW90ZWxlZnQ9MzMzO2UuYT01MDA7ZS5iPTU1NjtlLmM9NDQ0O2UuZD01NTY7ZS5lPTQ0NDtlLmY9MzMzO2UuZz01MDA7ZS5oPTU1NjtlLmk9Mjc4O2Uuaj0zMzM7ZS5rPTU1NjtlLmw9Mjc4O2UubT04MzM7ZS5uPTU1NjtlLm89NTAwO2UucD01NTY7ZS5xPTU1NjtlLnI9NDQ0O2Uucz0zODk7ZS50PTMzMztlLnU9NTU2O2Uudj01MDA7ZS53PTcyMjtlLng9NTAwO2UueT01MDA7ZS56PTQ0NDtlLmJyYWNlbGVmdD0zOTQ7ZS5iYXI9MjIwO2UuYnJhY2VyaWdodD0zOTQ7ZS5hc2NpaXRpbGRlPTUyMDtlLmV4Y2xhbWRvd249MzMzO2UuY2VudD01MDA7ZS5zdGVybGluZz01MDA7ZS5mcmFjdGlvbj0xNjc7ZS55ZW49NTAwO2UuZmxvcmluPTUwMDtlLnNlY3Rpb249NTAwO2UuY3VycmVuY3k9NTAwO2UucXVvdGVzaW5nbGU9Mjc4O2UucXVvdGVkYmxsZWZ0PTUwMDtlLmd1aWxsZW1vdGxlZnQ9NTAwO2UuZ3VpbHNpbmdsbGVmdD0zMzM7ZS5ndWlsc2luZ2xyaWdodD0zMzM7ZS5maT01NTY7ZS5mbD01NTY7ZS5lbmRhc2g9NTAwO2UuZGFnZ2VyPTUwMDtlLmRhZ2dlcmRibD01MDA7ZS5wZXJpb2RjZW50ZXJlZD0yNTA7ZS5wYXJhZ3JhcGg9NTQwO2UuYnVsbGV0PTM1MDtlLnF1b3Rlc2luZ2xiYXNlPTMzMztlLnF1b3RlZGJsYmFzZT01MDA7ZS5xdW90ZWRibHJpZ2h0PTUwMDtlLmd1aWxsZW1vdHJpZ2h0PTUwMDtlLmVsbGlwc2lzPTFlMztlLnBlcnRob3VzYW5kPTFlMztlLnF1ZXN0aW9uZG93bj01MDA7ZS5ncmF2ZT0zMzM7ZS5hY3V0ZT0zMzM7ZS5jaXJjdW1mbGV4PTMzMztlLnRpbGRlPTMzMztlLm1hY3Jvbj0zMzM7ZS5icmV2ZT0zMzM7ZS5kb3RhY2NlbnQ9MzMzO2UuZGllcmVzaXM9MzMzO2UucmluZz0zMzM7ZS5jZWRpbGxhPTMzMztlLmh1bmdhcnVtbGF1dD0zMzM7ZS5vZ29uZWs9MzMzO2UuY2Fyb249MzMzO2UuZW1kYXNoPTFlMztlLkFFPTFlMztlLm9yZGZlbWluaW5lPTMwMDtlLkxzbGFzaD02Njc7ZS5Pc2xhc2g9Nzc4O2UuT0U9MWUzO2Uub3JkbWFzY3VsaW5lPTMzMDtlLmFlPTcyMjtlLmRvdGxlc3NpPTI3ODtlLmxzbGFzaD0yNzg7ZS5vc2xhc2g9NTAwO2Uub2U9NzIyO2UuZ2VybWFuZGJscz01NTY7ZS5JZGllcmVzaXM9Mzg5O2UuZWFjdXRlPTQ0NDtlLmFicmV2ZT01MDA7ZS51aHVuZ2FydW1sYXV0PTU1NjtlLmVjYXJvbj00NDQ7ZS5ZZGllcmVzaXM9NzIyO2UuZGl2aWRlPTU3MDtlLllhY3V0ZT03MjI7ZS5BY2lyY3VtZmxleD03MjI7ZS5hYWN1dGU9NTAwO2UuVWNpcmN1bWZsZXg9NzIyO2UueWFjdXRlPTUwMDtlLnNjb21tYWFjY2VudD0zODk7ZS5lY2lyY3VtZmxleD00NDQ7ZS5VcmluZz03MjI7ZS5VZGllcmVzaXM9NzIyO2UuYW9nb25laz01MDA7ZS5VYWN1dGU9NzIyO2UudW9nb25laz01NTY7ZS5FZGllcmVzaXM9NjY3O2UuRGNyb2F0PTcyMjtlLmNvbW1hYWNjZW50PTI1MDtlLmNvcHlyaWdodD03NDc7ZS5FbWFjcm9uPTY2NztlLmNjYXJvbj00NDQ7ZS5hcmluZz01MDA7ZS5OY29tbWFhY2NlbnQ9NzIyO2UubGFjdXRlPTI3ODtlLmFncmF2ZT01MDA7ZS5UY29tbWFhY2NlbnQ9NjY3O2UuQ2FjdXRlPTcyMjtlLmF0aWxkZT01MDA7ZS5FZG90YWNjZW50PTY2NztlLnNjYXJvbj0zODk7ZS5zY2VkaWxsYT0zODk7ZS5pYWN1dGU9Mjc4O2UubG96ZW5nZT00OTQ7ZS5SY2Fyb249NzIyO2UuR2NvbW1hYWNjZW50PTc3ODtlLnVjaXJjdW1mbGV4PTU1NjtlLmFjaXJjdW1mbGV4PTUwMDtlLkFtYWNyb249NzIyO2UucmNhcm9uPTQ0NDtlLmNjZWRpbGxhPTQ0NDtlLlpkb3RhY2NlbnQ9NjY3O2UuVGhvcm49NjExO2UuT21hY3Jvbj03Nzg7ZS5SYWN1dGU9NzIyO2UuU2FjdXRlPTU1NjtlLmRjYXJvbj02NzI7ZS5VbWFjcm9uPTcyMjtlLnVyaW5nPTU1NjtlLnRocmVlc3VwZXJpb3I9MzAwO2UuT2dyYXZlPTc3ODtlLkFncmF2ZT03MjI7ZS5BYnJldmU9NzIyO2UubXVsdGlwbHk9NTcwO2UudWFjdXRlPTU1NjtlLlRjYXJvbj02Njc7ZS5wYXJ0aWFsZGlmZj00OTQ7ZS55ZGllcmVzaXM9NTAwO2UuTmFjdXRlPTcyMjtlLmljaXJjdW1mbGV4PTI3ODtlLkVjaXJjdW1mbGV4PTY2NztlLmFkaWVyZXNpcz01MDA7ZS5lZGllcmVzaXM9NDQ0O2UuY2FjdXRlPTQ0NDtlLm5hY3V0ZT01NTY7ZS51bWFjcm9uPTU1NjtlLk5jYXJvbj03MjI7ZS5JYWN1dGU9Mzg5O2UucGx1c21pbnVzPTU3MDtlLmJyb2tlbmJhcj0yMjA7ZS5yZWdpc3RlcmVkPTc0NztlLkdicmV2ZT03Nzg7ZS5JZG90YWNjZW50PTM4OTtlLnN1bW1hdGlvbj02MDA7ZS5FZ3JhdmU9NjY3O2UucmFjdXRlPTQ0NDtlLm9tYWNyb249NTAwO2UuWmFjdXRlPTY2NztlLlpjYXJvbj02Njc7ZS5ncmVhdGVyZXF1YWw9NTQ5O2UuRXRoPTcyMjtlLkNjZWRpbGxhPTcyMjtlLmxjb21tYWFjY2VudD0yNzg7ZS50Y2Fyb249NDE2O2UuZW9nb25laz00NDQ7ZS5Vb2dvbmVrPTcyMjtlLkFhY3V0ZT03MjI7ZS5BZGllcmVzaXM9NzIyO2UuZWdyYXZlPTQ0NDtlLnphY3V0ZT00NDQ7ZS5pb2dvbmVrPTI3ODtlLk9hY3V0ZT03Nzg7ZS5vYWN1dGU9NTAwO2UuYW1hY3Jvbj01MDA7ZS5zYWN1dGU9Mzg5O2UuaWRpZXJlc2lzPTI3ODtlLk9jaXJjdW1mbGV4PTc3ODtlLlVncmF2ZT03MjI7ZS5EZWx0YT02MTI7ZS50aG9ybj01NTY7ZS50d29zdXBlcmlvcj0zMDA7ZS5PZGllcmVzaXM9Nzc4O2UubXU9NTU2O2UuaWdyYXZlPTI3ODtlLm9odW5nYXJ1bWxhdXQ9NTAwO2UuRW9nb25laz02Njc7ZS5kY3JvYXQ9NTU2O2UudGhyZWVxdWFydGVycz03NTA7ZS5TY2VkaWxsYT01NTY7ZS5sY2Fyb249Mzk0O2UuS2NvbW1hYWNjZW50PTc3ODtlLkxhY3V0ZT02Njc7ZS50cmFkZW1hcms9MWUzO2UuZWRvdGFjY2VudD00NDQ7ZS5JZ3JhdmU9Mzg5O2UuSW1hY3Jvbj0zODk7ZS5MY2Fyb249NjY3O2Uub25laGFsZj03NTA7ZS5sZXNzZXF1YWw9NTQ5O2Uub2NpcmN1bWZsZXg9NTAwO2UubnRpbGRlPTU1NjtlLlVodW5nYXJ1bWxhdXQ9NzIyO2UuRWFjdXRlPTY2NztlLmVtYWNyb249NDQ0O2UuZ2JyZXZlPTUwMDtlLm9uZXF1YXJ0ZXI9NzUwO2UuU2Nhcm9uPTU1NjtlLlNjb21tYWFjY2VudD01NTY7ZS5PaHVuZ2FydW1sYXV0PTc3ODtlLmRlZ3JlZT00MDA7ZS5vZ3JhdmU9NTAwO2UuQ2Nhcm9uPTcyMjtlLnVncmF2ZT01NTY7ZS5yYWRpY2FsPTU0OTtlLkRjYXJvbj03MjI7ZS5yY29tbWFhY2NlbnQ9NDQ0O2UuTnRpbGRlPTcyMjtlLm90aWxkZT01MDA7ZS5SY29tbWFhY2NlbnQ9NzIyO2UuTGNvbW1hYWNjZW50PTY2NztlLkF0aWxkZT03MjI7ZS5Bb2dvbmVrPTcyMjtlLkFyaW5nPTcyMjtlLk90aWxkZT03Nzg7ZS56ZG90YWNjZW50PTQ0NDtlLkVjYXJvbj02Njc7ZS5Jb2dvbmVrPTM4OTtlLmtjb21tYWFjY2VudD01NTY7ZS5taW51cz01NzA7ZS5JY2lyY3VtZmxleD0zODk7ZS5uY2Fyb249NTU2O2UudGNvbW1hYWNjZW50PTMzMztlLmxvZ2ljYWxub3Q9NTcwO2Uub2RpZXJlc2lzPTUwMDtlLnVkaWVyZXNpcz01NTY7ZS5ub3RlcXVhbD01NDk7ZS5nY29tbWFhY2NlbnQ9NTAwO2UuZXRoPTUwMDtlLnpjYXJvbj00NDQ7ZS5uY29tbWFhY2NlbnQ9NTU2O2Uub25lc3VwZXJpb3I9MzAwO2UuaW1hY3Jvbj0yNzg7ZS5FdXJvPTUwMH0pKTtlWyJUaW1lcy1Cb2xkSXRhbGljIl09Z2V0TG9va3VwVGFibGVGYWN0b3J5KChmdW5jdGlvbihlKXtlLnNwYWNlPTI1MDtlLmV4Y2xhbT0zODk7ZS5xdW90ZWRibD01NTU7ZS5udW1iZXJzaWduPTUwMDtlLmRvbGxhcj01MDA7ZS5wZXJjZW50PTgzMztlLmFtcGVyc2FuZD03Nzg7ZS5xdW90ZXJpZ2h0PTMzMztlLnBhcmVubGVmdD0zMzM7ZS5wYXJlbnJpZ2h0PTMzMztlLmFzdGVyaXNrPTUwMDtlLnBsdXM9NTcwO2UuY29tbWE9MjUwO2UuaHlwaGVuPTMzMztlLnBlcmlvZD0yNTA7ZS5zbGFzaD0yNzg7ZS56ZXJvPTUwMDtlLm9uZT01MDA7ZS50d289NTAwO2UudGhyZWU9NTAwO2UuZm91cj01MDA7ZS5maXZlPTUwMDtlLnNpeD01MDA7ZS5zZXZlbj01MDA7ZS5laWdodD01MDA7ZS5uaW5lPTUwMDtlLmNvbG9uPTMzMztlLnNlbWljb2xvbj0zMzM7ZS5sZXNzPTU3MDtlLmVxdWFsPTU3MDtlLmdyZWF0ZXI9NTcwO2UucXVlc3Rpb249NTAwO2UuYXQ9ODMyO2UuQT02Njc7ZS5CPTY2NztlLkM9NjY3O2UuRD03MjI7ZS5FPTY2NztlLkY9NjY3O2UuRz03MjI7ZS5IPTc3ODtlLkk9Mzg5O2UuSj01MDA7ZS5LPTY2NztlLkw9NjExO2UuTT04ODk7ZS5OPTcyMjtlLk89NzIyO2UuUD02MTE7ZS5RPTcyMjtlLlI9NjY3O2UuUz01NTY7ZS5UPTYxMTtlLlU9NzIyO2UuVj02Njc7ZS5XPTg4OTtlLlg9NjY3O2UuWT02MTE7ZS5aPTYxMTtlLmJyYWNrZXRsZWZ0PTMzMztlLmJhY2tzbGFzaD0yNzg7ZS5icmFja2V0cmlnaHQ9MzMzO2UuYXNjaWljaXJjdW09NTcwO2UudW5kZXJzY29yZT01MDA7ZS5xdW90ZWxlZnQ9MzMzO2UuYT01MDA7ZS5iPTUwMDtlLmM9NDQ0O2UuZD01MDA7ZS5lPTQ0NDtlLmY9MzMzO2UuZz01MDA7ZS5oPTU1NjtlLmk9Mjc4O2Uuaj0yNzg7ZS5rPTUwMDtlLmw9Mjc4O2UubT03Nzg7ZS5uPTU1NjtlLm89NTAwO2UucD01MDA7ZS5xPTUwMDtlLnI9Mzg5O2Uucz0zODk7ZS50PTI3ODtlLnU9NTU2O2Uudj00NDQ7ZS53PTY2NztlLng9NTAwO2UueT00NDQ7ZS56PTM4OTtlLmJyYWNlbGVmdD0zNDg7ZS5iYXI9MjIwO2UuYnJhY2VyaWdodD0zNDg7ZS5hc2NpaXRpbGRlPTU3MDtlLmV4Y2xhbWRvd249Mzg5O2UuY2VudD01MDA7ZS5zdGVybGluZz01MDA7ZS5mcmFjdGlvbj0xNjc7ZS55ZW49NTAwO2UuZmxvcmluPTUwMDtlLnNlY3Rpb249NTAwO2UuY3VycmVuY3k9NTAwO2UucXVvdGVzaW5nbGU9Mjc4O2UucXVvdGVkYmxsZWZ0PTUwMDtlLmd1aWxsZW1vdGxlZnQ9NTAwO2UuZ3VpbHNpbmdsbGVmdD0zMzM7ZS5ndWlsc2luZ2xyaWdodD0zMzM7ZS5maT01NTY7ZS5mbD01NTY7ZS5lbmRhc2g9NTAwO2UuZGFnZ2VyPTUwMDtlLmRhZ2dlcmRibD01MDA7ZS5wZXJpb2RjZW50ZXJlZD0yNTA7ZS5wYXJhZ3JhcGg9NTAwO2UuYnVsbGV0PTM1MDtlLnF1b3Rlc2luZ2xiYXNlPTMzMztlLnF1b3RlZGJsYmFzZT01MDA7ZS5xdW90ZWRibHJpZ2h0PTUwMDtlLmd1aWxsZW1vdHJpZ2h0PTUwMDtlLmVsbGlwc2lzPTFlMztlLnBlcnRob3VzYW5kPTFlMztlLnF1ZXN0aW9uZG93bj01MDA7ZS5ncmF2ZT0zMzM7ZS5hY3V0ZT0zMzM7ZS5jaXJjdW1mbGV4PTMzMztlLnRpbGRlPTMzMztlLm1hY3Jvbj0zMzM7ZS5icmV2ZT0zMzM7ZS5kb3RhY2NlbnQ9MzMzO2UuZGllcmVzaXM9MzMzO2UucmluZz0zMzM7ZS5jZWRpbGxhPTMzMztlLmh1bmdhcnVtbGF1dD0zMzM7ZS5vZ29uZWs9MzMzO2UuY2Fyb249MzMzO2UuZW1kYXNoPTFlMztlLkFFPTk0NDtlLm9yZGZlbWluaW5lPTI2NjtlLkxzbGFzaD02MTE7ZS5Pc2xhc2g9NzIyO2UuT0U9OTQ0O2Uub3JkbWFzY3VsaW5lPTMwMDtlLmFlPTcyMjtlLmRvdGxlc3NpPTI3ODtlLmxzbGFzaD0yNzg7ZS5vc2xhc2g9NTAwO2Uub2U9NzIyO2UuZ2VybWFuZGJscz01MDA7ZS5JZGllcmVzaXM9Mzg5O2UuZWFjdXRlPTQ0NDtlLmFicmV2ZT01MDA7ZS51aHVuZ2FydW1sYXV0PTU1NjtlLmVjYXJvbj00NDQ7ZS5ZZGllcmVzaXM9NjExO2UuZGl2aWRlPTU3MDtlLllhY3V0ZT02MTE7ZS5BY2lyY3VtZmxleD02Njc7ZS5hYWN1dGU9NTAwO2UuVWNpcmN1bWZsZXg9NzIyO2UueWFjdXRlPTQ0NDtlLnNjb21tYWFjY2VudD0zODk7ZS5lY2lyY3VtZmxleD00NDQ7ZS5VcmluZz03MjI7ZS5VZGllcmVzaXM9NzIyO2UuYW9nb25laz01MDA7ZS5VYWN1dGU9NzIyO2UudW9nb25laz01NTY7ZS5FZGllcmVzaXM9NjY3O2UuRGNyb2F0PTcyMjtlLmNvbW1hYWNjZW50PTI1MDtlLmNvcHlyaWdodD03NDc7ZS5FbWFjcm9uPTY2NztlLmNjYXJvbj00NDQ7ZS5hcmluZz01MDA7ZS5OY29tbWFhY2NlbnQ9NzIyO2UubGFjdXRlPTI3ODtlLmFncmF2ZT01MDA7ZS5UY29tbWFhY2NlbnQ9NjExO2UuQ2FjdXRlPTY2NztlLmF0aWxkZT01MDA7ZS5FZG90YWNjZW50PTY2NztlLnNjYXJvbj0zODk7ZS5zY2VkaWxsYT0zODk7ZS5pYWN1dGU9Mjc4O2UubG96ZW5nZT00OTQ7ZS5SY2Fyb249NjY3O2UuR2NvbW1hYWNjZW50PTcyMjtlLnVjaXJjdW1mbGV4PTU1NjtlLmFjaXJjdW1mbGV4PTUwMDtlLkFtYWNyb249NjY3O2UucmNhcm9uPTM4OTtlLmNjZWRpbGxhPTQ0NDtlLlpkb3RhY2NlbnQ9NjExO2UuVGhvcm49NjExO2UuT21hY3Jvbj03MjI7ZS5SYWN1dGU9NjY3O2UuU2FjdXRlPTU1NjtlLmRjYXJvbj02MDg7ZS5VbWFjcm9uPTcyMjtlLnVyaW5nPTU1NjtlLnRocmVlc3VwZXJpb3I9MzAwO2UuT2dyYXZlPTcyMjtlLkFncmF2ZT02Njc7ZS5BYnJldmU9NjY3O2UubXVsdGlwbHk9NTcwO2UudWFjdXRlPTU1NjtlLlRjYXJvbj02MTE7ZS5wYXJ0aWFsZGlmZj00OTQ7ZS55ZGllcmVzaXM9NDQ0O2UuTmFjdXRlPTcyMjtlLmljaXJjdW1mbGV4PTI3ODtlLkVjaXJjdW1mbGV4PTY2NztlLmFkaWVyZXNpcz01MDA7ZS5lZGllcmVzaXM9NDQ0O2UuY2FjdXRlPTQ0NDtlLm5hY3V0ZT01NTY7ZS51bWFjcm9uPTU1NjtlLk5jYXJvbj03MjI7ZS5JYWN1dGU9Mzg5O2UucGx1c21pbnVzPTU3MDtlLmJyb2tlbmJhcj0yMjA7ZS5yZWdpc3RlcmVkPTc0NztlLkdicmV2ZT03MjI7ZS5JZG90YWNjZW50PTM4OTtlLnN1bW1hdGlvbj02MDA7ZS5FZ3JhdmU9NjY3O2UucmFjdXRlPTM4OTtlLm9tYWNyb249NTAwO2UuWmFjdXRlPTYxMTtlLlpjYXJvbj02MTE7ZS5ncmVhdGVyZXF1YWw9NTQ5O2UuRXRoPTcyMjtlLkNjZWRpbGxhPTY2NztlLmxjb21tYWFjY2VudD0yNzg7ZS50Y2Fyb249MzY2O2UuZW9nb25laz00NDQ7ZS5Vb2dvbmVrPTcyMjtlLkFhY3V0ZT02Njc7ZS5BZGllcmVzaXM9NjY3O2UuZWdyYXZlPTQ0NDtlLnphY3V0ZT0zODk7ZS5pb2dvbmVrPTI3ODtlLk9hY3V0ZT03MjI7ZS5vYWN1dGU9NTAwO2UuYW1hY3Jvbj01MDA7ZS5zYWN1dGU9Mzg5O2UuaWRpZXJlc2lzPTI3ODtlLk9jaXJjdW1mbGV4PTcyMjtlLlVncmF2ZT03MjI7ZS5EZWx0YT02MTI7ZS50aG9ybj01MDA7ZS50d29zdXBlcmlvcj0zMDA7ZS5PZGllcmVzaXM9NzIyO2UubXU9NTc2O2UuaWdyYXZlPTI3ODtlLm9odW5nYXJ1bWxhdXQ9NTAwO2UuRW9nb25laz02Njc7ZS5kY3JvYXQ9NTAwO2UudGhyZWVxdWFydGVycz03NTA7ZS5TY2VkaWxsYT01NTY7ZS5sY2Fyb249MzgyO2UuS2NvbW1hYWNjZW50PTY2NztlLkxhY3V0ZT02MTE7ZS50cmFkZW1hcms9MWUzO2UuZWRvdGFjY2VudD00NDQ7ZS5JZ3JhdmU9Mzg5O2UuSW1hY3Jvbj0zODk7ZS5MY2Fyb249NjExO2Uub25laGFsZj03NTA7ZS5sZXNzZXF1YWw9NTQ5O2Uub2NpcmN1bWZsZXg9NTAwO2UubnRpbGRlPTU1NjtlLlVodW5nYXJ1bWxhdXQ9NzIyO2UuRWFjdXRlPTY2NztlLmVtYWNyb249NDQ0O2UuZ2JyZXZlPTUwMDtlLm9uZXF1YXJ0ZXI9NzUwO2UuU2Nhcm9uPTU1NjtlLlNjb21tYWFjY2VudD01NTY7ZS5PaHVuZ2FydW1sYXV0PTcyMjtlLmRlZ3JlZT00MDA7ZS5vZ3JhdmU9NTAwO2UuQ2Nhcm9uPTY2NztlLnVncmF2ZT01NTY7ZS5yYWRpY2FsPTU0OTtlLkRjYXJvbj03MjI7ZS5yY29tbWFhY2NlbnQ9Mzg5O2UuTnRpbGRlPTcyMjtlLm90aWxkZT01MDA7ZS5SY29tbWFhY2NlbnQ9NjY3O2UuTGNvbW1hYWNjZW50PTYxMTtlLkF0aWxkZT02Njc7ZS5Bb2dvbmVrPTY2NztlLkFyaW5nPTY2NztlLk90aWxkZT03MjI7ZS56ZG90YWNjZW50PTM4OTtlLkVjYXJvbj02Njc7ZS5Jb2dvbmVrPTM4OTtlLmtjb21tYWFjY2VudD01MDA7ZS5taW51cz02MDY7ZS5JY2lyY3VtZmxleD0zODk7ZS5uY2Fyb249NTU2O2UudGNvbW1hYWNjZW50PTI3ODtlLmxvZ2ljYWxub3Q9NjA2O2Uub2RpZXJlc2lzPTUwMDtlLnVkaWVyZXNpcz01NTY7ZS5ub3RlcXVhbD01NDk7ZS5nY29tbWFhY2NlbnQ9NTAwO2UuZXRoPTUwMDtlLnpjYXJvbj0zODk7ZS5uY29tbWFhY2NlbnQ9NTU2O2Uub25lc3VwZXJpb3I9MzAwO2UuaW1hY3Jvbj0yNzg7ZS5FdXJvPTUwMH0pKTtlWyJUaW1lcy1JdGFsaWMiXT1nZXRMb29rdXBUYWJsZUZhY3RvcnkoKGZ1bmN0aW9uKGUpe2Uuc3BhY2U9MjUwO2UuZXhjbGFtPTMzMztlLnF1b3RlZGJsPTQyMDtlLm51bWJlcnNpZ249NTAwO2UuZG9sbGFyPTUwMDtlLnBlcmNlbnQ9ODMzO2UuYW1wZXJzYW5kPTc3ODtlLnF1b3RlcmlnaHQ9MzMzO2UucGFyZW5sZWZ0PTMzMztlLnBhcmVucmlnaHQ9MzMzO2UuYXN0ZXJpc2s9NTAwO2UucGx1cz02NzU7ZS5jb21tYT0yNTA7ZS5oeXBoZW49MzMzO2UucGVyaW9kPTI1MDtlLnNsYXNoPTI3ODtlLnplcm89NTAwO2Uub25lPTUwMDtlLnR3bz01MDA7ZS50aHJlZT01MDA7ZS5mb3VyPTUwMDtlLmZpdmU9NTAwO2Uuc2l4PTUwMDtlLnNldmVuPTUwMDtlLmVpZ2h0PTUwMDtlLm5pbmU9NTAwO2UuY29sb249MzMzO2Uuc2VtaWNvbG9uPTMzMztlLmxlc3M9Njc1O2UuZXF1YWw9Njc1O2UuZ3JlYXRlcj02NzU7ZS5xdWVzdGlvbj01MDA7ZS5hdD05MjA7ZS5BPTYxMTtlLkI9NjExO2UuQz02Njc7ZS5EPTcyMjtlLkU9NjExO2UuRj02MTE7ZS5HPTcyMjtlLkg9NzIyO2UuST0zMzM7ZS5KPTQ0NDtlLks9NjY3O2UuTD01NTY7ZS5NPTgzMztlLk49NjY3O2UuTz03MjI7ZS5QPTYxMTtlLlE9NzIyO2UuUj02MTE7ZS5TPTUwMDtlLlQ9NTU2O2UuVT03MjI7ZS5WPTYxMTtlLlc9ODMzO2UuWD02MTE7ZS5ZPTU1NjtlLlo9NTU2O2UuYnJhY2tldGxlZnQ9Mzg5O2UuYmFja3NsYXNoPTI3ODtlLmJyYWNrZXRyaWdodD0zODk7ZS5hc2NpaWNpcmN1bT00MjI7ZS51bmRlcnNjb3JlPTUwMDtlLnF1b3RlbGVmdD0zMzM7ZS5hPTUwMDtlLmI9NTAwO2UuYz00NDQ7ZS5kPTUwMDtlLmU9NDQ0O2UuZj0yNzg7ZS5nPTUwMDtlLmg9NTAwO2UuaT0yNzg7ZS5qPTI3ODtlLms9NDQ0O2UubD0yNzg7ZS5tPTcyMjtlLm49NTAwO2Uubz01MDA7ZS5wPTUwMDtlLnE9NTAwO2Uucj0zODk7ZS5zPTM4OTtlLnQ9Mjc4O2UudT01MDA7ZS52PTQ0NDtlLnc9NjY3O2UueD00NDQ7ZS55PTQ0NDtlLno9Mzg5O2UuYnJhY2VsZWZ0PTQwMDtlLmJhcj0yNzU7ZS5icmFjZXJpZ2h0PTQwMDtlLmFzY2lpdGlsZGU9NTQxO2UuZXhjbGFtZG93bj0zODk7ZS5jZW50PTUwMDtlLnN0ZXJsaW5nPTUwMDtlLmZyYWN0aW9uPTE2NztlLnllbj01MDA7ZS5mbG9yaW49NTAwO2Uuc2VjdGlvbj01MDA7ZS5jdXJyZW5jeT01MDA7ZS5xdW90ZXNpbmdsZT0yMTQ7ZS5xdW90ZWRibGxlZnQ9NTU2O2UuZ3VpbGxlbW90bGVmdD01MDA7ZS5ndWlsc2luZ2xsZWZ0PTMzMztlLmd1aWxzaW5nbHJpZ2h0PTMzMztlLmZpPTUwMDtlLmZsPTUwMDtlLmVuZGFzaD01MDA7ZS5kYWdnZXI9NTAwO2UuZGFnZ2VyZGJsPTUwMDtlLnBlcmlvZGNlbnRlcmVkPTI1MDtlLnBhcmFncmFwaD01MjM7ZS5idWxsZXQ9MzUwO2UucXVvdGVzaW5nbGJhc2U9MzMzO2UucXVvdGVkYmxiYXNlPTU1NjtlLnF1b3RlZGJscmlnaHQ9NTU2O2UuZ3VpbGxlbW90cmlnaHQ9NTAwO2UuZWxsaXBzaXM9ODg5O2UucGVydGhvdXNhbmQ9MWUzO2UucXVlc3Rpb25kb3duPTUwMDtlLmdyYXZlPTMzMztlLmFjdXRlPTMzMztlLmNpcmN1bWZsZXg9MzMzO2UudGlsZGU9MzMzO2UubWFjcm9uPTMzMztlLmJyZXZlPTMzMztlLmRvdGFjY2VudD0zMzM7ZS5kaWVyZXNpcz0zMzM7ZS5yaW5nPTMzMztlLmNlZGlsbGE9MzMzO2UuaHVuZ2FydW1sYXV0PTMzMztlLm9nb25laz0zMzM7ZS5jYXJvbj0zMzM7ZS5lbWRhc2g9ODg5O2UuQUU9ODg5O2Uub3JkZmVtaW5pbmU9Mjc2O2UuTHNsYXNoPTU1NjtlLk9zbGFzaD03MjI7ZS5PRT05NDQ7ZS5vcmRtYXNjdWxpbmU9MzEwO2UuYWU9NjY3O2UuZG90bGVzc2k9Mjc4O2UubHNsYXNoPTI3ODtlLm9zbGFzaD01MDA7ZS5vZT02Njc7ZS5nZXJtYW5kYmxzPTUwMDtlLklkaWVyZXNpcz0zMzM7ZS5lYWN1dGU9NDQ0O2UuYWJyZXZlPTUwMDtlLnVodW5nYXJ1bWxhdXQ9NTAwO2UuZWNhcm9uPTQ0NDtlLllkaWVyZXNpcz01NTY7ZS5kaXZpZGU9Njc1O2UuWWFjdXRlPTU1NjtlLkFjaXJjdW1mbGV4PTYxMTtlLmFhY3V0ZT01MDA7ZS5VY2lyY3VtZmxleD03MjI7ZS55YWN1dGU9NDQ0O2Uuc2NvbW1hYWNjZW50PTM4OTtlLmVjaXJjdW1mbGV4PTQ0NDtlLlVyaW5nPTcyMjtlLlVkaWVyZXNpcz03MjI7ZS5hb2dvbmVrPTUwMDtlLlVhY3V0ZT03MjI7ZS51b2dvbmVrPTUwMDtlLkVkaWVyZXNpcz02MTE7ZS5EY3JvYXQ9NzIyO2UuY29tbWFhY2NlbnQ9MjUwO2UuY29weXJpZ2h0PTc2MDtlLkVtYWNyb249NjExO2UuY2Nhcm9uPTQ0NDtlLmFyaW5nPTUwMDtlLk5jb21tYWFjY2VudD02Njc7ZS5sYWN1dGU9Mjc4O2UuYWdyYXZlPTUwMDtlLlRjb21tYWFjY2VudD01NTY7ZS5DYWN1dGU9NjY3O2UuYXRpbGRlPTUwMDtlLkVkb3RhY2NlbnQ9NjExO2Uuc2Nhcm9uPTM4OTtlLnNjZWRpbGxhPTM4OTtlLmlhY3V0ZT0yNzg7ZS5sb3plbmdlPTQ3MTtlLlJjYXJvbj02MTE7ZS5HY29tbWFhY2NlbnQ9NzIyO2UudWNpcmN1bWZsZXg9NTAwO2UuYWNpcmN1bWZsZXg9NTAwO2UuQW1hY3Jvbj02MTE7ZS5yY2Fyb249Mzg5O2UuY2NlZGlsbGE9NDQ0O2UuWmRvdGFjY2VudD01NTY7ZS5UaG9ybj02MTE7ZS5PbWFjcm9uPTcyMjtlLlJhY3V0ZT02MTE7ZS5TYWN1dGU9NTAwO2UuZGNhcm9uPTU0NDtlLlVtYWNyb249NzIyO2UudXJpbmc9NTAwO2UudGhyZWVzdXBlcmlvcj0zMDA7ZS5PZ3JhdmU9NzIyO2UuQWdyYXZlPTYxMTtlLkFicmV2ZT02MTE7ZS5tdWx0aXBseT02NzU7ZS51YWN1dGU9NTAwO2UuVGNhcm9uPTU1NjtlLnBhcnRpYWxkaWZmPTQ3NjtlLnlkaWVyZXNpcz00NDQ7ZS5OYWN1dGU9NjY3O2UuaWNpcmN1bWZsZXg9Mjc4O2UuRWNpcmN1bWZsZXg9NjExO2UuYWRpZXJlc2lzPTUwMDtlLmVkaWVyZXNpcz00NDQ7ZS5jYWN1dGU9NDQ0O2UubmFjdXRlPTUwMDtlLnVtYWNyb249NTAwO2UuTmNhcm9uPTY2NztlLklhY3V0ZT0zMzM7ZS5wbHVzbWludXM9Njc1O2UuYnJva2VuYmFyPTI3NTtlLnJlZ2lzdGVyZWQ9NzYwO2UuR2JyZXZlPTcyMjtlLklkb3RhY2NlbnQ9MzMzO2Uuc3VtbWF0aW9uPTYwMDtlLkVncmF2ZT02MTE7ZS5yYWN1dGU9Mzg5O2Uub21hY3Jvbj01MDA7ZS5aYWN1dGU9NTU2O2UuWmNhcm9uPTU1NjtlLmdyZWF0ZXJlcXVhbD01NDk7ZS5FdGg9NzIyO2UuQ2NlZGlsbGE9NjY3O2UubGNvbW1hYWNjZW50PTI3ODtlLnRjYXJvbj0zMDA7ZS5lb2dvbmVrPTQ0NDtlLlVvZ29uZWs9NzIyO2UuQWFjdXRlPTYxMTtlLkFkaWVyZXNpcz02MTE7ZS5lZ3JhdmU9NDQ0O2UuemFjdXRlPTM4OTtlLmlvZ29uZWs9Mjc4O2UuT2FjdXRlPTcyMjtlLm9hY3V0ZT01MDA7ZS5hbWFjcm9uPTUwMDtlLnNhY3V0ZT0zODk7ZS5pZGllcmVzaXM9Mjc4O2UuT2NpcmN1bWZsZXg9NzIyO2UuVWdyYXZlPTcyMjtlLkRlbHRhPTYxMjtlLnRob3JuPTUwMDtlLnR3b3N1cGVyaW9yPTMwMDtlLk9kaWVyZXNpcz03MjI7ZS5tdT01MDA7ZS5pZ3JhdmU9Mjc4O2Uub2h1bmdhcnVtbGF1dD01MDA7ZS5Fb2dvbmVrPTYxMTtlLmRjcm9hdD01MDA7ZS50aHJlZXF1YXJ0ZXJzPTc1MDtlLlNjZWRpbGxhPTUwMDtlLmxjYXJvbj0zMDA7ZS5LY29tbWFhY2NlbnQ9NjY3O2UuTGFjdXRlPTU1NjtlLnRyYWRlbWFyaz05ODA7ZS5lZG90YWNjZW50PTQ0NDtlLklncmF2ZT0zMzM7ZS5JbWFjcm9uPTMzMztlLkxjYXJvbj02MTE7ZS5vbmVoYWxmPTc1MDtlLmxlc3NlcXVhbD01NDk7ZS5vY2lyY3VtZmxleD01MDA7ZS5udGlsZGU9NTAwO2UuVWh1bmdhcnVtbGF1dD03MjI7ZS5FYWN1dGU9NjExO2UuZW1hY3Jvbj00NDQ7ZS5nYnJldmU9NTAwO2Uub25lcXVhcnRlcj03NTA7ZS5TY2Fyb249NTAwO2UuU2NvbW1hYWNjZW50PTUwMDtlLk9odW5nYXJ1bWxhdXQ9NzIyO2UuZGVncmVlPTQwMDtlLm9ncmF2ZT01MDA7ZS5DY2Fyb249NjY3O2UudWdyYXZlPTUwMDtlLnJhZGljYWw9NDUzO2UuRGNhcm9uPTcyMjtlLnJjb21tYWFjY2VudD0zODk7ZS5OdGlsZGU9NjY3O2Uub3RpbGRlPTUwMDtlLlJjb21tYWFjY2VudD02MTE7ZS5MY29tbWFhY2NlbnQ9NTU2O2UuQXRpbGRlPTYxMTtlLkFvZ29uZWs9NjExO2UuQXJpbmc9NjExO2UuT3RpbGRlPTcyMjtlLnpkb3RhY2NlbnQ9Mzg5O2UuRWNhcm9uPTYxMTtlLklvZ29uZWs9MzMzO2Uua2NvbW1hYWNjZW50PTQ0NDtlLm1pbnVzPTY3NTtlLkljaXJjdW1mbGV4PTMzMztlLm5jYXJvbj01MDA7ZS50Y29tbWFhY2NlbnQ9Mjc4O2UubG9naWNhbG5vdD02NzU7ZS5vZGllcmVzaXM9NTAwO2UudWRpZXJlc2lzPTUwMDtlLm5vdGVxdWFsPTU0OTtlLmdjb21tYWFjY2VudD01MDA7ZS5ldGg9NTAwO2UuemNhcm9uPTM4OTtlLm5jb21tYWFjY2VudD01MDA7ZS5vbmVzdXBlcmlvcj0zMDA7ZS5pbWFjcm9uPTI3ODtlLkV1cm89NTAwfSkpO2UuWmFwZkRpbmdiYXRzPWdldExvb2t1cFRhYmxlRmFjdG9yeSgoZnVuY3Rpb24oZSl7ZS5zcGFjZT0yNzg7ZS5hMT05NzQ7ZS5hMj05NjE7ZS5hMjAyPTk3NDtlLmEzPTk4MDtlLmE0PTcxOTtlLmE1PTc4OTtlLmExMTk9NzkwO2UuYTExOD03OTE7ZS5hMTE3PTY5MDtlLmExMT05NjA7ZS5hMTI9OTM5O2UuYTEzPTU0OTtlLmExND04NTU7ZS5hMTU9OTExO2UuYTE2PTkzMztlLmExMDU9OTExO2UuYTE3PTk0NTtlLmExOD05NzQ7ZS5hMTk9NzU1O2UuYTIwPTg0NjtlLmEyMT03NjI7ZS5hMjI9NzYxO2UuYTIzPTU3MTtlLmEyND02Nzc7ZS5hMjU9NzYzO2UuYTI2PTc2MDtlLmEyNz03NTk7ZS5hMjg9NzU0O2UuYTY9NDk0O2UuYTc9NTUyO2UuYTg9NTM3O2UuYTk9NTc3O2UuYTEwPTY5MjtlLmEyOT03ODY7ZS5hMzA9Nzg4O2UuYTMxPTc4ODtlLmEzMj03OTA7ZS5hMzM9NzkzO2UuYTM0PTc5NDtlLmEzNT04MTY7ZS5hMzY9ODIzO2UuYTM3PTc4OTtlLmEzOD04NDE7ZS5hMzk9ODIzO2UuYTQwPTgzMztlLmE0MT04MTY7ZS5hNDI9ODMxO2UuYTQzPTkyMztlLmE0ND03NDQ7ZS5hNDU9NzIzO2UuYTQ2PTc0OTtlLmE0Nz03OTA7ZS5hNDg9NzkyO2UuYTQ5PTY5NTtlLmE1MD03NzY7ZS5hNTE9NzY4O2UuYTUyPTc5MjtlLmE1Mz03NTk7ZS5hNTQ9NzA3O2UuYTU1PTcwODtlLmE1Nj02ODI7ZS5hNTc9NzAxO2UuYTU4PTgyNjtlLmE1OT04MTU7ZS5hNjA9Nzg5O2UuYTYxPTc4OTtlLmE2Mj03MDc7ZS5hNjM9Njg3O2UuYTY0PTY5NjtlLmE2NT02ODk7ZS5hNjY9Nzg2O2UuYTY3PTc4NztlLmE2OD03MTM7ZS5hNjk9NzkxO2UuYTcwPTc4NTtlLmE3MT03OTE7ZS5hNzI9ODczO2UuYTczPTc2MTtlLmE3ND03NjI7ZS5hMjAzPTc2MjtlLmE3NT03NTk7ZS5hMjA0PTc1OTtlLmE3Nj04OTI7ZS5hNzc9ODkyO2UuYTc4PTc4ODtlLmE3OT03ODQ7ZS5hODE9NDM4O2UuYTgyPTEzODtlLmE4Mz0yNzc7ZS5hODQ9NDE1O2UuYTk3PTM5MjtlLmE5OD0zOTI7ZS5hOTk9NjY4O2UuYTEwMD02Njg7ZS5hODk9MzkwO2UuYTkwPTM5MDtlLmE5Mz0zMTc7ZS5hOTQ9MzE3O2UuYTkxPTI3NjtlLmE5Mj0yNzY7ZS5hMjA1PTUwOTtlLmE4NT01MDk7ZS5hMjA2PTQxMDtlLmE4Nj00MTA7ZS5hODc9MjM0O2UuYTg4PTIzNDtlLmE5NT0zMzQ7ZS5hOTY9MzM0O2UuYTEwMT03MzI7ZS5hMTAyPTU0NDtlLmExMDM9NTQ0O2UuYTEwND05MTA7ZS5hMTA2PTY2NztlLmExMDc9NzYwO2UuYTEwOD03NjA7ZS5hMTEyPTc3NjtlLmExMTE9NTk1O2UuYTExMD02OTQ7ZS5hMTA5PTYyNjtlLmExMjA9Nzg4O2UuYTEyMT03ODg7ZS5hMTIyPTc4ODtlLmExMjM9Nzg4O2UuYTEyND03ODg7ZS5hMTI1PTc4ODtlLmExMjY9Nzg4O2UuYTEyNz03ODg7ZS5hMTI4PTc4ODtlLmExMjk9Nzg4O2UuYTEzMD03ODg7ZS5hMTMxPTc4ODtlLmExMzI9Nzg4O2UuYTEzMz03ODg7ZS5hMTM0PTc4ODtlLmExMzU9Nzg4O2UuYTEzNj03ODg7ZS5hMTM3PTc4ODtlLmExMzg9Nzg4O2UuYTEzOT03ODg7ZS5hMTQwPTc4ODtlLmExNDE9Nzg4O2UuYTE0Mj03ODg7ZS5hMTQzPTc4ODtlLmExNDQ9Nzg4O2UuYTE0NT03ODg7ZS5hMTQ2PTc4ODtlLmExNDc9Nzg4O2UuYTE0OD03ODg7ZS5hMTQ5PTc4ODtlLmExNTA9Nzg4O2UuYTE1MT03ODg7ZS5hMTUyPTc4ODtlLmExNTM9Nzg4O2UuYTE1ND03ODg7ZS5hMTU1PTc4ODtlLmExNTY9Nzg4O2UuYTE1Nz03ODg7ZS5hMTU4PTc4ODtlLmExNTk9Nzg4O2UuYTE2MD04OTQ7ZS5hMTYxPTgzODtlLmExNjM9MTAxNjtlLmExNjQ9NDU4O2UuYTE5Nj03NDg7ZS5hMTY1PTkyNDtlLmExOTI9NzQ4O2UuYTE2Nj05MTg7ZS5hMTY3PTkyNztlLmExNjg9OTI4O2UuYTE2OT05Mjg7ZS5hMTcwPTgzNDtlLmExNzE9ODczO2UuYTE3Mj04Mjg7ZS5hMTczPTkyNDtlLmExNjI9OTI0O2UuYTE3ND05MTc7ZS5hMTc1PTkzMDtlLmExNzY9OTMxO2UuYTE3Nz00NjM7ZS5hMTc4PTg4MztlLmExNzk9ODM2O2UuYTE5Mz04MzY7ZS5hMTgwPTg2NztlLmExOTk9ODY3O2UuYTE4MT02OTY7ZS5hMjAwPTY5NjtlLmExODI9ODc0O2UuYTIwMT04NzQ7ZS5hMTgzPTc2MDtlLmExODQ9OTQ2O2UuYTE5Nz03NzE7ZS5hMTg1PTg2NTtlLmExOTQ9NzcxO2UuYTE5OD04ODg7ZS5hMTg2PTk2NztlLmExOTU9ODg4O2UuYTE4Nz04MzE7ZS5hMTg4PTg3MztlLmExODk9OTI3O2UuYTE5MD05NzA7ZS5hMTkxPTkxOH0pKX0pKSxlYT1nZXRMb29rdXBUYWJsZUZhY3RvcnkoKGZ1bmN0aW9uKGUpe2UuQ291cmllcj17YXNjZW50OjYyOSxkZXNjZW50Oi0xNTcsY2FwSGVpZ2h0OjU2Mix4SGVpZ2h0Oi00MjZ9O2VbIkNvdXJpZXItQm9sZCJdPXthc2NlbnQ6NjI5LGRlc2NlbnQ6LTE1NyxjYXBIZWlnaHQ6NTYyLHhIZWlnaHQ6NDM5fTtlWyJDb3VyaWVyLU9ibGlxdWUiXT17YXNjZW50OjYyOSxkZXNjZW50Oi0xNTcsY2FwSGVpZ2h0OjU2Mix4SGVpZ2h0OjQyNn07ZVsiQ291cmllci1Cb2xkT2JsaXF1ZSJdPXthc2NlbnQ6NjI5LGRlc2NlbnQ6LTE1NyxjYXBIZWlnaHQ6NTYyLHhIZWlnaHQ6NDI2fTtlLkhlbHZldGljYT17YXNjZW50OjcxOCxkZXNjZW50Oi0yMDcsY2FwSGVpZ2h0OjcxOCx4SGVpZ2h0OjUyM307ZVsiSGVsdmV0aWNhLUJvbGQiXT17YXNjZW50OjcxOCxkZXNjZW50Oi0yMDcsY2FwSGVpZ2h0OjcxOCx4SGVpZ2h0OjUzMn07ZVsiSGVsdmV0aWNhLU9ibGlxdWUiXT17YXNjZW50OjcxOCxkZXNjZW50Oi0yMDcsY2FwSGVpZ2h0OjcxOCx4SGVpZ2h0OjUyM307ZVsiSGVsdmV0aWNhLUJvbGRPYmxpcXVlIl09e2FzY2VudDo3MTgsZGVzY2VudDotMjA3LGNhcEhlaWdodDo3MTgseEhlaWdodDo1MzJ9O2VbIlRpbWVzLVJvbWFuIl09e2FzY2VudDo2ODMsZGVzY2VudDotMjE3LGNhcEhlaWdodDo2NjIseEhlaWdodDo0NTB9O2VbIlRpbWVzLUJvbGQiXT17YXNjZW50OjY4MyxkZXNjZW50Oi0yMTcsY2FwSGVpZ2h0OjY3Nix4SGVpZ2h0OjQ2MX07ZVsiVGltZXMtSXRhbGljIl09e2FzY2VudDo2ODMsZGVzY2VudDotMjE3LGNhcEhlaWdodDo2NTMseEhlaWdodDo0NDF9O2VbIlRpbWVzLUJvbGRJdGFsaWMiXT17YXNjZW50OjY4MyxkZXNjZW50Oi0yMTcsY2FwSGVpZ2h0OjY2OSx4SGVpZ2h0OjQ2Mn07ZS5TeW1ib2w9e2FzY2VudDpNYXRoLk5hTixkZXNjZW50Ok1hdGguTmFOLGNhcEhlaWdodDpNYXRoLk5hTix4SGVpZ2h0Ok1hdGguTmFOfTtlLlphcGZEaW5nYmF0cz17YXNjZW50Ok1hdGguTmFOLGRlc2NlbnQ6TWF0aC5OYU4sY2FwSGVpZ2h0Ok1hdGguTmFOLHhIZWlnaHQ6TWF0aC5OYU59fSkpO2NsYXNzIEdseWZUYWJsZXtjb25zdHJ1Y3Rvcih7Z2x5ZlRhYmxlOmUsaXNHbHlwaExvY2F0aW9uc0xvbmc6dCxsb2NhVGFibGU6aSxudW1HbHlwaHM6YX0pe3RoaXMuZ2x5cGhzPVtdO2NvbnN0IHM9bmV3IERhdGFWaWV3KGkuYnVmZmVyLGkuYnl0ZU9mZnNldCxpLmJ5dGVMZW5ndGgpLHI9bmV3IERhdGFWaWV3KGUuYnVmZmVyLGUuYnl0ZU9mZnNldCxlLmJ5dGVMZW5ndGgpLG49dD80OjI7bGV0IG89dD9zLmdldFVpbnQzMigwKToyKnMuZ2V0VWludDE2KDApLGc9MDtmb3IobGV0IGU9MDtlPGE7ZSsrKXtnKz1uO2NvbnN0IGU9dD9zLmdldFVpbnQzMihnKToyKnMuZ2V0VWludDE2KGcpO2lmKGU9PT1vKXt0aGlzLmdseXBocy5wdXNoKG5ldyBHbHlwaCh7fSkpO2NvbnRpbnVlfWNvbnN0IGk9R2x5cGgucGFyc2UobyxyKTt0aGlzLmdseXBocy5wdXNoKGkpO289ZX19Z2V0U2l6ZSgpe3JldHVybiB0aGlzLmdseXBocy5yZWR1Y2UoKChlLHQpPT5lKyh0LmdldFNpemUoKSszJi00KSksMCl9d3JpdGUoKXtjb25zdCBlPXRoaXMuZ2V0U2l6ZSgpLHQ9bmV3IERhdGFWaWV3KG5ldyBBcnJheUJ1ZmZlcihlKSksaT1lPjEzMTA3MCxhPWk/NDoyLHM9bmV3IERhdGFWaWV3KG5ldyBBcnJheUJ1ZmZlcigodGhpcy5nbHlwaHMubGVuZ3RoKzEpKmEpKTtpP3Muc2V0VWludDMyKDAsMCk6cy5zZXRVaW50MTYoMCwwKTtsZXQgcj0wLG49MDtmb3IoY29uc3QgZSBvZiB0aGlzLmdseXBocyl7cis9ZS53cml0ZShyLHQpO3I9ciszJi00O24rPWE7aT9zLnNldFVpbnQzMihuLHIpOnMuc2V0VWludDE2KG4scj4+MSl9cmV0dXJue2lzTG9jYXRpb25Mb25nOmksbG9jYTpuZXcgVWludDhBcnJheShzLmJ1ZmZlciksZ2x5ZjpuZXcgVWludDhBcnJheSh0LmJ1ZmZlcil9fXNjYWxlKGUpe2ZvcihsZXQgdD0wLGk9dGhpcy5nbHlwaHMubGVuZ3RoO3Q8aTt0KyspdGhpcy5nbHlwaHNbdF0uc2NhbGUoZVt0XSl9fWNsYXNzIEdseXBoe2NvbnN0cnVjdG9yKHtoZWFkZXI6ZT1udWxsLHNpbXBsZTp0PW51bGwsY29tcG9zaXRlczppPW51bGx9KXt0aGlzLmhlYWRlcj1lO3RoaXMuc2ltcGxlPXQ7dGhpcy5jb21wb3NpdGVzPWl9c3RhdGljIHBhcnNlKGUsdCl7Y29uc3RbaSxhXT1HbHlwaEhlYWRlci5wYXJzZShlLHQpO2UrPWk7aWYoYS5udW1iZXJPZkNvbnRvdXJzPDApe2NvbnN0IGk9W107Zm9yKDs7KXtjb25zdFthLHNdPUNvbXBvc2l0ZUdseXBoLnBhcnNlKGUsdCk7ZSs9YTtpLnB1c2gocyk7aWYoISgzMiZzLmZsYWdzKSlicmVha31yZXR1cm4gbmV3IEdseXBoKHtoZWFkZXI6YSxjb21wb3NpdGVzOml9KX1jb25zdCBzPVNpbXBsZUdseXBoLnBhcnNlKGUsdCxhLm51bWJlck9mQ29udG91cnMpO3JldHVybiBuZXcgR2x5cGgoe2hlYWRlcjphLHNpbXBsZTpzfSl9Z2V0U2l6ZSgpe2lmKCF0aGlzLmhlYWRlcilyZXR1cm4gMDtjb25zdCBlPXRoaXMuc2ltcGxlP3RoaXMuc2ltcGxlLmdldFNpemUoKTp0aGlzLmNvbXBvc2l0ZXMucmVkdWNlKCgoZSx0KT0+ZSt0LmdldFNpemUoKSksMCk7cmV0dXJuIHRoaXMuaGVhZGVyLmdldFNpemUoKStlfXdyaXRlKGUsdCl7aWYoIXRoaXMuaGVhZGVyKXJldHVybiAwO2NvbnN0IGk9ZTtlKz10aGlzLmhlYWRlci53cml0ZShlLHQpO2lmKHRoaXMuc2ltcGxlKWUrPXRoaXMuc2ltcGxlLndyaXRlKGUsdCk7ZWxzZSBmb3IoY29uc3QgaSBvZiB0aGlzLmNvbXBvc2l0ZXMpZSs9aS53cml0ZShlLHQpO3JldHVybiBlLWl9c2NhbGUoZSl7aWYoIXRoaXMuaGVhZGVyKXJldHVybjtjb25zdCB0PSh0aGlzLmhlYWRlci54TWluK3RoaXMuaGVhZGVyLnhNYXgpLzI7dGhpcy5oZWFkZXIuc2NhbGUodCxlKTtpZih0aGlzLnNpbXBsZSl0aGlzLnNpbXBsZS5zY2FsZSh0LGUpO2Vsc2UgZm9yKGNvbnN0IGkgb2YgdGhpcy5jb21wb3NpdGVzKWkuc2NhbGUodCxlKX19Y2xhc3MgR2x5cGhIZWFkZXJ7Y29uc3RydWN0b3Ioe251bWJlck9mQ29udG91cnM6ZSx4TWluOnQseU1pbjppLHhNYXg6YSx5TWF4OnN9KXt0aGlzLm51bWJlck9mQ29udG91cnM9ZTt0aGlzLnhNaW49dDt0aGlzLnlNaW49aTt0aGlzLnhNYXg9YTt0aGlzLnlNYXg9c31zdGF0aWMgcGFyc2UoZSx0KXtyZXR1cm5bMTAsbmV3IEdseXBoSGVhZGVyKHtudW1iZXJPZkNvbnRvdXJzOnQuZ2V0SW50MTYoZSkseE1pbjp0LmdldEludDE2KGUrMikseU1pbjp0LmdldEludDE2KGUrNCkseE1heDp0LmdldEludDE2KGUrNikseU1heDp0LmdldEludDE2KGUrOCl9KV19Z2V0U2l6ZSgpe3JldHVybiAxMH13cml0ZShlLHQpe3Quc2V0SW50MTYoZSx0aGlzLm51bWJlck9mQ29udG91cnMpO3Quc2V0SW50MTYoZSsyLHRoaXMueE1pbik7dC5zZXRJbnQxNihlKzQsdGhpcy55TWluKTt0LnNldEludDE2KGUrNix0aGlzLnhNYXgpO3Quc2V0SW50MTYoZSs4LHRoaXMueU1heCk7cmV0dXJuIDEwfXNjYWxlKGUsdCl7dGhpcy54TWluPU1hdGgucm91bmQoZSsodGhpcy54TWluLWUpKnQpO3RoaXMueE1heD1NYXRoLnJvdW5kKGUrKHRoaXMueE1heC1lKSp0KX19Y2xhc3MgQ29udG91cntjb25zdHJ1Y3Rvcih7ZmxhZ3M6ZSx4Q29vcmRpbmF0ZXM6dCx5Q29vcmRpbmF0ZXM6aX0pe3RoaXMueENvb3JkaW5hdGVzPXQ7dGhpcy55Q29vcmRpbmF0ZXM9aTt0aGlzLmZsYWdzPWV9fWNsYXNzIFNpbXBsZUdseXBoe2NvbnN0cnVjdG9yKHtjb250b3VyczplLGluc3RydWN0aW9uczp0fSl7dGhpcy5jb250b3Vycz1lO3RoaXMuaW5zdHJ1Y3Rpb25zPXR9c3RhdGljIHBhcnNlKGUsdCxpKXtjb25zdCBhPVtdO2ZvcihsZXQgcz0wO3M8aTtzKyspe2NvbnN0IGk9dC5nZXRVaW50MTYoZSk7ZSs9MjthLnB1c2goaSl9Y29uc3Qgcz1hW2ktMV0rMSxyPXQuZ2V0VWludDE2KGUpO2UrPTI7Y29uc3Qgbj1uZXcgVWludDhBcnJheSh0KS5zbGljZShlLGUrcik7ZSs9cjtjb25zdCBvPVtdO2ZvcihsZXQgaT0wO2k8cztlKyssaSsrKXtsZXQgYT10LmdldFVpbnQ4KGUpO28ucHVzaChhKTtpZig4JmEpe2NvbnN0IHM9dC5nZXRVaW50OCgrK2UpO2FePTg7Zm9yKGxldCBlPTA7ZTxzO2UrKylvLnB1c2goYSk7aSs9c319Y29uc3QgZz1bXTtsZXQgYz1bXSxDPVtdLGg9W107Y29uc3QgbD1bXTtsZXQgUT0wLEU9MDtmb3IobGV0IGk9MDtpPHM7aSsrKXtjb25zdCBzPW9baV07aWYoMiZzKXtjb25zdCBpPXQuZ2V0VWludDgoZSsrKTtFKz0xNiZzP2k6LWk7Yy5wdXNoKEUpfWVsc2UgaWYoMTYmcyljLnB1c2goRSk7ZWxzZXtFKz10LmdldEludDE2KGUpO2UrPTI7Yy5wdXNoKEUpfWlmKGFbUV09PT1pKXtRKys7Zy5wdXNoKGMpO2M9W119fUU9MDtRPTA7Zm9yKGxldCBpPTA7aTxzO2krKyl7Y29uc3Qgcz1vW2ldO2lmKDQmcyl7Y29uc3QgaT10LmdldFVpbnQ4KGUrKyk7RSs9MzImcz9pOi1pO0MucHVzaChFKX1lbHNlIGlmKDMyJnMpQy5wdXNoKEUpO2Vsc2V7RSs9dC5nZXRJbnQxNihlKTtlKz0yO0MucHVzaChFKX1oLnB1c2goMSZzfDY0JnMpO2lmKGFbUV09PT1pKXtjPWdbUV07USsrO2wucHVzaChuZXcgQ29udG91cih7ZmxhZ3M6aCx4Q29vcmRpbmF0ZXM6Yyx5Q29vcmRpbmF0ZXM6Q30pKTtDPVtdO2g9W119fXJldHVybiBuZXcgU2ltcGxlR2x5cGgoe2NvbnRvdXJzOmwsaW5zdHJ1Y3Rpb25zOm59KX1nZXRTaXplKCl7bGV0IGU9Mip0aGlzLmNvbnRvdXJzLmxlbmd0aCsyK3RoaXMuaW5zdHJ1Y3Rpb25zLmxlbmd0aCx0PTAsaT0wO2Zvcihjb25zdCBhIG9mIHRoaXMuY29udG91cnMpe2UrPWEuZmxhZ3MubGVuZ3RoO2ZvcihsZXQgcz0wLHI9YS54Q29vcmRpbmF0ZXMubGVuZ3RoO3M8cjtzKyspe2NvbnN0IHI9YS54Q29vcmRpbmF0ZXNbc10sbj1hLnlDb29yZGluYXRlc1tzXTtsZXQgbz1NYXRoLmFicyhyLXQpO28+MjU1P2UrPTI6bz4wJiYoZSs9MSk7dD1yO289TWF0aC5hYnMobi1pKTtvPjI1NT9lKz0yOm8+MCYmKGUrPTEpO2k9bn19cmV0dXJuIGV9d3JpdGUoZSx0KXtjb25zdCBpPWUsYT1bXSxzPVtdLHI9W107bGV0IG49MCxvPTA7Zm9yKGNvbnN0IGkgb2YgdGhpcy5jb250b3Vycyl7Zm9yKGxldCBlPTAsdD1pLnhDb29yZGluYXRlcy5sZW5ndGg7ZTx0O2UrKyl7bGV0IHQ9aS5mbGFnc1tlXTtjb25zdCBnPWkueENvb3JkaW5hdGVzW2VdO2xldCBjPWctbjtpZigwPT09Yyl7dHw9MTY7YS5wdXNoKDApfWVsc2V7Y29uc3QgZT1NYXRoLmFicyhjKTtpZihlPD0yNTUpe3R8PWM+PTA/MTg6MjthLnB1c2goZSl9ZWxzZSBhLnB1c2goYyl9bj1nO2NvbnN0IEM9aS55Q29vcmRpbmF0ZXNbZV07Yz1DLW87aWYoMD09PWMpe3R8PTMyO3MucHVzaCgwKX1lbHNle2NvbnN0IGU9TWF0aC5hYnMoYyk7aWYoZTw9MjU1KXt0fD1jPj0wPzM2OjQ7cy5wdXNoKGUpfWVsc2Ugcy5wdXNoKGMpfW89QztyLnB1c2godCl9dC5zZXRVaW50MTYoZSxhLmxlbmd0aC0xKTtlKz0yfXQuc2V0VWludDE2KGUsdGhpcy5pbnN0cnVjdGlvbnMubGVuZ3RoKTtlKz0yO2lmKHRoaXMuaW5zdHJ1Y3Rpb25zLmxlbmd0aCl7bmV3IFVpbnQ4QXJyYXkodC5idWZmZXIsMCx0LmJ1ZmZlci5ieXRlTGVuZ3RoKS5zZXQodGhpcy5pbnN0cnVjdGlvbnMsZSk7ZSs9dGhpcy5pbnN0cnVjdGlvbnMubGVuZ3RofWZvcihjb25zdCBpIG9mIHIpdC5zZXRVaW50OChlKyssaSk7Zm9yKGxldCBpPTAscz1hLmxlbmd0aDtpPHM7aSsrKXtjb25zdCBzPWFbaV0sbj1yW2ldO2lmKDImbil0LnNldFVpbnQ4KGUrKyxzKTtlbHNlIGlmKCEoMTYmbikpe3Quc2V0SW50MTYoZSxzKTtlKz0yfX1mb3IobGV0IGk9MCxhPXMubGVuZ3RoO2k8YTtpKyspe2NvbnN0IGE9c1tpXSxuPXJbaV07aWYoNCZuKXQuc2V0VWludDgoZSsrLGEpO2Vsc2UgaWYoISgzMiZuKSl7dC5zZXRJbnQxNihlLGEpO2UrPTJ9fXJldHVybiBlLWl9c2NhbGUoZSx0KXtmb3IoY29uc3QgaSBvZiB0aGlzLmNvbnRvdXJzKWlmKDAhPT1pLnhDb29yZGluYXRlcy5sZW5ndGgpZm9yKGxldCBhPTAscz1pLnhDb29yZGluYXRlcy5sZW5ndGg7YTxzO2ErKylpLnhDb29yZGluYXRlc1thXT1NYXRoLnJvdW5kKGUrKGkueENvb3JkaW5hdGVzW2FdLWUpKnQpfX1jbGFzcyBDb21wb3NpdGVHbHlwaHtjb25zdHJ1Y3Rvcih7ZmxhZ3M6ZSxnbHlwaEluZGV4OnQsYXJndW1lbnQxOmksYXJndW1lbnQyOmEsdHJhbnNmOnMsaW5zdHJ1Y3Rpb25zOnJ9KXt0aGlzLmZsYWdzPWU7dGhpcy5nbHlwaEluZGV4PXQ7dGhpcy5hcmd1bWVudDE9aTt0aGlzLmFyZ3VtZW50Mj1hO3RoaXMudHJhbnNmPXM7dGhpcy5pbnN0cnVjdGlvbnM9cn1zdGF0aWMgcGFyc2UoZSx0KXtjb25zdCBpPWUsYT1bXTtsZXQgcz10LmdldFVpbnQxNihlKTtjb25zdCByPXQuZ2V0VWludDE2KGUrMik7ZSs9NDtsZXQgbixvO2lmKDEmcyl7aWYoMiZzKXtuPXQuZ2V0SW50MTYoZSk7bz10LmdldEludDE2KGUrMil9ZWxzZXtuPXQuZ2V0VWludDE2KGUpO289dC5nZXRVaW50MTYoZSsyKX1lKz00O3NePTF9ZWxzZXtpZigyJnMpe249dC5nZXRJbnQ4KGUpO289dC5nZXRJbnQ4KGUrMSl9ZWxzZXtuPXQuZ2V0VWludDgoZSk7bz10LmdldFVpbnQ4KGUrMSl9ZSs9Mn1pZig4JnMpe2EucHVzaCh0LmdldFVpbnQxNihlKSk7ZSs9Mn1lbHNlIGlmKDY0JnMpe2EucHVzaCh0LmdldFVpbnQxNihlKSx0LmdldFVpbnQxNihlKzIpKTtlKz00fWVsc2UgaWYoMTI4JnMpe2EucHVzaCh0LmdldFVpbnQxNihlKSx0LmdldFVpbnQxNihlKzIpLHQuZ2V0VWludDE2KGUrNCksdC5nZXRVaW50MTYoZSs2KSk7ZSs9OH1sZXQgZz1udWxsO2lmKDI1NiZzKXtjb25zdCBpPXQuZ2V0VWludDE2KGUpO2UrPTI7Zz1uZXcgVWludDhBcnJheSh0KS5zbGljZShlLGUraSk7ZSs9aX1yZXR1cm5bZS1pLG5ldyBDb21wb3NpdGVHbHlwaCh7ZmxhZ3M6cyxnbHlwaEluZGV4OnIsYXJndW1lbnQxOm4sYXJndW1lbnQyOm8sdHJhbnNmOmEsaW5zdHJ1Y3Rpb25zOmd9KV19Z2V0U2l6ZSgpe2xldCBlPTQrMip0aGlzLnRyYW5zZi5sZW5ndGg7MjU2JnRoaXMuZmxhZ3MmJihlKz0yK3RoaXMuaW5zdHJ1Y3Rpb25zLmxlbmd0aCk7ZSs9MjsyJnRoaXMuZmxhZ3M/dGhpcy5hcmd1bWVudDE+PS0xMjgmJnRoaXMuYXJndW1lbnQxPD0xMjcmJnRoaXMuYXJndW1lbnQyPj0tMTI4JiZ0aGlzLmFyZ3VtZW50Mjw9MTI3fHwoZSs9Mik6dGhpcy5hcmd1bWVudDE+PTAmJnRoaXMuYXJndW1lbnQxPD0yNTUmJnRoaXMuYXJndW1lbnQyPj0wJiZ0aGlzLmFyZ3VtZW50Mjw9MjU1fHwoZSs9Mik7cmV0dXJuIGV9d3JpdGUoZSx0KXtjb25zdCBpPWU7MiZ0aGlzLmZsYWdzP3RoaXMuYXJndW1lbnQxPj0tMTI4JiZ0aGlzLmFyZ3VtZW50MTw9MTI3JiZ0aGlzLmFyZ3VtZW50Mj49LTEyOCYmdGhpcy5hcmd1bWVudDI8PTEyN3x8KHRoaXMuZmxhZ3N8PTEpOnRoaXMuYXJndW1lbnQxPj0wJiZ0aGlzLmFyZ3VtZW50MTw9MjU1JiZ0aGlzLmFyZ3VtZW50Mj49MCYmdGhpcy5hcmd1bWVudDI8PTI1NXx8KHRoaXMuZmxhZ3N8PTEpO3Quc2V0VWludDE2KGUsdGhpcy5mbGFncyk7dC5zZXRVaW50MTYoZSsyLHRoaXMuZ2x5cGhJbmRleCk7ZSs9NDtpZigxJnRoaXMuZmxhZ3Mpe2lmKDImdGhpcy5mbGFncyl7dC5zZXRJbnQxNihlLHRoaXMuYXJndW1lbnQxKTt0LnNldEludDE2KGUrMix0aGlzLmFyZ3VtZW50Mil9ZWxzZXt0LnNldFVpbnQxNihlLHRoaXMuYXJndW1lbnQxKTt0LnNldFVpbnQxNihlKzIsdGhpcy5hcmd1bWVudDIpfWUrPTR9ZWxzZXt0LnNldFVpbnQ4KGUsdGhpcy5hcmd1bWVudDEpO3Quc2V0VWludDgoZSsxLHRoaXMuYXJndW1lbnQyKTtlKz0yfWlmKDI1NiZ0aGlzLmZsYWdzKXt0LnNldFVpbnQxNihlLHRoaXMuaW5zdHJ1Y3Rpb25zLmxlbmd0aCk7ZSs9MjtpZih0aGlzLmluc3RydWN0aW9ucy5sZW5ndGgpe25ldyBVaW50OEFycmF5KHQuYnVmZmVyLDAsdC5idWZmZXIuYnl0ZUxlbmd0aCkuc2V0KHRoaXMuaW5zdHJ1Y3Rpb25zLGUpO2UrPXRoaXMuaW5zdHJ1Y3Rpb25zLmxlbmd0aH19cmV0dXJuIGUtaX1zY2FsZShlLHQpe319ZnVuY3Rpb24gd3JpdGVJbnQxNihlLHQsaSl7ZVt0XT1pPj44JjI1NTtlW3QrMV09MjU1Jml9ZnVuY3Rpb24gd3JpdGVJbnQzMihlLHQsaSl7ZVt0XT1pPj4yNCYyNTU7ZVt0KzFdPWk+PjE2JjI1NTtlW3QrMl09aT4+OCYyNTU7ZVt0KzNdPTI1NSZpfWZ1bmN0aW9uIHdyaXRlRGF0YShlLHQsaSl7aWYoaSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpZS5zZXQoaSx0KTtlbHNlIGlmKCJzdHJpbmciPT10eXBlb2YgaSlmb3IobGV0IGE9MCxzPWkubGVuZ3RoO2E8czthKyspZVt0KytdPTI1NSZpLmNoYXJDb2RlQXQoYSk7ZWxzZSBmb3IoY29uc3QgYSBvZiBpKWVbdCsrXT0yNTUmYX1jbGFzcyBPcGVuVHlwZUZpbGVCdWlsZGVye2NvbnN0cnVjdG9yKGUpe3RoaXMuc2ZudD1lO3RoaXMudGFibGVzPU9iamVjdC5jcmVhdGUobnVsbCl9c3RhdGljIGdldFNlYXJjaFBhcmFtcyhlLHQpe2xldCBpPTEsYT0wO2Zvcig7KGleZSk+aTspe2k8PD0xO2ErK31jb25zdCBzPWkqdDtyZXR1cm57cmFuZ2U6cyxlbnRyeTphLHJhbmdlU2hpZnQ6dCplLXN9fXRvQXJyYXkoKXtsZXQgZT10aGlzLnNmbnQ7Y29uc3QgdD10aGlzLnRhYmxlcyxpPU9iamVjdC5rZXlzKHQpO2kuc29ydCgpO2NvbnN0IGE9aS5sZW5ndGg7bGV0IHMscixuLG8sZyxjPTEyKzE2KmE7Y29uc3QgQz1bY107Zm9yKHM9MDtzPGE7cysrKXtvPXRbaVtzXV07Yys9KG8ubGVuZ3RoKzMmLTQpPj4+MDtDLnB1c2goYyl9Y29uc3QgaD1uZXcgVWludDhBcnJheShjKTtmb3Iocz0wO3M8YTtzKyspe289dFtpW3NdXTt3cml0ZURhdGEoaCxDW3NdLG8pfSJ0cnVlIj09PWUmJihlPXN0cmluZzMyKDY1NTM2KSk7aFswXT0yNTUmZS5jaGFyQ29kZUF0KDApO2hbMV09MjU1JmUuY2hhckNvZGVBdCgxKTtoWzJdPTI1NSZlLmNoYXJDb2RlQXQoMik7aFszXT0yNTUmZS5jaGFyQ29kZUF0KDMpO3dyaXRlSW50MTYoaCw0LGEpO2NvbnN0IGw9T3BlblR5cGVGaWxlQnVpbGRlci5nZXRTZWFyY2hQYXJhbXMoYSwxNik7d3JpdGVJbnQxNihoLDYsbC5yYW5nZSk7d3JpdGVJbnQxNihoLDgsbC5lbnRyeSk7d3JpdGVJbnQxNihoLDEwLGwucmFuZ2VTaGlmdCk7Yz0xMjtmb3Iocz0wO3M8YTtzKyspe2c9aVtzXTtoW2NdPTI1NSZnLmNoYXJDb2RlQXQoMCk7aFtjKzFdPTI1NSZnLmNoYXJDb2RlQXQoMSk7aFtjKzJdPTI1NSZnLmNoYXJDb2RlQXQoMik7aFtjKzNdPTI1NSZnLmNoYXJDb2RlQXQoMyk7bGV0IGU9MDtmb3Iocj1DW3NdLG49Q1tzKzFdO3I8bjtyKz00KXtlPWUrcmVhZFVpbnQzMihoLHIpPj4+MH13cml0ZUludDMyKGgsYys0LGUpO3dyaXRlSW50MzIoaCxjKzgsQ1tzXSk7d3JpdGVJbnQzMihoLGMrMTIsdFtnXS5sZW5ndGgpO2MrPTE2fXJldHVybiBofWFkZFRhYmxlKGUsdCl7aWYoZSBpbiB0aGlzLnRhYmxlcyl0aHJvdyBuZXcgRXJyb3IoIlRhYmxlICIrZSsiIGFscmVhZHkgZXhpc3RzIik7dGhpcy50YWJsZXNbZV09dH19Y29uc3QgdGE9WzRdLGlhPVs1XSxhYT1bNl0sc2E9WzddLHJhPVs4XSxuYT1bMTIsMzVdLG9hPVsxNF0sZ2E9WzIxXSxJYT1bMjJdLGNhPVszMF0sQ2E9WzMxXTtjbGFzcyBUeXBlMUNoYXJTdHJpbmd7Y29uc3RydWN0b3IoKXt0aGlzLndpZHRoPTA7dGhpcy5sc2I9MDt0aGlzLmZsZXhpbmc9ITE7dGhpcy5vdXRwdXQ9W107dGhpcy5zdGFjaz1bXX1jb252ZXJ0KGUsdCxpKXtjb25zdCBhPWUubGVuZ3RoO2xldCBzLHIsbixvPSExO2ZvcihsZXQgZz0wO2c8YTtnKyspe2xldCBhPWVbZ107aWYoYTwzMil7MTI9PT1hJiYoYT0oYTw8OCkrZVsrK2ddKTtzd2l0Y2goYSl7Y2FzZSAxOmNhc2UgMzpjYXNlIDk6Y2FzZSAzMDcyOmNhc2UgMzA3MzpjYXNlIDMwNzQ6Y2FzZSAzMTA1OnRoaXMuc3RhY2s9W107YnJlYWs7Y2FzZSA0OmlmKHRoaXMuZmxleGluZyl7aWYodGhpcy5zdGFjay5sZW5ndGg8MSl7bz0hMDticmVha31jb25zdCBlPXRoaXMuc3RhY2sucG9wKCk7dGhpcy5zdGFjay5wdXNoKDAsZSk7YnJlYWt9bz10aGlzLmV4ZWN1dGVDb21tYW5kKDEsdGEpO2JyZWFrO2Nhc2UgNTpvPXRoaXMuZXhlY3V0ZUNvbW1hbmQoMixpYSk7YnJlYWs7Y2FzZSA2Om89dGhpcy5leGVjdXRlQ29tbWFuZCgxLGFhKTticmVhaztjYXNlIDc6bz10aGlzLmV4ZWN1dGVDb21tYW5kKDEsc2EpO2JyZWFrO2Nhc2UgODpvPXRoaXMuZXhlY3V0ZUNvbW1hbmQoNixyYSk7YnJlYWs7Y2FzZSAxMDppZih0aGlzLnN0YWNrLmxlbmd0aDwxKXtvPSEwO2JyZWFrfW49dGhpcy5zdGFjay5wb3AoKTtpZighdFtuXSl7bz0hMDticmVha31vPXRoaXMuY29udmVydCh0W25dLHQsaSk7YnJlYWs7Y2FzZSAxMTpyZXR1cm4gbztjYXNlIDEzOmlmKHRoaXMuc3RhY2subGVuZ3RoPDIpe289ITA7YnJlYWt9cz10aGlzLnN0YWNrLnBvcCgpO3I9dGhpcy5zdGFjay5wb3AoKTt0aGlzLmxzYj1yO3RoaXMud2lkdGg9czt0aGlzLnN0YWNrLnB1c2gocyxyKTtvPXRoaXMuZXhlY3V0ZUNvbW1hbmQoMixJYSk7YnJlYWs7Y2FzZSAxNDp0aGlzLm91dHB1dC5wdXNoKG9hWzBdKTticmVhaztjYXNlIDIxOmlmKHRoaXMuZmxleGluZylicmVhaztvPXRoaXMuZXhlY3V0ZUNvbW1hbmQoMixnYSk7YnJlYWs7Y2FzZSAyMjppZih0aGlzLmZsZXhpbmcpe3RoaXMuc3RhY2sucHVzaCgwKTticmVha31vPXRoaXMuZXhlY3V0ZUNvbW1hbmQoMSxJYSk7YnJlYWs7Y2FzZSAzMDpvPXRoaXMuZXhlY3V0ZUNvbW1hbmQoNCxjYSk7YnJlYWs7Y2FzZSAzMTpvPXRoaXMuZXhlY3V0ZUNvbW1hbmQoNCxDYSk7YnJlYWs7Y2FzZSAzMDc4OmlmKGkpe2NvbnN0IGU9dGhpcy5zdGFjay5hdCgtNSk7dGhpcy5zZWFjPXRoaXMuc3RhY2suc3BsaWNlKC00LDQpO3RoaXMuc2VhY1swXSs9dGhpcy5sc2ItZTtvPXRoaXMuZXhlY3V0ZUNvbW1hbmQoMCxvYSl9ZWxzZSBvPXRoaXMuZXhlY3V0ZUNvbW1hbmQoNCxvYSk7YnJlYWs7Y2FzZSAzMDc5OmlmKHRoaXMuc3RhY2subGVuZ3RoPDQpe289ITA7YnJlYWt9dGhpcy5zdGFjay5wb3AoKTtzPXRoaXMuc3RhY2sucG9wKCk7Y29uc3QgZT10aGlzLnN0YWNrLnBvcCgpO3I9dGhpcy5zdGFjay5wb3AoKTt0aGlzLmxzYj1yO3RoaXMud2lkdGg9czt0aGlzLnN0YWNrLnB1c2gocyxyLGUpO289dGhpcy5leGVjdXRlQ29tbWFuZCgzLGdhKTticmVhaztjYXNlIDMwODQ6aWYodGhpcy5zdGFjay5sZW5ndGg8Mil7bz0hMDticmVha31jb25zdCBnPXRoaXMuc3RhY2sucG9wKCksYz10aGlzLnN0YWNrLnBvcCgpO3RoaXMuc3RhY2sucHVzaChjL2cpO2JyZWFrO2Nhc2UgMzA4ODppZih0aGlzLnN0YWNrLmxlbmd0aDwyKXtvPSEwO2JyZWFrfW49dGhpcy5zdGFjay5wb3AoKTtjb25zdCBDPXRoaXMuc3RhY2sucG9wKCk7aWYoMD09PW4mJjM9PT1DKXtjb25zdCBlPXRoaXMuc3RhY2suc3BsaWNlKC0xNywxNyk7dGhpcy5zdGFjay5wdXNoKGVbMl0rZVswXSxlWzNdK2VbMV0sZVs0XSxlWzVdLGVbNl0sZVs3XSxlWzhdLGVbOV0sZVsxMF0sZVsxMV0sZVsxMl0sZVsxM10sZVsxNF0pO289dGhpcy5leGVjdXRlQ29tbWFuZCgxMyxuYSwhMCk7dGhpcy5mbGV4aW5nPSExO3RoaXMuc3RhY2sucHVzaChlWzE1XSxlWzE2XSl9ZWxzZSAxPT09biYmMD09PUMmJih0aGlzLmZsZXhpbmc9ITApO2JyZWFrO2Nhc2UgMzA4OTpicmVhaztkZWZhdWx0Ondhcm4oJ1Vua25vd24gdHlwZSAxIGNoYXJzdHJpbmcgY29tbWFuZCBvZiAiJythKyciJyl9aWYobylicmVha31lbHNle2E8PTI0Nj9hLT0xMzk6YT1hPD0yNTA/MjU2KihhLTI0NykrZVsrK2ddKzEwODphPD0yNTQ/LTI1NiooYS0yNTEpLWVbKytnXS0xMDg6KDI1NSZlWysrZ10pPDwyNHwoMjU1JmVbKytnXSk8PDE2fCgyNTUmZVsrK2ddKTw8OHwoMjU1JmVbKytnXSk8PDA7dGhpcy5zdGFjay5wdXNoKGEpfX1yZXR1cm4gb31leGVjdXRlQ29tbWFuZChlLHQsaSl7Y29uc3QgYT10aGlzLnN0YWNrLmxlbmd0aDtpZihlPmEpcmV0dXJuITA7Y29uc3Qgcz1hLWU7Zm9yKGxldCBlPXM7ZTxhO2UrKyl7bGV0IHQ9dGhpcy5zdGFja1tlXTtpZihOdW1iZXIuaXNJbnRlZ2VyKHQpKXRoaXMub3V0cHV0LnB1c2goMjgsdD4+OCYyNTUsMjU1JnQpO2Vsc2V7dD02NTUzNip0fDA7dGhpcy5vdXRwdXQucHVzaCgyNTUsdD4+MjQmMjU1LHQ+PjE2JjI1NSx0Pj44JjI1NSwyNTUmdCl9fXRoaXMub3V0cHV0LnB1c2goLi4udCk7aT90aGlzLnN0YWNrLnNwbGljZShzLGUpOnRoaXMuc3RhY2subGVuZ3RoPTA7cmV0dXJuITF9fWZ1bmN0aW9uIGlzSGV4RGlnaXQoZSl7cmV0dXJuIGU+PTQ4JiZlPD01N3x8ZT49NjUmJmU8PTcwfHxlPj05NyYmZTw9MTAyfWZ1bmN0aW9uIGRlY3J5cHQoZSx0LGkpe2lmKGk+PWUubGVuZ3RoKXJldHVybiBuZXcgVWludDhBcnJheSgwKTtsZXQgYSxzLHI9MHx0O2ZvcihhPTA7YTxpO2ErKylyPTUyODQ1KihlW2FdK3IpKzIyNzE5JjY1NTM1O2NvbnN0IG49ZS5sZW5ndGgtaSxvPW5ldyBVaW50OEFycmF5KG4pO2ZvcihhPWkscz0wO3M8bjthKysscysrKXtjb25zdCB0PWVbYV07b1tzXT10XnI+Pjg7cj01Mjg0NSoodCtyKSsyMjcxOSY2NTUzNX1yZXR1cm4gb31mdW5jdGlvbiBpc1NwZWNpYWwoZSl7cmV0dXJuIDQ3PT09ZXx8OTE9PT1lfHw5Mz09PWV8fDEyMz09PWV8fDEyNT09PWV8fDQwPT09ZXx8NDE9PT1lfWNsYXNzIFR5cGUxUGFyc2Vye2NvbnN0cnVjdG9yKGUsdCxpKXtpZih0KXtjb25zdCB0PWUuZ2V0Qnl0ZXMoKSxpPSEoKGlzSGV4RGlnaXQodFswXSl8fGlzV2hpdGVTcGFjZSh0WzBdKSkmJmlzSGV4RGlnaXQodFsxXSkmJmlzSGV4RGlnaXQodFsyXSkmJmlzSGV4RGlnaXQodFszXSkmJmlzSGV4RGlnaXQodFs0XSkmJmlzSGV4RGlnaXQodFs1XSkmJmlzSGV4RGlnaXQodFs2XSkmJmlzSGV4RGlnaXQodFs3XSkpO2U9bmV3IFN0cmVhbShpP2RlY3J5cHQodCw1NTY2NSw0KTpmdW5jdGlvbiBkZWNyeXB0QXNjaWkoZSx0LGkpe2xldCBhPTB8dDtjb25zdCBzPWUubGVuZ3RoLHI9bmV3IFVpbnQ4QXJyYXkocz4+PjEpO2xldCBuLG87Zm9yKG49MCxvPTA7bjxzO24rKyl7Y29uc3QgdD1lW25dO2lmKCFpc0hleERpZ2l0KHQpKWNvbnRpbnVlO24rKztsZXQgaTtmb3IoO248cyYmIWlzSGV4RGlnaXQoaT1lW25dKTspbisrO2lmKG48cyl7Y29uc3QgZT1wYXJzZUludChTdHJpbmcuZnJvbUNoYXJDb2RlKHQsaSksMTYpO3JbbysrXT1lXmE+Pjg7YT01Mjg0NSooZSthKSsyMjcxOSY2NTUzNX19cmV0dXJuIHIuc2xpY2UoaSxvKX0odCw1NTY2NSw0KSl9dGhpcy5zZWFjQW5hbHlzaXNFbmFibGVkPSEhaTt0aGlzLnN0cmVhbT1lO3RoaXMubmV4dENoYXIoKX1yZWFkTnVtYmVyQXJyYXkoKXt0aGlzLmdldFRva2VuKCk7Y29uc3QgZT1bXTtmb3IoOzspe2NvbnN0IHQ9dGhpcy5nZXRUb2tlbigpO2lmKG51bGw9PT10fHwiXSI9PT10fHwifSI9PT10KWJyZWFrO2UucHVzaChwYXJzZUZsb2F0KHR8fDApKX1yZXR1cm4gZX1yZWFkTnVtYmVyKCl7Y29uc3QgZT10aGlzLmdldFRva2VuKCk7cmV0dXJuIHBhcnNlRmxvYXQoZXx8MCl9cmVhZEludCgpe2NvbnN0IGU9dGhpcy5nZXRUb2tlbigpO3JldHVybiAwfHBhcnNlSW50KGV8fDAsMTApfXJlYWRCb29sZWFuKCl7cmV0dXJuInRydWUiPT09dGhpcy5nZXRUb2tlbigpPzE6MH1uZXh0Q2hhcigpe3JldHVybiB0aGlzLmN1cnJlbnRDaGFyPXRoaXMuc3RyZWFtLmdldEJ5dGUoKX1wcmV2Q2hhcigpe3RoaXMuc3RyZWFtLnNraXAoLTIpO3JldHVybiB0aGlzLmN1cnJlbnRDaGFyPXRoaXMuc3RyZWFtLmdldEJ5dGUoKX1nZXRUb2tlbigpe2xldCBlPSExLHQ9dGhpcy5jdXJyZW50Q2hhcjtmb3IoOzspe2lmKC0xPT09dClyZXR1cm4gbnVsbDtpZihlKTEwIT09dCYmMTMhPT10fHwoZT0hMSk7ZWxzZSBpZigzNz09PXQpZT0hMDtlbHNlIGlmKCFpc1doaXRlU3BhY2UodCkpYnJlYWs7dD10aGlzLm5leHRDaGFyKCl9aWYoaXNTcGVjaWFsKHQpKXt0aGlzLm5leHRDaGFyKCk7cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUodCl9bGV0IGk9IiI7ZG97aSs9U3RyaW5nLmZyb21DaGFyQ29kZSh0KTt0PXRoaXMubmV4dENoYXIoKX13aGlsZSh0Pj0wJiYhaXNXaGl0ZVNwYWNlKHQpJiYhaXNTcGVjaWFsKHQpKTtyZXR1cm4gaX1yZWFkQ2hhclN0cmluZ3MoZSx0KXtyZXR1cm4tMT09PXQ/ZTpkZWNyeXB0KGUsNDMzMCx0KX1leHRyYWN0Rm9udFByb2dyYW0oZSl7Y29uc3QgdD10aGlzLnN0cmVhbSxpPVtdLGE9W10scz1PYmplY3QuY3JlYXRlKG51bGwpO3MubGVuSVY9NDtjb25zdCByPXtzdWJyczpbXSxjaGFyc3RyaW5nczpbXSxwcm9wZXJ0aWVzOntwcml2YXRlRGF0YTpzfX07bGV0IG4sbyxnLGM7Zm9yKDtudWxsIT09KG49dGhpcy5nZXRUb2tlbigpKTspaWYoIi8iPT09bil7bj10aGlzLmdldFRva2VuKCk7c3dpdGNoKG4pe2Nhc2UiQ2hhclN0cmluZ3MiOnRoaXMuZ2V0VG9rZW4oKTt0aGlzLmdldFRva2VuKCk7dGhpcy5nZXRUb2tlbigpO3RoaXMuZ2V0VG9rZW4oKTtmb3IoOzspe249dGhpcy5nZXRUb2tlbigpO2lmKG51bGw9PT1ufHwiZW5kIj09PW4pYnJlYWs7aWYoIi8iIT09biljb250aW51ZTtjb25zdCBlPXRoaXMuZ2V0VG9rZW4oKTtvPXRoaXMucmVhZEludCgpO3RoaXMuZ2V0VG9rZW4oKTtnPW8+MD90LmdldEJ5dGVzKG8pOm5ldyBVaW50OEFycmF5KDApO2M9ci5wcm9wZXJ0aWVzLnByaXZhdGVEYXRhLmxlbklWO2NvbnN0IGk9dGhpcy5yZWFkQ2hhclN0cmluZ3MoZyxjKTt0aGlzLm5leHRDaGFyKCk7bj10aGlzLmdldFRva2VuKCk7Im5vYWNjZXNzIj09PW4/dGhpcy5nZXRUb2tlbigpOiIvIj09PW4mJnRoaXMucHJldkNoYXIoKTthLnB1c2goe2dseXBoOmUsZW5jb2RlZDppfSl9YnJlYWs7Y2FzZSJTdWJycyI6dGhpcy5yZWFkSW50KCk7dGhpcy5nZXRUb2tlbigpO2Zvcig7ImR1cCI9PT10aGlzLmdldFRva2VuKCk7KXtjb25zdCBlPXRoaXMucmVhZEludCgpO289dGhpcy5yZWFkSW50KCk7dGhpcy5nZXRUb2tlbigpO2c9bz4wP3QuZ2V0Qnl0ZXMobyk6bmV3IFVpbnQ4QXJyYXkoMCk7Yz1yLnByb3BlcnRpZXMucHJpdmF0ZURhdGEubGVuSVY7Y29uc3QgYT10aGlzLnJlYWRDaGFyU3RyaW5ncyhnLGMpO3RoaXMubmV4dENoYXIoKTtuPXRoaXMuZ2V0VG9rZW4oKTsibm9hY2Nlc3MiPT09biYmdGhpcy5nZXRUb2tlbigpO2lbZV09YX1icmVhaztjYXNlIkJsdWVWYWx1ZXMiOmNhc2UiT3RoZXJCbHVlcyI6Y2FzZSJGYW1pbHlCbHVlcyI6Y2FzZSJGYW1pbHlPdGhlckJsdWVzIjpjb25zdCBlPXRoaXMucmVhZE51bWJlckFycmF5KCk7ZS5sZW5ndGg+MCYmZS5sZW5ndGgsMDticmVhaztjYXNlIlN0ZW1TbmFwSCI6Y2FzZSJTdGVtU25hcFYiOnIucHJvcGVydGllcy5wcml2YXRlRGF0YVtuXT10aGlzLnJlYWROdW1iZXJBcnJheSgpO2JyZWFrO2Nhc2UiU3RkSFciOmNhc2UiU3RkVlciOnIucHJvcGVydGllcy5wcml2YXRlRGF0YVtuXT10aGlzLnJlYWROdW1iZXJBcnJheSgpWzBdO2JyZWFrO2Nhc2UiQmx1ZVNoaWZ0IjpjYXNlImxlbklWIjpjYXNlIkJsdWVGdXp6IjpjYXNlIkJsdWVTY2FsZSI6Y2FzZSJMYW5ndWFnZUdyb3VwIjpyLnByb3BlcnRpZXMucHJpdmF0ZURhdGFbbl09dGhpcy5yZWFkTnVtYmVyKCk7YnJlYWs7Y2FzZSJFeHBhbnNpb25GYWN0b3IiOnIucHJvcGVydGllcy5wcml2YXRlRGF0YVtuXT10aGlzLnJlYWROdW1iZXIoKXx8LjA2O2JyZWFrO2Nhc2UiRm9yY2VCb2xkIjpyLnByb3BlcnRpZXMucHJpdmF0ZURhdGFbbl09dGhpcy5yZWFkQm9vbGVhbigpfX1mb3IoY29uc3R7ZW5jb2RlZDp0LGdseXBoOnN9b2YgYSl7Y29uc3QgYT1uZXcgVHlwZTFDaGFyU3RyaW5nLG49YS5jb252ZXJ0KHQsaSx0aGlzLnNlYWNBbmFseXNpc0VuYWJsZWQpO2xldCBvPWEub3V0cHV0O24mJihvPVsxNF0pO2NvbnN0IGc9e2dseXBoTmFtZTpzLGNoYXJzdHJpbmc6byx3aWR0aDphLndpZHRoLGxzYjphLmxzYixzZWFjOmEuc2VhY307Ii5ub3RkZWYiPT09cz9yLmNoYXJzdHJpbmdzLnVuc2hpZnQoZyk6ci5jaGFyc3RyaW5ncy5wdXNoKGcpO2lmKGUuYnVpbHRJbkVuY29kaW5nKXtjb25zdCB0PWUuYnVpbHRJbkVuY29kaW5nLmluZGV4T2Yocyk7dD4tMSYmdm9pZCAwPT09ZS53aWR0aHNbdF0mJnQ+PWUuZmlyc3RDaGFyJiZ0PD1lLmxhc3RDaGFyJiYoZS53aWR0aHNbdF09YS53aWR0aCl9fXJldHVybiByfWV4dHJhY3RGb250SGVhZGVyKGUpe2xldCB0O2Zvcig7bnVsbCE9PSh0PXRoaXMuZ2V0VG9rZW4oKSk7KWlmKCIvIj09PXQpe3Q9dGhpcy5nZXRUb2tlbigpO3N3aXRjaCh0KXtjYXNlIkZvbnRNYXRyaXgiOmNvbnN0IGk9dGhpcy5yZWFkTnVtYmVyQXJyYXkoKTtlLmZvbnRNYXRyaXg9aTticmVhaztjYXNlIkVuY29kaW5nIjpjb25zdCBhPXRoaXMuZ2V0VG9rZW4oKTtsZXQgcztpZigvXlxkKyQvLnRlc3QoYSkpe3M9W107Y29uc3QgZT0wfHBhcnNlSW50KGEsMTApO3RoaXMuZ2V0VG9rZW4oKTtmb3IobGV0IGk9MDtpPGU7aSsrKXt0PXRoaXMuZ2V0VG9rZW4oKTtmb3IoOyJkdXAiIT09dCYmImRlZiIhPT10Oyl7dD10aGlzLmdldFRva2VuKCk7aWYobnVsbD09PXQpcmV0dXJufWlmKCJkZWYiPT09dClicmVhaztjb25zdCBlPXRoaXMucmVhZEludCgpO3RoaXMuZ2V0VG9rZW4oKTtjb25zdCBpPXRoaXMuZ2V0VG9rZW4oKTtzW2VdPWk7dGhpcy5nZXRUb2tlbigpfX1lbHNlIHM9Z2V0RW5jb2RpbmcoYSk7ZS5idWlsdEluRW5jb2Rpbmc9czticmVhaztjYXNlIkZvbnRCQm94Ijpjb25zdCByPXRoaXMucmVhZE51bWJlckFycmF5KCk7ZS5hc2NlbnQ9TWF0aC5tYXgoclszXSxyWzFdKTtlLmRlc2NlbnQ9TWF0aC5taW4oclsxXSxyWzNdKTtlLmFzY2VudFNjYWxlZD0hMH19fX1mdW5jdGlvbiBmaW5kQmxvY2soZSx0LGkpe2NvbnN0IGE9ZS5sZW5ndGgscz10Lmxlbmd0aCxyPWEtcztsZXQgbj1pLG89ITE7Zm9yKDtuPHI7KXtsZXQgaT0wO2Zvcig7aTxzJiZlW24raV09PT10W2ldOylpKys7aWYoaT49cyl7bis9aTtmb3IoO248YSYmaXNXaGl0ZVNwYWNlKGVbbl0pOyluKys7bz0hMDticmVha31uKyt9cmV0dXJue2ZvdW5kOm8sbGVuZ3RoOm59fWNsYXNzIFR5cGUxRm9udHtjb25zdHJ1Y3RvcihlLHQsaSl7bGV0IGE9aS5sZW5ndGgxLHM9aS5sZW5ndGgyLHI9dC5wZWVrQnl0ZXMoNik7Y29uc3Qgbj0xMjg9PT1yWzBdJiYxPT09clsxXTtpZihuKXt0LnNraXAoNik7YT1yWzVdPDwyNHxyWzRdPDwxNnxyWzNdPDw4fHJbMl19Y29uc3Qgbz1mdW5jdGlvbiBnZXRIZWFkZXJCbG9jayhlLHQpe2NvbnN0IGk9WzEwMSwxMDEsMTIwLDEwMSw5OV0sYT1lLnBvcztsZXQgcyxyLG4sbzt0cnl7cz1lLmdldEJ5dGVzKHQpO3I9cy5sZW5ndGh9Y2F0Y2h7fWlmKHI9PT10KXtuPWZpbmRCbG9jayhzLGksdC0yKmkubGVuZ3RoKTtpZihuLmZvdW5kJiZuLmxlbmd0aD09PXQpcmV0dXJue3N0cmVhbTpuZXcgU3RyZWFtKHMpLGxlbmd0aDp0fX13YXJuKCdJbnZhbGlkICJMZW5ndGgxIiBwcm9wZXJ0eSBpbiBUeXBlMSBmb250IC0tIHRyeWluZyB0byByZWNvdmVyLicpO2UucG9zPWE7Zm9yKDs7KXtuPWZpbmRCbG9jayhlLnBlZWtCeXRlcygyMDQ4KSxpLDApO2lmKDA9PT1uLmxlbmd0aClicmVhaztlLnBvcys9bi5sZW5ndGg7aWYobi5mb3VuZCl7bz1lLnBvcy1hO2JyZWFrfX1lLnBvcz1hO2lmKG8pcmV0dXJue3N0cmVhbTpuZXcgU3RyZWFtKGUuZ2V0Qnl0ZXMobykpLGxlbmd0aDpvfTt3YXJuKCdVbmFibGUgdG8gcmVjb3ZlciAiTGVuZ3RoMSIgcHJvcGVydHkgaW4gVHlwZTEgZm9udCAtLSB1c2luZyBhcyBpcy4nKTtyZXR1cm57c3RyZWFtOm5ldyBTdHJlYW0oZS5nZXRCeXRlcyh0KSksbGVuZ3RoOnR9fSh0LGEpO25ldyBUeXBlMVBhcnNlcihvLnN0cmVhbSwhMSxZaSkuZXh0cmFjdEZvbnRIZWFkZXIoaSk7aWYobil7cj10LmdldEJ5dGVzKDYpO3M9cls1XTw8MjR8cls0XTw8MTZ8clszXTw8OHxyWzJdfWNvbnN0IGc9ZnVuY3Rpb24gZ2V0RWV4ZWNCbG9jayhlLHQpe2NvbnN0IGk9ZS5nZXRCeXRlcygpO2lmKDA9PT1pLmxlbmd0aCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoImdldEVleGVjQmxvY2sgLSBubyBmb250IHByb2dyYW0gZm91bmQuIik7cmV0dXJue3N0cmVhbTpuZXcgU3RyZWFtKGkpLGxlbmd0aDppLmxlbmd0aH19KHQpLGM9bmV3IFR5cGUxUGFyc2VyKGcuc3RyZWFtLCEwLFlpKS5leHRyYWN0Rm9udFByb2dyYW0oaSk7Zm9yKGNvbnN0IGUgaW4gYy5wcm9wZXJ0aWVzKWlbZV09Yy5wcm9wZXJ0aWVzW2VdO2NvbnN0IEM9Yy5jaGFyc3RyaW5ncyxoPXRoaXMuZ2V0VHlwZTJDaGFyc3RyaW5ncyhDKSxsPXRoaXMuZ2V0VHlwZTJTdWJycyhjLnN1YnJzKTt0aGlzLmNoYXJzdHJpbmdzPUM7dGhpcy5kYXRhPXRoaXMud3JhcChlLGgsdGhpcy5jaGFyc3RyaW5ncyxsLGkpO3RoaXMuc2VhY3M9dGhpcy5nZXRTZWFjcyhjLmNoYXJzdHJpbmdzKX1nZXQgbnVtR2x5cGhzKCl7cmV0dXJuIHRoaXMuY2hhcnN0cmluZ3MubGVuZ3RoKzF9Z2V0Q2hhcnNldCgpe2NvbnN0IGU9WyIubm90ZGVmIl07Zm9yKGNvbnN0e2dseXBoTmFtZTp0fW9mIHRoaXMuY2hhcnN0cmluZ3MpZS5wdXNoKHQpO3JldHVybiBlfWdldEdseXBoTWFwcGluZyhlKXtjb25zdCB0PXRoaXMuY2hhcnN0cmluZ3M7aWYoZS5jb21wb3NpdGUpe2NvbnN0IGk9T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IobGV0IGE9MCxzPXQubGVuZ3RoO2E8czthKyspe2lbZS5jTWFwLmNoYXJDb2RlT2YoYSldPWErMX1yZXR1cm4gaX1jb25zdCBpPVsiLm5vdGRlZiJdO2xldCBhLHM7Zm9yKHM9MDtzPHQubGVuZ3RoO3MrKylpLnB1c2godFtzXS5nbHlwaE5hbWUpO2NvbnN0IHI9ZS5idWlsdEluRW5jb2Rpbmc7aWYocil7YT1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcihjb25zdCBlIGluIHIpe3M9aS5pbmRleE9mKHJbZV0pO3M+PTAmJihhW2VdPXMpfX1yZXR1cm4gdHlwZTFGb250R2x5cGhNYXBwaW5nKGUsYSxpKX1oYXNHbHlwaElkKGUpe2lmKGU8MHx8ZT49dGhpcy5udW1HbHlwaHMpcmV0dXJuITE7aWYoMD09PWUpcmV0dXJuITA7cmV0dXJuIHRoaXMuY2hhcnN0cmluZ3NbZS0xXS5jaGFyc3RyaW5nLmxlbmd0aD4wfWdldFNlYWNzKGUpe2NvbnN0IHQ9W107Zm9yKGxldCBpPTAsYT1lLmxlbmd0aDtpPGE7aSsrKXtjb25zdCBhPWVbaV07YS5zZWFjJiYodFtpKzFdPWEuc2VhYyl9cmV0dXJuIHR9Z2V0VHlwZTJDaGFyc3RyaW5ncyhlKXtjb25zdCB0PVtdO2Zvcihjb25zdCBpIG9mIGUpdC5wdXNoKGkuY2hhcnN0cmluZyk7cmV0dXJuIHR9Z2V0VHlwZTJTdWJycyhlKXtsZXQgdD0wO2NvbnN0IGk9ZS5sZW5ndGg7dD1pPDExMzM/MTA3Omk8MzM3Njk/MTEzMTozMjc2ODtjb25zdCBhPVtdO2xldCBzO2ZvcihzPTA7czx0O3MrKylhLnB1c2goWzExXSk7Zm9yKHM9MDtzPGk7cysrKWEucHVzaChlW3NdKTtyZXR1cm4gYX13cmFwKGUsdCxpLGEscyl7Y29uc3Qgcj1uZXcgQ0ZGO3IuaGVhZGVyPW5ldyBDRkZIZWFkZXIoMSwwLDQsNCk7ci5uYW1lcz1bZV07Y29uc3Qgbj1uZXcgQ0ZGVG9wRGljdDtuLnNldEJ5TmFtZSgidmVyc2lvbiIsMzkxKTtuLnNldEJ5TmFtZSgiTm90aWNlIiwzOTIpO24uc2V0QnlOYW1lKCJGdWxsTmFtZSIsMzkzKTtuLnNldEJ5TmFtZSgiRmFtaWx5TmFtZSIsMzk0KTtuLnNldEJ5TmFtZSgiV2VpZ2h0IiwzOTUpO24uc2V0QnlOYW1lKCJFbmNvZGluZyIsbnVsbCk7bi5zZXRCeU5hbWUoIkZvbnRNYXRyaXgiLHMuZm9udE1hdHJpeCk7bi5zZXRCeU5hbWUoIkZvbnRCQm94IixzLmJib3gpO24uc2V0QnlOYW1lKCJjaGFyc2V0IixudWxsKTtuLnNldEJ5TmFtZSgiQ2hhclN0cmluZ3MiLG51bGwpO24uc2V0QnlOYW1lKCJQcml2YXRlIixudWxsKTtyLnRvcERpY3Q9bjtjb25zdCBvPW5ldyBDRkZTdHJpbmdzO28uYWRkKCJWZXJzaW9uIDAuMTEiKTtvLmFkZCgiU2VlIG9yaWdpbmFsIG5vdGljZSIpO28uYWRkKGUpO28uYWRkKGUpO28uYWRkKCJNZWRpdW0iKTtyLnN0cmluZ3M9bztyLmdsb2JhbFN1YnJJbmRleD1uZXcgQ0ZGSW5kZXg7Y29uc3QgZz10Lmxlbmd0aCxjPVsiLm5vdGRlZiJdO2xldCBDLGg7Zm9yKEM9MDtDPGc7QysrKXtjb25zdCBlPWlbQ10uZ2x5cGhOYW1lOy0xPT09d2kuaW5kZXhPZihlKSYmby5hZGQoZSk7Yy5wdXNoKGUpfXIuY2hhcnNldD1uZXcgQ0ZGQ2hhcnNldCghMSwwLGMpO2NvbnN0IGw9bmV3IENGRkluZGV4O2wuYWRkKFsxMzksMTRdKTtmb3IoQz0wO0M8ZztDKyspbC5hZGQodFtDXSk7ci5jaGFyU3RyaW5ncz1sO2NvbnN0IFE9bmV3IENGRlByaXZhdGVEaWN0O1Euc2V0QnlOYW1lKCJTdWJycyIsbnVsbCk7Y29uc3QgRT1bIkJsdWVWYWx1ZXMiLCJPdGhlckJsdWVzIiwiRmFtaWx5Qmx1ZXMiLCJGYW1pbHlPdGhlckJsdWVzIiwiU3RlbVNuYXBIIiwiU3RlbVNuYXBWIiwiQmx1ZVNoaWZ0IiwiQmx1ZUZ1enoiLCJCbHVlU2NhbGUiLCJMYW5ndWFnZUdyb3VwIiwiRXhwYW5zaW9uRmFjdG9yIiwiRm9yY2VCb2xkIiwiU3RkSFciLCJTdGRWVyJdO2ZvcihDPTAsaD1FLmxlbmd0aDtDPGg7QysrKXtjb25zdCBlPUVbQ107aWYoIShlIGluIHMucHJpdmF0ZURhdGEpKWNvbnRpbnVlO2NvbnN0IHQ9cy5wcml2YXRlRGF0YVtlXTtpZihBcnJheS5pc0FycmF5KHQpKWZvcihsZXQgZT10Lmxlbmd0aC0xO2U+MDtlLS0pdFtlXS09dFtlLTFdO1Euc2V0QnlOYW1lKGUsdCl9ci50b3BEaWN0LnByaXZhdGVEaWN0PVE7Y29uc3QgdT1uZXcgQ0ZGSW5kZXg7Zm9yKEM9MCxoPWEubGVuZ3RoO0M8aDtDKyspdS5hZGQoYVtDXSk7US5zdWJyc0luZGV4PXU7cmV0dXJuIG5ldyBDRkZDb21waWxlcihyKS5jb21waWxlKCl9fWNvbnN0IGhhPVtbNTczNDQsNjM3NDNdLFsxMDQ4NTc2LDExMTQxMDldXSxsYT0xZTMsQmE9WyJhc2NlbnQiLCJiYm94IiwiYmxhY2siLCJib2xkIiwiY2hhclByb2NPcGVyYXRvckxpc3QiLCJjb21wb3NpdGUiLCJjc3NGb250SW5mbyIsImRhdGEiLCJkZWZhdWx0Vk1ldHJpY3MiLCJkZWZhdWx0V2lkdGgiLCJkZXNjZW50IiwiZmFsbGJhY2tOYW1lIiwiZm9udE1hdHJpeCIsImlzSW52YWxpZFBERmpzRm9udCIsImlzVHlwZTNGb250IiwiaXRhbGljIiwibG9hZGVkTmFtZSIsIm1pbWV0eXBlIiwibWlzc2luZ0ZpbGUiLCJuYW1lIiwicmVtZWFzdXJlIiwic3VidHlwZSIsInN5c3RlbUZvbnRJbmZvIiwidHlwZSIsInZlcnRpY2FsIl0sUWE9WyJjTWFwIiwiZGVmYXVsdEVuY29kaW5nIiwiZGlmZmVyZW5jZXMiLCJpc01vbm9zcGFjZSIsImlzU2VyaWZGb250IiwiaXNTeW1ib2xpY0ZvbnQiLCJzZWFjTWFwIiwidG9Gb250Q2hhciIsInRvVW5pY29kZSIsInZtZXRyaWNzIiwid2lkdGhzIl07ZnVuY3Rpb24gYWRqdXN0V2lkdGhzKGUpe2lmKCFlLmZvbnRNYXRyaXgpcmV0dXJuO2lmKGUuZm9udE1hdHJpeFswXT09PWFbMF0pcmV0dXJuO2NvbnN0IHQ9LjAwMS9lLmZvbnRNYXRyaXhbMF0saT1lLndpZHRocztmb3IoY29uc3QgZSBpbiBpKWlbZV0qPXQ7ZS5kZWZhdWx0V2lkdGgqPXR9ZnVuY3Rpb24gYW1lbmRGYWxsYmFja1RvVW5pY29kZShlKXtpZighZS5mYWxsYmFja1RvVW5pY29kZSlyZXR1cm47aWYoZS50b1VuaWNvZGUgaW5zdGFuY2VvZiBJZGVudGl0eVRvVW5pY29kZU1hcClyZXR1cm47Y29uc3QgdD1bXTtmb3IoY29uc3QgaSBpbiBlLmZhbGxiYWNrVG9Vbmljb2RlKWUudG9Vbmljb2RlLmhhcyhpKXx8KHRbaV09ZS5mYWxsYmFja1RvVW5pY29kZVtpXSk7dC5sZW5ndGg+MCYmZS50b1VuaWNvZGUuYW1lbmQodCl9Y2xhc3MgZm9udHNfR2x5cGh7Y29uc3RydWN0b3IoZSx0LGksYSxzLHIsbixvLGcpe3RoaXMub3JpZ2luYWxDaGFyQ29kZT1lO3RoaXMuZm9udENoYXI9dDt0aGlzLnVuaWNvZGU9aTt0aGlzLmFjY2VudD1hO3RoaXMud2lkdGg9czt0aGlzLnZtZXRyaWM9cjt0aGlzLm9wZXJhdG9yTGlzdElkPW47dGhpcy5pc1NwYWNlPW87dGhpcy5pc0luRm9udD1nfWdldCBjYXRlZ29yeSgpe3JldHVybiBzaGFkb3codGhpcywiY2F0ZWdvcnkiLGZ1bmN0aW9uIGdldENoYXJVbmljb2RlQ2F0ZWdvcnkoZSl7Y29uc3QgdD1KaS5nZXQoZSk7aWYodClyZXR1cm4gdDtjb25zdCBpPWUubWF0Y2goSGkpLGE9e2lzV2hpdGVzcGFjZTohIWk/LlsxXSxpc1plcm9XaWR0aERpYWNyaXRpYzohIWk/LlsyXSxpc0ludmlzaWJsZUZvcm1hdE1hcms6ISFpPy5bM119O0ppLnNldChlLGEpO3JldHVybiBhfSh0aGlzLnVuaWNvZGUpLCEwKX19ZnVuY3Rpb24gaW50MTYoZSx0KXtyZXR1cm4oZTw8OCkrdH1mdW5jdGlvbiB3cml0ZVNpZ25lZEludDE2KGUsdCxpKXtlW3QrMV09aTtlW3RdPWk+Pj44fWZ1bmN0aW9uIHNpZ25lZEludDE2KGUsdCl7Y29uc3QgaT0oZTw8OCkrdDtyZXR1cm4gMzI3NjgmaT9pLTY1NTM2Oml9ZnVuY3Rpb24gc3RyaW5nMTYoZSl7cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoZT4+OCYyNTUsMjU1JmUpfWZ1bmN0aW9uIHNhZmVTdHJpbmcxNihlKXtlPjMyNzY3P2U9MzI3Njc6ZTwtMzI3NjgmJihlPS0zMjc2OCk7cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoZT4+OCYyNTUsMjU1JmUpfWZ1bmN0aW9uIGlzVHJ1ZVR5cGVDb2xsZWN0aW9uRmlsZShlKXtyZXR1cm4idHRjZiI9PT1ieXRlc1RvU3RyaW5nKGUucGVla0J5dGVzKDQpKX1mdW5jdGlvbiBnZXRGb250RmlsZVR5cGUoZSx7dHlwZTp0LHN1YnR5cGU6aSxjb21wb3NpdGU6YX0pe2xldCBzLHI7aWYoZnVuY3Rpb24gaXNUcnVlVHlwZUZpbGUoZSl7Y29uc3QgdD1lLnBlZWtCeXRlcyg0KTtyZXR1cm4gNjU1MzY9PT1yZWFkVWludDMyKHQsMCl8fCJ0cnVlIj09PWJ5dGVzVG9TdHJpbmcodCl9KGUpfHxpc1RydWVUeXBlQ29sbGVjdGlvbkZpbGUoZSkpcz1hPyJDSURGb250VHlwZTIiOiJUcnVlVHlwZSI7ZWxzZSBpZihmdW5jdGlvbiBpc09wZW5UeXBlRmlsZShlKXtyZXR1cm4iT1RUTyI9PT1ieXRlc1RvU3RyaW5nKGUucGVla0J5dGVzKDQpKX0oZSkpcz1hPyJDSURGb250VHlwZTIiOiJPcGVuVHlwZSI7ZWxzZSBpZihmdW5jdGlvbiBpc1R5cGUxRmlsZShlKXtjb25zdCB0PWUucGVla0J5dGVzKDIpO3JldHVybiAzNz09PXRbMF0mJjMzPT09dFsxXXx8MTI4PT09dFswXSYmMT09PXRbMV19KGUpKXM9YT8iQ0lERm9udFR5cGUwIjoiTU1UeXBlMSI9PT10PyJNTVR5cGUxIjoiVHlwZTEiO2Vsc2UgaWYoZnVuY3Rpb24gaXNDRkZGaWxlKGUpe2NvbnN0IHQ9ZS5wZWVrQnl0ZXMoNCk7cmV0dXJuIHRbMF0+PTEmJnRbM10+PTEmJnRbM108PTR9KGUpKWlmKGEpe3M9IkNJREZvbnRUeXBlMCI7cj0iQ0lERm9udFR5cGUwQyJ9ZWxzZXtzPSJNTVR5cGUxIj09PXQ/Ik1NVHlwZTEiOiJUeXBlMSI7cj0iVHlwZTFDIn1lbHNle3dhcm4oImdldEZvbnRGaWxlVHlwZTogVW5hYmxlIHRvIGRldGVjdCBjb3JyZWN0IGZvbnQgZmlsZSBUeXBlL1N1YnR5cGUuIik7cz10O3I9aX1yZXR1cm5bcyxyXX1mdW5jdGlvbiBhcHBseVN0YW5kYXJkRm9udEdseXBoTWFwKGUsdCl7Zm9yKGNvbnN0IGkgaW4gdCllWytpXT10W2ldfWZ1bmN0aW9uIGJ1aWxkVG9Gb250Q2hhcihlLHQsaSl7Y29uc3QgYT1bXTtsZXQgcztmb3IobGV0IGk9MCxyPWUubGVuZ3RoO2k8cjtpKyspe3M9Z2V0VW5pY29kZUZvckdseXBoKGVbaV0sdCk7LTEhPT1zJiYoYVtpXT1zKX1mb3IoY29uc3QgZSBpbiBpKXtzPWdldFVuaWNvZGVGb3JHbHlwaChpW2VdLHQpOy0xIT09cyYmKGFbK2VdPXMpfXJldHVybiBhfWZ1bmN0aW9uIGlzTWFjTmFtZVJlY29yZChlKXtyZXR1cm4gMT09PWUucGxhdGZvcm0mJjA9PT1lLmVuY29kaW5nJiYwPT09ZS5sYW5ndWFnZX1mdW5jdGlvbiBpc1dpbk5hbWVSZWNvcmQoZSl7cmV0dXJuIDM9PT1lLnBsYXRmb3JtJiYxPT09ZS5lbmNvZGluZyYmMTAzMz09PWUubGFuZ3VhZ2V9ZnVuY3Rpb24gY29udmVydENpZFN0cmluZyhlLHQsaT0hMSl7c3dpdGNoKHQubGVuZ3RoKXtjYXNlIDE6cmV0dXJuIHQuY2hhckNvZGVBdCgwKTtjYXNlIDI6cmV0dXJuIHQuY2hhckNvZGVBdCgwKTw8OHx0LmNoYXJDb2RlQXQoMSl9Y29uc3QgYT1gVW5zdXBwb3J0ZWQgQ0lEIHN0cmluZyAoY2hhckNvZGUgJHtlfSk6ICIke3R9Ii5gO2lmKGkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGEpO3dhcm4oYSk7cmV0dXJuIHR9ZnVuY3Rpb24gYWRqdXN0TWFwcGluZyhlLHQsaSxhKXtjb25zdCBzPU9iamVjdC5jcmVhdGUobnVsbCkscj1uZXcgTWFwLG49W10sbz1uZXcgU2V0O2xldCBnPTA7bGV0IGM9aGFbZ11bMF0sQz1oYVtnXVsxXTtmb3IobGV0IGwgaW4gZSl7bHw9MDtsZXQgUT1lW2xdO2lmKCF0KFEpKWNvbnRpbnVlO2lmKGM+Qyl7ZysrO2lmKGc+PWhhLmxlbmd0aCl7d2FybigiUmFuIG91dCBvZiBzcGFjZSBpbiBmb250IHByaXZhdGUgdXNlIGFyZWEuIik7YnJlYWt9Yz1oYVtnXVswXTtDPWhhW2ddWzFdfWNvbnN0IEU9YysrOzA9PT1RJiYoUT1pKTtsZXQgdT1hLmdldChsKTsic3RyaW5nIj09dHlwZW9mIHUmJih1PXUuY29kZVBvaW50QXQoMCkpO2lmKHUmJiEoaD11LGhhWzBdWzBdPD1oJiZoPD1oYVswXVsxXXx8aGFbMV1bMF08PWgmJmg8PWhhWzFdWzFdKSYmIW8uaGFzKFEpKXtyLnNldCh1LFEpO28uYWRkKFEpfXNbRV09UTtuW2xdPUV9dmFyIGg7cmV0dXJue3RvRm9udENoYXI6bixjaGFyQ29kZVRvR2x5cGhJZDpzLHRvVW5pY29kZUV4dHJhTWFwOnIsbmV4dEF2YWlsYWJsZUZvbnRDaGFyQ29kZTpjfX1mdW5jdGlvbiBjcmVhdGVDbWFwVGFibGUoZSx0LGkpe2NvbnN0IGE9ZnVuY3Rpb24gZ2V0UmFuZ2VzKGUsdCxpKXtjb25zdCBhPVtdO2Zvcihjb25zdCB0IGluIGUpZVt0XT49aXx8YS5wdXNoKHtmb250Q2hhckNvZGU6MHx0LGdseXBoSWQ6ZVt0XX0pO2lmKHQpZm9yKGNvbnN0W2Usc11vZiB0KXM+PWl8fGEucHVzaCh7Zm9udENoYXJDb2RlOmUsZ2x5cGhJZDpzfSk7MD09PWEubGVuZ3RoJiZhLnB1c2goe2ZvbnRDaGFyQ29kZTowLGdseXBoSWQ6MH0pO2Euc29ydCgoZnVuY3Rpb24gZm9udEdldFJhbmdlc1NvcnQoZSx0KXtyZXR1cm4gZS5mb250Q2hhckNvZGUtdC5mb250Q2hhckNvZGV9KSk7Y29uc3Qgcz1bXSxyPWEubGVuZ3RoO2ZvcihsZXQgZT0wO2U8cjspe2NvbnN0IHQ9YVtlXS5mb250Q2hhckNvZGUsaT1bYVtlXS5nbHlwaElkXTsrK2U7bGV0IG49dDtmb3IoO2U8ciYmbisxPT09YVtlXS5mb250Q2hhckNvZGU7KXtpLnB1c2goYVtlXS5nbHlwaElkKTsrK247KytlO2lmKDY1NTM1PT09bilicmVha31zLnB1c2goW3QsbixpXSl9cmV0dXJuIHN9KGUsdCxpKSxzPWEuYXQoLTEpWzFdPjY1NTM1PzI6MTtsZXQgcixuLG8sZyxjPSJcMFwwIitzdHJpbmcxNihzKSsiXDADXDABIitzdHJpbmczMig0Kzgqcyk7Zm9yKHI9YS5sZW5ndGgtMTtyPj0wJiYhKGFbcl1bMF08PTY1NTM1KTstLXIpO2NvbnN0IEM9cisxO2Fbcl1bMF08NjU1MzUmJjY1NTM1PT09YVtyXVsxXSYmKGFbcl1bMV09NjU1MzQpO2NvbnN0IGg9YVtyXVsxXTw2NTUzNT8xOjAsbD1DK2gsUT1PcGVuVHlwZUZpbGVCdWlsZGVyLmdldFNlYXJjaFBhcmFtcyhsLDIpO2xldCBFLHUsZCxmLHA9IiIsbT0iIix5PSIiLHc9IiIsYj0iIixEPTA7Zm9yKHI9MCxuPUM7cjxuO3IrKyl7RT1hW3JdO3U9RVswXTtkPUVbMV07cCs9c3RyaW5nMTYodSk7bSs9c3RyaW5nMTYoZCk7Zj1FWzJdO2xldCBlPSEwO2ZvcihvPTEsZz1mLmxlbmd0aDtvPGc7KytvKWlmKGZbb10hPT1mW28tMV0rMSl7ZT0hMTticmVha31pZihlKXt5Kz1zdHJpbmcxNihmWzBdLXUmNjU1MzUpO3crPXN0cmluZzE2KDApfWVsc2V7Y29uc3QgZT0yKihsLXIpKzIqRDtEKz1kLXUrMTt5Kz1zdHJpbmcxNigwKTt3Kz1zdHJpbmcxNihlKTtmb3Iobz0wLGc9Zi5sZW5ndGg7bzxnOysrbyliKz1zdHJpbmcxNihmW29dKX19aWYoaD4wKXttKz0iw7/DvyI7cCs9IsO/w78iO3krPSJcMAEiO3crPSJcMFwwIn1jb25zdCBGPSJcMFwwIitzdHJpbmcxNigyKmwpK3N0cmluZzE2KFEucmFuZ2UpK3N0cmluZzE2KFEuZW50cnkpK3N0cmluZzE2KFEucmFuZ2VTaGlmdCkrbSsiXDBcMCIrcCt5K3crYjtsZXQgUz0iIixrPSIiO2lmKHM+MSl7Yys9IlwwA1wwXG4iK3N0cmluZzMyKDQrOCpzKzQrRi5sZW5ndGgpO1M9IiI7Zm9yKHI9MCxuPWEubGVuZ3RoO3I8bjtyKyspe0U9YVtyXTt1PUVbMF07Zj1FWzJdO2xldCBlPWZbMF07Zm9yKG89MSxnPWYubGVuZ3RoO288ZzsrK28paWYoZltvXSE9PWZbby0xXSsxKXtkPUVbMF0rby0xO1MrPXN0cmluZzMyKHUpK3N0cmluZzMyKGQpK3N0cmluZzMyKGUpO3U9ZCsxO2U9ZltvXX1TKz1zdHJpbmczMih1KStzdHJpbmczMihFWzFdKStzdHJpbmczMihlKX1rPSJcMFxmXDBcMCIrc3RyaW5nMzIoUy5sZW5ndGgrMTYpKyJcMFwwXDBcMCIrc3RyaW5nMzIoUy5sZW5ndGgvMTIpfXJldHVybiBjKyJcMAQiK3N0cmluZzE2KEYubGVuZ3RoKzQpK0YraytTfWZ1bmN0aW9uIGNyZWF0ZU9TMlRhYmxlKGUsdCxpKXtpfHw9e3VuaXRzUGVyRW06MCx5TWF4OjAseU1pbjowLGFzY2VudDowLGRlc2NlbnQ6MH07bGV0IHM9MCxyPTAsbj0wLG89MCxnPW51bGwsYz0wLEM9LTE7aWYodCl7Zm9yKGxldCBlIGluIHQpe2V8PTA7KGc+ZXx8IWcpJiYoZz1lKTtjPGUmJihjPWUpO0M9Z2V0VW5pY29kZVJhbmdlRm9yKGUsQyk7aWYoQzwzMilzfD0xPDxDO2Vsc2UgaWYoQzw2NClyfD0xPDxDLTMyO2Vsc2UgaWYoQzw5NilufD0xPDxDLTY0O2Vsc2V7aWYoIShDPDEyMykpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJVbmljb2RlIHJhbmdlcyBCaXRzID4gMTIzIGFyZSByZXNlcnZlZCBmb3IgaW50ZXJuYWwgdXNhZ2UiKTtvfD0xPDxDLTk2fX1jPjY1NTM1JiYoYz02NTUzNSl9ZWxzZXtnPTA7Yz0yNTV9Y29uc3QgaD1lLmJib3h8fFswLDAsMCwwXSxsPWkudW5pdHNQZXJFbXx8MS8oZS5mb250TWF0cml4fHxhKVswXSxRPWUuYXNjZW50U2NhbGVkPzE6bC9sYSxFPWkuYXNjZW50fHxNYXRoLnJvdW5kKFEqKGUuYXNjZW50fHxoWzNdKSk7bGV0IHU9aS5kZXNjZW50fHxNYXRoLnJvdW5kKFEqKGUuZGVzY2VudHx8aFsxXSkpO3U+MCYmZS5kZXNjZW50PjAmJmhbMV08MCYmKHU9LXUpO2NvbnN0IGQ9aS55TWF4fHxFLGY9LWkueU1pbnx8LXU7cmV0dXJuIlwwAwIkAcO0XDAFXDBcMALCigLCu1wwXDBcMMKMAsKKAsK7XDBcMAHDn1x4MDAxAQJcMFwwXDBcMAYiK1N0cmluZy5mcm9tQ2hhckNvZGUoZS5maXhlZFBpdGNoPzk6MCkrIlwwXDBcMFwwXDBcMCIrc3RyaW5nMzIocykrc3RyaW5nMzIocikrc3RyaW5nMzIobikrc3RyaW5nMzIobykrIioyMSoiK3N0cmluZzE2KGUuaXRhbGljQW5nbGU/MTowKStzdHJpbmcxNihnfHxlLmZpcnN0Q2hhcikrc3RyaW5nMTYoY3x8ZS5sYXN0Q2hhcikrc3RyaW5nMTYoRSkrc3RyaW5nMTYodSkrIlwwZCIrc3RyaW5nMTYoZCkrc3RyaW5nMTYoZikrIlwwXDBcMFwwXDBcMFwwXDAiK3N0cmluZzE2KGUueEhlaWdodCkrc3RyaW5nMTYoZS5jYXBIZWlnaHQpK3N0cmluZzE2KDApK3N0cmluZzE2KGd8fGUuZmlyc3RDaGFyKSsiXDADIn1mdW5jdGlvbiBjcmVhdGVQb3N0VGFibGUoZSl7cmV0dXJuIlwwA1wwXDAiK3N0cmluZzMyKE1hdGguZmxvb3IoNjU1MzYqZS5pdGFsaWNBbmdsZSkpKyJcMFwwXDBcMCIrc3RyaW5nMzIoZS5maXhlZFBpdGNoPzE6MCkrIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIn1mdW5jdGlvbiBjcmVhdGVQb3N0c2NyaXB0TmFtZShlKXtyZXR1cm4gZS5yZXBsYWNlQWxsKC9bXlx4MjEtXHg3RV18W1tcXSgpe308Pi8lXS9nLCIiKS5zbGljZSgwLDYzKX1mdW5jdGlvbiBjcmVhdGVOYW1lVGFibGUoZSx0KXt0fHwodD1bW10sW11dKTtjb25zdCBpPVt0WzBdWzBdfHwiT3JpZ2luYWwgbGljZW5jZSIsdFswXVsxXXx8ZSx0WzBdWzJdfHwiVW5rbm93biIsdFswXVszXXx8InVuaXF1ZUlEIix0WzBdWzRdfHxlLHRbMF1bNV18fCJWZXJzaW9uIDAuMTEiLHRbMF1bNl18fGNyZWF0ZVBvc3RzY3JpcHROYW1lKGUpLHRbMF1bN118fCJVbmtub3duIix0WzBdWzhdfHwiVW5rbm93biIsdFswXVs5XXx8IlVua25vd24iXSxhPVtdO2xldCBzLHIsbixvLGc7Zm9yKHM9MCxyPWkubGVuZ3RoO3M8cjtzKyspe2c9dFsxXVtzXXx8aVtzXTtjb25zdCBlPVtdO2ZvcihuPTAsbz1nLmxlbmd0aDtuPG87bisrKWUucHVzaChzdHJpbmcxNihnLmNoYXJDb2RlQXQobikpKTthLnB1c2goZS5qb2luKCIiKSl9Y29uc3QgYz1baSxhXSxDPVsiXDABIiwiXDADIl0saD1bIlwwXDAiLCJcMAEiXSxsPVsiXDBcMCIsIgRcdCJdLFE9aS5sZW5ndGgqQy5sZW5ndGg7bGV0IEU9IlwwXDAiK3N0cmluZzE2KFEpK3N0cmluZzE2KDEyKlErNiksdT0wO2ZvcihzPTAscj1DLmxlbmd0aDtzPHI7cysrKXtjb25zdCBlPWNbc107Zm9yKG49MCxvPWUubGVuZ3RoO248bztuKyspe2c9ZVtuXTtFKz1DW3NdK2hbc10rbFtzXStzdHJpbmcxNihuKStzdHJpbmcxNihnLmxlbmd0aCkrc3RyaW5nMTYodSk7dSs9Zy5sZW5ndGh9fUUrPWkuam9pbigiIikrYS5qb2luKCIiKTtyZXR1cm4gRX1jbGFzcyBGb250e2NvbnN0cnVjdG9yKGUsdCxpKXt0aGlzLm5hbWU9ZTt0aGlzLnBzTmFtZT1udWxsO3RoaXMubWltZXR5cGU9bnVsbDt0aGlzLmRpc2FibGVGb250RmFjZT0hMTt0aGlzLmxvYWRlZE5hbWU9aS5sb2FkZWROYW1lO3RoaXMuaXNUeXBlM0ZvbnQ9aS5pc1R5cGUzRm9udDt0aGlzLm1pc3NpbmdGaWxlPSExO3RoaXMuY3NzRm9udEluZm89aS5jc3NGb250SW5mbzt0aGlzLl9jaGFyc0NhY2hlPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy5fZ2x5cGhDYWNoZT1PYmplY3QuY3JlYXRlKG51bGwpO2xldCBhPSEhKGkuZmxhZ3MmS2kpO2lmKCFhJiYhaS5pc1NpbXVsYXRlZEZsYWdzKXtjb25zdCB0PWUucmVwbGFjZUFsbCgvWyxfXS9nLCItIikuc3BsaXQoIi0iLDEpWzBdLGk9WGkoKTtmb3IoY29uc3QgZSBvZiB0LnNwbGl0KCIrIikpaWYoaVtlXSl7YT0hMDticmVha319dGhpcy5pc1NlcmlmRm9udD1hO3RoaXMuaXNTeW1ib2xpY0ZvbnQ9ISEoaS5mbGFncyZUaSk7dGhpcy5pc01vbm9zcGFjZT0hIShpLmZsYWdzJnZpKTtsZXR7dHlwZTpzLHN1YnR5cGU6cn09aTt0aGlzLnR5cGU9czt0aGlzLnN1YnR5cGU9cjt0aGlzLnN5c3RlbUZvbnRJbmZvPWkuc3lzdGVtRm9udEluZm87Y29uc3Qgbj1lLm1hdGNoKC9eSW52YWxpZFBERmpzRm9udF8oLiopX1xkKyQvKTt0aGlzLmlzSW52YWxpZFBERmpzRm9udD0hIW47dGhpcy5pc0ludmFsaWRQREZqc0ZvbnQ/dGhpcy5mYWxsYmFja05hbWU9blsxXTp0aGlzLmlzTW9ub3NwYWNlP3RoaXMuZmFsbGJhY2tOYW1lPSJtb25vc3BhY2UiOnRoaXMuaXNTZXJpZkZvbnQ/dGhpcy5mYWxsYmFja05hbWU9InNlcmlmIjp0aGlzLmZhbGxiYWNrTmFtZT0ic2Fucy1zZXJpZiI7aWYodGhpcy5zeXN0ZW1Gb250SW5mbz8uZ3Vlc3NGYWxsYmFjayl7dGhpcy5zeXN0ZW1Gb250SW5mby5ndWVzc0ZhbGxiYWNrPSExO3RoaXMuc3lzdGVtRm9udEluZm8uY3NzKz1gLCR7dGhpcy5mYWxsYmFja05hbWV9YH10aGlzLmRpZmZlcmVuY2VzPWkuZGlmZmVyZW5jZXM7dGhpcy53aWR0aHM9aS53aWR0aHM7dGhpcy5kZWZhdWx0V2lkdGg9aS5kZWZhdWx0V2lkdGg7dGhpcy5jb21wb3NpdGU9aS5jb21wb3NpdGU7dGhpcy5jTWFwPWkuY01hcDt0aGlzLmNhcEhlaWdodD1pLmNhcEhlaWdodC9sYTt0aGlzLmFzY2VudD1pLmFzY2VudC9sYTt0aGlzLmRlc2NlbnQ9aS5kZXNjZW50L2xhO3RoaXMubGluZUhlaWdodD10aGlzLmFzY2VudC10aGlzLmRlc2NlbnQ7dGhpcy5mb250TWF0cml4PWkuZm9udE1hdHJpeDt0aGlzLmJib3g9aS5iYm94O3RoaXMuZGVmYXVsdEVuY29kaW5nPWkuZGVmYXVsdEVuY29kaW5nO3RoaXMudG9Vbmljb2RlPWkudG9Vbmljb2RlO3RoaXMudG9Gb250Q2hhcj1bXTtpZigiVHlwZTMiPT09aS50eXBlKXtmb3IobGV0IGU9MDtlPDI1NjtlKyspdGhpcy50b0ZvbnRDaGFyW2VdPXRoaXMuZGlmZmVyZW5jZXNbZV18fGkuZGVmYXVsdEVuY29kaW5nW2VdO3JldHVybn10aGlzLmNpZEVuY29kaW5nPWkuY2lkRW5jb2Rpbmd8fCIiO3RoaXMudmVydGljYWw9ISFpLnZlcnRpY2FsO2lmKHRoaXMudmVydGljYWwpe3RoaXMudm1ldHJpY3M9aS52bWV0cmljczt0aGlzLmRlZmF1bHRWTWV0cmljcz1pLmRlZmF1bHRWTWV0cmljc31pZighdHx8dC5pc0VtcHR5KXt0JiZ3YXJuKCdGb250IGZpbGUgaXMgZW1wdHkgaW4gIicrZSsnIiAoJyt0aGlzLmxvYWRlZE5hbWUrIikiKTt0aGlzLmZhbGxiYWNrVG9TeXN0ZW1Gb250KGkpO3JldHVybn1bcyxyXT1nZXRGb250RmlsZVR5cGUodCxpKTtzPT09dGhpcy50eXBlJiZyPT09dGhpcy5zdWJ0eXBlfHxpbmZvKGBJbmNvbnNpc3RlbnQgZm9udCBmaWxlIFR5cGUvU3ViVHlwZSwgZXhwZWN0ZWQ6ICR7dGhpcy50eXBlfS8ke3RoaXMuc3VidHlwZX0gYnV0IGZvdW5kOiAke3N9LyR7cn0uYCk7bGV0IG87dHJ5e3N3aXRjaChzKXtjYXNlIk1NVHlwZTEiOmluZm8oIk1NVHlwZTEgZm9udCAoIitlKyIpLCBmYWxsaW5nIGJhY2sgdG8gVHlwZTEuIik7Y2FzZSJUeXBlMSI6Y2FzZSJDSURGb250VHlwZTAiOnRoaXMubWltZXR5cGU9ImZvbnQvb3BlbnR5cGUiO2NvbnN0IGE9IlR5cGUxQyI9PT1yfHwiQ0lERm9udFR5cGUwQyI9PT1yP25ldyBDRkZGb250KHQsaSk6bmV3IFR5cGUxRm9udChlLHQsaSk7YWRqdXN0V2lkdGhzKGkpO289dGhpcy5jb252ZXJ0KGUsYSxpKTticmVhaztjYXNlIk9wZW5UeXBlIjpjYXNlIlRydWVUeXBlIjpjYXNlIkNJREZvbnRUeXBlMiI6dGhpcy5taW1ldHlwZT0iZm9udC9vcGVudHlwZSI7bz10aGlzLmNoZWNrQW5kUmVwYWlyKGUsdCxpKTtpZih0aGlzLmlzT3BlblR5cGUpe2FkanVzdFdpZHRocyhpKTtzPSJPcGVuVHlwZSJ9YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEZvbnQgJHtzfSBpcyBub3Qgc3VwcG9ydGVkYCl9fWNhdGNoKGUpe3dhcm4oZSk7dGhpcy5mYWxsYmFja1RvU3lzdGVtRm9udChpKTtyZXR1cm59YW1lbmRGYWxsYmFja1RvVW5pY29kZShpKTt0aGlzLmRhdGE9bzt0aGlzLnR5cGU9czt0aGlzLnN1YnR5cGU9cjt0aGlzLmZvbnRNYXRyaXg9aS5mb250TWF0cml4O3RoaXMud2lkdGhzPWkud2lkdGhzO3RoaXMuZGVmYXVsdFdpZHRoPWkuZGVmYXVsdFdpZHRoO3RoaXMudG9Vbmljb2RlPWkudG9Vbmljb2RlO3RoaXMuc2VhY01hcD1pLnNlYWNNYXB9Z2V0IHJlbmRlcmVyKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJyZW5kZXJlciIsRm9udFJlbmRlcmVyRmFjdG9yeS5jcmVhdGUodGhpcyxZaSkpfWV4cG9ydERhdGEoZT0hMSl7Y29uc3QgdD1lP1suLi5CYSwuLi5RYV06QmEsaT1PYmplY3QuY3JlYXRlKG51bGwpO2xldCBhLHM7Zm9yKGEgb2YgdCl7cz10aGlzW2FdO3ZvaWQgMCE9PXMmJihpW2FdPXMpfXJldHVybiBpfWZhbGxiYWNrVG9TeXN0ZW1Gb250KGUpe3RoaXMubWlzc2luZ0ZpbGU9ITA7Y29uc3R7bmFtZTp0LHR5cGU6aX09dGhpcztsZXQgYT1ub3JtYWxpemVGb250TmFtZSh0KTtjb25zdCBzPVBpKCkscj1qaSgpLG49ISFzW2FdLG89ISghclthXXx8IXNbclthXV0pO2E9c1thXXx8clthXXx8YTtjb25zdCBnPWVhKClbYV07aWYoZyl7aXNOYU4odGhpcy5hc2NlbnQpJiYodGhpcy5hc2NlbnQ9Zy5hc2NlbnQvbGEpO2lzTmFOKHRoaXMuZGVzY2VudCkmJih0aGlzLmRlc2NlbnQ9Zy5kZXNjZW50L2xhKTtpc05hTih0aGlzLmNhcEhlaWdodCkmJih0aGlzLmNhcEhlaWdodD1nLmNhcEhlaWdodC9sYSl9dGhpcy5ib2xkPS9ib2xkL2dpLnRlc3QoYSk7dGhpcy5pdGFsaWM9L29ibGlxdWV8aXRhbGljL2dpLnRlc3QoYSk7dGhpcy5ibGFjaz0vQmxhY2svZy50ZXN0KHQpO2NvbnN0IGM9L05hcnJvdy9nLnRlc3QodCk7dGhpcy5yZW1lYXN1cmU9KCFufHxjKSYmT2JqZWN0LmtleXModGhpcy53aWR0aHMpLmxlbmd0aD4wO2lmKChufHxvKSYmIkNJREZvbnRUeXBlMiI9PT1pJiZ0aGlzLmNpZEVuY29kaW5nLnN0YXJ0c1dpdGgoIklkZW50aXR5LSIpKXtjb25zdCBpPWUuY2lkVG9HaWRNYXAsYT1bXTthcHBseVN0YW5kYXJkRm9udEdseXBoTWFwKGEsVmkoKSk7L0FyaWFsLT9CbGFjay9pLnRlc3QodCk/YXBwbHlTdGFuZGFyZEZvbnRHbHlwaE1hcChhLHppKCkpOi9DYWxpYnJpL2kudGVzdCh0KSYmYXBwbHlTdGFuZGFyZEZvbnRHbHlwaE1hcChhLF9pKCkpO2lmKGkpe2Zvcihjb25zdCBlIGluIGEpe2NvbnN0IHQ9YVtlXTt2b2lkIDAhPT1pW3RdJiYoYVsrZV09aVt0XSl9aS5sZW5ndGghPT10aGlzLnRvVW5pY29kZS5sZW5ndGgmJmUuaGFzSW5jbHVkZWRUb1VuaWNvZGVNYXAmJnRoaXMudG9Vbmljb2RlIGluc3RhbmNlb2YgSWRlbnRpdHlUb1VuaWNvZGVNYXAmJnRoaXMudG9Vbmljb2RlLmZvckVhY2goKGZ1bmN0aW9uKGUsdCl7Y29uc3Qgcz1hW2VdO3ZvaWQgMD09PWlbc10mJihhWytlXT10KX0pKX10aGlzLnRvVW5pY29kZSBpbnN0YW5jZW9mIElkZW50aXR5VG9Vbmljb2RlTWFwfHx0aGlzLnRvVW5pY29kZS5mb3JFYWNoKChmdW5jdGlvbihlLHQpe2FbK2VdPXR9KSk7dGhpcy50b0ZvbnRDaGFyPWE7dGhpcy50b1VuaWNvZGU9bmV3IFRvVW5pY29kZU1hcChhKX1lbHNlIGlmKC9TeW1ib2wvaS50ZXN0KGEpKXRoaXMudG9Gb250Q2hhcj1idWlsZFRvRm9udENoYXIobWksUmkoKSx0aGlzLmRpZmZlcmVuY2VzKTtlbHNlIGlmKC9EaW5nYmF0cy9pLnRlc3QoYSkpdGhpcy50b0ZvbnRDaGFyPWJ1aWxkVG9Gb250Q2hhcih5aSxHaSgpLHRoaXMuZGlmZmVyZW5jZXMpO2Vsc2UgaWYobil7Y29uc3QgZT1idWlsZFRvRm9udENoYXIodGhpcy5kZWZhdWx0RW5jb2RpbmcsUmkoKSx0aGlzLmRpZmZlcmVuY2VzKTsiQ0lERm9udFR5cGUyIiE9PWl8fHRoaXMuY2lkRW5jb2Rpbmcuc3RhcnRzV2l0aCgiSWRlbnRpdHktIil8fHRoaXMudG9Vbmljb2RlIGluc3RhbmNlb2YgSWRlbnRpdHlUb1VuaWNvZGVNYXB8fHRoaXMudG9Vbmljb2RlLmZvckVhY2goKGZ1bmN0aW9uKHQsaSl7ZVsrdF09aX0pKTt0aGlzLnRvRm9udENoYXI9ZX1lbHNle2NvbnN0IGU9UmkoKSxpPVtdO3RoaXMudG9Vbmljb2RlLmZvckVhY2goKCh0LGEpPT57aWYoIXRoaXMuY29tcG9zaXRlKXtjb25zdCBpPWdldFVuaWNvZGVGb3JHbHlwaCh0aGlzLmRpZmZlcmVuY2VzW3RdfHx0aGlzLmRlZmF1bHRFbmNvZGluZ1t0XSxlKTstMSE9PWkmJihhPWkpfWlbK3RdPWF9KSk7dGhpcy5jb21wb3NpdGUmJnRoaXMudG9Vbmljb2RlIGluc3RhbmNlb2YgSWRlbnRpdHlUb1VuaWNvZGVNYXAmJi9UYWhvbWF8VmVyZGFuYS9pLnRlc3QodCkmJmFwcGx5U3RhbmRhcmRGb250R2x5cGhNYXAoaSxWaSgpKTt0aGlzLnRvRm9udENoYXI9aX1hbWVuZEZhbGxiYWNrVG9Vbmljb2RlKGUpO3RoaXMubG9hZGVkTmFtZT1hLnNwbGl0KCItIiwxKVswXX1jaGVja0FuZFJlcGFpcihlLHQsaSl7Y29uc3QgYT1bIk9TLzIiLCJjbWFwIiwiaGVhZCIsImhoZWEiLCJobXR4IiwibWF4cCIsIm5hbWUiLCJwb3N0IiwibG9jYSIsImdseWYiLCJmcGdtIiwicHJlcCIsImN2dCAiLCJDRkYgIl07ZnVuY3Rpb24gcmVhZFRhYmxlcyhlLHQpe2NvbnN0IGk9T2JqZWN0LmNyZWF0ZShudWxsKTtpWyJPUy8yIl09bnVsbDtpLmNtYXA9bnVsbDtpLmhlYWQ9bnVsbDtpLmhoZWE9bnVsbDtpLmhtdHg9bnVsbDtpLm1heHA9bnVsbDtpLm5hbWU9bnVsbDtpLnBvc3Q9bnVsbDtmb3IobGV0IHM9MDtzPHQ7cysrKXtjb25zdCB0PXJlYWRUYWJsZUVudHJ5KGUpO2EuaW5jbHVkZXModC50YWcpJiYoMCE9PXQubGVuZ3RoJiYoaVt0LnRhZ109dCkpfXJldHVybiBpfWZ1bmN0aW9uIHJlYWRUYWJsZUVudHJ5KGUpe2NvbnN0IHQ9ZS5nZXRTdHJpbmcoNCksaT1lLmdldEludDMyKCk+Pj4wLGE9ZS5nZXRJbnQzMigpPj4+MCxzPWUuZ2V0SW50MzIoKT4+PjAscj1lLnBvcztlLnBvcz1lLnN0YXJ0fHwwO2Uuc2tpcChhKTtjb25zdCBuPWUuZ2V0Qnl0ZXMocyk7ZS5wb3M9cjtpZigiaGVhZCI9PT10KXtuWzhdPW5bOV09blsxMF09blsxMV09MDtuWzE3XXw9MzJ9cmV0dXJue3RhZzp0LGNoZWNrc3VtOmksbGVuZ3RoOnMsb2Zmc2V0OmEsZGF0YTpufX1mdW5jdGlvbiByZWFkT3BlblR5cGVIZWFkZXIoZSl7cmV0dXJue3ZlcnNpb246ZS5nZXRTdHJpbmcoNCksbnVtVGFibGVzOmUuZ2V0VWludDE2KCksc2VhcmNoUmFuZ2U6ZS5nZXRVaW50MTYoKSxlbnRyeVNlbGVjdG9yOmUuZ2V0VWludDE2KCkscmFuZ2VTaGlmdDplLmdldFVpbnQxNigpfX1mdW5jdGlvbiBzYW5pdGl6ZUdseXBoKGUsdCxpLGEscyxyKXtjb25zdCBuPXtsZW5ndGg6MCxzaXplT2ZJbnN0cnVjdGlvbnM6MH07aWYodDwwfHx0Pj1lLmxlbmd0aHx8aT5lLmxlbmd0aHx8aS10PD0xMilyZXR1cm4gbjtjb25zdCBvPWUuc3ViYXJyYXkodCxpKSxnPXNpZ25lZEludDE2KG9bMl0sb1szXSksYz1zaWduZWRJbnQxNihvWzRdLG9bNV0pLEM9c2lnbmVkSW50MTYob1s2XSxvWzddKSxoPXNpZ25lZEludDE2KG9bOF0sb1s5XSk7aWYoZz5DKXt3cml0ZVNpZ25lZEludDE2KG8sMixDKTt3cml0ZVNpZ25lZEludDE2KG8sNixnKX1pZihjPmgpe3dyaXRlU2lnbmVkSW50MTYobyw0LGgpO3dyaXRlU2lnbmVkSW50MTYobyw4LGMpfWNvbnN0IGw9c2lnbmVkSW50MTYob1swXSxvWzFdKTtpZihsPDApe2lmKGw8LTEpcmV0dXJuIG47YS5zZXQobyxzKTtuLmxlbmd0aD1vLmxlbmd0aDtyZXR1cm4gbn1sZXQgUSxFPTEwLHU9MDtmb3IoUT0wO1E8bDtRKyspe3U9KG9bRV08PDh8b1tFKzFdKSsxO0UrPTJ9Y29uc3QgZD1FLGY9b1tFXTw8OHxvW0UrMV07bi5zaXplT2ZJbnN0cnVjdGlvbnM9ZjtFKz0yK2Y7Y29uc3QgcD1FO2xldCBtPTA7Zm9yKFE9MDtRPHU7USsrKXtjb25zdCBlPW9bRSsrXTsxOTImZSYmKG9bRS0xXT02MyZlKTtsZXQgdD0yOzImZT90PTE6MTYmZSYmKHQ9MCk7bGV0IGk9Mjs0JmU/aT0xOjMyJmUmJihpPTApO2NvbnN0IGE9dCtpO20rPWE7aWYoOCZlKXtjb25zdCBlPW9bRSsrXTswPT09ZSYmKG9bRS0xXV49OCk7USs9ZTttKz1lKmF9fWlmKDA9PT1tKXJldHVybiBuO2xldCB5PUUrbTtpZih5Pm8ubGVuZ3RoKXJldHVybiBuO2lmKCFyJiZmPjApe2Euc2V0KG8uc3ViYXJyYXkoMCxkKSxzKTthLnNldChbMCwwXSxzK2QpO2Euc2V0KG8uc3ViYXJyYXkocCx5KSxzK2QrMik7eS09ZjtvLmxlbmd0aC15PjMmJih5PXkrMyYtNCk7bi5sZW5ndGg9eTtyZXR1cm4gbn1pZihvLmxlbmd0aC15PjMpe3k9eSszJi00O2Euc2V0KG8uc3ViYXJyYXkoMCx5KSxzKTtuLmxlbmd0aD15O3JldHVybiBufWEuc2V0KG8scyk7bi5sZW5ndGg9by5sZW5ndGg7cmV0dXJuIG59ZnVuY3Rpb24gcmVhZE5hbWVUYWJsZShlKXtjb25zdCBpPSh0LnN0YXJ0fHwwKStlLm9mZnNldDt0LnBvcz1pO2NvbnN0IGE9W1tdLFtdXSxzPVtdLHI9ZS5sZW5ndGgsbj1pK3I7aWYoMCE9PXQuZ2V0VWludDE2KCl8fHI8NilyZXR1cm5bYSxzXTtjb25zdCBvPXQuZ2V0VWludDE2KCksZz10LmdldFVpbnQxNigpO2xldCBjLEM7Zm9yKGM9MDtjPG8mJnQucG9zKzEyPD1uO2MrKyl7Y29uc3QgZT17cGxhdGZvcm06dC5nZXRVaW50MTYoKSxlbmNvZGluZzp0LmdldFVpbnQxNigpLGxhbmd1YWdlOnQuZ2V0VWludDE2KCksbmFtZTp0LmdldFVpbnQxNigpLGxlbmd0aDp0LmdldFVpbnQxNigpLG9mZnNldDp0LmdldFVpbnQxNigpfTsoaXNNYWNOYW1lUmVjb3JkKGUpfHxpc1dpbk5hbWVSZWNvcmQoZSkpJiZzLnB1c2goZSl9Zm9yKGM9MCxDPXMubGVuZ3RoO2M8QztjKyspe2NvbnN0IGU9c1tjXTtpZihlLmxlbmd0aDw9MCljb250aW51ZTtjb25zdCByPWkrZytlLm9mZnNldDtpZihyK2UubGVuZ3RoPm4pY29udGludWU7dC5wb3M9cjtjb25zdCBvPWUubmFtZTtpZihlLmVuY29kaW5nKXtsZXQgaT0iIjtmb3IobGV0IGE9MCxzPWUubGVuZ3RoO2E8czthKz0yKWkrPVN0cmluZy5mcm9tQ2hhckNvZGUodC5nZXRVaW50MTYoKSk7YVsxXVtvXT1pfWVsc2UgYVswXVtvXT10LmdldFN0cmluZyhlLmxlbmd0aCl9cmV0dXJuW2Esc119Y29uc3Qgcz1bMCwwLDAsMCwwLDAsMCwwLC0yLC0yLC0yLC0yLDAsMCwtMiwtNSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwwLDAsLTEsMCwtMSwtMSwtMSwtMSwxLC0xLC05OTksMCwxLDAsLTEsLTIsMCwtMSwtMiwtMSwtMSwwLC0xLC0xLDAsMCwtOTk5LC05OTksLTEsLTEsLTEsLTEsLTIsLTk5OSwtMiwtMiwtOTk5LDAsLTIsLTIsMCwwLC0yLDAsLTIsMCwwLDAsLTIsLTEsLTEsMSwxLDAsMCwtMSwtMSwtMSwtMSwtMSwtMSwtMSwwLDAsLTEsMCwtMSwtMSwwLC05OTksLTEsLTEsLTEsLTEsLTEsLTEsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsLTIsLTk5OSwtOTk5LC05OTksLTk5OSwtOTk5LC0xLC0xLC0yLC0yLDAsMCwwLDAsLTEsLTEsLTk5OSwtMiwtMiwwLDAsLTEsLTIsLTIsMCwwLDAsLTEsLTEsLTEsLTJdO2Z1bmN0aW9uIHNhbml0aXplVFRQcm9ncmFtKGUsdCl7bGV0IGksYSxyLG4sbyxnPWUuZGF0YSxjPTAsQz0wLGg9MDtjb25zdCBsPVtdLFE9W10sRT1bXTtsZXQgdT10LnRvb0NvbXBsZXhUb0ZvbGxvd0Z1bmN0aW9ucyxkPSExLGY9MCxwPTA7Zm9yKGxldCBlPWcubGVuZ3RoO2M8ZTspe2NvbnN0IGU9Z1tjKytdO2lmKDY0PT09ZSl7YT1nW2MrK107aWYoZHx8cCljKz1hO2Vsc2UgZm9yKGk9MDtpPGE7aSsrKWwucHVzaChnW2MrK10pfWVsc2UgaWYoNjU9PT1lKXthPWdbYysrXTtpZihkfHxwKWMrPTIqYTtlbHNlIGZvcihpPTA7aTxhO2krKyl7cj1nW2MrK107bC5wdXNoKHI8PDh8Z1tjKytdKX19ZWxzZSBpZigxNzY9PSgyNDgmZSkpe2E9ZS0xNzYrMTtpZihkfHxwKWMrPWE7ZWxzZSBmb3IoaT0wO2k8YTtpKyspbC5wdXNoKGdbYysrXSl9ZWxzZSBpZigxODQ9PSgyNDgmZSkpe2E9ZS0xODQrMTtpZihkfHxwKWMrPTIqYTtlbHNlIGZvcihpPTA7aTxhO2krKyl7cj1nW2MrK107bC5wdXNoKHI8PDh8Z1tjKytdKX19ZWxzZSBpZig0MyE9PWV8fHUpaWYoNDQhPT1lfHx1KXtpZig0NT09PWUpaWYoZCl7ZD0hMTtDPWN9ZWxzZXtvPVEucG9wKCk7aWYoIW8pe3dhcm4oIlRUOiBFTkRGIGJhZCBzdGFjayIpO3QuaGludHNWYWxpZD0hMTtyZXR1cm59bj1FLnBvcCgpO2c9by5kYXRhO2M9by5pO3QuZnVuY3Rpb25zU3RhY2tEZWx0YXNbbl09bC5sZW5ndGgtby5zdGFja1RvcH1lbHNlIGlmKDEzNz09PWUpe2lmKGR8fHApe3dhcm4oIlRUOiBuZXN0ZWQgSURFRnMgbm90IGFsbG93ZWQiKTt1PSEwfWQ9ITA7aD1jfWVsc2UgaWYoODg9PT1lKSsrZjtlbHNlIGlmKDI3PT09ZSlwPWY7ZWxzZSBpZig4OT09PWUpe3A9PT1mJiYocD0wKTstLWZ9ZWxzZSBpZigyOD09PWUmJiFkJiYhcCl7Y29uc3QgZT1sLmF0KC0xKTtlPjAmJihjKz1lLTEpfX1lbHNle2lmKGR8fHApe3dhcm4oIlRUOiBuZXN0ZWQgRkRFRnMgbm90IGFsbG93ZWQiKTt1PSEwfWQ9ITA7aD1jO249bC5wb3AoKTt0LmZ1bmN0aW9uc0RlZmluZWRbbl09e2RhdGE6ZyxpOmN9fWVsc2UgaWYoIWQmJiFwKXtuPWwuYXQoLTEpO2lmKGlzTmFOKG4pKWluZm8oIlRUOiBDQUxMIGVtcHR5IHN0YWNrIChvciBpbnZhbGlkIGVudHJ5KS4iKTtlbHNle3QuZnVuY3Rpb25zVXNlZFtuXT0hMDtpZihuIGluIHQuZnVuY3Rpb25zU3RhY2tEZWx0YXMpe2NvbnN0IGU9bC5sZW5ndGgrdC5mdW5jdGlvbnNTdGFja0RlbHRhc1tuXTtpZihlPDApe3dhcm4oIlRUOiBDQUxMIGludmFsaWQgZnVuY3Rpb25zIHN0YWNrIGRlbHRhLiIpO3QuaGludHNWYWxpZD0hMTtyZXR1cm59bC5sZW5ndGg9ZX1lbHNlIGlmKG4gaW4gdC5mdW5jdGlvbnNEZWZpbmVkJiYhRS5pbmNsdWRlcyhuKSl7US5wdXNoKHtkYXRhOmcsaTpjLHN0YWNrVG9wOmwubGVuZ3RoLTF9KTtFLnB1c2gobik7bz10LmZ1bmN0aW9uc0RlZmluZWRbbl07aWYoIW8pe3dhcm4oIlRUOiBDQUxMIG5vbi1leGlzdGVudCBmdW5jdGlvbiIpO3QuaGludHNWYWxpZD0hMTtyZXR1cm59Zz1vLmRhdGE7Yz1vLml9fX1pZighZCYmIXApe2xldCB0PTA7ZTw9MTQyP3Q9c1tlXTplPj0xOTImJmU8PTIyMz90PS0xOmU+PTIyNCYmKHQ9LTIpO2lmKGU+PTExMyYmZTw9MTE3KXthPWwucG9wKCk7aXNOYU4oYSl8fCh0PTIqLWEpfWZvcig7dDwwJiZsLmxlbmd0aD4wOyl7bC5wb3AoKTt0Kyt9Zm9yKDt0PjA7KXtsLnB1c2goTmFOKTt0LS19fX10LnRvb0NvbXBsZXhUb0ZvbGxvd0Z1bmN0aW9ucz11O2NvbnN0IG09W2ddO2M+Zy5sZW5ndGgmJm0ucHVzaChuZXcgVWludDhBcnJheShjLWcubGVuZ3RoKSk7aWYoaD5DKXt3YXJuKCJUVDogY29tcGxlbWVudGluZyBhIG1pc3NpbmcgZnVuY3Rpb24gdGFpbCIpO20ucHVzaChuZXcgVWludDhBcnJheShbMzQsNDVdKSl9IWZ1bmN0aW9uIGZvbGRUVFRhYmxlKGUsdCl7aWYodC5sZW5ndGg+MSl7bGV0IGksYSxzPTA7Zm9yKGk9MCxhPXQubGVuZ3RoO2k8YTtpKyspcys9dFtpXS5sZW5ndGg7cz1zKzMmLTQ7Y29uc3Qgcj1uZXcgVWludDhBcnJheShzKTtsZXQgbj0wO2ZvcihpPTAsYT10Lmxlbmd0aDtpPGE7aSsrKXtyLnNldCh0W2ldLG4pO24rPXRbaV0ubGVuZ3RofWUuZGF0YT1yO2UubGVuZ3RoPXN9fShlLG0pfWxldCByLG4sbyxnO2lmKGlzVHJ1ZVR5cGVDb2xsZWN0aW9uRmlsZSh0PW5ldyBTdHJlYW0obmV3IFVpbnQ4QXJyYXkodC5nZXRCeXRlcygpKSkpKXtjb25zdCBlPWZ1bmN0aW9uIHJlYWRUcnVlVHlwZUNvbGxlY3Rpb25EYXRhKGUsdCl7Y29uc3R7bnVtRm9udHM6aSxvZmZzZXRUYWJsZTphfT1mdW5jdGlvbiByZWFkVHJ1ZVR5cGVDb2xsZWN0aW9uSGVhZGVyKGUpe2NvbnN0IHQ9ZS5nZXRTdHJpbmcoNCk7YXNzZXJ0KCJ0dGNmIj09PXQsIk11c3QgYmUgYSBUcnVlVHlwZSBDb2xsZWN0aW9uIGZvbnQuIik7Y29uc3QgaT1lLmdldFVpbnQxNigpLGE9ZS5nZXRVaW50MTYoKSxzPWUuZ2V0SW50MzIoKT4+PjAscj1bXTtmb3IobGV0IHQ9MDt0PHM7dCsrKXIucHVzaChlLmdldEludDMyKCk+Pj4wKTtjb25zdCBuPXt0dGNUYWc6dCxtYWpvclZlcnNpb246aSxtaW5vclZlcnNpb246YSxudW1Gb250czpzLG9mZnNldFRhYmxlOnJ9O3N3aXRjaChpKXtjYXNlIDE6cmV0dXJuIG47Y2FzZSAyOm4uZHNpZ1RhZz1lLmdldEludDMyKCk+Pj4wO24uZHNpZ0xlbmd0aD1lLmdldEludDMyKCk+Pj4wO24uZHNpZ09mZnNldD1lLmdldEludDMyKCk+Pj4wO3JldHVybiBufXRocm93IG5ldyBGb3JtYXRFcnJvcihgSW52YWxpZCBUcnVlVHlwZSBDb2xsZWN0aW9uIG1ham9yVmVyc2lvbjogJHtpfS5gKX0oZSkscz10LnNwbGl0KCIrIik7bGV0IHI7Zm9yKGxldCBuPTA7bjxpO24rKyl7ZS5wb3M9KGUuc3RhcnR8fDApK2Fbbl07Y29uc3QgaT1yZWFkT3BlblR5cGVIZWFkZXIoZSksbz1yZWFkVGFibGVzKGUsaS5udW1UYWJsZXMpO2lmKCFvLm5hbWUpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCdUcnVlVHlwZSBDb2xsZWN0aW9uIGZvbnQgbXVzdCBjb250YWluIGEgIm5hbWUiIHRhYmxlLicpO2NvbnN0W2ddPXJlYWROYW1lVGFibGUoby5uYW1lKTtmb3IobGV0IGU9MCxhPWcubGVuZ3RoO2U8YTtlKyspZm9yKGxldCBhPTAsbj1nW2VdLmxlbmd0aDthPG47YSsrKXtjb25zdCBuPWdbZV1bYV0/LnJlcGxhY2VBbGwoL1xzL2csIiIpO2lmKG4pe2lmKG49PT10KXJldHVybntoZWFkZXI6aSx0YWJsZXM6b307aWYoIShzLmxlbmd0aDwyKSlmb3IoY29uc3QgZSBvZiBzKW49PT1lJiYocj17bmFtZTplLGhlYWRlcjppLHRhYmxlczpvfSl9fX1pZihyKXt3YXJuKGBUcnVlVHlwZSBDb2xsZWN0aW9uIGRvZXMgbm90IGNvbnRhaW4gIiR7dH0iIGZvbnQsIGZhbGxpbmcgYmFjayB0byAiJHtyLm5hbWV9IiBmb250IGluc3RlYWQuYCk7cmV0dXJue2hlYWRlcjpyLmhlYWRlcix0YWJsZXM6ci50YWJsZXN9fXRocm93IG5ldyBGb3JtYXRFcnJvcihgVHJ1ZVR5cGUgQ29sbGVjdGlvbiBkb2VzIG5vdCBjb250YWluICIke3R9IiBmb250LmApfSh0LHRoaXMubmFtZSk7cj1lLmhlYWRlcjtuPWUudGFibGVzfWVsc2V7cj1yZWFkT3BlblR5cGVIZWFkZXIodCk7bj1yZWFkVGFibGVzKHQsci5udW1UYWJsZXMpfWNvbnN0IGM9IW5bIkNGRiAiXTtpZihjKXtpZighbi5sb2NhKXRocm93IG5ldyBGb3JtYXRFcnJvcignUmVxdWlyZWQgImxvY2EiIHRhYmxlIGlzIG5vdCBmb3VuZCcpO2lmKCFuLmdseWYpe3dhcm4oJ1JlcXVpcmVkICJnbHlmIiB0YWJsZSBpcyBub3QgZm91bmQgLS0gdHJ5aW5nIHRvIHJlY292ZXIuJyk7bi5nbHlmPXt0YWc6ImdseWYiLGRhdGE6bmV3IFVpbnQ4QXJyYXkoMCl9fXRoaXMuaXNPcGVuVHlwZT0hMX1lbHNle2NvbnN0IHQ9aS5jb21wb3NpdGUmJihpLmNpZFRvR2lkTWFwPy5sZW5ndGg+MHx8IShpLmNNYXAgaW5zdGFuY2VvZiBJZGVudGl0eUNNYXApKTtpZigiT1RUTyI9PT1yLnZlcnNpb24mJiF0fHwhbi5oZWFkfHwhbi5oaGVhfHwhbi5tYXhwfHwhbi5wb3N0KXtnPW5ldyBTdHJlYW0oblsiQ0ZGICJdLmRhdGEpO289bmV3IENGRkZvbnQoZyxpKTthZGp1c3RXaWR0aHMoaSk7cmV0dXJuIHRoaXMuY29udmVydChlLG8saSl9ZGVsZXRlIG4uZ2x5ZjtkZWxldGUgbi5sb2NhO2RlbGV0ZSBuLmZwZ207ZGVsZXRlIG4ucHJlcDtkZWxldGUgblsiY3Z0ICJdO3RoaXMuaXNPcGVuVHlwZT0hMH1pZighbi5tYXhwKXRocm93IG5ldyBGb3JtYXRFcnJvcignUmVxdWlyZWQgIm1heHAiIHRhYmxlIGlzIG5vdCBmb3VuZCcpO3QucG9zPSh0LnN0YXJ0fHwwKStuLm1heHAub2Zmc2V0O2xldCBDPXQuZ2V0SW50MzIoKTtjb25zdCBoPXQuZ2V0VWludDE2KCk7aWYoNjU1MzYhPT1DJiYyMDQ4MCE9PUMpe2lmKDY9PT1uLm1heHAubGVuZ3RoKUM9MjA0ODA7ZWxzZXtpZighKG4ubWF4cC5sZW5ndGg+PTMyKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoJyJtYXhwIiB0YWJsZSBoYXMgYSB3cm9uZyB2ZXJzaW9uIG51bWJlcicpO0M9NjU1MzZ9IWZ1bmN0aW9uIHdyaXRlVWludDMyKGUsdCxpKXtlW3QrM109MjU1Jmk7ZVt0KzJdPWk+Pj44O2VbdCsxXT1pPj4+MTY7ZVt0XT1pPj4+MjR9KG4ubWF4cC5kYXRhLDAsQyl9aWYoaS5zY2FsZUZhY3RvcnM/Lmxlbmd0aD09PWgmJmMpe2NvbnN0e3NjYWxlRmFjdG9yczplfT1pLHQ9aW50MTYobi5oZWFkLmRhdGFbNTBdLG4uaGVhZC5kYXRhWzUxXSksYT1uZXcgR2x5ZlRhYmxlKHtnbHlmVGFibGU6bi5nbHlmLmRhdGEsaXNHbHlwaExvY2F0aW9uc0xvbmc6dCxsb2NhVGFibGU6bi5sb2NhLmRhdGEsbnVtR2x5cGhzOmh9KTthLnNjYWxlKGUpO2NvbnN0e2dseWY6cyxsb2NhOnIsaXNMb2NhdGlvbkxvbmc6b309YS53cml0ZSgpO24uZ2x5Zi5kYXRhPXM7bi5sb2NhLmRhdGE9cjtpZihvIT09ISF0KXtuLmhlYWQuZGF0YVs1MF09MDtuLmhlYWQuZGF0YVs1MV09bz8xOjB9Y29uc3QgZz1uLmhtdHguZGF0YTtmb3IobGV0IHQ9MDt0PGg7dCsrKXtjb25zdCBpPTQqdCxhPU1hdGgucm91bmQoZVt0XSppbnQxNihnW2ldLGdbaSsxXSkpO2dbaV09YT4+OCYyNTU7Z1tpKzFdPTI1NSZhO3dyaXRlU2lnbmVkSW50MTYoZyxpKzIsTWF0aC5yb3VuZChlW3RdKnNpZ25lZEludDE2KGdbaSsyXSxnW2krM10pKSl9fWxldCBsPWgrMSxRPSEwO2lmKGw+NjU1MzUpe1E9ITE7bD1oO3dhcm4oIk5vdCBlbm91Z2ggc3BhY2UgaW4gZ2x5ZnMgdG8gZHVwbGljYXRlIGZpcnN0IGdseXBoLiIpfWxldCBFPTAsdT0wO2lmKEM+PTY1NTM2JiZuLm1heHAubGVuZ3RoPj0zMil7dC5wb3MrPTg7aWYodC5nZXRVaW50MTYoKT4yKXtuLm1heHAuZGF0YVsxNF09MDtuLm1heHAuZGF0YVsxNV09Mn10LnBvcys9NDtFPXQuZ2V0VWludDE2KCk7dC5wb3MrPTQ7dT10LmdldFVpbnQxNigpfW4ubWF4cC5kYXRhWzRdPWw+Pjg7bi5tYXhwLmRhdGFbNV09MjU1Jmw7Y29uc3QgZD1mdW5jdGlvbiBzYW5pdGl6ZVRUUHJvZ3JhbXMoZSx0LGksYSl7Y29uc3Qgcz17ZnVuY3Rpb25zRGVmaW5lZDpbXSxmdW5jdGlvbnNVc2VkOltdLGZ1bmN0aW9uc1N0YWNrRGVsdGFzOltdLHRvb0NvbXBsZXhUb0ZvbGxvd0Z1bmN0aW9uczohMSxoaW50c1ZhbGlkOiEwfTtlJiZzYW5pdGl6ZVRUUHJvZ3JhbShlLHMpO3QmJnNhbml0aXplVFRQcm9ncmFtKHQscyk7ZSYmZnVuY3Rpb24gY2hlY2tJbnZhbGlkRnVuY3Rpb25zKGUsdCl7aWYoIWUudG9vQ29tcGxleFRvRm9sbG93RnVuY3Rpb25zKWlmKGUuZnVuY3Rpb25zRGVmaW5lZC5sZW5ndGg+dCl7d2FybigiVFQ6IG1vcmUgZnVuY3Rpb25zIGRlZmluZWQgdGhhbiBleHBlY3RlZCIpO2UuaGludHNWYWxpZD0hMX1lbHNlIGZvcihsZXQgaT0wLGE9ZS5mdW5jdGlvbnNVc2VkLmxlbmd0aDtpPGE7aSsrKXtpZihpPnQpe3dhcm4oIlRUOiBpbnZhbGlkIGZ1bmN0aW9uIGlkOiAiK2kpO2UuaGludHNWYWxpZD0hMTtyZXR1cm59aWYoZS5mdW5jdGlvbnNVc2VkW2ldJiYhZS5mdW5jdGlvbnNEZWZpbmVkW2ldKXt3YXJuKCJUVDogdW5kZWZpbmVkIGZ1bmN0aW9uOiAiK2kpO2UuaGludHNWYWxpZD0hMTtyZXR1cm59fX0ocyxhKTtpZihpJiYxJmkubGVuZ3RoKXtjb25zdCBlPW5ldyBVaW50OEFycmF5KGkubGVuZ3RoKzEpO2Uuc2V0KGkuZGF0YSk7aS5kYXRhPWV9cmV0dXJuIHMuaGludHNWYWxpZH0obi5mcGdtLG4ucHJlcCxuWyJjdnQgIl0sRSk7aWYoIWQpe2RlbGV0ZSBuLmZwZ207ZGVsZXRlIG4ucHJlcDtkZWxldGUgblsiY3Z0ICJdfSFmdW5jdGlvbiBzYW5pdGl6ZU1ldHJpY3MoZSx0LGksYSxzLHIpe2lmKCF0KXtpJiYoaS5kYXRhPW51bGwpO3JldHVybn1lLnBvcz0oZS5zdGFydHx8MCkrdC5vZmZzZXQ7ZS5wb3MrPTQ7ZS5wb3MrPTI7ZS5wb3MrPTI7ZS5wb3MrPTI7ZS5wb3MrPTI7ZS5wb3MrPTI7ZS5wb3MrPTI7ZS5wb3MrPTI7ZS5wb3MrPTI7ZS5wb3MrPTI7Y29uc3Qgbj1lLmdldFVpbnQxNigpO2UucG9zKz04O2UucG9zKz0yO2xldCBvPWUuZ2V0VWludDE2KCk7aWYoMCE9PW4pe2lmKCEoMiZpbnQxNihhLmRhdGFbNDRdLGEuZGF0YVs0NV0pKSl7dC5kYXRhWzIyXT0wO3QuZGF0YVsyM109MH19aWYobz5zKXtpbmZvKGBUaGUgbnVtT2ZNZXRyaWNzICgke299KSBzaG91bGQgbm90IGJlIGdyZWF0ZXIgdGhhbiB0aGUgbnVtR2x5cGhzICgke3N9KS5gKTtvPXM7dC5kYXRhWzM0XT0oNjUyODAmbyk+Pjg7dC5kYXRhWzM1XT0yNTUmb31jb25zdCBnPXMtby0oaS5sZW5ndGgtNCpvPj4xKTtpZihnPjApe2NvbnN0IGU9bmV3IFVpbnQ4QXJyYXkoaS5sZW5ndGgrMipnKTtlLnNldChpLmRhdGEpO2lmKHIpe2VbaS5sZW5ndGhdPWkuZGF0YVsyXTtlW2kubGVuZ3RoKzFdPWkuZGF0YVszXX1pLmRhdGE9ZX19KHQsbi5oaGVhLG4uaG10eCxuLmhlYWQsbCxRKTtpZighbi5oZWFkKXRocm93IG5ldyBGb3JtYXRFcnJvcignUmVxdWlyZWQgImhlYWQiIHRhYmxlIGlzIG5vdCBmb3VuZCcpOyFmdW5jdGlvbiBzYW5pdGl6ZUhlYWQoZSx0LGkpe2NvbnN0IGE9ZS5kYXRhLHM9ZnVuY3Rpb24gaW50MzIoZSx0LGksYSl7cmV0dXJuKGU8PDI0KSsodDw8MTYpKyhpPDw4KSthfShhWzBdLGFbMV0sYVsyXSxhWzNdKTtpZihzPj4xNiE9MSl7aW5mbygiQXR0ZW1wdGluZyB0byBmaXggaW52YWxpZCB2ZXJzaW9uIGluIGhlYWQgdGFibGU6ICIrcyk7YVswXT0wO2FbMV09MTthWzJdPTA7YVszXT0wfWNvbnN0IHI9aW50MTYoYVs1MF0sYVs1MV0pO2lmKHI8MHx8cj4xKXtpbmZvKCJBdHRlbXB0aW5nIHRvIGZpeCBpbnZhbGlkIGluZGV4VG9Mb2NGb3JtYXQgaW4gaGVhZCB0YWJsZTogIityKTtjb25zdCBlPXQrMTtpZihpPT09ZTw8MSl7YVs1MF09MDthWzUxXT0wfWVsc2V7aWYoaSE9PWU8PDIpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJDb3VsZCBub3QgZml4IGluZGV4VG9Mb2NGb3JtYXQ6ICIrcik7YVs1MF09MDthWzUxXT0xfX19KG4uaGVhZCxoLGM/bi5sb2NhLmxlbmd0aDowKTtsZXQgZj1PYmplY3QuY3JlYXRlKG51bGwpO2lmKGMpe2NvbnN0IGU9aW50MTYobi5oZWFkLmRhdGFbNTBdLG4uaGVhZC5kYXRhWzUxXSksdD1mdW5jdGlvbiBzYW5pdGl6ZUdseXBoTG9jYXRpb25zKGUsdCxpLGEscyxyLG4pe2xldCBvLGcsYztpZihhKXtvPTQ7Zz1mdW5jdGlvbiBmb250SXRlbURlY29kZUxvbmcoZSx0KXtyZXR1cm4gZVt0XTw8MjR8ZVt0KzFdPDwxNnxlW3QrMl08PDh8ZVt0KzNdfTtjPWZ1bmN0aW9uIGZvbnRJdGVtRW5jb2RlTG9uZyhlLHQsaSl7ZVt0XT1pPj4+MjQmMjU1O2VbdCsxXT1pPj4xNiYyNTU7ZVt0KzJdPWk+PjgmMjU1O2VbdCszXT0yNTUmaX19ZWxzZXtvPTI7Zz1mdW5jdGlvbiBmb250SXRlbURlY29kZShlLHQpe3JldHVybiBlW3RdPDw5fGVbdCsxXTw8MX07Yz1mdW5jdGlvbiBmb250SXRlbUVuY29kZShlLHQsaSl7ZVt0XT1pPj45JjI1NTtlW3QrMV09aT4+MSYyNTV9fWNvbnN0IEM9cj9pKzE6aSxoPW8qKDErQyksbD1uZXcgVWludDhBcnJheShoKTtsLnNldChlLmRhdGEuc3ViYXJyYXkoMCxoKSk7ZS5kYXRhPWw7Y29uc3QgUT10LmRhdGEsRT1RLmxlbmd0aCx1PW5ldyBVaW50OEFycmF5KEUpO2xldCBkLGY7Y29uc3QgcD1bXTtmb3IoZD0wLGY9MDtkPGkrMTtkKyssZis9byl7bGV0IGU9ZyhsLGYpO2U+RSYmKGU9RSk7cC5wdXNoKHtpbmRleDpkLG9mZnNldDplLGVuZE9mZnNldDowfSl9cC5zb3J0KCgoZSx0KT0+ZS5vZmZzZXQtdC5vZmZzZXQpKTtmb3IoZD0wO2Q8aTtkKyspcFtkXS5lbmRPZmZzZXQ9cFtkKzFdLm9mZnNldDtwLnNvcnQoKChlLHQpPT5lLmluZGV4LXQuaW5kZXgpKTtmb3IoZD0wO2Q8aTtkKyspe2NvbnN0e29mZnNldDplLGVuZE9mZnNldDp0fT1wW2RdO2lmKDAhPT1lfHwwIT09dClicmVhaztjb25zdCBpPXBbZCsxXS5vZmZzZXQ7aWYoMCE9PWkpe3BbZF0uZW5kT2Zmc2V0PWk7YnJlYWt9fWNvbnN0IG09cC5hdCgtMik7MCE9PW0ub2Zmc2V0JiYwPT09bS5lbmRPZmZzZXQmJihtLmVuZE9mZnNldD1FKTtjb25zdCB5PU9iamVjdC5jcmVhdGUobnVsbCk7bGV0IHc9MDtjKGwsMCx3KTtmb3IoZD0wLGY9bztkPGk7ZCsrLGYrPW8pe2NvbnN0IGU9c2FuaXRpemVHbHlwaChRLHBbZF0ub2Zmc2V0LHBbZF0uZW5kT2Zmc2V0LHUsdyxzKSx0PWUubGVuZ3RoOzA9PT10JiYoeVtkXT0hMCk7ZS5zaXplT2ZJbnN0cnVjdGlvbnM+biYmKG49ZS5zaXplT2ZJbnN0cnVjdGlvbnMpO3crPXQ7YyhsLGYsdyl9aWYoMD09PXcpe2NvbnN0IGU9bmV3IFVpbnQ4QXJyYXkoWzAsMSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw0OSwwXSk7Zm9yKGQ9MCxmPW87ZDxDO2QrKyxmKz1vKWMobCxmLGUubGVuZ3RoKTt0LmRhdGE9ZX1lbHNlIGlmKHIpe2NvbnN0IGk9ZyhsLG8pO2lmKHUubGVuZ3RoPmkrdyl0LmRhdGE9dS5zdWJhcnJheSgwLGkrdyk7ZWxzZXt0LmRhdGE9bmV3IFVpbnQ4QXJyYXkoaSt3KTt0LmRhdGEuc2V0KHUuc3ViYXJyYXkoMCx3KSl9dC5kYXRhLnNldCh1LnN1YmFycmF5KDAsaSksdyk7YyhlLmRhdGEsbC5sZW5ndGgtbyx3K2kpfWVsc2UgdC5kYXRhPXUuc3ViYXJyYXkoMCx3KTtyZXR1cm57bWlzc2luZ0dseXBoczp5LG1heFNpemVPZkluc3RydWN0aW9uczpufX0obi5sb2NhLG4uZ2x5ZixoLGUsZCxRLHUpO2Y9dC5taXNzaW5nR2x5cGhzO2lmKEM+PTY1NTM2JiZuLm1heHAubGVuZ3RoPj0zMil7bi5tYXhwLmRhdGFbMjZdPXQubWF4U2l6ZU9mSW5zdHJ1Y3Rpb25zPj44O24ubWF4cC5kYXRhWzI3XT0yNTUmdC5tYXhTaXplT2ZJbnN0cnVjdGlvbnN9fWlmKCFuLmhoZWEpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCdSZXF1aXJlZCAiaGhlYSIgdGFibGUgaXMgbm90IGZvdW5kJyk7aWYoMD09PW4uaGhlYS5kYXRhWzEwXSYmMD09PW4uaGhlYS5kYXRhWzExXSl7bi5oaGVhLmRhdGFbMTBdPTI1NTtuLmhoZWEuZGF0YVsxMV09MjU1fWNvbnN0IHA9e3VuaXRzUGVyRW06aW50MTYobi5oZWFkLmRhdGFbMThdLG4uaGVhZC5kYXRhWzE5XSkseU1heDpzaWduZWRJbnQxNihuLmhlYWQuZGF0YVs0Ml0sbi5oZWFkLmRhdGFbNDNdKSx5TWluOnNpZ25lZEludDE2KG4uaGVhZC5kYXRhWzM4XSxuLmhlYWQuZGF0YVszOV0pLGFzY2VudDpzaWduZWRJbnQxNihuLmhoZWEuZGF0YVs0XSxuLmhoZWEuZGF0YVs1XSksZGVzY2VudDpzaWduZWRJbnQxNihuLmhoZWEuZGF0YVs2XSxuLmhoZWEuZGF0YVs3XSksbGluZUdhcDpzaWduZWRJbnQxNihuLmhoZWEuZGF0YVs4XSxuLmhoZWEuZGF0YVs5XSl9O3RoaXMuYXNjZW50PXAuYXNjZW50L3AudW5pdHNQZXJFbTt0aGlzLmRlc2NlbnQ9cC5kZXNjZW50L3AudW5pdHNQZXJFbTt0aGlzLmxpbmVHYXA9cC5saW5lR2FwL3AudW5pdHNQZXJFbTtpZih0aGlzLmNzc0ZvbnRJbmZvPy5saW5lSGVpZ2h0KXt0aGlzLmxpbmVIZWlnaHQ9dGhpcy5jc3NGb250SW5mby5tZXRyaWNzLmxpbmVIZWlnaHQ7dGhpcy5saW5lR2FwPXRoaXMuY3NzRm9udEluZm8ubWV0cmljcy5saW5lR2FwfWVsc2UgdGhpcy5saW5lSGVpZ2h0PXRoaXMuYXNjZW50LXRoaXMuZGVzY2VudCt0aGlzLmxpbmVHYXA7bi5wb3N0JiZmdW5jdGlvbiByZWFkUG9zdFNjcmlwdFRhYmxlKGUsaSxhKXtjb25zdCBzPSh0LnN0YXJ0fHwwKStlLm9mZnNldDt0LnBvcz1zO2NvbnN0IHI9cytlLmxlbmd0aCxuPXQuZ2V0SW50MzIoKTt0LnNraXAoMjgpO2xldCBvLGcsYz0hMDtzd2l0Y2gobil7Y2FzZSA2NTUzNjpvPU9pO2JyZWFrO2Nhc2UgMTMxMDcyOmNvbnN0IGU9dC5nZXRVaW50MTYoKTtpZihlIT09YSl7Yz0hMTticmVha31jb25zdCBzPVtdO2ZvcihnPTA7ZzxlOysrZyl7Y29uc3QgZT10LmdldFVpbnQxNigpO2lmKGU+PTMyNzY4KXtjPSExO2JyZWFrfXMucHVzaChlKX1pZighYylicmVhaztjb25zdCBDPVtdLGg9W107Zm9yKDt0LnBvczxyOyl7Y29uc3QgZT10LmdldEJ5dGUoKTtoLmxlbmd0aD1lO2ZvcihnPTA7ZzxlOysrZyloW2ddPVN0cmluZy5mcm9tQ2hhckNvZGUodC5nZXRCeXRlKCkpO0MucHVzaChoLmpvaW4oIiIpKX1vPVtdO2ZvcihnPTA7ZzxlOysrZyl7Y29uc3QgZT1zW2ddO2U8MjU4P28ucHVzaChPaVtlXSk6by5wdXNoKENbZS0yNThdKX1icmVhaztjYXNlIDE5NjYwODpicmVhaztkZWZhdWx0Ondhcm4oIlVua25vd24vdW5zdXBwb3J0ZWQgcG9zdCB0YWJsZSB2ZXJzaW9uICIrbik7Yz0hMTtpLmRlZmF1bHRFbmNvZGluZyYmKG89aS5kZWZhdWx0RW5jb2RpbmcpfWkuZ2x5cGhOYW1lcz1vO3JldHVybiBjfShuLnBvc3QsaSxoKTtuLnBvc3Q9e3RhZzoicG9zdCIsZGF0YTpjcmVhdGVQb3N0VGFibGUoaSl9O2NvbnN0IG09W107ZnVuY3Rpb24gaGFzR2x5cGgoZSl7cmV0dXJuIWZbZV19aWYoaS5jb21wb3NpdGUpe2NvbnN0IGU9aS5jaWRUb0dpZE1hcHx8W10sdD0wPT09ZS5sZW5ndGg7aS5jTWFwLmZvckVhY2goKGZ1bmN0aW9uKGksYSl7InN0cmluZyI9PXR5cGVvZiBhJiYoYT1jb252ZXJ0Q2lkU3RyaW5nKGksYSwhMCkpO2lmKGE+NjU1MzUpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJNYXggc2l6ZSBvZiBDSUQgaXMgNjUsNTM1Iik7bGV0IHM9LTE7dD9zPWE6dm9pZCAwIT09ZVthXSYmKHM9ZVthXSk7cz49MCYmczxoJiZoYXNHbHlwaChzKSYmKG1baV09cyl9KSl9ZWxzZXtjb25zdCBlPWZ1bmN0aW9uIHJlYWRDbWFwVGFibGUoZSx0LGksYSl7aWYoIWUpe3dhcm4oIk5vIGNtYXAgdGFibGUgYXZhaWxhYmxlLiIpO3JldHVybntwbGF0Zm9ybUlkOi0xLGVuY29kaW5nSWQ6LTEsbWFwcGluZ3M6W10saGFzU2hvcnRDbWFwOiExfX1sZXQgcyxyPSh0LnN0YXJ0fHwwKStlLm9mZnNldDt0LnBvcz1yO3Quc2tpcCgyKTtjb25zdCBuPXQuZ2V0VWludDE2KCk7bGV0IG8sZz0hMTtmb3IobGV0IGU9MDtlPG47ZSsrKXtjb25zdCBzPXQuZ2V0VWludDE2KCkscj10LmdldFVpbnQxNigpLGM9dC5nZXRJbnQzMigpPj4+MDtsZXQgQz0hMTtpZihvPy5wbGF0Zm9ybUlkIT09c3x8bz8uZW5jb2RpbmdJZCE9PXIpe2lmKDAhPT1zfHwwIT09ciYmMSE9PXImJjMhPT1yKWlmKDE9PT1zJiYwPT09cilDPSEwO2Vsc2UgaWYoMyE9PXN8fDEhPT1yfHwhYSYmbyl7aWYoaSYmMz09PXMmJjA9PT1yKXtDPSEwO2xldCBpPSEwO2lmKGU8bi0xKXtjb25zdCBlPXQucGVla0J5dGVzKDIpO2ludDE2KGVbMF0sZVsxXSk8cyYmKGk9ITEpfWkmJihnPSEwKX19ZWxzZXtDPSEwO2l8fChnPSEwKX1lbHNlIEM9ITA7QyYmKG89e3BsYXRmb3JtSWQ6cyxlbmNvZGluZ0lkOnIsb2Zmc2V0OmN9KTtpZihnKWJyZWFrfX1vJiYodC5wb3M9citvLm9mZnNldCk7aWYoIW98fC0xPT09dC5wZWVrQnl0ZSgpKXt3YXJuKCJDb3VsZCBub3QgZmluZCBhIHByZWZlcnJlZCBjbWFwIHRhYmxlLiIpO3JldHVybntwbGF0Zm9ybUlkOi0xLGVuY29kaW5nSWQ6LTEsbWFwcGluZ3M6W10saGFzU2hvcnRDbWFwOiExfX1jb25zdCBjPXQuZ2V0VWludDE2KCk7bGV0IEM9ITE7Y29uc3QgaD1bXTtsZXQgbCxRO2lmKDA9PT1jKXt0LnNraXAoNCk7Zm9yKGw9MDtsPDI1NjtsKyspe2NvbnN0IGU9dC5nZXRCeXRlKCk7ZSYmaC5wdXNoKHtjaGFyQ29kZTpsLGdseXBoSWQ6ZX0pfUM9ITB9ZWxzZSBpZigyPT09Yyl7dC5za2lwKDQpO2NvbnN0IGU9W107bGV0IGk9MDtmb3IobGV0IGE9MDthPDI1NjthKyspe2NvbnN0IGE9dC5nZXRVaW50MTYoKT4+MztlLnB1c2goYSk7aT1NYXRoLm1heChhLGkpfWNvbnN0IGE9W107Zm9yKGxldCBlPTA7ZTw9aTtlKyspYS5wdXNoKHtmaXJzdENvZGU6dC5nZXRVaW50MTYoKSxlbnRyeUNvdW50OnQuZ2V0VWludDE2KCksaWREZWx0YTpzaWduZWRJbnQxNih0LmdldEJ5dGUoKSx0LmdldEJ5dGUoKSksaWRSYW5nZVBvczp0LnBvcyt0LmdldFVpbnQxNigpfSk7Zm9yKGxldCBpPTA7aTwyNTY7aSsrKWlmKDA9PT1lW2ldKXt0LnBvcz1hWzBdLmlkUmFuZ2VQb3MrMippO1E9dC5nZXRVaW50MTYoKTtoLnB1c2goe2NoYXJDb2RlOmksZ2x5cGhJZDpRfSl9ZWxzZXtjb25zdCBzPWFbZVtpXV07Zm9yKGw9MDtsPHMuZW50cnlDb3VudDtsKyspe2NvbnN0IGU9KGk8PDgpK2wrcy5maXJzdENvZGU7dC5wb3M9cy5pZFJhbmdlUG9zKzIqbDtRPXQuZ2V0VWludDE2KCk7MCE9PVEmJihRPShRK3MuaWREZWx0YSklNjU1MzYpO2gucHVzaCh7Y2hhckNvZGU6ZSxnbHlwaElkOlF9KX19fWVsc2UgaWYoND09PWMpe3Quc2tpcCg0KTtjb25zdCBlPXQuZ2V0VWludDE2KCk+PjE7dC5za2lwKDYpO2NvbnN0IGk9W107bGV0IGE7Zm9yKGE9MDthPGU7YSsrKWkucHVzaCh7ZW5kOnQuZ2V0VWludDE2KCl9KTt0LnNraXAoMik7Zm9yKGE9MDthPGU7YSsrKWlbYV0uc3RhcnQ9dC5nZXRVaW50MTYoKTtmb3IoYT0wO2E8ZTthKyspaVthXS5kZWx0YT10LmdldFVpbnQxNigpO2xldCBuLG89MDtmb3IoYT0wO2E8ZTthKyspe3M9aVthXTtjb25zdCByPXQuZ2V0VWludDE2KCk7aWYocil7bj0ocj4+MSktKGUtYSk7cy5vZmZzZXRJbmRleD1uO289TWF0aC5tYXgobyxuK3MuZW5kLXMuc3RhcnQrMSl9ZWxzZSBzLm9mZnNldEluZGV4PS0xfWNvbnN0IGc9W107Zm9yKGw9MDtsPG87bCsrKWcucHVzaCh0LmdldFVpbnQxNigpKTtmb3IoYT0wO2E8ZTthKyspe3M9aVthXTtyPXMuc3RhcnQ7Y29uc3QgZT1zLmVuZCx0PXMuZGVsdGE7bj1zLm9mZnNldEluZGV4O2ZvcihsPXI7bDw9ZTtsKyspaWYoNjU1MzUhPT1sKXtRPW48MD9sOmdbbitsLXJdO1E9USt0JjY1NTM1O2gucHVzaCh7Y2hhckNvZGU6bCxnbHlwaElkOlF9KX19fWVsc2UgaWYoNj09PWMpe3Quc2tpcCg0KTtjb25zdCBlPXQuZ2V0VWludDE2KCksaT10LmdldFVpbnQxNigpO2ZvcihsPTA7bDxpO2wrKyl7UT10LmdldFVpbnQxNigpO2NvbnN0IGk9ZStsO2gucHVzaCh7Y2hhckNvZGU6aSxnbHlwaElkOlF9KX19ZWxzZXtpZigxMiE9PWMpe3dhcm4oImNtYXAgdGFibGUgaGFzIHVuc3VwcG9ydGVkIGZvcm1hdDogIitjKTtyZXR1cm57cGxhdGZvcm1JZDotMSxlbmNvZGluZ0lkOi0xLG1hcHBpbmdzOltdLGhhc1Nob3J0Q21hcDohMX19e3Quc2tpcCgxMCk7Y29uc3QgZT10LmdldEludDMyKCk+Pj4wO2ZvcihsPTA7bDxlO2wrKyl7Y29uc3QgZT10LmdldEludDMyKCk+Pj4wLGk9dC5nZXRJbnQzMigpPj4+MDtsZXQgYT10LmdldEludDMyKCk+Pj4wO2ZvcihsZXQgdD1lO3Q8PWk7dCsrKWgucHVzaCh7Y2hhckNvZGU6dCxnbHlwaElkOmErK30pfX19aC5zb3J0KChmdW5jdGlvbihlLHQpe3JldHVybiBlLmNoYXJDb2RlLXQuY2hhckNvZGV9KSk7Zm9yKGxldCBlPTE7ZTxoLmxlbmd0aDtlKyspaWYoaFtlLTFdLmNoYXJDb2RlPT09aFtlXS5jaGFyQ29kZSl7aC5zcGxpY2UoZSwxKTtlLS19cmV0dXJue3BsYXRmb3JtSWQ6by5wbGF0Zm9ybUlkLGVuY29kaW5nSWQ6by5lbmNvZGluZ0lkLG1hcHBpbmdzOmgsaGFzU2hvcnRDbWFwOkN9fShuLmNtYXAsdCx0aGlzLmlzU3ltYm9saWNGb250LGkuaGFzRW5jb2RpbmcpLGE9ZS5wbGF0Zm9ybUlkLHM9ZS5lbmNvZGluZ0lkLHI9ZS5tYXBwaW5ncztsZXQgbz1bXSxnPSExOyFpLmhhc0VuY29kaW5nfHwiTWFjUm9tYW5FbmNvZGluZyIhPT1pLmJhc2VFbmNvZGluZ05hbWUmJiJXaW5BbnNpRW5jb2RpbmciIT09aS5iYXNlRW5jb2RpbmdOYW1lfHwobz1nZXRFbmNvZGluZyhpLmJhc2VFbmNvZGluZ05hbWUpKTtpZihpLmhhc0VuY29kaW5nJiYhdGhpcy5pc1N5bWJvbGljRm9udCYmKDM9PT1hJiYxPT09c3x8MT09PWEmJjA9PT1zKSl7Y29uc3QgZT1SaSgpO2ZvcihsZXQgdD0wO3Q8MjU2O3QrKyl7bGV0IG47bj12b2lkIDAhPT10aGlzLmRpZmZlcmVuY2VzW3RdP3RoaXMuZGlmZmVyZW5jZXNbdF06by5sZW5ndGgmJiIiIT09b1t0XT9vW3RdOmZpW3RdO2lmKCFuKWNvbnRpbnVlO2NvbnN0IGc9cmVjb3ZlckdseXBoTmFtZShuLGUpO2xldCBjOzM9PT1hJiYxPT09cz9jPWVbZ106MT09PWEmJjA9PT1zJiYoYz1kaS5pbmRleE9mKGcpKTtpZih2b2lkIDA9PT1jKXtpZighaS5nbHlwaE5hbWVzJiZpLmhhc0luY2x1ZGVkVG9Vbmljb2RlTWFwJiYhKHRoaXMudG9Vbmljb2RlIGluc3RhbmNlb2YgSWRlbnRpdHlUb1VuaWNvZGVNYXApKXtjb25zdCBlPXRoaXMudG9Vbmljb2RlLmdldCh0KTtlJiYoYz1lLmNvZGVQb2ludEF0KDApKX1pZih2b2lkIDA9PT1jKWNvbnRpbnVlfWZvcihjb25zdCBlIG9mIHIpaWYoZS5jaGFyQ29kZT09PWMpe21bdF09ZS5nbHlwaElkO2JyZWFrfX19ZWxzZSBpZigwPT09YSl7Zm9yKGNvbnN0IGUgb2YgciltW2UuY2hhckNvZGVdPWUuZ2x5cGhJZDtnPSEwfWVsc2UgaWYoMz09PWEmJjA9PT1zKWZvcihjb25zdCBlIG9mIHIpe2xldCB0PWUuY2hhckNvZGU7dD49NjE0NDAmJnQ8PTYxNjk1JiYodCY9MjU1KTttW3RdPWUuZ2x5cGhJZH1lbHNlIGZvcihjb25zdCBlIG9mIHIpbVtlLmNoYXJDb2RlXT1lLmdseXBoSWQ7aWYoaS5nbHlwaE5hbWVzJiYoby5sZW5ndGh8fHRoaXMuZGlmZmVyZW5jZXMubGVuZ3RoKSlmb3IobGV0IGU9MDtlPDI1NjsrK2Upe2lmKCFnJiZ2b2lkIDAhPT1tW2VdKWNvbnRpbnVlO2NvbnN0IHQ9dGhpcy5kaWZmZXJlbmNlc1tlXXx8b1tlXTtpZighdCljb250aW51ZTtjb25zdCBhPWkuZ2x5cGhOYW1lcy5pbmRleE9mKHQpO2E+MCYmaGFzR2x5cGgoYSkmJihtW2VdPWEpfX0wPT09bS5sZW5ndGgmJihtWzBdPTApO2xldCB5PWwtMTtRfHwoeT0wKTtpZighaS5jc3NGb250SW5mbyl7Y29uc3QgZT1hZGp1c3RNYXBwaW5nKG0saGFzR2x5cGgseSx0aGlzLnRvVW5pY29kZSk7dGhpcy50b0ZvbnRDaGFyPWUudG9Gb250Q2hhcjtuLmNtYXA9e3RhZzoiY21hcCIsZGF0YTpjcmVhdGVDbWFwVGFibGUoZS5jaGFyQ29kZVRvR2x5cGhJZCxlLnRvVW5pY29kZUV4dHJhTWFwLGwpfTtuWyJPUy8yIl0mJmZ1bmN0aW9uIHZhbGlkYXRlT1MyVGFibGUoZSx0KXt0LnBvcz0odC5zdGFydHx8MCkrZS5vZmZzZXQ7Y29uc3QgaT10LmdldFVpbnQxNigpO3Quc2tpcCg2MCk7Y29uc3QgYT10LmdldFVpbnQxNigpO2lmKGk8NCYmNzY4JmEpcmV0dXJuITE7aWYodC5nZXRVaW50MTYoKT50LmdldFVpbnQxNigpKXJldHVybiExO3Quc2tpcCg2KTtpZigwPT09dC5nZXRVaW50MTYoKSlyZXR1cm4hMTtlLmRhdGFbOF09ZS5kYXRhWzldPTA7cmV0dXJuITB9KG5bIk9TLzIiXSx0KXx8KG5bIk9TLzIiXT17dGFnOiJPUy8yIixkYXRhOmNyZWF0ZU9TMlRhYmxlKGksZS5jaGFyQ29kZVRvR2x5cGhJZCxwKX0pfWlmKCFjKXRyeXtnPW5ldyBTdHJlYW0oblsiQ0ZGICJdLmRhdGEpO289bmV3IENGRlBhcnNlcihnLGksWWkpLnBhcnNlKCk7by5kdXBsaWNhdGVGaXJzdEdseXBoKCk7Y29uc3QgZT1uZXcgQ0ZGQ29tcGlsZXIobyk7blsiQ0ZGICJdLmRhdGE9ZS5jb21waWxlKCl9Y2F0Y2h7d2FybigiRmFpbGVkIHRvIGNvbXBpbGUgZm9udCAiK2kubG9hZGVkTmFtZSl9aWYobi5uYW1lKXtjb25zdFt0LGFdPXJlYWROYW1lVGFibGUobi5uYW1lKTtuLm5hbWUuZGF0YT1jcmVhdGVOYW1lVGFibGUoZSx0KTt0aGlzLnBzTmFtZT10WzBdWzZdfHxudWxsO2kuY29tcG9zaXRlfHxmdW5jdGlvbiBhZGp1c3RUcnVlVHlwZVRvVW5pY29kZShlLHQsaSl7aWYoZS5pc0ludGVybmFsRm9udClyZXR1cm47aWYoZS5oYXNJbmNsdWRlZFRvVW5pY29kZU1hcClyZXR1cm47aWYoZS5oYXNFbmNvZGluZylyZXR1cm47aWYoZS50b1VuaWNvZGUgaW5zdGFuY2VvZiBJZGVudGl0eVRvVW5pY29kZU1hcClyZXR1cm47aWYoIXQpcmV0dXJuO2lmKDA9PT1pLmxlbmd0aClyZXR1cm47aWYoZS5kZWZhdWx0RW5jb2Rpbmc9PT1waSlyZXR1cm47Zm9yKGNvbnN0IGUgb2YgaSlpZighaXNXaW5OYW1lUmVjb3JkKGUpKXJldHVybjtjb25zdCBhPXBpLHM9W10scj1SaSgpO2Zvcihjb25zdCBlIGluIGEpe2NvbnN0IHQ9YVtlXTtpZigiIj09PXQpY29udGludWU7Y29uc3QgaT1yW3RdO3ZvaWQgMCE9PWkmJihzW2VdPVN0cmluZy5mcm9tQ2hhckNvZGUoaSkpfXMubGVuZ3RoPjAmJmUudG9Vbmljb2RlLmFtZW5kKHMpfShpLHRoaXMuaXNTeW1ib2xpY0ZvbnQsYSl9ZWxzZSBuLm5hbWU9e3RhZzoibmFtZSIsZGF0YTpjcmVhdGVOYW1lVGFibGUodGhpcy5uYW1lKX07Y29uc3Qgdz1uZXcgT3BlblR5cGVGaWxlQnVpbGRlcihyLnZlcnNpb24pO2Zvcihjb25zdCBlIGluIG4pdy5hZGRUYWJsZShlLG5bZV0uZGF0YSk7cmV0dXJuIHcudG9BcnJheSgpfWNvbnZlcnQoZSx0LGkpe2kuZml4ZWRQaXRjaD0hMTtpLmJ1aWx0SW5FbmNvZGluZyYmZnVuY3Rpb24gYWRqdXN0VHlwZTFUb1VuaWNvZGUoZSx0KXtpZihlLmlzSW50ZXJuYWxGb250KXJldHVybjtpZihlLmhhc0luY2x1ZGVkVG9Vbmljb2RlTWFwKXJldHVybjtpZih0PT09ZS5kZWZhdWx0RW5jb2RpbmcpcmV0dXJuO2lmKGUudG9Vbmljb2RlIGluc3RhbmNlb2YgSWRlbnRpdHlUb1VuaWNvZGVNYXApcmV0dXJuO2NvbnN0IGk9W10sYT1SaSgpO2Zvcihjb25zdCBzIGluIHQpe2lmKGUuaGFzRW5jb2RpbmcmJihlLmJhc2VFbmNvZGluZ05hbWV8fHZvaWQgMCE9PWUuZGlmZmVyZW5jZXNbc10pKWNvbnRpbnVlO2NvbnN0IHI9Z2V0VW5pY29kZUZvckdseXBoKHRbc10sYSk7LTEhPT1yJiYoaVtzXT1TdHJpbmcuZnJvbUNoYXJDb2RlKHIpKX1pLmxlbmd0aD4wJiZlLnRvVW5pY29kZS5hbWVuZChpKX0oaSxpLmJ1aWx0SW5FbmNvZGluZyk7bGV0IHM9MTt0IGluc3RhbmNlb2YgQ0ZGRm9udCYmKHM9dC5udW1HbHlwaHMtMSk7Y29uc3Qgcj10LmdldEdseXBoTWFwcGluZyhpKTtsZXQgbj1udWxsLG89cixnPW51bGw7aWYoIWkuY3NzRm9udEluZm8pe249YWRqdXN0TWFwcGluZyhyLHQuaGFzR2x5cGhJZC5iaW5kKHQpLHMsdGhpcy50b1VuaWNvZGUpO3RoaXMudG9Gb250Q2hhcj1uLnRvRm9udENoYXI7bz1uLmNoYXJDb2RlVG9HbHlwaElkO2c9bi50b1VuaWNvZGVFeHRyYU1hcH1jb25zdCBjPXQubnVtR2x5cGhzO2Z1bmN0aW9uIGdldENoYXJDb2RlcyhlLHQpe2xldCBpPW51bGw7Zm9yKGNvbnN0IGEgaW4gZSl0PT09ZVthXSYmKGl8fD1bXSkucHVzaCgwfGEpO3JldHVybiBpfWZ1bmN0aW9uIGNyZWF0ZUNoYXJDb2RlKGUsdCl7Zm9yKGNvbnN0IGkgaW4gZSlpZih0PT09ZVtpXSlyZXR1cm4gMHxpO24uY2hhckNvZGVUb0dseXBoSWRbbi5uZXh0QXZhaWxhYmxlRm9udENoYXJDb2RlXT10O3JldHVybiBuLm5leHRBdmFpbGFibGVGb250Q2hhckNvZGUrK31jb25zdCBDPXQuc2VhY3M7aWYobiYmQz8ubGVuZ3RoKXtjb25zdCBlPWkuZm9udE1hdHJpeHx8YSxzPXQuZ2V0Q2hhcnNldCgpLG89T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IobGV0IHQgaW4gQyl7dHw9MDtjb25zdCBpPUNbdF0sYT1maVtpWzJdXSxnPWZpW2lbM11dLGM9cy5pbmRleE9mKGEpLGg9cy5pbmRleE9mKGcpO2lmKGM8MHx8aDwwKWNvbnRpbnVlO2NvbnN0IGw9e3g6aVswXSplWzBdK2lbMV0qZVsyXStlWzRdLHk6aVswXSplWzFdK2lbMV0qZVszXStlWzVdfSxRPWdldENoYXJDb2RlcyhyLHQpO2lmKFEpZm9yKGNvbnN0IGUgb2YgUSl7Y29uc3QgdD1uLmNoYXJDb2RlVG9HbHlwaElkLGk9Y3JlYXRlQ2hhckNvZGUodCxjKSxhPWNyZWF0ZUNoYXJDb2RlKHQsaCk7b1tlXT17YmFzZUZvbnRDaGFyQ29kZTppLGFjY2VudEZvbnRDaGFyQ29kZTphLGFjY2VudE9mZnNldDpsfX19aS5zZWFjTWFwPW99Y29uc3QgaD0xLyhpLmZvbnRNYXRyaXh8fGEpWzBdLGw9bmV3IE9wZW5UeXBlRmlsZUJ1aWxkZXIoIk9UVE8iKTtsLmFkZFRhYmxlKCJDRkYgIix0LmRhdGEpO2wuYWRkVGFibGUoIk9TLzIiLGNyZWF0ZU9TMlRhYmxlKGksbykpO2wuYWRkVGFibGUoImNtYXAiLGNyZWF0ZUNtYXBUYWJsZShvLGcsYykpO2wuYWRkVGFibGUoImhlYWQiLCJcMAFcMFwwXDBcMBBcMFwwXDBcMFwwXw88w7VcMFwwIitzYWZlU3RyaW5nMTYoaCkrIlwwXDBcMFwwwp5cdn4nXDBcMFwwXDDCnlx2fidcMFwwIitzYWZlU3RyaW5nMTYoaS5kZXNjZW50KSsiD8O/IitzYWZlU3RyaW5nMTYoaS5hc2NlbnQpK3N0cmluZzE2KGkuaXRhbGljQW5nbGU/MjowKSsiXDARXDBcMFwwXDBcMFwwIik7bC5hZGRUYWJsZSgiaGhlYSIsIlwwAVwwXDAiK3NhZmVTdHJpbmcxNihpLmFzY2VudCkrc2FmZVN0cmluZzE2KGkuZGVzY2VudCkrIlwwXDDDv8O/XDBcMFwwXDBcMFwwIitzYWZlU3RyaW5nMTYoaS5jYXBIZWlnaHQpK3NhZmVTdHJpbmcxNihNYXRoLnRhbihpLml0YWxpY0FuZ2xlKSppLnhIZWlnaHQpKyJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiK3N0cmluZzE2KGMpKTtsLmFkZFRhYmxlKCJobXR4IixmdW5jdGlvbiBmb250RmllbGRzSG10eCgpe2NvbnN0IGU9dC5jaGFyc3RyaW5ncyxpPXQuY2ZmP3QuY2ZmLndpZHRoczpudWxsO2xldCBhPSJcMFwwXDBcMCI7Zm9yKGxldCB0PTEscz1jO3Q8czt0Kyspe2xldCBzPTA7aWYoZSl7Y29uc3QgaT1lW3QtMV07cz0id2lkdGgiaW4gaT9pLndpZHRoOjB9ZWxzZSBpJiYocz1NYXRoLmNlaWwoaVt0XXx8MCkpO2ErPXN0cmluZzE2KHMpK3N0cmluZzE2KDApfXJldHVybiBhfSgpKTtsLmFkZFRhYmxlKCJtYXhwIiwiXDBcMFBcMCIrc3RyaW5nMTYoYykpO2wuYWRkVGFibGUoIm5hbWUiLGNyZWF0ZU5hbWVUYWJsZShlKSk7bC5hZGRUYWJsZSgicG9zdCIsY3JlYXRlUG9zdFRhYmxlKGkpKTtyZXR1cm4gbC50b0FycmF5KCl9Z2V0IHNwYWNlV2lkdGgoKXtjb25zdCBlPVsic3BhY2UiLCJtaW51cyIsIm9uZSIsImkiLCJJIl07bGV0IHQ7Zm9yKGNvbnN0IGkgb2YgZSl7aWYoaSBpbiB0aGlzLndpZHRocyl7dD10aGlzLndpZHRoc1tpXTticmVha31jb25zdCBlPVJpKClbaV07bGV0IGE9MDtpZih0aGlzLmNvbXBvc2l0ZSYmdGhpcy5jTWFwLmNvbnRhaW5zKGUpKXthPXRoaXMuY01hcC5sb29rdXAoZSk7InN0cmluZyI9PXR5cGVvZiBhJiYoYT1jb252ZXJ0Q2lkU3RyaW5nKGUsYSkpfSFhJiZ0aGlzLnRvVW5pY29kZSYmKGE9dGhpcy50b1VuaWNvZGUuY2hhckNvZGVPZihlKSk7YTw9MCYmKGE9ZSk7dD10aGlzLndpZHRoc1thXTtpZih0KWJyZWFrfXJldHVybiBzaGFkb3codGhpcywic3BhY2VXaWR0aCIsdHx8dGhpcy5kZWZhdWx0V2lkdGgpfV9jaGFyVG9HbHlwaChlLHQ9ITEpe2xldCBpLGEscyxyPXRoaXMuX2dseXBoQ2FjaGVbZV07aWYocj8uaXNTcGFjZT09PXQpcmV0dXJuIHI7bGV0IG49ZTtpZih0aGlzLmNNYXA/LmNvbnRhaW5zKGUpKXtuPXRoaXMuY01hcC5sb29rdXAoZSk7InN0cmluZyI9PXR5cGVvZiBuJiYobj1jb252ZXJ0Q2lkU3RyaW5nKGUsbikpfWE9dGhpcy53aWR0aHNbbl07Im51bWJlciIhPXR5cGVvZiBhJiYoYT10aGlzLmRlZmF1bHRXaWR0aCk7Y29uc3Qgbz10aGlzLnZtZXRyaWNzPy5bbl07bGV0IGc9dGhpcy50b1VuaWNvZGUuZ2V0KGUpfHxlOyJudW1iZXIiPT10eXBlb2YgZyYmKGc9U3RyaW5nLmZyb21DaGFyQ29kZShnKSk7bGV0IGM9dm9pZCAwIT09dGhpcy50b0ZvbnRDaGFyW2VdO2k9dGhpcy50b0ZvbnRDaGFyW2VdfHxlO2lmKHRoaXMubWlzc2luZ0ZpbGUpe2NvbnN0IHQ9dGhpcy5kaWZmZXJlbmNlc1tlXXx8dGhpcy5kZWZhdWx0RW5jb2RpbmdbZV07Ii5ub3RkZWYiIT09dCYmIiIhPT10fHwiVHlwZTEiIT09dGhpcy50eXBlfHwoaT0zMik7aT1mdW5jdGlvbiBtYXBTcGVjaWFsVW5pY29kZVZhbHVlcyhlKXtyZXR1cm4gZT49NjU1MjAmJmU8PTY1NTM1PzA6ZT49NjI5NzYmJmU8PTYzNzQzP3hpKClbZV18fGU6MTczPT09ZT80NTplfShpKX10aGlzLmlzVHlwZTNGb250JiYocz1pKTtsZXQgQz1udWxsO2lmKHRoaXMuc2VhY01hcD8uW2VdKXtjPSEwO2NvbnN0IHQ9dGhpcy5zZWFjTWFwW2VdO2k9dC5iYXNlRm9udENoYXJDb2RlO0M9e2ZvbnRDaGFyOlN0cmluZy5mcm9tQ29kZVBvaW50KHQuYWNjZW50Rm9udENoYXJDb2RlKSxvZmZzZXQ6dC5hY2NlbnRPZmZzZXR9fWxldCBoPSIiOyJudW1iZXIiPT10eXBlb2YgaSYmKGk8PTExMTQxMTE/aD1TdHJpbmcuZnJvbUNvZGVQb2ludChpKTp3YXJuKGBjaGFyVG9HbHlwaCAtIGludmFsaWQgZm9udENoYXJDb2RlOiAke2l9YCkpO3I9bmV3IGZvbnRzX0dseXBoKGUsaCxnLEMsYSxvLHMsdCxjKTtyZXR1cm4gdGhpcy5fZ2x5cGhDYWNoZVtlXT1yfWNoYXJzVG9HbHlwaHMoZSl7bGV0IHQ9dGhpcy5fY2hhcnNDYWNoZVtlXTtpZih0KXJldHVybiB0O3Q9W107aWYodGhpcy5jTWFwKXtjb25zdCBpPU9iamVjdC5jcmVhdGUobnVsbCksYT1lLmxlbmd0aDtsZXQgcz0wO2Zvcig7czxhOyl7dGhpcy5jTWFwLnJlYWRDaGFyQ29kZShlLHMsaSk7Y29uc3R7Y2hhcmNvZGU6YSxsZW5ndGg6cn09aTtzKz1yO2NvbnN0IG49dGhpcy5fY2hhclRvR2x5cGgoYSwxPT09ciYmMzI9PT1lLmNoYXJDb2RlQXQocy0xKSk7dC5wdXNoKG4pfX1lbHNlIGZvcihsZXQgaT0wLGE9ZS5sZW5ndGg7aTxhOysraSl7Y29uc3QgYT1lLmNoYXJDb2RlQXQoaSkscz10aGlzLl9jaGFyVG9HbHlwaChhLDMyPT09YSk7dC5wdXNoKHMpfXJldHVybiB0aGlzLl9jaGFyc0NhY2hlW2VdPXR9Z2V0Q2hhclBvc2l0aW9ucyhlKXtjb25zdCB0PVtdO2lmKHRoaXMuY01hcCl7Y29uc3QgaT1PYmplY3QuY3JlYXRlKG51bGwpO2xldCBhPTA7Zm9yKDthPGUubGVuZ3RoOyl7dGhpcy5jTWFwLnJlYWRDaGFyQ29kZShlLGEsaSk7Y29uc3Qgcz1pLmxlbmd0aDt0LnB1c2goW2EsYStzXSk7YSs9c319ZWxzZSBmb3IobGV0IGk9MCxhPWUubGVuZ3RoO2k8YTsrK2kpdC5wdXNoKFtpLGkrMV0pO3JldHVybiB0fWdldCBnbHlwaENhY2hlVmFsdWVzKCl7cmV0dXJuIE9iamVjdC52YWx1ZXModGhpcy5fZ2x5cGhDYWNoZSl9ZW5jb2RlU3RyaW5nKGUpe2NvbnN0IHQ9W10saT1bXSxoYXNDdXJyZW50QnVmRXJyb3JzPSgpPT50Lmxlbmd0aCUyPT0xLGE9dGhpcy50b1VuaWNvZGUgaW5zdGFuY2VvZiBJZGVudGl0eVRvVW5pY29kZU1hcD9lPT50aGlzLnRvVW5pY29kZS5jaGFyQ29kZU9mKGUpOmU9PnRoaXMudG9Vbmljb2RlLmNoYXJDb2RlT2YoU3RyaW5nLmZyb21Db2RlUG9pbnQoZSkpO2ZvcihsZXQgcz0wLHI9ZS5sZW5ndGg7czxyO3MrKyl7Y29uc3Qgcj1lLmNvZGVQb2ludEF0KHMpO3I+NTUyOTUmJihyPDU3MzQ0fHxyPjY1NTMzKSYmcysrO2lmKHRoaXMudG9Vbmljb2RlKXtjb25zdCBlPWEocik7aWYoLTEhPT1lKXtpZihoYXNDdXJyZW50QnVmRXJyb3JzKCkpe3QucHVzaChpLmpvaW4oIiIpKTtpLmxlbmd0aD0wfWZvcihsZXQgdD0odGhpcy5jTWFwP3RoaXMuY01hcC5nZXRDaGFyQ29kZUxlbmd0aChlKToxKS0xO3Q+PTA7dC0tKWkucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGU+PjgqdCYyNTUpKTtjb250aW51ZX19aWYoIWhhc0N1cnJlbnRCdWZFcnJvcnMoKSl7dC5wdXNoKGkuam9pbigiIikpO2kubGVuZ3RoPTB9aS5wdXNoKFN0cmluZy5mcm9tQ29kZVBvaW50KHIpKX10LnB1c2goaS5qb2luKCIiKSk7cmV0dXJuIHR9fWNsYXNzIEVycm9yRm9udHtjb25zdHJ1Y3RvcihlKXt0aGlzLmVycm9yPWU7dGhpcy5sb2FkZWROYW1lPSJnX2ZvbnRfZXJyb3IiO3RoaXMubWlzc2luZ0ZpbGU9ITB9Y2hhcnNUb0dseXBocygpe3JldHVybltdfWVuY29kZVN0cmluZyhlKXtyZXR1cm5bZV19ZXhwb3J0RGF0YShlPSExKXtyZXR1cm57ZXJyb3I6dGhpcy5lcnJvcn19fWNvbnN0IEVhPTIsdWE9MyxkYT00LGZhPTUscGE9NixtYT03O2NsYXNzIFBhdHRlcm57Y29uc3RydWN0b3IoKXt1bnJlYWNoYWJsZSgiQ2Fubm90IGluaXRpYWxpemUgUGF0dGVybi4iKX1zdGF0aWMgcGFyc2VTaGFkaW5nKGUsdCxpLGEscyl7Y29uc3Qgcj1lIGluc3RhbmNlb2YgQmFzZVN0cmVhbT9lLmRpY3Q6ZSxuPXIuZ2V0KCJTaGFkaW5nVHlwZSIpO3RyeXtzd2l0Y2gobil7Y2FzZSBFYTpjYXNlIHVhOnJldHVybiBuZXcgUmFkaWFsQXhpYWxTaGFkaW5nKHIsdCxpLGEscyk7Y2FzZSBkYTpjYXNlIGZhOmNhc2UgcGE6Y2FzZSBtYTpyZXR1cm4gbmV3IE1lc2hTaGFkaW5nKGUsdCxpLGEscyk7ZGVmYXVsdDp0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlVuc3VwcG9ydGVkIFNoYWRpbmdUeXBlOiAiK24pfX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTt3YXJuKGUpO3JldHVybiBuZXcgRHVtbXlTaGFkaW5nfX19Y2xhc3MgQmFzZVNoYWRpbmd7c3RhdGljIFNNQUxMX05VTUJFUj0xZS02O2NvbnN0cnVjdG9yKCl7dGhpcy5jb25zdHJ1Y3Rvcj09PUJhc2VTaGFkaW5nJiZ1bnJlYWNoYWJsZSgiQ2Fubm90IGluaXRpYWxpemUgQmFzZVNoYWRpbmcuIil9Z2V0SVIoKXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgbWV0aG9kIGBnZXRJUmAgY2FsbGVkLiIpfX1jbGFzcyBSYWRpYWxBeGlhbFNoYWRpbmcgZXh0ZW5kcyBCYXNlU2hhZGluZ3tjb25zdHJ1Y3RvcihlLHQsaSxhLHMpe3N1cGVyKCk7dGhpcy5jb29yZHNBcnI9ZS5nZXRBcnJheSgiQ29vcmRzIik7dGhpcy5zaGFkaW5nVHlwZT1lLmdldCgiU2hhZGluZ1R5cGUiKTtjb25zdCByPUNvbG9yU3BhY2UucGFyc2Uoe2NzOmUuZ2V0UmF3KCJDUyIpfHxlLmdldFJhdygiQ29sb3JTcGFjZSIpLHhyZWY6dCxyZXNvdXJjZXM6aSxwZGZGdW5jdGlvbkZhY3Rvcnk6YSxsb2NhbENvbG9yU3BhY2VDYWNoZTpzfSksbj1lLmdldEFycmF5KCJCQm94Iik7dGhpcy5iYm94PUFycmF5LmlzQXJyYXkobikmJjQ9PT1uLmxlbmd0aD9VdGlsLm5vcm1hbGl6ZVJlY3Qobik6bnVsbDtsZXQgbz0wLGc9MTtpZihlLmhhcygiRG9tYWluIikpe2NvbnN0IHQ9ZS5nZXRBcnJheSgiRG9tYWluIik7bz10WzBdO2c9dFsxXX1sZXQgYz0hMSxDPSExO2lmKGUuaGFzKCJFeHRlbmQiKSl7Y29uc3QgdD1lLmdldEFycmF5KCJFeHRlbmQiKTtjPXRbMF07Qz10WzFdfWlmKCEodGhpcy5zaGFkaW5nVHlwZSE9PXVhfHxjJiZDKSl7Y29uc3RbZSx0LGksYSxzLHJdPXRoaXMuY29vcmRzQXJyLG49TWF0aC5oeXBvdChlLWEsdC1zKTtpPD1yK24mJnI8PWkrbiYmd2FybigiVW5zdXBwb3J0ZWQgcmFkaWFsIGdyYWRpZW50LiIpfXRoaXMuZXh0ZW5kU3RhcnQ9Yzt0aGlzLmV4dGVuZEVuZD1DO2NvbnN0IGg9ZS5nZXRSYXcoIkZ1bmN0aW9uIiksbD1hLmNyZWF0ZUZyb21BcnJheShoKSxRPShnLW8pLzg0MCxFPXRoaXMuY29sb3JTdG9wcz1bXTtpZihvPj1nfHxRPD0wKXtpbmZvKCJCYWQgc2hhZGluZyBkb21haW4uIik7cmV0dXJufWNvbnN0IHU9bmV3IEZsb2F0MzJBcnJheShyLm51bUNvbXBzKSxkPW5ldyBGbG9hdDMyQXJyYXkoMSk7bGV0IGYscD0wO2RbMF09bztsKGQsMCx1LDApO2xldCBtPXIuZ2V0UmdiKHUsMCk7Y29uc3QgeT1VdGlsLm1ha2VIZXhDb2xvcihtWzBdLG1bMV0sbVsyXSk7RS5wdXNoKFswLHldKTtsZXQgdz0xO2RbMF09bytRO2woZCwwLHUsMCk7bGV0IGI9ci5nZXRSZ2IodSwwKSxEPWJbMF0tbVswXSsxLEY9YlsxXS1tWzFdKzEsUz1iWzJdLW1bMl0rMSxrPWJbMF0tbVswXS0xLE49YlsxXS1tWzFdLTEsUj1iWzJdLW1bMl0tMTtmb3IobGV0IGU9MjtlPDg0MDtlKyspe2RbMF09bytlKlE7bChkLDAsdSwwKTtmPXIuZ2V0UmdiKHUsMCk7Y29uc3QgdD1lLXA7RD1NYXRoLm1pbihELChmWzBdLW1bMF0rMSkvdCk7Rj1NYXRoLm1pbihGLChmWzFdLW1bMV0rMSkvdCk7Uz1NYXRoLm1pbihTLChmWzJdLW1bMl0rMSkvdCk7az1NYXRoLm1heChrLChmWzBdLW1bMF0tMSkvdCk7Tj1NYXRoLm1heChOLChmWzFdLW1bMV0tMSkvdCk7Uj1NYXRoLm1heChSLChmWzJdLW1bMl0tMSkvdCk7aWYoIShrPD1EJiZOPD1GJiZSPD1TKSl7Y29uc3QgZT1VdGlsLm1ha2VIZXhDb2xvcihiWzBdLGJbMV0sYlsyXSk7RS5wdXNoKFt3Lzg0MCxlXSk7RD1mWzBdLWJbMF0rMTtGPWZbMV0tYlsxXSsxO1M9ZlsyXS1iWzJdKzE7az1mWzBdLWJbMF0tMTtOPWZbMV0tYlsxXS0xO1I9ZlsyXS1iWzJdLTE7cD13O209Yn13PWU7Yj1mfWNvbnN0IEc9VXRpbC5tYWtlSGV4Q29sb3IoYlswXSxiWzFdLGJbMl0pO0UucHVzaChbMSxHXSk7bGV0IHg9InRyYW5zcGFyZW50IjtpZihlLmhhcygiQmFja2dyb3VuZCIpKXtmPXIuZ2V0UmdiKGUuZ2V0KCJCYWNrZ3JvdW5kIiksMCk7eD1VdGlsLm1ha2VIZXhDb2xvcihmWzBdLGZbMV0sZlsyXSl9aWYoIWMpe0UudW5zaGlmdChbMCx4XSk7RVsxXVswXSs9QmFzZVNoYWRpbmcuU01BTExfTlVNQkVSfWlmKCFDKXtFLmF0KC0xKVswXS09QmFzZVNoYWRpbmcuU01BTExfTlVNQkVSO0UucHVzaChbMSx4XSl9dGhpcy5jb2xvclN0b3BzPUV9Z2V0SVIoKXtjb25zdCBlPXRoaXMuY29vcmRzQXJyLHQ9dGhpcy5zaGFkaW5nVHlwZTtsZXQgaSxhLHMscixuO2lmKHQ9PT1FYSl7YT1bZVswXSxlWzFdXTtzPVtlWzJdLGVbM11dO3I9bnVsbDtuPW51bGw7aT0iYXhpYWwifWVsc2UgaWYodD09PXVhKXthPVtlWzBdLGVbMV1dO3M9W2VbM10sZVs0XV07cj1lWzJdO249ZVs1XTtpPSJyYWRpYWwifWVsc2UgdW5yZWFjaGFibGUoYGdldFBhdHRlcm4gdHlwZSB1bmtub3duOiAke3R9YCk7cmV0dXJuWyJSYWRpYWxBeGlhbCIsaSx0aGlzLmJib3gsdGhpcy5jb2xvclN0b3BzLGEscyxyLG5dfX1jbGFzcyBNZXNoU3RyZWFtUmVhZGVye2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5zdHJlYW09ZTt0aGlzLmNvbnRleHQ9dDt0aGlzLmJ1ZmZlcj0wO3RoaXMuYnVmZmVyTGVuZ3RoPTA7Y29uc3QgaT10Lm51bUNvbXBzO3RoaXMudG1wQ29tcHNCdWY9bmV3IEZsb2F0MzJBcnJheShpKTtjb25zdCBhPXQuY29sb3JTcGFjZS5udW1Db21wczt0aGlzLnRtcENzQ29tcHNCdWY9dC5jb2xvckZuP25ldyBGbG9hdDMyQXJyYXkoYSk6dGhpcy50bXBDb21wc0J1Zn1nZXQgaGFzRGF0YSgpe2lmKHRoaXMuc3RyZWFtLmVuZClyZXR1cm4gdGhpcy5zdHJlYW0ucG9zPHRoaXMuc3RyZWFtLmVuZDtpZih0aGlzLmJ1ZmZlckxlbmd0aD4wKXJldHVybiEwO2NvbnN0IGU9dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpO2lmKGU8MClyZXR1cm4hMTt0aGlzLmJ1ZmZlcj1lO3RoaXMuYnVmZmVyTGVuZ3RoPTg7cmV0dXJuITB9cmVhZEJpdHMoZSl7bGV0IHQ9dGhpcy5idWZmZXIsaT10aGlzLmJ1ZmZlckxlbmd0aDtpZigzMj09PWUpe2lmKDA9PT1pKXJldHVybih0aGlzLnN0cmVhbS5nZXRCeXRlKCk8PDI0fHRoaXMuc3RyZWFtLmdldEJ5dGUoKTw8MTZ8dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpPDw4fHRoaXMuc3RyZWFtLmdldEJ5dGUoKSk+Pj4wO3Q9dDw8MjR8dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpPDwxNnx0aGlzLnN0cmVhbS5nZXRCeXRlKCk8PDh8dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpO2NvbnN0IGU9dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpO3RoaXMuYnVmZmVyPWUmKDE8PGkpLTE7cmV0dXJuKHQ8PDgtaXwoMjU1JmUpPj5pKT4+PjB9aWYoOD09PWUmJjA9PT1pKXJldHVybiB0aGlzLnN0cmVhbS5nZXRCeXRlKCk7Zm9yKDtpPGU7KXt0PXQ8PDh8dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpO2krPTh9aS09ZTt0aGlzLmJ1ZmZlckxlbmd0aD1pO3RoaXMuYnVmZmVyPXQmKDE8PGkpLTE7cmV0dXJuIHQ+Pml9YWxpZ24oKXt0aGlzLmJ1ZmZlcj0wO3RoaXMuYnVmZmVyTGVuZ3RoPTB9cmVhZEZsYWcoKXtyZXR1cm4gdGhpcy5yZWFkQml0cyh0aGlzLmNvbnRleHQuYml0c1BlckZsYWcpfXJlYWRDb29yZGluYXRlKCl7Y29uc3QgZT10aGlzLmNvbnRleHQuYml0c1BlckNvb3JkaW5hdGUsdD10aGlzLnJlYWRCaXRzKGUpLGk9dGhpcy5yZWFkQml0cyhlKSxhPXRoaXMuY29udGV4dC5kZWNvZGUscz1lPDMyPzEvKCgxPDxlKS0xKToyLjMyODMwNjQzNjUzODY5NjNlLTEwO3JldHVyblt0KnMqKGFbMV0tYVswXSkrYVswXSxpKnMqKGFbM10tYVsyXSkrYVsyXV19cmVhZENvbXBvbmVudHMoKXtjb25zdCBlPXRoaXMuY29udGV4dC5udW1Db21wcyx0PXRoaXMuY29udGV4dC5iaXRzUGVyQ29tcG9uZW50LGk9dDwzMj8xLygoMTw8dCktMSk6Mi4zMjgzMDY0MzY1Mzg2OTYzZS0xMCxhPXRoaXMuY29udGV4dC5kZWNvZGUscz10aGlzLnRtcENvbXBzQnVmO2ZvcihsZXQgcj0wLG49NDtyPGU7cisrLG4rPTIpe2NvbnN0IGU9dGhpcy5yZWFkQml0cyh0KTtzW3JdPWUqaSooYVtuKzFdLWFbbl0pK2Fbbl19Y29uc3Qgcj10aGlzLnRtcENzQ29tcHNCdWY7dGhpcy5jb250ZXh0LmNvbG9yRm4mJnRoaXMuY29udGV4dC5jb2xvckZuKHMsMCxyLDApO3JldHVybiB0aGlzLmNvbnRleHQuY29sb3JTcGFjZS5nZXRSZ2IociwwKX19bGV0IHlhPU9iamVjdC5jcmVhdGUobnVsbCk7ZnVuY3Rpb24gZ2V0QihlKXtyZXR1cm4geWFbZV18fD1mdW5jdGlvbiBidWlsZEIoZSl7Y29uc3QgdD1bXTtmb3IobGV0IGk9MDtpPD1lO2krKyl7Y29uc3QgYT1pL2Uscz0xLWE7dC5wdXNoKG5ldyBGbG9hdDMyQXJyYXkoW3MqKjMsMyphKnMqKjIsMyphKioyKnMsYSoqM10pKX1yZXR1cm4gdH0oZSl9Y2xhc3MgTWVzaFNoYWRpbmcgZXh0ZW5kcyBCYXNlU2hhZGluZ3tzdGF0aWMgTUlOX1NQTElUX1BBVENIX0NIVU5LU19BTU9VTlQ9MztzdGF0aWMgTUFYX1NQTElUX1BBVENIX0NIVU5LU19BTU9VTlQ9MjA7c3RhdGljIFRSSUFOR0xFX0RFTlNJVFk9MjA7Y29uc3RydWN0b3IoZSx0LGksYSxzKXtzdXBlcigpO2lmKCEoZSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pKXRocm93IG5ldyBGb3JtYXRFcnJvcigiTWVzaCBkYXRhIGlzIG5vdCBhIHN0cmVhbSIpO2NvbnN0IHI9ZS5kaWN0O3RoaXMuc2hhZGluZ1R5cGU9ci5nZXQoIlNoYWRpbmdUeXBlIik7Y29uc3Qgbj1yLmdldEFycmF5KCJCQm94Iik7dGhpcy5iYm94PUFycmF5LmlzQXJyYXkobikmJjQ9PT1uLmxlbmd0aD9VdGlsLm5vcm1hbGl6ZVJlY3Qobik6bnVsbDtjb25zdCBvPUNvbG9yU3BhY2UucGFyc2Uoe2NzOnIuZ2V0UmF3KCJDUyIpfHxyLmdldFJhdygiQ29sb3JTcGFjZSIpLHhyZWY6dCxyZXNvdXJjZXM6aSxwZGZGdW5jdGlvbkZhY3Rvcnk6YSxsb2NhbENvbG9yU3BhY2VDYWNoZTpzfSk7dGhpcy5iYWNrZ3JvdW5kPXIuaGFzKCJCYWNrZ3JvdW5kIik/by5nZXRSZ2Ioci5nZXQoIkJhY2tncm91bmQiKSwwKTpudWxsO2NvbnN0IGc9ci5nZXRSYXcoIkZ1bmN0aW9uIiksYz1nP2EuY3JlYXRlRnJvbUFycmF5KGcpOm51bGw7dGhpcy5jb29yZHM9W107dGhpcy5jb2xvcnM9W107dGhpcy5maWd1cmVzPVtdO2NvbnN0IEM9e2JpdHNQZXJDb29yZGluYXRlOnIuZ2V0KCJCaXRzUGVyQ29vcmRpbmF0ZSIpLGJpdHNQZXJDb21wb25lbnQ6ci5nZXQoIkJpdHNQZXJDb21wb25lbnQiKSxiaXRzUGVyRmxhZzpyLmdldCgiQml0c1BlckZsYWciKSxkZWNvZGU6ci5nZXRBcnJheSgiRGVjb2RlIiksY29sb3JGbjpjLGNvbG9yU3BhY2U6byxudW1Db21wczpjPzE6by5udW1Db21wc30saD1uZXcgTWVzaFN0cmVhbVJlYWRlcihlLEMpO2xldCBsPSExO3N3aXRjaCh0aGlzLnNoYWRpbmdUeXBlKXtjYXNlIGRhOnRoaXMuX2RlY29kZVR5cGU0U2hhZGluZyhoKTticmVhaztjYXNlIGZhOmNvbnN0IGU9MHxyLmdldCgiVmVydGljZXNQZXJSb3ciKTtpZihlPDIpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIFZlcnRpY2VzUGVyUm93Iik7dGhpcy5fZGVjb2RlVHlwZTVTaGFkaW5nKGgsZSk7YnJlYWs7Y2FzZSBwYTp0aGlzLl9kZWNvZGVUeXBlNlNoYWRpbmcoaCk7bD0hMDticmVhaztjYXNlIG1hOnRoaXMuX2RlY29kZVR5cGU3U2hhZGluZyhoKTtsPSEwO2JyZWFrO2RlZmF1bHQ6dW5yZWFjaGFibGUoIlVuc3VwcG9ydGVkIG1lc2ggdHlwZS4iKX1pZihsKXt0aGlzLl91cGRhdGVCb3VuZHMoKTtmb3IobGV0IGU9MCx0PXRoaXMuZmlndXJlcy5sZW5ndGg7ZTx0O2UrKyl0aGlzLl9idWlsZEZpZ3VyZUZyb21QYXRjaChlKX10aGlzLl91cGRhdGVCb3VuZHMoKTt0aGlzLl9wYWNrRGF0YSgpfV9kZWNvZGVUeXBlNFNoYWRpbmcoZSl7Y29uc3QgdD10aGlzLmNvb3JkcyxpPXRoaXMuY29sb3JzLGE9W10scz1bXTtsZXQgcj0wO2Zvcig7ZS5oYXNEYXRhOyl7Y29uc3Qgbj1lLnJlYWRGbGFnKCksbz1lLnJlYWRDb29yZGluYXRlKCksZz1lLnJlYWRDb21wb25lbnRzKCk7aWYoMD09PXIpe2lmKCEoMDw9biYmbjw9MikpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJVbmtub3duIHR5cGU0IGZsYWciKTtzd2l0Y2gobil7Y2FzZSAwOnI9MzticmVhaztjYXNlIDE6cy5wdXNoKHMuYXQoLTIpLHMuYXQoLTEpKTtyPTE7YnJlYWs7Y2FzZSAyOnMucHVzaChzLmF0KC0zKSxzLmF0KC0xKSk7cj0xfWEucHVzaChuKX1zLnB1c2godC5sZW5ndGgpO3QucHVzaChvKTtpLnB1c2goZyk7ci0tO2UuYWxpZ24oKX10aGlzLmZpZ3VyZXMucHVzaCh7dHlwZToidHJpYW5nbGVzIixjb29yZHM6bmV3IEludDMyQXJyYXkocyksY29sb3JzOm5ldyBJbnQzMkFycmF5KHMpfSl9X2RlY29kZVR5cGU1U2hhZGluZyhlLHQpe2NvbnN0IGk9dGhpcy5jb29yZHMsYT10aGlzLmNvbG9ycyxzPVtdO2Zvcig7ZS5oYXNEYXRhOyl7Y29uc3QgdD1lLnJlYWRDb29yZGluYXRlKCkscj1lLnJlYWRDb21wb25lbnRzKCk7cy5wdXNoKGkubGVuZ3RoKTtpLnB1c2godCk7YS5wdXNoKHIpfXRoaXMuZmlndXJlcy5wdXNoKHt0eXBlOiJsYXR0aWNlIixjb29yZHM6bmV3IEludDMyQXJyYXkocyksY29sb3JzOm5ldyBJbnQzMkFycmF5KHMpLHZlcnRpY2VzUGVyUm93OnR9KX1fZGVjb2RlVHlwZTZTaGFkaW5nKGUpe2NvbnN0IHQ9dGhpcy5jb29yZHMsaT10aGlzLmNvbG9ycyxhPW5ldyBJbnQzMkFycmF5KDE2KSxzPW5ldyBJbnQzMkFycmF5KDQpO2Zvcig7ZS5oYXNEYXRhOyl7Y29uc3Qgcj1lLnJlYWRGbGFnKCk7aWYoISgwPD1yJiZyPD0zKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlVua25vd24gdHlwZTYgZmxhZyIpO2NvbnN0IG49dC5sZW5ndGg7Zm9yKGxldCBpPTAsYT0wIT09cj84OjEyO2k8YTtpKyspdC5wdXNoKGUucmVhZENvb3JkaW5hdGUoKSk7Y29uc3Qgbz1pLmxlbmd0aDtmb3IobGV0IHQ9MCxhPTAhPT1yPzI6NDt0PGE7dCsrKWkucHVzaChlLnJlYWRDb21wb25lbnRzKCkpO2xldCBnLGMsQyxoO3N3aXRjaChyKXtjYXNlIDA6YVsxMl09biszO2FbMTNdPW4rNDthWzE0XT1uKzU7YVsxNV09bis2O2FbOF09bisyO2FbMTFdPW4rNzthWzRdPW4rMTthWzddPW4rODthWzBdPW47YVsxXT1uKzExO2FbMl09bisxMDthWzNdPW4rOTtzWzJdPW8rMTtzWzNdPW8rMjtzWzBdPW87c1sxXT1vKzM7YnJlYWs7Y2FzZSAxOmc9YVsxMl07Yz1hWzEzXTtDPWFbMTRdO2g9YVsxNV07YVsxMl09aDthWzEzXT1uKzA7YVsxNF09bisxO2FbMTVdPW4rMjthWzhdPUM7YVsxMV09biszO2FbNF09YzthWzddPW4rNDthWzBdPWc7YVsxXT1uKzc7YVsyXT1uKzY7YVszXT1uKzU7Zz1zWzJdO2M9c1szXTtzWzJdPWM7c1szXT1vO3NbMF09ZztzWzFdPW8rMTticmVhaztjYXNlIDI6Zz1hWzE1XTtjPWFbMTFdO2FbMTJdPWFbM107YVsxM109biswO2FbMTRdPW4rMTthWzE1XT1uKzI7YVs4XT1hWzddO2FbMTFdPW4rMzthWzRdPWM7YVs3XT1uKzQ7YVswXT1nO2FbMV09bis3O2FbMl09bis2O2FbM109bis1O2c9c1szXTtzWzJdPXNbMV07c1szXT1vO3NbMF09ZztzWzFdPW8rMTticmVhaztjYXNlIDM6YVsxMl09YVswXTthWzEzXT1uKzA7YVsxNF09bisxO2FbMTVdPW4rMjthWzhdPWFbMV07YVsxMV09biszO2FbNF09YVsyXTthWzddPW4rNDthWzBdPWFbM107YVsxXT1uKzc7YVsyXT1uKzY7YVszXT1uKzU7c1syXT1zWzBdO3NbM109bztzWzBdPXNbMV07c1sxXT1vKzF9YVs1XT10Lmxlbmd0aDt0LnB1c2goWygtNCp0W2FbMF1dWzBdLXRbYVsxNV1dWzBdKzYqKHRbYVs0XV1bMF0rdFthWzFdXVswXSktMioodFthWzEyXV1bMF0rdFthWzNdXVswXSkrMyoodFthWzEzXV1bMF0rdFthWzddXVswXSkpLzksKC00KnRbYVswXV1bMV0tdFthWzE1XV1bMV0rNioodFthWzRdXVsxXSt0W2FbMV1dWzFdKS0yKih0W2FbMTJdXVsxXSt0W2FbM11dWzFdKSszKih0W2FbMTNdXVsxXSt0W2FbN11dWzFdKSkvOV0pO2FbNl09dC5sZW5ndGg7dC5wdXNoKFsoLTQqdFthWzNdXVswXS10W2FbMTJdXVswXSs2Kih0W2FbMl1dWzBdK3RbYVs3XV1bMF0pLTIqKHRbYVswXV1bMF0rdFthWzE1XV1bMF0pKzMqKHRbYVs0XV1bMF0rdFthWzE0XV1bMF0pKS85LCgtNCp0W2FbM11dWzFdLXRbYVsxMl1dWzFdKzYqKHRbYVsyXV1bMV0rdFthWzddXVsxXSktMioodFthWzBdXVsxXSt0W2FbMTVdXVsxXSkrMyoodFthWzRdXVsxXSt0W2FbMTRdXVsxXSkpLzldKTthWzldPXQubGVuZ3RoO3QucHVzaChbKC00KnRbYVsxMl1dWzBdLXRbYVszXV1bMF0rNioodFthWzhdXVswXSt0W2FbMTNdXVswXSktMioodFthWzBdXVswXSt0W2FbMTVdXVswXSkrMyoodFthWzExXV1bMF0rdFthWzFdXVswXSkpLzksKC00KnRbYVsxMl1dWzFdLXRbYVszXV1bMV0rNioodFthWzhdXVsxXSt0W2FbMTNdXVsxXSktMioodFthWzBdXVsxXSt0W2FbMTVdXVsxXSkrMyoodFthWzExXV1bMV0rdFthWzFdXVsxXSkpLzldKTthWzEwXT10Lmxlbmd0aDt0LnB1c2goWygtNCp0W2FbMTVdXVswXS10W2FbMF1dWzBdKzYqKHRbYVsxMV1dWzBdK3RbYVsxNF1dWzBdKS0yKih0W2FbMTJdXVswXSt0W2FbM11dWzBdKSszKih0W2FbMl1dWzBdK3RbYVs4XV1bMF0pKS85LCgtNCp0W2FbMTVdXVsxXS10W2FbMF1dWzFdKzYqKHRbYVsxMV1dWzFdK3RbYVsxNF1dWzFdKS0yKih0W2FbMTJdXVsxXSt0W2FbM11dWzFdKSszKih0W2FbMl1dWzFdK3RbYVs4XV1bMV0pKS85XSk7dGhpcy5maWd1cmVzLnB1c2goe3R5cGU6InBhdGNoIixjb29yZHM6bmV3IEludDMyQXJyYXkoYSksY29sb3JzOm5ldyBJbnQzMkFycmF5KHMpfSl9fV9kZWNvZGVUeXBlN1NoYWRpbmcoZSl7Y29uc3QgdD10aGlzLmNvb3JkcyxpPXRoaXMuY29sb3JzLGE9bmV3IEludDMyQXJyYXkoMTYpLHM9bmV3IEludDMyQXJyYXkoNCk7Zm9yKDtlLmhhc0RhdGE7KXtjb25zdCByPWUucmVhZEZsYWcoKTtpZighKDA8PXImJnI8PTMpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiVW5rbm93biB0eXBlNyBmbGFnIik7Y29uc3Qgbj10Lmxlbmd0aDtmb3IobGV0IGk9MCxhPTAhPT1yPzEyOjE2O2k8YTtpKyspdC5wdXNoKGUucmVhZENvb3JkaW5hdGUoKSk7Y29uc3Qgbz1pLmxlbmd0aDtmb3IobGV0IHQ9MCxhPTAhPT1yPzI6NDt0PGE7dCsrKWkucHVzaChlLnJlYWRDb21wb25lbnRzKCkpO2xldCBnLGMsQyxoO3N3aXRjaChyKXtjYXNlIDA6YVsxMl09biszO2FbMTNdPW4rNDthWzE0XT1uKzU7YVsxNV09bis2O2FbOF09bisyO2FbOV09bisxMzthWzEwXT1uKzE0O2FbMTFdPW4rNzthWzRdPW4rMTthWzVdPW4rMTI7YVs2XT1uKzE1O2FbN109bis4O2FbMF09bjthWzFdPW4rMTE7YVsyXT1uKzEwO2FbM109bis5O3NbMl09bysxO3NbM109bysyO3NbMF09bztzWzFdPW8rMzticmVhaztjYXNlIDE6Zz1hWzEyXTtjPWFbMTNdO0M9YVsxNF07aD1hWzE1XTthWzEyXT1oO2FbMTNdPW4rMDthWzE0XT1uKzE7YVsxNV09bisyO2FbOF09QzthWzldPW4rOTthWzEwXT1uKzEwO2FbMTFdPW4rMzthWzRdPWM7YVs1XT1uKzg7YVs2XT1uKzExO2FbN109bis0O2FbMF09ZzthWzFdPW4rNzthWzJdPW4rNjthWzNdPW4rNTtnPXNbMl07Yz1zWzNdO3NbMl09YztzWzNdPW87c1swXT1nO3NbMV09bysxO2JyZWFrO2Nhc2UgMjpnPWFbMTVdO2M9YVsxMV07YVsxMl09YVszXTthWzEzXT1uKzA7YVsxNF09bisxO2FbMTVdPW4rMjthWzhdPWFbN107YVs5XT1uKzk7YVsxMF09bisxMDthWzExXT1uKzM7YVs0XT1jO2FbNV09bis4O2FbNl09bisxMTthWzddPW4rNDthWzBdPWc7YVsxXT1uKzc7YVsyXT1uKzY7YVszXT1uKzU7Zz1zWzNdO3NbMl09c1sxXTtzWzNdPW87c1swXT1nO3NbMV09bysxO2JyZWFrO2Nhc2UgMzphWzEyXT1hWzBdO2FbMTNdPW4rMDthWzE0XT1uKzE7YVsxNV09bisyO2FbOF09YVsxXTthWzldPW4rOTthWzEwXT1uKzEwO2FbMTFdPW4rMzthWzRdPWFbMl07YVs1XT1uKzg7YVs2XT1uKzExO2FbN109bis0O2FbMF09YVszXTthWzFdPW4rNzthWzJdPW4rNjthWzNdPW4rNTtzWzJdPXNbMF07c1szXT1vO3NbMF09c1sxXTtzWzFdPW8rMX10aGlzLmZpZ3VyZXMucHVzaCh7dHlwZToicGF0Y2giLGNvb3JkczpuZXcgSW50MzJBcnJheShhKSxjb2xvcnM6bmV3IEludDMyQXJyYXkocyl9KX19X2J1aWxkRmlndXJlRnJvbVBhdGNoKGUpe2NvbnN0IHQ9dGhpcy5maWd1cmVzW2VdO2Fzc2VydCgicGF0Y2giPT09dC50eXBlLCJVbmV4cGVjdGVkIHBhdGNoIG1lc2ggZmlndXJlIik7Y29uc3QgaT10aGlzLmNvb3JkcyxhPXRoaXMuY29sb3JzLHM9dC5jb29yZHMscj10LmNvbG9ycyxuPU1hdGgubWluKGlbc1swXV1bMF0saVtzWzNdXVswXSxpW3NbMTJdXVswXSxpW3NbMTVdXVswXSksbz1NYXRoLm1pbihpW3NbMF1dWzFdLGlbc1szXV1bMV0saVtzWzEyXV1bMV0saVtzWzE1XV1bMV0pLGc9TWF0aC5tYXgoaVtzWzBdXVswXSxpW3NbM11dWzBdLGlbc1sxMl1dWzBdLGlbc1sxNV1dWzBdKSxjPU1hdGgubWF4KGlbc1swXV1bMV0saVtzWzNdXVsxXSxpW3NbMTJdXVsxXSxpW3NbMTVdXVsxXSk7bGV0IEM9TWF0aC5jZWlsKChnLW4pKk1lc2hTaGFkaW5nLlRSSUFOR0xFX0RFTlNJVFkvKHRoaXMuYm91bmRzWzJdLXRoaXMuYm91bmRzWzBdKSk7Qz1NYXRoLm1heChNZXNoU2hhZGluZy5NSU5fU1BMSVRfUEFUQ0hfQ0hVTktTX0FNT1VOVCxNYXRoLm1pbihNZXNoU2hhZGluZy5NQVhfU1BMSVRfUEFUQ0hfQ0hVTktTX0FNT1VOVCxDKSk7bGV0IGg9TWF0aC5jZWlsKChjLW8pKk1lc2hTaGFkaW5nLlRSSUFOR0xFX0RFTlNJVFkvKHRoaXMuYm91bmRzWzNdLXRoaXMuYm91bmRzWzFdKSk7aD1NYXRoLm1heChNZXNoU2hhZGluZy5NSU5fU1BMSVRfUEFUQ0hfQ0hVTktTX0FNT1VOVCxNYXRoLm1pbihNZXNoU2hhZGluZy5NQVhfU1BMSVRfUEFUQ0hfQ0hVTktTX0FNT1VOVCxoKSk7Y29uc3QgbD1DKzEsUT1uZXcgSW50MzJBcnJheSgoaCsxKSpsKSxFPW5ldyBJbnQzMkFycmF5KChoKzEpKmwpO2xldCB1PTA7Y29uc3QgZD1uZXcgVWludDhBcnJheSgzKSxmPW5ldyBVaW50OEFycmF5KDMpLHA9YVtyWzBdXSxtPWFbclsxXV0seT1hW3JbMl1dLHc9YVtyWzNdXSxiPWdldEIoaCksRD1nZXRCKEMpO2ZvcihsZXQgZT0wO2U8PWg7ZSsrKXtkWzBdPShwWzBdKihoLWUpK3lbMF0qZSkvaHwwO2RbMV09KHBbMV0qKGgtZSkreVsxXSplKS9ofDA7ZFsyXT0ocFsyXSooaC1lKSt5WzJdKmUpL2h8MDtmWzBdPShtWzBdKihoLWUpK3dbMF0qZSkvaHwwO2ZbMV09KG1bMV0qKGgtZSkrd1sxXSplKS9ofDA7ZlsyXT0obVsyXSooaC1lKSt3WzJdKmUpL2h8MDtmb3IobGV0IHQ9MDt0PD1DO3QrKyx1Kyspe2lmKCEoMCE9PWUmJmUhPT1ofHwwIT09dCYmdCE9PUMpKWNvbnRpbnVlO2xldCByPTAsbj0wLG89MDtmb3IobGV0IGE9MDthPD0zO2ErKylmb3IobGV0IGc9MDtnPD0zO2crKyxvKyspe2NvbnN0IGM9YltlXVthXSpEW3RdW2ddO3IrPWlbc1tvXV1bMF0qYztuKz1pW3Nbb11dWzFdKmN9UVt1XT1pLmxlbmd0aDtpLnB1c2goW3Isbl0pO0VbdV09YS5sZW5ndGg7Y29uc3QgZz1uZXcgVWludDhBcnJheSgzKTtnWzBdPShkWzBdKihDLXQpK2ZbMF0qdCkvQ3wwO2dbMV09KGRbMV0qKEMtdCkrZlsxXSp0KS9DfDA7Z1syXT0oZFsyXSooQy10KStmWzJdKnQpL0N8MDthLnB1c2goZyl9fVFbMF09c1swXTtFWzBdPXJbMF07UVtDXT1zWzNdO0VbQ109clsxXTtRW2wqaF09c1sxMl07RVtsKmhdPXJbMl07UVtsKmgrQ109c1sxNV07RVtsKmgrQ109clszXTt0aGlzLmZpZ3VyZXNbZV09e3R5cGU6ImxhdHRpY2UiLGNvb3JkczpRLGNvbG9yczpFLHZlcnRpY2VzUGVyUm93Omx9fV91cGRhdGVCb3VuZHMoKXtsZXQgZT10aGlzLmNvb3Jkc1swXVswXSx0PXRoaXMuY29vcmRzWzBdWzFdLGk9ZSxhPXQ7Zm9yKGxldCBzPTEscj10aGlzLmNvb3Jkcy5sZW5ndGg7czxyO3MrKyl7Y29uc3Qgcj10aGlzLmNvb3Jkc1tzXVswXSxuPXRoaXMuY29vcmRzW3NdWzFdO2U9ZT5yP3I6ZTt0PXQ+bj9uOnQ7aT1pPHI/cjppO2E9YTxuP246YX10aGlzLmJvdW5kcz1bZSx0LGksYV19X3BhY2tEYXRhKCl7bGV0IGUsdCxpLGE7Y29uc3Qgcz10aGlzLmNvb3JkcyxyPW5ldyBGbG9hdDMyQXJyYXkoMipzLmxlbmd0aCk7Zm9yKGU9MCxpPTAsdD1zLmxlbmd0aDtlPHQ7ZSsrKXtjb25zdCB0PXNbZV07cltpKytdPXRbMF07cltpKytdPXRbMV19dGhpcy5jb29yZHM9cjtjb25zdCBuPXRoaXMuY29sb3JzLG89bmV3IFVpbnQ4QXJyYXkoMypuLmxlbmd0aCk7Zm9yKGU9MCxpPTAsdD1uLmxlbmd0aDtlPHQ7ZSsrKXtjb25zdCB0PW5bZV07b1tpKytdPXRbMF07b1tpKytdPXRbMV07b1tpKytdPXRbMl19dGhpcy5jb2xvcnM9bztjb25zdCBnPXRoaXMuZmlndXJlcztmb3IoZT0wLHQ9Zy5sZW5ndGg7ZTx0O2UrKyl7Y29uc3QgdD1nW2VdLHM9dC5jb29yZHMscj10LmNvbG9ycztmb3IoaT0wLGE9cy5sZW5ndGg7aTxhO2krKyl7c1tpXSo9MjtyW2ldKj0zfX19Z2V0SVIoKXtjb25zdHtib3VuZHM6ZX09dGhpcztpZihlWzJdLWVbMF09PTB8fGVbM10tZVsxXT09MCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEludmFsaWQgTWVzaFNoYWRpbmcgYm91bmRzOiBbJHtlfV0uYCk7cmV0dXJuWyJNZXNoIix0aGlzLnNoYWRpbmdUeXBlLHRoaXMuY29vcmRzLHRoaXMuY29sb3JzLHRoaXMuZmlndXJlcyxlLHRoaXMuYmJveCx0aGlzLmJhY2tncm91bmRdfX1jbGFzcyBEdW1teVNoYWRpbmcgZXh0ZW5kcyBCYXNlU2hhZGluZ3tnZXRJUigpe3JldHVyblsiRHVtbXkiXX19ZnVuY3Rpb24gZ2V0VGlsaW5nUGF0dGVybklSKGUsdCxpKXtjb25zdCBhPXQuZ2V0QXJyYXkoIk1hdHJpeCIpLHM9VXRpbC5ub3JtYWxpemVSZWN0KHQuZ2V0QXJyYXkoIkJCb3giKSkscj10LmdldCgiWFN0ZXAiKSxuPXQuZ2V0KCJZU3RlcCIpLG89dC5nZXQoIlBhaW50VHlwZSIpLGc9dC5nZXQoIlRpbGluZ1R5cGUiKTtpZihzWzJdLXNbMF09PTB8fHNbM10tc1sxXT09MCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEludmFsaWQgZ2V0VGlsaW5nUGF0dGVybklSIC9CQm94IGFycmF5OiBbJHtzfV0uYCk7cmV0dXJuWyJUaWxpbmdQYXR0ZXJuIixpLGUsYSxzLHIsbixvLGddfWNvbnN0IHdhPVsxLjM4NzcsMSwxLDEsLjk3ODAxLC45MjQ4MiwuODk1NTIsLjkxMTMzLC44MTk4OCwuOTc1NjYsLjk4MTUyLC45MzU0OCwuOTM1NDgsMS4yNzk4LC44NTI4NCwuOTI3OTQsMSwuOTYxMzQsMS41NDY1NywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjgyODQ1LC44Mjg0NSwuODUyODQsLjg1Mjg0LC44NTI4NCwuNzU4NTksLjkyMTM4LC44MzkwOCwuNzc2MiwuNzMyOTMsLjg3Mjg5LC43MzEzMywuNzUxNCwuODE5MjEsLjg3MzU2LC45NTk1OCwuNTk1MjYsLjc1NzI3LC42OTIyNSwxLjA0OTI0LC45MTIxLC44Njk0MywuNzk3OTUsLjg4MTk4LC43Nzk1OCwuNzA4NjQsLjgxMDU1LC45MDM5OSwuODg2NTMsLjk2MDE3LC44MjU3NywuNzc4OTIsLjc4MjU3LC45NzUwNywxLjU0NjU3LC45NzUwNywuODUyODQsLjg5NTUyLC45MDE3NiwuODg3NjIsLjg3ODUsLjc1MjQxLC44Nzg1LC45MDUxOCwuOTUwMTUsLjc3NjE4LC44Nzg1LC44ODQwMSwuOTE5MTYsLjg2MzA0LC44ODQwMSwuOTE0ODgsLjg3ODUsLjg4MDEsLjg3ODUsLjg3ODUsLjkxMzQzLC43MTczLDEuMDQxMDYsLjg3ODUsLjg1MDc1LC45NTc5NCwuODI2MTYsLjg1MTYyLC43OTQ5MiwuODgzMzEsMS42OTgwOCwuODgzMzEsLjg1Mjg0LC45NzgwMSwuODk1NTIsLjkxMTMzLC44OTU1MiwuOTExMzMsMS43ODAxLC44OTU1MiwxLjI0NDg3LDEuMTMyNTQsMS4xMjQwMSwuOTY4MzksLjg1Mjg0LC42ODc4NywuNzA2NDUsLjg1NTkyLC45MDc0NywxLjAxNDY2LDEuMDA4OCwuOTAzMjMsMSwxLjA3NDYzLDEsLjkxMDU2LC43NTgwNiwxLjE5MTE4LC45NjgzOSwuNzg4NjQsLjgyODQ1LC44NDEzMywuNzU4NTksLjgzOTA4LC44MzkwOCwuODM5MDgsLjgzOTA4LC44MzkwOCwuODM5MDgsLjc3NTM5LC43MzI5MywuNzMxMzMsLjczMTMzLC43MzEzMywuNzMxMzMsLjk1OTU4LC45NTk1OCwuOTU5NTgsLjk1OTU4LC44ODUwNiwuOTEyMSwuODY5NDMsLjg2OTQzLC44Njk0MywuODY5NDMsLjg2OTQzLC44NTI4NCwuODc1MDgsLjkwMzk5LC45MDM5OSwuOTAzOTksLjkwMzk5LC43Nzg5MiwuNzk3OTUsLjkwODA3LC44ODc2MiwuODg3NjIsLjg4NzYyLC44ODc2MiwuODg3NjIsLjg4NzYyLC44NzE1LC43NTI0MSwuOTA1MTgsLjkwNTE4LC45MDUxOCwuOTA1MTgsLjg4NDAxLC44ODQwMSwuODg0MDEsLjg4NDAxLC44Nzg1LC44Nzg1LC44ODAxLC44ODAxLC44ODAxLC44ODAxLC44ODAxLC45MDc0NywuODkwNDksLjg3ODUsLjg3ODUsLjg3ODUsLjg3ODUsLjg1MTYyLC44Nzg1LC44NTE2MiwuODM5MDgsLjg4NzYyLC44MzkwOCwuODg3NjIsLjgzOTA4LC44ODc2MiwuNzMyOTMsLjc1MjQxLC43MzI5MywuNzUyNDEsLjczMjkzLC43NTI0MSwuNzMyOTMsLjc1MjQxLC44NzI4OSwuODMwMTYsLjg4NTA2LC45MzEyNSwuNzMxMzMsLjkwNTE4LC43MzEzMywuOTA1MTgsLjczMTMzLC45MDUxOCwuNzMxMzMsLjkwNTE4LC43MzEzMywuOTA1MTgsLjgxOTIxLC43NzYxOCwuODE5MjEsLjc3NjE4LC44MTkyMSwuNzc2MTgsMSwxLC44NzM1NiwuODc4NSwuOTEwNzUsLjg5NjA4LC45NTk1OCwuODg0MDEsLjk1OTU4LC44ODQwMSwuOTU5NTgsLjg4NDAxLC45NTk1OCwuODg0MDEsLjk1OTU4LC44ODQwMSwuNzYyMjksLjkwMTY3LC41OTUyNiwuOTE5MTYsMSwxLC44NjMwNCwuNjkyMjUsLjg4NDAxLDEsMSwuNzA0MjQsLjc5NDY4LC45MTkyNiwuODgxNzUsLjcwODIzLC45NDkwMywuOTEyMSwuODc4NSwxLDEsLjkxMjEsLjg3ODUsLjg3ODAyLC44ODY1NiwuODc4NSwuODY5NDMsLjg4MDEsLjg2OTQzLC44ODAxLC44Njk0MywuODgwMSwuODc0MDIsLjg5MjkxLC43Nzk1OCwuOTEzNDMsMSwxLC43Nzk1OCwuOTEzNDMsLjcwODY0LC43MTczLC43MDg2NCwuNzE3MywuNzA4NjQsLjcxNzMsLjcwODY0LC43MTczLDEsMSwuODEwNTUsLjc1ODQxLC44MTA1NSwxLjA2NDUyLC45MDM5OSwuODc4NSwuOTAzOTksLjg3ODUsLjkwMzk5LC44Nzg1LC45MDM5OSwuODc4NSwuOTAzOTksLjg3ODUsLjkwMzk5LC44Nzg1LC45NjAxNywuOTU3OTQsLjc3ODkyLC44NTE2MiwuNzc4OTIsLjc4MjU3LC43OTQ5MiwuNzgyNTcsLjc5NDkyLC43ODI1NywuNzk0OTIsLjkyOTcsLjU2ODkyLC44MzkwOCwuODg3NjIsLjc3NTM5LC44NzE1LC44NzUwOCwuODkwNDksMSwxLC44MTA1NSwxLjA0MTA2LDEuMjA1MjgsMS4yMDUyOCwxLDEuMTU1NDMsLjcwNjc0LC45ODM4NywuOTQ3MjEsMS4zMzQzMSwxLjQ1ODk0LC45NTE2MSwxLjA2MzAzLC44MzkwOCwuODAzNTIsLjU3MTg0LC42OTY1LC41NjI4OSwuODIwMDEsLjU2MDI5LC44MTIzNSwxLjAyOTg4LC44MzkwOCwuNzc2MiwuNjgxNTYsLjgwMzY3LC43MzEzMywuNzgyNTcsLjg3MzU2LC44Njk0MywuOTU5NTgsLjc1NzI3LC44OTAxOSwxLjA0OTI0LC45MTIxLC43NjQ4LC44Njk0MywuODczNTYsLjc5Nzk1LC43ODI3NSwuODEwNTUsLjc3ODkyLC45NzYyLC44MjU3NywuOTk4MTksLjg0ODk2LC45NTk1OCwuNzc4OTIsLjk2MTA4LDEuMDE0MDcsLjg5MDQ5LDEuMDI5ODgsLjk0MjExLC45NjEwOCwuODkzNiwuODQwMjEsLjg3ODQyLC45NjM5OSwuNzkxMDksLjg5MDQ5LDEuMDA4MTMsMS4wMjk4OCwuODYwNzcsLjg3NDQ1LC45MjA5OSwuODQ3MjMsLjg2NTEzLC44ODAxLC43NTYzOCwuODU3MTQsLjc4MjE2LC43OTU4NiwuODc5NjUsLjk0MjExLC45Nzc0NywuNzgyODcsLjk3OTI2LC44NDk3MSwxLjAyOTg4LC45NDIxMSwuODgwMSwuOTQyMTEsLjg0OTcxLC43MzEzMywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTAyNjQsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjkwNTE4LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45MDU0OCwxLDEsMSwxLDEsMSwuOTYwMTcsLjk1Nzk0LC45NjAxNywuOTU3OTQsLjk2MDE3LC45NTc5NCwuNzc4OTIsLjg1MTYyLDEsMSwuODk1NTIsLjkwNTI3LDEsLjkwMzYzLC45Mjc5NCwuOTI3OTQsLjkyNzk0LC45Mjc5NCwuODcwMTIsLjg3MDEyLC44NzAxMiwuODk1NTIsLjg5NTUyLDEuNDIyNTksLjcxMTQzLDEuMDYxNTIsMSwxLDEuMDMzNzIsMS4wMzM3MiwuOTcxNzEsMS40OTU2LDIuMjgwNywuOTM4MzUsLjgzNDA2LC45MTEzMywuODQxMDcsLjkxMTMzLDEsMSwxLC43MjAyMSwxLDEuMjMxMDgsLjgzNDg5LC44ODUyNSwuODg1MjUsLjgxNDk5LC45MDUyNywxLjgxMDU1LC45MDUyNywxLjgxMDU1LDEuMzEwMDYsMS41MzcxMSwuOTQ0MzQsMS4wODY5NiwxLC45NTAxOCwuNzcxOTIsLjg1Mjg0LC45MDc0NywxLjE3NTM0LC42OTgyNSwuOTcxNiwxLjM3MDc3LC45MDc0NywuOTA3NDcsLjg1MzU2LC45MDc0NywuOTA3NDcsMS40NDk0NywuODUyODQsLjg5NDEsLjg5NDEsLjcwNTcyLC44LC43MDU3MiwuNzA1NzIsLjcwNTcyLC43MDU3MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjk5ODYyLC45OTg2MiwxLDEsMSwxLDEsMS4wODAwNCwuOTEwMjcsMSwxLDEsLjk5ODYyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45MDcyNywuOTA3MjcsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLGJhPXtsaW5lSGVpZ2h0OjEuMjIwNyxsaW5lR2FwOi4yMjA3fSxEYT1bMS4zODc3LDEsMSwxLC45NzgwMSwuOTI0ODIsLjg5NTUyLC45MTEzMywuODE5ODgsLjk3NTY2LC45ODE1MiwuOTM1NDgsLjkzNTQ4LDEuMjc5OCwuODUyODQsLjkyNzk0LDEsLjk2MTM0LDEuNTYyMzksLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC44Mjg0NSwuODI4NDUsLjg1Mjg0LC44NTI4NCwuODUyODQsLjc1ODU5LC45MjEzOCwuODM5MDgsLjc3NjIsLjcxODA1LC44NzI4OSwuNzMxMzMsLjc1MTQsLjgxOTIxLC44NzM1NiwuOTU5NTgsLjU5NTI2LC43NTcyNywuNjkyMjUsMS4wNDkyNCwuOTA4NzIsLjg1OTM4LC43OTc5NSwuODcwNjgsLjc3OTU4LC42OTc2NiwuODEwNTUsLjkwMzk5LC44ODY1MywuOTYwNjgsLjgyNTc3LC43Nzg5MiwuNzgyNTcsLjk3NTA3LDEuNTI5LC45NzUwNywuODUyODQsLjg5NTUyLC45MDE3NiwuOTQ5MDgsLjg2NDExLC43NDAxMiwuODY0MTEsLjg4MzIzLC45NTAxNSwuODY0MTEsLjg2MzMxLC44ODQwMSwuOTE5MTYsLjg2MzA0LC44ODQwMSwuOTAzOSwuODYzMzEsLjg2MzMxLC44NjQxMSwuODY0MTEsLjkwNDY0LC43MDg1MiwxLjA0MTA2LC44NjMzMSwuODQzNzIsLjk1Nzk0LC44MjYxNiwuODQ1NDgsLjc5NDkyLC44ODMzMSwxLjY5ODA4LC44ODMzMSwuODUyODQsLjk3ODAxLC44OTU1MiwuOTExMzMsLjg5NTUyLC45MTEzMywxLjc4MDEsLjg5NTUyLDEuMjQ0ODcsMS4xMzI1NCwxLjE5MTI5LC45NjgzOSwuODUyODQsLjY4Nzg3LC43MDY0NSwuODU1OTIsLjkwNzQ3LDEuMDE0NjYsMS4wMDg4LC45MDMyMywxLDEuMDc0NjMsMSwuOTEwNTYsLjc1ODA2LDEuMTkxMTgsLjk2ODM5LC43ODg2NCwuODI4NDUsLjg0MTMzLC43NTg1OSwuODM5MDgsLjgzOTA4LC44MzkwOCwuODM5MDgsLjgzOTA4LC44MzkwOCwuNzc1MzksLjcxODA1LC43MzEzMywuNzMxMzMsLjczMTMzLC43MzEzMywuOTU5NTgsLjk1OTU4LC45NTk1OCwuOTU5NTgsLjg4NTA2LC45MDg3MiwuODU5MzgsLjg1OTM4LC44NTkzOCwuODU5MzgsLjg1OTM4LC44NTI4NCwuODcwNjgsLjkwMzk5LC45MDM5OSwuOTAzOTksLjkwMzk5LC43Nzg5MiwuNzk3OTUsLjkwODA3LC45NDkwOCwuOTQ5MDgsLjk0OTA4LC45NDkwOCwuOTQ5MDgsLjk0OTA4LC44NTg4NywuNzQwMTIsLjg4MzIzLC44ODMyMywuODgzMjMsLjg4MzIzLC44ODQwMSwuODg0MDEsLjg4NDAxLC44ODQwMSwuODc4NSwuODYzMzEsLjg2MzMxLC44NjMzMSwuODYzMzEsLjg2MzMxLC44NjMzMSwuOTA3NDcsLjg5MDQ5LC44NjMzMSwuODYzMzEsLjg2MzMxLC44NjMzMSwuODQ1NDgsLjg2NDExLC44NDU0OCwuODM5MDgsLjk0OTA4LC44MzkwOCwuOTQ5MDgsLjgzOTA4LC45NDkwOCwuNzE4MDUsLjc0MDEyLC43MTgwNSwuNzQwMTIsLjcxODA1LC43NDAxMiwuNzE4MDUsLjc0MDEyLC44NzI4OSwuNzk1MzgsLjg4NTA2LC45MjcyNiwuNzMxMzMsLjg4MzIzLC43MzEzMywuODgzMjMsLjczMTMzLC44ODMyMywuNzMxMzMsLjg4MzIzLC43MzEzMywuODgzMjMsLjgxOTIxLC44NjQxMSwuODE5MjEsLjg2NDExLC44MTkyMSwuODY0MTEsMSwxLC44NzM1NiwuODYzMzEsLjkxMDc1LC44Nzc3LC45NTk1OCwuODg0MDEsLjk1OTU4LC44ODQwMSwuOTU5NTgsLjg4NDAxLC45NTk1OCwuODg0MDEsLjk1OTU4LC44ODQwMSwuNzY0NjcsLjkwMTY3LC41OTUyNiwuOTE5MTYsMSwxLC44NjMwNCwuNjkyMjUsLjg4NDAxLDEsMSwuNzA0MjQsLjc3MzEyLC45MTkyNiwuODgxNzUsLjcwODIzLC45NDkwMywuOTA4NzIsLjg2MzMxLDEsMSwuOTA4NzIsLjg2MzMxLC44NjkwNiwuODgxMTYsLjg2MzMxLC44NTkzOCwuODYzMzEsLjg1OTM4LC44NjMzMSwuODU5MzgsLjg2MzMxLC44NzQwMiwuODY1NDksLjc3OTU4LC45MDQ2NCwxLDEsLjc3OTU4LC45MDQ2NCwuNjk3NjYsLjcwODUyLC42OTc2NiwuNzA4NTIsLjY5NzY2LC43MDg1MiwuNjk3NjYsLjcwODUyLDEsMSwuODEwNTUsLjc1ODQxLC44MTA1NSwxLjA2NDUyLC45MDM5OSwuODYzMzEsLjkwMzk5LC44NjMzMSwuOTAzOTksLjg2MzMxLC45MDM5OSwuODYzMzEsLjkwMzk5LC44NjMzMSwuOTAzOTksLjg2MzMxLC45NjA2OCwuOTU3OTQsLjc3ODkyLC44NDU0OCwuNzc4OTIsLjc4MjU3LC43OTQ5MiwuNzgyNTcsLjc5NDkyLC43ODI1NywuNzk0OTIsLjkyOTcsLjU2ODkyLC44MzkwOCwuOTQ5MDgsLjc3NTM5LC44NTg4NywuODcwNjgsLjg5MDQ5LDEsMSwuODEwNTUsMS4wNDEwNiwxLjIwNTI4LDEuMjA1MjgsMSwxLjE1NTQzLC43MDA4OCwuOTgzODcsLjk0NzIxLDEuMzM0MzEsMS40NTg5NCwuOTUxNjEsMS40ODM4NywuODM5MDgsLjgwMzUyLC41NzExOCwuNjk2NSwuNTYzNDcsLjc5MTc5LC41NTg1MywuODAzNDYsMS4wMjk4OCwuODM5MDgsLjc3NjIsLjY3MTc0LC44NjAzNiwuNzMxMzMsLjc4MjU3LC44NzM1NiwuODY0NDEsLjk1OTU4LC43NTcyNywuODkwMTksMS4wNDkyNCwuOTA4NzIsLjc0ODg5LC44NTkzOCwuODc4OTEsLjc5Nzk1LC43OTU3LC44MTA1NSwuNzc4OTIsLjk3NDQ3LC44MjU3NywuOTc0NjYsLjg3MTc5LC45NTk1OCwuNzc4OTIsLjk0MjUyLC45NTYxMiwuODc1MywxLjAyOTg4LC45MjczMywuOTQyNTIsLjg3NDExLC44NDAyMSwuODcyOCwuOTU2MTIsLjc0MDgxLC44NzUzLDEuMDIxODksMS4wMjk4OCwuODQ4MTQsLjg3NDQ1LC45MTgyMiwuODQ3MjMsLjg1NjY4LC44NjMzMSwuODEzNDQsLjg3NTgxLC43NjQyMiwuODIwNDYsLjk2MDU3LC45MjczMywuOTkzNzUsLjc4MDIyLC45NTQ1MiwuODYwMTUsMS4wMjk4OCwuOTI3MzMsLjg2MzMxLC45MjczMywuODYwMTUsLjczMTMzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45MDYzMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuODgzMjMsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjg1MTc0LDEsMSwxLDEsMSwxLC45NjA2OCwuOTU3OTQsLjk2MDY4LC45NTc5NCwuOTYwNjgsLjk1Nzk0LC43Nzg5MiwuODQ1NDgsMSwxLC44OTU1MiwuOTA1MjcsMSwuOTAzNjMsLjkyNzk0LC45Mjc5NCwuOTI3OTQsLjg5ODA3LC44NzAxMiwuODcwMTIsLjg3MDEyLC44OTU1MiwuODk1NTIsMS40MjI1OSwuNzEwOTQsMS4wNjE1MiwxLDEsMS4wMzM3MiwxLjAzMzcyLC45NzE3MSwxLjQ5NTYsMi4yODA3LC45Mjk3MiwuODM0MDYsLjkxMTMzLC44MzMyNiwuOTExMzMsMSwxLDEsLjcyMDIxLDEsMS4yMzEwOCwuODM0ODksLjg4NTI1LC44ODUyNSwuODE0OTksLjkwNjE2LDEuODEwNTUsLjkwNTI3LDEuODEwNTUsMS4zMTA3LDEuNTM3MTEsLjk0NDM0LDEuMDg2OTYsMSwuOTUwMTgsLjc3MTkyLC44NTI4NCwuOTA3NDcsMS4xNzUzNCwuNjk4MjUsLjk3MTYsMS4zNzA3NywuOTA3NDcsLjkwNzQ3LC44NTM1NiwuOTA3NDcsLjkwNzQ3LDEuNDQ5NDcsLjg1Mjg0LC44OTQxLC44OTQxLC43MDU3MiwuOCwuNzA1NzIsLjcwNTcyLC43MDU3MiwuNzA1NzIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45OTg2MiwuOTk4NjIsMSwxLDEsMSwxLDEuMDgwMDQsLjkxMDI3LDEsMSwxLC45OTg2MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTA3MjcsLjkwNzI3LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXSxGYT17bGluZUhlaWdodDoxLjIyMDcsbGluZUdhcDouMjIwN30sU2E9WzEuMzg3NywxLDEsMSwxLjE3MjIzLDEuMTI5MywuODk1NTIsLjkxMTMzLC44MDM5NSwxLjAyMjY5LDEuMTU2MDEsLjkxMDU2LC45MTA1NiwxLjI3OTgsLjg1Mjg0LC44OTgwNywxLC45MDg2MSwxLjM5NTQzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTYzMDksLjk2MzA5LC44NTI4NCwuODUyODQsLjg1Mjg0LC44MzMxOSwuODgwNzEsLjg2NzUsLjgxNTUyLC43MjM0NiwuODUxOTMsLjczMjA2LC43NTIyLC44MTEwNSwuODYyNzUsLjkwNjg1LC42Mzc3LC43Nzg5MiwuNzU1OTMsMS4wMjYzOCwuODkyNDksLjg0MTE4LC43NzQ1MiwuODUzNzQsLjc1MTg2LC42Nzc4OSwuNzk3NzYsLjg4ODQ0LC44NTA2NiwuOTQzMDksLjc3ODE4LC43MzA2LC43NjY1OSwxLjEwMzY5LDEuMzgzMTMsMS4xMDM2OSwxLjA2MTM5LC44OTU1MiwuODczOSwuOTI0NSwuOTI0NSwuODMyMDMsLjkyNDUsLjg1ODY1LDEuMDk4NDIsLjkyNDUsLjkyNDUsMS4wMzI5NywxLjA3NjkyLC45MDkxOCwxLjAzMjk3LC45NDk1OSwuOTI0NSwuOTIyNzQsLjkyNDUsLjkyNDUsMS4wMjkzMywuNzc4MzIsMS4yMDU2MiwuOTI0NSwuODkxNiwuOTg5ODYsLjg2NjIxLC44OTQ1MywuNzkwMDQsLjk0MTUyLDEuNzcyNTYsLjk0MTUyLC44NTI4NCwuOTc4MDEsLjg5NTUyLC45MTEzMywuODk1NTIsLjkxMTMzLDEuOTE3MjksLjg5NTUyLDEuMTc4ODksMS4xMzI1NCwxLjE2MzU5LC45MjA5OCwuODUyODQsLjY4Nzg3LC43MTM1MywuODQ3MzcsLjkwNzQ3LDEuMDA4OCwxLjAwNDQsLjg3NjgzLDEsMS4wOTA5MSwxLC45MjIyOSwuNzM5LDEuMTU2NDIsLjkyMDk4LC43NjI4OCwuODA1MDQsLjgwOTcyLC43NTg1OSwuODY3NSwuODY3NSwuODY3NSwuODY3NSwuODY3NSwuODY3NSwuNzYzMTgsLjcyMzQ2LC43MzIwNiwuNzMyMDYsLjczMjA2LC43MzIwNiwuOTA2ODUsLjkwNjg1LC45MDY4NSwuOTA2ODUsLjg2NDc3LC44OTI0OSwuODQxMTgsLjg0MTE4LC44NDExOCwuODQxMTgsLjg0MTE4LC44NTI4NCwuODQ1NTcsLjg4ODQ0LC44ODg0NCwuODg4NDQsLjg4ODQ0LC43MzA2LC43NzQ1MiwuODYzMzEsLjkyNDUsLjkyNDUsLjkyNDUsLjkyNDUsLjkyNDUsLjkyNDUsLjg0ODQzLC44MzIwMywuODU4NjUsLjg1ODY1LC44NTg2NSwuODU4NjUsLjgyNjAxLC44MjYwMSwuODI2MDEsLjgyNjAxLC45NDQ2OSwuOTI0NSwuOTIyNzQsLjkyMjc0LC45MjI3NCwuOTIyNzQsLjkyMjc0LC45MDc0NywuODY2NTEsLjkyNDUsLjkyNDUsLjkyNDUsLjkyNDUsLjg5NDUzLC45MjQ1LC44OTQ1MywuODY3NSwuOTI0NSwuODY3NSwuOTI0NSwuODY3NSwuOTI0NSwuNzIzNDYsLjgzMjAzLC43MjM0NiwuODMyMDMsLjcyMzQ2LC44MzIwMywuNzIzNDYsLjgzMjAzLC44NTE5MywuODg3NSwuODY0NzcsLjk5MDM0LC43MzIwNiwuODU4NjUsLjczMjA2LC44NTg2NSwuNzMyMDYsLjg1ODY1LC43MzIwNiwuODU4NjUsLjczMjA2LC44NTg2NSwuODExMDUsLjkyNDUsLjgxMTA1LC45MjQ1LC44MTEwNSwuOTI0NSwxLDEsLjg2Mjc1LC45MjQ1LC45MDg3MiwuOTM1OTEsLjkwNjg1LC44MjYwMSwuOTA2ODUsLjgyNjAxLC45MDY4NSwuODI2MDEsLjkwNjg1LDEuMDMyOTcsLjkwNjg1LC44MjYwMSwuNzc4OTYsMS4wNTYxMSwuNjM3NywxLjA3NjkyLDEsMSwuOTA5MTgsLjc1NTkzLDEuMDMyOTcsMSwxLC43NjAzMiwuOTM3NSwuOTgxNTYsLjkzNDA3LC43NzI2MSwxLjExNDI5LC44OTI0OSwuOTI0NSwxLDEsLjg5MjQ5LC45MjQ1LC45MjUzNCwuODY2OTgsLjkyNDUsLjg0MTE4LC45MjI3NCwuODQxMTgsLjkyMjc0LC44NDExOCwuOTIyNzQsLjg2NjcsLjg2MjkxLC43NTE4NiwxLjAyOTMzLDEsMSwuNzUxODYsMS4wMjkzMywuNjc3ODksLjc3ODMyLC42Nzc4OSwuNzc4MzIsLjY3Nzg5LC43NzgzMiwuNjc3ODksLjc3ODMyLDEsMSwuNzk3NzYsLjk3NjU1LC43OTc3NiwxLjIzMDIzLC44ODg0NCwuOTI0NSwuODg4NDQsLjkyNDUsLjg4ODQ0LC45MjQ1LC44ODg0NCwuOTI0NSwuODg4NDQsLjkyNDUsLjg4ODQ0LC45MjQ1LC45NDMwOSwuOTg5ODYsLjczMDYsLjg5NDUzLC43MzA2LC43NjY1OSwuNzkwMDQsLjc2NjU5LC43OTAwNCwuNzY2NTksLjc5MDA0LDEuMDkyMzEsLjU0ODczLC44Njc1LC45MjQ1LC43NjMxOCwuODQ4NDMsLjg0NTU3LC44NjY1MSwxLDEsLjc5Nzc2LDEuMjA1NjIsMS4xODYyMiwxLjE4NjIyLDEsMS4xNDM3LC42NzAwOSwuOTYzMzQsLjkzNjk1LDEuMzUxOTEsMS40MDkwOSwuOTUxNjEsMS40ODM4NywuODY3NSwuOTA4NjEsLjYxOTIsLjczNjMsLjY0ODI0LC44MjQxMSwuNTYzMjEsLjg1Njk2LDEuMjM1MTYsLjg2NzUsLjgxNTUyLC43Mjg2LC44NDEzNCwuNzMyMDYsLjc2NjU5LC44NjI3NSwuODQzNjksLjkwNjg1LC43Nzg5MiwuODU4NzEsMS4wMjYzOCwuODkyNDksLjc1ODI4LC44NDExOCwuODU5ODQsLjc3NDUyLC43NjQ2NiwuNzk3NzYsLjczMDYsLjkwNzgyLC43NzgxOCwuOTAzLC44NzI5MSwuOTA2ODUsLjczMDYsLjk5MDU4LDEuMDM2NjcsLjk0NjM1LDEuMjM1MTYsLjk4NDksLjk5MDU4LC45MjM5MywuODkxNiwuOTQyLDEuMDM2NjcsLjc1MDI2LC45NDYzNSwxLjAyOTcsMS4yMzUxNiwuOTA5MTgsLjk0MDQ4LC45ODIxNywuODk3NDYsLjg0MTUzLC45MjI3NCwuODI1MDcsLjg4ODMyLC44NDQzOCwuODgxNzgsMS4wMzUyNSwuOTg0OSwxLjAwMjI1LC43ODA4NiwuOTcyNDgsLjg5NDA0LDEuMjM1MTYsLjk4NDksLjkyMjc0LC45ODQ5LC44OTQwNCwuNzMyMDYsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjg5NjkzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC44NTg2NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTA5MzMsMSwxLDEsMSwxLDEsLjk0MzA5LC45ODk4NiwuOTQzMDksLjk4OTg2LC45NDMwOSwuOTg5ODYsLjczMDYsLjg5NDUzLDEsMSwuODk1NTIsLjkwNTI3LDEsLjkwMTg2LDEuMTIzMDgsMS4xMjMwOCwxLjEyMzA4LDEuMTIzMDgsMS4yNTY2LDEuMjU2NiwxLjI1NjYsLjg5NTUyLC44OTU1MiwxLjQyMjU5LC42ODk5NCwxLjAzODA5LDEsMSwxLjAxNzYsMS4wMTc2LDEuMTE1MjMsMS40OTU2LDIuMDE0NjIsLjk3ODU4LC44MjYxNiwuOTExMzMsLjgzNDM3LC45MTEzMywxLDEsMSwuNzA1MDgsMSwxLjIzMTA4LC43OTgwMSwuODQ0MjYsLjg0NDI2LC43NzQsLjkwNTcyLDEuODEwNTUsLjkwNzQ5LDEuODEwNTUsMS4yODgwOSwxLjU1NDY5LC45NDQzNCwxLjA3ODA2LDEsLjk3MDk0LC43NTg5LC44NTI4NCwuOTA3NDcsMS4xOTY1OCwuNjk4MjUsLjk3NjIyLDEuMzM1MTIsLjkwNzQ3LC45MDc0NywuODUyODQsLjkwNzQ3LC45MDc0NywxLjQ0OTQ3LC44NTI4NCwuODk0MSwuODk0MSwuNzA1NzIsLjgsLjcwNTcyLC43MDU3MiwuNzA1NzIsLjcwNTcyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTk4NjIsLjk5ODYyLDEsMSwxLDEsMSwxLjAzMzYsLjkxMDI3LDEsMSwxLC45OTg2MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjA1ODU5LDEuMDU4NTksMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLGthPXtsaW5lSGVpZ2h0OjEuMjIwNyxsaW5lR2FwOi4yMjA3fSxOYT1bMS4zODc3LDEsMSwxLDEuMTcyMjMsMS4xMjkzLC44OTU1MiwuOTExMzMsLjgwMzk1LDEuMDIyNjksMS4xNTYwMSwuOTEwNTYsLjkxMDU2LDEuMjc5OCwuODUyODQsLjg5ODA3LDEsLjkwODYxLDEuMzkwMTYsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45NjMwOSwuOTYzMDksLjg1Mjg0LC44NTI4NCwuODUyODQsLjgzMzE5LC44ODA3MSwuODY3NSwuODE1NTIsLjczODM0LC44NTE5MywuNzMyMDYsLjc1MjIsLjgxMTA1LC44NjI3NSwuOTA2ODUsLjYzNzcsLjc3ODkyLC43NTU5MywxLjAyNjM4LC44OTM4NSwuODUxMjIsLjc3NDUyLC44NjUwMywuNzUxODYsLjY4ODg3LC43OTc3NiwuODg4NDQsLjg1MDY2LC45NDI1OCwuNzc4MTgsLjczMDYsLjc2NjU5LDEuMTAzNjksMS4zOTAxNiwxLjEwMzY5LDEuMDYxMzksLjg5NTUyLC44NzM5LC44NjEyOCwuOTQ0NjksLjg0NTcsLjk0NDY5LC44OTQ2NCwxLjA5ODQyLC44NDYzNiwuOTQ0NjksMS4wMzI5NywxLjA3NjkyLC45MDkxOCwxLjAzMjk3LC45NTg5NywuOTQ0NjksLjk0ODIsLjk0NDY5LC45NDQ2OSwxLjA0NjkyLC43ODIyMywxLjIwNTYyLC45NDQ2OSwuOTAzMzIsLjk4OTg2LC44NjYyMSwuOTA1MjcsLjc5MDA0LC45NDE1MiwxLjc3MjU2LC45NDE1MiwuODUyODQsLjk3ODAxLC44OTU1MiwuOTExMzMsLjg5NTUyLC45MTEzMywxLjkxNzI5LC44OTU1MiwxLjE3ODg5LDEuMTMyNTQsMS4wODcwNywuOTIwOTgsLjg1Mjg0LC42ODc4NywuNzEzNTMsLjg0NzM3LC45MDc0NywxLjAwODgsMS4wMDQ0LC44NzY4MywxLDEuMDkwOTEsMSwuOTIyMjksLjczOSwxLjE1NjQyLC45MjA5OCwuNzYyODgsLjgwNTA0LC44MDk3MiwuNzU4NTksLjg2NzUsLjg2NzUsLjg2NzUsLjg2NzUsLjg2NzUsLjg2NzUsLjc2MzE4LC43MzgzNCwuNzMyMDYsLjczMjA2LC43MzIwNiwuNzMyMDYsLjkwNjg1LC45MDY4NSwuOTA2ODUsLjkwNjg1LC44NjQ3NywuODkzODUsLjg1MTIyLC44NTEyMiwuODUxMjIsLjg1MTIyLC44NTEyMiwuODUyODQsLjg1MzExLC44ODg0NCwuODg4NDQsLjg4ODQ0LC44ODg0NCwuNzMwNiwuNzc0NTIsLjg2MzMxLC44NjEyOCwuODYxMjgsLjg2MTI4LC44NjEyOCwuODYxMjgsLjg2MTI4LC44NjkzLC44NDU3LC44OTQ2NCwuODk0NjQsLjg5NDY0LC44OTQ2NCwuODI2MDEsLjgyNjAxLC44MjYwMSwuODI2MDEsLjk0NDY5LC45NDQ2OSwuOTQ4MiwuOTQ4MiwuOTQ4MiwuOTQ4MiwuOTQ4MiwuOTA3NDcsLjg2NjUxLC45NDQ2OSwuOTQ0NjksLjk0NDY5LC45NDQ2OSwuOTA1MjcsLjk0NDY5LC45MDUyNywuODY3NSwuODYxMjgsLjg2NzUsLjg2MTI4LC44Njc1LC44NjEyOCwuNzM4MzQsLjg0NTcsLjczODM0LC44NDU3LC43MzgzNCwuODQ1NywuNzM4MzQsLjg0NTcsLjg1MTkzLC45MjQ1NCwuODY0NzcsLjk5MjEsLjczMjA2LC44OTQ2NCwuNzMyMDYsLjg5NDY0LC43MzIwNiwuODk0NjQsLjczMjA2LC44OTQ2NCwuNzMyMDYsLjg5NDY0LC44MTEwNSwuODQ2MzYsLjgxMTA1LC44NDYzNiwuODExMDUsLjg0NjM2LDEsMSwuODYyNzUsLjk0NDY5LC45MDg3MiwuOTU3ODYsLjkwNjg1LC44MjYwMSwuOTA2ODUsLjgyNjAxLC45MDY4NSwuODI2MDEsLjkwNjg1LDEuMDMyOTcsLjkwNjg1LC44MjYwMSwuNzc3NDEsMS4wNTYxMSwuNjM3NywxLjA3NjkyLDEsMSwuOTA5MTgsLjc1NTkzLDEuMDMyOTcsMSwxLC43NjAzMiwuOTA0NTIsLjk4MTU2LDEuMTE4NDIsLjc3MjYxLDEuMTE0MjksLjg5Mzg1LC45NDQ2OSwxLDEsLjg5Mzg1LC45NDQ2OSwuOTU4NzcsLjg2OTAxLC45NDQ2OSwuODUxMjIsLjk0ODIsLjg1MTIyLC45NDgyLC44NTEyMiwuOTQ4MiwuODY2NywuOTAwMTYsLjc1MTg2LDEuMDQ2OTIsMSwxLC43NTE4NiwxLjA0NjkyLC42ODg4NywuNzgyMjMsLjY4ODg3LC43ODIyMywuNjg4ODcsLjc4MjIzLC42ODg4NywuNzgyMjMsMSwxLC43OTc3NiwuOTIxODgsLjc5Nzc2LDEuMjMwMjMsLjg4ODQ0LC45NDQ2OSwuODg4NDQsLjk0NDY5LC44ODg0NCwuOTQ0NjksLjg4ODQ0LC45NDQ2OSwuODg4NDQsLjk0NDY5LC44ODg0NCwuOTQ0NjksLjk0MjU4LC45ODk4NiwuNzMwNiwuOTA1MjcsLjczMDYsLjc2NjU5LC43OTAwNCwuNzY2NTksLjc5MDA0LC43NjY1OSwuNzkwMDQsMS4wOTIzMSwuNTQ4NzMsLjg2NzUsLjg2MTI4LC43NjMxOCwuODY5MywuODUzMTEsLjg2NjUxLDEsMSwuNzk3NzYsMS4yMDU2MiwxLjE4NjIyLDEuMTg2MjIsMSwxLjE0MzcsLjY3NzQyLC45NjMzNCwuOTM2OTUsMS4zNTE5MSwxLjQwOTA5LC45NTE2MSwxLjQ4Mzg3LC44NjY4NiwuOTA4NjEsLjYyMjY3LC43NDM1OSwuNjU2NDksLjg1NDk4LC41Njk2MywuODgyNTQsMS4yMzUxNiwuODY3NSwuODE1NTIsLjc1NDQzLC44NDUwMywuNzMyMDYsLjc2NjU5LC44NjI3NSwuODUxMjIsLjkwNjg1LC43Nzg5MiwuODU3NDYsMS4wMjYzOCwuODkzODUsLjc1NjU3LC44NTEyMiwuODYyNzUsLjc3NDUyLC43NDE3MSwuNzk3NzYsLjczMDYsLjk1MTY1LC43NzgxOCwuODk3NzIsLjg4ODMxLC45MDY4NSwuNzMwNiwuOTgxNDIsMS4wMjE5MSwuOTY1NzYsMS4yMzUxNiwuOTkwMTgsLjk4MTQyLC45MjM2LC44OTI1OCwuOTQwMzUsMS4wMjE5MSwuNzg4NDgsLjk2NTc2LC45NTYxLDEuMjM1MTYsLjkwOTE4LC45MjU3OCwuOTU0MjQsLjg5NzQ2LC44Mzk2OSwuOTQ4MiwuODAxMTMsLjg5NDQyLC44NTIwOCwuODYxNTUsLjk4MDIyLC45OTAxOCwxLjAwNDUyLC44MTIwOSwuOTkyNDcsLjg5MTgxLDEuMjM1MTYsLjk5MDE4LC45NDgyLC45OTAxOCwuODkxODEsLjczMjA2LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC44ODg0NCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuODk0NjQsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjk2NzY2LDEsMSwxLDEsMSwxLC45NDI1OCwuOTg5ODYsLjk0MjU4LC45ODk4NiwuOTQyNTgsLjk4OTg2LC43MzA2LC45MDUyNywxLDEsLjg5NTUyLC45MDUyNywxLC45MDE4NiwxLjEyMzA4LDEuMTIzMDgsMS4xMjMwOCwxLjEyMzA4LDEuMjU2NiwxLjI1NjYsMS4yNTY2LC44OTU1MiwuODk1NTIsMS40MjI1OSwuNjkwNDMsMS4wMzgwOSwxLDEsMS4wMTc2LDEuMDE3NiwxLjExNTIzLDEuNDk1NiwyLjAxNDYyLC45OTMzMSwuODI2MTYsLjkxMTMzLC44NDI4NiwuOTExMzMsMSwxLDEsLjcwNTA4LDEsMS4yMzEwOCwuNzk4MDEsLjg0NDI2LC44NDQyNiwuNzc0LC45MDUyNywxLjgxMDU1LC45MDUyNywxLjgxMDU1LDEuMjg4MDksMS41NTQ2OSwuOTQ0MzQsMS4wNzgwNiwxLC45NzA5NCwuNzU4OSwuODUyODQsLjkwNzQ3LDEuMTk2NTgsLjY5ODI1LC45NzYyMiwxLjMzNTEyLC45MDc0NywuOTA3NDcsLjg1MzU2LC45MDc0NywuOTA3NDcsMS40NDk0NywuODUyODQsLjg5NDEsLjg5NDEsLjcwNTcyLC44LC43MDU3MiwuNzA1NzIsLjcwNTcyLC43MDU3MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjk5ODYyLC45OTg2MiwxLDEsMSwxLDEsMS4wMzM2LC45MTAyNywxLDEsMSwuOTk4NjIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wNTg1OSwxLjA1ODU5LDEsMSwxLDEuMDcxODUsLjk5NDEzLC45NjMzNCwxLjA4MDY1LDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0sUmE9e2xpbmVIZWlnaHQ6MS4yMjA3LGxpbmVHYXA6LjIyMDd9LEdhPVsuNzYxMTYsMSwxLDEuMDAwNiwuOTk5OTgsLjk5OTc0LC45OTk3MywuOTk5NzMsLjk5OTgyLC45OTk3NywxLjAwMDg3LC45OTk5OCwuOTk5OTgsLjk5OTU5LDEuMDAwMDMsMS4wMDA2LC45OTk5OCwxLjAwMDYsMS4wMDA2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5OTgsMSwxLjAwMDAzLDEuMDAwMDMsMS4wMDAwMywxLjAwMDI2LC45OTk5LC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywxLjAwMDAxLDEuMDAwMjYsMS4wMDAyMiwuOTk5NzcsMS4wMDA2LC45OTk3MywuOTk5NzcsMS4wMDAyNiwuOTk5OTksLjk5OTc3LDEuMDAwMjIsMS4wMDAwMSwxLjAwMDIyLC45OTk3NywxLjAwMDAxLDEuMDAwMjYsLjk5OTc3LDEuMDAwMDEsMS4wMDAxNiwxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNiwuOTk5OTgsMS4wMDA2LC45OTk5OCwxLjAwMDAzLC45OTk3MywuOTk5OTgsLjk5OTczLDEuMDAwMjYsLjk5OTczLDEuMDAwMjYsLjk5OTczLC45OTk5OCwxLjAwMDI2LDEuMDAwMjYsMS4wMDA2LDEuMDAwNiwuOTk5NzMsMS4wMDA2LC45OTk4MiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LC45OTk1OSwuOTk5NzMsLjk5OTk4LDEuMDAwMjYsLjk5OTczLDEuMDAwMjIsLjk5OTczLC45OTk3MywxLC45OTk1OSwxLjAwMDc3LC45OTk1OSwxLjAwMDAzLC45OTk5OCwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA3NywuOTk5NzMsLjk5OTk4LDEuMDAwMjUsLjk5OTY4LC45OTk3MywxLjAwMDAzLDEuMDAwMjUsLjYwMjk5LDEuMDAwMjQsMS4wNjQwOSwxLDEsLjk5OTk4LDEsLjk5OTczLDEuMDAwNiwuOTk5OTgsMSwuOTk5MzYsLjk5OTczLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMjYsLjk5OTc3LC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsMSwuOTk5NzcsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTc3LC45OTk3NywxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAwMywxLjAwMDIyLC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5ODIsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjA2NDA5LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwuOTk5NzMsMS4wMDAyNiwuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsMS4wMzM3NCwuOTk5NzcsMS4wMDAyNiwxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDIyLDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNDIsLjk5OTczLC45OTk3MywxLjAwMDYsLjk5OTc3LC45OTk3MywuOTk5NzMsMS4wMDAyNiwxLjAwMDYsMS4wMDAyNiwxLjAwMDYsMS4wMDAyNiwxLjAzODI4LDEuMDAwMjYsLjk5OTk5LDEuMDAwMjYsMS4wMDA2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTkzLC45OTk4LDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsMSwxLjAwMDE2LC45OTk3NywuOTk5NTksLjk5OTc3LC45OTk1OSwuOTk5NzcsLjk5OTU5LDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMjYsLjk5OTk4LDEuMDAwMjYsLjgxMjEsMS4wMDAyNiwuOTk5OTgsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsMS4wMDAxNiwxLjAwMDIyLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsMS4wMDAyNiwxLDEuMDAwMjYsMSwxLjAwMDI2LDEsMS4wMDA2LC45OTk3MywuOTk5NzcsLjk5OTczLDEsLjk5OTgyLDEuMDAwMjIsMS4wMDAyNiwxLjAwMDAxLC45OTk3MywxLjAwMDI2LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsMS4wMDAzNCwuOTk5NzcsMSwuOTk5OTcsMS4wMDAyNiwxLjAwMDc4LDEuMDAwMzYsLjk5OTczLDEuMDAwMTMsMS4wMDA2LC45OTk3NywuOTk5NzcsLjk5OTg4LC44NTE0OCwxLjAwMDAxLDEuMDAwMjYsLjk5OTc3LDEuMDAwMjIsMS4wMDA2LC45OTk3NywxLjAwMDAxLC45OTk5OSwuOTk5NzcsMS4wMDA2OSwxLjAwMDIyLC45OTk3NywxLjAwMDAxLC45OTk4NCwxLjAwMDI2LDEuMDAwMDEsMS4wMDAyNCwxLjAwMDAxLC45OTk5LDEsMS4wMDA2LDEuMDAwMDEsMS4wMDA0MSwuOTk5NjIsMS4wMDAyNiwxLjAwMDYsLjk5OTk1LDEuMDAwNDEsLjk5OTQyLC45OTk3MywuOTk5MjcsMS4wMDA4MiwuOTk5MDIsMS4wMDAyNiwxLjAwMDg3LDEuMDAwNiwxLjAwMDY5LC45OTk3MywuOTk4NjcsLjk5OTczLC45OTkzLDEuMDAwMjYsMS4wMDA0OSwxLjAwMDU2LDEsLjk5OTg4LC45OTkzNSwuOTk5OTUsLjk5OTU0LDEuMDAwNTUsLjk5OTQ1LDEuMDAwMzIsMS4wMDA2LC45OTk5NSwxLjAwMDI2LC45OTk5NSwxLjAwMDMyLDEuMDAwMDEsMS4wMDAwOCwuOTk5NzEsMS4wMDAxOSwuOTk5NCwxLjAwMDAxLDEuMDAwNiwxLjAwMDQ0LC45OTk3MywxLjAwMDIzLDEuMDAwNDcsMSwuOTk5NDIsLjk5NTYxLC45OTk4OSwxLjAwMDM1LC45OTk3NywxLjAwMDM1LC45OTk3NywxLjAwMDE5LC45OTk0NCwxLjAwMDAxLDEuMDAwMjEsLjk5OTI2LDEuMDAwMzUsMS4wMDAzNSwuOTk5NDIsMS4wMDA0OCwuOTk5OTksLjk5OTc3LDEuMDAwMjIsMS4wMDAzNSwxLjAwMDAxLC45OTk3NywxLjAwMDI2LC45OTk4OSwxLjAwMDU3LDEuMDAwMDEsLjk5OTM2LDEuMDAwNTIsMS4wMDAxMiwuOTk5OTYsMS4wMDA0MywxLDEuMDAwMzUsLjk5OTQsLjk5OTc2LDEuMDAwMzUsLjk5OTczLDEuMDAwNTIsMS4wMDA0MSwxLjAwMTE5LDEuMDAwMzcsLjk5OTczLDEuMDAwMDIsLjk5OTg2LDEuMDAwNDEsMS4wMDA0MSwuOTk5MDIsLjk5OTYsMS4wMDAzNCwuOTk5OTksMS4wMDAyNiwuOTk5OTksMS4wMDAyNiwuOTk5NzMsMS4wMDA1MiwuOTk5NzMsMSwuOTk5NzMsMS4wMDA0MSwxLjAwMDc1LC45OTk0LDEuMDAwMywuOTk5OTksMSwxLjAwMDQxLC45OTk1NSwxLC45OTkxNSwuOTk5NzMsLjk5OTczLDEuMDAwMjYsMS4wMDExOSwuOTk5NTUsLjk5OTczLDEuMDAwNiwuOTk5MTEsMS4wMDA2LDEuMDAwMjYsLjk5OTcyLDEuMDAwMjYsLjk5OTAyLDEuMDAwNDEsLjk5OTczLC45OTk5OSwxLDEsMS4wMDAzOCwxLjAwMDUsMS4wMDAxNiwxLjAwMDIyLDEuMDAwMTYsMS4wMDAyMiwxLjAwMDE2LDEuMDAwMjIsMS4wMDAwMSwuOTk5NzMsMSwxLC45OTk3MywxLDEsLjk5OTU1LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLDEsMSwuOTk5NzMsLjk5OTczLC45OTk3MiwxLDEsMS4wMDEwNiwuOTk5OTksLjk5OTk4LC45OTk5OCwuOTk5OTksLjk5OTk4LDEuNjY0NzUsMSwuOTk5NzMsLjk5OTczLDEuMDAwMjMsLjk5OTczLC45OTk3MSwxLjAwMDQ3LDEuMDAwMjMsMSwuOTk5OTEsLjk5OTg0LDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMDIsMSwxLDEsMSwxLDEsMSwuOTk5NzIsMSwxLjIwOTg1LDEuMzk3MTMsMS4wMDAwMywxLjAwMDMxLDEuMDAwMTUsMSwuOTk1NjEsMS4wMDAyNywxLjAwMDMxLDEuMDAwMzEsLjk5OTE1LDEuMDAwMzEsMS4wMDAzMSwuOTk5OTksMS4wMDAwMywuOTk5OTksLjk5OTk5LDEuNDExNDQsMS42LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MDU3OSwxLjQwNTc5LDEuMzY2MjUsLjk5OTk5LDEsLjk5ODYxLC45OTg2MSwxLDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsLjk5OTcyLC45OTk5OSwuOTk5OTksLjk5OTk5LC45OTk5OSwxLjQwNDgzLDEsLjk5OTc3LDEuMDAwNTQsMSwxLC45OTk1MywuOTk5NjIsMS4wMDA0MiwuOTk5NSwxLDEsMSwxLDEsMSwxLDEsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0seGE9e2xpbmVIZWlnaHQ6MS4yLGxpbmVHYXA6LjJ9LFVhPVsuNzYxMTYsMSwxLDEuMDAwNiwuOTk5OTgsLjk5OTc0LC45OTk3MywuOTk5NzMsLjk5OTgyLC45OTk3NywxLjAwMDg3LC45OTk5OCwuOTk5OTgsLjk5OTU5LDEuMDAwMDMsMS4wMDA2LC45OTk5OCwxLjAwMDYsMS4wMDA2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5OTgsMSwxLjAwMDAzLDEuMDAwMDMsMS4wMDAwMywxLjAwMDI2LC45OTk5LC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywxLjAwMDAxLDEuMDAwMjYsMS4wMDAyMiwuOTk5NzcsMS4wMDA2LC45OTk3MywuOTk5NzcsMS4wMDAyNiwuOTk5OTksLjk5OTc3LDEuMDAwMjIsMS4wMDAwMSwxLjAwMDIyLC45OTk3NywxLjAwMDAxLDEuMDAwMjYsLjk5OTc3LDEuMDAwMDEsMS4wMDAxNiwxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNiwuOTk5OTgsMS4wMDA2LC45OTk5OCwxLjAwMDAzLC45OTk3MywuOTk5OTgsLjk5OTczLDEuMDAwMjYsLjk5OTczLDEuMDAwMjYsLjk5OTczLC45OTk5OCwxLjAwMDI2LDEuMDAwMjYsMS4wMDA2LDEuMDAwNiwuOTk5NzMsMS4wMDA2LC45OTk4MiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LC45OTk1OSwuOTk5NzMsLjk5OTk4LDEuMDAwMjYsLjk5OTczLDEuMDAwMjIsLjk5OTczLC45OTk3MywxLC45OTk1OSwxLjAwMDc3LC45OTk1OSwxLjAwMDAzLC45OTk5OCwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA3NywuOTk5NzMsLjk5OTk4LDEuMDAwMjUsLjk5OTY4LC45OTk3MywxLjAwMDAzLDEuMDAwMjUsLjYwMjk5LDEuMDAwMjQsMS4wNjQwOSwxLDEsLjk5OTk4LDEsLjk5OTczLDEuMDAwNiwuOTk5OTgsMSwuOTk5MzYsLjk5OTczLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMjYsLjk5OTc3LC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsMSwuOTk5NzcsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTc3LC45OTk3NywxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAwMywxLjAwMDIyLC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5ODIsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjA2NDA5LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwuOTk5NzMsMS4wMDAyNiwuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsMS4wMDQ0LC45OTk3NywxLjAwMDI2LDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMjIsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTcxLC45OTk3MywuOTk5NzMsMS4wMDA2LC45OTk3NywuOTk5NzMsLjk5OTczLDEuMDAwMjYsMS4wMDA2LDEuMDAwMjYsMS4wMDA2LDEuMDAwMjYsMS4wMTAxMSwxLjAwMDI2LC45OTk5OSwxLjAwMDI2LDEuMDAwNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5MywuOTk5OCwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LDEsMS4wMDAxNiwuOTk5NzcsLjk5OTU5LC45OTk3NywuOTk5NTksLjk5OTc3LC45OTk1OSwxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDI2LC45OTk5OCwxLjAwMDI2LC44MTIxLDEuMDAwMjYsLjk5OTk4LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LDEuMDAwMTYsMS4wMDAyMiwxLjAwMDAxLC45OTk3MywxLjAwMDAxLDEuMDAwMjYsMSwxLjAwMDI2LDEsMS4wMDAyNiwxLDEuMDAwNiwuOTk5NzMsLjk5OTc3LC45OTk3MywxLC45OTk4MiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAwMSwuOTk5NzMsMS4wMDAyNiwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5NzcsMSwxLDEuMDAwMjYsLjk5OTY5LC45OTk3MiwuOTk5ODEsLjk5OTgsMS4wMDA2LC45OTk3NywuOTk5NzcsMS4wMDAyMiwuOTExNTUsMS4wMDAwMSwxLjAwMDI2LC45OTk3NywxLjAwMDIyLDEuMDAwNiwuOTk5NzcsMS4wMDAwMSwuOTk5OTksLjk5OTc3LC45OTk2NiwxLjAwMDIyLDEuMDAwMzIsMS4wMDAwMSwuOTk5NDQsMS4wMDAyNiwxLjAwMDAxLC45OTk2OCwxLjAwMDAxLDEuMDAwNDcsMSwxLjAwMDYsMS4wMDAwMSwuOTk5ODEsMS4wMDEwMSwxLjAwMDI2LDEuMDAwNiwuOTk5NDgsLjk5OTgxLDEuMDAwNjQsLjk5OTczLC45OTk0MiwxLjAwMTAxLDEuMDAwNjEsMS4wMDAyNiwxLjAwMDY5LDEuMDAwNiwxLjAwMDE0LC45OTk3MywxLjAxMzIyLC45OTk3MywxLjAwMDY1LDEuMDAwMjYsMS4wMDAxMiwuOTk5MjMsMSwxLjAwMDY0LDEuMDAwNzYsLjk5OTQ4LDEuMDAwNTUsMS4wMDA2MywxLjAwMDA3LC45OTk0MywxLjAwMDYsLjk5OTQ4LDEuMDAwMjYsLjk5OTQ4LC45OTk0MywxLjAwMDAxLDEuMDAwMDEsMS4wMDAyOSwxLjAwMDM4LDEuMDAwMzUsMS4wMDAwMSwxLjAwMDYsMS4wMDA2LC45OTk3MywuOTk5NzgsMS4wMDAwMSwxLjAwMDU3LC45OTk4OSwuOTk5NjcsLjk5OTY0LC45OTk2NywuOTk5NzcsLjk5OTk5LC45OTk3NywxLjAwMDM4LC45OTk3NywxLjAwMDAxLC45OTk3MywxLjAwMDY2LC45OTk2NywuOTk5NjcsMS4wMDA0MSwuOTk5OTgsLjk5OTk5LC45OTk3NywxLjAwMDIyLC45OTk2NywxLjAwMDAxLC45OTk3NywxLjAwMDI2LC45OTk2NCwxLjAwMDMxLDEuMDAwMDEsLjk5OTk5LC45OTk5OSwxLDEuMDAwMjMsMSwxLC45OTk5OSwxLjAwMDM1LDEuMDAwMDEsLjk5OTk5LC45OTk3MywuOTk5NzcsLjk5OTk5LDEuMDAwNTgsLjk5OTczLC45OTk3MywuOTk5NTUsLjk5OTUsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMzIsLjk5OTg5LDEuMDAwMzQsLjk5OTk5LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LC45OTk3MywuNDU5OTgsLjk5OTczLDEuMDAwMjYsLjk5OTczLDEuMDAwMDEsLjk5OTk5LC45OTk4MiwuOTk5OTQsLjk5OTk2LDEsMS4wMDA0MiwxLjAwMDQ0LDEuMDAwMjksMS4wMDAyMywuOTk5NzMsLjk5OTczLDEuMDAwMjYsLjk5OTQ5LDEuMDAwMDIsLjk5OTczLDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk3NSwxLjAwMDI2LDEuMDAwMjYsMS4wMDAzMiwuOTg2ODUsLjk5OTczLDEuMDAwMjYsMSwxLC45OTk2NiwxLjAwMDQ0LDEuMDAwMTYsMS4wMDAyMiwxLjAwMDE2LDEuMDAwMjIsMS4wMDAxNiwxLjAwMDIyLDEuMDAwMDEsLjk5OTczLDEsMSwuOTk5NzMsMSwxLC45OTk1NSwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMSwxLDEsLjk5OTczLC45OTk3MywuOTk5NzIsMSwxLDEuMDAxMDYsLjk5OTk5LC45OTk5OCwuOTk5OTgsLjk5OTk5LC45OTk5OCwxLjY2NDc1LDEsLjk5OTczLC45OTk3MywxLC45OTk3MywuOTk5NzEsLjk5OTc4LDEsMSwuOTk5OTEsLjk5OTg0LDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMDIsMS4wMDA5OCwxLDEsMSwxLjAwMDQ5LDEsMSwuOTk5NzIsMSwxLjIwOTg1LDEuMzk3MTMsMS4wMDAwMywxLjAwMDMxLDEuMDAwMTUsMSwuOTk1NjEsMS4wMDAyNywxLjAwMDMxLDEuMDAwMzEsLjk5OTE1LDEuMDAwMzEsMS4wMDAzMSwuOTk5OTksMS4wMDAwMywuOTk5OTksLjk5OTk5LDEuNDExNDQsMS42LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MDU3OSwxLjQwNTc5LDEuMzY2MjUsLjk5OTk5LDEsLjk5ODYxLC45OTg2MSwxLDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsLjk5OTcyLC45OTk5OSwuOTk5OTksLjk5OTk5LC45OTk5OSwxLjQwNDgzLDEsLjk5OTc3LDEuMDAwNTQsMSwxLC45OTk1MywuOTk5NjIsMS4wMDA0MiwuOTk5NSwxLDEsMSwxLDEsMSwxLDEsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0sTWE9e2xpbmVIZWlnaHQ6MS4zNSxsaW5lR2FwOi4yfSxMYT1bLjc2MTE2LDEsMSwxLjAwMDYsMS4wMDA2LDEuMDAwMDYsLjk5OTczLC45OTk3MywuOTk5ODIsMS4wMDAwMSwxLjAwMDQzLC45OTk5OCwuOTk5OTgsLjk5OTU5LDEuMDAwMDMsMS4wMDA2LC45OTk5OCwxLjAwMDYsMS4wMDA2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjAwMDYsMSwxLjAwMDAzLDEuMDAwMDMsMS4wMDAwMywuOTk5NzMsLjk5OTg3LDEuMDAwMDEsMS4wMDAwMSwuOTk5NzcsLjk5OTc3LDEuMDAwMDEsMS4wMDAyNiwxLjAwMDIyLC45OTk3NywxLjAwMDYsMSwxLjAwMDAxLC45OTk3MywuOTk5OTksLjk5OTc3LDEuMDAwMjIsMS4wMDAwMSwxLjAwMDIyLC45OTk3NywxLjAwMDAxLDEuMDAwMjYsLjk5OTc3LDEuMDAwMDEsMS4wMDAxNiwxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwuOTk5NDksLjk5OTczLC45OTk5OCwuOTk5NzMsLjk5OTczLDEsLjk5OTczLC45OTk3MywxLjAwMDYsLjk5OTczLC45OTk3MywuOTk5MjQsLjk5OTI0LDEsLjk5OTI0LC45OTk5OSwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTk4LDEsMS4wMDA2LC45OTk3MywxLC45OTk3NywxLDEsMSwxLjAwMDA1LDEuMDAwOSwxLjAwMDA1LDEuMDAwMDMsLjk5OTk4LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjAwMDksLjk5OTczLC45OTk5OCwxLjAwMDI1LC45OTk2OCwuOTk5NzMsMS4wMDAwMywxLjAwMDI1LC42MDI5OSwxLjAwMDI0LDEuMDY0MDksMSwxLC45OTk5OCwxLC45OTk4LDEuMDAwNiwuOTk5OTgsMSwuOTk5MzYsLjk5OTczLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMjYsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMSwuOTk5NzcsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTc3LC45OTk3NywxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAwMywxLjAwMDIyLC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5ODIsMSwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjA2NDA5LDEuMDAwMjYsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEsLjk5OTczLDEsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsLjk5OTc3LDEsLjk5OTc3LDEsLjk5OTc3LDEsLjk5OTc3LDEsLjk5OTc3LDEuMDI4OCwuOTk5NzcsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTI0LDEuMDAwNiwxLjAwMDYsLjk5OTQ2LDEuMDAwMzQsMSwuOTk5MjQsMS4wMDAwMSwxLDEsLjk5OTczLC45OTkyNCwuOTk5NzMsLjk5OTI0LC45OTk3MywxLjA2MzExLC45OTk3MywxLjAwMDI0LC45OTk3MywuOTk5MjQsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsMS4wMDA0MSwuOTk5OCwuOTk5NzMsMS4wMDAyMiwuOTk5NzMsMS4wMDAyMiwuOTk5NzMsMS4wMDAyMiwuOTk5NzMsMSwxLjAwMDE2LC45OTk3NywuOTk5OTgsLjk5OTc3LC45OTk5OCwuOTk5NzcsLjk5OTk4LDEuMDAwMDEsMSwxLjAwMDAxLDEsMS4wMDAwMSwxLDEuMDAwMDEsMSwxLjAwMDI2LDEuMDAwNiwxLjAwMDI2LC44OTU0NywxLjAwMDI2LDEuMDAwNiwuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywxLjAwMDE2LC45OTk3NywxLjAwMDAxLDEsMS4wMDAwMSwxLjAwMDI2LDEsMS4wMDAyNiwxLDEuMDAwMjYsMSwuOTk5MjQsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEsLjk5OTgyLDEuMDAwMjIsMS4wMDAyNiwxLjAwMDAxLDEsMS4wMDAyNiwxLjAwMDYsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwxLjAwMDAxLDEsMS4wMDA1NCwuOTk5NzcsMS4wMDA4NCwxLjAwMDA3LC45OTk3MywxLjAwMDEzLC45OTkyNCwxLjAwMDAxLDEuMDAwMDEsLjk5OTQ1LC45MTIyMSwxLjAwMDAxLDEuMDAwMjYsLjk5OTc3LDEuMDAwMjIsMS4wMDA2LDEuMDAwMDEsMS4wMDAwMSwuOTk5OTksLjk5OTc3LC45OTkzMywxLjAwMDIyLDEuMDAwNTQsMS4wMDAwMSwxLjAwMDY1LDEuMDAwMjYsMS4wMDAwMSwxLjAwMDEsMS4wMDAwMSwxLjAwMDUyLDEsMS4wMDA2LDEuMDAwMDEsLjk5OTQ1LC45OTg5NywuOTk5NjgsLjk5OTI0LDEuMDAwMzYsLjk5OTQ1LC45OTk0OSwxLDEuMDAwNiwuOTk4OTcsLjk5OTE4LC45OTk2OCwuOTk5MTEsLjk5OTI0LDEsLjk5OTYyLDEuMDE0ODcsMSwxLjAwMDUsLjk5OTczLDEuMDAwMTIsMS4wMDA0MywxLC45OTk5NSwuOTk5OTQsMS4wMDAzNiwuOTk5NDcsMS4wMDAxOSwxLjAwMDYzLDEuMDAwMjUsLjk5OTI0LDEuMDAwMzYsLjk5OTczLDEuMDAwMzYsMS4wMDAyNSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNywxLjAwMDEsMS4wMDA2OCwxLjAwMDAxLDEuMDAwNiwxLjAwMDYsMSwxLjAwMDA4LC45OTk1NywuOTk5NzIsLjk5OTQsLjk5OTU0LC45OTk3NSwxLjAwMDUxLDEuMDAwMDEsMS4wMDAxOSwxLjAwMDAxLDEuMDAwMSwuOTk5ODYsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMzgsLjk5OTU0LC45OTk1NCwuOTk5NCwxLjAwMDY2LC45OTk5OSwuOTk5NzcsMS4wMDAyMiwxLjAwMDU0LDEuMDAwMDEsLjk5OTc3LDEuMDAwMjYsLjk5OTc1LDEuMDAwMSwxLjAwMDAxLC45OTk5MywuOTk5NSwuOTk5NTUsMS4wMDAxNiwuOTk5NzgsLjk5OTc0LDEuMDAwMTksMS4wMDAyMiwuOTk5NTUsMS4wMDA1MywuOTk5NzMsMS4wMDA4OSwxLjAwMDA1LC45OTk2NywxLjAwMDQ4LC45OTk3MywxLjAwMDAyLDEuMDAwMzQsLjk5OTczLC45OTk3MywuOTk5NjQsMS4wMDAwNiwxLjAwMDY2LC45OTk0NywuOTk5NzMsLjk4ODk0LC45OTk3MywxLC40NDg5OCwxLC45OTk0NiwxLDEuMDAwMzksMS4wMDA4MiwuOTk5OTEsLjk5OTkxLC45OTk4NSwxLjAwMDIyLDEuMDAwMjMsMS4wMDA2MSwxLjAwMDA2LC45OTk2NiwuOTk5NzMsLjk5OTczLC45OTk3MywxLjAwMDE5LDEuMDAwOCwxLC45OTkyNCwuOTk5MjQsLjk5OTI0LC45OTk4MywxLjAwMDQ0LC45OTk3MywuOTk5NjQsLjk4MzMyLDEsLjk5OTczLDEsMSwuOTk5NjIsLjk5ODk1LDEuMDAwMTYsLjk5OTc3LDEuMDAwMTYsLjk5OTc3LDEuMDAwMTYsLjk5OTc3LDEuMDAwMDEsMSwxLDEsLjk5OTczLDEsMSwuOTk5NTUsLjk5OTI0LC45OTkyNCwuOTk5MjQsLjk5OTI0LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk3MywuOTk5NzMsLjk5OTcyLDEsMSwxLjAwMjY3LC45OTk5OSwuOTk5OTgsLjk5OTk4LDEsLjk5OTk4LDEuNjY0NzUsMSwuOTk5NzMsLjk5OTczLDEuMDAwMjMsLjk5OTczLDEuMDA0MjMsLjk5OTI1LC45OTk5OSwxLC45OTk5MSwuOTk5ODQsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDQ5LDEsMS4wMDI0NSwxLDEsMSwxLC45NjMyOSwxLDEuMjA5ODUsMS4zOTcxMywxLjAwMDAzLC44MjU0LDEuMDAwMTUsMSwxLjAwMDM1LDEuMDAwMjcsMS4wMDAzMSwxLjAwMDMxLDEuMDAwMDMsMS4wMDAzMSwxLjAwMDMxLC45OTk5OSwxLjAwMDAzLC45OTk5OSwuOTk5OTksMS40MTE0NCwxLjYsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQwNTc5LDEuNDA1NzksMS4zNjYyNSwuOTk5OTksMSwuOTk4NjEsLjk5ODYxLDEsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwuOTUzMTcsLjk5OTk5LC45OTk5OSwuOTk5OTksLjk5OTk5LDEuNDA0ODMsMSwuOTk5NzcsMS4wMDA1NCwxLDEsLjk5OTUzLC45OTk2MiwxLjAwMDQyLC45OTk1LDEsMSwxLDEsMSwxLDEsMSwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXSxIYT17bGluZUhlaWdodDoxLjM1LGxpbmVHYXA6LjJ9LEphPVsuNzYxMTYsMSwxLDEuMDAwNiwxLjAwMDYsMS4wMDAwNiwuOTk5NzMsLjk5OTczLC45OTk4MiwxLjAwMDAxLDEuMDAwNDMsLjk5OTk4LC45OTk5OCwuOTk5NTksMS4wMDAwMywxLjAwMDYsLjk5OTk4LDEuMDAwNiwxLjAwMDYsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDAwNiwxLDEuMDAwMDMsMS4wMDAwMywxLjAwMDAzLC45OTk3MywuOTk5ODcsMS4wMDAwMSwxLjAwMDAxLC45OTk3NywuOTk5NzcsMS4wMDAwMSwxLjAwMDI2LDEuMDAwMjIsLjk5OTc3LDEuMDAwNiwxLDEuMDAwMDEsLjk5OTczLC45OTk5OSwuOTk5NzcsMS4wMDAyMiwxLjAwMDAxLDEuMDAwMjIsLjk5OTc3LDEuMDAwMDEsMS4wMDAyNiwuOTk5NzcsMS4wMDAwMSwxLjAwMDE2LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDI2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk0OSwuOTk5NzMsLjk5OTk4LC45OTk3MywuOTk5NzMsMSwuOTk5NzMsLjk5OTczLDEuMDAwNiwuOTk5NzMsLjk5OTczLC45OTkyNCwuOTk5MjQsMSwuOTk5MjQsLjk5OTk5LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5OTgsMSwxLjAwMDYsLjk5OTczLDEsLjk5OTc3LDEsMSwxLDEuMDAwMDUsMS4wMDA5LDEuMDAwMDUsMS4wMDAwMywuOTk5OTgsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDAwOSwuOTk5NzMsLjk5OTk4LDEuMDAwMjUsLjk5OTY4LC45OTk3MywxLjAwMDAzLDEuMDAwMjUsLjYwMjk5LDEuMDAwMjQsMS4wNjQwOSwxLDEsLjk5OTk4LDEsLjk5OTgsMS4wMDA2LC45OTk5OCwxLC45OTkzNiwuOTk5NzMsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMDIsMS4wMDAyNiwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLC45OTk3NywxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwuOTk5NzcsLjk5OTc3LDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDAzLDEuMDAwMjIsLjk5OTc3LC45OTk3NywuOTk5NzcsLjk5OTc3LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDI2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk4MiwxLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDY0MDksMS4wMDAyNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMSwuOTk5NzMsMSwxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywuOTk5NzcsMSwuOTk5NzcsMSwuOTk5NzcsMSwuOTk5NzcsMSwuOTk5NzcsMS4wNDU5NiwuOTk5NzcsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTI0LDEuMDAwNiwxLjAwMDYsMS4wMDAxOSwxLjAwMDM0LDEsLjk5OTI0LDEuMDAwMDEsMSwxLC45OTk3MywuOTk5MjQsLjk5OTczLC45OTkyNCwuOTk5NzMsMS4wMjU3MiwuOTk5NzMsMS4wMDAwNSwuOTk5NzMsLjk5OTI0LC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk5OSwuOTk5OCwuOTk5NzMsMS4wMDAyMiwuOTk5NzMsMS4wMDAyMiwuOTk5NzMsMS4wMDAyMiwuOTk5NzMsMSwxLjAwMDE2LC45OTk3NywuOTk5OTgsLjk5OTc3LC45OTk5OCwuOTk5NzcsLjk5OTk4LDEuMDAwMDEsMSwxLjAwMDAxLDEsMS4wMDAwMSwxLDEuMDAwMDEsMSwxLjAwMDI2LDEuMDAwNiwxLjAwMDI2LC44NDUzMywxLjAwMDI2LDEuMDAwNiwuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywxLjAwMDE2LC45OTk3NywxLjAwMDAxLDEsMS4wMDAwMSwxLjAwMDI2LDEsMS4wMDAyNiwxLDEuMDAwMjYsMSwuOTk5MjQsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEsLjk5OTgyLDEuMDAwMjIsMS4wMDAyNiwxLjAwMDAxLDEsMS4wMDAyNiwxLjAwMDYsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5MjgsMSwuOTk5NzcsMS4wMDAxMywxLjAwMDU1LC45OTk0NywuOTk5NDUsLjk5OTQxLC45OTkyNCwxLjAwMDAxLDEuMDAwMDEsMS4wMDA0LC45MTYyMSwxLjAwMDAxLDEuMDAwMjYsLjk5OTc3LDEuMDAwMjIsMS4wMDA2LDEuMDAwMDEsMS4wMDAwNSwuOTk5OTksLjk5OTc3LDEuMDAwMTUsMS4wMDAyMiwuOTk5NzcsMS4wMDAwMSwuOTk5NzMsMS4wMDAyNiwxLjAwMDAxLDEuMDAwMTksMS4wMDAwMSwuOTk5NDYsMSwxLjAwMDYsMS4wMDAwMSwuOTk5NzgsMS4wMDA0NSwuOTk5NzMsLjk5OTI0LDEuMDAwMjMsLjk5OTc4LC45OTk2NiwxLDEuMDAwNjUsMS4wMDA0NSwxLjAwMDE5LC45OTk3MywuOTk5NzMsLjk5OTI0LDEsMSwuOTY0OTksMSwxLjAwMDU1LC45OTk3MywxLjAwMDA4LDEuMDAwMjcsMSwuOTk5NywuOTk5OTUsMS4wMDAyMywuOTk5MzMsMS4wMDAxOSwxLjAwMDE1LDEuMDAwMzEsLjk5OTI0LDEuMDAwMjMsLjk5OTczLDEuMDAwMjMsMS4wMDAzMSwxLjAwMDAxLC45OTkyOCwxLjAwMDI5LDEuMDAwOTIsMS4wMDAzNSwxLjAwMDAxLDEuMDAwNiwxLjAwMDYsMSwuOTk5ODgsLjk5OTc1LDEsMS4wMDA4MiwuOTk1NjEsLjk5OTYsMS4wMDAzNSwxLjAwMDAxLC45OTk2MiwxLjAwMDAxLDEuMDAwOTIsLjk5OTY0LDEuMDAwMDEsLjk5OTYzLC45OTk5OSwxLjAwMDM1LDEuMDAwMzUsMS4wMDA4MiwuOTk5NjIsLjk5OTk5LC45OTk3NywxLjAwMDIyLDEuMDAwMzUsMS4wMDAwMSwuOTk5NzcsMS4wMDAyNiwuOTk5NiwuOTk5NjcsMS4wMDAwMSwxLjAwMDM0LDEuMDAwNzQsMS4wMDA1NCwxLjAwMDUzLDEuMDAwNjMsLjk5OTcxLC45OTk2MiwxLjAwMDM1LC45OTk3NSwuOTk5NzcsLjk5OTczLDEuMDAwNDMsLjk5OTUzLDEuMDAwNywuOTk5MTUsLjk5OTczLDEuMDAwMDgsLjk5ODkyLDEuMDAwNzMsMS4wMDA3MywxLjAwMTE0LC45OTkxNSwxLjAwMDczLC45OTk1NSwuOTk5NzMsMS4wMDA5MiwuOTk5NzMsMSwuOTk5OTgsMSwxLjAwMDMsMSwxLjAwMDQzLDEuMDAwMDEsLjk5OTY5LDEuMDAwMywxLDEuMDAwMzUsMS4wMDAwMSwuOTk5NSwxLDEuMDAwOTIsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA3LC45OTk1LDEsLjk5OTI0LDEuMDAwNiwuOTk5MjQsLjk5OTcyLDEuMDAwNjIsLjk5OTczLDEuMDAxMTQsMS4wMDA3MywxLC45OTk1NSwxLDEsMS4wMDA0NywuOTk5NjgsMS4wMDAxNiwuOTk5NzcsMS4wMDAxNiwuOTk5NzcsMS4wMDAxNiwuOTk5NzcsMS4wMDAwMSwxLDEsMSwuOTk5NzMsMSwxLC45OTk1NSwuOTk5MjQsLjk5OTI0LC45OTkyNCwuOTk5MjQsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTczLC45OTk3MywuOTk5NzIsMSwxLDEuMDAyNjcsLjk5OTk5LC45OTk5OCwuOTk5OTgsMSwuOTk5OTgsMS42NjQ3NSwxLC45OTk3MywuOTk5NzMsMS4wMDAyMywuOTk5NzMsLjk5OTcxLC45OTkyNSwxLjAwMDIzLDEsLjk5OTkxLC45OTk4NCwxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEsMSwxLDEsMSwxLDEsLjk2MzI5LDEsMS4yMDk4NSwxLjM5NzEzLDEuMDAwMDMsLjgyNTQsMS4wMDAxNSwxLDEuMDAwMzUsMS4wMDAyNywxLjAwMDMxLDEuMDAwMzEsLjk5OTE1LDEuMDAwMzEsMS4wMDAzMSwuOTk5OTksMS4wMDAwMywuOTk5OTksLjk5OTk5LDEuNDExNDQsMS42LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MDU3OSwxLjQwNTc5LDEuMzY2MjUsLjk5OTk5LDEsLjk5ODYxLC45OTg2MSwxLDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsLjk1MzE3LC45OTk5OSwuOTk5OTksLjk5OTk5LC45OTk5OSwxLjQwNDgzLDEsLjk5OTc3LDEuMDAwNTQsMSwxLC45OTk1MywuOTk5NjIsMS4wMDA0MiwuOTk5NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLFlhPXtsaW5lSGVpZ2h0OjEuMixsaW5lR2FwOi4yfSx2YT1bMzY1LDAsMzMzLDI3OCwzMzMsNDc0LDU1Niw1NTYsODg5LDcyMiwyMzgsMzMzLDMzMywzODksNTg0LDI3OCwzMzMsMjc4LDI3OCw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsMzMzLDMzMyw1ODQsNTg0LDU4NCw2MTEsOTc1LDcyMiw3MjIsNzIyLDcyMiw2NjcsNjExLDc3OCw3MjIsMjc4LDU1Niw3MjIsNjExLDgzMyw3MjIsNzc4LDY2Nyw3NzgsNzIyLDY2Nyw2MTEsNzIyLDY2Nyw5NDQsNjY3LDY2Nyw2MTEsMzMzLDI3OCwzMzMsNTg0LDU1NiwzMzMsNTU2LDYxMSw1NTYsNjExLDU1NiwzMzMsNjExLDYxMSwyNzgsMjc4LDU1NiwyNzgsODg5LDYxMSw2MTEsNjExLDYxMSwzODksNTU2LDMzMyw2MTEsNTU2LDc3OCw1NTYsNTU2LDUwMCwzODksMjgwLDM4OSw1ODQsMzMzLDU1Niw1NTYsNTU2LDU1NiwyODAsNTU2LDMzMyw3MzcsMzcwLDU1Niw1ODQsNzM3LDU1Miw0MDAsNTQ5LDMzMywzMzMsMzMzLDU3Niw1NTYsMjc4LDMzMywzMzMsMzY1LDU1Niw4MzQsODM0LDgzNCw2MTEsNzIyLDcyMiw3MjIsNzIyLDcyMiw3MjIsMWUzLDcyMiw2NjcsNjY3LDY2Nyw2NjcsMjc4LDI3OCwyNzgsMjc4LDcyMiw3MjIsNzc4LDc3OCw3NzgsNzc4LDc3OCw1ODQsNzc4LDcyMiw3MjIsNzIyLDcyMiw2NjcsNjY3LDYxMSw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw4ODksNTU2LDU1Niw1NTYsNTU2LDU1NiwyNzgsMjc4LDI3OCwyNzgsNjExLDYxMSw2MTEsNjExLDYxMSw2MTEsNjExLDU0OSw2MTEsNjExLDYxMSw2MTEsNjExLDU1Niw2MTEsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDcxOSw3MjIsNjExLDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw3NzgsNjExLDc3OCw2MTEsNzc4LDYxMSw3NzgsNjExLDcyMiw2MTEsNzIyLDYxMSwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsNzg1LDU1Niw1NTYsMjc4LDcyMiw1NTYsNTU2LDYxMSwyNzgsNjExLDI3OCw2MTEsMzg1LDYxMSw0NzksNjExLDI3OCw3MjIsNjExLDcyMiw2MTEsNzIyLDYxMSw3MDgsNzIzLDYxMSw3NzgsNjExLDc3OCw2MTEsNzc4LDYxMSwxZTMsOTQ0LDcyMiwzODksNzIyLDM4OSw3MjIsMzg5LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjExLDMzMyw2MTEsNDc5LDYxMSwzMzMsNzIyLDYxMSw3MjIsNjExLDcyMiw2MTEsNzIyLDYxMSw3MjIsNjExLDcyMiw2MTEsOTQ0LDc3OCw2NjcsNTU2LDY2Nyw2MTEsNTAwLDYxMSw1MDAsNjExLDUwMCwyNzgsNTU2LDcyMiw1NTYsMWUzLDg4OSw3NzgsNjExLDY2Nyw1NTYsNjExLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsNDY1LDcyMiwzMzMsODUzLDkwNiw0NzQsODI1LDkyNyw4MzgsMjc4LDcyMiw3MjIsNjAxLDcxOSw2NjcsNjExLDcyMiw3NzgsMjc4LDcyMiw2NjcsODMzLDcyMiw2NDQsNzc4LDcyMiw2NjcsNjAwLDYxMSw2NjcsODIxLDY2Nyw4MDksODAyLDI3OCw2NjcsNjE1LDQ1MSw2MTEsMjc4LDU4Miw2MTUsNjEwLDU1Niw2MDYsNDc1LDQ2MCw2MTEsNTQxLDI3OCw1NTgsNTU2LDYxMiw1NTYsNDQ1LDYxMSw3NjYsNjE5LDUyMCw2ODQsNDQ2LDU4Miw3MTUsNTc2LDc1Myw4NDUsMjc4LDU4Miw2MTEsNTgyLDg0NSw2NjcsNjY5LDg4NSw1NjcsNzExLDY2NywyNzgsMjc2LDU1NiwxMDk0LDEwNjIsODc1LDYxMCw3MjIsNjIyLDcxOSw3MjIsNzE5LDcyMiw1NjcsNzEyLDY2Nyw5MDQsNjI2LDcxOSw3MTksNjEwLDcwMiw4MzMsNzIyLDc3OCw3MTksNjY3LDcyMiw2MTEsNjIyLDg1NCw2NjcsNzMwLDcwMywxMDA1LDEwMTksODcwLDk3OSw3MTksNzExLDEwMzEsNzE5LDU1Niw2MTgsNjE1LDQxNyw2MzUsNTU2LDcwOSw0OTcsNjE1LDYxNSw1MDAsNjM1LDc0MCw2MDQsNjExLDYwNCw2MTEsNTU2LDQ5MCw1NTYsODc1LDU1Niw2MTUsNTgxLDgzMyw4NDQsNzI5LDg1NCw2MTUsNTUyLDg1NCw1ODMsNTU2LDU1Niw2MTEsNDE3LDU1Miw1NTYsMjc4LDI4MSwyNzgsOTY5LDkwNiw2MTEsNTAwLDYxNSw1NTYsNjA0LDc3OCw2MTEsNDg3LDQ0Nyw5NDQsNzc4LDk0NCw3NzgsOTQ0LDc3OCw2NjcsNTU2LDMzMywzMzMsNTU2LDFlMywxZTMsNTUyLDI3OCwyNzgsMjc4LDI3OCw1MDAsNTAwLDUwMCw1NTYsNTU2LDM1MCwxZTMsMWUzLDI0MCw0NzksMzMzLDMzMyw2MDQsMzMzLDE2NywzOTYsNTU2LDU1NiwxMDk0LDU1Niw4ODUsNDg5LDExMTUsMWUzLDc2OCw2MDAsODM0LDgzNCw4MzQsODM0LDFlMyw1MDAsMWUzLDUwMCwxZTMsNTAwLDUwMCw0OTQsNjEyLDgyMyw3MTMsNTg0LDU0OSw3MTMsOTc5LDcyMiwyNzQsNTQ5LDU0OSw1ODMsNTQ5LDU0OSw2MDQsNTg0LDYwNCw2MDQsNzA4LDYyNSw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MjksNjA0LDYwNCwzNTQsMzU0LDFlMyw5OTAsOTkwLDk5MCw5OTAsNDk0LDYwNCw2MDQsNjA0LDYwNCwzNTQsMTAyMSwxMDUyLDkxNyw3NTAsNzUwLDUzMSw2NTYsNTk0LDUxMCw1MDAsNzUwLDc1MCw2MTEsNjExLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMjIyLDIyMiwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzXSxLYT1bLTEsLTEsLTEsMzIsMzMsMzQsMzUsMzYsMzcsMzgsMzksNDAsNDEsNDIsNDMsNDQsNDUsNDYsNDcsNDgsNDksNTAsNTEsNTIsNTMsNTQsNTUsNTYsNTcsNTgsNTksNjAsNjEsNjIsNjMsNjQsNjUsNjYsNjcsNjgsNjksNzAsNzEsNzIsNzMsNzQsNzUsNzYsNzcsNzgsNzksODAsODEsODIsODMsODQsODUsODYsODcsODgsODksOTAsOTEsOTIsOTMsOTQsOTUsOTYsOTcsOTgsOTksMTAwLDEwMSwxMDIsMTAzLDEwNCwxMDUsMTA2LDEwNywxMDgsMTA5LDExMCwxMTEsMTEyLDExMywxMTQsMTE1LDExNiwxMTcsMTE4LDExOSwxMjAsMTIxLDEyMiwxMjMsMTI0LDEyNSwxMjYsMTYxLDE2MiwxNjMsMTY0LDE2NSwxNjYsMTY3LDE2OCwxNjksMTcwLDE3MSwxNzIsMTc0LDE3NSwxNzYsMTc3LDE3OCwxNzksMTgwLDE4MSwxODIsMTgzLDE4NCwxODUsMTg2LDE4NywxODgsMTg5LDE5MCwxOTEsMTkyLDE5MywxOTQsMTk1LDE5NiwxOTcsMTk4LDE5OSwyMDAsMjAxLDIwMiwyMDMsMjA0LDIwNSwyMDYsMjA3LDIwOCwyMDksMjEwLDIxMSwyMTIsMjEzLDIxNCwyMTUsMjE2LDIxNywyMTgsMjE5LDIyMCwyMjEsMjIyLDIyMywyMjQsMjI1LDIyNiwyMjcsMjI4LDIyOSwyMzAsMjMxLDIzMiwyMzMsMjM0LDIzNSwyMzYsMjM3LDIzOCwyMzksMjQwLDI0MSwyNDIsMjQzLDI0NCwyNDUsMjQ2LDI0NywyNDgsMjQ5LDI1MCwyNTEsMjUyLDI1MywyNTQsMjU1LDI1NiwyNTcsMjU4LDI1OSwyNjAsMjYxLDI2MiwyNjMsMjY0LDI2NSwyNjYsMjY3LDI2OCwyNjksMjcwLDI3MSwyNzIsMjczLDI3NCwyNzUsMjc2LDI3NywyNzgsMjc5LDI4MCwyODEsMjgyLDI4MywyODQsMjg1LDI4NiwyODcsMjg4LDI4OSwyOTAsMjkxLDI5MiwyOTMsMjk0LDI5NSwyOTYsMjk3LDI5OCwyOTksMzAwLDMwMSwzMDIsMzAzLDMwNCwzMDUsMzA2LDMwNywzMDgsMzA5LDMxMCwzMTEsMzEyLDMxMywzMTQsMzE1LDMxNiwzMTcsMzE4LDMxOSwzMjAsMzIxLDMyMiwzMjMsMzI0LDMyNSwzMjYsMzI3LDMyOCwzMjksMzMwLDMzMSwzMzIsMzMzLDMzNCwzMzUsMzM2LDMzNywzMzgsMzM5LDM0MCwzNDEsMzQyLDM0MywzNDQsMzQ1LDM0NiwzNDcsMzQ4LDM0OSwzNTAsMzUxLDM1MiwzNTMsMzU0LDM1NSwzNTYsMzU3LDM1OCwzNTksMzYwLDM2MSwzNjIsMzYzLDM2NCwzNjUsMzY2LDM2NywzNjgsMzY5LDM3MCwzNzEsMzcyLDM3MywzNzQsMzc1LDM3NiwzNzcsMzc4LDM3OSwzODAsMzgxLDM4MiwzODMsNDAyLDUwNiw1MDcsNTA4LDUwOSw1MTAsNTExLDUzNiw1MzcsNTM4LDUzOSw3MTAsNzExLDcxMyw3MjgsNzI5LDczMCw3MzEsNzMyLDczMyw5MDAsOTAxLDkwMiw5MDMsOTA0LDkwNSw5MDYsOTA4LDkxMCw5MTEsOTEyLDkxMyw5MTQsOTE1LDkxNiw5MTcsOTE4LDkxOSw5MjAsOTIxLDkyMiw5MjMsOTI0LDkyNSw5MjYsOTI3LDkyOCw5MjksOTMxLDkzMiw5MzMsOTM0LDkzNSw5MzYsOTM3LDkzOCw5MzksOTQwLDk0MSw5NDIsOTQzLDk0NCw5NDUsOTQ2LDk0Nyw5NDgsOTQ5LDk1MCw5NTEsOTUyLDk1Myw5NTQsOTU1LDk1Niw5NTcsOTU4LDk1OSw5NjAsOTYxLDk2Miw5NjMsOTY0LDk2NSw5NjYsOTY3LDk2OCw5NjksOTcwLDk3MSw5NzIsOTczLDk3NCwxMDI0LDEwMjUsMTAyNiwxMDI3LDEwMjgsMTAyOSwxMDMwLDEwMzEsMTAzMiwxMDMzLDEwMzQsMTAzNSwxMDM2LDEwMzcsMTAzOCwxMDM5LDEwNDAsMTA0MSwxMDQyLDEwNDMsMTA0NCwxMDQ1LDEwNDYsMTA0NywxMDQ4LDEwNDksMTA1MCwxMDUxLDEwNTIsMTA1MywxMDU0LDEwNTUsMTA1NiwxMDU3LDEwNTgsMTA1OSwxMDYwLDEwNjEsMTA2MiwxMDYzLDEwNjQsMTA2NSwxMDY2LDEwNjcsMTA2OCwxMDY5LDEwNzAsMTA3MSwxMDcyLDEwNzMsMTA3NCwxMDc1LDEwNzYsMTA3NywxMDc4LDEwNzksMTA4MCwxMDgxLDEwODIsMTA4MywxMDg0LDEwODUsMTA4NiwxMDg3LDEwODgsMTA4OSwxMDkwLDEwOTEsMTA5MiwxMDkzLDEwOTQsMTA5NSwxMDk2LDEwOTcsMTA5OCwxMDk5LDExMDAsMTEwMSwxMTAyLDExMDMsMTEwNCwxMTA1LDExMDYsMTEwNywxMTA4LDExMDksMTExMCwxMTExLDExMTIsMTExMywxMTE0LDExMTUsMTExNiwxMTE3LDExMTgsMTExOSwxMTM4LDExMzksMTE2OCwxMTY5LDc4MDgsNzgwOSw3ODEwLDc4MTEsNzgxMiw3ODEzLDc5MjIsNzkyMyw4MjA4LDgyMDksODIxMSw4MjEyLDgyMTMsODIxNSw4MjE2LDgyMTcsODIxOCw4MjE5LDgyMjAsODIyMSw4MjIyLDgyMjQsODIyNSw4MjI2LDgyMzAsODI0MCw4MjQyLDgyNDMsODI0OSw4MjUwLDgyNTIsODI1NCw4MjYwLDgzMTksODM1NSw4MzU2LDgzNTksODM2NCw4NDUzLDg0NjcsODQ3MCw4NDgyLDg0ODYsODQ5NCw4NTM5LDg1NDAsODU0MSw4NTQyLDg1OTIsODU5Myw4NTk0LDg1OTUsODU5Niw4NTk3LDg2MTYsODcwNiw4NzEwLDg3MTksODcyMSw4NzIyLDg3MzAsODczNCw4NzM1LDg3NDUsODc0Nyw4Nzc2LDg4MDAsODgwMSw4ODA0LDg4MDUsODk2Miw4OTc2LDg5OTIsODk5Myw5NDcyLDk0NzQsOTQ4NCw5NDg4LDk0OTIsOTQ5Niw5NTAwLDk1MDgsOTUxNiw5NTI0LDk1MzIsOTU1Miw5NTUzLDk1NTQsOTU1NSw5NTU2LDk1NTcsOTU1OCw5NTU5LDk1NjAsOTU2MSw5NTYyLDk1NjMsOTU2NCw5NTY1LDk1NjYsOTU2Nyw5NTY4LDk1NjksOTU3MCw5NTcxLDk1NzIsOTU3Myw5NTc0LDk1NzUsOTU3Niw5NTc3LDk1NzgsOTU3OSw5NTgwLDk2MDAsOTYwNCw5NjA4LDk2MTIsOTYxNiw5NjE3LDk2MTgsOTYxOSw5NjMyLDk2MzMsOTY0Miw5NjQzLDk2NDQsOTY1MCw5NjU4LDk2NjAsOTY2OCw5Njc0LDk2NzUsOTY3OSw5Njg4LDk2ODksOTcwMiw5Nzg2LDk3ODcsOTc4OCw5NzkyLDk3OTQsOTgyNCw5ODI3LDk4MjksOTgzMCw5ODM0LDk4MzUsOTgzNiw2MTQ0MSw2MTQ0Miw2MTQ0NSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMV0sVGE9WzM2NSwwLDMzMywyNzgsMzMzLDQ3NCw1NTYsNTU2LDg4OSw3MjIsMjM4LDMzMywzMzMsMzg5LDU4NCwyNzgsMzMzLDI3OCwyNzgsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDMzMywzMzMsNTg0LDU4NCw1ODQsNjExLDk3NSw3MjIsNzIyLDcyMiw3MjIsNjY3LDYxMSw3NzgsNzIyLDI3OCw1NTYsNzIyLDYxMSw4MzMsNzIyLDc3OCw2NjcsNzc4LDcyMiw2NjcsNjExLDcyMiw2NjcsOTQ0LDY2Nyw2NjcsNjExLDMzMywyNzgsMzMzLDU4NCw1NTYsMzMzLDU1Niw2MTEsNTU2LDYxMSw1NTYsMzMzLDYxMSw2MTEsMjc4LDI3OCw1NTYsMjc4LDg4OSw2MTEsNjExLDYxMSw2MTEsMzg5LDU1NiwzMzMsNjExLDU1Niw3NzgsNTU2LDU1Niw1MDAsMzg5LDI4MCwzODksNTg0LDMzMyw1NTYsNTU2LDU1Niw1NTYsMjgwLDU1NiwzMzMsNzM3LDM3MCw1NTYsNTg0LDczNyw1NTIsNDAwLDU0OSwzMzMsMzMzLDMzMyw1NzYsNTU2LDI3OCwzMzMsMzMzLDM2NSw1NTYsODM0LDgzNCw4MzQsNjExLDcyMiw3MjIsNzIyLDcyMiw3MjIsNzIyLDFlMyw3MjIsNjY3LDY2Nyw2NjcsNjY3LDI3OCwyNzgsMjc4LDI3OCw3MjIsNzIyLDc3OCw3NzgsNzc4LDc3OCw3NzgsNTg0LDc3OCw3MjIsNzIyLDcyMiw3MjIsNjY3LDY2Nyw2MTEsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsODg5LDU1Niw1NTYsNTU2LDU1Niw1NTYsMjc4LDI3OCwyNzgsMjc4LDYxMSw2MTEsNjExLDYxMSw2MTEsNjExLDYxMSw1NDksNjExLDYxMSw2MTEsNjExLDYxMSw1NTYsNjExLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw3NDAsNzIyLDYxMSw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNzc4LDYxMSw3NzgsNjExLDc3OCw2MTEsNzc4LDYxMSw3MjIsNjExLDcyMiw2MTEsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDc4Miw1NTYsNTU2LDI3OCw3MjIsNTU2LDU1Niw2MTEsMjc4LDYxMSwyNzgsNjExLDM5Niw2MTEsNDc5LDYxMSwyNzgsNzIyLDYxMSw3MjIsNjExLDcyMiw2MTEsNzA4LDcyMyw2MTEsNzc4LDYxMSw3NzgsNjExLDc3OCw2MTEsMWUzLDk0NCw3MjIsMzg5LDcyMiwzODksNzIyLDM4OSw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDYxMSwzMzMsNjExLDQ3OSw2MTEsMzMzLDcyMiw2MTEsNzIyLDYxMSw3MjIsNjExLDcyMiw2MTEsNzIyLDYxMSw3MjIsNjExLDk0NCw3NzgsNjY3LDU1Niw2NjcsNjExLDUwMCw2MTEsNTAwLDYxMSw1MDAsMjc4LDU1Niw3MjIsNTU2LDFlMyw4ODksNzc4LDYxMSw2NjcsNTU2LDYxMSwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMyw3MjIsMzMzLDg1NCw5MDYsNDczLDg0NCw5MzAsODQ3LDI3OCw3MjIsNzIyLDYxMCw2NzEsNjY3LDYxMSw3MjIsNzc4LDI3OCw3MjIsNjY3LDgzMyw3MjIsNjU3LDc3OCw3MTgsNjY3LDU5MCw2MTEsNjY3LDgyMiw2NjcsODI5LDc4MSwyNzgsNjY3LDYyMCw0NzksNjExLDI3OCw1OTEsNjIwLDYyMSw1NTYsNjEwLDQ3OSw0OTIsNjExLDU1OCwyNzgsNTY2LDU1Niw2MDMsNTU2LDQ1MCw2MTEsNzEyLDYwNSw1MzIsNjY0LDQwOSw1OTEsNzA0LDU3OCw3NzMsODM0LDI3OCw1OTEsNjExLDU5MSw4MzQsNjY3LDY2Nyw4ODYsNjE0LDcxOSw2NjcsMjc4LDI3OCw1NTYsMTA5NCwxMDQyLDg1NCw2MjIsNzE5LDY3Nyw3MTksNzIyLDcwOCw3MjIsNjE0LDcyMiw2NjcsOTI3LDY0Myw3MTksNzE5LDYxNSw2ODcsODMzLDcyMiw3NzgsNzE5LDY2Nyw3MjIsNjExLDY3Nyw3ODEsNjY3LDcyOSw3MDgsOTc5LDk4OSw4NTQsMWUzLDcwOCw3MTksMTA0Miw3MjksNTU2LDYxOSw2MDQsNTM0LDYxOCw1NTYsNzM2LDUxMCw2MTEsNjExLDUwNyw2MjIsNzQwLDYwNCw2MTEsNjExLDYxMSw1NTYsODg5LDU1Niw4ODUsNTU2LDY0Niw1ODMsODg5LDkzNSw3MDcsODU0LDU5NCw1NTIsODY1LDU4OSw1NTYsNTU2LDYxMSw0NjksNTYzLDU1NiwyNzgsMjc4LDI3OCw5NjksOTA2LDYxMSw1MDcsNjE5LDU1Niw2MTEsNzc4LDYxMSw1NzUsNDY3LDk0NCw3NzgsOTQ0LDc3OCw5NDQsNzc4LDY2Nyw1NTYsMzMzLDMzMyw1NTYsMWUzLDFlMyw1NTIsMjc4LDI3OCwyNzgsMjc4LDUwMCw1MDAsNTAwLDU1Niw1NTYsMzUwLDFlMywxZTMsMjQwLDQ3OSwzMzMsMzMzLDYwNCwzMzMsMTY3LDM5Niw1NTYsNTU2LDExMDQsNTU2LDg4NSw1MTYsMTE0NiwxZTMsNzY4LDYwMCw4MzQsODM0LDgzNCw4MzQsOTk5LDUwMCwxZTMsNTAwLDFlMyw1MDAsNTAwLDQ5NCw2MTIsODIzLDcxMyw1ODQsNTQ5LDcxMyw5NzksNzIyLDI3NCw1NDksNTQ5LDU4Myw1NDksNTQ5LDYwNCw1ODQsNjA0LDYwNCw3MDgsNjI1LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcyOSw2MDQsNjA0LDM1NCwzNTQsMWUzLDk5MCw5OTAsOTkwLDk5MCw0OTQsNjA0LDYwNCw2MDQsNjA0LDM1NCwxMDIxLDEwNTIsOTE3LDc1MCw3NTAsNTMxLDY1Niw1OTQsNTEwLDUwMCw3NTAsNzUwLDYxMSw2MTEsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywyMjIsMjIyLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzNdLHFhPVstMSwtMSwtMSwzMiwzMywzNCwzNSwzNiwzNywzOCwzOSw0MCw0MSw0Miw0Myw0NCw0NSw0Niw0Nyw0OCw0OSw1MCw1MSw1Miw1Myw1NCw1NSw1Niw1Nyw1OCw1OSw2MCw2MSw2Miw2Myw2NCw2NSw2Niw2Nyw2OCw2OSw3MCw3MSw3Miw3Myw3NCw3NSw3Niw3Nyw3OCw3OSw4MCw4MSw4Miw4Myw4NCw4NSw4Niw4Nyw4OCw4OSw5MCw5MSw5Miw5Myw5NCw5NSw5Niw5Nyw5OCw5OSwxMDAsMTAxLDEwMiwxMDMsMTA0LDEwNSwxMDYsMTA3LDEwOCwxMDksMTEwLDExMSwxMTIsMTEzLDExNCwxMTUsMTE2LDExNywxMTgsMTE5LDEyMCwxMjEsMTIyLDEyMywxMjQsMTI1LDEyNiwxNjEsMTYyLDE2MywxNjQsMTY1LDE2NiwxNjcsMTY4LDE2OSwxNzAsMTcxLDE3MiwxNzQsMTc1LDE3NiwxNzcsMTc4LDE3OSwxODAsMTgxLDE4MiwxODMsMTg0LDE4NSwxODYsMTg3LDE4OCwxODksMTkwLDE5MSwxOTIsMTkzLDE5NCwxOTUsMTk2LDE5NywxOTgsMTk5LDIwMCwyMDEsMjAyLDIwMywyMDQsMjA1LDIwNiwyMDcsMjA4LDIwOSwyMTAsMjExLDIxMiwyMTMsMjE0LDIxNSwyMTYsMjE3LDIxOCwyMTksMjIwLDIyMSwyMjIsMjIzLDIyNCwyMjUsMjI2LDIyNywyMjgsMjI5LDIzMCwyMzEsMjMyLDIzMywyMzQsMjM1LDIzNiwyMzcsMjM4LDIzOSwyNDAsMjQxLDI0MiwyNDMsMjQ0LDI0NSwyNDYsMjQ3LDI0OCwyNDksMjUwLDI1MSwyNTIsMjUzLDI1NCwyNTUsMjU2LDI1NywyNTgsMjU5LDI2MCwyNjEsMjYyLDI2MywyNjQsMjY1LDI2NiwyNjcsMjY4LDI2OSwyNzAsMjcxLDI3MiwyNzMsMjc0LDI3NSwyNzYsMjc3LDI3OCwyNzksMjgwLDI4MSwyODIsMjgzLDI4NCwyODUsMjg2LDI4NywyODgsMjg5LDI5MCwyOTEsMjkyLDI5MywyOTQsMjk1LDI5NiwyOTcsMjk4LDI5OSwzMDAsMzAxLDMwMiwzMDMsMzA0LDMwNSwzMDYsMzA3LDMwOCwzMDksMzEwLDMxMSwzMTIsMzEzLDMxNCwzMTUsMzE2LDMxNywzMTgsMzE5LDMyMCwzMjEsMzIyLDMyMywzMjQsMzI1LDMyNiwzMjcsMzI4LDMyOSwzMzAsMzMxLDMzMiwzMzMsMzM0LDMzNSwzMzYsMzM3LDMzOCwzMzksMzQwLDM0MSwzNDIsMzQzLDM0NCwzNDUsMzQ2LDM0NywzNDgsMzQ5LDM1MCwzNTEsMzUyLDM1MywzNTQsMzU1LDM1NiwzNTcsMzU4LDM1OSwzNjAsMzYxLDM2MiwzNjMsMzY0LDM2NSwzNjYsMzY3LDM2OCwzNjksMzcwLDM3MSwzNzIsMzczLDM3NCwzNzUsMzc2LDM3NywzNzgsMzc5LDM4MCwzODEsMzgyLDM4Myw0MDIsNTA2LDUwNyw1MDgsNTA5LDUxMCw1MTEsNTM2LDUzNyw1MzgsNTM5LDcxMCw3MTEsNzEzLDcyOCw3MjksNzMwLDczMSw3MzIsNzMzLDkwMCw5MDEsOTAyLDkwMyw5MDQsOTA1LDkwNiw5MDgsOTEwLDkxMSw5MTIsOTEzLDkxNCw5MTUsOTE2LDkxNyw5MTgsOTE5LDkyMCw5MjEsOTIyLDkyMyw5MjQsOTI1LDkyNiw5MjcsOTI4LDkyOSw5MzEsOTMyLDkzMyw5MzQsOTM1LDkzNiw5MzcsOTM4LDkzOSw5NDAsOTQxLDk0Miw5NDMsOTQ0LDk0NSw5NDYsOTQ3LDk0OCw5NDksOTUwLDk1MSw5NTIsOTUzLDk1NCw5NTUsOTU2LDk1Nyw5NTgsOTU5LDk2MCw5NjEsOTYyLDk2Myw5NjQsOTY1LDk2Niw5NjcsOTY4LDk2OSw5NzAsOTcxLDk3Miw5NzMsOTc0LDEwMjQsMTAyNSwxMDI2LDEwMjcsMTAyOCwxMDI5LDEwMzAsMTAzMSwxMDMyLDEwMzMsMTAzNCwxMDM1LDEwMzYsMTAzNywxMDM4LDEwMzksMTA0MCwxMDQxLDEwNDIsMTA0MywxMDQ0LDEwNDUsMTA0NiwxMDQ3LDEwNDgsMTA0OSwxMDUwLDEwNTEsMTA1MiwxMDUzLDEwNTQsMTA1NSwxMDU2LDEwNTcsMTA1OCwxMDU5LDEwNjAsMTA2MSwxMDYyLDEwNjMsMTA2NCwxMDY1LDEwNjYsMTA2NywxMDY4LDEwNjksMTA3MCwxMDcxLDEwNzIsMTA3MywxMDc0LDEwNzUsMTA3NiwxMDc3LDEwNzgsMTA3OSwxMDgwLDEwODEsMTA4MiwxMDgzLDEwODQsMTA4NSwxMDg2LDEwODcsMTA4OCwxMDg5LDEwOTAsMTA5MSwxMDkyLDEwOTMsMTA5NCwxMDk1LDEwOTYsMTA5NywxMDk4LDEwOTksMTEwMCwxMTAxLDExMDIsMTEwMywxMTA0LDExMDUsMTEwNiwxMTA3LDExMDgsMTEwOSwxMTEwLDExMTEsMTExMiwxMTEzLDExMTQsMTExNSwxMTE2LDExMTcsMTExOCwxMTE5LDExMzgsMTEzOSwxMTY4LDExNjksNzgwOCw3ODA5LDc4MTAsNzgxMSw3ODEyLDc4MTMsNzkyMiw3OTIzLDgyMDgsODIwOSw4MjExLDgyMTIsODIxMyw4MjE1LDgyMTYsODIxNyw4MjE4LDgyMTksODIyMCw4MjIxLDgyMjIsODIyNCw4MjI1LDgyMjYsODIzMCw4MjQwLDgyNDIsODI0Myw4MjQ5LDgyNTAsODI1Miw4MjU0LDgyNjAsODMxOSw4MzU1LDgzNTYsODM1OSw4MzY0LDg0NTMsODQ2Nyw4NDcwLDg0ODIsODQ4Niw4NDk0LDg1MzksODU0MCw4NTQxLDg1NDIsODU5Miw4NTkzLDg1OTQsODU5NSw4NTk2LDg1OTcsODYxNiw4NzA2LDg3MTAsODcxOSw4NzIxLDg3MjIsODczMCw4NzM0LDg3MzUsODc0NSw4NzQ3LDg3NzYsODgwMCw4ODAxLDg4MDQsODgwNSw4OTYyLDg5NzYsODk5Miw4OTkzLDk0NzIsOTQ3NCw5NDg0LDk0ODgsOTQ5Miw5NDk2LDk1MDAsOTUwOCw5NTE2LDk1MjQsOTUzMiw5NTUyLDk1NTMsOTU1NCw5NTU1LDk1NTYsOTU1Nyw5NTU4LDk1NTksOTU2MCw5NTYxLDk1NjIsOTU2Myw5NTY0LDk1NjUsOTU2Niw5NTY3LDk1NjgsOTU2OSw5NTcwLDk1NzEsOTU3Miw5NTczLDk1NzQsOTU3NSw5NTc2LDk1NzcsOTU3OCw5NTc5LDk1ODAsOTYwMCw5NjA0LDk2MDgsOTYxMiw5NjE2LDk2MTcsOTYxOCw5NjE5LDk2MzIsOTYzMyw5NjQyLDk2NDMsOTY0NCw5NjUwLDk2NTgsOTY2MCw5NjY4LDk2NzQsOTY3NSw5Njc5LDk2ODgsOTY4OSw5NzAyLDk3ODYsOTc4Nyw5Nzg4LDk3OTIsOTc5NCw5ODI0LDk4MjcsOTgyOSw5ODMwLDk4MzQsOTgzNSw5ODM2LDYxNDQxLDYxNDQyLDYxNDQ1LC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xXSxPYT1bMzY1LDAsMzMzLDI3OCwyNzgsMzU1LDU1Niw1NTYsODg5LDY2NywxOTEsMzMzLDMzMywzODksNTg0LDI3OCwzMzMsMjc4LDI3OCw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsMjc4LDI3OCw1ODQsNTg0LDU4NCw1NTYsMTAxNSw2NjcsNjY3LDcyMiw3MjIsNjY3LDYxMSw3NzgsNzIyLDI3OCw1MDAsNjY3LDU1Niw4MzMsNzIyLDc3OCw2NjcsNzc4LDcyMiw2NjcsNjExLDcyMiw2NjcsOTQ0LDY2Nyw2NjcsNjExLDI3OCwyNzgsMjc4LDQ2OSw1NTYsMzMzLDU1Niw1NTYsNTAwLDU1Niw1NTYsMjc4LDU1Niw1NTYsMjIyLDIyMiw1MDAsMjIyLDgzMyw1NTYsNTU2LDU1Niw1NTYsMzMzLDUwMCwyNzgsNTU2LDUwMCw3MjIsNTAwLDUwMCw1MDAsMzM0LDI2MCwzMzQsNTg0LDMzMyw1NTYsNTU2LDU1Niw1NTYsMjYwLDU1NiwzMzMsNzM3LDM3MCw1NTYsNTg0LDczNyw1NTIsNDAwLDU0OSwzMzMsMzMzLDMzMyw1NzYsNTM3LDI3OCwzMzMsMzMzLDM2NSw1NTYsODM0LDgzNCw4MzQsNjExLDY2Nyw2NjcsNjY3LDY2Nyw2NjcsNjY3LDFlMyw3MjIsNjY3LDY2Nyw2NjcsNjY3LDI3OCwyNzgsMjc4LDI3OCw3MjIsNzIyLDc3OCw3NzgsNzc4LDc3OCw3NzgsNTg0LDc3OCw3MjIsNzIyLDcyMiw3MjIsNjY3LDY2Nyw2MTEsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsODg5LDUwMCw1NTYsNTU2LDU1Niw1NTYsMjc4LDI3OCwyNzgsMjc4LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NDksNjExLDU1Niw1NTYsNTU2LDU1Niw1MDAsNTU2LDUwMCw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw3MjIsNTAwLDcyMiw1MDAsNzIyLDUwMCw3MjIsNTAwLDcyMiw2MjUsNzIyLDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNzc4LDU1Niw3NzgsNTU2LDc3OCw1NTYsNzc4LDU1Niw3MjIsNTU2LDcyMiw1NTYsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDIyMiwyNzgsMjc4LDczMyw0NDQsNTAwLDIyMiw2NjcsNTAwLDUwMCw1NTYsMjIyLDU1NiwyMjIsNTU2LDI4MSw1NTYsNDAwLDU1NiwyMjIsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNjE1LDcyMyw1NTYsNzc4LDU1Niw3NzgsNTU2LDc3OCw1NTYsMWUzLDk0NCw3MjIsMzMzLDcyMiwzMzMsNzIyLDMzMyw2NjcsNTAwLDY2Nyw1MDAsNjY3LDUwMCw2NjcsNTAwLDYxMSwyNzgsNjExLDM1NCw2MTEsMjc4LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDk0NCw3MjIsNjY3LDUwMCw2NjcsNjExLDUwMCw2MTEsNTAwLDYxMSw1MDAsMjIyLDU1Niw2NjcsNTU2LDFlMyw4ODksNzc4LDYxMSw2NjcsNTAwLDYxMSwyNzgsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMyw2NjcsMjc4LDc4OSw4NDYsMzg5LDc5NCw4NjUsNzc1LDIyMiw2NjcsNjY3LDU3MCw2NzEsNjY3LDYxMSw3MjIsNzc4LDI3OCw2NjcsNjY3LDgzMyw3MjIsNjQ4LDc3OCw3MjUsNjY3LDYwMCw2MTEsNjY3LDgzNyw2NjcsODMxLDc2MSwyNzgsNjY3LDU3MCw0MzksNTU1LDIyMiw1NTAsNTcwLDU3MSw1MDAsNTU2LDQzOSw0NjMsNTU1LDU0MiwyMjIsNTAwLDQ5Miw1NDgsNTAwLDQ0Nyw1NTYsNjcwLDU3Myw0ODYsNjAzLDM3NCw1NTAsNjUyLDU0Niw3MjgsNzc5LDIyMiw1NTAsNTU2LDU1MCw3NzksNjY3LDY2Nyw4NDMsNTQ0LDcwOCw2NjcsMjc4LDI3OCw1MDAsMTA2Niw5ODIsODQ0LDU4OSw3MTUsNjM5LDcyNCw2NjcsNjUxLDY2Nyw1NDQsNzA0LDY2Nyw5MTcsNjE0LDcxNSw3MTUsNTg5LDY4Niw4MzMsNzIyLDc3OCw3MjUsNjY3LDcyMiw2MTEsNjM5LDc5NSw2NjcsNzI3LDY3Myw5MjAsOTIzLDgwNSw4ODYsNjUxLDY5NCwxMDIyLDY4Miw1NTYsNTYyLDUyMiw0OTMsNTUzLDU1Niw2ODgsNDY1LDU1Niw1NTYsNDcyLDU2NCw2ODYsNTUwLDU1Niw1NTYsNTU2LDUwMCw4MzMsNTAwLDgzNSw1MDAsNTcyLDUxOCw4MzAsODUxLDYyMSw3MzYsNTI2LDQ5Miw3NTIsNTM0LDU1Niw1NTYsNTU2LDM3OCw0OTYsNTAwLDIyMiwyMjIsMjIyLDkxMCw4MjgsNTU2LDQ3Miw1NjUsNTAwLDU1Niw3NzgsNTU2LDQ5MiwzMzksOTQ0LDcyMiw5NDQsNzIyLDk0NCw3MjIsNjY3LDUwMCwzMzMsMzMzLDU1NiwxZTMsMWUzLDU1MiwyMjIsMjIyLDIyMiwyMjIsMzMzLDMzMywzMzMsNTU2LDU1NiwzNTAsMWUzLDFlMywxODgsMzU0LDMzMywzMzMsNTAwLDMzMywxNjcsMzY1LDU1Niw1NTYsMTA5NCw1NTYsODg1LDMyMywxMDgzLDFlMyw3NjgsNjAwLDgzNCw4MzQsODM0LDgzNCwxZTMsNTAwLDk5OCw1MDAsMWUzLDUwMCw1MDAsNDk0LDYxMiw4MjMsNzEzLDU4NCw1NDksNzEzLDk3OSw3MTksMjc0LDU0OSw1NDksNTg0LDU0OSw1NDksNjA0LDU4NCw2MDQsNjA0LDcwOCw2MjUsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzI5LDYwNCw2MDQsMzU0LDM1NCwxZTMsOTkwLDk5MCw5OTAsOTkwLDQ5NCw2MDQsNjA0LDYwNCw2MDQsMzU0LDEwMjEsMTA1Miw5MTcsNzUwLDc1MCw1MzEsNjU2LDU5NCw1MTAsNTAwLDc1MCw3NTAsNTAwLDUwMCwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDIyMiwyMjIsMjk0LDI5NCwzMjQsMzI0LDMxNiwzMjgsMzk4LDI4NV0sUGE9Wy0xLC0xLC0xLDMyLDMzLDM0LDM1LDM2LDM3LDM4LDM5LDQwLDQxLDQyLDQzLDQ0LDQ1LDQ2LDQ3LDQ4LDQ5LDUwLDUxLDUyLDUzLDU0LDU1LDU2LDU3LDU4LDU5LDYwLDYxLDYyLDYzLDY0LDY1LDY2LDY3LDY4LDY5LDcwLDcxLDcyLDczLDc0LDc1LDc2LDc3LDc4LDc5LDgwLDgxLDgyLDgzLDg0LDg1LDg2LDg3LDg4LDg5LDkwLDkxLDkyLDkzLDk0LDk1LDk2LDk3LDk4LDk5LDEwMCwxMDEsMTAyLDEwMywxMDQsMTA1LDEwNiwxMDcsMTA4LDEwOSwxMTAsMTExLDExMiwxMTMsMTE0LDExNSwxMTYsMTE3LDExOCwxMTksMTIwLDEyMSwxMjIsMTIzLDEyNCwxMjUsMTI2LDE2MSwxNjIsMTYzLDE2NCwxNjUsMTY2LDE2NywxNjgsMTY5LDE3MCwxNzEsMTcyLDE3NCwxNzUsMTc2LDE3NywxNzgsMTc5LDE4MCwxODEsMTgyLDE4MywxODQsMTg1LDE4NiwxODcsMTg4LDE4OSwxOTAsMTkxLDE5MiwxOTMsMTk0LDE5NSwxOTYsMTk3LDE5OCwxOTksMjAwLDIwMSwyMDIsMjAzLDIwNCwyMDUsMjA2LDIwNywyMDgsMjA5LDIxMCwyMTEsMjEyLDIxMywyMTQsMjE1LDIxNiwyMTcsMjE4LDIxOSwyMjAsMjIxLDIyMiwyMjMsMjI0LDIyNSwyMjYsMjI3LDIyOCwyMjksMjMwLDIzMSwyMzIsMjMzLDIzNCwyMzUsMjM2LDIzNywyMzgsMjM5LDI0MCwyNDEsMjQyLDI0MywyNDQsMjQ1LDI0NiwyNDcsMjQ4LDI0OSwyNTAsMjUxLDI1MiwyNTMsMjU0LDI1NSwyNTYsMjU3LDI1OCwyNTksMjYwLDI2MSwyNjIsMjYzLDI2NCwyNjUsMjY2LDI2NywyNjgsMjY5LDI3MCwyNzEsMjcyLDI3MywyNzQsMjc1LDI3NiwyNzcsMjc4LDI3OSwyODAsMjgxLDI4MiwyODMsMjg0LDI4NSwyODYsMjg3LDI4OCwyODksMjkwLDI5MSwyOTIsMjkzLDI5NCwyOTUsMjk2LDI5NywyOTgsMjk5LDMwMCwzMDEsMzAyLDMwMywzMDQsMzA1LDMwNiwzMDcsMzA4LDMwOSwzMTAsMzExLDMxMiwzMTMsMzE0LDMxNSwzMTYsMzE3LDMxOCwzMTksMzIwLDMyMSwzMjIsMzIzLDMyNCwzMjUsMzI2LDMyNywzMjgsMzI5LDMzMCwzMzEsMzMyLDMzMywzMzQsMzM1LDMzNiwzMzcsMzM4LDMzOSwzNDAsMzQxLDM0MiwzNDMsMzQ0LDM0NSwzNDYsMzQ3LDM0OCwzNDksMzUwLDM1MSwzNTIsMzUzLDM1NCwzNTUsMzU2LDM1NywzNTgsMzU5LDM2MCwzNjEsMzYyLDM2MywzNjQsMzY1LDM2NiwzNjcsMzY4LDM2OSwzNzAsMzcxLDM3MiwzNzMsMzc0LDM3NSwzNzYsMzc3LDM3OCwzNzksMzgwLDM4MSwzODIsMzgzLDQwMiw1MDYsNTA3LDUwOCw1MDksNTEwLDUxMSw1MzYsNTM3LDUzOCw1MzksNzEwLDcxMSw3MTMsNzI4LDcyOSw3MzAsNzMxLDczMiw3MzMsOTAwLDkwMSw5MDIsOTAzLDkwNCw5MDUsOTA2LDkwOCw5MTAsOTExLDkxMiw5MTMsOTE0LDkxNSw5MTYsOTE3LDkxOCw5MTksOTIwLDkyMSw5MjIsOTIzLDkyNCw5MjUsOTI2LDkyNyw5MjgsOTI5LDkzMSw5MzIsOTMzLDkzNCw5MzUsOTM2LDkzNyw5MzgsOTM5LDk0MCw5NDEsOTQyLDk0Myw5NDQsOTQ1LDk0Niw5NDcsOTQ4LDk0OSw5NTAsOTUxLDk1Miw5NTMsOTU0LDk1NSw5NTYsOTU3LDk1OCw5NTksOTYwLDk2MSw5NjIsOTYzLDk2NCw5NjUsOTY2LDk2Nyw5NjgsOTY5LDk3MCw5NzEsOTcyLDk3Myw5NzQsMTAyNCwxMDI1LDEwMjYsMTAyNywxMDI4LDEwMjksMTAzMCwxMDMxLDEwMzIsMTAzMywxMDM0LDEwMzUsMTAzNiwxMDM3LDEwMzgsMTAzOSwxMDQwLDEwNDEsMTA0MiwxMDQzLDEwNDQsMTA0NSwxMDQ2LDEwNDcsMTA0OCwxMDQ5LDEwNTAsMTA1MSwxMDUyLDEwNTMsMTA1NCwxMDU1LDEwNTYsMTA1NywxMDU4LDEwNTksMTA2MCwxMDYxLDEwNjIsMTA2MywxMDY0LDEwNjUsMTA2NiwxMDY3LDEwNjgsMTA2OSwxMDcwLDEwNzEsMTA3MiwxMDczLDEwNzQsMTA3NSwxMDc2LDEwNzcsMTA3OCwxMDc5LDEwODAsMTA4MSwxMDgyLDEwODMsMTA4NCwxMDg1LDEwODYsMTA4NywxMDg4LDEwODksMTA5MCwxMDkxLDEwOTIsMTA5MywxMDk0LDEwOTUsMTA5NiwxMDk3LDEwOTgsMTA5OSwxMTAwLDExMDEsMTEwMiwxMTAzLDExMDQsMTEwNSwxMTA2LDExMDcsMTEwOCwxMTA5LDExMTAsMTExMSwxMTEyLDExMTMsMTExNCwxMTE1LDExMTYsMTExNywxMTE4LDExMTksMTEzOCwxMTM5LDExNjgsMTE2OSw3ODA4LDc4MDksNzgxMCw3ODExLDc4MTIsNzgxMyw3OTIyLDc5MjMsODIwOCw4MjA5LDgyMTEsODIxMiw4MjEzLDgyMTUsODIxNiw4MjE3LDgyMTgsODIxOSw4MjIwLDgyMjEsODIyMiw4MjI0LDgyMjUsODIyNiw4MjMwLDgyNDAsODI0Miw4MjQzLDgyNDksODI1MCw4MjUyLDgyNTQsODI2MCw4MzE5LDgzNTUsODM1Niw4MzU5LDgzNjQsODQ1Myw4NDY3LDg0NzAsODQ4Miw4NDg2LDg0OTQsODUzOSw4NTQwLDg1NDEsODU0Miw4NTkyLDg1OTMsODU5NCw4NTk1LDg1OTYsODU5Nyw4NjE2LDg3MDYsODcxMCw4NzE5LDg3MjEsODcyMiw4NzMwLDg3MzQsODczNSw4NzQ1LDg3NDcsODc3Niw4ODAwLDg4MDEsODgwNCw4ODA1LDg5NjIsODk3Niw4OTkyLDg5OTMsOTQ3Miw5NDc0LDk0ODQsOTQ4OCw5NDkyLDk0OTYsOTUwMCw5NTA4LDk1MTYsOTUyNCw5NTMyLDk1NTIsOTU1Myw5NTU0LDk1NTUsOTU1Niw5NTU3LDk1NTgsOTU1OSw5NTYwLDk1NjEsOTU2Miw5NTYzLDk1NjQsOTU2NSw5NTY2LDk1NjcsOTU2OCw5NTY5LDk1NzAsOTU3MSw5NTcyLDk1NzMsOTU3NCw5NTc1LDk1NzYsOTU3Nyw5NTc4LDk1NzksOTU4MCw5NjAwLDk2MDQsOTYwOCw5NjEyLDk2MTYsOTYxNyw5NjE4LDk2MTksOTYzMiw5NjMzLDk2NDIsOTY0Myw5NjQ0LDk2NTAsOTY1OCw5NjYwLDk2NjgsOTY3NCw5Njc1LDk2NzksOTY4OCw5Njg5LDk3MDIsOTc4Niw5Nzg3LDk3ODgsOTc5Miw5Nzk0LDk4MjQsOTgyNyw5ODI5LDk4MzAsOTgzNCw5ODM1LDk4MzYsNjE0NDEsNjE0NDIsNjE0NDUsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTFdLFdhPVszNjUsMCwzMzMsMjc4LDI3OCwzNTUsNTU2LDU1Niw4ODksNjY3LDE5MSwzMzMsMzMzLDM4OSw1ODQsMjc4LDMzMywyNzgsMjc4LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1NiwyNzgsMjc4LDU4NCw1ODQsNTg0LDU1NiwxMDE1LDY2Nyw2NjcsNzIyLDcyMiw2NjcsNjExLDc3OCw3MjIsMjc4LDUwMCw2NjcsNTU2LDgzMyw3MjIsNzc4LDY2Nyw3NzgsNzIyLDY2Nyw2MTEsNzIyLDY2Nyw5NDQsNjY3LDY2Nyw2MTEsMjc4LDI3OCwyNzgsNDY5LDU1NiwzMzMsNTU2LDU1Niw1MDAsNTU2LDU1NiwyNzgsNTU2LDU1NiwyMjIsMjIyLDUwMCwyMjIsODMzLDU1Niw1NTYsNTU2LDU1NiwzMzMsNTAwLDI3OCw1NTYsNTAwLDcyMiw1MDAsNTAwLDUwMCwzMzQsMjYwLDMzNCw1ODQsMzMzLDU1Niw1NTYsNTU2LDU1NiwyNjAsNTU2LDMzMyw3MzcsMzcwLDU1Niw1ODQsNzM3LDU1Miw0MDAsNTQ5LDMzMywzMzMsMzMzLDU3Niw1MzcsMjc4LDMzMywzMzMsMzY1LDU1Niw4MzQsODM0LDgzNCw2MTEsNjY3LDY2Nyw2NjcsNjY3LDY2Nyw2NjcsMWUzLDcyMiw2NjcsNjY3LDY2Nyw2NjcsMjc4LDI3OCwyNzgsMjc4LDcyMiw3MjIsNzc4LDc3OCw3NzgsNzc4LDc3OCw1ODQsNzc4LDcyMiw3MjIsNzIyLDcyMiw2NjcsNjY3LDYxMSw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw4ODksNTAwLDU1Niw1NTYsNTU2LDU1NiwyNzgsMjc4LDI3OCwyNzgsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU0OSw2MTEsNTU2LDU1Niw1NTYsNTU2LDUwMCw1NTYsNTAwLDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDcyMiw1MDAsNzIyLDUwMCw3MjIsNTAwLDcyMiw1MDAsNzIyLDYxNSw3MjIsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw3NzgsNTU2LDc3OCw1NTYsNzc4LDU1Niw3NzgsNTU2LDcyMiw1NTYsNzIyLDU1NiwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjIyLDI3OCwyNzgsNzM1LDQ0NCw1MDAsMjIyLDY2Nyw1MDAsNTAwLDU1NiwyMjIsNTU2LDIyMiw1NTYsMjkyLDU1NiwzMzQsNTU2LDIyMiw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw2MDQsNzIzLDU1Niw3NzgsNTU2LDc3OCw1NTYsNzc4LDU1NiwxZTMsOTQ0LDcyMiwzMzMsNzIyLDMzMyw3MjIsMzMzLDY2Nyw1MDAsNjY3LDUwMCw2NjcsNTAwLDY2Nyw1MDAsNjExLDI3OCw2MTEsMzc1LDYxMSwyNzgsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsOTQ0LDcyMiw2NjcsNTAwLDY2Nyw2MTEsNTAwLDYxMSw1MDAsNjExLDUwMCwyMjIsNTU2LDY2Nyw1NTYsMWUzLDg4OSw3NzgsNjExLDY2Nyw1MDAsNjExLDI3OCwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDY2NywyNzgsNzg0LDgzOCwzODQsNzc0LDg1NSw3NTIsMjIyLDY2Nyw2NjcsNTUxLDY2OCw2NjcsNjExLDcyMiw3NzgsMjc4LDY2Nyw2NjgsODMzLDcyMiw2NTAsNzc4LDcyMiw2NjcsNjE4LDYxMSw2NjcsNzk4LDY2Nyw4MzUsNzQ4LDI3OCw2NjcsNTc4LDQ0Niw1NTYsMjIyLDU0Nyw1NzgsNTc1LDUwMCw1NTcsNDQ2LDQ0MSw1NTYsNTU2LDIyMiw1MDAsNTAwLDU3Niw1MDAsNDQ4LDU1Niw2OTAsNTY5LDQ4Miw2MTcsMzk1LDU0Nyw2NDgsNTI1LDcxMyw3ODEsMjIyLDU0Nyw1NTYsNTQ3LDc4MSw2NjcsNjY3LDg2NSw1NDIsNzE5LDY2NywyNzgsMjc4LDUwMCwxMDU3LDEwMTAsODU0LDU4Myw3MjIsNjM1LDcxOSw2NjcsNjU2LDY2Nyw1NDIsNjc3LDY2Nyw5MjMsNjA0LDcxOSw3MTksNTgzLDY1Niw4MzMsNzIyLDc3OCw3MTksNjY3LDcyMiw2MTEsNjM1LDc2MCw2NjcsNzQwLDY2Nyw5MTcsOTM4LDc5Miw4ODUsNjU2LDcxOSwxMDEwLDcyMiw1NTYsNTczLDUzMSwzNjUsNTgzLDU1Niw2NjksNDU4LDU1OSw1NTksNDM4LDU4Myw2ODgsNTUyLDU1Niw1NDIsNTU2LDUwMCw0NTgsNTAwLDgyMyw1MDAsNTczLDUyMSw4MDIsODIzLDYyNSw3MTksNTIxLDUxMCw3NTAsNTQyLDU1Niw1NTYsNTU2LDM2NSw1MTAsNTAwLDIyMiwyNzgsMjIyLDkwNiw4MTIsNTU2LDQzOCw1NTksNTAwLDU1Miw3NzgsNTU2LDQ4OSw0MTEsOTQ0LDcyMiw5NDQsNzIyLDk0NCw3MjIsNjY3LDUwMCwzMzMsMzMzLDU1NiwxZTMsMWUzLDU1MiwyMjIsMjIyLDIyMiwyMjIsMzMzLDMzMywzMzMsNTU2LDU1NiwzNTAsMWUzLDFlMywxODgsMzU0LDMzMywzMzMsNTAwLDMzMywxNjcsMzY1LDU1Niw1NTYsMTA5NCw1NTYsODg1LDMyMywxMDczLDFlMyw3NjgsNjAwLDgzNCw4MzQsODM0LDgzNCwxZTMsNTAwLDFlMyw1MDAsMWUzLDUwMCw1MDAsNDk0LDYxMiw4MjMsNzEzLDU4NCw1NDksNzEzLDk3OSw3MTksMjc0LDU0OSw1NDksNTgzLDU0OSw1NDksNjA0LDU4NCw2MDQsNjA0LDcwOCw2MjUsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzI5LDYwNCw2MDQsMzU0LDM1NCwxZTMsOTkwLDk5MCw5OTAsOTkwLDQ5NCw2MDQsNjA0LDYwNCw2MDQsMzU0LDEwMjEsMTA1Miw5MTcsNzUwLDc1MCw1MzEsNjU2LDU5NCw1MTAsNTAwLDc1MCw3NTAsNTAwLDUwMCwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDIyMiwyMjIsMjk0LDI5NCwzMjQsMzI0LDMxNiwzMjgsMzk4LDI4NV0samE9Wy0xLC0xLC0xLDMyLDMzLDM0LDM1LDM2LDM3LDM4LDM5LDQwLDQxLDQyLDQzLDQ0LDQ1LDQ2LDQ3LDQ4LDQ5LDUwLDUxLDUyLDUzLDU0LDU1LDU2LDU3LDU4LDU5LDYwLDYxLDYyLDYzLDY0LDY1LDY2LDY3LDY4LDY5LDcwLDcxLDcyLDczLDc0LDc1LDc2LDc3LDc4LDc5LDgwLDgxLDgyLDgzLDg0LDg1LDg2LDg3LDg4LDg5LDkwLDkxLDkyLDkzLDk0LDk1LDk2LDk3LDk4LDk5LDEwMCwxMDEsMTAyLDEwMywxMDQsMTA1LDEwNiwxMDcsMTA4LDEwOSwxMTAsMTExLDExMiwxMTMsMTE0LDExNSwxMTYsMTE3LDExOCwxMTksMTIwLDEyMSwxMjIsMTIzLDEyNCwxMjUsMTI2LDE2MSwxNjIsMTYzLDE2NCwxNjUsMTY2LDE2NywxNjgsMTY5LDE3MCwxNzEsMTcyLDE3NCwxNzUsMTc2LDE3NywxNzgsMTc5LDE4MCwxODEsMTgyLDE4MywxODQsMTg1LDE4NiwxODcsMTg4LDE4OSwxOTAsMTkxLDE5MiwxOTMsMTk0LDE5NSwxOTYsMTk3LDE5OCwxOTksMjAwLDIwMSwyMDIsMjAzLDIwNCwyMDUsMjA2LDIwNywyMDgsMjA5LDIxMCwyMTEsMjEyLDIxMywyMTQsMjE1LDIxNiwyMTcsMjE4LDIxOSwyMjAsMjIxLDIyMiwyMjMsMjI0LDIyNSwyMjYsMjI3LDIyOCwyMjksMjMwLDIzMSwyMzIsMjMzLDIzNCwyMzUsMjM2LDIzNywyMzgsMjM5LDI0MCwyNDEsMjQyLDI0MywyNDQsMjQ1LDI0NiwyNDcsMjQ4LDI0OSwyNTAsMjUxLDI1MiwyNTMsMjU0LDI1NSwyNTYsMjU3LDI1OCwyNTksMjYwLDI2MSwyNjIsMjYzLDI2NCwyNjUsMjY2LDI2NywyNjgsMjY5LDI3MCwyNzEsMjcyLDI3MywyNzQsMjc1LDI3NiwyNzcsMjc4LDI3OSwyODAsMjgxLDI4MiwyODMsMjg0LDI4NSwyODYsMjg3LDI4OCwyODksMjkwLDI5MSwyOTIsMjkzLDI5NCwyOTUsMjk2LDI5NywyOTgsMjk5LDMwMCwzMDEsMzAyLDMwMywzMDQsMzA1LDMwNiwzMDcsMzA4LDMwOSwzMTAsMzExLDMxMiwzMTMsMzE0LDMxNSwzMTYsMzE3LDMxOCwzMTksMzIwLDMyMSwzMjIsMzIzLDMyNCwzMjUsMzI2LDMyNywzMjgsMzI5LDMzMCwzMzEsMzMyLDMzMywzMzQsMzM1LDMzNiwzMzcsMzM4LDMzOSwzNDAsMzQxLDM0MiwzNDMsMzQ0LDM0NSwzNDYsMzQ3LDM0OCwzNDksMzUwLDM1MSwzNTIsMzUzLDM1NCwzNTUsMzU2LDM1NywzNTgsMzU5LDM2MCwzNjEsMzYyLDM2MywzNjQsMzY1LDM2NiwzNjcsMzY4LDM2OSwzNzAsMzcxLDM3MiwzNzMsMzc0LDM3NSwzNzYsMzc3LDM3OCwzNzksMzgwLDM4MSwzODIsMzgzLDQwMiw1MDYsNTA3LDUwOCw1MDksNTEwLDUxMSw1MzYsNTM3LDUzOCw1MzksNzEwLDcxMSw3MTMsNzI4LDcyOSw3MzAsNzMxLDczMiw3MzMsOTAwLDkwMSw5MDIsOTAzLDkwNCw5MDUsOTA2LDkwOCw5MTAsOTExLDkxMiw5MTMsOTE0LDkxNSw5MTYsOTE3LDkxOCw5MTksOTIwLDkyMSw5MjIsOTIzLDkyNCw5MjUsOTI2LDkyNyw5MjgsOTI5LDkzMSw5MzIsOTMzLDkzNCw5MzUsOTM2LDkzNyw5MzgsOTM5LDk0MCw5NDEsOTQyLDk0Myw5NDQsOTQ1LDk0Niw5NDcsOTQ4LDk0OSw5NTAsOTUxLDk1Miw5NTMsOTU0LDk1NSw5NTYsOTU3LDk1OCw5NTksOTYwLDk2MSw5NjIsOTYzLDk2NCw5NjUsOTY2LDk2Nyw5NjgsOTY5LDk3MCw5NzEsOTcyLDk3Myw5NzQsMTAyNCwxMDI1LDEwMjYsMTAyNywxMDI4LDEwMjksMTAzMCwxMDMxLDEwMzIsMTAzMywxMDM0LDEwMzUsMTAzNiwxMDM3LDEwMzgsMTAzOSwxMDQwLDEwNDEsMTA0MiwxMDQzLDEwNDQsMTA0NSwxMDQ2LDEwNDcsMTA0OCwxMDQ5LDEwNTAsMTA1MSwxMDUyLDEwNTMsMTA1NCwxMDU1LDEwNTYsMTA1NywxMDU4LDEwNTksMTA2MCwxMDYxLDEwNjIsMTA2MywxMDY0LDEwNjUsMTA2NiwxMDY3LDEwNjgsMTA2OSwxMDcwLDEwNzEsMTA3MiwxMDczLDEwNzQsMTA3NSwxMDc2LDEwNzcsMTA3OCwxMDc5LDEwODAsMTA4MSwxMDgyLDEwODMsMTA4NCwxMDg1LDEwODYsMTA4NywxMDg4LDEwODksMTA5MCwxMDkxLDEwOTIsMTA5MywxMDk0LDEwOTUsMTA5NiwxMDk3LDEwOTgsMTA5OSwxMTAwLDExMDEsMTEwMiwxMTAzLDExMDQsMTEwNSwxMTA2LDExMDcsMTEwOCwxMTA5LDExMTAsMTExMSwxMTEyLDExMTMsMTExNCwxMTE1LDExMTYsMTExNywxMTE4LDExMTksMTEzOCwxMTM5LDExNjgsMTE2OSw3ODA4LDc4MDksNzgxMCw3ODExLDc4MTIsNzgxMyw3OTIyLDc5MjMsODIwOCw4MjA5LDgyMTEsODIxMiw4MjEzLDgyMTUsODIxNiw4MjE3LDgyMTgsODIxOSw4MjIwLDgyMjEsODIyMiw4MjI0LDgyMjUsODIyNiw4MjMwLDgyNDAsODI0Miw4MjQzLDgyNDksODI1MCw4MjUyLDgyNTQsODI2MCw4MzE5LDgzNTUsODM1Niw4MzU5LDgzNjQsODQ1Myw4NDY3LDg0NzAsODQ4Miw4NDg2LDg0OTQsODUzOSw4NTQwLDg1NDEsODU0Miw4NTkyLDg1OTMsODU5NCw4NTk1LDg1OTYsODU5Nyw4NjE2LDg3MDYsODcxMCw4NzE5LDg3MjEsODcyMiw4NzMwLDg3MzQsODczNSw4NzQ1LDg3NDcsODc3Niw4ODAwLDg4MDEsODgwNCw4ODA1LDg5NjIsODk3Niw4OTkyLDg5OTMsOTQ3Miw5NDc0LDk0ODQsOTQ4OCw5NDkyLDk0OTYsOTUwMCw5NTA4LDk1MTYsOTUyNCw5NTMyLDk1NTIsOTU1Myw5NTU0LDk1NTUsOTU1Niw5NTU3LDk1NTgsOTU1OSw5NTYwLDk1NjEsOTU2Miw5NTYzLDk1NjQsOTU2NSw5NTY2LDk1NjcsOTU2OCw5NTY5LDk1NzAsOTU3MSw5NTcyLDk1NzMsOTU3NCw5NTc1LDk1NzYsOTU3Nyw5NTc4LDk1NzksOTU4MCw5NjAwLDk2MDQsOTYwOCw5NjEyLDk2MTYsOTYxNyw5NjE4LDk2MTksOTYzMiw5NjMzLDk2NDIsOTY0Myw5NjQ0LDk2NTAsOTY1OCw5NjYwLDk2NjgsOTY3NCw5Njc1LDk2NzksOTY4OCw5Njg5LDk3MDIsOTc4Niw5Nzg3LDk3ODgsOTc5Miw5Nzk0LDk4MjQsOTgyNyw5ODI5LDk4MzAsOTgzNCw5ODM1LDk4MzYsNjE0NDEsNjE0NDIsNjE0NDUsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTFdLFhhPVsxLjM2ODk4LDEsMSwuNzI3MDYsLjgwNDc5LC44MzczNCwuOTg4OTQsLjk5NzkzLC45ODk3LC45Mzg4NCwuODYyMDksLjk0MjkyLC45NDI5MiwxLjE2NjYxLDEuMDIwNTgsLjkzNTgyLC45NjY5NCwuOTM1ODIsMS4xOTEzNywuOTk3OTMsLjk5NzkzLC45OTc5MywuOTk3OTMsLjk5NzkzLC45OTc5MywuOTk3OTMsLjk5NzkzLC45OTc5MywuOTk3OTMsLjc4MDc2LC43ODA3NiwxLjAyMDU4LDEuMDIwNTgsMS4wMjA1OCwuNzI4NTEsLjc4OTY2LC45MDgzOCwuODM2MzcsLjgyMzkxLC45NjM3NiwuODAwNjEsLjg2Mjc1LC44NzY4LC45NTQwNywxLjAyNTgsLjczOTAxLC44NTAyMiwuODM2NTUsMS4wMTU2LC45NTU0NiwuOTIxNzksLjg3MTA3LC45MjE3OSwuODIxMTQsLjgwOTYsLjg5NzEzLC45NDQzOCwuOTUzNTMsLjk0MDgzLC45MTkwNSwuOTA0MDYsLjk0NDYsLjk0MjkyLDEuMTg3NzcsLjk0MjkyLDEuMDIwNTgsLjg5OTAzLC45MDA4OCwuOTQ5MzgsLjk3ODk4LC44MTA5MywuOTc1NzEsLjk0OTM4LDEuMDI0LC45NTc3LC45NTkzMywuOTg2MjEsMS4wNDc0LC45NzQ1NSwuOTg5ODEsLjk2NzIsLjk1OTMzLC45NDQ2LC45Nzg5OCwuOTc0MDcsLjk3NjQ2LC43ODAzNiwxLjEwMjA4LC45NTQ0MiwuOTUyOTgsLjk3NTc5LC45MzMyLC45NDAzOSwuOTM4LC44MDY4NywxLjAxMTQ5LC44MDY4NywxLjAyMDU4LC44MDQ3OSwuOTk3OTMsLjk5NzkzLC45OTc5MywuOTk3OTMsMS4wMTE0OSwxLjAwODcyLC45MDA4OCwuOTE4ODIsMS4wMjEzLC44MzYxLDEuMDIwNTgsLjYyMjk1LC41NDMyNCwuODkwMjIsMS4wODU5NSwxLDEsLjkwMDg4LDEsLjk3NDU1LC45MzU4MiwuOTAwODgsMSwxLjA1Njg2LC44MzYxLC45OTY0MiwuOTk2NDIsLjk5NjQyLC43Mjg1MSwuOTA4MzgsLjkwODM4LC45MDgzOCwuOTA4MzgsLjkwODM4LC45MDgzOCwuODY4LC44MjM5MSwuODAwNjEsLjgwMDYxLC44MDA2MSwuODAwNjEsMS4wMjU4LDEuMDI1OCwxLjAyNTgsMS4wMjU4LC45NzQ4NCwuOTU1NDYsLjkyMTc5LC45MjE3OSwuOTIxNzksLjkyMTc5LC45MjE3OSwxLjAyMDU4LC45MjE3OSwuOTQ0MzgsLjk0NDM4LC45NDQzOCwuOTQ0MzgsLjkwNDA2LC44Njk1OCwuOTgyMjUsLjk0OTM4LC45NDkzOCwuOTQ5MzgsLjk0OTM4LC45NDkzOCwuOTQ5MzgsLjkwMzEsLjgxMDkzLC45NDkzOCwuOTQ5MzgsLjk0OTM4LC45NDkzOCwuOTg2MjEsLjk4NjIxLC45ODYyMSwuOTg2MjEsLjkzOTY5LC45NTkzMywuOTQ0NiwuOTQ0NiwuOTQ0NiwuOTQ0NiwuOTQ0NiwxLjA4NTk1LC45NDQ2LC45NTQ0MiwuOTU0NDIsLjk1NDQyLC45NTQ0MiwuOTQwMzksLjk3ODk4LC45NDAzOSwuOTA4MzgsLjk0OTM4LC45MDgzOCwuOTQ5MzgsLjkwODM4LC45NDkzOCwuODIzOTEsLjgxMDkzLC44MjM5MSwuODEwOTMsLjgyMzkxLC44MTA5MywuODIzOTEsLjgxMDkzLC45NjM3NiwuODQzMTMsLjk3NDg0LC45NzU3MSwuODAwNjEsLjk0OTM4LC44MDA2MSwuOTQ5MzgsLjgwMDYxLC45NDkzOCwuODAwNjEsLjk0OTM4LC44MDA2MSwuOTQ5MzgsLjg3NjgsLjk1NzcsLjg3NjgsLjk1NzcsLjg3NjgsLjk1NzcsMSwxLC45NTQwNywuOTU5MzMsLjk3MDY5LC45NTkzMywxLjAyNTgsLjk4NjIxLDEuMDI1OCwuOTg2MjEsMS4wMjU4LC45ODYyMSwxLjAyNTgsLjk4NjIxLDEuMDI1OCwuOTg2MjEsLjg4NywxLjAxNTkxLC43MzkwMSwxLjA0NzQsMSwxLC45NzQ1NSwuODM2NTUsLjk4OTgxLDEsMSwuODM2NTUsLjczOTc3LC44MzY1NSwuNzM5MDMsLjg0NjM4LDEuMDMzLC45NTU0NiwuOTU5MzMsMSwxLC45NTU0NiwuOTU5MzMsLjgyNzEsLjk1NDE3LC45NTkzMywuOTIxNzksLjk0NDYsLjkyMTc5LC45NDQ2LC45MjE3OSwuOTQ0NiwuOTM2LC45MTk2NCwuODIxMTQsLjk3NjQ2LDEsMSwuODIxMTQsLjk3NjQ2LC44MDk2LC43ODAzNiwuODA5NiwuNzgwMzYsMSwxLC44MDk2LC43ODAzNiwxLDEsLjg5NzEzLC43NzQ1MiwuODk3MTMsMS4xMDIwOCwuOTQ0MzgsLjk1NDQyLC45NDQzOCwuOTU0NDIsLjk0NDM4LC45NTQ0MiwuOTQ0MzgsLjk1NDQyLC45NDQzOCwuOTU0NDIsLjk0NDM4LC45NTQ0MiwuOTQwODMsLjk3NTc5LC45MDQwNiwuOTQwMzksLjkwNDA2LC45NDQ2LC45MzgsLjk0NDYsLjkzOCwuOTQ0NiwuOTM4LDEsLjk5NzkzLC45MDgzOCwuOTQ5MzgsLjg2OCwuOTAzMSwuOTIxNzksLjk0NDYsMSwxLC44OTcxMywxLjEwMjA4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDk4OSwuOTM1OCwuOTE5NDUsLjgzMTgxLC43NTI2MSwuODc5OTIsLjgyOTc2LC45NjAzNCwuODM2ODksLjk3MjY4LDEuMDA3OCwuOTA4MzgsLjgzNjM3LC44MDE5LC45MDE1NywuODAwNjEsLjk0NDYsLjk1NDA3LC45MjQzNiwxLjAyNTgsLjg1MDIyLC45NzE1MywxLjAxNTYsLjk1NTQ2LC44OTE5MiwuOTIxNzksLjkyMzYxLC44NzEwNywuOTYzMTgsLjg5NzEzLC45MzcwNCwuOTU2MzgsLjkxOTA1LC45MTcwOSwuOTI3OTYsMS4wMjU4LC45MzcwNCwuOTQ4MzYsMS4wMzczLC45NTkzMywxLjAwNzgsLjk1ODcxLC45NDgzNiwuOTYxNzQsLjkyNjAxLC45NDk4LC45ODYwNywuOTU3NzYsLjk1OTMzLDEuMDU0NTMsMS4wMDc4LC45ODI3NSwuOTMxNCwuOTU2MTcsLjkxNzAxLDEuMDU5OTMsLjk0NDYsLjc4MzY3LC45NTUzLDEsLjg2ODMyLDEuMDEyOCwuOTU4NzEsLjk5Mzk0LC44NzU0OCwuOTYzNjEsLjg2Nzc0LDEuMDA3OCwuOTU4NzEsLjk0NDYsLjk1ODcxLC44Njc3NCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45NDA4MywuOTc1NzksLjk0MDgzLC45NzU3OSwuOTQwODMsLjk3NTc5LC45MDQwNiwuOTQwMzksLjk2Njk0LDEsLjg5OTAzLDEsMSwxLC45MzU4MiwuOTM1ODIsLjkzNTgyLDEsLjkwOCwuOTA4LC45MTgsLjk0MjE5LC45NDIxOSwuOTY1NDQsMSwxLjI4NSwxLDEsLjgxMDc5LC44MTA3OSwxLDEsLjc0ODU0LDEsMSwxLDEsLjk5NzkzLDEsMSwxLC42NSwxLDEuMzYxNDUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMTcxNzMsMSwuODA1MzUsLjc2MTY5LDEuMDIwNTgsMS4wNzMyLDEuMDU0ODYsMSwxLDEuMzA2OTIsMS4wODU5NSwxLjA4NTk1LDEsMS4wODU5NSwxLjA4NTk1LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4xNjE2MSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXSxaYT17bGluZUhlaWdodDoxLjIsbGluZUdhcDouMn0sVmE9WzEuMzY4OTgsMSwxLC42NjIyNywuODA3NzksLjgxNjI1LC45NzI3NiwuOTcyNzYsLjk3NzMzLC45MjIyMiwuODMyNjYsLjk0MjkyLC45NDI5MiwxLjE2MTQ4LDEuMDIwNTgsLjkzNTgyLC45NjY5NCwuOTM1ODIsMS4xNzMzNywuOTcyNzYsLjk3Mjc2LC45NzI3NiwuOTcyNzYsLjk3Mjc2LC45NzI3NiwuOTcyNzYsLjk3Mjc2LC45NzI3NiwuOTcyNzYsLjc4MDc2LC43ODA3NiwxLjAyMDU4LDEuMDIwNTgsMS4wMjA1OCwuNzE1NDEsLjc2ODEzLC44NTU3NiwuODA1OTEsLjgwNzI5LC45NDI5OSwuNzc1MTIsLjgzNjU1LC44NjUyMywuOTIyMjIsLjk4NjIxLC43MTc0MywuODE2OTgsLjc5NzI2LC45ODU1OCwuOTIyMjIsLjkwNjM3LC44MzgwOSwuOTA2MzcsLjgwNzI5LC43NjQ2MywuODYyNzUsLjkwNjk5LC45MTYwNSwuOTE1NCwuODUzMDgsLjg1NDU4LC45MDUzMSwuOTQyOTIsMS4yMTI5NiwuOTQyOTIsMS4wMjA1OCwuODk5MDMsMS4xODYxNiwuOTk2MTMsLjkxNjc3LC43ODIxNiwuOTE2NzcsLjkwMDgzLC45ODc5NiwuOTEzNSwuOTIxNjgsLjk1MzgxLC45ODk4MSwuOTUyOTgsLjk1MzgxLC45MzQ1OSwuOTIxNjgsLjkxNTEzLC45MjAwNCwuOTE2NzcsLjk1MDc3LC43NDgsMS4wNDUwMiwuOTE2NzcsLjkyMDYxLC45NDIzNiwuODk1NDQsLjg5MzY0LC45LC44MDY4NywuODU3OCwuODA2ODcsMS4wMjA1OCwuODA3NzksLjk3Mjc2LC45NzI3NiwuOTcyNzYsLjk3Mjc2LC44NTc4LC45OTk3MywxLjE4NjE2LC45MTMzOSwxLjA4MDc0LC44Mjg5MSwxLjAyMDU4LC41NTUwOSwuNzE1MjYsLjg5MDIyLDEuMDg1OTUsMSwxLDEuMTg2MTYsMSwuOTY3MzYsLjkzNTgyLDEuMTg2MTYsMSwxLjA0ODY0LC44MjcxMSwuOTkwNDMsLjk5MDQzLC45OTA0MywuNzE1NDEsLjg1NTc2LC44NTU3NiwuODU1NzYsLjg1NTc2LC44NTU3NiwuODU1NzYsLjg0NSwuODA3MjksLjc3NTEyLC43NzUxMiwuNzc1MTIsLjc3NTEyLC45ODYyMSwuOTg2MjEsLjk4NjIxLC45ODYyMSwuOTU5NjEsLjkyMjIyLC45MDYzNywuOTA2MzcsLjkwNjM3LC45MDYzNywuOTA2MzcsMS4wMjA1OCwuOTAyNTEsLjkwNjk5LC45MDY5OSwuOTA2OTksLjkwNjk5LC44NTQ1OCwuODM2NTksLjk0OTUxLC45OTYxMywuOTk2MTMsLjk5NjEzLC45OTYxMywuOTk2MTMsLjk5NjEzLC44NTgxMSwuNzgyMTYsLjkwMDgzLC45MDA4MywuOTAwODMsLjkwMDgzLC45NTM4MSwuOTUzODEsLjk1MzgxLC45NTM4MSwuOTEzNSwuOTIxNjgsLjkxNTEzLC45MTUxMywuOTE1MTMsLjkxNTEzLC45MTUxMywxLjA4NTk1LC45MTY3NywuOTE2NzcsLjkxNjc3LC45MTY3NywuOTE2NzcsLjg5MzY0LC45MjMzMiwuODkzNjQsLjg1NTc2LC45OTYxMywuODU1NzYsLjk5NjEzLC44NTU3NiwuOTk2MTMsLjgwNzI5LC43ODIxNiwuODA3MjksLjc4MjE2LC44MDcyOSwuNzgyMTYsLjgwNzI5LC43ODIxNiwuOTQyOTksLjc2NzgzLC45NTk2MSwuOTE2NzcsLjc3NTEyLC45MDA4MywuNzc1MTIsLjkwMDgzLC43NzUxMiwuOTAwODMsLjc3NTEyLC45MDA4MywuNzc1MTIsLjkwMDgzLC44NjUyMywuOTEzNSwuODY1MjMsLjkxMzUsLjg2NTIzLC45MTM1LDEsMSwuOTIyMjIsLjkyMTY4LC45MjIyMiwuOTIxNjgsLjk4NjIxLC45NTM4MSwuOTg2MjEsLjk1MzgxLC45ODYyMSwuOTUzODEsLjk4NjIxLC45NTM4MSwuOTg2MjEsLjk1MzgxLC44NjAzNiwuOTcwOTYsLjcxNzQzLC45ODk4MSwxLDEsLjk1Mjk4LC43OTcyNiwuOTUzODEsMSwxLC43OTcyNiwuNjg5NCwuNzk3MjYsLjc0MzIxLC44MTY5MSwxLjAwMDYsLjkyMjIyLC45MjE2OCwxLDEsLjkyMjIyLC45MjE2OCwuNzk0NjQsLjkyMDk4LC45MjE2OCwuOTA2MzcsLjkxNTEzLC45MDYzNywuOTE1MTMsLjkwNjM3LC45MTUxMywuOTA5LC44NzUxNCwuODA3MjksLjk1MDc3LDEsMSwuODA3MjksLjk1MDc3LC43NjQ2MywuNzQ4LC43NjQ2MywuNzQ4LDEsMSwuNzY0NjMsLjc0OCwxLDEsLjg2Mjc1LC43MjY1MSwuODYyNzUsMS4wNDUwMiwuOTA2OTksLjkxNjc3LC45MDY5OSwuOTE2NzcsLjkwNjk5LC45MTY3NywuOTA2OTksLjkxNjc3LC45MDY5OSwuOTE2NzcsLjkwNjk5LC45MTY3NywuOTE1NCwuOTQyMzYsLjg1NDU4LC44OTM2NCwuODU0NTgsLjkwNTMxLC45LC45MDUzMSwuOSwuOTA1MzEsLjksMSwuOTcyNzYsLjg1NTc2LC45OTYxMywuODQ1LC44NTgxMSwuOTAyNTEsLjkxNjc3LDEsMSwuODYyNzUsMS4wNDUwMiwxLjE4NjE2LDEuMTg2MTYsMS4xODYxNiwxLjE4NjE2LDEuMTg2MTYsMS4xODYxNiwxLjE4NjE2LDEuMTg2MTYsMS4xODYxNiwxLjAwODk5LDEuMzA2MjgsLjg1NTc2LC44MDE3OCwuNjY4NjIsLjc5MjcsLjY5MzIzLC44ODEyNywuNzI0NTksLjg5NzExLC45NTM4MSwuODU1NzYsLjgwNTkxLC43ODA1LC45NDcyOSwuNzc1MTIsLjkwNTMxLC45MjIyMiwuOTA2MzcsLjk4NjIxLC44MTY5OCwuOTI2NTUsLjk4NTU4LC45MjIyMiwuODUzNTksLjkwNjM3LC45MDk3NiwuODM4MDksLjk0NTIzLC44NjI3NSwuODM1MDksLjkzMTU3LC44NTMwOCwuODMzOTIsLjkyMzQ2LC45ODYyMSwuODM1MDksLjkyODg2LC45MTMyNCwuOTIxNjgsLjk1MzgxLC45MDY0NiwuOTI4ODYsLjkwNTU3LC44Njg0NywuOTAyNzYsLjkxMzI0LC44Njg0MiwuOTIxNjgsLjk5NTMxLC45NTM4MSwuOTIyNCwuODU0MDgsLjkyNjk5LC44Njg0NywxLjAwNTEsLjkxNTEzLC44MDQ4NywuOTM0ODEsMSwuODgxNTksMS4wNTIxNCwuOTA2NDYsLjk3MzU1LC44MTUzOSwuODkzOTgsLjg1OTIzLC45NTM4MSwuOTA2NDYsLjkxNTEzLC45MDY0NiwuODU5MjMsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTE1NCwuOTQyMzYsLjkxNTQsLjk0MjM2LC45MTU0LC45NDIzNiwuODU0NTgsLjg5MzY0LC45NjY5NCwxLC44OTkwMywxLDEsMSwuOTE3ODIsLjkxNzgyLC45MTc4MiwxLC44OTYsLjg5NiwuODk2LC45MzMyLC45MzMyLC45NTk3MywxLDEuMjYsMSwxLC44MDQ3OSwuODAxNzgsMSwxLC44NTYzMywxLDEsMSwxLC45NzI3NiwxLDEsMSwuNjk4LDEsMS4zNjE0NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4xNDU0MiwxLC43OTE5OSwuNzg2OTQsMS4wMjA1OCwxLjAzNDkzLDEuMDU0ODYsMSwxLDEuMjMwMjYsMS4wODU5NSwxLjA4NTk1LDEsMS4wODU5NSwxLjA4NTk1LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4yMDAwNiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXSx6YT17bGluZUhlaWdodDoxLjIsbGluZUdhcDouMn0sX2E9WzEuMzY4OTgsMSwxLC42NTUwNywuODQ5NDMsLjg1NjM5LC44ODQ2NSwuODg0NjUsLjg2OTM2LC44ODMwNywuODY5NDgsLjg1MjgzLC44NTI4MywxLjA2MzgzLDEuMDIwNTgsLjc1OTQ1LC45MjE5LC43NTk0NSwxLjE3MzM3LC44ODQ2NSwuODg0NjUsLjg4NDY1LC44ODQ2NSwuODg0NjUsLjg4NDY1LC44ODQ2NSwuODg0NjUsLjg4NDY1LC44ODQ2NSwuNzU5NDUsLjc1OTQ1LDEuMDIwNTgsMS4wMjA1OCwxLjAyMDU4LC42OTA0NiwuNzA5MjYsLjg1MTU4LC43NzgxMiwuNzY4NTIsLjg5NTkxLC43MDQ2NiwuNzYxMjUsLjgwMDk0LC44NjgyMiwuODM4NjQsLjcyOCwuNzcyMTIsLjc5NDc1LC45MzYzNywuODc1MTQsLjg1ODgsLjc2MDEzLC44NTg4LC43MjQyMSwuNjk4NjYsLjc3NTk4LC44NTk5MSwuODA4MTEsLjg3ODMyLC43ODExMiwuNzc1MTIsLjg1NjIsMS4wMjIyLDEuMTg0MTcsMS4wMjIyLDEuMjcwMTQsLjg5OTAzLDEuMTUwMTIsLjkzODU5LC45NDM5OSwuODQ2LC45NDM5OSwuODE0NTMsMS4wMTg2LC45NDIxOSwuOTYwMTcsMS4wMzA3NSwxLjAyMTc1LC45MTIsMS4wMzA3NSwuOTY5OTgsLjk2MDE3LC45Mzg1OSwuOTQzOTksLjk0Mzk5LC45NTQ5MywuNzQ2LDEuMTI2NTgsLjk0NTc4LC45MSwuOTc5LC44ODIsLjg4MiwuODMsLjg1MDM0LC44MzUzNywuODUwMzQsMS4wMjA1OCwuNzA4NjksLjg4NDY1LC44ODQ2NSwuODg0NjUsLjg4NDY1LC44MzUzNywuOTAwODMsMS4xNTAxMiwuOTE2MSwuOTQ1NjUsLjczNTQxLDEuMDIwNTgsLjUzNjA5LC42OTM1MywuNzk1MTksMS4wODU5NSwxLDEsMS4xNTAxMiwxLC45MTk3NCwuNzU5NDUsMS4xNTAxMiwxLC45NDQ2LC43MzM2MSwuOTAwNSwuOTAwNSwuOTAwNSwuNjI4NjQsLjg1MTU4LC44NTE1OCwuODUxNTgsLjg1MTU4LC44NTE1OCwuODUxNTgsLjc3MywuNzY4NTIsLjcwNDY2LC43MDQ2NiwuNzA0NjYsLjcwNDY2LC44Mzg2NCwuODM4NjQsLjgzODY0LC44Mzg2NCwuOTA1NjEsLjg3NTE0LC44NTg4LC44NTg4LC44NTg4LC44NTg4LC44NTg4LDEuMDIwNTgsLjg1NzUxLC44NTk5MSwuODU5OTEsLjg1OTkxLC44NTk5MSwuNzc1MTIsLjc2MDEzLC44ODA3NSwuOTM4NTksLjkzODU5LC45Mzg1OSwuOTM4NTksLjkzODU5LC45Mzg1OSwuODA3NSwuODQ2LC44MTQ1MywuODE0NTMsLjgxNDUzLC44MTQ1MywuODI0MjQsLjgyNDI0LC44MjQyNCwuODI0MjQsLjkyNzgsLjk2MDE3LC45Mzg1OSwuOTM4NTksLjkzODU5LC45Mzg1OSwuOTM4NTksMS4wODU5NSwuODU2MiwuOTQ1NzgsLjk0NTc4LC45NDU3OCwuOTQ1NzgsLjg4MiwuOTQ1NzgsLjg4MiwuODUxNTgsLjkzODU5LC44NTE1OCwuOTM4NTksLjg1MTU4LC45Mzg1OSwuNzY4NTIsLjg0NiwuNzY4NTIsLjg0NiwuNzY4NTIsLjg0NiwuNzY4NTIsLjg0NiwuODk1OTEsLjg1NDQsLjkwNTYxLC45NDM5OSwuNzA0NjYsLjgxNDUzLC43MDQ2NiwuODE0NTMsLjcwNDY2LC44MTQ1MywuNzA0NjYsLjgxNDUzLC43MDQ2NiwuODE0NTMsLjgwMDk0LC45NDIxOSwuODAwOTQsLjk0MjE5LC44MDA5NCwuOTQyMTksMSwxLC44NjgyMiwuOTYwMTcsLjg2ODIyLC45NjAxNywuODM4NjQsLjgyNDI0LC44Mzg2NCwuODI0MjQsLjgzODY0LC44MjQyNCwuODM4NjQsMS4wMzA3NSwuODM4NjQsLjgyNDI0LC44MTQwMiwxLjAyNzM4LC43MjgsMS4wMjE3NSwxLDEsLjkxMiwuNzk0NzUsMS4wMzA3NSwxLDEsLjc5NDc1LC44MzkxMSwuNzk0NzUsLjY2MjY2LC44MDU1MywxLjA2Njc2LC44NzUxNCwuOTYwMTcsMSwxLC44NzUxNCwuOTYwMTcsLjg2ODY1LC44NzM5NiwuOTYwMTcsLjg1ODgsLjkzODU5LC44NTg4LC45Mzg1OSwuODU4OCwuOTM4NTksLjg2NywuODQ3NTksLjcyNDIxLC45NTQ5MywxLDEsLjcyNDIxLC45NTQ5MywuNjk4NjYsLjc0NiwuNjk4NjYsLjc0NiwxLDEsLjY5ODY2LC43NDYsMSwxLC43NzU5OCwuODg0MTcsLjc3NTk4LDEuMTI2NTgsLjg1OTkxLC45NDU3OCwuODU5OTEsLjk0NTc4LC44NTk5MSwuOTQ1NzgsLjg1OTkxLC45NDU3OCwuODU5OTEsLjk0NTc4LC44NTk5MSwuOTQ1NzgsLjg3ODMyLC45NzksLjc3NTEyLC44ODIsLjc3NTEyLC44NTYyLC44MywuODU2MiwuODMsLjg1NjIsLjgzLDEsLjg4NDY1LC44NTE1OCwuOTM4NTksLjc3MywuODA3NSwuODU3NTEsLjg1NjIsMSwxLC43NzU5OCwxLjEyNjU4LDEuMTUwMTIsMS4xNTAxMiwxLjE1MDEyLDEuMTUwMTIsMS4xNTAxMiwxLjE1MzEzLDEuMTUwMTIsMS4xNTAxMiwxLjE1MDEyLDEuMDgxMDYsMS4wMzkwMSwuODUxNTgsLjc3MDI1LC42MjI2NCwuNzY0NiwuNjUzNTEsLjg2MDI2LC42OTQ2MSwuODk5NDcsMS4wMzA3NSwuODUxNTgsLjc3ODEyLC43NjQ0OSwuODg4MzYsLjcwNDY2LC44NTYyLC44NjgyMiwuODU4OCwuODM4NjQsLjc3MjEyLC44NTMwOCwuOTM2MzcsLjg3NTE0LC44MjM1MiwuODU4OCwuODU3MDEsLjc2MDEzLC44OTA1OCwuNzc1OTgsLjgxNTYsLjgyNTY1LC43ODExMiwuNzc4OTksLjg5Mzg2LC44Mzg2NCwuODE1NiwuOTQ4NiwuOTIzODgsLjk2MTg2LDEuMDMwNzUsLjkxMTIzLC45NDg2LC45MzI5OCwuODc4LC45Mzk0MiwuOTIzODgsLjg0NTk2LC45NjE4NiwuOTUxMTksMS4wMzA3NSwuOTIyLC44ODc4NywuOTU4MjksLjg4LC45MzU1OSwuOTM4NTksLjc4ODE1LC45Mzc1OCwxLC44OTIxNywxLjAzNzM3LC45MTEyMywuOTM5NjksLjc3NDg3LC44NTc2OSwuODY3OTksMS4wMzA3NSwuOTExMjMsLjkzODU5LC45MTEyMywuODY3OTksMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuODc4MzIsLjk3OSwuODc4MzIsLjk3OSwuODc4MzIsLjk3OSwuNzc1MTIsLjg4MiwuOTIxOSwxLC44OTkwMywxLDEsMSwuODczMjEsLjg3MzIxLC44NzMyMSwxLDEuMDI3LDEuMDI3LDEuMDI3LC44Njg0NywuODY4NDcsLjc5MTIxLDEsMS4xMjQsMSwxLC43MzU3MiwuNzM1NzIsMSwxLC44NTAzNCwxLDEsMSwxLC44ODQ2NSwxLDEsMSwuNjY5LDEsMS4zNjE0NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wNDgyOCwxLC43NDk0OCwuNzUxODcsMS4wMjA1OCwuOTgzOTEsMS4wMjExOSwxLDEsMS4wNjIzMywxLjA4NTk1LDEuMDg1OTUsMSwxLjA4NTk1LDEuMDg1OTUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjA1MjMzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLCRhPXtsaW5lSGVpZ2h0OjEuMixsaW5lR2FwOi4yfSxBcz1bMS4zNjg5OCwxLDEsLjc2MzA1LC44Mjc4NCwuOTQ5MzUsLjg5MzY0LC45MjI0MSwuODkwNzMsLjkwNzA2LC45ODQ3MiwuODUyODMsLjg1MjgzLDEuMDY2NCwxLjAyMDU4LC43NDUwNSwuOTIxOSwuNzQ1MDUsMS4yMzQ1NiwuOTIyNDEsLjkyMjQxLC45MjI0MSwuOTIyNDEsLjkyMjQxLC45MjI0MSwuOTIyNDEsLjkyMjQxLC45MjI0MSwuOTIyNDEsLjc0NTA1LC43NDUwNSwxLjAyMDU4LDEuMDIwNTgsMS4wMjA1OCwuNzMwMDIsLjcyNjAxLC45MTc1NSwuODEyNiwuODAzMTQsLjkyMjIyLC43Mzc2NCwuNzk3MjYsLjgzMDUxLC45MDI4NCwuODYwMjMsLjc0LC44MTI2LC44NDg2OSwuOTY1MTgsLjkxMTE1LC44ODU4LC43OTc2MSwuODg1OCwuNzQ0OTgsLjczOTE0LC44MTM2MywuODk1OTEsLjgzNjU5LC44OTYzMywuODU2MDgsLjgxMTEsLjkwNTMxLDEuMDIyMiwxLjIyNzM2LDEuMDIyMiwxLjI3MDE0LC44OTkwMywuOTAwODgsLjg2NjY3LDEuMDIzMSwuODk2LDEuMDE0MTEsLjkwMDgzLDEuMDUwOTksMS4wMDUxMiwuOTk3OTMsMS4wNTMyNiwxLjA5Mzc3LC45MzgsMS4wNjIyNiwxLjAwMTE5LC45OTc5MywuOTg3MTQsMS4wMjMxLDEuMDEyMzEsLjk4MTk2LC43OTIsMS4xOTEzNywuOTkwNzQsLjk2MiwxLjAxOTE1LC45MjYsLjk0MiwuODU2LC44NTAzNCwuOTIwMDYsLjg1MDM0LDEuMDIwNTgsLjY5MDY3LC45MjI0MSwuOTIyNDEsLjkyMjQxLC45MjI0MSwuOTIwMDYsLjkzMzIsLjkwMDg4LC45MTg4MiwuOTM0ODQsLjc1MzM5LDEuMDIwNTgsLjU2ODY2LC41NDMyNCwuNzk1MTksMS4wODU5NSwxLDEsLjkwMDg4LDEsLjk1MzI1LC43NDUwNSwuOTAwODgsMSwuOTcxOTgsLjc1MzM5LC45MTAwOSwuOTEwMDksLjkxMDA5LC42NjQ2NiwuOTE3NTUsLjkxNzU1LC45MTc1NSwuOTE3NTUsLjkxNzU1LC45MTc1NSwuNzg4LC44MDMxNCwuNzM3NjQsLjczNzY0LC43Mzc2NCwuNzM3NjQsLjg2MDIzLC44NjAyMywuODYwMjMsLjg2MDIzLC45MjkxNSwuOTExMTUsLjg4NTgsLjg4NTgsLjg4NTgsLjg4NTgsLjg4NTgsMS4wMjA1OCwuODg1OCwuODk1OTEsLjg5NTkxLC44OTU5MSwuODk1OTEsLjgxMTEsLjc5NjExLC44OTcxMywuODY2NjcsLjg2NjY3LC44NjY2NywuODY2NjcsLjg2NjY3LC44NjY2NywuODY5MzYsLjg5NiwuOTAwODMsLjkwMDgzLC45MDA4MywuOTAwODMsLjg0MjI0LC44NDIyNCwuODQyMjQsLjg0MjI0LC45NzI3NiwuOTk3OTMsLjk4NzE0LC45ODcxNCwuOTg3MTQsLjk4NzE0LC45ODcxNCwxLjA4NTk1LC44OTg3NiwuOTkwNzQsLjk5MDc0LC45OTA3NCwuOTkwNzQsLjk0MiwxLjAyMzEsLjk0MiwuOTE3NTUsLjg2NjY3LC45MTc1NSwuODY2NjcsLjkxNzU1LC44NjY2NywuODAzMTQsLjg5NiwuODAzMTQsLjg5NiwuODAzMTQsLjg5NiwuODAzMTQsLjg5NiwuOTIyMjIsLjkzMzcyLC45MjkxNSwxLjAxNDExLC43Mzc2NCwuOTAwODMsLjczNzY0LC45MDA4MywuNzM3NjQsLjkwMDgzLC43Mzc2NCwuOTAwODMsLjczNzY0LC45MDA4MywuODMwNTEsMS4wMDUxMiwuODMwNTEsMS4wMDUxMiwuODMwNTEsMS4wMDUxMiwxLDEsLjkwMjg0LC45OTc5MywuOTA5NzYsLjk5NzkzLC44NjAyMywuODQyMjQsLjg2MDIzLC44NDIyNCwuODYwMjMsLjg0MjI0LC44NjAyMywxLjA1MzI2LC44NjAyMywuODQyMjQsLjgyODczLDEuMDc0NjksLjc0LDEuMDkzNzcsMSwxLC45MzgsLjg0ODY5LDEuMDYyMjYsMSwxLC44NDg2OSwuODM3MDQsLjg0ODY5LC44MTQ0MSwuODU1ODgsMS4wODkyNywuOTExMTUsLjk5NzkzLDEsMSwuOTExMTUsLjk5NzkzLC45MTg4NywuOTA5OTEsLjk5NzkzLC44ODU4LC45ODcxNCwuODg1OCwuOTg3MTQsLjg4NTgsLjk4NzE0LC44OTQsLjkxNDM0LC43NDQ5OCwuOTgxOTYsMSwxLC43NDQ5OCwuOTgxOTYsLjczOTE0LC43OTIsLjczOTE0LC43OTIsMSwxLC43MzkxNCwuNzkyLDEsMSwuODEzNjMsLjkwNCwuODEzNjMsMS4xOTEzNywuODk1OTEsLjk5MDc0LC44OTU5MSwuOTkwNzQsLjg5NTkxLC45OTA3NCwuODk1OTEsLjk5MDc0LC44OTU5MSwuOTkwNzQsLjg5NTkxLC45OTA3NCwuODk2MzMsMS4wMTkxNSwuODExMSwuOTQyLC44MTExLC45MDUzMSwuODU2LC45MDUzMSwuODU2LC45MDUzMSwuODU2LDEsLjkyMjQxLC45MTc1NSwuODY2NjcsLjc4OCwuODY5MzYsLjg4NTgsLjg5ODc2LDEsMSwuODEzNjMsMS4xOTEzNywuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAzODgsMS4wMzkwMSwuOTIxMzgsLjc4MTA1LC43MTU0LC44NjE2OSwuODA1MTMsLjk0MDA3LC44MjUyOCwuOTg2MTIsMS4wNjIyNiwuOTE3NTUsLjgxMjYsLjgxODg0LC45MjgxOSwuNzM3NjQsLjkwNTMxLC45MDI4NCwuODg1OCwuODYwMjMsLjgxMjYsLjkxMTcyLC45NjUxOCwuOTExMTUsLjgzMDg5LC44ODU4LC44Nzc5MSwuNzk3NjEsLjg5Mjk3LC44MTM2MywuODgxNTcsLjg5OTkyLC44NTYwOCwuODE5OTIsLjk0MzA3LC44NjAyMywuODgxNTcsLjk1MzA4LC45ODY5OSwuOTk3OTMsMS4wNjIyNiwuOTU4MTcsLjk1MzA4LC45NzM1OCwuOTI4LC45ODA4OCwuOTg2OTksLjkyNzYxLC45OTc5MywuOTYwMTcsMS4wNjIyNiwuOTg2LC45NDQsLjk1OTc4LC45MzgsLjk2NzA1LC45ODcxNCwuODA0NDIsLjk4OTcyLDEsLjg5NzYyLDEuMDQ1NTIsLjk1ODE3LC45OTAwNywuODcwNjQsLjkxODc5LC44ODg4OCwxLjA2MjI2LC45NTgxNywuOTg3MTQsLjk1ODE3LC44ODg4OCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC44OTYzMywxLjAxOTE1LC44OTYzMywxLjAxOTE1LC44OTYzMywxLjAxOTE1LC44MTExLC45NDIsLjkyMTksMSwuODk5MDMsMSwxLDEsLjkzMTczLC45MzE3MywuOTMxNzMsMSwxLjA2MzA0LDEuMDYzMDQsMS4wNjkwNCwuODk5MDMsLjg5OTAzLC44MDU0OSwxLDEuMTU2LDEsMSwuNzY1NzUsLjc2NTc1LDEsMSwuNzI0NTgsMSwxLDEsMSwuOTIyNDEsMSwxLDEsLjYxOSwxLDEuMzYxNDUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMDcyNTcsMSwuNzQ3MDUsLjcxMTE5LDEuMDIwNTgsMS4wMjQsMS4wMjExOSwxLDEsMS4xNTM2LDEuMDg1OTUsMS4wODU5NSwxLDEuMDg1OTUsMS4wODU5NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMDU2MzgsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0sZXM9e2xpbmVIZWlnaHQ6MS4yLGxpbmVHYXA6LjJ9LHRzPVsxLjc2NzM4LDEsMSwuOTkyOTcsLjk4MjQsMS4wNDAxNiwxLjA2NDk3LDEuMDM0MjQsLjk3NTI5LDEuMTc2NDcsMS4yMzIwMywxLjEwODUsMS4xMDg1LDEuMTY5MzksMS4yMTA3LC45NzU0LDEuMjE0MDgsLjk3NTQsMS41OTU3OCwxLjAzNDI0LDEuMDM0MjQsMS4wMzQyNCwxLjAzNDI0LDEuMDM0MjQsMS4wMzQyNCwxLjAzNDI0LDEuMDM0MjQsMS4wMzQyNCwxLjAzNDI0LC44MTM3OCwuODEzNzgsMS4yMTA3LDEuMjEwNywxLjIxMDcsLjcxNzAzLC45Nzg0NywuOTczNjMsLjg4Nzc2LC44NjQxLDEuMDIwOTYsLjc5Nzk1LC44NTEzMiwuOTE0LDEuMDYwODUsMS4xNDA2LC44MDA3LC44OTg1OCwuODM2OTMsMS4xNDg4OSwxLjA5Mzk4LC45NzQ4OSwuOTIwOTQsLjk3NDg5LC45MDM5OSwuODQwNDEsLjk1OTIzLDEuMDAxMzUsMSwxLjA2NDY3LC45ODI0MywuOTA5OTYsLjk5MzYxLDEuMTA4NSwxLjU2OTQyLDEuMTA4NSwxLjIxMDcsLjc0NjI3LC45NDI4MiwuOTY3NTIsMS4wMTUxOSwuODYzMDQsMS4wMTM1OSwuOTcyNzgsMS4xNTEwMywxLjAxMzU5LC45ODU2MSwxLjAyMjg1LDEuMDIyODUsMS4wMDUyNywxLjAyMjg1LDEuMDMwMiwuOTkwNDEsMS4wMDA4LDEuMDE1MTksMS4wMTM1OSwxLjAyMjU4LC43OTEwNCwxLjE2ODYyLC45OTA0MSwuOTc0NTQsMS4wMjUxMSwuOTkyOTgsLjk2NzUyLC45NTgwMSwuOTQ4NTYsMS4xNjU3OSwuOTQ4NTYsMS4yMTA3LC45ODI0LDEuMDM0MjQsMS4wMzQyNCwxLDEuMDM0MjQsMS4xNjU3OSwuODcyNywxLjM4NzEsMS4xODYyMiwxLjEwODE4LDEuMDQ0NzgsMS4yMTA3LDEuMTg2MjIsLjc1MTU1LC45NDk5NCwxLjI4ODI2LDEuMjE0MDgsMS4yMTQwOCwuOTEwNTYsMSwuOTE1NzIsLjk3NTQsLjY0NjYzLDEuMTgzMjgsMS4yNDg2NiwxLjA0NDc4LDEuMTQxNjksMS4xNTc0OSwxLjE3Mzg5LC43MTcwMywuOTczNjMsLjk3MzYzLC45NzM2MywuOTczNjMsLjk3MzYzLC45NzM2MywuOTM1MDYsLjg2NDEsLjc5Nzk1LC43OTc5NSwuNzk3OTUsLjc5Nzk1LDEuMTQwNiwxLjE0MDYsMS4xNDA2LDEuMTQwNiwxLjAyMDk2LDEuMDkzOTgsLjk3NDI2LC45NzQyNiwuOTc0MjYsLjk3NDI2LC45NzQyNiwxLjIxMDcsLjk3NDg5LDEuMDAxMzUsMS4wMDEzNSwxLjAwMTM1LDEuMDAxMzUsLjkwOTk2LC45MjA5NCwxLjAyNzk4LC45Njc1MiwuOTY3NTIsLjk2NzUyLC45Njc1MiwuOTY3NTIsLjk2NzUyLC45MzEzNiwuODYzMDQsLjk3Mjc4LC45NzI3OCwuOTcyNzgsLjk3Mjc4LDEuMDIyODUsMS4wMjI4NSwxLjAyMjg1LDEuMDIyODUsLjk3MTIyLC45OTA0MSwxLDEsMSwxLDEsMS4yODgyNiwxLjAwMDgsLjk5MDQxLC45OTA0MSwuOTkwNDEsLjk5MDQxLC45Njc1MiwxLjAxNTE5LC45Njc1MiwuOTczNjMsLjk2NzUyLC45NzM2MywuOTY3NTIsLjk3MzYzLC45Njc1MiwuODY0MSwuODYzMDQsLjg2NDEsLjg2MzA0LC44NjQxLC44NjMwNCwuODY0MSwuODYzMDQsMS4wMjA5NiwxLjAzMDU3LDEuMDIwOTYsMS4wMzUxNywuNzk3OTUsLjk3Mjc4LC43OTc5NSwuOTcyNzgsLjc5Nzk1LC45NzI3OCwuNzk3OTUsLjk3Mjc4LC43OTc5NSwuOTcyNzgsLjkxNCwxLjAxMzU5LC45MTQsMS4wMTM1OSwuOTE0LDEuMDEzNTksMSwxLDEuMDYwODUsLjk4NTYxLDEuMDYwODUsMS4wMDg3OSwxLjE0MDYsMS4wMjI4NSwxLjE0MDYsMS4wMjI4NSwxLjE0MDYsMS4wMjI4NSwxLjE0MDYsMS4wMjI4NSwxLjE0MDYsMS4wMjI4NSwuOTcxMzgsMS4wODY5MiwuODAwNywxLjAyMjg1LDEsMSwxLjAwNTI3LC44MzY5MywxLjAyMjg1LDEsMSwuODM2OTMsLjk0NTUsLjgzNjkzLC45MDQxOCwuODM2OTMsMS4xMzAwNSwxLjA5Mzk4LC45OTA0MSwxLDEsMS4wOTM5OCwuOTkwNDEsLjk2NjkyLDEuMDkyNTEsLjk5MDQxLC45NzQ4OSwxLjAwMDgsLjk3NDg5LDEuMDAwOCwuOTc0ODksMS4wMDA4LC45Mzk5NCwuOTc5MzEsLjkwMzk5LDEuMDIyNTgsMSwxLC45MDM5OSwxLjAyMjU4LC44NDA0MSwuNzkxMDQsLjg0MDQxLC43OTEwNCwuODQwNDEsLjc5MTA0LC44NDA0MSwuNzkxMDQsMSwxLC45NTkyMywxLjA3MDM0LC45NTkyMywxLjE2ODYyLDEuMDAxMzUsLjk5MDQxLDEuMDAxMzUsLjk5MDQxLDEuMDAxMzUsLjk5MDQxLDEuMDAxMzUsLjk5MDQxLDEuMDAxMzUsLjk5MDQxLDEuMDAxMzUsLjk5MDQxLDEuMDY0NjcsMS4wMjUxMSwuOTA5OTYsLjk2NzUyLC45MDk5NiwuOTkzNjEsLjk1ODAxLC45OTM2MSwuOTU4MDEsLjk5MzYxLC45NTgwMSwxLjA3NzMzLDEuMDM0MjQsLjk3MzYzLC45Njc1MiwuOTM1MDYsLjkzMTM2LC45NzQ4OSwxLjAwMDgsMSwxLC45NTkyMywxLjE2ODYyLDEuMTUxMDMsMS4xNTEwMywxLjAxMTczLDEuMDM5NTksLjc1OTUzLC44MTM3OCwuNzk5MTIsMS4xNTEwMywxLjIxOTk0LC45NTE2MSwuODc4MTUsMS4wMTE0OSwuODE1MjUsLjc2NzYsLjk4MTY3LDEuMDExMzQsMS4wMjU0NiwuODQwOTcsMS4wMzA4OSwxLjE4MTAyLC45NzM2MywuODg3NzYsLjg1MTM0LC45NzgyNiwuNzk3OTUsLjk5MzYxLDEuMDYwODUsLjk3NDg5LDEuMTQwNiwuODk4NTgsMS4wMzg4LDEuMTQ4ODksMS4wOTM5OCwuODYwMzksLjk3NDg5LDEuMDU5NSwuOTIwOTQsLjk0NzkzLC45NTkyMywuOTA5OTYsLjk5MzQ2LC45ODI0MywxLjAyMTEyLC45NTQ5MywxLjE0MDYsLjkwOTk2LDEuMDM1NzQsMS4wMjU5NywxLjAwMDgsMS4xODEwMiwxLjA2NjI4LDEuMDM1NzQsMS4wMTkyLDEuMDE5MzIsMS4wMDg4NiwuOTc1MzEsMS4wMTA2LDEuMDAwOCwxLjEzMTg5LDEuMTgxMDIsMS4wMjI3NywuOTg2ODMsMS4wMDE2LC45OTU2MSwxLjA3MjM3LDEuMDAwOCwuOTA0MzQsLjk5OTIxLC45MzgwMywuODk2NSwxLjIzMDg1LDEuMDY2MjgsMS4wNDk4MywuOTYyNjgsMS4wNDk5LC45ODQzOSwxLjE4MTAyLDEuMDY2MjgsMS4wMDA4LDEuMDY2MjgsLjk4NDM5LC43OTc5NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjA5NDY2LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45NzI3OCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjAyMDY1LDEsMSwxLDEsMSwxLDEuMDY0NjcsMS4wMjUxMSwxLjA2NDY3LDEuMDI1MTEsMS4wNjQ2NywxLjAyNTExLC45MDk5NiwuOTY3NTIsMSwxLjIxNDA4LC44OTkwMywxLDEsLjc1MTU1LDEuMDQzOTQsMS4wNDM5NCwxLjA0Mzk0LDEuMDQzOTQsLjk4NjMzLC45ODYzMywuOTg2MzMsLjczMDQ3LC43MzA0NywxLjIwNjQyLC45MTIxMSwxLjI1NjM1LDEuMjIyLDEuMDI5NTYsMS4wMzM3MiwxLjAzMzcyLC45NjAzOSwxLjI0NjMzLDEsMS4xMjQ1NCwuOTM1MDMsMS4wMzQyNCwxLjE5Njg3LDEuMDM0MjQsMSwxLDEsLjc3MSwxLDEsMS4xNTc0OSwxLjE1NzQ5LDEuMTU3NDksMS4xMDk0OCwuODYyNzksLjk0NDM0LC44NjI3OSwuOTQ0MzQsLjg2MTgyLDEsMSwxLjE2ODk3LDEsLjk2MDg1LC45MDEzNywxLjIxMDcsMS4xODQxNiwxLjEzOTczLC42OTgyNSwuOTcxNiwyLjEwMzM5LDEuMjkwMDQsMS4yOTAwNCwxLjIxMTcyLDEuMjkwMDQsMS4yOTAwNCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuNDI2MDMsMSwuOTk4NjIsLjk5ODYyLDEsLjg3MDI1LC44NzAyNSwuODcwMjUsLjg3MDI1LDEuMTg4NzQsMS40MjYwMywxLDEuNDI2MDMsMS40MjYwMywuOTk4NjIsMSwxLDEsMSwxLDEuMjg4NiwxLjA0MzE1LDEuMTUyOTYsMS4zNDE2MywxLDEsMSwxLjA5MTkzLDEuMDkxOTMsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLGlzPXtsaW5lSGVpZ2h0OjEuMzMwMDgsbGluZUdhcDowfSxhcz1bMS43NjczOCwxLDEsLjk4OTQ2LDEuMDM5NTksMS4wNDAxNiwxLjAyODA5LDEuMDM2LC45NzYzOSwxLjEwOTUzLDEuMjMyMDMsMS4xMTE0NCwxLjExMTQ0LDEuMTY5MzksMS4yMTIzNywuOTc1NCwxLjIxMjYxLC45NzU0LDEuNTk3NTQsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsLjgxMzc4LC44MTM3OCwxLjIxMjM3LDEuMjEyMzcsMS4yMTIzNywuNzM1NDEsLjk3ODQ3LC45NzM2MywuODk3MjMsLjg3ODk3LDEuMDQyNiwuNzk0MjksLjg1MjkyLC45MTE0OSwxLjA1ODE1LDEuMTQwNiwuNzk2MzEsLjkwMTI4LC44Mzg1MywxLjA0Mzk2LDEuMTA2MTUsLjk3NTUyLC45NDQzNiwuOTc1NTIsLjg4NjQxLC44MDUyNywuOTYwODMsMS4wMDEzNSwxLDEuMDY3NzcsLjk4MTcsLjkxMTQyLC45OTM2MSwxLjExMTQ0LDEuNTcyOTMsMS4xMTE0NCwxLjIxMjM3LC43NDYyNywxLjMxODE4LDEuMDY1ODUsLjk3MDQyLC44MzA1NSwuOTcwNDIsLjkzNTAzLDEuMTI2MSwuOTcwNDIsLjk3OTIyLDEuMTQyMzYsLjk0NTUyLDEuMDEwNTQsMS4xNDIzNiwxLjAyNDcxLC45NzkyMiwuOTQxNjUsLjk3MDQyLC45NzA0MiwxLjAyNzYsLjc4OTI5LDEuMTI2MSwuOTc5MjIsLjk1ODc0LDEuMDIxOTcsLjk4NTA3LC45Njc1MiwuOTcxNjgsLjk1MTA3LDEuMTY1NzksLjk1MTA3LDEuMjEyMzcsMS4wMzk1OSwxLjAzNiwxLjAzNiwxLDEuMDM2LDEuMTY1NzksLjg3MzU3LDEuMzE4MTgsMS4xODc1NCwxLjI2NzgxLDEuMDUzNTYsMS4yMTIzNywxLjE4NjIyLC43OTQ4NywuOTQ5OTQsMS4yOTAwNCwxLjI0MDQ3LDEuMjQwNDcsMS4zMTgxOCwxLC45MTQ4NCwuOTc1NCwxLjMxODE4LDEuMTM0OSwxLjI0ODY2LDEuMDUzNTYsMS4xMzkzNCwxLjE1NTc0LDEuMTczODksLjczNTQxLC45NzM2MywuOTczNjMsLjk3MzYzLC45NzM2MywuOTczNjMsLjk3MzYzLC45NDM4NSwuODc4OTcsLjc5NDI5LC43OTQyOSwuNzk0MjksLjc5NDI5LDEuMTQwNiwxLjE0MDYsMS4xNDA2LDEuMTQwNiwxLjA0MjYsMS4xMDYxNSwuOTc1NTIsLjk3NTUyLC45NzU1MiwuOTc1NTIsLjk3NTUyLDEuMjEyMzcsLjk3NTUyLDEuMDAxMzUsMS4wMDEzNSwxLjAwMTM1LDEuMDAxMzUsLjkxMTQyLC45NDQzNiwuOTg3MjEsMS4wNjU4NSwxLjA2NTg1LDEuMDY1ODUsMS4wNjU4NSwxLjA2NTg1LDEuMDY1ODUsLjk2NzA1LC44MzA1NSwuOTM1MDMsLjkzNTAzLC45MzUwMywuOTM1MDMsMS4xNDIzNiwxLjE0MjM2LDEuMTQyMzYsMS4xNDIzNiwuOTMxMjUsLjk3OTIyLC45NDE2NSwuOTQxNjUsLjk0MTY1LC45NDE2NSwuOTQxNjUsMS4yOTAwNCwuOTQxNjUsLjk3OTIyLC45NzkyMiwuOTc5MjIsLjk3OTIyLC45Njc1MiwuOTcwNDIsLjk2NzUyLC45NzM2MywxLjA2NTg1LC45NzM2MywxLjA2NTg1LC45NzM2MywxLjA2NTg1LC44Nzg5NywuODMwNTUsLjg3ODk3LC44MzA1NSwuODc4OTcsLjgzMDU1LC44Nzg5NywuODMwNTUsMS4wNDI2LDEuMDAzMywxLjA0MjYsLjk3MDQyLC43OTQyOSwuOTM1MDMsLjc5NDI5LC45MzUwMywuNzk0MjksLjkzNTAzLC43OTQyOSwuOTM1MDMsLjc5NDI5LC45MzUwMywuOTExNDksLjk3MDQyLC45MTE0OSwuOTcwNDIsLjkxMTQ5LC45NzA0MiwxLDEsMS4wNTgxNSwuOTc5MjIsMS4wNTgxNSwuOTc5MjIsMS4xNDA2LDEuMTQyMzYsMS4xNDA2LDEuMTQyMzYsMS4xNDA2LDEuMTQyMzYsMS4xNDA2LDEuMTQyMzYsMS4xNDA2LDEuMTQyMzYsLjk3NDQxLDEuMDQzMDIsLjc5NjMxLDEuMDE1ODIsMSwxLDEuMDEwNTQsLjgzODUzLDEuMTQyMzYsMSwxLC44Mzg1MywxLjA5MTI1LC44Mzg1MywuOTA0MTgsLjgzODUzLDEuMTk1MDgsMS4xMDYxNSwuOTc5MjIsMSwxLDEuMTA2MTUsLjk3OTIyLDEuMDEwMzQsMS4xMDQ2NiwuOTc5MjIsLjk3NTUyLC45NDE2NSwuOTc1NTIsLjk0MTY1LC45NzU1MiwuOTQxNjUsLjkxNjAyLC45MTk4MSwuODg2NDEsMS4wMjc2LDEsMSwuODg2NDEsMS4wMjc2LC44MDUyNywuNzg5MjksLjgwNTI3LC43ODkyOSwuODA1MjcsLjc4OTI5LC44MDUyNywuNzg5MjksMSwxLC45NjA4MywxLjA1NDAzLC45NTkyMywxLjE2ODYyLDEuMDAxMzUsLjk3OTIyLDEuMDAxMzUsLjk3OTIyLDEuMDAxMzUsLjk3OTIyLDEuMDAxMzUsLjk3OTIyLDEuMDAxMzUsLjk3OTIyLDEuMDAxMzUsLjk3OTIyLDEuMDY3NzcsMS4wMjE5NywuOTExNDIsLjk2NzUyLC45MTE0MiwuOTkzNjEsLjk3MTY4LC45OTM2MSwuOTcxNjgsLjk5MzYxLC45NzE2OCwxLjIzMTk5LDEuMDM2LC45NzM2MywxLjA2NTg1LC45NDM4NSwuOTY3MDUsLjk3NTUyLC45NDE2NSwxLDEsLjk2MDgzLDEuMTI2MSwxLjMxODE4LDEuMzE4MTgsMS4zMTgxOCwxLjMxODE4LDEuMzE4MTgsMS4zMTgxOCwxLjMxODE4LDEuMzE4MTgsMS4zMTgxOCwuOTUxNjEsMS4yNzEyNiwxLjAwODExLC44MzI4NCwuNzc3MDIsLjk5MTM3LC45NTI1MywxLjAzNDcsLjg2MTQyLDEuMDcyMDUsMS4xNDIzNiwuOTczNjMsLjg5NzIzLC44Njg2OSwxLjA5ODE4LC43OTQyOSwuOTkzNjEsMS4wNTgxNSwuOTc1NTIsMS4xNDA2LC45MDEyOCwxLjA2NjYyLDEuMDQzOTYsMS4xMDYxNSwuODQ5MTgsLjk3NTUyLDEuMDQ2OTQsLjk0NDM2LC45ODAxNSwuOTYwODMsLjkxMTQyLDEuMDAzNTYsLjk4MTcsMS4wMTk0NSwuOTg5OTksMS4xNDA2LC45MTE0MiwxLjA0OTYxLC45ODk4LDEuMDA2MzksMS4xNDIzNiwxLjA3NTE0LDEuMDQ5NjEsLjk5NjA3LDEuMDI4OTcsMS4wMDgsLjk4OTgsLjk1MTM0LDEuMDA2MzksMS4xMTEyMSwxLjE0MjM2LDEuMDA1MTgsLjk3OTgxLDEuMDIxODYsMSwxLjA4NTc4LC45NDE2NSwuOTkzMTQsLjk4Mzg3LC45MzAyOCwuOTMzNzcsMS4zNTEyNSwxLjA3NTE0LDEuMTA2ODcsLjkzNDkxLDEuMDQyMzIsMS4wMDM1MSwxLjE0MjM2LDEuMDc1MTQsLjk0MTY1LDEuMDc1MTQsMS4wMDM1MSwuNzk0MjksMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wOTA5NywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTM1MDMsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjk2NjA5LDEsMSwxLDEsMSwxLDEuMDY3NzcsMS4wMjE5NywxLjA2Nzc3LDEuMDIxOTcsMS4wNjc3NywxLjAyMTk3LC45MTE0MiwuOTY3NTIsMSwxLjIxMjYxLC44OTkwMywxLDEsLjc1MTU1LDEuMDQ3NDUsMS4wNDc0NSwxLjA0NzQ1LDEuMDQzOTQsLjk4NjMzLC45ODYzMywuOTg2MzMsLjcyOTU5LC43Mjk1OSwxLjIwNTAyLC45MTQwNiwxLjI2NTE0LDEuMjIyLDEuMDI5NTYsMS4wMzM3MiwxLjAzMzcyLC45NjAzOSwxLjI0NjMzLDEsMS4wOTEyNSwuOTMzMjcsMS4wMzMzNiwxLjE2NTQxLDEuMDM2LDEsMSwxLC43NzEsMSwxLDEuMTU1NzQsMS4xNTU3NCwxLjE1NTc0LDEuMTU1NzQsLjg2MzY0LC45NDQzNCwuODYyNzksLjk0NDM0LC44NjIyNCwxLDEsMS4xNjc5OCwxLC45NjA4NSwuOTAwNjgsMS4yMTIzNywxLjE4NDE2LDEuMTM5MDQsLjY5ODI1LC45NzE2LDIuMTAzMzksMS4yOTAwNCwxLjI5MDA0LDEuMjEzMzksMS4yOTAwNCwxLjI5MDA0LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS40MjYwMywxLC45OTg2MiwuOTk4NjIsMSwuODcwMjUsLjg3MDI1LC44NzAyNSwuODcwMjUsMS4xODc3NSwxLjQyNjAzLDEsMS40MjYwMywxLjQyNjAzLC45OTg2MiwxLDEsMSwxLDEsMS4yODg2LDEuMDQzMTUsMS4xNTI5NiwxLjM0MTYzLDEsMSwxLDEuMTMyNjksMS4xMzI2OSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0sc3M9e2xpbmVIZWlnaHQ6MS4zMzAwOCxsaW5lR2FwOjB9LHJzPVsxLjc2NzM4LDEsMSwuOTg5NDYsMS4xNDc2MywxLjA1MzY1LDEuMDYyMzQsLjk2OTI3LC45MjU4NiwxLjE1MzczLDEuMTg0MTQsLjkxMzQ5LC45MTM0OSwxLjA3NDAzLDEuMTczMDgsLjc4MzgzLDEuMjAwODgsLjc4MzgzLDEuNDI1MzEsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC43ODM4MywuNzgzODMsMS4xNzMwOCwxLjE3MzA4LDEuMTczMDgsLjc3MzQ5LC45NDU2NSwuOTQ3MjksLjg1OTQ0LC44ODUwNiwuOTg1OCwuNzQ4MTcsLjgwMDE2LC44ODQ0OSwuOTgwMzksLjk1NzgyLC42OTIzOCwuODk4OTgsLjgzMjMxLC45ODE4MywxLjAzOTg5LC45NjkyNCwuODYyMzcsLjk2OTI0LC44MDU5NSwuNzQ1MjQsLjg2MDkxLC45NTQwMiwuOTQxNDMsLjk4NDQ4LC44ODU4LC44MzA4OSwuOTMyODUsMS4wOTQ5LDEuMzkwMTYsMS4wOTQ5LDEuNDU5OTQsLjc0NjI3LDEuMDQ4MzksLjk3NDU0LC45NzQ1NCwuODcyMDcsLjk3NDU0LC44NzUzMywxLjA2MTUxLC45NzQ1NCwxLjAwMTc2LDEuMTY0ODQsMS4wODEzMiwuOTgwNDcsMS4xNjQ4NCwxLjAyOTg5LDEuMDEwNTQsLjk2MjI1LC45NzQ1NCwuOTc0NTQsMS4wNjU5OCwuNzkwMDQsMS4xNjM0NCwxLjAwMzUxLC45NDYyOSwuOTk3MywuOTEwMTYsLjk2Nzc3LC45MDQzLC45MTA4MiwuOTI0ODEsLjkxMDgyLDEuMTczMDgsLjk1NzQ4LC45NjkyNywuOTY5MjcsMSwuOTY5MjcsLjkyNDgxLC44MDU5NywxLjA0ODM5LDEuMjMzOTMsMS4xNzgxLC45MjQ1LDEuMTczMDgsMS4yMDgwOCwuNjMyMTgsLjk0MjYxLDEuMjQ4MjIsMS4wOTk3MSwxLjA5OTcxLDEuMDQ4MzksMSwuODUyNzMsLjc4MDMyLDEuMDQ4MzksMS4wOTk3MSwxLjIyMzI2LC45MjQ1LDEuMDk4MzYsMS4xMzUyNSwxLjE1MjIyLC43MDQyNCwuOTQ3MjksLjk0NzI5LC45NDcyOSwuOTQ3MjksLjk0NzI5LC45NDcyOSwuODU0OTgsLjg4NTA2LC43NDgxNywuNzQ4MTcsLjc0ODE3LC43NDgxNywuOTU3ODIsLjk1NzgyLC45NTc4MiwuOTU3ODIsLjk4NTgsMS4wMzk4OSwuOTY5MjQsLjk2OTI0LC45NjkyNCwuOTY5MjQsLjk2OTI0LDEuMTczMDgsLjk2OTI0LC45NTQwMiwuOTU0MDIsLjk1NDAyLC45NTQwMiwuODMwODksLjg2MjM3LC44ODQwOSwuOTc0NTQsLjk3NDU0LC45NzQ1NCwuOTc0NTQsLjk3NDU0LC45NzQ1NCwuOTI5MTYsLjg3MjA3LC44NzUzMywuODc1MzMsLjg3NTMzLC44NzUzMywuOTMxNDYsLjkzMTQ2LC45MzE0NiwuOTMxNDYsLjkzODU0LDEuMDEwNTQsLjk2MjI1LC45NjIyNSwuOTYyMjUsLjk2MjI1LC45NjIyNSwxLjI0ODIyLC44NzYxLDEuMDAzNTEsMS4wMDM1MSwxLjAwMzUxLDEuMDAzNTEsLjk2Nzc3LC45NzQ1NCwuOTY3NzcsLjk0NzI5LC45NzQ1NCwuOTQ3MjksLjk3NDU0LC45NDcyOSwuOTc0NTQsLjg4NTA2LC44NzIwNywuODg1MDYsLjg3MjA3LC44ODUwNiwuODcyMDcsLjg4NTA2LC44NzIwNywuOTg1OCwuOTUzOTEsLjk4NTgsLjk3NDU0LC43NDgxNywuODc1MzMsLjc0ODE3LC44NzUzMywuNzQ4MTcsLjg3NTMzLC43NDgxNywuODc1MzMsLjc0ODE3LC44NzUzMywuODg0NDksLjk3NDU0LC44ODQ0OSwuOTc0NTQsLjg4NDQ5LC45NzQ1NCwxLDEsLjk4MDM5LDEuMDAxNzYsLjk4MDM5LDEuMDAxNzYsLjk1NzgyLC45MzE0NiwuOTU3ODIsLjkzMTQ2LC45NTc4MiwuOTMxNDYsLjk1NzgyLDEuMTY0ODQsLjk1NzgyLC45MzE0NiwuODQ0MjEsMS4xMjc2MSwuNjkyMzgsMS4wODEzMiwxLDEsLjk4MDQ3LC44MzIzMSwxLjE2NDg0LDEsMSwuODQ3MjMsMS4wNDg2MSwuODQ3MjMsLjc4NzU1LC44MzIzMSwxLjIzNzM2LDEuMDM5ODksMS4wMTA1NCwxLDEsMS4wMzk4OSwxLjAxMDU0LC45ODU3LDEuMDM4NDksMS4wMTA1NCwuOTY5MjQsLjk2MjI1LC45NjkyNCwuOTYyMjUsLjk2OTI0LC45NjIyNSwuOTIzODMsLjkwMTcxLC44MDU5NSwxLjA2NTk4LDEsMSwuODA1OTUsMS4wNjU5OCwuNzQ1MjQsLjc5MDA0LC43NDUyNCwuNzkwMDQsLjc0NTI0LC43OTAwNCwuNzQ1MjQsLjc5MDA0LDEsMSwuODYwOTEsMS4wMjc1OSwuODU3NzEsMS4xNjM0NCwuOTU0MDIsMS4wMDM1MSwuOTU0MDIsMS4wMDM1MSwuOTU0MDIsMS4wMDM1MSwuOTU0MDIsMS4wMDM1MSwuOTU0MDIsMS4wMDM1MSwuOTU0MDIsMS4wMDM1MSwuOTg0NDgsLjk5NzMsLjgzMDg5LC45Njc3NywuODMwODksLjkzMjg1LC45MDQzLC45MzI4NSwuOTA0MywuOTMyODUsLjkwNDMsMS4zMTg2OCwuOTY5MjcsLjk0NzI5LC45NzQ1NCwuODU0OTgsLjkyOTE2LC45NjkyNCwuODc2MSwxLDEsLjg2MDkxLDEuMTYzNDQsMS4wNDgzOSwxLjA0ODM5LDEuMDQ4MzksMS4wNDgzOSwxLjA0ODM5LDEuMDQ4MzksMS4wNDgzOSwxLjA0ODM5LDEuMDQ4MzksLjgxOTY1LC44MTk2NSwuOTQ3MjksLjc4MDMyLC43MTAyMiwuOTA4ODMsLjg0MTcxLC45OTg3NywuNzc1OTYsMS4wNTczNCwxLjIsLjk0NzI5LC44NTk0NCwuODI3OTEsLjk2MDcsLjc0ODE3LC45MzI4NSwuOTgwMzksLjk2OTI0LC45NTc4MiwuODk4OTgsLjk4MzE2LC45ODE4MywxLjAzOTg5LC43ODYxNCwuOTY5MjQsLjk3NjQyLC44NjIzNywuODYwNzUsLjg2MDkxLC44MzA4OSwuOTAwODIsLjg4NTgsLjk3Mjk2LDEuMDEyODQsLjk1NzgyLC44MzA4OSwxLjA5NzYsMS4wNCwxLjAzMzQyLDEuMiwxLjA2NzUsMS4wOTc2LC45ODIwNSwxLjAzODA5LDEuMDUwOTcsMS4wNCwuOTUzNjQsMS4wMzM0MiwxLjA1NDAxLDEuMiwxLjAyMTQ4LDEuMDExOSwxLjA0NzI0LDEuMDEyNywxLjAyNzMyLC45NjIyNSwuODk2NSwuOTc3ODMsLjkzNTc0LC45NDgxOCwxLjMwNjc5LDEuMDY3NSwxLjExODI2LC45OTgyMSwxLjA1NTcsMS4wMzI2LDEuMiwxLjA2NzUsLjk2MjI1LDEuMDY3NSwxLjAzMjYsLjc0ODE3LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMDM3NTQsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjg3NTMzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45ODcwNSwxLDEsMSwxLDEsMSwuOTg0NDgsLjk5NzMsLjk4NDQ4LC45OTczLC45ODQ0OCwuOTk3MywuODMwODksLjk2Nzc3LDEsMS4yMDA4OCwuODk5MDMsMSwxLC43NTE1NSwuOTQ5NDUsLjk0OTQ1LC45NDk0NSwuOTQ5NDUsMS4xMjMxNywxLjEyMzE3LDEuMTIzMTcsLjY3NjAzLC42NzYwMywxLjE1NjIxLC43MzU4NCwxLjIxMTkxLDEuMjIxMzUsMS4wNjQ4MywuOTQ4NjgsLjk0ODY4LC45NTk5NiwxLjI0NjMzLDEsMS4wNzQ5NywuODc3MDksLjk2OTI3LDEuMDE0NzMsLjk2OTI3LDEsMSwxLC43NzI5NSwxLDEsMS4wOTgzNiwxLjA5ODM2LDEuMDk4MzYsMS4wMTUyMiwuODYzMjEsLjk0NDM0LC44NjQ5LC45NDQzNCwuODYxODIsMSwxLDEuMDgzLDEsLjkxNTc4LC44NjQzOCwxLjE3MzA4LDEuMTg0MTYsMS4xNDU4OSwuNjk4MjUsLjk3NjIyLDEuOTY3OTEsMS4yNDgyMiwxLjI0ODIyLDEuMTczMDgsMS4yNDgyMiwxLjI0ODIyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS40MjYwMywxLC45OTg2MiwuOTk4NjIsMSwuODcwMjUsLjg3MDI1LC44NzAyNSwuODcwMjUsMS4xNzk4NCwxLjQyNjAzLDEsMS40MjYwMywxLjQyNjAzLC45OTg2MiwxLDEsMSwxLDEsMS4yODg2LDEuMDQzMTUsMS4xNTI5NiwxLjM0MTYzLDEsMSwxLDEuMTA3NDIsMS4xMDc0MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0sbnM9e2xpbmVIZWlnaHQ6MS4zMzAwOCxsaW5lR2FwOjB9LG9zPVsxLjc2NzM4LDEsMSwuOTg1OTQsMS4wMjI4NSwxLjEwNDU0LDEuMDYyMzQsLjk2OTI3LC45MjAzNywxLjE5OTg1LDEuMjA0NiwuOTA2MTYsLjkwNjE2LDEuMDcxNTIsMS4xNzE0LC43ODAzMiwxLjIwMDg4LC43ODAzMiwxLjQwMjQ2LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuNzgwMzIsLjc4MDMyLDEuMTcxNCwxLjE3MTQsMS4xNzE0LC44MDU5NywuOTQwODQsLjk2NzA2LC44NTk0NCwuODU3MzQsLjk3MDkzLC43NTg0MiwuNzk5MzYsLjg4MTk4LC45ODMxLC45NTc4MiwuNzEzODcsLjg2OTY5LC44NDYzNiwxLjA3Nzk2LDEuMDM1ODQsLjk2OTI0LC44Mzk2OCwuOTY5MjQsLjgyODI2LC43OTY0OSwuODU3NzEsLjk1MTMyLC45MzExOSwuOTg5NjUsLjg4NDMzLC44Mjg3LC45MzM2NSwxLjA4NjEyLDEuMzYzOCwxLjA4NjEyLDEuNDU3ODYsLjc0NjI3LC44MDQ5OSwuOTE0ODQsMS4wNTcwNywuOTIzODMsMS4wNTg4MiwuOTQwMywxLjEyNjU0LDEuMDU4ODIsMS4wMTc1NiwxLjA5MDExLDEuMDkwMTEsLjk5NDE0LDEuMDkwMTEsMS4wMzQsMS4wMTc1NiwxLjA1MzU2LDEuMDU3MDcsMS4wNTg4MiwxLjA0Mzk5LC44NDg2MywxLjIxOTY4LDEuMDE3NTYsLjk1ODAxLDEuMDAwNjgsLjkxNzk3LC45Njc3NywuOTA0MywuOTAzNTEsLjkyMTA1LC45MDM1MSwxLjE3MTQsLjg1MzM3LC45NjkyNywuOTY5MjcsLjk5OTEyLC45NjkyNywuOTIxMDUsLjgwNTk3LDEuMjQzNCwxLjIwODA4LDEuMDU5MzcsLjkwOTU3LDEuMTcxNCwxLjIwODA4LC43NTE1NSwuOTQyNjEsMS4yNDY0NCwxLjA5OTcxLDEuMDk5NzEsLjg0NzUxLDEsLjg1MjczLC43ODAzMiwuNjE1ODQsMS4wNTQyNSwxLjE3OTE0LC45MDk1NywxLjA4NjY1LDEuMTE1OTMsMS4xNDE2OSwuNzMzODEsLjk2NzA2LC45NjcwNiwuOTY3MDYsLjk2NzA2LC45NjcwNiwuOTY3MDYsLjg2MDM1LC44NTczNCwuNzU4NDIsLjc1ODQyLC43NTg0MiwuNzU4NDIsLjk1NzgyLC45NTc4MiwuOTU3ODIsLjk1NzgyLC45NzA5MywxLjAzNTg0LC45NjkyNCwuOTY5MjQsLjk2OTI0LC45NjkyNCwuOTY5MjQsMS4xNzE0LC45NjkyNCwuOTUxMzIsLjk1MTMyLC45NTEzMiwuOTUxMzIsLjgyODcsLjgzOTY4LC44OTA0OSwuOTE0ODQsLjkxNDg0LC45MTQ4NCwuOTE0ODQsLjkxNDg0LC45MTQ4NCwuOTM1NzUsLjkyMzgzLC45NDAzLC45NDAzLC45NDAzLC45NDAzLC44NzE3LC44NzE3LC44NzE3LC44NzE3LDEuMDA1MjcsMS4wMTc1NiwxLjA1MzU2LDEuMDUzNTYsMS4wNTM1NiwxLjA1MzU2LDEuMDUzNTYsMS4yNDY0NCwuOTU5MjMsMS4wMTc1NiwxLjAxNzU2LDEuMDE3NTYsMS4wMTc1NiwuOTY3NzcsMS4wNTcwNywuOTY3NzcsLjk2NzA2LC45MTQ4NCwuOTY3MDYsLjkxNDg0LC45NjcwNiwuOTE0ODQsLjg1NzM0LC45MjM4MywuODU3MzQsLjkyMzgzLC44NTczNCwuOTIzODMsLjg1NzM0LC45MjM4MywuOTcwOTMsMS4wOTY5LC45NzA5MywxLjA1ODgyLC43NTg0MiwuOTQwMywuNzU4NDIsLjk0MDMsLjc1ODQyLC45NDAzLC43NTg0MiwuOTQwMywuNzU4NDIsLjk0MDMsLjg4MTk4LDEuMDU4ODIsLjg4MTk4LDEuMDU4ODIsLjg4MTk4LDEuMDU4ODIsMSwxLC45ODMxLDEuMDE3NTYsLjk4MzEsMS4wMTc1NiwuOTU3ODIsLjg3MTcsLjk1NzgyLC44NzE3LC45NTc4MiwuODcxNywuOTU3ODIsMS4wOTAxMSwuOTU3ODIsLjg3MTcsLjg0Nzg0LDEuMTE1NTEsLjcxMzg3LDEuMDkwMTEsMSwxLC45OTQxNCwuODQ2MzYsMS4wOTAxMSwxLDEsLjg0NjM2LDEuMDUzNiwuODQ2MzYsLjk0Mjk4LC44NDYzNiwxLjIzMjk3LDEuMDM1ODQsMS4wMTc1NiwxLDEsMS4wMzU4NCwxLjAxNzU2LDEuMDAzMjMsMS4wMzQ0NCwxLjAxNzU2LC45NjkyNCwxLjA1MzU2LC45NjkyNCwxLjA1MzU2LC45NjkyNCwxLjA1MzU2LC45MzA2NiwuOTgyOTMsLjgyODI2LDEuMDQzOTksMSwxLC44MjgyNiwxLjA0Mzk5LC43OTY0OSwuODQ4NjMsLjc5NjQ5LC44NDg2MywuNzk2NDksLjg0ODYzLC43OTY0OSwuODQ4NjMsMSwxLC44NTc3MSwxLjE3MzE4LC44NTc3MSwxLjIxOTY4LC45NTEzMiwxLjAxNzU2LC45NTEzMiwxLjAxNzU2LC45NTEzMiwxLjAxNzU2LC45NTEzMiwxLjAxNzU2LC45NTEzMiwxLjAxNzU2LC45NTEzMiwxLjAxNzU2LC45ODk2NSwxLjAwMDY4LC44Mjg3LC45Njc3NywuODI4NywuOTMzNjUsLjkwNDMsLjkzMzY1LC45MDQzLC45MzM2NSwuOTA0MywxLjA4NTcxLC45NjkyNywuOTY3MDYsLjkxNDg0LC44NjAzNSwuOTM1NzUsLjk2OTI0LC45NTkyMywxLDEsLjg1NzcxLDEuMjE5NjgsMS4xMTQzNywxLjExNDM3LC45MzEwOSwuOTEyMDIsLjYwNDExLC44NDE2NCwuNTU1NzIsMS4wMTE3MywuOTczNjEsLjgxODE4LC44MTgxOCwuOTY2MzUsLjc4MDMyLC43MjcyNywuOTIzNjYsLjk4NjAxLDEuMDM0MDUsLjc3OTY4LDEuMDk3OTksMS4yLC45NjcwNiwuODU5NDQsLjg1NjM4LC45NjQ5MSwuNzU4NDIsLjkzMzY1LC45ODMxLC45NjkyNCwuOTU3ODIsLjg2OTY5LC45NDE1MiwxLjA3Nzk2LDEuMDM1ODQsLjc4NDM3LC45NjkyNCwuOTg3MTUsLjgzOTY4LC44MzQ5MSwuODU3NzEsLjgyODcsLjk0NDkyLC44ODQzMywuOTI4NywxLjAwOTgsLjk1NzgyLC44Mjg3LDEuMDYyNSwuOTgyNDgsMS4wMzQyNCwxLjIsMS4wMTA3MSwxLjA2MjUsLjk1MjQ2LDEuMDM4MDksMS4wNDkxMiwuOTgyNDgsMS4wMDIyMSwxLjAzNDI0LDEuMDU0NDMsMS4yLDEuMDQ3ODUsLjk5NjA5LDEuMDAxNjksMS4wNTE3NiwuOTkzNDYsMS4wNTM1NiwuOTA4NywxLjAzMDA0LC45NTU0MiwuOTMxMTcsMS4yMzM2MiwxLjAxMDcxLDEuMDc4MzEsMS4wMjUxMiwxLjA1MjA1LDEuMDM1MDIsMS4yLDEuMDEwNzEsMS4wNTM1NiwxLjAxMDcxLDEuMDM1MDIsLjc1ODQyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMDM3MTksMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjk0MDMsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wNDAyMSwxLDEsMSwxLDEsMSwuOTg5NjUsMS4wMDA2OCwuOTg5NjUsMS4wMDA2OCwuOTg5NjUsMS4wMDA2OCwuODI4NywuOTY3NzcsMSwxLjIwMDg4LC44OTkwMywxLDEsLjc1MTU1LDEuMDMwNzcsMS4wMzA3NywxLjAzMDc3LDEuMDMwNzcsMS4xMzE5NiwxLjEzMTk2LDEuMTMxOTYsLjY3NDI4LC42NzQyOCwxLjE2MDM5LC43MzI5MSwxLjIwOTk2LDEuMjIxMzUsMS4wNjQ4MywuOTQ4NjgsLjk0ODY4LC45NTk5NiwxLjI0NjMzLDEsMS4wNzQ5NywuODc3OTYsLjk2OTI3LDEuMDE1MTgsLjk2OTI3LDEsMSwxLC43NzI5NSwxLDEsMS4xMDUzOSwxLjEwNTM5LDEuMTEzNTgsMS4wNjk2NywuODYyNzksLjk0NDM0LC44NjI3OSwuOTQ0MzQsLjg2MTgyLDEsMSwxLjA4MywxLC45MTU3OCwuODY1MDcsMS4xNzE0LDEuMTg0MTYsMS4xNDU4OSwuNjk4MjUsLjk3NjIyLDEuOTY5NywxLjI0ODIyLDEuMjQ4MjIsMS4xNzIzOCwxLjI0ODIyLDEuMjQ4MjIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjQyNjAzLDEsLjk5ODYyLC45OTg2MiwxLC44NzAyNSwuODcwMjUsLjg3MDI1LC44NzAyNSwxLjE4MDgzLDEuNDI2MDMsMSwxLjQyNjAzLDEuNDI2MDMsLjk5ODYyLDEsMSwxLDEsMSwxLjI4ODYsMS4wNDMxNSwxLjE1Mjk2LDEuMzQxNjMsMSwxLDEsMS4xMDkzOCwxLjEwOTM4LDEsMSwxLDEuMDU0MjUsMS4wOTk3MSwxLjA5OTcxLDEuMDk5NzEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXSxncz17bGluZUhlaWdodDoxLjMzMDA4LGxpbmVHYXA6MH0sSXM9Z2V0TG9va3VwVGFibGVGYWN0b3J5KChmdW5jdGlvbihlKXtlWyJNeXJpYWRQcm8tUmVndWxhciJdPWVbIlBkZkpTLUZhbGxiYWNrLVJlZ3VsYXIiXT17bmFtZToiTGliZXJhdGlvblNhbnMtUmVndWxhciIsZmFjdG9yczpBcyxiYXNlV2lkdGhzOldhLGJhc2VNYXBwaW5nOmphLG1ldHJpY3M6ZXN9O2VbIk15cmlhZFByby1Cb2xkIl09ZVsiUGRmSlMtRmFsbGJhY2stQm9sZCJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkIixmYWN0b3JzOlhhLGJhc2VXaWR0aHM6dmEsYmFzZU1hcHBpbmc6S2EsbWV0cmljczpaYX07ZVsiTXlyaWFkUHJvLUl0Il09ZVsiTXlyaWFkUHJvLUl0YWxpYyJdPWVbIlBkZkpTLUZhbGxiYWNrLUl0YWxpYyJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1JdGFsaWMiLGZhY3RvcnM6X2EsYmFzZVdpZHRoczpPYSxiYXNlTWFwcGluZzpQYSxtZXRyaWNzOiRhfTtlWyJNeXJpYWRQcm8tQm9sZEl0Il09ZVsiTXlyaWFkUHJvLUJvbGRJdGFsaWMiXT1lWyJQZGZKUy1GYWxsYmFjay1Cb2xkSXRhbGljIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUJvbGRJdGFsaWMiLGZhY3RvcnM6VmEsYmFzZVdpZHRoczpUYSxiYXNlTWFwcGluZzpxYSxtZXRyaWNzOnphfTtlLkFyaWFsTVQ9ZS5BcmlhbD1lWyJBcmlhbC1SZWd1bGFyIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLVJlZ3VsYXIiLGJhc2VXaWR0aHM6V2EsYmFzZU1hcHBpbmc6amF9O2VbIkFyaWFsLUJvbGRNVCJdPWVbIkFyaWFsLUJvbGQiXT17bmFtZToiTGliZXJhdGlvblNhbnMtQm9sZCIsYmFzZVdpZHRoczp2YSxiYXNlTWFwcGluZzpLYX07ZVsiQXJpYWwtSXRhbGljTVQiXT1lWyJBcmlhbC1JdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtSXRhbGljIixiYXNlV2lkdGhzOk9hLGJhc2VNYXBwaW5nOlBhfTtlWyJBcmlhbC1Cb2xkSXRhbGljTVQiXT1lWyJBcmlhbC1Cb2xkSXRhbGljIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUJvbGRJdGFsaWMiLGJhc2VXaWR0aHM6VGEsYmFzZU1hcHBpbmc6cWF9O2VbIkNhbGlicmktUmVndWxhciJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1SZWd1bGFyIixmYWN0b3JzOk5hLGJhc2VXaWR0aHM6V2EsYmFzZU1hcHBpbmc6amEsbWV0cmljczpSYX07ZVsiQ2FsaWJyaS1Cb2xkIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUJvbGQiLGZhY3RvcnM6d2EsYmFzZVdpZHRoczp2YSxiYXNlTWFwcGluZzpLYSxtZXRyaWNzOmJhfTtlWyJDYWxpYnJpLUl0YWxpYyJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1JdGFsaWMiLGZhY3RvcnM6U2EsYmFzZVdpZHRoczpPYSxiYXNlTWFwcGluZzpQYSxtZXRyaWNzOmthfTtlWyJDYWxpYnJpLUJvbGRJdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtQm9sZEl0YWxpYyIsZmFjdG9yczpEYSxiYXNlV2lkdGhzOlRhLGJhc2VNYXBwaW5nOnFhLG1ldHJpY3M6RmF9O2VbIlNlZ29ldWktUmVndWxhciJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1SZWd1bGFyIixmYWN0b3JzOm9zLGJhc2VXaWR0aHM6V2EsYmFzZU1hcHBpbmc6amEsbWV0cmljczpnc307ZVsiU2Vnb2V1aS1Cb2xkIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUJvbGQiLGZhY3RvcnM6dHMsYmFzZVdpZHRoczp2YSxiYXNlTWFwcGluZzpLYSxtZXRyaWNzOmlzfTtlWyJTZWdvZXVpLUl0YWxpYyJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1JdGFsaWMiLGZhY3RvcnM6cnMsYmFzZVdpZHRoczpPYSxiYXNlTWFwcGluZzpQYSxtZXRyaWNzOm5zfTtlWyJTZWdvZXVpLUJvbGRJdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtQm9sZEl0YWxpYyIsZmFjdG9yczphcyxiYXNlV2lkdGhzOlRhLGJhc2VNYXBwaW5nOnFhLG1ldHJpY3M6c3N9O2VbIkhlbHZldGljYS1SZWd1bGFyIl09ZS5IZWx2ZXRpY2E9e25hbWU6IkxpYmVyYXRpb25TYW5zLVJlZ3VsYXIiLGZhY3RvcnM6SmEsYmFzZVdpZHRoczpXYSxiYXNlTWFwcGluZzpqYSxtZXRyaWNzOllhfTtlWyJIZWx2ZXRpY2EtQm9sZCJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkIixmYWN0b3JzOkdhLGJhc2VXaWR0aHM6dmEsYmFzZU1hcHBpbmc6S2EsbWV0cmljczp4YX07ZVsiSGVsdmV0aWNhLUl0YWxpYyJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1JdGFsaWMiLGZhY3RvcnM6TGEsYmFzZVdpZHRoczpPYSxiYXNlTWFwcGluZzpQYSxtZXRyaWNzOkhhfTtlWyJIZWx2ZXRpY2EtQm9sZEl0YWxpYyJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkSXRhbGljIixmYWN0b3JzOlVhLGJhc2VXaWR0aHM6VGEsYmFzZU1hcHBpbmc6cWEsbWV0cmljczpNYX19KSk7ZnVuY3Rpb24gZ2V0WGZhRm9udE5hbWUoZSl7Y29uc3QgdD1ub3JtYWxpemVGb250TmFtZShlKTtyZXR1cm4gSXMoKVt0XX1mdW5jdGlvbiBnZXRYZmFGb250RGljdChlKXtjb25zdCB0PWZ1bmN0aW9uIGdldFhmYUZvbnRXaWR0aHMoZSl7Y29uc3QgdD1nZXRYZmFGb250TmFtZShlKTtpZighdClyZXR1cm4gbnVsbDtjb25zdHtiYXNlV2lkdGhzOmksYmFzZU1hcHBpbmc6YSxmYWN0b3JzOnN9PXQscj1zP2kubWFwKCgoZSx0KT0+ZSpzW3RdKSk6aTtsZXQgbixvPS0yO2NvbnN0IGc9W107Zm9yKGNvbnN0W2UsdF1vZiBhLm1hcCgoKGUsdCk9PltlLHRdKSkuc29ydCgoKFtlXSxbdF0pPT5lLXQpKSlpZigtMSE9PWUpaWYoZT09PW8rMSl7bi5wdXNoKHJbdF0pO28rPTF9ZWxzZXtvPWU7bj1bclt0XV07Zy5wdXNoKGUsbil9cmV0dXJuIGd9KGUpLGk9bmV3IERpY3QobnVsbCk7aS5zZXQoIkJhc2VGb250IixOYW1lLmdldChlKSk7aS5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJGb250IikpO2kuc2V0KCJTdWJ0eXBlIixOYW1lLmdldCgiQ0lERm9udFR5cGUyIikpO2kuc2V0KCJFbmNvZGluZyIsTmFtZS5nZXQoIklkZW50aXR5LUgiKSk7aS5zZXQoIkNJRFRvR0lETWFwIixOYW1lLmdldCgiSWRlbnRpdHkiKSk7aS5zZXQoIlciLHQpO2kuc2V0KCJGaXJzdENoYXIiLHRbMF0pO2kuc2V0KCJMYXN0Q2hhciIsdC5hdCgtMikrdC5hdCgtMSkubGVuZ3RoLTEpO2NvbnN0IGE9bmV3IERpY3QobnVsbCk7aS5zZXQoIkZvbnREZXNjcmlwdG9yIixhKTtjb25zdCBzPW5ldyBEaWN0KG51bGwpO3Muc2V0KCJPcmRlcmluZyIsIklkZW50aXR5Iik7cy5zZXQoIlJlZ2lzdHJ5IiwiQWRvYmUiKTtzLnNldCgiU3VwcGxlbWVudCIsMCk7aS5zZXQoIkNJRFN5c3RlbUluZm8iLHMpO3JldHVybiBpfWNsYXNzIFBvc3RTY3JpcHRQYXJzZXJ7Y29uc3RydWN0b3IoZSl7dGhpcy5sZXhlcj1lO3RoaXMub3BlcmF0b3JzPVtdO3RoaXMudG9rZW49bnVsbDt0aGlzLnByZXY9bnVsbH1uZXh0VG9rZW4oKXt0aGlzLnByZXY9dGhpcy50b2tlbjt0aGlzLnRva2VuPXRoaXMubGV4ZXIuZ2V0VG9rZW4oKX1hY2NlcHQoZSl7aWYodGhpcy50b2tlbi50eXBlPT09ZSl7dGhpcy5uZXh0VG9rZW4oKTtyZXR1cm4hMH1yZXR1cm4hMX1leHBlY3QoZSl7aWYodGhpcy5hY2NlcHQoZSkpcmV0dXJuITA7dGhyb3cgbmV3IEZvcm1hdEVycm9yKGBVbmV4cGVjdGVkIHN5bWJvbDogZm91bmQgJHt0aGlzLnRva2VuLnR5cGV9IGV4cGVjdGVkICR7ZX0uYCl9cGFyc2UoKXt0aGlzLm5leHRUb2tlbigpO3RoaXMuZXhwZWN0KGNzLkxCUkFDRSk7dGhpcy5wYXJzZUJsb2NrKCk7dGhpcy5leHBlY3QoY3MuUkJSQUNFKTtyZXR1cm4gdGhpcy5vcGVyYXRvcnN9cGFyc2VCbG9jaygpe2Zvcig7OylpZih0aGlzLmFjY2VwdChjcy5OVU1CRVIpKXRoaXMub3BlcmF0b3JzLnB1c2godGhpcy5wcmV2LnZhbHVlKTtlbHNlIGlmKHRoaXMuYWNjZXB0KGNzLk9QRVJBVE9SKSl0aGlzLm9wZXJhdG9ycy5wdXNoKHRoaXMucHJldi52YWx1ZSk7ZWxzZXtpZighdGhpcy5hY2NlcHQoY3MuTEJSQUNFKSlyZXR1cm47dGhpcy5wYXJzZUNvbmRpdGlvbigpfX1wYXJzZUNvbmRpdGlvbigpe2NvbnN0IGU9dGhpcy5vcGVyYXRvcnMubGVuZ3RoO3RoaXMub3BlcmF0b3JzLnB1c2gobnVsbCxudWxsKTt0aGlzLnBhcnNlQmxvY2soKTt0aGlzLmV4cGVjdChjcy5SQlJBQ0UpO2lmKHRoaXMuYWNjZXB0KGNzLklGKSl7dGhpcy5vcGVyYXRvcnNbZV09dGhpcy5vcGVyYXRvcnMubGVuZ3RoO3RoaXMub3BlcmF0b3JzW2UrMV09Imp6In1lbHNle2lmKCF0aGlzLmFjY2VwdChjcy5MQlJBQ0UpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiUFMgRnVuY3Rpb246IGVycm9yIHBhcnNpbmcgY29uZGl0aW9uYWwuIik7e2NvbnN0IHQ9dGhpcy5vcGVyYXRvcnMubGVuZ3RoO3RoaXMub3BlcmF0b3JzLnB1c2gobnVsbCxudWxsKTtjb25zdCBpPXRoaXMub3BlcmF0b3JzLmxlbmd0aDt0aGlzLnBhcnNlQmxvY2soKTt0aGlzLmV4cGVjdChjcy5SQlJBQ0UpO3RoaXMuZXhwZWN0KGNzLklGRUxTRSk7dGhpcy5vcGVyYXRvcnNbdF09dGhpcy5vcGVyYXRvcnMubGVuZ3RoO3RoaXMub3BlcmF0b3JzW3QrMV09ImoiO3RoaXMub3BlcmF0b3JzW2VdPWk7dGhpcy5vcGVyYXRvcnNbZSsxXT0ianoifX19fWNvbnN0IGNzPXtMQlJBQ0U6MCxSQlJBQ0U6MSxOVU1CRVI6MixPUEVSQVRPUjozLElGOjQsSUZFTFNFOjV9O2NsYXNzIFBvc3RTY3JpcHRUb2tlbntzdGF0aWMgZ2V0IG9wQ2FjaGUoKXtyZXR1cm4gc2hhZG93KHRoaXMsIm9wQ2FjaGUiLE9iamVjdC5jcmVhdGUobnVsbCkpfWNvbnN0cnVjdG9yKGUsdCl7dGhpcy50eXBlPWU7dGhpcy52YWx1ZT10fXN0YXRpYyBnZXRPcGVyYXRvcihlKXtyZXR1cm4gUG9zdFNjcmlwdFRva2VuLm9wQ2FjaGVbZV18fD1uZXcgUG9zdFNjcmlwdFRva2VuKGNzLk9QRVJBVE9SLGUpfXN0YXRpYyBnZXQgTEJSQUNFKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJMQlJBQ0UiLG5ldyBQb3N0U2NyaXB0VG9rZW4oY3MuTEJSQUNFLCJ7IikpfXN0YXRpYyBnZXQgUkJSQUNFKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJSQlJBQ0UiLG5ldyBQb3N0U2NyaXB0VG9rZW4oY3MuUkJSQUNFLCJ9IikpfXN0YXRpYyBnZXQgSUYoKXtyZXR1cm4gc2hhZG93KHRoaXMsIklGIixuZXcgUG9zdFNjcmlwdFRva2VuKGNzLklGLCJJRiIpKX1zdGF0aWMgZ2V0IElGRUxTRSgpe3JldHVybiBzaGFkb3codGhpcywiSUZFTFNFIixuZXcgUG9zdFNjcmlwdFRva2VuKGNzLklGRUxTRSwiSUZFTFNFIikpfX1jbGFzcyBQb3N0U2NyaXB0TGV4ZXJ7Y29uc3RydWN0b3IoZSl7dGhpcy5zdHJlYW09ZTt0aGlzLm5leHRDaGFyKCk7dGhpcy5zdHJCdWY9W119bmV4dENoYXIoKXtyZXR1cm4gdGhpcy5jdXJyZW50Q2hhcj10aGlzLnN0cmVhbS5nZXRCeXRlKCl9Z2V0VG9rZW4oKXtsZXQgZT0hMSx0PXRoaXMuY3VycmVudENoYXI7Zm9yKDs7KXtpZih0PDApcmV0dXJuIHB0O2lmKGUpMTAhPT10JiYxMyE9PXR8fChlPSExKTtlbHNlIGlmKDM3PT09dCllPSEwO2Vsc2UgaWYoIWlzV2hpdGVTcGFjZSh0KSlicmVhazt0PXRoaXMubmV4dENoYXIoKX1zd2l0Y2goMHx0KXtjYXNlIDQ4OmNhc2UgNDk6Y2FzZSA1MDpjYXNlIDUxOmNhc2UgNTI6Y2FzZSA1MzpjYXNlIDU0OmNhc2UgNTU6Y2FzZSA1NjpjYXNlIDU3OmNhc2UgNDM6Y2FzZSA0NTpjYXNlIDQ2OnJldHVybiBuZXcgUG9zdFNjcmlwdFRva2VuKGNzLk5VTUJFUix0aGlzLmdldE51bWJlcigpKTtjYXNlIDEyMzp0aGlzLm5leHRDaGFyKCk7cmV0dXJuIFBvc3RTY3JpcHRUb2tlbi5MQlJBQ0U7Y2FzZSAxMjU6dGhpcy5uZXh0Q2hhcigpO3JldHVybiBQb3N0U2NyaXB0VG9rZW4uUkJSQUNFfWNvbnN0IGk9dGhpcy5zdHJCdWY7aS5sZW5ndGg9MDtpWzBdPVN0cmluZy5mcm9tQ2hhckNvZGUodCk7Zm9yKDsodD10aGlzLm5leHRDaGFyKCkpPj0wJiYodD49NjUmJnQ8PTkwfHx0Pj05NyYmdDw9MTIyKTspaS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUodCkpO2NvbnN0IGE9aS5qb2luKCIiKTtzd2l0Y2goYS50b0xvd2VyQ2FzZSgpKXtjYXNlImlmIjpyZXR1cm4gUG9zdFNjcmlwdFRva2VuLklGO2Nhc2UiaWZlbHNlIjpyZXR1cm4gUG9zdFNjcmlwdFRva2VuLklGRUxTRTtkZWZhdWx0OnJldHVybiBQb3N0U2NyaXB0VG9rZW4uZ2V0T3BlcmF0b3IoYSl9fWdldE51bWJlcigpe2xldCBlPXRoaXMuY3VycmVudENoYXI7Y29uc3QgdD10aGlzLnN0ckJ1Zjt0Lmxlbmd0aD0wO3RbMF09U3RyaW5nLmZyb21DaGFyQ29kZShlKTtmb3IoOyhlPXRoaXMubmV4dENoYXIoKSk+PTAmJihlPj00OCYmZTw9NTd8fDQ1PT09ZXx8NDY9PT1lKTspdC5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoZSkpO2NvbnN0IGk9cGFyc2VGbG9hdCh0LmpvaW4oIiIpKTtpZihpc05hTihpKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEludmFsaWQgZmxvYXRpbmcgcG9pbnQgbnVtYmVyOiAke2l9YCk7cmV0dXJuIGl9fWNsYXNzIEJhc2VMb2NhbENhY2hle2NvbnN0cnVjdG9yKGUpe3RoaXMuY29uc3RydWN0b3I9PT1CYXNlTG9jYWxDYWNoZSYmdW5yZWFjaGFibGUoIkNhbm5vdCBpbml0aWFsaXplIEJhc2VMb2NhbENhY2hlLiIpO3RoaXMuX29ubHlSZWZzPSEwPT09ZT8ub25seVJlZnM7aWYoIXRoaXMuX29ubHlSZWZzKXt0aGlzLl9uYW1lUmVmTWFwPW5ldyBNYXA7dGhpcy5faW1hZ2VNYXA9bmV3IE1hcH10aGlzLl9pbWFnZUNhY2hlPW5ldyBSZWZTZXRDYWNoZX1nZXRCeU5hbWUoZSl7dGhpcy5fb25seVJlZnMmJnVucmVhY2hhYmxlKCJTaG91bGQgbm90IGNhbGwgYGdldEJ5TmFtZWAgbWV0aG9kLiIpO2NvbnN0IHQ9dGhpcy5fbmFtZVJlZk1hcC5nZXQoZSk7cmV0dXJuIHQ/dGhpcy5nZXRCeVJlZih0KTp0aGlzLl9pbWFnZU1hcC5nZXQoZSl8fG51bGx9Z2V0QnlSZWYoZSl7cmV0dXJuIHRoaXMuX2ltYWdlQ2FjaGUuZ2V0KGUpfHxudWxsfXNldChlLHQsaSl7dW5yZWFjaGFibGUoIkFic3RyYWN0IG1ldGhvZCBgc2V0YCBjYWxsZWQuIil9fWNsYXNzIExvY2FsSW1hZ2VDYWNoZSBleHRlbmRzIEJhc2VMb2NhbENhY2hle3NldChlLHQ9bnVsbCxpKXtpZigic3RyaW5nIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yKCdMb2NhbEltYWdlQ2FjaGUuc2V0IC0gZXhwZWN0ZWQgIm5hbWUiIGFyZ3VtZW50LicpO2lmKHQpe2lmKHRoaXMuX2ltYWdlQ2FjaGUuaGFzKHQpKXJldHVybjt0aGlzLl9uYW1lUmVmTWFwLnNldChlLHQpO3RoaXMuX2ltYWdlQ2FjaGUucHV0KHQsaSl9ZWxzZSB0aGlzLl9pbWFnZU1hcC5oYXMoZSl8fHRoaXMuX2ltYWdlTWFwLnNldChlLGkpfX1jbGFzcyBMb2NhbENvbG9yU3BhY2VDYWNoZSBleHRlbmRzIEJhc2VMb2NhbENhY2hle3NldChlPW51bGwsdD1udWxsLGkpe2lmKCJzdHJpbmciIT10eXBlb2YgZSYmIXQpdGhyb3cgbmV3IEVycm9yKCdMb2NhbENvbG9yU3BhY2VDYWNoZS5zZXQgLSBleHBlY3RlZCAibmFtZSIgYW5kL29yICJyZWYiIGFyZ3VtZW50LicpO2lmKHQpe2lmKHRoaXMuX2ltYWdlQ2FjaGUuaGFzKHQpKXJldHVybjtudWxsIT09ZSYmdGhpcy5fbmFtZVJlZk1hcC5zZXQoZSx0KTt0aGlzLl9pbWFnZUNhY2hlLnB1dCh0LGkpfWVsc2UgdGhpcy5faW1hZ2VNYXAuaGFzKGUpfHx0aGlzLl9pbWFnZU1hcC5zZXQoZSxpKX19Y2xhc3MgTG9jYWxGdW5jdGlvbkNhY2hlIGV4dGVuZHMgQmFzZUxvY2FsQ2FjaGV7Y29uc3RydWN0b3IoZSl7c3VwZXIoe29ubHlSZWZzOiEwfSl9c2V0KGU9bnVsbCx0LGkpe2lmKCF0KXRocm93IG5ldyBFcnJvcignTG9jYWxGdW5jdGlvbkNhY2hlLnNldCAtIGV4cGVjdGVkICJyZWYiIGFyZ3VtZW50LicpO3RoaXMuX2ltYWdlQ2FjaGUuaGFzKHQpfHx0aGlzLl9pbWFnZUNhY2hlLnB1dCh0LGkpfX1jbGFzcyBMb2NhbEdTdGF0ZUNhY2hlIGV4dGVuZHMgQmFzZUxvY2FsQ2FjaGV7c2V0KGUsdD1udWxsLGkpe2lmKCJzdHJpbmciIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3IoJ0xvY2FsR1N0YXRlQ2FjaGUuc2V0IC0gZXhwZWN0ZWQgIm5hbWUiIGFyZ3VtZW50LicpO2lmKHQpe2lmKHRoaXMuX2ltYWdlQ2FjaGUuaGFzKHQpKXJldHVybjt0aGlzLl9uYW1lUmVmTWFwLnNldChlLHQpO3RoaXMuX2ltYWdlQ2FjaGUucHV0KHQsaSl9ZWxzZSB0aGlzLl9pbWFnZU1hcC5oYXMoZSl8fHRoaXMuX2ltYWdlTWFwLnNldChlLGkpfX1jbGFzcyBMb2NhbFRpbGluZ1BhdHRlcm5DYWNoZSBleHRlbmRzIEJhc2VMb2NhbENhY2hle2NvbnN0cnVjdG9yKGUpe3N1cGVyKHtvbmx5UmVmczohMH0pfXNldChlPW51bGwsdCxpKXtpZighdCl0aHJvdyBuZXcgRXJyb3IoJ0xvY2FsVGlsaW5nUGF0dGVybkNhY2hlLnNldCAtIGV4cGVjdGVkICJyZWYiIGFyZ3VtZW50LicpO3RoaXMuX2ltYWdlQ2FjaGUuaGFzKHQpfHx0aGlzLl9pbWFnZUNhY2hlLnB1dCh0LGkpfX1jbGFzcyBSZWdpb25hbEltYWdlQ2FjaGUgZXh0ZW5kcyBCYXNlTG9jYWxDYWNoZXtjb25zdHJ1Y3RvcihlKXtzdXBlcih7b25seVJlZnM6ITB9KX1zZXQoZT1udWxsLHQsaSl7aWYoIXQpdGhyb3cgbmV3IEVycm9yKCdSZWdpb25hbEltYWdlQ2FjaGUuc2V0IC0gZXhwZWN0ZWQgInJlZiIgYXJndW1lbnQuJyk7dGhpcy5faW1hZ2VDYWNoZS5oYXModCl8fHRoaXMuX2ltYWdlQ2FjaGUucHV0KHQsaSl9fWNsYXNzIEdsb2JhbEltYWdlQ2FjaGV7c3RhdGljIE5VTV9QQUdFU19USFJFU0hPTEQ9MjtzdGF0aWMgTUlOX0lNQUdFU19UT19DQUNIRT0xMDtzdGF0aWMgTUFYX0JZVEVfU0laRT01ZTc7Y29uc3RydWN0b3IoKXt0aGlzLl9yZWZDYWNoZT1uZXcgUmVmU2V0Q2FjaGU7dGhpcy5faW1hZ2VDYWNoZT1uZXcgUmVmU2V0Q2FjaGV9Z2V0IF9ieXRlU2l6ZSgpe2xldCBlPTA7Zm9yKGNvbnN0IHQgb2YgdGhpcy5faW1hZ2VDYWNoZSllKz10LmJ5dGVTaXplO3JldHVybiBlfWdldCBfY2FjaGVMaW1pdFJlYWNoZWQoKXtyZXR1cm4hKHRoaXMuX2ltYWdlQ2FjaGUuc2l6ZTxHbG9iYWxJbWFnZUNhY2hlLk1JTl9JTUFHRVNfVE9fQ0FDSEUpJiYhKHRoaXMuX2J5dGVTaXplPEdsb2JhbEltYWdlQ2FjaGUuTUFYX0JZVEVfU0laRSl9c2hvdWxkQ2FjaGUoZSx0KXtsZXQgaT10aGlzLl9yZWZDYWNoZS5nZXQoZSk7aWYoIWkpe2k9bmV3IFNldDt0aGlzLl9yZWZDYWNoZS5wdXQoZSxpKX1pLmFkZCh0KTtyZXR1cm4hKGkuc2l6ZTxHbG9iYWxJbWFnZUNhY2hlLk5VTV9QQUdFU19USFJFU0hPTEQpJiYhKCF0aGlzLl9pbWFnZUNhY2hlLmhhcyhlKSYmdGhpcy5fY2FjaGVMaW1pdFJlYWNoZWQpfWFkZEJ5dGVTaXplKGUsdCl7Y29uc3QgaT10aGlzLl9pbWFnZUNhY2hlLmdldChlKTtpJiYoaS5ieXRlU2l6ZXx8KGkuYnl0ZVNpemU9dCkpfWdldERhdGEoZSx0KXtjb25zdCBpPXRoaXMuX3JlZkNhY2hlLmdldChlKTtpZighaSlyZXR1cm4gbnVsbDtpZihpLnNpemU8R2xvYmFsSW1hZ2VDYWNoZS5OVU1fUEFHRVNfVEhSRVNIT0xEKXJldHVybiBudWxsO2NvbnN0IGE9dGhpcy5faW1hZ2VDYWNoZS5nZXQoZSk7aWYoIWEpcmV0dXJuIG51bGw7aS5hZGQodCk7cmV0dXJuIGF9c2V0RGF0YShlLHQpe2lmKCF0aGlzLl9yZWZDYWNoZS5oYXMoZSkpdGhyb3cgbmV3IEVycm9yKCdHbG9iYWxJbWFnZUNhY2hlLnNldERhdGEgLSBleHBlY3RlZCAic2hvdWxkQ2FjaGUiIHRvIGhhdmUgYmVlbiBjYWxsZWQuJyk7dGhpcy5faW1hZ2VDYWNoZS5oYXMoZSl8fCh0aGlzLl9jYWNoZUxpbWl0UmVhY2hlZD93YXJuKCJHbG9iYWxJbWFnZUNhY2hlLnNldERhdGEgLSBjYWNoZSBsaW1pdCByZWFjaGVkLiIpOnRoaXMuX2ltYWdlQ2FjaGUucHV0KGUsdCkpfWNsZWFyKGU9ITEpe2V8fHRoaXMuX3JlZkNhY2hlLmNsZWFyKCk7dGhpcy5faW1hZ2VDYWNoZS5jbGVhcigpfX1jbGFzcyBQREZGdW5jdGlvbkZhY3Rvcnl7Y29uc3RydWN0b3Ioe3hyZWY6ZSxpc0V2YWxTdXBwb3J0ZWQ6dD0hMH0pe3RoaXMueHJlZj1lO3RoaXMuaXNFdmFsU3VwcG9ydGVkPSExIT09dH1jcmVhdGUoZSl7Y29uc3QgdD10aGlzLmdldENhY2hlZChlKTtpZih0KXJldHVybiB0O2NvbnN0IGk9UERGRnVuY3Rpb24ucGFyc2Uoe3hyZWY6dGhpcy54cmVmLGlzRXZhbFN1cHBvcnRlZDp0aGlzLmlzRXZhbFN1cHBvcnRlZCxmbjplIGluc3RhbmNlb2YgUmVmP3RoaXMueHJlZi5mZXRjaChlKTplfSk7dGhpcy5fY2FjaGUoZSxpKTtyZXR1cm4gaX1jcmVhdGVGcm9tQXJyYXkoZSl7Y29uc3QgdD10aGlzLmdldENhY2hlZChlKTtpZih0KXJldHVybiB0O2NvbnN0IGk9UERGRnVuY3Rpb24ucGFyc2VBcnJheSh7eHJlZjp0aGlzLnhyZWYsaXNFdmFsU3VwcG9ydGVkOnRoaXMuaXNFdmFsU3VwcG9ydGVkLGZuT2JqOmUgaW5zdGFuY2VvZiBSZWY/dGhpcy54cmVmLmZldGNoKGUpOmV9KTt0aGlzLl9jYWNoZShlLGkpO3JldHVybiBpfWdldENhY2hlZChlKXtsZXQgdDtlIGluc3RhbmNlb2YgUmVmP3Q9ZTplIGluc3RhbmNlb2YgRGljdD90PWUub2JqSWQ6ZSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0mJih0PWUuZGljdD8ub2JqSWQpO2lmKHQpe2NvbnN0IGU9dGhpcy5fbG9jYWxGdW5jdGlvbkNhY2hlLmdldEJ5UmVmKHQpO2lmKGUpcmV0dXJuIGV9cmV0dXJuIG51bGx9X2NhY2hlKGUsdCl7aWYoIXQpdGhyb3cgbmV3IEVycm9yKCdQREZGdW5jdGlvbkZhY3RvcnkuX2NhY2hlIC0gZXhwZWN0ZWQgInBhcnNlZEZ1bmN0aW9uIiBhcmd1bWVudC4nKTtsZXQgaTtlIGluc3RhbmNlb2YgUmVmP2k9ZTplIGluc3RhbmNlb2YgRGljdD9pPWUub2JqSWQ6ZSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0mJihpPWUuZGljdD8ub2JqSWQpO2kmJnRoaXMuX2xvY2FsRnVuY3Rpb25DYWNoZS5zZXQobnVsbCxpLHQpfWdldCBfbG9jYWxGdW5jdGlvbkNhY2hlKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJfbG9jYWxGdW5jdGlvbkNhY2hlIixuZXcgTG9jYWxGdW5jdGlvbkNhY2hlKX19ZnVuY3Rpb24gdG9OdW1iZXJBcnJheShlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT9pc051bWJlckFycmF5KGUsbnVsbCk/ZTplLm1hcCgoZT0+K2UpKTpudWxsfWNsYXNzIFBERkZ1bmN0aW9ue3N0YXRpYyBnZXRTYW1wbGVBcnJheShlLHQsaSxhKXtsZXQgcyxyLG49MTtmb3Iocz0wLHI9ZS5sZW5ndGg7czxyO3MrKyluKj1lW3NdO24qPXQ7Y29uc3Qgbz1uZXcgQXJyYXkobik7bGV0IGc9MCxjPTA7Y29uc3QgQz0xLygyKippLTEpLGg9YS5nZXRCeXRlcygobippKzcpLzgpO2xldCBsPTA7Zm9yKHM9MDtzPG47cysrKXtmb3IoO2c8aTspe2M8PD04O2N8PWhbbCsrXTtnKz04fWctPWk7b1tzXT0oYz4+ZykqQztjJj0oMTw8ZyktMX1yZXR1cm4gb31zdGF0aWMgcGFyc2Uoe3hyZWY6ZSxpc0V2YWxTdXBwb3J0ZWQ6dCxmbjppfSl7Y29uc3QgYT1pLmRpY3R8fGk7c3dpdGNoKGEuZ2V0KCJGdW5jdGlvblR5cGUiKSl7Y2FzZSAwOnJldHVybiB0aGlzLmNvbnN0cnVjdFNhbXBsZWQoe3hyZWY6ZSxpc0V2YWxTdXBwb3J0ZWQ6dCxmbjppLGRpY3Q6YX0pO2Nhc2UgMTpicmVhaztjYXNlIDI6cmV0dXJuIHRoaXMuY29uc3RydWN0SW50ZXJwb2xhdGVkKHt4cmVmOmUsaXNFdmFsU3VwcG9ydGVkOnQsZGljdDphfSk7Y2FzZSAzOnJldHVybiB0aGlzLmNvbnN0cnVjdFN0aWNoZWQoe3hyZWY6ZSxpc0V2YWxTdXBwb3J0ZWQ6dCxkaWN0OmF9KTtjYXNlIDQ6cmV0dXJuIHRoaXMuY29uc3RydWN0UG9zdFNjcmlwdCh7eHJlZjplLGlzRXZhbFN1cHBvcnRlZDp0LGZuOmksZGljdDphfSl9dGhyb3cgbmV3IEZvcm1hdEVycm9yKCJVbmtub3duIHR5cGUgb2YgZnVuY3Rpb24iKX1zdGF0aWMgcGFyc2VBcnJheSh7eHJlZjplLGlzRXZhbFN1cHBvcnRlZDp0LGZuT2JqOml9KXtpZighQXJyYXkuaXNBcnJheShpKSlyZXR1cm4gdGhpcy5wYXJzZSh7eHJlZjplLGlzRXZhbFN1cHBvcnRlZDp0LGZuOml9KTtjb25zdCBhPVtdO2Zvcihjb25zdCBzIG9mIGkpYS5wdXNoKHRoaXMucGFyc2Uoe3hyZWY6ZSxpc0V2YWxTdXBwb3J0ZWQ6dCxmbjplLmZldGNoSWZSZWYocyl9KSk7cmV0dXJuIGZ1bmN0aW9uKGUsdCxpLHMpe2ZvcihsZXQgcj0wLG49YS5sZW5ndGg7cjxuO3IrKylhW3JdKGUsdCxpLHMrcil9fXN0YXRpYyBjb25zdHJ1Y3RTYW1wbGVkKHt4cmVmOmUsaXNFdmFsU3VwcG9ydGVkOnQsZm46aSxkaWN0OmF9KXtmdW5jdGlvbiB0b011bHRpQXJyYXkoZSl7Y29uc3QgdD1lLmxlbmd0aCxpPVtdO2xldCBhPTA7Zm9yKGxldCBzPTA7czx0O3MrPTIpaVthKytdPVtlW3NdLGVbcysxXV07cmV0dXJuIGl9ZnVuY3Rpb24gaW50ZXJwb2xhdGUoZSx0LGksYSxzKXtyZXR1cm4gYSsocy1hKS8oaS10KSooZS10KX1sZXQgcz10b051bWJlckFycmF5KGEuZ2V0QXJyYXkoIkRvbWFpbiIpKSxyPXRvTnVtYmVyQXJyYXkoYS5nZXRBcnJheSgiUmFuZ2UiKSk7aWYoIXN8fCFyKXRocm93IG5ldyBGb3JtYXRFcnJvcigiTm8gZG9tYWluIG9yIHJhbmdlIik7Y29uc3Qgbj1zLmxlbmd0aC8yLG89ci5sZW5ndGgvMjtzPXRvTXVsdGlBcnJheShzKTtyPXRvTXVsdGlBcnJheShyKTtjb25zdCBnPXRvTnVtYmVyQXJyYXkoYS5nZXRBcnJheSgiU2l6ZSIpKSxjPWEuZ2V0KCJCaXRzUGVyU2FtcGxlIiksQz1hLmdldCgiT3JkZXIiKXx8MTsxIT09QyYmaW5mbygiTm8gc3VwcG9ydCBmb3IgY3ViaWMgc3BsaW5lIGludGVycG9sYXRpb246ICIrQyk7bGV0IGg9dG9OdW1iZXJBcnJheShhLmdldEFycmF5KCJFbmNvZGUiKSk7aWYoaCloPXRvTXVsdGlBcnJheShoKTtlbHNle2g9W107Zm9yKGxldCBlPTA7ZTxuOysrZSloLnB1c2goWzAsZ1tlXS0xXSl9bGV0IGw9dG9OdW1iZXJBcnJheShhLmdldEFycmF5KCJEZWNvZGUiKSk7bD1sP3RvTXVsdGlBcnJheShsKTpyO2NvbnN0IFE9dGhpcy5nZXRTYW1wbGVBcnJheShnLG8sYyxpKTtyZXR1cm4gZnVuY3Rpb24gY29uc3RydWN0U2FtcGxlZEZuKGUsdCxpLGEpe2NvbnN0IGM9MTw8bixDPW5ldyBGbG9hdDY0QXJyYXkoYyksRT1uZXcgVWludDMyQXJyYXkoYyk7bGV0IHUsZDtmb3IoZD0wO2Q8YztkKyspQ1tkXT0xO2xldCBmPW8scD0xO2Zvcih1PTA7dTxuOysrdSl7Y29uc3QgaT1zW3VdWzBdLGE9c1t1XVsxXTtsZXQgcj1pbnRlcnBvbGF0ZShNYXRoLm1pbihNYXRoLm1heChlW3QrdV0saSksYSksaSxhLGhbdV1bMF0saFt1XVsxXSk7Y29uc3Qgbj1nW3VdO3I9TWF0aC5taW4oTWF0aC5tYXgociwwKSxuLTEpO2NvbnN0IG89cjxuLTE/TWF0aC5mbG9vcihyKTpyLTEsbD1vKzEtcixRPXItbyxtPW8qZix5PW0rZjtmb3IoZD0wO2Q8YztkKyspaWYoZCZwKXtDW2RdKj1RO0VbZF0rPXl9ZWxzZXtDW2RdKj1sO0VbZF0rPW19Zio9bjtwPDw9MX1mb3IoZD0wO2Q8bzsrK2Qpe2xldCBlPTA7Zm9yKHU9MDt1PGM7dSsrKWUrPVFbRVt1XStkXSpDW3VdO2U9aW50ZXJwb2xhdGUoZSwwLDEsbFtkXVswXSxsW2RdWzFdKTtpW2ErZF09TWF0aC5taW4oTWF0aC5tYXgoZSxyW2RdWzBdKSxyW2RdWzFdKX19fXN0YXRpYyBjb25zdHJ1Y3RJbnRlcnBvbGF0ZWQoe3hyZWY6ZSxpc0V2YWxTdXBwb3J0ZWQ6dCxkaWN0Oml9KXtjb25zdCBhPXRvTnVtYmVyQXJyYXkoaS5nZXRBcnJheSgiQzAiKSl8fFswXSxzPXRvTnVtYmVyQXJyYXkoaS5nZXRBcnJheSgiQzEiKSl8fFsxXSxyPWkuZ2V0KCJOIiksbj1bXTtmb3IobGV0IGU9MCx0PWEubGVuZ3RoO2U8dDsrK2Upbi5wdXNoKHNbZV0tYVtlXSk7Y29uc3Qgbz1uLmxlbmd0aDtyZXR1cm4gZnVuY3Rpb24gY29uc3RydWN0SW50ZXJwb2xhdGVkRm4oZSx0LGkscyl7Y29uc3QgZz0xPT09cj9lW3RdOmVbdF0qKnI7Zm9yKGxldCBlPTA7ZTxvOysrZSlpW3MrZV09YVtlXStnKm5bZV19fXN0YXRpYyBjb25zdHJ1Y3RTdGljaGVkKHt4cmVmOmUsaXNFdmFsU3VwcG9ydGVkOnQsZGljdDppfSl7Y29uc3QgYT10b051bWJlckFycmF5KGkuZ2V0QXJyYXkoIkRvbWFpbiIpKTtpZighYSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIk5vIGRvbWFpbiIpO2lmKDEhPT1hLmxlbmd0aC8yKXRocm93IG5ldyBGb3JtYXRFcnJvcigiQmFkIGRvbWFpbiBmb3Igc3RpY2hlZCBmdW5jdGlvbiIpO2NvbnN0IHM9W107Zm9yKGNvbnN0IGEgb2YgaS5nZXQoIkZ1bmN0aW9ucyIpKXMucHVzaCh0aGlzLnBhcnNlKHt4cmVmOmUsaXNFdmFsU3VwcG9ydGVkOnQsZm46ZS5mZXRjaElmUmVmKGEpfSkpO2NvbnN0IHI9dG9OdW1iZXJBcnJheShpLmdldEFycmF5KCJCb3VuZHMiKSksbj10b051bWJlckFycmF5KGkuZ2V0QXJyYXkoIkVuY29kZSIpKSxvPW5ldyBGbG9hdDMyQXJyYXkoMSk7cmV0dXJuIGZ1bmN0aW9uIGNvbnN0cnVjdFN0aWNoZWRGbihlLHQsaSxnKXtjb25zdCBjPWZ1bmN0aW9uIGNvbnN0cnVjdFN0aWNoZWRGcm9tSVJDbGlwKGUsdCxpKXtlPmk/ZT1pOmU8dCYmKGU9dCk7cmV0dXJuIGV9KGVbdF0sYVswXSxhWzFdKSxDPXIubGVuZ3RoO2xldCBoO2ZvcihoPTA7aDxDJiYhKGM8cltoXSk7KytoKTtsZXQgbD1hWzBdO2g+MCYmKGw9cltoLTFdKTtsZXQgUT1hWzFdO2g8ci5sZW5ndGgmJihRPXJbaF0pO2NvbnN0IEU9blsyKmhdLHU9blsyKmgrMV07b1swXT1sPT09UT9FOkUrKGMtbCkqKHUtRSkvKFEtbCk7c1toXShvLDAsaSxnKX19c3RhdGljIGNvbnN0cnVjdFBvc3RTY3JpcHQoe3hyZWY6ZSxpc0V2YWxTdXBwb3J0ZWQ6dCxmbjppLGRpY3Q6YX0pe2NvbnN0IHM9dG9OdW1iZXJBcnJheShhLmdldEFycmF5KCJEb21haW4iKSkscj10b051bWJlckFycmF5KGEuZ2V0QXJyYXkoIlJhbmdlIikpO2lmKCFzKXRocm93IG5ldyBGb3JtYXRFcnJvcigiTm8gZG9tYWluLiIpO2lmKCFyKXRocm93IG5ldyBGb3JtYXRFcnJvcigiTm8gcmFuZ2UuIik7Y29uc3Qgbj1uZXcgUG9zdFNjcmlwdExleGVyKGkpLG89bmV3IFBvc3RTY3JpcHRQYXJzZXIobikucGFyc2UoKTtpZih0JiZGZWF0dXJlVGVzdC5pc0V2YWxTdXBwb3J0ZWQpe2NvbnN0IGU9KG5ldyBQb3N0U2NyaXB0Q29tcGlsZXIpLmNvbXBpbGUobyxzLHIpO2lmKGUpcmV0dXJuIG5ldyBGdW5jdGlvbigic3JjIiwic3JjT2Zmc2V0IiwiZGVzdCIsImRlc3RPZmZzZXQiLGUpfWluZm8oIlVuYWJsZSB0byBjb21waWxlIFBTIGZ1bmN0aW9uIik7Y29uc3QgZz1yLmxlbmd0aD4+MSxjPXMubGVuZ3RoPj4xLEM9bmV3IFBvc3RTY3JpcHRFdmFsdWF0b3IobyksaD1PYmplY3QuY3JlYXRlKG51bGwpO2xldCBsPTgxOTI7Y29uc3QgUT1uZXcgRmxvYXQzMkFycmF5KGMpO3JldHVybiBmdW5jdGlvbiBjb25zdHJ1Y3RQb3N0U2NyaXB0Rm4oZSx0LGksYSl7bGV0IHMsbixvPSIiO2NvbnN0IEU9UTtmb3Iocz0wO3M8YztzKyspe249ZVt0K3NdO0Vbc109bjtvKz1uKyJfIn1jb25zdCB1PWhbb107aWYodm9pZCAwIT09dSl7aS5zZXQodSxhKTtyZXR1cm59Y29uc3QgZD1uZXcgRmxvYXQzMkFycmF5KGcpLGY9Qy5leGVjdXRlKEUpLHA9Zi5sZW5ndGgtZztmb3Iocz0wO3M8ZztzKyspe249ZltwK3NdO2xldCBlPXJbMipzXTtpZihuPGUpbj1lO2Vsc2V7ZT1yWzIqcysxXTtuPmUmJihuPWUpfWRbc109bn1pZihsPjApe2wtLTtoW29dPWR9aS5zZXQoZCxhKX19fWZ1bmN0aW9uIGlzUERGRnVuY3Rpb24oZSl7bGV0IHQ7aWYoZSBpbnN0YW5jZW9mIERpY3QpdD1lO2Vsc2V7aWYoIShlIGluc3RhbmNlb2YgQmFzZVN0cmVhbSkpcmV0dXJuITE7dD1lLmRpY3R9cmV0dXJuIHQuaGFzKCJGdW5jdGlvblR5cGUiKX1jbGFzcyBQb3N0U2NyaXB0U3RhY2t7c3RhdGljIE1BWF9TVEFDS19TSVpFPTEwMDtjb25zdHJ1Y3RvcihlKXt0aGlzLnN0YWNrPWU/QXJyYXkuZnJvbShlKTpbXX1wdXNoKGUpe2lmKHRoaXMuc3RhY2subGVuZ3RoPj1Qb3N0U2NyaXB0U3RhY2suTUFYX1NUQUNLX1NJWkUpdGhyb3cgbmV3IEVycm9yKCJQb3N0U2NyaXB0IGZ1bmN0aW9uIHN0YWNrIG92ZXJmbG93LiIpO3RoaXMuc3RhY2sucHVzaChlKX1wb3AoKXtpZih0aGlzLnN0YWNrLmxlbmd0aDw9MCl0aHJvdyBuZXcgRXJyb3IoIlBvc3RTY3JpcHQgZnVuY3Rpb24gc3RhY2sgdW5kZXJmbG93LiIpO3JldHVybiB0aGlzLnN0YWNrLnBvcCgpfWNvcHkoZSl7aWYodGhpcy5zdGFjay5sZW5ndGgrZT49UG9zdFNjcmlwdFN0YWNrLk1BWF9TVEFDS19TSVpFKXRocm93IG5ldyBFcnJvcigiUG9zdFNjcmlwdCBmdW5jdGlvbiBzdGFjayBvdmVyZmxvdy4iKTtjb25zdCB0PXRoaXMuc3RhY2s7Zm9yKGxldCBpPXQubGVuZ3RoLWUsYT1lLTE7YT49MDthLS0saSsrKXQucHVzaCh0W2ldKX1pbmRleChlKXt0aGlzLnB1c2godGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aC1lLTFdKX1yb2xsKGUsdCl7Y29uc3QgaT10aGlzLnN0YWNrLGE9aS5sZW5ndGgtZSxzPWkubGVuZ3RoLTEscj1hKyh0LU1hdGguZmxvb3IodC9lKSplKTtmb3IobGV0IGU9YSx0PXM7ZTx0O2UrKyx0LS0pe2NvbnN0IGE9aVtlXTtpW2VdPWlbdF07aVt0XT1hfWZvcihsZXQgZT1hLHQ9ci0xO2U8dDtlKyssdC0tKXtjb25zdCBhPWlbZV07aVtlXT1pW3RdO2lbdF09YX1mb3IobGV0IGU9cix0PXM7ZTx0O2UrKyx0LS0pe2NvbnN0IGE9aVtlXTtpW2VdPWlbdF07aVt0XT1hfX19Y2xhc3MgUG9zdFNjcmlwdEV2YWx1YXRvcntjb25zdHJ1Y3RvcihlKXt0aGlzLm9wZXJhdG9ycz1lfWV4ZWN1dGUoZSl7Y29uc3QgdD1uZXcgUG9zdFNjcmlwdFN0YWNrKGUpO2xldCBpPTA7Y29uc3QgYT10aGlzLm9wZXJhdG9ycyxzPWEubGVuZ3RoO2xldCByLG4sbztmb3IoO2k8czspe3I9YVtpKytdO2lmKCJudW1iZXIiIT10eXBlb2Ygcilzd2l0Y2gocil7Y2FzZSJqeiI6bz10LnBvcCgpO249dC5wb3AoKTtufHwoaT1vKTticmVhaztjYXNlImoiOm49dC5wb3AoKTtpPW47YnJlYWs7Y2FzZSJhYnMiOm49dC5wb3AoKTt0LnB1c2goTWF0aC5hYnMobikpO2JyZWFrO2Nhc2UiYWRkIjpvPXQucG9wKCk7bj10LnBvcCgpO3QucHVzaChuK28pO2JyZWFrO2Nhc2UiYW5kIjpvPXQucG9wKCk7bj10LnBvcCgpOyJib29sZWFuIj09dHlwZW9mIG4mJiJib29sZWFuIj09dHlwZW9mIG8/dC5wdXNoKG4mJm8pOnQucHVzaChuJm8pO2JyZWFrO2Nhc2UiYXRhbiI6bz10LnBvcCgpO249dC5wb3AoKTtuPU1hdGguYXRhbjIobixvKS9NYXRoLlBJKjE4MDtuPDAmJihuKz0zNjApO3QucHVzaChuKTticmVhaztjYXNlImJpdHNoaWZ0IjpvPXQucG9wKCk7bj10LnBvcCgpO24+MD90LnB1c2gobjw8byk6dC5wdXNoKG4+Pm8pO2JyZWFrO2Nhc2UiY2VpbGluZyI6bj10LnBvcCgpO3QucHVzaChNYXRoLmNlaWwobikpO2JyZWFrO2Nhc2UiY29weSI6bj10LnBvcCgpO3QuY29weShuKTticmVhaztjYXNlImNvcyI6bj10LnBvcCgpO3QucHVzaChNYXRoLmNvcyhuJTM2MC8xODAqTWF0aC5QSSkpO2JyZWFrO2Nhc2UiY3ZpIjpuPTB8dC5wb3AoKTt0LnB1c2gobik7YnJlYWs7Y2FzZSJjdnIiOmJyZWFrO2Nhc2UiZGl2IjpvPXQucG9wKCk7bj10LnBvcCgpO3QucHVzaChuL28pO2JyZWFrO2Nhc2UiZHVwIjp0LmNvcHkoMSk7YnJlYWs7Y2FzZSJlcSI6bz10LnBvcCgpO249dC5wb3AoKTt0LnB1c2gobj09PW8pO2JyZWFrO2Nhc2UiZXhjaCI6dC5yb2xsKDIsMSk7YnJlYWs7Y2FzZSJleHAiOm89dC5wb3AoKTtuPXQucG9wKCk7dC5wdXNoKG4qKm8pO2JyZWFrO2Nhc2UiZmFsc2UiOnQucHVzaCghMSk7YnJlYWs7Y2FzZSJmbG9vciI6bj10LnBvcCgpO3QucHVzaChNYXRoLmZsb29yKG4pKTticmVhaztjYXNlImdlIjpvPXQucG9wKCk7bj10LnBvcCgpO3QucHVzaChuPj1vKTticmVhaztjYXNlImd0IjpvPXQucG9wKCk7bj10LnBvcCgpO3QucHVzaChuPm8pO2JyZWFrO2Nhc2UiaWRpdiI6bz10LnBvcCgpO249dC5wb3AoKTt0LnB1c2gobi9vfDApO2JyZWFrO2Nhc2UiaW5kZXgiOm49dC5wb3AoKTt0LmluZGV4KG4pO2JyZWFrO2Nhc2UibGUiOm89dC5wb3AoKTtuPXQucG9wKCk7dC5wdXNoKG48PW8pO2JyZWFrO2Nhc2UibG4iOm49dC5wb3AoKTt0LnB1c2goTWF0aC5sb2cobikpO2JyZWFrO2Nhc2UibG9nIjpuPXQucG9wKCk7dC5wdXNoKE1hdGgubG9nMTAobikpO2JyZWFrO2Nhc2UibHQiOm89dC5wb3AoKTtuPXQucG9wKCk7dC5wdXNoKG48byk7YnJlYWs7Y2FzZSJtb2QiOm89dC5wb3AoKTtuPXQucG9wKCk7dC5wdXNoKG4lbyk7YnJlYWs7Y2FzZSJtdWwiOm89dC5wb3AoKTtuPXQucG9wKCk7dC5wdXNoKG4qbyk7YnJlYWs7Y2FzZSJuZSI6bz10LnBvcCgpO249dC5wb3AoKTt0LnB1c2gobiE9PW8pO2JyZWFrO2Nhc2UibmVnIjpuPXQucG9wKCk7dC5wdXNoKC1uKTticmVhaztjYXNlIm5vdCI6bj10LnBvcCgpOyJib29sZWFuIj09dHlwZW9mIG4/dC5wdXNoKCFuKTp0LnB1c2gofm4pO2JyZWFrO2Nhc2Uib3IiOm89dC5wb3AoKTtuPXQucG9wKCk7ImJvb2xlYW4iPT10eXBlb2YgbiYmImJvb2xlYW4iPT10eXBlb2Ygbz90LnB1c2gobnx8byk6dC5wdXNoKG58byk7YnJlYWs7Y2FzZSJwb3AiOnQucG9wKCk7YnJlYWs7Y2FzZSJyb2xsIjpvPXQucG9wKCk7bj10LnBvcCgpO3Qucm9sbChuLG8pO2JyZWFrO2Nhc2Uicm91bmQiOm49dC5wb3AoKTt0LnB1c2goTWF0aC5yb3VuZChuKSk7YnJlYWs7Y2FzZSJzaW4iOm49dC5wb3AoKTt0LnB1c2goTWF0aC5zaW4obiUzNjAvMTgwKk1hdGguUEkpKTticmVhaztjYXNlInNxcnQiOm49dC5wb3AoKTt0LnB1c2goTWF0aC5zcXJ0KG4pKTticmVhaztjYXNlInN1YiI6bz10LnBvcCgpO249dC5wb3AoKTt0LnB1c2gobi1vKTticmVhaztjYXNlInRydWUiOnQucHVzaCghMCk7YnJlYWs7Y2FzZSJ0cnVuY2F0ZSI6bj10LnBvcCgpO249bjwwP01hdGguY2VpbChuKTpNYXRoLmZsb29yKG4pO3QucHVzaChuKTticmVhaztjYXNlInhvciI6bz10LnBvcCgpO249dC5wb3AoKTsiYm9vbGVhbiI9PXR5cGVvZiBuJiYiYm9vbGVhbiI9PXR5cGVvZiBvP3QucHVzaChuIT09byk6dC5wdXNoKG5ebyk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYFVua25vd24gb3BlcmF0b3IgJHtyfWApfWVsc2UgdC5wdXNoKHIpfXJldHVybiB0LnN0YWNrfX1jbGFzcyBBc3ROb2Rle2NvbnN0cnVjdG9yKGUpe3RoaXMudHlwZT1lfXZpc2l0KGUpe3VucmVhY2hhYmxlKCJhYnN0cmFjdCBtZXRob2QiKX19Y2xhc3MgQXN0QXJndW1lbnQgZXh0ZW5kcyBBc3ROb2Rle2NvbnN0cnVjdG9yKGUsdCxpKXtzdXBlcigiYXJncyIpO3RoaXMuaW5kZXg9ZTt0aGlzLm1pbj10O3RoaXMubWF4PWl9dmlzaXQoZSl7ZS52aXNpdEFyZ3VtZW50KHRoaXMpfX1jbGFzcyBBc3RMaXRlcmFsIGV4dGVuZHMgQXN0Tm9kZXtjb25zdHJ1Y3RvcihlKXtzdXBlcigibGl0ZXJhbCIpO3RoaXMubnVtYmVyPWU7dGhpcy5taW49ZTt0aGlzLm1heD1lfXZpc2l0KGUpe2UudmlzaXRMaXRlcmFsKHRoaXMpfX1jbGFzcyBBc3RCaW5hcnlPcGVyYXRpb24gZXh0ZW5kcyBBc3ROb2Rle2NvbnN0cnVjdG9yKGUsdCxpLGEscyl7c3VwZXIoImJpbmFyeSIpO3RoaXMub3A9ZTt0aGlzLmFyZzE9dDt0aGlzLmFyZzI9aTt0aGlzLm1pbj1hO3RoaXMubWF4PXN9dmlzaXQoZSl7ZS52aXNpdEJpbmFyeU9wZXJhdGlvbih0aGlzKX19Y2xhc3MgQXN0TWluIGV4dGVuZHMgQXN0Tm9kZXtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKCJtYXgiKTt0aGlzLmFyZz1lO3RoaXMubWluPWUubWluO3RoaXMubWF4PXR9dmlzaXQoZSl7ZS52aXNpdE1pbih0aGlzKX19Y2xhc3MgQXN0VmFyaWFibGUgZXh0ZW5kcyBBc3ROb2Rle2NvbnN0cnVjdG9yKGUsdCxpKXtzdXBlcigidmFyIik7dGhpcy5pbmRleD1lO3RoaXMubWluPXQ7dGhpcy5tYXg9aX12aXNpdChlKXtlLnZpc2l0VmFyaWFibGUodGhpcyl9fWNsYXNzIEFzdFZhcmlhYmxlRGVmaW5pdGlvbiBleHRlbmRzIEFzdE5vZGV7Y29uc3RydWN0b3IoZSx0KXtzdXBlcigiZGVmaW5pdGlvbiIpO3RoaXMudmFyaWFibGU9ZTt0aGlzLmFyZz10fXZpc2l0KGUpe2UudmlzaXRWYXJpYWJsZURlZmluaXRpb24odGhpcyl9fWNsYXNzIEV4cHJlc3Npb25CdWlsZGVyVmlzaXRvcntjb25zdHJ1Y3Rvcigpe3RoaXMucGFydHM9W119dmlzaXRBcmd1bWVudChlKXt0aGlzLnBhcnRzLnB1c2goIk1hdGgubWF4KCIsZS5taW4sIiwgTWF0aC5taW4oIixlLm1heCwiLCBzcmNbc3JjT2Zmc2V0ICsgIixlLmluZGV4LCJdKSkiKX12aXNpdFZhcmlhYmxlKGUpe3RoaXMucGFydHMucHVzaCgidiIsZS5pbmRleCl9dmlzaXRMaXRlcmFsKGUpe3RoaXMucGFydHMucHVzaChlLm51bWJlcil9dmlzaXRCaW5hcnlPcGVyYXRpb24oZSl7dGhpcy5wYXJ0cy5wdXNoKCIoIik7ZS5hcmcxLnZpc2l0KHRoaXMpO3RoaXMucGFydHMucHVzaCgiICIsZS5vcCwiICIpO2UuYXJnMi52aXNpdCh0aGlzKTt0aGlzLnBhcnRzLnB1c2goIikiKX12aXNpdFZhcmlhYmxlRGVmaW5pdGlvbihlKXt0aGlzLnBhcnRzLnB1c2goInZhciAiKTtlLnZhcmlhYmxlLnZpc2l0KHRoaXMpO3RoaXMucGFydHMucHVzaCgiID0gIik7ZS5hcmcudmlzaXQodGhpcyk7dGhpcy5wYXJ0cy5wdXNoKCI7Iil9dmlzaXRNaW4oZSl7dGhpcy5wYXJ0cy5wdXNoKCJNYXRoLm1pbigiKTtlLmFyZy52aXNpdCh0aGlzKTt0aGlzLnBhcnRzLnB1c2goIiwgIixlLm1heCwiKSIpfXRvU3RyaW5nKCl7cmV0dXJuIHRoaXMucGFydHMuam9pbigiIil9fWZ1bmN0aW9uIGJ1aWxkQWRkT3BlcmF0aW9uKGUsdCl7cmV0dXJuImxpdGVyYWwiPT09dC50eXBlJiYwPT09dC5udW1iZXI/ZToibGl0ZXJhbCI9PT1lLnR5cGUmJjA9PT1lLm51bWJlcj90OiJsaXRlcmFsIj09PXQudHlwZSYmImxpdGVyYWwiPT09ZS50eXBlP25ldyBBc3RMaXRlcmFsKGUubnVtYmVyK3QubnVtYmVyKTpuZXcgQXN0QmluYXJ5T3BlcmF0aW9uKCIrIixlLHQsZS5taW4rdC5taW4sZS5tYXgrdC5tYXgpfWZ1bmN0aW9uIGJ1aWxkTXVsT3BlcmF0aW9uKGUsdCl7aWYoImxpdGVyYWwiPT09dC50eXBlKXtpZigwPT09dC5udW1iZXIpcmV0dXJuIG5ldyBBc3RMaXRlcmFsKDApO2lmKDE9PT10Lm51bWJlcilyZXR1cm4gZTtpZigibGl0ZXJhbCI9PT1lLnR5cGUpcmV0dXJuIG5ldyBBc3RMaXRlcmFsKGUubnVtYmVyKnQubnVtYmVyKX1pZigibGl0ZXJhbCI9PT1lLnR5cGUpe2lmKDA9PT1lLm51bWJlcilyZXR1cm4gbmV3IEFzdExpdGVyYWwoMCk7aWYoMT09PWUubnVtYmVyKXJldHVybiB0fWNvbnN0IGk9TWF0aC5taW4oZS5taW4qdC5taW4sZS5taW4qdC5tYXgsZS5tYXgqdC5taW4sZS5tYXgqdC5tYXgpLGE9TWF0aC5tYXgoZS5taW4qdC5taW4sZS5taW4qdC5tYXgsZS5tYXgqdC5taW4sZS5tYXgqdC5tYXgpO3JldHVybiBuZXcgQXN0QmluYXJ5T3BlcmF0aW9uKCIqIixlLHQsaSxhKX1mdW5jdGlvbiBidWlsZFN1Yk9wZXJhdGlvbihlLHQpe2lmKCJsaXRlcmFsIj09PXQudHlwZSl7aWYoMD09PXQubnVtYmVyKXJldHVybiBlO2lmKCJsaXRlcmFsIj09PWUudHlwZSlyZXR1cm4gbmV3IEFzdExpdGVyYWwoZS5udW1iZXItdC5udW1iZXIpfXJldHVybiJiaW5hcnkiPT09dC50eXBlJiYiLSI9PT10Lm9wJiYibGl0ZXJhbCI9PT1lLnR5cGUmJjE9PT1lLm51bWJlciYmImxpdGVyYWwiPT09dC5hcmcxLnR5cGUmJjE9PT10LmFyZzEubnVtYmVyP3QuYXJnMjpuZXcgQXN0QmluYXJ5T3BlcmF0aW9uKCItIixlLHQsZS5taW4tdC5tYXgsZS5tYXgtdC5taW4pfWZ1bmN0aW9uIGJ1aWxkTWluT3BlcmF0aW9uKGUsdCl7cmV0dXJuIGUubWluPj10P25ldyBBc3RMaXRlcmFsKHQpOmUubWF4PD10P2U6bmV3IEFzdE1pbihlLHQpfWNsYXNzIFBvc3RTY3JpcHRDb21waWxlcntjb21waWxlKGUsdCxpKXtjb25zdCBhPVtdLHM9W10scj10Lmxlbmd0aD4+MSxuPWkubGVuZ3RoPj4xO2xldCBvLGcsYyxDLGgsbCxRLEUsdT0wO2ZvcihsZXQgZT0wO2U8cjtlKyspYS5wdXNoKG5ldyBBc3RBcmd1bWVudChlLHRbMiplXSx0WzIqZSsxXSkpO2ZvcihsZXQgdD0wLGk9ZS5sZW5ndGg7dDxpO3QrKyl7RT1lW3RdO2lmKCJudW1iZXIiIT10eXBlb2YgRSlzd2l0Y2goRSl7Y2FzZSJhZGQiOmlmKGEubGVuZ3RoPDIpcmV0dXJuIG51bGw7Qz1hLnBvcCgpO2M9YS5wb3AoKTthLnB1c2goYnVpbGRBZGRPcGVyYXRpb24oYyxDKSk7YnJlYWs7Y2FzZSJjdnIiOmlmKGEubGVuZ3RoPDEpcmV0dXJuIG51bGw7YnJlYWs7Y2FzZSJtdWwiOmlmKGEubGVuZ3RoPDIpcmV0dXJuIG51bGw7Qz1hLnBvcCgpO2M9YS5wb3AoKTthLnB1c2goYnVpbGRNdWxPcGVyYXRpb24oYyxDKSk7YnJlYWs7Y2FzZSJzdWIiOmlmKGEubGVuZ3RoPDIpcmV0dXJuIG51bGw7Qz1hLnBvcCgpO2M9YS5wb3AoKTthLnB1c2goYnVpbGRTdWJPcGVyYXRpb24oYyxDKSk7YnJlYWs7Y2FzZSJleGNoIjppZihhLmxlbmd0aDwyKXJldHVybiBudWxsO2g9YS5wb3AoKTtsPWEucG9wKCk7YS5wdXNoKGgsbCk7YnJlYWs7Y2FzZSJwb3AiOmlmKGEubGVuZ3RoPDEpcmV0dXJuIG51bGw7YS5wb3AoKTticmVhaztjYXNlImluZGV4IjppZihhLmxlbmd0aDwxKXJldHVybiBudWxsO2M9YS5wb3AoKTtpZigibGl0ZXJhbCIhPT1jLnR5cGUpcmV0dXJuIG51bGw7bz1jLm51bWJlcjtpZihvPDB8fCFOdW1iZXIuaXNJbnRlZ2VyKG8pfHxhLmxlbmd0aDxvKXJldHVybiBudWxsO2g9YVthLmxlbmd0aC1vLTFdO2lmKCJsaXRlcmFsIj09PWgudHlwZXx8InZhciI9PT1oLnR5cGUpe2EucHVzaChoKTticmVha31RPW5ldyBBc3RWYXJpYWJsZSh1KyssaC5taW4saC5tYXgpO2FbYS5sZW5ndGgtby0xXT1RO2EucHVzaChRKTtzLnB1c2gobmV3IEFzdFZhcmlhYmxlRGVmaW5pdGlvbihRLGgpKTticmVhaztjYXNlImR1cCI6aWYoYS5sZW5ndGg8MSlyZXR1cm4gbnVsbDtpZigibnVtYmVyIj09dHlwZW9mIGVbdCsxXSYmImd0Ij09PWVbdCsyXSYmZVt0KzNdPT09dCs3JiYianoiPT09ZVt0KzRdJiYicG9wIj09PWVbdCs1XSYmZVt0KzZdPT09ZVt0KzFdKXtjPWEucG9wKCk7YS5wdXNoKGJ1aWxkTWluT3BlcmF0aW9uKGMsZVt0KzFdKSk7dCs9NjticmVha31oPWEuYXQoLTEpO2lmKCJsaXRlcmFsIj09PWgudHlwZXx8InZhciI9PT1oLnR5cGUpe2EucHVzaChoKTticmVha31RPW5ldyBBc3RWYXJpYWJsZSh1KyssaC5taW4saC5tYXgpO2FbYS5sZW5ndGgtMV09UTthLnB1c2goUSk7cy5wdXNoKG5ldyBBc3RWYXJpYWJsZURlZmluaXRpb24oUSxoKSk7YnJlYWs7Y2FzZSJyb2xsIjppZihhLmxlbmd0aDwyKXJldHVybiBudWxsO0M9YS5wb3AoKTtjPWEucG9wKCk7aWYoImxpdGVyYWwiIT09Qy50eXBlfHwibGl0ZXJhbCIhPT1jLnR5cGUpcmV0dXJuIG51bGw7Zz1DLm51bWJlcjtvPWMubnVtYmVyO2lmKG88PTB8fCFOdW1iZXIuaXNJbnRlZ2VyKG8pfHwhTnVtYmVyLmlzSW50ZWdlcihnKXx8YS5sZW5ndGg8bylyZXR1cm4gbnVsbDtnPShnJW8rbyklbztpZigwPT09ZylicmVhazthLnB1c2goLi4uYS5zcGxpY2UoYS5sZW5ndGgtbyxvLWcpKTticmVhaztkZWZhdWx0OnJldHVybiBudWxsfWVsc2UgYS5wdXNoKG5ldyBBc3RMaXRlcmFsKEUpKX1pZihhLmxlbmd0aCE9PW4pcmV0dXJuIG51bGw7Y29uc3QgZD1bXTtmb3IoY29uc3QgZSBvZiBzKXtjb25zdCB0PW5ldyBFeHByZXNzaW9uQnVpbGRlclZpc2l0b3I7ZS52aXNpdCh0KTtkLnB1c2godC50b1N0cmluZygpKX1mb3IobGV0IGU9MCx0PWEubGVuZ3RoO2U8dDtlKyspe2NvbnN0IHQ9YVtlXSxzPW5ldyBFeHByZXNzaW9uQnVpbGRlclZpc2l0b3I7dC52aXNpdChzKTtjb25zdCByPWlbMiplXSxuPWlbMiplKzFdLG89W3MudG9TdHJpbmcoKV07aWYocj50Lm1pbil7by51bnNoaWZ0KCJNYXRoLm1heCgiLHIsIiwgIik7by5wdXNoKCIpIil9aWYobjx0Lm1heCl7by51bnNoaWZ0KCJNYXRoLm1pbigiLG4sIiwgIik7by5wdXNoKCIpIil9by51bnNoaWZ0KCJkZXN0W2Rlc3RPZmZzZXQgKyAiLGUsIl0gPSAiKTtvLnB1c2goIjsiKTtkLnB1c2goby5qb2luKCIiKSl9cmV0dXJuIGQuam9pbigiXG4iKX19Y29uc3QgQ3M9WyJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJTIiwiQiIsIlMiLCJXUyIsIkIiLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQiIsIkIiLCJCIiwiUyIsIldTIiwiT04iLCJPTiIsIkVUIiwiRVQiLCJFVCIsIk9OIiwiT04iLCJPTiIsIk9OIiwiT04iLCJFUyIsIkNTIiwiRVMiLCJDUyIsIkNTIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJDUyIsIk9OIiwiT04iLCJPTiIsIk9OIiwiT04iLCJPTiIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiT04iLCJPTiIsIk9OIiwiT04iLCJPTiIsIk9OIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJPTiIsIk9OIiwiT04iLCJPTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkIiLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQ1MiLCJPTiIsIkVUIiwiRVQiLCJFVCIsIkVUIiwiT04iLCJPTiIsIk9OIiwiT04iLCJMIiwiT04iLCJPTiIsIkJOIiwiT04iLCJPTiIsIkVUIiwiRVQiLCJFTiIsIkVOIiwiT04iLCJMIiwiT04iLCJPTiIsIk9OIiwiRU4iLCJMIiwiT04iLCJPTiIsIk9OIiwiT04iLCJPTiIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiT04iLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiT04iLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCJdLGhzPVsiQU4iLCJBTiIsIkFOIiwiQU4iLCJBTiIsIkFOIiwiT04iLCJPTiIsIkFMIiwiRVQiLCJFVCIsIkFMIiwiQ1MiLCJBTCIsIk9OIiwiT04iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJBTCIsIkFMIiwiIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiQU4iLCJBTiIsIkFOIiwiQU4iLCJBTiIsIkFOIiwiQU4iLCJBTiIsIkFOIiwiQU4iLCJFVCIsIkFOIiwiQU4iLCJBTCIsIkFMIiwiQUwiLCJOU00iLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiQU4iLCJPTiIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIkFMIiwiQUwiLCJOU00iLCJOU00iLCJPTiIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIkFMIiwiQUwiLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCJdO2Z1bmN0aW9uIGlzT2RkKGUpe3JldHVybiAwIT0oMSZlKX1mdW5jdGlvbiBpc0V2ZW4oZSl7cmV0dXJuIDA9PSgxJmUpfWZ1bmN0aW9uIGZpbmRVbmVxdWFsKGUsdCxpKXtsZXQgYSxzO2ZvcihhPXQscz1lLmxlbmd0aDthPHM7KythKWlmKGVbYV0hPT1pKXJldHVybiBhO3JldHVybiBhfWZ1bmN0aW9uIHNldFZhbHVlcyhlLHQsaSxhKXtmb3IobGV0IHM9dDtzPGk7KytzKWVbc109YX1mdW5jdGlvbiByZXZlcnNlVmFsdWVzKGUsdCxpKXtmb3IobGV0IGE9dCxzPWktMTthPHM7KythLC0tcyl7Y29uc3QgdD1lW2FdO2VbYV09ZVtzXTtlW3NdPXR9fWZ1bmN0aW9uIGNyZWF0ZUJpZGlUZXh0KGUsdCxpPSExKXtsZXQgYT0ibHRyIjtpP2E9InR0YiI6dHx8KGE9InJ0bCIpO3JldHVybntzdHI6ZSxkaXI6YX19Y29uc3QgbHM9W10sQnM9W107ZnVuY3Rpb24gYmlkaShlLHQ9LTEsaT0hMSl7bGV0IGE9ITA7Y29uc3Qgcz1lLmxlbmd0aDtpZigwPT09c3x8aSlyZXR1cm4gY3JlYXRlQmlkaVRleHQoZSxhLGkpO2xzLmxlbmd0aD1zO0JzLmxlbmd0aD1zO2xldCByLG4sbz0wO2ZvcihyPTA7cjxzOysrcil7bHNbcl09ZS5jaGFyQXQocik7Y29uc3QgdD1lLmNoYXJDb2RlQXQocik7bGV0IGk9IkwiO2lmKHQ8PTI1NSlpPUNzW3RdO2Vsc2UgaWYoMTQyNDw9dCYmdDw9MTUyNClpPSJSIjtlbHNlIGlmKDE1MzY8PXQmJnQ8PTE3OTEpe2k9aHNbMjU1JnRdO2l8fHdhcm4oIkJpZGk6IGludmFsaWQgVW5pY29kZSBjaGFyYWN0ZXIgIit0LnRvU3RyaW5nKDE2KSl9ZWxzZSgxNzkyPD10JiZ0PD0yMjIwfHw2NDMzNjw9dCYmdDw9NjUwMjN8fDY1MTM2PD10JiZ0PD02NTI3OSkmJihpPSJBTCIpOyJSIiE9PWkmJiJBTCIhPT1pJiYiQU4iIT09aXx8bysrO0JzW3JdPWl9aWYoMD09PW8pe2E9ITA7cmV0dXJuIGNyZWF0ZUJpZGlUZXh0KGUsYSl9aWYoLTE9PT10KWlmKG8vczwuMyYmcz40KXthPSEwO3Q9MH1lbHNle2E9ITE7dD0xfWNvbnN0IGc9W107Zm9yKHI9MDtyPHM7KytyKWdbcl09dDtjb25zdCBjPWlzT2RkKHQpPyJSIjoiTCIsQz1jLGg9QztsZXQgbCxRPUM7Zm9yKHI9MDtyPHM7KytyKSJOU00iPT09QnNbcl0/QnNbcl09UTpRPUJzW3JdO1E9Qztmb3Iocj0wO3I8czsrK3Ipe2w9QnNbcl07IkVOIj09PWw/QnNbcl09IkFMIj09PVE/IkFOIjoiRU4iOiJSIiE9PWwmJiJMIiE9PWwmJiJBTCIhPT1sfHwoUT1sKX1mb3Iocj0wO3I8czsrK3Ipe2w9QnNbcl07IkFMIj09PWwmJihCc1tyXT0iUiIpfWZvcihyPTE7cjxzLTE7KytyKXsiRVMiPT09QnNbcl0mJiJFTiI9PT1Cc1tyLTFdJiYiRU4iPT09QnNbcisxXSYmKEJzW3JdPSJFTiIpOyJDUyIhPT1Cc1tyXXx8IkVOIiE9PUJzW3ItMV0mJiJBTiIhPT1Cc1tyLTFdfHxCc1tyKzFdIT09QnNbci0xXXx8KEJzW3JdPUJzW3ItMV0pfWZvcihyPTA7cjxzOysrcilpZigiRU4iPT09QnNbcl0pe2ZvcihsZXQgZT1yLTE7ZT49MCYmIkVUIj09PUJzW2VdOy0tZSlCc1tlXT0iRU4iO2ZvcihsZXQgZT1yKzE7ZTxzJiYiRVQiPT09QnNbZV07KytlKUJzW2VdPSJFTiJ9Zm9yKHI9MDtyPHM7KytyKXtsPUJzW3JdOyJXUyIhPT1sJiYiRVMiIT09bCYmIkVUIiE9PWwmJiJDUyIhPT1sfHwoQnNbcl09Ik9OIil9UT1DO2ZvcihyPTA7cjxzOysrcil7bD1Cc1tyXTsiRU4iPT09bD9Cc1tyXT0iTCI9PT1RPyJMIjoiRU4iOiJSIiE9PWwmJiJMIiE9PWx8fChRPWwpfWZvcihyPTA7cjxzOysrcilpZigiT04iPT09QnNbcl0pe2NvbnN0IGU9ZmluZFVuZXF1YWwoQnMscisxLCJPTiIpO2xldCB0PUM7cj4wJiYodD1Cc1tyLTFdKTtsZXQgaT1oO2UrMTxzJiYoaT1Cc1tlKzFdKTsiTCIhPT10JiYodD0iUiIpOyJMIiE9PWkmJihpPSJSIik7dD09PWkmJnNldFZhbHVlcyhCcyxyLGUsdCk7cj1lLTF9Zm9yKHI9MDtyPHM7KytyKSJPTiI9PT1Cc1tyXSYmKEJzW3JdPWMpO2ZvcihyPTA7cjxzOysrcil7bD1Cc1tyXTtpc0V2ZW4oZ1tyXSk/IlIiPT09bD9nW3JdKz0xOiJBTiIhPT1sJiYiRU4iIT09bHx8KGdbcl0rPTIpOiJMIiE9PWwmJiJBTiIhPT1sJiYiRU4iIT09bHx8KGdbcl0rPTEpfWxldCBFLHU9LTEsZD05OTtmb3Iocj0wLG49Zy5sZW5ndGg7cjxuOysrcil7RT1nW3JdO3U8RSYmKHU9RSk7ZD5FJiZpc09kZChFKSYmKGQ9RSl9Zm9yKEU9dTtFPj1kOy0tRSl7bGV0IGU9LTE7Zm9yKHI9MCxuPWcubGVuZ3RoO3I8bjsrK3IpaWYoZ1tyXTxFKXtpZihlPj0wKXtyZXZlcnNlVmFsdWVzKGxzLGUscik7ZT0tMX19ZWxzZSBlPDAmJihlPXIpO2U+PTAmJnJldmVyc2VWYWx1ZXMobHMsZSxnLmxlbmd0aCl9Zm9yKHI9MCxuPWxzLmxlbmd0aDtyPG47KytyKXtjb25zdCBlPWxzW3JdOyI8IiE9PWUmJiI+IiE9PWV8fChsc1tyXT0iIil9cmV0dXJuIGNyZWF0ZUJpZGlUZXh0KGxzLmpvaW4oIiIpLGEpfWNvbnN0IFFzPXtzdHlsZToibm9ybWFsIix3ZWlnaHQ6Im5vcm1hbCJ9LEVzPXtzdHlsZToibm9ybWFsIix3ZWlnaHQ6ImJvbGQifSx1cz17c3R5bGU6Iml0YWxpYyIsd2VpZ2h0OiJub3JtYWwifSxkcz17c3R5bGU6Iml0YWxpYyIsd2VpZ2h0OiJib2xkIn0sZnM9bmV3IE1hcChbWyJUaW1lcy1Sb21hbiIse2xvY2FsOlsiVGltZXMgTmV3IFJvbWFuIiwiVGltZXMtUm9tYW4iLCJUaW1lcyIsIkxpYmVyYXRpb24gU2VyaWYiLCJOaW1idXMgUm9tYW4iLCJOaW1idXMgUm9tYW4gTCIsIlRpbm9zIiwiVGhvcm5kYWxlIiwiVGVYIEd5cmUgVGVybWVzIiwiRnJlZVNlcmlmIiwiTGludXggTGliZXJ0aW5lIE8iLCJMaWJlcnRpbnVzIFNlcmlmIiwiRGVqYVZ1IFNlcmlmIiwiQml0c3RyZWFtIFZlcmEgU2VyaWYiLCJVYnVudHUiXSxzdHlsZTpRcyx1bHRpbWF0ZToic2VyaWYifV0sWyJUaW1lcy1Cb2xkIix7YWxpYXM6IlRpbWVzLVJvbWFuIixzdHlsZTpFcyx1bHRpbWF0ZToic2VyaWYifV0sWyJUaW1lcy1JdGFsaWMiLHthbGlhczoiVGltZXMtUm9tYW4iLHN0eWxlOnVzLHVsdGltYXRlOiJzZXJpZiJ9XSxbIlRpbWVzLUJvbGRJdGFsaWMiLHthbGlhczoiVGltZXMtUm9tYW4iLHN0eWxlOmRzLHVsdGltYXRlOiJzZXJpZiJ9XSxbIkhlbHZldGljYSIse2xvY2FsOlsiSGVsdmV0aWNhIiwiSGVsdmV0aWNhIE5ldWUiLCJBcmlhbCIsIkFyaWFsIE5vdmEiLCJMaWJlcmF0aW9uIFNhbnMiLCJBcmltbyIsIk5pbWJ1cyBTYW5zIiwiTmltYnVzIFNhbnMgTCIsIkEwMzAiLCJUZVggR3lyZSBIZXJvcyIsIkZyZWVTYW5zIiwiRGVqYVZ1IFNhbnMiLCJBbGJhbnkiLCJCaXRzdHJlYW0gVmVyYSBTYW5zIiwiQXJpYWwgVW5pY29kZSBNUyIsIk1pY3Jvc29mdCBTYW5zIFNlcmlmIiwiQXBwbGUgU3ltYm9scyIsIkNhbnRhcmVsbCJdLHBhdGg6IkxpYmVyYXRpb25TYW5zLVJlZ3VsYXIudHRmIixzdHlsZTpRcyx1bHRpbWF0ZToic2Fucy1zZXJpZiJ9XSxbIkhlbHZldGljYS1Cb2xkIix7YWxpYXM6IkhlbHZldGljYSIscGF0aDoiTGliZXJhdGlvblNhbnMtQm9sZC50dGYiLHN0eWxlOkVzLHVsdGltYXRlOiJzYW5zLXNlcmlmIn1dLFsiSGVsdmV0aWNhLU9ibGlxdWUiLHthbGlhczoiSGVsdmV0aWNhIixwYXRoOiJMaWJlcmF0aW9uU2Fucy1JdGFsaWMudHRmIixzdHlsZTp1cyx1bHRpbWF0ZToic2Fucy1zZXJpZiJ9XSxbIkhlbHZldGljYS1Cb2xkT2JsaXF1ZSIse2FsaWFzOiJIZWx2ZXRpY2EiLHBhdGg6IkxpYmVyYXRpb25TYW5zLUJvbGRJdGFsaWMudHRmIixzdHlsZTpkcyx1bHRpbWF0ZToic2Fucy1zZXJpZiJ9XSxbIkNvdXJpZXIiLHtsb2NhbDpbIkNvdXJpZXIiLCJDb3VyaWVyIE5ldyIsIkxpYmVyYXRpb24gTW9ubyIsIk5pbWJ1cyBNb25vIiwiTmltYnVzIE1vbm8gTCIsIkNvdXNpbmUiLCJDdW1iZXJsYW5kIiwiVGVYIEd5cmUgQ3Vyc29yIiwiRnJlZU1vbm8iLCJMaW51eCBMaWJlcnRpbmUgTW9ubyBPIiwiTGliZXJ0aW51cyBNb25vIl0sc3R5bGU6UXMsdWx0aW1hdGU6Im1vbm9zcGFjZSJ9XSxbIkNvdXJpZXItQm9sZCIse2FsaWFzOiJDb3VyaWVyIixzdHlsZTpFcyx1bHRpbWF0ZToibW9ub3NwYWNlIn1dLFsiQ291cmllci1PYmxpcXVlIix7YWxpYXM6IkNvdXJpZXIiLHN0eWxlOnVzLHVsdGltYXRlOiJtb25vc3BhY2UifV0sWyJDb3VyaWVyLUJvbGRPYmxpcXVlIix7YWxpYXM6IkNvdXJpZXIiLHN0eWxlOmRzLHVsdGltYXRlOiJtb25vc3BhY2UifV0sWyJBcmlhbEJsYWNrIix7bG9jYWw6WyJBcmlhbCBCbGFjayJdLHN0eWxlOntzdHlsZToibm9ybWFsIix3ZWlnaHQ6IjkwMCJ9LGZhbGxiYWNrOiJIZWx2ZXRpY2EtQm9sZCJ9XSxbIkFyaWFsQmxhY2stQm9sZCIse2FsaWFzOiJBcmlhbEJsYWNrIn1dLFsiQXJpYWxCbGFjay1JdGFsaWMiLHthbGlhczoiQXJpYWxCbGFjayIsc3R5bGU6e3N0eWxlOiJpdGFsaWMiLHdlaWdodDoiOTAwIn0sZmFsbGJhY2s6IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSJ9XSxbIkFyaWFsQmxhY2stQm9sZEl0YWxpYyIse2FsaWFzOiJBcmlhbEJsYWNrLUl0YWxpYyJ9XSxbIkFyaWFsTmFycm93Iix7bG9jYWw6WyJBcmlhbCBOYXJyb3ciLCJMaWJlcmF0aW9uIFNhbnMgTmFycm93IiwiSGVsdmV0aWNhIENvbmRlbnNlZCIsIk5pbWJ1cyBTYW5zIE5hcnJvdyIsIlRlWCBHeXJlIEhlcm9zIENuIl0sc3R5bGU6UXMsZmFsbGJhY2s6IkhlbHZldGljYSJ9XSxbIkFyaWFsTmFycm93LUJvbGQiLHthbGlhczoiQXJpYWxOYXJyb3ciLHN0eWxlOkVzLGZhbGxiYWNrOiJIZWx2ZXRpY2EtQm9sZCJ9XSxbIkFyaWFsTmFycm93LUl0YWxpYyIse2FsaWFzOiJBcmlhbE5hcnJvdyIsc3R5bGU6dXMsZmFsbGJhY2s6IkhlbHZldGljYS1PYmxpcXVlIn1dLFsiQXJpYWxOYXJyb3ctQm9sZEl0YWxpYyIse2FsaWFzOiJBcmlhbE5hcnJvdyIsc3R5bGU6ZHMsZmFsbGJhY2s6IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSJ9XSxbIkNhbGlicmkiLHtsb2NhbDpbIkNhbGlicmkiLCJDYXJsaXRvIl0sc3R5bGU6UXMsZmFsbGJhY2s6IkhlbHZldGljYSJ9XSxbIkNhbGlicmktQm9sZCIse2FsaWFzOiJDYWxpYnJpIixzdHlsZTpFcyxmYWxsYmFjazoiSGVsdmV0aWNhLUJvbGQifV0sWyJDYWxpYnJpLUl0YWxpYyIse2FsaWFzOiJDYWxpYnJpIixzdHlsZTp1cyxmYWxsYmFjazoiSGVsdmV0aWNhLU9ibGlxdWUifV0sWyJDYWxpYnJpLUJvbGRJdGFsaWMiLHthbGlhczoiQ2FsaWJyaSIsc3R5bGU6ZHMsZmFsbGJhY2s6IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSJ9XSxbIldpbmdkaW5ncyIse2xvY2FsOlsiV2luZ2RpbmdzIiwiVVJXIERpbmdiYXRzIl0sc3R5bGU6UXN9XSxbIldpbmdkaW5ncy1SZWd1bGFyIix7YWxpYXM6IldpbmdkaW5ncyJ9XSxbIldpbmdkaW5ncy1Cb2xkIix7YWxpYXM6IldpbmdkaW5ncyJ9XV0pLHBzPW5ldyBNYXAoW1siQXJpYWwtQmxhY2siLCJBcmlhbEJsYWNrIl1dKTtmdW5jdGlvbiBnZXRGYW1pbHlOYW1lKGUpe2NvbnN0IHQ9bmV3IFNldChbInRoaW4iLCJleHRyYWxpZ2h0IiwidWx0cmFsaWdodCIsImRlbWlsaWdodCIsInNlbWlsaWdodCIsImxpZ2h0IiwiYm9vayIsInJlZ3VsYXIiLCJub3JtYWwiLCJtZWRpdW0iLCJkZW1pYm9sZCIsInNlbWlib2xkIiwiYm9sZCIsImV4dHJhYm9sZCIsInVsdHJhYm9sZCIsImJsYWNrIiwiaGVhdnkiLCJleHRyYWJsYWNrIiwidWx0cmFibGFjayIsInJvbWFuIiwiaXRhbGljIiwib2JsaXF1ZSIsInVsdHJhY29uZGVuc2VkIiwiZXh0cmFjb25kZW5zZWQiLCJjb25kZW5zZWQiLCJzZW1pY29uZGVuc2VkIiwibm9ybWFsIiwic2VtaWV4cGFuZGVkIiwiZXhwYW5kZWQiLCJleHRyYWV4cGFuZGVkIiwidWx0cmFleHBhbmRlZCIsImJvbGRpdGFsaWMiXSk7cmV0dXJuIGUuc3BsaXQoL1stICwrXSsvZykuZmlsdGVyKChlPT4hdC5oYXMoZS50b0xvd2VyQ2FzZSgpKSkpLmpvaW4oIiAiKX1mdW5jdGlvbiBnZW5lcmF0ZUZvbnQoe2FsaWFzOmUsbG9jYWw6dCxwYXRoOmksZmFsbGJhY2s6YSxzdHlsZTpzLHVsdGltYXRlOnJ9LG4sbyxnPSEwLGM9ITAsQz0iIil7Y29uc3QgaD17c3R5bGU6bnVsbCx1bHRpbWF0ZTpudWxsfTtpZih0KXtjb25zdCBlPUM/YCAke0N9YDoiIjtmb3IoY29uc3QgaSBvZiB0KW4ucHVzaChgbG9jYWwoJHtpfSR7ZX0pYCl9aWYoZSl7Y29uc3QgdD1mcy5nZXQoZSkscj1DfHxmdW5jdGlvbiBnZXRTdHlsZVRvQXBwZW5kKGUpe3N3aXRjaChlKXtjYXNlIEVzOnJldHVybiJCb2xkIjtjYXNlIHVzOnJldHVybiJJdGFsaWMiO2Nhc2UgZHM6cmV0dXJuIkJvbGQgSXRhbGljIjtkZWZhdWx0OmlmKCJib2xkIj09PWU/LndlaWdodClyZXR1cm4iQm9sZCI7aWYoIml0YWxpYyI9PT1lPy5zdHlsZSlyZXR1cm4iSXRhbGljIn1yZXR1cm4iIn0ocyk7T2JqZWN0LmFzc2lnbihoLGdlbmVyYXRlRm9udCh0LG4sbyxnJiYhYSxjJiYhaSxyKSl9cyYmKGguc3R5bGU9cyk7ciYmKGgudWx0aW1hdGU9cik7aWYoZyYmYSl7Y29uc3QgZT1mcy5nZXQoYSkse3VsdGltYXRlOnR9PWdlbmVyYXRlRm9udChlLG4sbyxnLGMmJiFpLEMpO2gudWx0aW1hdGV8fD10fWMmJmkmJm8mJm4ucHVzaChgdXJsKCR7b30ke2l9KWApO3JldHVybiBofWZ1bmN0aW9uIGdldEZvbnRTdWJzdGl0dXRpb24oZSx0LGksYSxzLHIpe2lmKGEuc3RhcnRzV2l0aCgiSW52YWxpZFBERmpzRm9udF8iKSlyZXR1cm4gbnVsbDsiVHJ1ZVR5cGUiIT09ciYmIlR5cGUxIiE9PXJ8fCEvXltBLVpdezZ9XCsvLnRlc3QoYSl8fChhPWEuc2xpY2UoNykpO2NvbnN0IG49YT1ub3JtYWxpemVGb250TmFtZShhKTtsZXQgbz1lLmdldChuKTtpZihvKXJldHVybiBvO2xldCBnPWZzLmdldChhKTtpZighZylmb3IoY29uc3RbZSx0XW9mIHBzKWlmKGEuc3RhcnRzV2l0aChlKSl7YT1gJHt0fSR7YS5zdWJzdHJpbmcoZS5sZW5ndGgpfWA7Zz1mcy5nZXQoYSk7YnJlYWt9bGV0IGM9ITE7aWYoIWcpe2c9ZnMuZ2V0KHMpO2M9ITB9Y29uc3QgQz1gJHt0LmdldERvY0lkKCl9X3Mke3QuY3JlYXRlRm9udElkKCl9YDtpZighZyl7aWYoIXZhbGlkYXRlRm9udE5hbWUoYSkpe3dhcm4oYENhbm5vdCBzdWJzdGl0dXRlIHRoZSBmb250IGJlY2F1c2Ugb2YgaXRzIG5hbWU6ICR7YX1gKTtlLnNldChuLG51bGwpO3JldHVybiBudWxsfWNvbnN0IHQ9L2JvbGQvZ2kudGVzdChhKSxpPS9vYmxpcXVlfGl0YWxpYy9naS50ZXN0KGEpLHM9dCYmaSYmZHN8fHQmJkVzfHxpJiZ1c3x8UXM7bz17Y3NzOmAiJHtnZXRGYW1pbHlOYW1lKGEpfSIsJHtDfWAsZ3Vlc3NGYWxsYmFjazohMCxsb2FkZWROYW1lOkMsYmFzZUZvbnROYW1lOmEsc3JjOmBsb2NhbCgke2F9KWAsc3R5bGU6c307ZS5zZXQobixvKTtyZXR1cm4gb31jb25zdCBoPVtdO2MmJnZhbGlkYXRlRm9udE5hbWUoYSkmJmgucHVzaChgbG9jYWwoJHthfSlgKTtjb25zdHtzdHlsZTpsLHVsdGltYXRlOlF9PWdlbmVyYXRlRm9udChnLGgsaSksRT1udWxsPT09USx1PUU/IiI6YCwke1F9YDtvPXtjc3M6YCIke2dldEZhbWlseU5hbWUoYSl9Iiwke0N9JHt1fWAsZ3Vlc3NGYWxsYmFjazpFLGxvYWRlZE5hbWU6QyxiYXNlRm9udE5hbWU6YSxzcmM6aC5qb2luKCIsIiksc3R5bGU6bH07ZS5zZXQobixvKTtyZXR1cm4gb31jbGFzcyBJbWFnZVJlc2l6ZXJ7Y29uc3RydWN0b3IoZSx0KXt0aGlzLl9pbWdEYXRhPWU7dGhpcy5faXNNYXNrPXR9c3RhdGljIG5lZWRzVG9CZVJlc2l6ZWQoZSx0KXtpZihlPD10aGlzLl9nb29kU3F1YXJlTGVuZ3RoJiZ0PD10aGlzLl9nb29kU3F1YXJlTGVuZ3RoKXJldHVybiExO2NvbnN0e01BWF9ESU06aX09dGhpcztpZihlPml8fHQ+aSlyZXR1cm4hMDtjb25zdCBhPWUqdDtpZih0aGlzLl9oYXNNYXhBcmVhKXJldHVybiBhPnRoaXMuTUFYX0FSRUE7aWYoYTx0aGlzLl9nb29kU3F1YXJlTGVuZ3RoKioyKXJldHVybiExO2lmKHRoaXMuX2FyZUdvb2REaW1zKGUsdCkpe3RoaXMuX2dvb2RTcXVhcmVMZW5ndGg9TWF0aC5tYXgodGhpcy5fZ29vZFNxdWFyZUxlbmd0aCxNYXRoLmZsb29yKE1hdGguc3FydChlKnQpKSk7cmV0dXJuITF9dGhpcy5fZ29vZFNxdWFyZUxlbmd0aD10aGlzLl9ndWVzc01heCh0aGlzLl9nb29kU3F1YXJlTGVuZ3RoLGksMTI4LDApO3JldHVybiBhPih0aGlzLk1BWF9BUkVBPXRoaXMuX2dvb2RTcXVhcmVMZW5ndGgqKjIpfXN0YXRpYyBnZXQgTUFYX0RJTSgpe3JldHVybiBzaGFkb3codGhpcywiTUFYX0RJTSIsdGhpcy5fZ3Vlc3NNYXgoMjA0OCw2NTUzNywwLDEpKX1zdGF0aWMgZ2V0IE1BWF9BUkVBKCl7dGhpcy5faGFzTWF4QXJlYT0hMDtyZXR1cm4gc2hhZG93KHRoaXMsIk1BWF9BUkVBIix0aGlzLl9ndWVzc01heChJbWFnZVJlc2l6ZXIuX2dvb2RTcXVhcmVMZW5ndGgsdGhpcy5NQVhfRElNLDEyOCwwKSoqMil9c3RhdGljIHNldCBNQVhfQVJFQShlKXtpZihlPj0wKXt0aGlzLl9oYXNNYXhBcmVhPSEwO3NoYWRvdyh0aGlzLCJNQVhfQVJFQSIsZSl9fXN0YXRpYyBzZXRNYXhBcmVhKGUpe3RoaXMuX2hhc01heEFyZWF8fCh0aGlzLk1BWF9BUkVBPWU+PjIpfXN0YXRpYyBfYXJlR29vZERpbXMoZSx0KXt0cnl7Y29uc3QgaT1uZXcgT2Zmc2NyZWVuQ2FudmFzKGUsdCksYT1pLmdldENvbnRleHQoIjJkIik7YS5maWxsUmVjdCgwLDAsMSwxKTtjb25zdCBzPWEuZ2V0SW1hZ2VEYXRhKDAsMCwxLDEpLmRhdGFbM107aS53aWR0aD1pLmhlaWdodD0xO3JldHVybiAwIT09c31jYXRjaHtyZXR1cm4hMX19c3RhdGljIF9ndWVzc01heChlLHQsaSxhKXtmb3IoO2UraSsxPHQ7KXtjb25zdCBpPU1hdGguZmxvb3IoKGUrdCkvMikscz1hfHxpO3RoaXMuX2FyZUdvb2REaW1zKGkscyk/ZT1pOnQ9aX1yZXR1cm4gZX1zdGF0aWMgYXN5bmMgY3JlYXRlSW1hZ2UoZSx0PSExKXtyZXR1cm4gbmV3IEltYWdlUmVzaXplcihlLHQpLl9jcmVhdGVJbWFnZSgpfWFzeW5jIF9jcmVhdGVJbWFnZSgpe2NvbnN0IGU9dGhpcy5fZW5jb2RlQk1QKCksdD1uZXcgQmxvYihbZS5idWZmZXJdLHt0eXBlOiJpbWFnZS9ibXAifSksaT1jcmVhdGVJbWFnZUJpdG1hcCh0KSx7TUFYX0FSRUE6YSxNQVhfRElNOnN9PUltYWdlUmVzaXplcix7X2ltZ0RhdGE6cn09dGhpcyx7d2lkdGg6bixoZWlnaHQ6b309cixnPU1hdGgubWF4KG4vcyxvL3MsTWF0aC5zcXJ0KG4qby9hKSksYz1NYXRoLm1heChnLDIpLEM9TWF0aC5yb3VuZCgxMCooZysxLjI1KSkvMTAvYyxoPU1hdGguZmxvb3IoTWF0aC5sb2cyKEMpKSxsPW5ldyBBcnJheShoKzIpLmZpbGwoMik7bFswXT1jO2wuc3BsaWNlKC0xLDEsQy8oMTw8aCkpO2xldCBRPW4sRT1vLHU9YXdhaXQgaTtmb3IoY29uc3QgZSBvZiBsKXtjb25zdCB0PVEsaT1FO1E9TWF0aC5mbG9vcihRL2UpLTE7RT1NYXRoLmZsb29yKEUvZSktMTtjb25zdCBhPW5ldyBPZmZzY3JlZW5DYW52YXMoUSxFKTthLmdldENvbnRleHQoIjJkIikuZHJhd0ltYWdlKHUsMCwwLHQsaSwwLDAsUSxFKTt1PWEudHJhbnNmZXJUb0ltYWdlQml0bWFwKCl9ci5kYXRhPW51bGw7ci5iaXRtYXA9dTtyLndpZHRoPVE7ci5oZWlnaHQ9RTtyZXR1cm4gcn1fZW5jb2RlQk1QKCl7Y29uc3R7d2lkdGg6ZSxoZWlnaHQ6dCxraW5kOml9PXRoaXMuX2ltZ0RhdGE7bGV0IGEscz10aGlzLl9pbWdEYXRhLmRhdGEscj1uZXcgVWludDhBcnJheSgwKSxuPXIsbz0wO3N3aXRjaChpKXtjYXNlIGI6e2E9MTtyPW5ldyBVaW50OEFycmF5KHRoaXMuX2lzTWFzaz9bMjU1LDI1NSwyNTUsMjU1LDAsMCwwLDBdOlswLDAsMCwwLDI1NSwyNTUsMjU1LDI1NV0pO2NvbnN0IGk9ZSs3Pj4zLG49aSszJi00O2lmKGkhPT1uKXtjb25zdCBlPW5ldyBVaW50OEFycmF5KG4qdCk7bGV0IGE9MDtmb3IobGV0IHI9MCxvPXQqaTtyPG87cis9aSxhKz1uKWUuc2V0KHMuc3ViYXJyYXkocixyK2kpLGEpO3M9ZX1icmVha31jYXNlIEQ6YT0yNDtpZigzJmUpe2NvbnN0IGk9MyplLGE9aSszJi00LHI9YS1pLG49bmV3IFVpbnQ4QXJyYXkoYSp0KTtsZXQgbz0wO2ZvcihsZXQgZT0wLGE9dCppO2U8YTtlKz1pKXtjb25zdCB0PXMuc3ViYXJyYXkoZSxlK2kpO2ZvcihsZXQgZT0wO2U8aTtlKz0zKXtuW28rK109dFtlKzJdO25bbysrXT10W2UrMV07bltvKytdPXRbZV19bys9cn1zPW59ZWxzZSBmb3IobGV0IGU9MCx0PXMubGVuZ3RoO2U8dDtlKz0zKXtjb25zdCB0PXNbZV07c1tlXT1zW2UrMl07c1tlKzJdPXR9YnJlYWs7Y2FzZSBGOmE9MzI7bz0zO249bmV3IFVpbnQ4QXJyYXkoNjgpO2NvbnN0IGk9bmV3IERhdGFWaWV3KG4uYnVmZmVyKTtpZihGZWF0dXJlVGVzdC5pc0xpdHRsZUVuZGlhbil7aS5zZXRVaW50MzIoMCwyNTUsITApO2kuc2V0VWludDMyKDQsNjUyODAsITApO2kuc2V0VWludDMyKDgsMTY3MTE2ODAsITApO2kuc2V0VWludDMyKDEyLDQyNzgxOTAwODAsITApfWVsc2V7aS5zZXRVaW50MzIoMCw0Mjc4MTkwMDgwLCEwKTtpLnNldFVpbnQzMig0LDE2NzExNjgwLCEwKTtpLnNldFVpbnQzMig4LDY1MjgwLCEwKTtpLnNldFVpbnQzMigxMiwyNTUsITApfWJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGZvcm1hdCIpfWxldCBnPTA7Y29uc3QgYz00MCtuLmxlbmd0aCxDPTE0K2Mrci5sZW5ndGgrcy5sZW5ndGgsaD1uZXcgVWludDhBcnJheShDKSxsPW5ldyBEYXRhVmlldyhoLmJ1ZmZlcik7bC5zZXRVaW50MTYoZywxOTc3OCwhMCk7Zys9MjtsLnNldFVpbnQzMihnLEMsITApO2crPTQ7bC5zZXRVaW50MzIoZywwLCEwKTtnKz00O2wuc2V0VWludDMyKGcsMTQrYytyLmxlbmd0aCwhMCk7Zys9NDtsLnNldFVpbnQzMihnLGMsITApO2crPTQ7bC5zZXRJbnQzMihnLGUsITApO2crPTQ7bC5zZXRJbnQzMihnLC10LCEwKTtnKz00O2wuc2V0VWludDE2KGcsMSwhMCk7Zys9MjtsLnNldFVpbnQxNihnLGEsITApO2crPTI7bC5zZXRVaW50MzIoZyxvLCEwKTtnKz00O2wuc2V0VWludDMyKGcsMCwhMCk7Zys9NDtsLnNldEludDMyKGcsMCwhMCk7Zys9NDtsLnNldEludDMyKGcsMCwhMCk7Zys9NDtsLnNldFVpbnQzMihnLHIubGVuZ3RoLzQsITApO2crPTQ7bC5zZXRVaW50MzIoZywwLCEwKTtnKz00O2guc2V0KG4sZyk7Zys9bi5sZW5ndGg7aC5zZXQocixnKTtnKz1yLmxlbmd0aDtoLnNldChzLGcpO3JldHVybiBofX1JbWFnZVJlc2l6ZXIuX2dvb2RTcXVhcmVMZW5ndGg9MjA0ODtjb25zdCBtcz0zMjg1Mzc3NTIwLHlzPTQyOTQ5MDE3NjAsd3M9NjU1MzU7Y2xhc3MgTXVybXVySGFzaDNfNjR7Y29uc3RydWN0b3IoZSl7dGhpcy5oMT1lPzQyOTQ5NjcyOTUmZTptczt0aGlzLmgyPWU/NDI5NDk2NzI5NSZlOm1zfXVwZGF0ZShlKXtsZXQgdCxpO2lmKCJzdHJpbmciPT10eXBlb2YgZSl7dD1uZXcgVWludDhBcnJheSgyKmUubGVuZ3RoKTtpPTA7Zm9yKGxldCBhPTAscz1lLmxlbmd0aDthPHM7YSsrKXtjb25zdCBzPWUuY2hhckNvZGVBdChhKTtpZihzPD0yNTUpdFtpKytdPXM7ZWxzZXt0W2krK109cz4+Pjg7dFtpKytdPTI1NSZzfX19ZWxzZXtpZighQXJyYXlCdWZmZXIuaXNWaWV3KGUpKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBkYXRhIGZvcm1hdCwgbXVzdCBiZSBhIHN0cmluZyBvciBUeXBlZEFycmF5LiIpO3Q9ZS5zbGljZSgpO2k9dC5ieXRlTGVuZ3RofWNvbnN0IGE9aT4+MixzPWktNCphLHI9bmV3IFVpbnQzMkFycmF5KHQuYnVmZmVyLDAsYSk7bGV0IG49MCxvPTAsZz10aGlzLmgxLGM9dGhpcy5oMjtjb25zdCBDPTM0MzI5MTgzNTMsaD00NjE4NDU5MDcsbD0xMTYwMSxRPTEzNzE1O2ZvcihsZXQgZT0wO2U8YTtlKyspaWYoMSZlKXtuPXJbZV07bj1uKkMmeXN8bipsJndzO249bjw8MTV8bj4+PjE3O249bipoJnlzfG4qUSZ3cztnXj1uO2c9Zzw8MTN8Zz4+PjE5O2c9NSpnKzM4NjQyOTIxOTZ9ZWxzZXtvPXJbZV07bz1vKkMmeXN8bypsJndzO289bzw8MTV8bz4+PjE3O289bypoJnlzfG8qUSZ3cztjXj1vO2M9Yzw8MTN8Yz4+PjE5O2M9NSpjKzM4NjQyOTIxOTZ9bj0wO3N3aXRjaChzKXtjYXNlIDM6bl49dFs0KmErMl08PDE2O2Nhc2UgMjpuXj10WzQqYSsxXTw8ODtjYXNlIDE6bl49dFs0KmFdO249bipDJnlzfG4qbCZ3cztuPW48PDE1fG4+Pj4xNztuPW4qaCZ5c3xuKlEmd3M7MSZhP2dePW46Y149bn10aGlzLmgxPWc7dGhpcy5oMj1jfWhleGRpZ2VzdCgpe2xldCBlPXRoaXMuaDEsdD10aGlzLmgyO2VePXQ+Pj4xO2U9Mzk4MTgwNjc5NyplJnlzfDM2MDQ1KmUmd3M7dD00MjgzNTQzNTExKnQmeXN8KDI5NTAxNjM3OTcqKHQ8PDE2fGU+Pj4xNikmeXMpPj4+MTY7ZV49dD4+PjE7ZT00NDQ5ODQ0MDMqZSZ5c3w2MDQ5OSplJndzO3Q9MzMwMTg4MjM2Nip0JnlzfCgzMTIwNDM3ODkzKih0PDwxNnxlPj4+MTYpJnlzKT4+PjE2O2VePXQ+Pj4xO3JldHVybihlPj4+MCkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDgsIjAiKSsodD4+PjApLnRvU3RyaW5nKDE2KS5wYWRTdGFydCg4LCIwIil9fWZ1bmN0aW9uIGFkZFN0YXRlKGUsdCxpLGEscyl7bGV0IHI9ZTtmb3IobGV0IGU9MCxpPXQubGVuZ3RoLTE7ZTxpO2UrKyl7Y29uc3QgaT10W2VdO3I9cltpXXx8PVtdfXJbdC5hdCgtMSldPXtjaGVja0ZuOmksaXRlcmF0ZUZuOmEscHJvY2Vzc0ZuOnN9fWNvbnN0IGJzPVtdO2FkZFN0YXRlKGJzLFtHQSxVQSx6ZSx4QV0sbnVsbCwoZnVuY3Rpb24gaXRlcmF0ZUlubGluZUltYWdlR3JvdXAoZSx0KXtjb25zdCBpPWUuZm5BcnJheSxhPSh0LShlLmlDdXJyLTMpKSU0O3N3aXRjaChhKXtjYXNlIDA6cmV0dXJuIGlbdF09PT1HQTtjYXNlIDE6cmV0dXJuIGlbdF09PT1VQTtjYXNlIDI6cmV0dXJuIGlbdF09PT16ZTtjYXNlIDM6cmV0dXJuIGlbdF09PT14QX10aHJvdyBuZXcgRXJyb3IoYGl0ZXJhdGVJbmxpbmVJbWFnZUdyb3VwIC0gaW52YWxpZCBwb3M6ICR7YX1gKX0pLChmdW5jdGlvbiBmb3VuZElubGluZUltYWdlR3JvdXAoZSx0KXtjb25zdCBpPWUuZm5BcnJheSxhPWUuYXJnc0FycmF5LHM9ZS5pQ3VycixyPXMtMyxuPXMtMixvPXMtMSxnPU1hdGgubWluKE1hdGguZmxvb3IoKHQtcikvNCksMjAwKTtpZihnPDEwKXJldHVybiB0LSh0LXIpJTQ7bGV0IGM9MDtjb25zdCBDPVtdO2xldCBoPTAsbD0xLFE9MTtmb3IobGV0IGU9MDtlPGc7ZSsrKXtjb25zdCB0PWFbbisoZTw8MildLGk9YVtvKyhlPDwyKV1bMF07aWYobCtpLndpZHRoPjFlMyl7Yz1NYXRoLm1heChjLGwpO1ErPWgrMjtsPTA7aD0wfUMucHVzaCh7dHJhbnNmb3JtOnQseDpsLHk6USx3Omkud2lkdGgsaDppLmhlaWdodH0pO2wrPWkud2lkdGgrMjtoPU1hdGgubWF4KGgsaS5oZWlnaHQpfWNvbnN0IEU9TWF0aC5tYXgoYyxsKSsxLHU9UStoKzEsZD1uZXcgVWludDhBcnJheShFKnUqNCksZj1FPDwyO2ZvcihsZXQgZT0wO2U8ZztlKyspe2NvbnN0IHQ9YVtvKyhlPDwyKV1bMF0uZGF0YSxpPUNbZV0udzw8MjtsZXQgcz0wLHI9Q1tlXS54K0NbZV0ueSpFPDwyO2Quc2V0KHQuc3ViYXJyYXkoMCxpKSxyLWYpO2ZvcihsZXQgYT0wLG49Q1tlXS5oO2E8bjthKyspe2Quc2V0KHQuc3ViYXJyYXkocyxzK2kpLHIpO3MrPWk7cis9Zn1kLnNldCh0LnN1YmFycmF5KHMtaSxzKSxyKTtmb3IoO3I+PTA7KXt0W3ItNF09dFtyXTt0W3ItM109dFtyKzFdO3Rbci0yXT10W3IrMl07dFtyLTFdPXRbciszXTt0W3IraV09dFtyK2ktNF07dFtyK2krMV09dFtyK2ktM107dFtyK2krMl09dFtyK2ktMl07dFtyK2krM109dFtyK2ktMV07ci09Zn19Y29uc3QgcD17d2lkdGg6RSxoZWlnaHQ6dX07aWYoZS5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZCl7Y29uc3QgZT1uZXcgT2Zmc2NyZWVuQ2FudmFzKEUsdSk7ZS5nZXRDb250ZXh0KCIyZCIpLnB1dEltYWdlRGF0YShuZXcgSW1hZ2VEYXRhKG5ldyBVaW50OENsYW1wZWRBcnJheShkLmJ1ZmZlciksRSx1KSwwLDApO3AuYml0bWFwPWUudHJhbnNmZXJUb0ltYWdlQml0bWFwKCk7cC5kYXRhPW51bGx9ZWxzZXtwLmtpbmQ9RjtwLmRhdGE9ZH1pLnNwbGljZShyLDQqZyxfZSk7YS5zcGxpY2Uociw0KmcsW3AsQ10pO3JldHVybiByKzF9KSk7YWRkU3RhdGUoYnMsW0dBLFVBLFhlLHhBXSxudWxsLChmdW5jdGlvbiBpdGVyYXRlSW1hZ2VNYXNrR3JvdXAoZSx0KXtjb25zdCBpPWUuZm5BcnJheSxhPSh0LShlLmlDdXJyLTMpKSU0O3N3aXRjaChhKXtjYXNlIDA6cmV0dXJuIGlbdF09PT1HQTtjYXNlIDE6cmV0dXJuIGlbdF09PT1VQTtjYXNlIDI6cmV0dXJuIGlbdF09PT1YZTtjYXNlIDM6cmV0dXJuIGlbdF09PT14QX10aHJvdyBuZXcgRXJyb3IoYGl0ZXJhdGVJbWFnZU1hc2tHcm91cCAtIGludmFsaWQgcG9zOiAke2F9YCl9KSwoZnVuY3Rpb24gZm91bmRJbWFnZU1hc2tHcm91cChlLHQpe2NvbnN0IGk9ZS5mbkFycmF5LGE9ZS5hcmdzQXJyYXkscz1lLmlDdXJyLHI9cy0zLG49cy0yLG89cy0xO2xldCBnPU1hdGguZmxvb3IoKHQtcikvNCk7aWYoZzwxMClyZXR1cm4gdC0odC1yKSU0O2xldCBjLEMsaD0hMTtjb25zdCBsPWFbb11bMF0sUT1hW25dWzBdLEU9YVtuXVsxXSx1PWFbbl1bMl0sZD1hW25dWzNdO2lmKEU9PT11KXtoPSEwO2M9bis0O2xldCBlPW8rNDtmb3IobGV0IHQ9MTt0PGc7dCsrLGMrPTQsZSs9NCl7Qz1hW2NdO2lmKGFbZV1bMF0hPT1sfHxDWzBdIT09UXx8Q1sxXSE9PUV8fENbMl0hPT11fHxDWzNdIT09ZCl7dDwxMD9oPSExOmc9dDticmVha319fWlmKGgpe2c9TWF0aC5taW4oZywxZTMpO2NvbnN0IGU9bmV3IEZsb2F0MzJBcnJheSgyKmcpO2M9bjtmb3IobGV0IHQ9MDt0PGc7dCsrLGMrPTQpe0M9YVtjXTtlW3Q8PDFdPUNbNF07ZVsxKyh0PDwxKV09Q1s1XX1pLnNwbGljZShyLDQqZyxBdCk7YS5zcGxpY2Uociw0KmcsW2wsUSxFLHUsZCxlXSl9ZWxzZXtnPU1hdGgubWluKGcsMTAwKTtjb25zdCBlPVtdO2ZvcihsZXQgdD0wO3Q8Zzt0Kyspe0M9YVtuKyh0PDwyKV07Y29uc3QgaT1hW28rKHQ8PDIpXVswXTtlLnB1c2goe2RhdGE6aS5kYXRhLHdpZHRoOmkud2lkdGgsaGVpZ2h0OmkuaGVpZ2h0LGludGVycG9sYXRlOmkuaW50ZXJwb2xhdGUsY291bnQ6aS5jb3VudCx0cmFuc2Zvcm06Q30pfWkuc3BsaWNlKHIsNCpnLFplKTthLnNwbGljZShyLDQqZyxbZV0pfXJldHVybiByKzF9KSk7YWRkU3RhdGUoYnMsW0dBLFVBLFZlLHhBXSwoZnVuY3Rpb24oZSl7Y29uc3QgdD1lLmFyZ3NBcnJheSxpPWUuaUN1cnItMjtyZXR1cm4gMD09PXRbaV1bMV0mJjA9PT10W2ldWzJdfSksKGZ1bmN0aW9uIGl0ZXJhdGVJbWFnZUdyb3VwKGUsdCl7Y29uc3QgaT1lLmZuQXJyYXksYT1lLmFyZ3NBcnJheSxzPSh0LShlLmlDdXJyLTMpKSU0O3N3aXRjaChzKXtjYXNlIDA6cmV0dXJuIGlbdF09PT1HQTtjYXNlIDE6aWYoaVt0XSE9PVVBKXJldHVybiExO2NvbnN0IHM9ZS5pQ3Vyci0yLHI9YVtzXVswXSxuPWFbc11bM107cmV0dXJuIGFbdF1bMF09PT1yJiYwPT09YVt0XVsxXSYmMD09PWFbdF1bMl0mJmFbdF1bM109PT1uO2Nhc2UgMjppZihpW3RdIT09VmUpcmV0dXJuITE7Y29uc3Qgbz1hW2UuaUN1cnItMV1bMF07cmV0dXJuIGFbdF1bMF09PT1vO2Nhc2UgMzpyZXR1cm4gaVt0XT09PXhBfXRocm93IG5ldyBFcnJvcihgaXRlcmF0ZUltYWdlR3JvdXAgLSBpbnZhbGlkIHBvczogJHtzfWApfSksKGZ1bmN0aW9uKGUsdCl7Y29uc3QgaT1lLmZuQXJyYXksYT1lLmFyZ3NBcnJheSxzPWUuaUN1cnIscj1zLTMsbj1zLTIsbz1hW3MtMV1bMF0sZz1hW25dWzBdLGM9YVtuXVszXSxDPU1hdGgubWluKE1hdGguZmxvb3IoKHQtcikvNCksMWUzKTtpZihDPDMpcmV0dXJuIHQtKHQtciklNDtjb25zdCBoPW5ldyBGbG9hdDMyQXJyYXkoMipDKTtsZXQgbD1uO2ZvcihsZXQgZT0wO2U8QztlKyssbCs9NCl7Y29uc3QgdD1hW2xdO2hbZTw8MV09dFs0XTtoWzErKGU8PDEpXT10WzVdfWNvbnN0IFE9W28sZyxjLGhdO2kuc3BsaWNlKHIsNCpDLCRlKTthLnNwbGljZShyLDQqQyxRKTtyZXR1cm4gcisxfSkpO2FkZFN0YXRlKGJzLFskQSxzZSxJZSxDZSxBZV0sbnVsbCwoZnVuY3Rpb24gaXRlcmF0ZVNob3dUZXh0R3JvdXAoZSx0KXtjb25zdCBpPWUuZm5BcnJheSxhPWUuYXJnc0FycmF5LHM9KHQtKGUuaUN1cnItNCkpJTU7c3dpdGNoKHMpe2Nhc2UgMDpyZXR1cm4gaVt0XT09PSRBO2Nhc2UgMTpyZXR1cm4gaVt0XT09PXNlO2Nhc2UgMjpyZXR1cm4gaVt0XT09PUllO2Nhc2UgMzppZihpW3RdIT09Q2UpcmV0dXJuITE7Y29uc3Qgcz1lLmlDdXJyLTMscj1hW3NdWzBdLG49YVtzXVsxXTtyZXR1cm4gYVt0XVswXT09PXImJmFbdF1bMV09PT1uO2Nhc2UgNDpyZXR1cm4gaVt0XT09PUFlfXRocm93IG5ldyBFcnJvcihgaXRlcmF0ZVNob3dUZXh0R3JvdXAgLSBpbnZhbGlkIHBvczogJHtzfWApfSksKGZ1bmN0aW9uKGUsdCl7Y29uc3QgaT1lLmZuQXJyYXksYT1lLmFyZ3NBcnJheSxzPWUuaUN1cnIscj1zLTQsbj1zLTMsbz1zLTIsZz1zLTEsYz1zLEM9YVtuXVswXSxoPWFbbl1bMV07bGV0IGw9TWF0aC5taW4oTWF0aC5mbG9vcigodC1yKS81KSwxZTMpO2lmKGw8MylyZXR1cm4gdC0odC1yKSU1O2xldCBRPXI7aWYocj49NCYmaVtyLTRdPT09aVtuXSYmaVtyLTNdPT09aVtvXSYmaVtyLTJdPT09aVtnXSYmaVtyLTFdPT09aVtjXSYmYVtyLTRdWzBdPT09QyYmYVtyLTRdWzFdPT09aCl7bCsrO1EtPTV9bGV0IEU9USs0O2ZvcihsZXQgZT0xO2U8bDtlKyspe2kuc3BsaWNlKEUsMyk7YS5zcGxpY2UoRSwzKTtFKz0yfXJldHVybiBFKzF9KSk7Y2xhc3MgTnVsbE9wdGltaXplcntjb25zdHJ1Y3RvcihlKXt0aGlzLnF1ZXVlPWV9X29wdGltaXplKCl7fXB1c2goZSx0KXt0aGlzLnF1ZXVlLmZuQXJyYXkucHVzaChlKTt0aGlzLnF1ZXVlLmFyZ3NBcnJheS5wdXNoKHQpO3RoaXMuX29wdGltaXplKCl9Zmx1c2goKXt9cmVzZXQoKXt9fWNsYXNzIFF1ZXVlT3B0aW1pemVyIGV4dGVuZHMgTnVsbE9wdGltaXplcntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTt0aGlzLnN0YXRlPW51bGw7dGhpcy5jb250ZXh0PXtpQ3VycjowLGZuQXJyYXk6ZS5mbkFycmF5LGFyZ3NBcnJheTplLmFyZ3NBcnJheSxpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZDohMX07dGhpcy5tYXRjaD1udWxsO3RoaXMubGFzdFByb2Nlc3NlZD0wfXNldCBpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZChlKXt0aGlzLmNvbnRleHQuaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQ9ZX1fb3B0aW1pemUoKXtjb25zdCBlPXRoaXMucXVldWUuZm5BcnJheTtsZXQgdD10aGlzLmxhc3RQcm9jZXNzZWQsaT1lLmxlbmd0aCxhPXRoaXMuc3RhdGUscz10aGlzLm1hdGNoO2lmKCFhJiYhcyYmdCsxPT09aSYmIWJzW2VbdF1dKXt0aGlzLmxhc3RQcm9jZXNzZWQ9aTtyZXR1cm59Y29uc3Qgcj10aGlzLmNvbnRleHQ7Zm9yKDt0PGk7KXtpZihzKXtpZigoMCxzLml0ZXJhdGVGbikocix0KSl7dCsrO2NvbnRpbnVlfXQ9KDAscy5wcm9jZXNzRm4pKHIsdCsxKTtpPWUubGVuZ3RoO3M9bnVsbDthPW51bGw7aWYodD49aSlicmVha31hPShhfHxicylbZVt0XV07aWYoYSYmIUFycmF5LmlzQXJyYXkoYSkpe3IuaUN1cnI9dDt0Kys7aWYoIWEuY2hlY2tGbnx8KDAsYS5jaGVja0ZuKShyKSl7cz1hO2E9bnVsbH1lbHNlIGE9bnVsbH1lbHNlIHQrK310aGlzLnN0YXRlPWE7dGhpcy5tYXRjaD1zO3RoaXMubGFzdFByb2Nlc3NlZD10fWZsdXNoKCl7Zm9yKDt0aGlzLm1hdGNoOyl7Y29uc3QgZT10aGlzLnF1ZXVlLmZuQXJyYXkubGVuZ3RoO3RoaXMubGFzdFByb2Nlc3NlZD0oMCx0aGlzLm1hdGNoLnByb2Nlc3NGbikodGhpcy5jb250ZXh0LGUpO3RoaXMubWF0Y2g9bnVsbDt0aGlzLnN0YXRlPW51bGw7dGhpcy5fb3B0aW1pemUoKX19cmVzZXQoKXt0aGlzLnN0YXRlPW51bGw7dGhpcy5tYXRjaD1udWxsO3RoaXMubGFzdFByb2Nlc3NlZD0wfX1jbGFzcyBPcGVyYXRvckxpc3R7c3RhdGljIENIVU5LX1NJWkU9MWUzO3N0YXRpYyBDSFVOS19TSVpFX0FCT1VUPXRoaXMuQ0hVTktfU0laRS01O2NvbnN0cnVjdG9yKGU9MCx0KXt0aGlzLl9zdHJlYW1TaW5rPXQ7dGhpcy5mbkFycmF5PVtdO3RoaXMuYXJnc0FycmF5PVtdO3RoaXMub3B0aW1pemVyPSF0fHxlJlE/bmV3IE51bGxPcHRpbWl6ZXIodGhpcyk6bmV3IFF1ZXVlT3B0aW1pemVyKHRoaXMpO3RoaXMuZGVwZW5kZW5jaWVzPW5ldyBTZXQ7dGhpcy5fdG90YWxMZW5ndGg9MDt0aGlzLndlaWdodD0wO3RoaXMuX3Jlc29sdmVkPXQ/bnVsbDpQcm9taXNlLnJlc29sdmUoKX1zZXQgaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQoZSl7dGhpcy5vcHRpbWl6ZXIuaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQ9ZX1nZXQgbGVuZ3RoKCl7cmV0dXJuIHRoaXMuYXJnc0FycmF5Lmxlbmd0aH1nZXQgcmVhZHkoKXtyZXR1cm4gdGhpcy5fcmVzb2x2ZWR8fHRoaXMuX3N0cmVhbVNpbmsucmVhZHl9Z2V0IHRvdGFsTGVuZ3RoKCl7cmV0dXJuIHRoaXMuX3RvdGFsTGVuZ3RoK3RoaXMubGVuZ3RofWFkZE9wKGUsdCl7dGhpcy5vcHRpbWl6ZXIucHVzaChlLHQpO3RoaXMud2VpZ2h0Kys7dGhpcy5fc3RyZWFtU2luayYmKHRoaXMud2VpZ2h0Pj1PcGVyYXRvckxpc3QuQ0hVTktfU0laRXx8dGhpcy53ZWlnaHQ+PU9wZXJhdG9yTGlzdC5DSFVOS19TSVpFX0FCT1VUJiYoZT09PXhBfHxlPT09QWUpKSYmdGhpcy5mbHVzaCgpfWFkZEltYWdlT3BzKGUsdCxpKXt2b2lkIDAhPT1pJiZ0aGlzLmFkZE9wKEplLFsiT0MiLGldKTt0aGlzLmFkZE9wKGUsdCk7dm9pZCAwIT09aSYmdGhpcy5hZGRPcChZZSxbXSl9YWRkRGVwZW5kZW5jeShlKXtpZighdGhpcy5kZXBlbmRlbmNpZXMuaGFzKGUpKXt0aGlzLmRlcGVuZGVuY2llcy5hZGQoZSk7dGhpcy5hZGRPcCh5QSxbZV0pfX1hZGREZXBlbmRlbmNpZXMoZSl7Zm9yKGNvbnN0IHQgb2YgZSl0aGlzLmFkZERlcGVuZGVuY3kodCl9YWRkT3BMaXN0KGUpe2lmKGUgaW5zdGFuY2VvZiBPcGVyYXRvckxpc3Qpe2Zvcihjb25zdCB0IG9mIGUuZGVwZW5kZW5jaWVzKXRoaXMuZGVwZW5kZW5jaWVzLmFkZCh0KTtmb3IobGV0IHQ9MCxpPWUubGVuZ3RoO3Q8aTt0KyspdGhpcy5hZGRPcChlLmZuQXJyYXlbdF0sZS5hcmdzQXJyYXlbdF0pfWVsc2Ugd2FybignYWRkT3BMaXN0IC0gaWdub3JpbmcgaW52YWxpZCAib3BMaXN0IiBwYXJhbWV0ZXIuJyl9Z2V0SVIoKXtyZXR1cm57Zm5BcnJheTp0aGlzLmZuQXJyYXksYXJnc0FycmF5OnRoaXMuYXJnc0FycmF5LGxlbmd0aDp0aGlzLmxlbmd0aH19Z2V0IF90cmFuc2ZlcnMoKXtjb25zdCBlPVtdLHtmbkFycmF5OnQsYXJnc0FycmF5OmksbGVuZ3RoOmF9PXRoaXM7Zm9yKGxldCBzPTA7czxhO3MrKylzd2l0Y2godFtzXSl7Y2FzZSB6ZTpjYXNlIF9lOmNhc2UgWGU6Y29uc3QgdD1pW3NdWzBdOyF0LmNhY2hlZCYmdC5kYXRhPy5idWZmZXIgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlciYmZS5wdXNoKHQuZGF0YS5idWZmZXIpfXJldHVybiBlfWZsdXNoKGU9ITEsdD1udWxsKXt0aGlzLm9wdGltaXplci5mbHVzaCgpO2NvbnN0IGk9dGhpcy5sZW5ndGg7dGhpcy5fdG90YWxMZW5ndGgrPWk7dGhpcy5fc3RyZWFtU2luay5lbnF1ZXVlKHtmbkFycmF5OnRoaXMuZm5BcnJheSxhcmdzQXJyYXk6dGhpcy5hcmdzQXJyYXksbGFzdENodW5rOmUsc2VwYXJhdGVBbm5vdHM6dCxsZW5ndGg6aX0sMSx0aGlzLl90cmFuc2ZlcnMpO3RoaXMuZGVwZW5kZW5jaWVzLmNsZWFyKCk7dGhpcy5mbkFycmF5Lmxlbmd0aD0wO3RoaXMuYXJnc0FycmF5Lmxlbmd0aD0wO3RoaXMud2VpZ2h0PTA7dGhpcy5vcHRpbWl6ZXIucmVzZXQoKX19ZnVuY3Rpb24gZGVjb2RlQW5kQ2xhbXAoZSx0LGksYSl7KGU9dCtlKmkpPDA/ZT0wOmU+YSYmKGU9YSk7cmV0dXJuIGV9ZnVuY3Rpb24gcmVzaXplSW1hZ2VNYXNrKGUsdCxpLGEscyxyKXtjb25zdCBuPXMqcjtsZXQgbztvPXQ8PTg/bmV3IFVpbnQ4QXJyYXkobik6dDw9MTY/bmV3IFVpbnQxNkFycmF5KG4pOm5ldyBVaW50MzJBcnJheShuKTtjb25zdCBnPWkvcyxjPWEvcjtsZXQgQyxoLGwsUSxFPTA7Y29uc3QgdT1uZXcgVWludDE2QXJyYXkocyksZD1pO2ZvcihDPTA7QzxzO0MrKyl1W0NdPU1hdGguZmxvb3IoQypnKTtmb3IoQz0wO0M8cjtDKyspe2w9TWF0aC5mbG9vcihDKmMpKmQ7Zm9yKGg9MDtoPHM7aCsrKXtRPWwrdVtoXTtvW0UrK109ZVtRXX19cmV0dXJuIG99Y2xhc3MgUERGSW1hZ2V7Y29uc3RydWN0b3Ioe3hyZWY6ZSxyZXM6dCxpbWFnZTppLGlzSW5saW5lOmE9ITEsc21hc2s6cz1udWxsLG1hc2s6cj1udWxsLGlzTWFzazpuPSExLHBkZkZ1bmN0aW9uRmFjdG9yeTpvLGxvY2FsQ29sb3JTcGFjZUNhY2hlOmd9KXt0aGlzLmltYWdlPWk7bGV0IGM9ITE7Y29uc3QgQz1pLmRpY3QsaD1DLmdldCgiRiIsIkZpbHRlciIpO2xldCBsO2lmKGggaW5zdGFuY2VvZiBOYW1lKWw9aC5uYW1lO2Vsc2UgaWYoQXJyYXkuaXNBcnJheShoKSl7Y29uc3QgdD1lLmZldGNoSWZSZWYoaFswXSk7dCBpbnN0YW5jZW9mIE5hbWUmJihsPXQubmFtZSl9c3dpdGNoKGwpe2Nhc2UiSlBYRGVjb2RlIjooe3dpZHRoOmkud2lkdGgsaGVpZ2h0OmkuaGVpZ2h0LGNvbXBvbmVudHNDb3VudDppLm51bUNvbXBzLGJpdHNQZXJDb21wb25lbnQ6aS5iaXRzUGVyQ29tcG9uZW50fT1KcHhJbWFnZS5wYXJzZUltYWdlUHJvcGVydGllcyhpLnN0cmVhbSkpO2kuc3RyZWFtLnJlc2V0KCk7Yz0hMDticmVhaztjYXNlIkpCSUcyRGVjb2RlIjppLmJpdHNQZXJDb21wb25lbnQ9MTtpLm51bUNvbXBzPTF9bGV0IFE9Qy5nZXQoIlciLCJXaWR0aCIpLEU9Qy5nZXQoIkgiLCJIZWlnaHQiKTtpZihOdW1iZXIuaXNJbnRlZ2VyKGkud2lkdGgpJiZpLndpZHRoPjAmJk51bWJlci5pc0ludGVnZXIoaS5oZWlnaHQpJiZpLmhlaWdodD4wJiYoaS53aWR0aCE9PVF8fGkuaGVpZ2h0IT09RSkpe3dhcm4oIlBERkltYWdlIC0gdXNpbmcgdGhlIFdpZHRoL0hlaWdodCBvZiB0aGUgaW1hZ2UgZGF0YSwgcmF0aGVyIHRoYW4gdGhlIGltYWdlIGRpY3Rpb25hcnkuIik7UT1pLndpZHRoO0U9aS5oZWlnaHR9aWYoUTwxfHxFPDEpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbnZhbGlkIGltYWdlIHdpZHRoOiAke1F9IG9yIGhlaWdodDogJHtFfWApO3RoaXMud2lkdGg9UTt0aGlzLmhlaWdodD1FO3RoaXMuaW50ZXJwb2xhdGU9Qy5nZXQoIkkiLCJJbnRlcnBvbGF0ZSIpO3RoaXMuaW1hZ2VNYXNrPUMuZ2V0KCJJTSIsIkltYWdlTWFzayIpfHwhMTt0aGlzLm1hdHRlPUMuZ2V0KCJNYXR0ZSIpfHwhMTtsZXQgdT1pLmJpdHNQZXJDb21wb25lbnQ7aWYoIXUpe3U9Qy5nZXQoIkJQQyIsIkJpdHNQZXJDb21wb25lbnQiKTtpZighdSl7aWYoIXRoaXMuaW1hZ2VNYXNrKXRocm93IG5ldyBGb3JtYXRFcnJvcihgQml0cyBwZXIgY29tcG9uZW50IG1pc3NpbmcgaW4gaW1hZ2U6ICR7dGhpcy5pbWFnZU1hc2t9YCk7dT0xfX10aGlzLmJwYz11O2lmKCF0aGlzLmltYWdlTWFzayl7bGV0IHM9Qy5nZXRSYXcoIkNTIil8fEMuZ2V0UmF3KCJDb2xvclNwYWNlIik7aWYoIXMpe2luZm8oIkpQWCBpbWFnZXMgKHdoaWNoIGRvIG5vdCByZXF1aXJlIGNvbG9yIHNwYWNlcykiKTtzd2l0Y2goaS5udW1Db21wcyl7Y2FzZSAxOnM9TmFtZS5nZXQoIkRldmljZUdyYXkiKTticmVhaztjYXNlIDM6cz1OYW1lLmdldCgiRGV2aWNlUkdCIik7YnJlYWs7Y2FzZSA0OnM9TmFtZS5nZXQoIkRldmljZUNNWUsiKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgSlBYIGltYWdlcyB3aXRoICR7aS5udW1Db21wc30gY29sb3IgY29tcG9uZW50cyBub3Qgc3VwcG9ydGVkLmApfX10aGlzLmNvbG9yU3BhY2U9Q29sb3JTcGFjZS5wYXJzZSh7Y3M6cyx4cmVmOmUscmVzb3VyY2VzOmE/dDpudWxsLHBkZkZ1bmN0aW9uRmFjdG9yeTpvLGxvY2FsQ29sb3JTcGFjZUNhY2hlOmd9KTt0aGlzLm51bUNvbXBzPXRoaXMuY29sb3JTcGFjZS5udW1Db21wczt0aGlzLmlnbm9yZUNvbG9yU3BhY2U9YyYmIkluZGV4ZWQiPT09dGhpcy5jb2xvclNwYWNlLm5hbWV9dGhpcy5kZWNvZGU9Qy5nZXRBcnJheSgiRCIsIkRlY29kZSIpO3RoaXMubmVlZHNEZWNvZGU9ITE7aWYodGhpcy5kZWNvZGUmJih0aGlzLmNvbG9yU3BhY2UmJiF0aGlzLmNvbG9yU3BhY2UuaXNEZWZhdWx0RGVjb2RlKHRoaXMuZGVjb2RlLHUpfHxuJiYhQ29sb3JTcGFjZS5pc0RlZmF1bHREZWNvZGUodGhpcy5kZWNvZGUsMSkpKXt0aGlzLm5lZWRzRGVjb2RlPSEwO2NvbnN0IGU9KDE8PHUpLTE7dGhpcy5kZWNvZGVDb2VmZmljaWVudHM9W107dGhpcy5kZWNvZGVBZGRlbmRzPVtdO2NvbnN0IHQ9IkluZGV4ZWQiPT09dGhpcy5jb2xvclNwYWNlPy5uYW1lO2ZvcihsZXQgaT0wLGE9MDtpPHRoaXMuZGVjb2RlLmxlbmd0aDtpKz0yLCsrYSl7Y29uc3Qgcz10aGlzLmRlY29kZVtpXSxyPXRoaXMuZGVjb2RlW2krMV07dGhpcy5kZWNvZGVDb2VmZmljaWVudHNbYV09dD8oci1zKS9lOnItczt0aGlzLmRlY29kZUFkZGVuZHNbYV09dD9zOmUqc319aWYocyl0aGlzLnNtYXNrPW5ldyBQREZJbWFnZSh7eHJlZjplLHJlczp0LGltYWdlOnMsaXNJbmxpbmU6YSxwZGZGdW5jdGlvbkZhY3Rvcnk6byxsb2NhbENvbG9yU3BhY2VDYWNoZTpnfSk7ZWxzZSBpZihyKWlmKHIgaW5zdGFuY2VvZiBCYXNlU3RyZWFtKXtyLmRpY3QuZ2V0KCJJTSIsIkltYWdlTWFzayIpP3RoaXMubWFzaz1uZXcgUERGSW1hZ2Uoe3hyZWY6ZSxyZXM6dCxpbWFnZTpyLGlzSW5saW5lOmEsaXNNYXNrOiEwLHBkZkZ1bmN0aW9uRmFjdG9yeTpvLGxvY2FsQ29sb3JTcGFjZUNhY2hlOmd9KTp3YXJuKCJJZ25vcmluZyAvTWFzayBpbiBpbWFnZSB3aXRob3V0IC9JbWFnZU1hc2suIil9ZWxzZSB0aGlzLm1hc2s9cn1zdGF0aWMgYXN5bmMgYnVpbGRJbWFnZSh7eHJlZjplLHJlczp0LGltYWdlOmksaXNJbmxpbmU6YT0hMSxwZGZGdW5jdGlvbkZhY3Rvcnk6cyxsb2NhbENvbG9yU3BhY2VDYWNoZTpyfSl7Y29uc3Qgbj1pO2xldCBvPW51bGwsZz1udWxsO2NvbnN0IGM9aS5kaWN0LmdldCgiU01hc2siKSxDPWkuZGljdC5nZXQoIk1hc2siKTtjP2MgaW5zdGFuY2VvZiBCYXNlU3RyZWFtP289Yzp3YXJuKCJVbnN1cHBvcnRlZCAvU01hc2sgZm9ybWF0LiIpOkMmJihDIGluc3RhbmNlb2YgQmFzZVN0cmVhbXx8QXJyYXkuaXNBcnJheShDKT9nPUM6d2FybigiVW5zdXBwb3J0ZWQgL01hc2sgZm9ybWF0LiIpKTtyZXR1cm4gbmV3IFBERkltYWdlKHt4cmVmOmUscmVzOnQsaW1hZ2U6bixpc0lubGluZTphLHNtYXNrOm8sbWFzazpnLHBkZkZ1bmN0aW9uRmFjdG9yeTpzLGxvY2FsQ29sb3JTcGFjZUNhY2hlOnJ9KX1zdGF0aWMgY3JlYXRlUmF3TWFzayh7aW1nQXJyYXk6ZSx3aWR0aDp0LGhlaWdodDppLGltYWdlSXNGcm9tRGVjb2RlU3RyZWFtOmEsaW52ZXJzZURlY29kZTpzLGludGVycG9sYXRlOnJ9KXtjb25zdCBuPSh0Kzc+PjMpKmksbz1lLmJ5dGVMZW5ndGg7bGV0IGcsYztpZighYXx8cyYmIShuPT09bykpaWYocyl7Zz1uZXcgVWludDhBcnJheShuKTtnLnNldChlKTtnLmZpbGwoMjU1LG8pfWVsc2UgZz1uZXcgVWludDhBcnJheShlKTtlbHNlIGc9ZTtpZihzKWZvcihjPTA7YzxvO2MrKylnW2NdXj0yNTU7cmV0dXJue2RhdGE6Zyx3aWR0aDp0LGhlaWdodDppLGludGVycG9sYXRlOnJ9fXN0YXRpYyBhc3luYyBjcmVhdGVNYXNrKHtpbWdBcnJheTplLHdpZHRoOnQsaGVpZ2h0OmksaW1hZ2VJc0Zyb21EZWNvZGVTdHJlYW06YSxpbnZlcnNlRGVjb2RlOnMsaW50ZXJwb2xhdGU6cixpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZDpuPSExfSl7Y29uc3Qgbz0xPT09dCYmMT09PWkmJnM9PT0oMD09PWUubGVuZ3RofHwhISgxMjgmZVswXSkpO2lmKG8pcmV0dXJue2lzU2luZ2xlT3BhcXVlUGl4ZWw6b307aWYobil7aWYoSW1hZ2VSZXNpemVyLm5lZWRzVG9CZVJlc2l6ZWQodCxpKSl7Y29uc3QgYT1uZXcgVWludDhDbGFtcGVkQXJyYXkodCppKjQpO2NvbnZlcnRCbGFja0FuZFdoaXRlVG9SR0JBKHtzcmM6ZSxkZXN0OmEsd2lkdGg6dCxoZWlnaHQ6aSxub25CbGFja0NvbG9yOjAsaW52ZXJzZURlY29kZTpzfSk7cmV0dXJuIEltYWdlUmVzaXplci5jcmVhdGVJbWFnZSh7a2luZDpGLGRhdGE6YSx3aWR0aDp0LGhlaWdodDppLGludGVycG9sYXRlOnJ9KX1jb25zdCBhPW5ldyBPZmZzY3JlZW5DYW52YXModCxpKSxuPWEuZ2V0Q29udGV4dCgiMmQiKSxvPW4uY3JlYXRlSW1hZ2VEYXRhKHQsaSk7Y29udmVydEJsYWNrQW5kV2hpdGVUb1JHQkEoe3NyYzplLGRlc3Q6by5kYXRhLHdpZHRoOnQsaGVpZ2h0Omksbm9uQmxhY2tDb2xvcjowLGludmVyc2VEZWNvZGU6c30pO24ucHV0SW1hZ2VEYXRhKG8sMCwwKTtyZXR1cm57ZGF0YTpudWxsLHdpZHRoOnQsaGVpZ2h0OmksaW50ZXJwb2xhdGU6cixiaXRtYXA6YS50cmFuc2ZlclRvSW1hZ2VCaXRtYXAoKX19cmV0dXJuIHRoaXMuY3JlYXRlUmF3TWFzayh7aW1nQXJyYXk6ZSx3aWR0aDp0LGhlaWdodDppLGludmVyc2VEZWNvZGU6cyxpbWFnZUlzRnJvbURlY29kZVN0cmVhbTphLGludGVycG9sYXRlOnJ9KX1nZXQgZHJhd1dpZHRoKCl7cmV0dXJuIE1hdGgubWF4KHRoaXMud2lkdGgsdGhpcy5zbWFzaz8ud2lkdGh8fDAsdGhpcy5tYXNrPy53aWR0aHx8MCl9Z2V0IGRyYXdIZWlnaHQoKXtyZXR1cm4gTWF0aC5tYXgodGhpcy5oZWlnaHQsdGhpcy5zbWFzaz8uaGVpZ2h0fHwwLHRoaXMubWFzaz8uaGVpZ2h0fHwwKX1kZWNvZGVCdWZmZXIoZSl7Y29uc3QgdD10aGlzLmJwYyxpPXRoaXMubnVtQ29tcHMsYT10aGlzLmRlY29kZUFkZGVuZHMscz10aGlzLmRlY29kZUNvZWZmaWNpZW50cyxyPSgxPDx0KS0xO2xldCBuLG87aWYoMT09PXQpe2ZvcihuPTAsbz1lLmxlbmd0aDtuPG87bisrKWVbbl09KyFlW25dO3JldHVybn1sZXQgZz0wO2ZvcihuPTAsbz10aGlzLndpZHRoKnRoaXMuaGVpZ2h0O248bztuKyspZm9yKGxldCB0PTA7dDxpO3QrKyl7ZVtnXT1kZWNvZGVBbmRDbGFtcChlW2ddLGFbdF0sc1t0XSxyKTtnKyt9fWdldENvbXBvbmVudHMoZSl7Y29uc3QgdD10aGlzLmJwYztpZig4PT09dClyZXR1cm4gZTtjb25zdCBpPXRoaXMud2lkdGgsYT10aGlzLmhlaWdodCxzPXRoaXMubnVtQ29tcHMscj1pKmEqcztsZXQgbixvPTA7bj10PD04P25ldyBVaW50OEFycmF5KHIpOnQ8PTE2P25ldyBVaW50MTZBcnJheShyKTpuZXcgVWludDMyQXJyYXkocik7Y29uc3QgZz1pKnMsYz0oMTw8dCktMTtsZXQgQyxoLGw9MDtpZigxPT09dCl7bGV0IHQsaSxzO2ZvcihsZXQgcj0wO3I8YTtyKyspe2k9bCsoLTgmZyk7cz1sK2c7Zm9yKDtsPGk7KXtoPWVbbysrXTtuW2xdPWg+PjcmMTtuW2wrMV09aD4+NiYxO25bbCsyXT1oPj41JjE7bltsKzNdPWg+PjQmMTtuW2wrNF09aD4+MyYxO25bbCs1XT1oPj4yJjE7bltsKzZdPWg+PjEmMTtuW2wrN109MSZoO2wrPTh9aWYobDxzKXtoPWVbbysrXTt0PTEyODtmb3IoO2w8czspe25bbCsrXT0rISEoaCZ0KTt0Pj49MX19fX1lbHNle2xldCBpPTA7aD0wO2ZvcihsPTAsQz1yO2w8QzsrK2wpe2lmKGwlZz09MCl7aD0wO2k9MH1mb3IoO2k8dDspe2g9aDw8OHxlW28rK107aSs9OH1jb25zdCBhPWktdDtsZXQgcz1oPj5hO3M8MD9zPTA6cz5jJiYocz1jKTtuW2xdPXM7aCY9KDE8PGEpLTE7aT1hfX1yZXR1cm4gbn1maWxsT3BhY2l0eShlLHQsaSxhLHMpe2NvbnN0IHI9dGhpcy5zbWFzayxuPXRoaXMubWFzaztsZXQgbyxnLGMsQyxoLGw7aWYocil7Zz1yLndpZHRoO2M9ci5oZWlnaHQ7bz1uZXcgVWludDhDbGFtcGVkQXJyYXkoZypjKTtyLmZpbGxHcmF5QnVmZmVyKG8pO2c9PT10JiZjPT09aXx8KG89cmVzaXplSW1hZ2VNYXNrKG8sci5icGMsZyxjLHQsaSkpfWVsc2UgaWYobilpZihuIGluc3RhbmNlb2YgUERGSW1hZ2Upe2c9bi53aWR0aDtjPW4uaGVpZ2h0O289bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KGcqYyk7bi5udW1Db21wcz0xO24uZmlsbEdyYXlCdWZmZXIobyk7Zm9yKEM9MCxoPWcqYztDPGg7KytDKW9bQ109MjU1LW9bQ107Zz09PXQmJmM9PT1pfHwobz1yZXNpemVJbWFnZU1hc2sobyxuLmJwYyxnLGMsdCxpKSl9ZWxzZXtpZighQXJyYXkuaXNBcnJheShuKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlVua25vd24gbWFzayBmb3JtYXQuIik7e289bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KHQqaSk7Y29uc3QgZT10aGlzLm51bUNvbXBzO2ZvcihDPTAsaD10Kmk7QzxoOysrQyl7bGV0IHQ9MDtjb25zdCBpPUMqZTtmb3IobD0wO2w8ZTsrK2wpe2NvbnN0IGU9c1tpK2xdLGE9MipsO2lmKGU8blthXXx8ZT5uW2ErMV0pe3Q9MjU1O2JyZWFrfX1vW0NdPXR9fX1pZihvKWZvcihDPTAsbD0zLGg9dCphO0M8aDsrK0MsbCs9NCllW2xdPW9bQ107ZWxzZSBmb3IoQz0wLGw9MyxoPXQqYTtDPGg7KytDLGwrPTQpZVtsXT0yNTV9dW5kb1ByZWJsZW5kKGUsdCxpKXtjb25zdCBhPXRoaXMuc21hc2s/Lm1hdHRlO2lmKCFhKXJldHVybjtjb25zdCBzPXRoaXMuY29sb3JTcGFjZS5nZXRSZ2IoYSwwKSxyPXNbMF0sbj1zWzFdLG89c1syXSxnPXQqaSo0O2ZvcihsZXQgdD0wO3Q8Zzt0Kz00KXtjb25zdCBpPWVbdCszXTtpZigwPT09aSl7ZVt0XT0yNTU7ZVt0KzFdPTI1NTtlW3QrMl09MjU1O2NvbnRpbnVlfWNvbnN0IGE9MjU1L2k7ZVt0XT0oZVt0XS1yKSphK3I7ZVt0KzFdPShlW3QrMV0tbikqYStuO2VbdCsyXT0oZVt0KzJdLW8pKmErb319YXN5bmMgY3JlYXRlSW1hZ2VEYXRhKGU9ITEsdD0hMSl7Y29uc3QgaT10aGlzLmRyYXdXaWR0aCxhPXRoaXMuZHJhd0hlaWdodCxzPXt3aWR0aDppLGhlaWdodDphLGludGVycG9sYXRlOnRoaXMuaW50ZXJwb2xhdGUsa2luZDowLGRhdGE6bnVsbH0scj10aGlzLm51bUNvbXBzLG49dGhpcy53aWR0aCxvPXRoaXMuaGVpZ2h0LGc9dGhpcy5icGMsYz1uKnIqZys3Pj4zLEM9dCYmSW1hZ2VSZXNpemVyLm5lZWRzVG9CZVJlc2l6ZWQoaSxhKTtpZighZSl7bGV0IGU7IkRldmljZUdyYXkiPT09dGhpcy5jb2xvclNwYWNlLm5hbWUmJjE9PT1nP2U9YjoiRGV2aWNlUkdCIiE9PXRoaXMuY29sb3JTcGFjZS5uYW1lfHw4IT09Z3x8dGhpcy5uZWVkc0RlY29kZXx8KGU9RCk7aWYoZSYmIXRoaXMuc21hc2smJiF0aGlzLm1hc2smJmk9PT1uJiZhPT09byl7Y29uc3Qgcj10aGlzLmdldEltYWdlQnl0ZXMobypjLHt9KTtpZih0KXJldHVybiBDP0ltYWdlUmVzaXplci5jcmVhdGVJbWFnZSh7ZGF0YTpyLGtpbmQ6ZSx3aWR0aDppLGhlaWdodDphLGludGVycG9sYXRlOnRoaXMuaW50ZXJwb2xhdGV9LHRoaXMubmVlZHNEZWNvZGUpOnRoaXMuY3JlYXRlQml0bWFwKGUsbixvLHIpO3Mua2luZD1lO3MuZGF0YT1yO2lmKHRoaXMubmVlZHNEZWNvZGUpe2Fzc2VydChlPT09YiwiUERGSW1hZ2UuY3JlYXRlSW1hZ2VEYXRhOiBUaGUgaW1hZ2UgbXVzdCBiZSBncmF5c2NhbGUuIik7Y29uc3QgdD1zLmRhdGE7Zm9yKGxldCBlPTAsaT10Lmxlbmd0aDtlPGk7ZSsrKXRbZV1ePTI1NX1yZXR1cm4gc31pZih0aGlzLmltYWdlIGluc3RhbmNlb2YgSnBlZ1N0cmVhbSYmIXRoaXMuc21hc2smJiF0aGlzLm1hc2smJiF0aGlzLm5lZWRzRGVjb2RlKXtsZXQgZT1vKmM7aWYodCYmIUMpe2xldCB0PSExO3N3aXRjaCh0aGlzLmNvbG9yU3BhY2UubmFtZSl7Y2FzZSJEZXZpY2VHcmF5IjplKj00O3Q9ITA7YnJlYWs7Y2FzZSJEZXZpY2VSR0IiOmU9ZS8zKjQ7dD0hMDticmVhaztjYXNlIkRldmljZUNNWUsiOnQ9ITB9aWYodCl7Y29uc3QgdD10aGlzLmdldEltYWdlQnl0ZXMoZSx7ZHJhd1dpZHRoOmksZHJhd0hlaWdodDphLGZvcmNlUkdCQTohMH0pO3JldHVybiB0aGlzLmNyZWF0ZUJpdG1hcChGLGksYSx0KX19ZWxzZSBzd2l0Y2godGhpcy5jb2xvclNwYWNlLm5hbWUpe2Nhc2UiRGV2aWNlR3JheSI6ZSo9MztjYXNlIkRldmljZVJHQiI6Y2FzZSJEZXZpY2VDTVlLIjpzLmtpbmQ9RDtzLmRhdGE9dGhpcy5nZXRJbWFnZUJ5dGVzKGUse2RyYXdXaWR0aDppLGRyYXdIZWlnaHQ6YSxmb3JjZVJHQjohMH0pO3JldHVybiBDP0ltYWdlUmVzaXplci5jcmVhdGVJbWFnZShzKTpzfX19Y29uc3QgaD10aGlzLmdldEltYWdlQnl0ZXMobypjLHtpbnRlcm5hbDohMH0pLGw9MHxoLmxlbmd0aC9jKmEvbyxRPXRoaXMuZ2V0Q29tcG9uZW50cyhoKTtsZXQgRSx1LGQsZixwLG07aWYodCYmIUMpe2Q9bmV3IE9mZnNjcmVlbkNhbnZhcyhpLGEpO2Y9ZC5nZXRDb250ZXh0KCIyZCIpO3A9Zi5jcmVhdGVJbWFnZURhdGEoaSxhKTttPXAuZGF0YX1zLmtpbmQ9RjtpZihlfHx0aGlzLnNtYXNrfHx0aGlzLm1hc2spe3QmJiFDfHwobT1uZXcgVWludDhDbGFtcGVkQXJyYXkoaSphKjQpKTtFPTE7dT0hMDt0aGlzLmZpbGxPcGFjaXR5KG0saSxhLGwsUSl9ZWxzZXtpZighdHx8Qyl7cy5raW5kPUQ7bT1uZXcgVWludDhDbGFtcGVkQXJyYXkoaSphKjMpO0U9MH1lbHNle25ldyBVaW50MzJBcnJheShtLmJ1ZmZlcikuZmlsbChGZWF0dXJlVGVzdC5pc0xpdHRsZUVuZGlhbj80Mjc4MTkwMDgwOjI1NSk7RT0xfXU9ITF9dGhpcy5uZWVkc0RlY29kZSYmdGhpcy5kZWNvZGVCdWZmZXIoUSk7dGhpcy5jb2xvclNwYWNlLmZpbGxSZ2IobSxuLG8saSxhLGwsZyxRLEUpO3UmJnRoaXMudW5kb1ByZWJsZW5kKG0saSxsKTtpZih0JiYhQyl7Zi5wdXRJbWFnZURhdGEocCwwLDApO3JldHVybntkYXRhOm51bGwsd2lkdGg6aSxoZWlnaHQ6YSxiaXRtYXA6ZC50cmFuc2ZlclRvSW1hZ2VCaXRtYXAoKSxpbnRlcnBvbGF0ZTp0aGlzLmludGVycG9sYXRlfX1zLmRhdGE9bTtyZXR1cm4gQz9JbWFnZVJlc2l6ZXIuY3JlYXRlSW1hZ2Uocyk6c31maWxsR3JheUJ1ZmZlcihlKXtjb25zdCB0PXRoaXMubnVtQ29tcHM7aWYoMSE9PXQpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBSZWFkaW5nIGdyYXkgc2NhbGUgZnJvbSBhIGNvbG9yIGltYWdlOiAke3R9YCk7Y29uc3QgaT10aGlzLndpZHRoLGE9dGhpcy5oZWlnaHQscz10aGlzLmJwYyxyPWkqdCpzKzc+PjMsbj10aGlzLmdldEltYWdlQnl0ZXMoYSpyLHtpbnRlcm5hbDohMH0pLG89dGhpcy5nZXRDb21wb25lbnRzKG4pO2xldCBnLGM7aWYoMT09PXMpe2M9aSphO2lmKHRoaXMubmVlZHNEZWNvZGUpZm9yKGc9MDtnPGM7KytnKWVbZ109b1tnXS0xJjI1NTtlbHNlIGZvcihnPTA7ZzxjOysrZyllW2ddPTI1NSYtb1tnXTtyZXR1cm59dGhpcy5uZWVkc0RlY29kZSYmdGhpcy5kZWNvZGVCdWZmZXIobyk7Yz1pKmE7Y29uc3QgQz0yNTUvKCgxPDxzKS0xKTtmb3IoZz0wO2c8YzsrK2cpZVtnXT1DKm9bZ119Y3JlYXRlQml0bWFwKGUsdCxpLGEpe2NvbnN0IHM9bmV3IE9mZnNjcmVlbkNhbnZhcyh0LGkpLHI9cy5nZXRDb250ZXh0KCIyZCIpO2xldCBuO2lmKGU9PT1GKW49bmV3IEltYWdlRGF0YShhLHQsaSk7ZWxzZXtuPXIuY3JlYXRlSW1hZ2VEYXRhKHQsaSk7Y29udmVydFRvUkdCQSh7a2luZDplLHNyYzphLGRlc3Q6bmV3IFVpbnQzMkFycmF5KG4uZGF0YS5idWZmZXIpLHdpZHRoOnQsaGVpZ2h0OmksaW52ZXJzZURlY29kZTp0aGlzLm5lZWRzRGVjb2RlfSl9ci5wdXRJbWFnZURhdGEobiwwLDApO3JldHVybntkYXRhOm51bGwsd2lkdGg6dCxoZWlnaHQ6aSxiaXRtYXA6cy50cmFuc2ZlclRvSW1hZ2VCaXRtYXAoKSxpbnRlcnBvbGF0ZTp0aGlzLmludGVycG9sYXRlfX1nZXRJbWFnZUJ5dGVzKGUse2RyYXdXaWR0aDp0LGRyYXdIZWlnaHQ6aSxmb3JjZVJHQkE6YT0hMSxmb3JjZVJHQjpzPSExLGludGVybmFsOnI9ITF9KXt0aGlzLmltYWdlLnJlc2V0KCk7dGhpcy5pbWFnZS5kcmF3V2lkdGg9dHx8dGhpcy53aWR0aDt0aGlzLmltYWdlLmRyYXdIZWlnaHQ9aXx8dGhpcy5oZWlnaHQ7dGhpcy5pbWFnZS5mb3JjZVJHQkE9ISFhO3RoaXMuaW1hZ2UuZm9yY2VSR0I9ISFzO2NvbnN0IG49dGhpcy5pbWFnZS5nZXRCeXRlcyhlLHRoaXMuaWdub3JlQ29sb3JTcGFjZSk7aWYocnx8dGhpcy5pbWFnZSBpbnN0YW5jZW9mIERlY29kZVN0cmVhbSlyZXR1cm4gbjthc3NlcnQobiBpbnN0YW5jZW9mIFVpbnQ4QXJyYXksJ1BERkltYWdlLmdldEltYWdlQnl0ZXM6IFVuc3VwcG9ydGVkICJpbWFnZUJ5dGVzIiB0eXBlLicpO3JldHVybiBuZXcgVWludDhBcnJheShuKX19Y29uc3QgRHM9T2JqZWN0LmZyZWV6ZSh7bWF4SW1hZ2VTaXplOi0xLGRpc2FibGVGb250RmFjZTohMSxpZ25vcmVFcnJvcnM6ITEsaXNFdmFsU3VwcG9ydGVkOiEwLGlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkOiExLGNhbnZhc01heEFyZWFJbkJ5dGVzOi0xLGZvbnRFeHRyYVByb3BlcnRpZXM6ITEsdXNlU3lzdGVtRm9udHM6ITAsY01hcFVybDpudWxsLHN0YW5kYXJkRm9udERhdGFVcmw6bnVsbH0pLEZzPTEsU3M9Mixrcz1Qcm9taXNlLnJlc29sdmUoKTtmdW5jdGlvbiBub3JtYWxpemVCbGVuZE1vZGUoZSx0PSExKXtpZihBcnJheS5pc0FycmF5KGUpKXtmb3IoY29uc3QgdCBvZiBlKXtjb25zdCBlPW5vcm1hbGl6ZUJsZW5kTW9kZSh0LCEwKTtpZihlKXJldHVybiBlfXdhcm4oYFVuc3VwcG9ydGVkIGJsZW5kIG1vZGUgQXJyYXk6ICR7ZX1gKTtyZXR1cm4ic291cmNlLW92ZXIifWlmKCEoZSBpbnN0YW5jZW9mIE5hbWUpKXJldHVybiB0P251bGw6InNvdXJjZS1vdmVyIjtzd2l0Y2goZS5uYW1lKXtjYXNlIk5vcm1hbCI6Y2FzZSJDb21wYXRpYmxlIjpyZXR1cm4ic291cmNlLW92ZXIiO2Nhc2UiTXVsdGlwbHkiOnJldHVybiJtdWx0aXBseSI7Y2FzZSJTY3JlZW4iOnJldHVybiJzY3JlZW4iO2Nhc2UiT3ZlcmxheSI6cmV0dXJuIm92ZXJsYXkiO2Nhc2UiRGFya2VuIjpyZXR1cm4iZGFya2VuIjtjYXNlIkxpZ2h0ZW4iOnJldHVybiJsaWdodGVuIjtjYXNlIkNvbG9yRG9kZ2UiOnJldHVybiJjb2xvci1kb2RnZSI7Y2FzZSJDb2xvckJ1cm4iOnJldHVybiJjb2xvci1idXJuIjtjYXNlIkhhcmRMaWdodCI6cmV0dXJuImhhcmQtbGlnaHQiO2Nhc2UiU29mdExpZ2h0IjpyZXR1cm4ic29mdC1saWdodCI7Y2FzZSJEaWZmZXJlbmNlIjpyZXR1cm4iZGlmZmVyZW5jZSI7Y2FzZSJFeGNsdXNpb24iOnJldHVybiJleGNsdXNpb24iO2Nhc2UiSHVlIjpyZXR1cm4iaHVlIjtjYXNlIlNhdHVyYXRpb24iOnJldHVybiJzYXR1cmF0aW9uIjtjYXNlIkNvbG9yIjpyZXR1cm4iY29sb3IiO2Nhc2UiTHVtaW5vc2l0eSI6cmV0dXJuImx1bWlub3NpdHkifWlmKHQpcmV0dXJuIG51bGw7d2FybihgVW5zdXBwb3J0ZWQgYmxlbmQgbW9kZTogJHtlLm5hbWV9YCk7cmV0dXJuInNvdXJjZS1vdmVyIn1mdW5jdGlvbiBpbmNyZW1lbnRDYWNoZWRJbWFnZU1hc2tDb3VudChlKXtlLmZuPT09WGUmJmUuYXJnc1swXT8uY291bnQ+MCYmZS5hcmdzWzBdLmNvdW50Kyt9Y2xhc3MgVGltZVNsb3RNYW5hZ2Vye3N0YXRpYyBUSU1FX1NMT1RfRFVSQVRJT05fTVM9MjA7c3RhdGljIENIRUNLX1RJTUVfRVZFUlk9MTAwO2NvbnN0cnVjdG9yKCl7dGhpcy5yZXNldCgpfWNoZWNrKCl7aWYoKyt0aGlzLmNoZWNrZWQ8VGltZVNsb3RNYW5hZ2VyLkNIRUNLX1RJTUVfRVZFUlkpcmV0dXJuITE7dGhpcy5jaGVja2VkPTA7cmV0dXJuIHRoaXMuZW5kVGltZTw9RGF0ZS5ub3coKX1yZXNldCgpe3RoaXMuZW5kVGltZT1EYXRlLm5vdygpK1RpbWVTbG90TWFuYWdlci5USU1FX1NMT1RfRFVSQVRJT05fTVM7dGhpcy5jaGVja2VkPTB9fWNsYXNzIFBhcnRpYWxFdmFsdWF0b3J7Y29uc3RydWN0b3Ioe3hyZWY6ZSxoYW5kbGVyOnQscGFnZUluZGV4OmksaWRGYWN0b3J5OmEsZm9udENhY2hlOnMsYnVpbHRJbkNNYXBDYWNoZTpyLHN0YW5kYXJkRm9udERhdGFDYWNoZTpuLGdsb2JhbEltYWdlQ2FjaGU6byxzeXN0ZW1Gb250Q2FjaGU6ZyxvcHRpb25zOmM9bnVsbH0pe3RoaXMueHJlZj1lO3RoaXMuaGFuZGxlcj10O3RoaXMucGFnZUluZGV4PWk7dGhpcy5pZEZhY3Rvcnk9YTt0aGlzLmZvbnRDYWNoZT1zO3RoaXMuYnVpbHRJbkNNYXBDYWNoZT1yO3RoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlPW47dGhpcy5nbG9iYWxJbWFnZUNhY2hlPW87dGhpcy5zeXN0ZW1Gb250Q2FjaGU9Zzt0aGlzLm9wdGlvbnM9Y3x8RHM7dGhpcy5wYXJzaW5nVHlwZTNGb250PSExO3RoaXMuX3JlZ2lvbmFsSW1hZ2VDYWNoZT1uZXcgUmVnaW9uYWxJbWFnZUNhY2hlO3RoaXMuX2ZldGNoQnVpbHRJbkNNYXBCb3VuZD10aGlzLmZldGNoQnVpbHRJbkNNYXAuYmluZCh0aGlzKTtJbWFnZVJlc2l6ZXIuc2V0TWF4QXJlYSh0aGlzLm9wdGlvbnMuY2FudmFzTWF4QXJlYUluQnl0ZXMpfWdldCBfcGRmRnVuY3Rpb25GYWN0b3J5KCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJfcGRmRnVuY3Rpb25GYWN0b3J5IixuZXcgUERGRnVuY3Rpb25GYWN0b3J5KHt4cmVmOnRoaXMueHJlZixpc0V2YWxTdXBwb3J0ZWQ6dGhpcy5vcHRpb25zLmlzRXZhbFN1cHBvcnRlZH0pKX1jbG9uZShlPW51bGwpe2NvbnN0IHQ9T2JqZWN0LmNyZWF0ZSh0aGlzKTt0Lm9wdGlvbnM9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKG51bGwpLHRoaXMub3B0aW9ucyxlKTtyZXR1cm4gdH1oYXNCbGVuZE1vZGVzKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuITE7aWYoZS5vYmpJZCYmdC5oYXMoZS5vYmpJZCkpcmV0dXJuITE7Y29uc3QgaT1uZXcgUmVmU2V0KHQpO2Uub2JqSWQmJmkucHV0KGUub2JqSWQpO2NvbnN0IGE9W2VdLHM9dGhpcy54cmVmO2Zvcig7YS5sZW5ndGg7KXtjb25zdCBlPWEuc2hpZnQoKSx0PWUuZ2V0KCJFeHRHU3RhdGUiKTtpZih0IGluc3RhbmNlb2YgRGljdClmb3IobGV0IGUgb2YgdC5nZXRSYXdWYWx1ZXMoKSl7aWYoZSBpbnN0YW5jZW9mIFJlZil7aWYoaS5oYXMoZSkpY29udGludWU7dHJ5e2U9cy5mZXRjaChlKX1jYXRjaCh0KXtpLnB1dChlKTtpbmZvKGBoYXNCbGVuZE1vZGVzIC0gaWdub3JpbmcgRXh0R1N0YXRlOiAiJHt0fSIuYCk7Y29udGludWV9fWlmKCEoZSBpbnN0YW5jZW9mIERpY3QpKWNvbnRpbnVlO2Uub2JqSWQmJmkucHV0KGUub2JqSWQpO2NvbnN0IHQ9ZS5nZXQoIkJNIik7aWYodCBpbnN0YW5jZW9mIE5hbWUpe2lmKCJOb3JtYWwiIT09dC5uYW1lKXJldHVybiEwfWVsc2UgaWYodm9pZCAwIT09dCYmQXJyYXkuaXNBcnJheSh0KSlmb3IoY29uc3QgZSBvZiB0KWlmKGUgaW5zdGFuY2VvZiBOYW1lJiYiTm9ybWFsIiE9PWUubmFtZSlyZXR1cm4hMH1jb25zdCByPWUuZ2V0KCJYT2JqZWN0Iik7aWYociBpbnN0YW5jZW9mIERpY3QpZm9yKGxldCBlIG9mIHIuZ2V0UmF3VmFsdWVzKCkpe2lmKGUgaW5zdGFuY2VvZiBSZWYpe2lmKGkuaGFzKGUpKWNvbnRpbnVlO3RyeXtlPXMuZmV0Y2goZSl9Y2F0Y2godCl7aS5wdXQoZSk7aW5mbyhgaGFzQmxlbmRNb2RlcyAtIGlnbm9yaW5nIFhPYmplY3Q6ICIke3R9Ii5gKTtjb250aW51ZX19aWYoIShlIGluc3RhbmNlb2YgQmFzZVN0cmVhbSkpY29udGludWU7ZS5kaWN0Lm9iaklkJiZpLnB1dChlLmRpY3Qub2JqSWQpO2NvbnN0IHQ9ZS5kaWN0LmdldCgiUmVzb3VyY2VzIik7aWYodCBpbnN0YW5jZW9mIERpY3QmJighdC5vYmpJZHx8IWkuaGFzKHQub2JqSWQpKSl7YS5wdXNoKHQpO3Qub2JqSWQmJmkucHV0KHQub2JqSWQpfX19Zm9yKGNvbnN0IGUgb2YgaSl0LnB1dChlKTtyZXR1cm4hMX1hc3luYyBmZXRjaEJ1aWx0SW5DTWFwKGUpe2NvbnN0IHQ9dGhpcy5idWlsdEluQ01hcENhY2hlLmdldChlKTtpZih0KXJldHVybiB0O2xldCBpO2lmKG51bGwhPT10aGlzLm9wdGlvbnMuY01hcFVybCl7Y29uc3QgdD1gJHt0aGlzLm9wdGlvbnMuY01hcFVybH0ke2V9LmJjbWFwYCxhPWF3YWl0IGZldGNoKHQpO2lmKCFhLm9rKXRocm93IG5ldyBFcnJvcihgZmV0Y2hCdWlsdEluQ01hcDogZmFpbGVkIHRvIGZldGNoIGZpbGUgIiR7dH0iIHdpdGggIiR7YS5zdGF0dXNUZXh0fSIuYCk7aT17Y01hcERhdGE6bmV3IFVpbnQ4QXJyYXkoYXdhaXQgYS5hcnJheUJ1ZmZlcigpKSxjb21wcmVzc2lvblR5cGU6bUEuQklOQVJZfX1lbHNlIGk9YXdhaXQgdGhpcy5oYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiRmV0Y2hCdWlsdEluQ01hcCIse25hbWU6ZX0pO2kuY29tcHJlc3Npb25UeXBlIT09bUEuTk9ORSYmdGhpcy5idWlsdEluQ01hcENhY2hlLnNldChlLGkpO3JldHVybiBpfWFzeW5jIGZldGNoU3RhbmRhcmRGb250RGF0YShlKXtjb25zdCB0PXRoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlLmdldChlKTtpZih0KXJldHVybiBuZXcgU3RyZWFtKHQpO2lmKHRoaXMub3B0aW9ucy51c2VTeXN0ZW1Gb250cyYmIlN5bWJvbCIhPT1lJiYiWmFwZkRpbmdiYXRzIiE9PWUpcmV0dXJuIG51bGw7Y29uc3QgaT1XaSgpW2VdO2xldCBhO2lmKG51bGwhPT10aGlzLm9wdGlvbnMuc3RhbmRhcmRGb250RGF0YVVybCl7Y29uc3QgZT1gJHt0aGlzLm9wdGlvbnMuc3RhbmRhcmRGb250RGF0YVVybH0ke2l9YCx0PWF3YWl0IGZldGNoKGUpO3Qub2s/YT1uZXcgVWludDhBcnJheShhd2FpdCB0LmFycmF5QnVmZmVyKCkpOndhcm4oYGZldGNoU3RhbmRhcmRGb250RGF0YTogZmFpbGVkIHRvIGZldGNoIGZpbGUgIiR7ZX0iIHdpdGggIiR7dC5zdGF0dXNUZXh0fSIuYCl9ZWxzZSB0cnl7YT1hd2FpdCB0aGlzLmhhbmRsZXIuc2VuZFdpdGhQcm9taXNlKCJGZXRjaFN0YW5kYXJkRm9udERhdGEiLHtmaWxlbmFtZTppfSl9Y2F0Y2goZSl7d2FybihgZmV0Y2hTdGFuZGFyZEZvbnREYXRhOiBmYWlsZWQgdG8gZmV0Y2ggZmlsZSAiJHtpfSIgd2l0aCAiJHtlfSIuYCl9aWYoIWEpcmV0dXJuIG51bGw7dGhpcy5zdGFuZGFyZEZvbnREYXRhQ2FjaGUuc2V0KGUsYSk7cmV0dXJuIG5ldyBTdHJlYW0oYSl9YXN5bmMgYnVpbGRGb3JtWE9iamVjdChlLHQsaSxhLHMscixuKXtjb25zdCBvPXQuZGljdCxnPW8uZ2V0QXJyYXkoIk1hdHJpeCIpO2xldCBjLEMsaD1vLmdldEFycmF5KCJCQm94Iik7aD1BcnJheS5pc0FycmF5KGgpJiY0PT09aC5sZW5ndGg/VXRpbC5ub3JtYWxpemVSZWN0KGgpOm51bGw7by5oYXMoIk9DIikmJihjPWF3YWl0IHRoaXMucGFyc2VNYXJrZWRDb250ZW50UHJvcHMoby5nZXQoIk9DIiksZSkpO3ZvaWQgMCE9PWMmJmEuYWRkT3AoSmUsWyJPQyIsY10pO2NvbnN0IGw9by5nZXQoIkdyb3VwIik7aWYobCl7Qz17bWF0cml4OmcsYmJveDpoLHNtYXNrOmksaXNvbGF0ZWQ6ITEsa25vY2tvdXQ6ITF9O2xldCB0PW51bGw7aWYoaXNOYW1lKGwuZ2V0KCJTIiksIlRyYW5zcGFyZW5jeSIpKXtDLmlzb2xhdGVkPWwuZ2V0KCJJIil8fCExO0Mua25vY2tvdXQ9bC5nZXQoIksiKXx8ITE7aWYobC5oYXMoIkNTIikpe2NvbnN0IGk9bC5nZXRSYXcoIkNTIiksYT1Db2xvclNwYWNlLmdldENhY2hlZChpLHRoaXMueHJlZixuKTt0PWF8fGF3YWl0IHRoaXMucGFyc2VDb2xvclNwYWNlKHtjczppLHJlc291cmNlczplLGxvY2FsQ29sb3JTcGFjZUNhY2hlOm59KX19aWYoaT8uYmFja2Ryb3Ape3R8fD1Db2xvclNwYWNlLnNpbmdsZXRvbnMucmdiO2kuYmFja2Ryb3A9dC5nZXRSZ2IoaS5iYWNrZHJvcCwwKX1hLmFkZE9wKE9lLFtDXSl9Y29uc3QgUT1sP1tnLG51bGxdOltnLGhdO2EuYWRkT3AoVGUsUSk7YXdhaXQgdGhpcy5nZXRPcGVyYXRvckxpc3Qoe3N0cmVhbTp0LHRhc2s6cyxyZXNvdXJjZXM6by5nZXQoIlJlc291cmNlcyIpfHxlLG9wZXJhdG9yTGlzdDphLGluaXRpYWxTdGF0ZTpyfSk7YS5hZGRPcChxZSxbXSk7bCYmYS5hZGRPcChQZSxbQ10pO3ZvaWQgMCE9PWMmJmEuYWRkT3AoWWUsW10pfV9zZW5kSW1nRGF0YShlLHQsaT0hMSl7Y29uc3QgYT10P1t0LmJpdG1hcHx8dC5kYXRhLmJ1ZmZlcl06bnVsbDtyZXR1cm4gdGhpcy5wYXJzaW5nVHlwZTNGb250fHxpP3RoaXMuaGFuZGxlci5zZW5kKCJjb21tb25vYmoiLFtlLCJJbWFnZSIsdF0sYSk6dGhpcy5oYW5kbGVyLnNlbmQoIm9iaiIsW2UsdGhpcy5wYWdlSW5kZXgsIkltYWdlIix0XSxhKX1hc3luYyBidWlsZFBhaW50SW1hZ2VYT2JqZWN0KHtyZXNvdXJjZXM6ZSxpbWFnZTp0LGlzSW5saW5lOmk9ITEsb3BlcmF0b3JMaXN0OmEsY2FjaGVLZXk6cyxsb2NhbEltYWdlQ2FjaGU6cixsb2NhbENvbG9yU3BhY2VDYWNoZTpufSl7Y29uc3Qgbz10LmRpY3QsZz1vLm9iaklkLGM9by5nZXQoIlciLCJXaWR0aCIpLEM9by5nZXQoIkgiLCJIZWlnaHQiKTtpZighY3x8Im51bWJlciIhPXR5cGVvZiBjfHwhQ3x8Im51bWJlciIhPXR5cGVvZiBDKXt3YXJuKCJJbWFnZSBkaW1lbnNpb25zIGFyZSBtaXNzaW5nLCBvciBub3QgbnVtYmVycy4iKTtyZXR1cm59Y29uc3QgaD10aGlzLm9wdGlvbnMubWF4SW1hZ2VTaXplO2lmKC0xIT09aCYmYypDPmgpe2NvbnN0IGU9IkltYWdlIGV4Y2VlZGVkIG1heGltdW0gYWxsb3dlZCBzaXplIGFuZCB3YXMgcmVtb3ZlZC4iO2lmKHRoaXMub3B0aW9ucy5pZ25vcmVFcnJvcnMpe3dhcm4oZSk7cmV0dXJufXRocm93IG5ldyBFcnJvcihlKX1sZXQgbDtvLmhhcygiT0MiKSYmKGw9YXdhaXQgdGhpcy5wYXJzZU1hcmtlZENvbnRlbnRQcm9wcyhvLmdldCgiT0MiKSxlKSk7bGV0IFEsRTtpZihvLmdldCgiSU0iLCJJbWFnZU1hc2siKXx8ITEpe2NvbnN0IGU9by5nZXQoIkkiLCJJbnRlcnBvbGF0ZSIpLGk9Yys3Pj4zLG49dC5nZXRCeXRlcyhpKkMpLGg9by5nZXRBcnJheSgiRCIsIkRlY29kZSIpO2lmKHRoaXMucGFyc2luZ1R5cGUzRm9udCl7UT1QREZJbWFnZS5jcmVhdGVSYXdNYXNrKHtpbWdBcnJheTpuLHdpZHRoOmMsaGVpZ2h0OkMsaW1hZ2VJc0Zyb21EZWNvZGVTdHJlYW06dCBpbnN0YW5jZW9mIERlY29kZVN0cmVhbSxpbnZlcnNlRGVjb2RlOmg/LlswXT4wLGludGVycG9sYXRlOmV9KTtRLmNhY2hlZD0hIXM7RT1bUV07YS5hZGRJbWFnZU9wcyhYZSxFLGwpO2lmKHMpe2NvbnN0IGU9e2ZuOlhlLGFyZ3M6RSxvcHRpb25hbENvbnRlbnQ6bH07ci5zZXQocyxnLGUpO2cmJnRoaXMuX3JlZ2lvbmFsSW1hZ2VDYWNoZS5zZXQobnVsbCxnLGUpfXJldHVybn1RPWF3YWl0IFBERkltYWdlLmNyZWF0ZU1hc2soe2ltZ0FycmF5Om4sd2lkdGg6YyxoZWlnaHQ6QyxpbWFnZUlzRnJvbURlY29kZVN0cmVhbTp0IGluc3RhbmNlb2YgRGVjb2RlU3RyZWFtLGludmVyc2VEZWNvZGU6aD8uWzBdPjAsaW50ZXJwb2xhdGU6ZSxpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZDp0aGlzLm9wdGlvbnMuaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWR9KTtpZihRLmlzU2luZ2xlT3BhcXVlUGl4ZWwpe2EuYWRkSW1hZ2VPcHMoZXQsW10sbCk7aWYocyl7Y29uc3QgZT17Zm46ZXQsYXJnczpbXSxvcHRpb25hbENvbnRlbnQ6bH07ci5zZXQocyxnLGUpO2cmJnRoaXMuX3JlZ2lvbmFsSW1hZ2VDYWNoZS5zZXQobnVsbCxnLGUpfXJldHVybn1jb25zdCB1PWBtYXNrXyR7dGhpcy5pZEZhY3RvcnkuY3JlYXRlT2JqSWQoKX1gO2EuYWRkRGVwZW5kZW5jeSh1KTtRLmRhdGFMZW49US5iaXRtYXA/US53aWR0aCpRLmhlaWdodCo0OlEuZGF0YS5sZW5ndGg7dGhpcy5fc2VuZEltZ0RhdGEodSxRKTtFPVt7ZGF0YTp1LHdpZHRoOlEud2lkdGgsaGVpZ2h0OlEuaGVpZ2h0LGludGVycG9sYXRlOlEuaW50ZXJwb2xhdGUsY291bnQ6MX1dO2EuYWRkSW1hZ2VPcHMoWGUsRSxsKTtpZihzKXtjb25zdCBlPXtmbjpYZSxhcmdzOkUsb3B0aW9uYWxDb250ZW50Omx9O3Iuc2V0KHMsZyxlKTtnJiZ0aGlzLl9yZWdpb25hbEltYWdlQ2FjaGUuc2V0KG51bGwsZyxlKX1yZXR1cm59aWYoaSYmYytDPDIwMCYmIW8uaGFzKCJTTWFzayIpJiYhby5oYXMoIk1hc2siKSl7dHJ5e2NvbnN0IHM9bmV3IFBERkltYWdlKHt4cmVmOnRoaXMueHJlZixyZXM6ZSxpbWFnZTp0LGlzSW5saW5lOmkscGRmRnVuY3Rpb25GYWN0b3J5OnRoaXMuX3BkZkZ1bmN0aW9uRmFjdG9yeSxsb2NhbENvbG9yU3BhY2VDYWNoZTpufSk7UT1hd2FpdCBzLmNyZWF0ZUltYWdlRGF0YSghMCwhMSk7YS5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZD10aGlzLm9wdGlvbnMuaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQ7YS5hZGRJbWFnZU9wcyh6ZSxbUV0sbCl9Y2F0Y2goZSl7Y29uc3QgdD1gVW5hYmxlIHRvIGRlY29kZSBpbmxpbmUgaW1hZ2U6ICIke2V9Ii5gO2lmKCF0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IG5ldyBFcnJvcih0KTt3YXJuKHQpfXJldHVybn1sZXQgdT1gaW1nXyR7dGhpcy5pZEZhY3RvcnkuY3JlYXRlT2JqSWQoKX1gLGQ9ITE7aWYodGhpcy5wYXJzaW5nVHlwZTNGb250KXU9YCR7dGhpcy5pZEZhY3RvcnkuZ2V0RG9jSWQoKX1fdHlwZTNfJHt1fWA7ZWxzZSBpZihzJiZnKXtkPXRoaXMuZ2xvYmFsSW1hZ2VDYWNoZS5zaG91bGRDYWNoZShnLHRoaXMucGFnZUluZGV4KTtpZihkKXthc3NlcnQoIWksIkNhbm5vdCBjYWNoZSBhbiBpbmxpbmUgaW1hZ2UgZ2xvYmFsbHkuIik7dT1gJHt0aGlzLmlkRmFjdG9yeS5nZXREb2NJZCgpfV8ke3V9YH19YS5hZGREZXBlbmRlbmN5KHUpO0U9W3UsYyxDXTthLmFkZEltYWdlT3BzKFZlLEUsbCk7aWYoZCYmKGMqQz4yNWU0fHxvLmhhcygiU01hc2siKXx8by5oYXMoIk1hc2siKSkpe2NvbnN0IGU9YXdhaXQgdGhpcy5oYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiY29tbW9ub2JqIixbdSwiQ29weUxvY2FsSW1hZ2UiLHtpbWFnZVJlZjpnfV0pO2lmKGUpe3RoaXMuZ2xvYmFsSW1hZ2VDYWNoZS5zZXREYXRhKGcse29iaklkOnUsZm46VmUsYXJnczpFLG9wdGlvbmFsQ29udGVudDpsLGJ5dGVTaXplOjB9KTt0aGlzLmdsb2JhbEltYWdlQ2FjaGUuYWRkQnl0ZVNpemUoZyxlKTtyZXR1cm59fVBERkltYWdlLmJ1aWxkSW1hZ2Uoe3hyZWY6dGhpcy54cmVmLHJlczplLGltYWdlOnQsaXNJbmxpbmU6aSxwZGZGdW5jdGlvbkZhY3Rvcnk6dGhpcy5fcGRmRnVuY3Rpb25GYWN0b3J5LGxvY2FsQ29sb3JTcGFjZUNhY2hlOm59KS50aGVuKChhc3luYyBlPT57UT1hd2FpdCBlLmNyZWF0ZUltYWdlRGF0YSghMSx0aGlzLm9wdGlvbnMuaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQpO1EuZGF0YUxlbj1RLmJpdG1hcD9RLndpZHRoKlEuaGVpZ2h0KjQ6US5kYXRhLmxlbmd0aDtRLnJlZj1nO2QmJnRoaXMuZ2xvYmFsSW1hZ2VDYWNoZS5hZGRCeXRlU2l6ZShnLFEuZGF0YUxlbik7cmV0dXJuIHRoaXMuX3NlbmRJbWdEYXRhKHUsUSxkKX0pKS5jYXRjaCgoZT0+e3dhcm4oYFVuYWJsZSB0byBkZWNvZGUgaW1hZ2UgIiR7dX0iOiAiJHtlfSIuYCk7cmV0dXJuIHRoaXMuX3NlbmRJbWdEYXRhKHUsbnVsbCxkKX0pKTtpZihzKXtjb25zdCBlPXtmbjpWZSxhcmdzOkUsb3B0aW9uYWxDb250ZW50Omx9O3Iuc2V0KHMsZyxlKTtpZihnKXt0aGlzLl9yZWdpb25hbEltYWdlQ2FjaGUuc2V0KG51bGwsZyxlKTtkJiZ0aGlzLmdsb2JhbEltYWdlQ2FjaGUuc2V0RGF0YShnLHtvYmpJZDp1LGZuOlZlLGFyZ3M6RSxvcHRpb25hbENvbnRlbnQ6bCxieXRlU2l6ZTowfSl9fX1oYW5kbGVTTWFzayhlLHQsaSxhLHMscil7Y29uc3Qgbj1lLmdldCgiRyIpLG89e3N1YnR5cGU6ZS5nZXQoIlMiKS5uYW1lLGJhY2tkcm9wOmUuZ2V0KCJCQyIpfSxnPWUuZ2V0KCJUUiIpO2lmKGlzUERGRnVuY3Rpb24oZykpe2NvbnN0IGU9dGhpcy5fcGRmRnVuY3Rpb25GYWN0b3J5LmNyZWF0ZShnKSx0PW5ldyBVaW50OEFycmF5KDI1NiksaT1uZXcgRmxvYXQzMkFycmF5KDEpO2ZvcihsZXQgYT0wO2E8MjU2O2ErKyl7aVswXT1hLzI1NTtlKGksMCxpLDApO3RbYV09MjU1KmlbMF18MH1vLnRyYW5zZmVyTWFwPXR9cmV0dXJuIHRoaXMuYnVpbGRGb3JtWE9iamVjdCh0LG4sbyxpLGEscy5zdGF0ZS5jbG9uZSgpLHIpfWhhbmRsZVRyYW5zZmVyRnVuY3Rpb24oZSl7bGV0IHQ7aWYoQXJyYXkuaXNBcnJheShlKSl0PWU7ZWxzZXtpZighaXNQREZGdW5jdGlvbihlKSlyZXR1cm4gbnVsbDt0PVtlXX1jb25zdCBpPVtdO2xldCBhPTAscz0wO2Zvcihjb25zdCBlIG9mIHQpe2NvbnN0IHQ9dGhpcy54cmVmLmZldGNoSWZSZWYoZSk7YSsrO2lmKGlzTmFtZSh0LCJJZGVudGl0eSIpKXtpLnB1c2gobnVsbCk7Y29udGludWV9aWYoIWlzUERGRnVuY3Rpb24odCkpcmV0dXJuIG51bGw7Y29uc3Qgcj10aGlzLl9wZGZGdW5jdGlvbkZhY3RvcnkuY3JlYXRlKHQpLG49bmV3IFVpbnQ4QXJyYXkoMjU2KSxvPW5ldyBGbG9hdDMyQXJyYXkoMSk7Zm9yKGxldCBlPTA7ZTwyNTY7ZSsrKXtvWzBdPWUvMjU1O3IobywwLG8sMCk7bltlXT0yNTUqb1swXXwwfWkucHVzaChuKTtzKyt9cmV0dXJuIDEhPT1hJiY0IT09YXx8MD09PXM/bnVsbDppfWhhbmRsZVRpbGluZ1R5cGUoZSx0LGksYSxzLHIsbixvKXtjb25zdCBnPW5ldyBPcGVyYXRvckxpc3QsYz1EaWN0Lm1lcmdlKHt4cmVmOnRoaXMueHJlZixkaWN0QXJyYXk6W3MuZ2V0KCJSZXNvdXJjZXMiKSxpXX0pO3JldHVybiB0aGlzLmdldE9wZXJhdG9yTGlzdCh7c3RyZWFtOmEsdGFzazpuLHJlc291cmNlczpjLG9wZXJhdG9yTGlzdDpnfSkudGhlbigoZnVuY3Rpb24oKXtjb25zdCBpPWcuZ2V0SVIoKSxhPWdldFRpbGluZ1BhdHRlcm5JUihpLHMsdCk7ci5hZGREZXBlbmRlbmNpZXMoZy5kZXBlbmRlbmNpZXMpO3IuYWRkT3AoZSxhKTtzLm9iaklkJiZvLnNldChudWxsLHMub2JqSWQse29wZXJhdG9yTGlzdElSOmksZGljdDpzfSl9KSkuY2F0Y2goKGU9PntpZighKGUgaW5zdGFuY2VvZiBBYm9ydEV4Y2VwdGlvbikpe2lmKCF0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IGU7d2FybihgaGFuZGxlVGlsaW5nVHlwZSAtIGlnbm9yaW5nIHBhdHRlcm46ICIke2V9Ii5gKX19KSl9YXN5bmMgaGFuZGxlU2V0Rm9udChlLHQsaSxhLHMscixuPW51bGwsbz1udWxsKXtjb25zdCBnPXQ/LlswXWluc3RhbmNlb2YgTmFtZT90WzBdLm5hbWU6bnVsbDtsZXQgYz1hd2FpdCB0aGlzLmxvYWRGb250KGcsaSxlLG4sbyk7aWYoYy5mb250LmlzVHlwZTNGb250KXRyeXthd2FpdCBjLmxvYWRUeXBlM0RhdGEodGhpcyxlLHMpO2EuYWRkRGVwZW5kZW5jaWVzKGMudHlwZTNEZXBlbmRlbmNpZXMpfWNhdGNoKGUpe2M9bmV3IFRyYW5zbGF0ZWRGb250KHtsb2FkZWROYW1lOiJnX2ZvbnRfZXJyb3IiLGZvbnQ6bmV3IEVycm9yRm9udChgVHlwZTMgZm9udCBsb2FkIGVycm9yOiAke2V9YCksZGljdDpjLmZvbnQsZXZhbHVhdG9yT3B0aW9uczp0aGlzLm9wdGlvbnN9KX1yLmZvbnQ9Yy5mb250O2Muc2VuZCh0aGlzLmhhbmRsZXIpO3JldHVybiBjLmxvYWRlZE5hbWV9aGFuZGxlVGV4dChlLHQpe2NvbnN0IGk9dC5mb250LGE9aS5jaGFyc1RvR2x5cGhzKGUpO2lmKGkuZGF0YSl7KCEhKHQudGV4dFJlbmRlcmluZ01vZGUmdyl8fCJQYXR0ZXJuIj09PXQuZmlsbENvbG9yU3BhY2UubmFtZXx8aS5kaXNhYmxlRm9udEZhY2V8fHRoaXMub3B0aW9ucy5kaXNhYmxlRm9udEZhY2UpJiZQYXJ0aWFsRXZhbHVhdG9yLmJ1aWxkRm9udFBhdGhzKGksYSx0aGlzLmhhbmRsZXIsdGhpcy5vcHRpb25zKX1yZXR1cm4gYX1lbnN1cmVTdGF0ZUZvbnQoZSl7aWYoZS5mb250KXJldHVybjtjb25zdCB0PW5ldyBGb3JtYXRFcnJvcigiTWlzc2luZyBzZXRGb250IChUZikgb3BlcmF0b3IgYmVmb3JlIHRleHQgcmVuZGVyaW5nIG9wZXJhdG9yLiIpO2lmKCF0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IHQ7d2FybihgZW5zdXJlU3RhdGVGb250OiAiJHt0fSIuYCl9YXN5bmMgc2V0R1N0YXRlKHtyZXNvdXJjZXM6ZSxnU3RhdGU6dCxvcGVyYXRvckxpc3Q6aSxjYWNoZUtleTphLHRhc2s6cyxzdGF0ZU1hbmFnZXI6cixsb2NhbEdTdGF0ZUNhY2hlOm4sbG9jYWxDb2xvclNwYWNlQ2FjaGU6b30pe2NvbnN0IGc9dC5vYmpJZDtsZXQgYz0hMDtjb25zdCBDPVtdO2xldCBoPVByb21pc2UucmVzb2x2ZSgpO2Zvcihjb25zdCBhIG9mIHQuZ2V0S2V5cygpKXtjb25zdCBuPXQuZ2V0KGEpO3N3aXRjaChhKXtjYXNlIlR5cGUiOmJyZWFrO2Nhc2UiTFciOmNhc2UiTEMiOmNhc2UiTEoiOmNhc2UiTUwiOmNhc2UiRCI6Y2FzZSJSSSI6Y2FzZSJGTCI6Y2FzZSJDQSI6Y2FzZSJjYSI6Qy5wdXNoKFthLG5dKTticmVhaztjYXNlIkZvbnQiOmM9ITE7aD1oLnRoZW4oKCgpPT50aGlzLmhhbmRsZVNldEZvbnQoZSxudWxsLG5bMF0saSxzLHIuc3RhdGUpLnRoZW4oKGZ1bmN0aW9uKGUpe2kuYWRkRGVwZW5kZW5jeShlKTtDLnB1c2goW2EsW2UsblsxXV1dKX0pKSkpO2JyZWFrO2Nhc2UiQk0iOkMucHVzaChbYSxub3JtYWxpemVCbGVuZE1vZGUobildKTticmVhaztjYXNlIlNNYXNrIjppZihpc05hbWUobiwiTm9uZSIpKXtDLnB1c2goW2EsITFdKTticmVha31pZihuIGluc3RhbmNlb2YgRGljdCl7Yz0hMTtoPWgudGhlbigoKCk9PnRoaXMuaGFuZGxlU01hc2sobixlLGkscyxyLG8pKSk7Qy5wdXNoKFthLCEwXSl9ZWxzZSB3YXJuKCJVbnN1cHBvcnRlZCBTTWFzayB0eXBlIik7YnJlYWs7Y2FzZSJUUiI6Y29uc3QgdD10aGlzLmhhbmRsZVRyYW5zZmVyRnVuY3Rpb24obik7Qy5wdXNoKFthLHRdKTticmVhaztjYXNlIk9QIjpjYXNlIm9wIjpjYXNlIk9QTSI6Y2FzZSJCRyI6Y2FzZSJCRzIiOmNhc2UiVUNSIjpjYXNlIlVDUjIiOmNhc2UiVFIyIjpjYXNlIkhUIjpjYXNlIlNNIjpjYXNlIlNBIjpjYXNlIkFJUyI6Y2FzZSJUSyI6aW5mbygiZ3JhcGhpYyBzdGF0ZSBvcGVyYXRvciAiK2EpO2JyZWFrO2RlZmF1bHQ6aW5mbygiVW5rbm93biBncmFwaGljIHN0YXRlIG9wZXJhdG9yICIrYSl9fWF3YWl0IGg7Qy5sZW5ndGg+MCYmaS5hZGRPcChSQSxbQ10pO2MmJm4uc2V0KGEsZyxDKX1sb2FkRm9udChlLHQsaSxhPW51bGwscz1udWxsKXtjb25zdCBlcnJvckZvbnQ9YXN5bmMoKT0+bmV3IFRyYW5zbGF0ZWRGb250KHtsb2FkZWROYW1lOiJnX2ZvbnRfZXJyb3IiLGZvbnQ6bmV3IEVycm9yRm9udChgRm9udCAiJHtlfSIgaXMgbm90IGF2YWlsYWJsZS5gKSxkaWN0OnQsZXZhbHVhdG9yT3B0aW9uczp0aGlzLm9wdGlvbnN9KTtsZXQgcjtpZih0KXQgaW5zdGFuY2VvZiBSZWYmJihyPXQpO2Vsc2V7Y29uc3QgdD1pLmdldCgiRm9udCIpO3QmJihyPXQuZ2V0UmF3KGUpKX1pZihyKXtpZih0aGlzLnBhcnNpbmdUeXBlM0ZvbnQmJnRoaXMudHlwZTNGb250UmVmcy5oYXMocikpcmV0dXJuIGVycm9yRm9udCgpO2lmKHRoaXMuZm9udENhY2hlLmhhcyhyKSlyZXR1cm4gdGhpcy5mb250Q2FjaGUuZ2V0KHIpO3Q9dGhpcy54cmVmLmZldGNoSWZSZWYocil9aWYoISh0IGluc3RhbmNlb2YgRGljdCkpe2lmKCF0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzJiYhdGhpcy5wYXJzaW5nVHlwZTNGb250KXt3YXJuKGBGb250ICIke2V9IiBpcyBub3QgYXZhaWxhYmxlLmApO3JldHVybiBlcnJvckZvbnQoKX13YXJuKGBGb250ICIke2V9IiBpcyBub3QgYXZhaWxhYmxlIC0tIGF0dGVtcHRpbmcgdG8gZmFsbGJhY2sgdG8gYSBkZWZhdWx0IGZvbnQuYCk7dD1hfHxQYXJ0aWFsRXZhbHVhdG9yLmZhbGxiYWNrRm9udERpY3R9aWYodC5jYWNoZUtleSYmdGhpcy5mb250Q2FjaGUuaGFzKHQuY2FjaGVLZXkpKXJldHVybiB0aGlzLmZvbnRDYWNoZS5nZXQodC5jYWNoZUtleSk7Y29uc3R7cHJvbWlzZTpuLHJlc29sdmU6b309UHJvbWlzZS53aXRoUmVzb2x2ZXJzKCk7bGV0IGc7dHJ5e2c9dGhpcy5wcmVFdmFsdWF0ZUZvbnQodCk7Zy5jc3NGb250SW5mbz1zfWNhdGNoKGUpe3dhcm4oYGxvYWRGb250IC0gcHJlRXZhbHVhdGVGb250IGZhaWxlZDogIiR7ZX0iLmApO3JldHVybiBlcnJvckZvbnQoKX1jb25zdHtkZXNjcmlwdG9yOmMsaGFzaDpDfT1nLGg9ciBpbnN0YW5jZW9mIFJlZjtsZXQgbDtpZihDJiZjIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgZT1jLmZvbnRBbGlhc2VzfHw9T2JqZWN0LmNyZWF0ZShudWxsKTtpZihlW0NdKXtjb25zdCB0PWVbQ10uYWxpYXNSZWY7aWYoaCYmdCYmdGhpcy5mb250Q2FjaGUuaGFzKHQpKXt0aGlzLmZvbnRDYWNoZS5wdXRBbGlhcyhyLHQpO3JldHVybiB0aGlzLmZvbnRDYWNoZS5nZXQocil9fWVsc2UgZVtDXT17Zm9udElEOnRoaXMuaWRGYWN0b3J5LmNyZWF0ZUZvbnRJZCgpfTtoJiYoZVtDXS5hbGlhc1JlZj1yKTtsPWVbQ10uZm9udElEfWVsc2UgbD10aGlzLmlkRmFjdG9yeS5jcmVhdGVGb250SWQoKTthc3NlcnQobD8uc3RhcnRzV2l0aCgiZiIpLCdUaGUgImZvbnRJRCIgbXVzdCBiZSAoY29ycmVjdGx5KSBkZWZpbmVkLicpO2lmKGgpdGhpcy5mb250Q2FjaGUucHV0KHIsbik7ZWxzZXt0LmNhY2hlS2V5PWBjYWNoZUtleV8ke2x9YDt0aGlzLmZvbnRDYWNoZS5wdXQodC5jYWNoZUtleSxuKX10LmxvYWRlZE5hbWU9YCR7dGhpcy5pZEZhY3RvcnkuZ2V0RG9jSWQoKX1fJHtsfWA7dGhpcy50cmFuc2xhdGVGb250KGcpLnRoZW4oKGU9PntvKG5ldyBUcmFuc2xhdGVkRm9udCh7bG9hZGVkTmFtZTp0LmxvYWRlZE5hbWUsZm9udDplLGRpY3Q6dCxldmFsdWF0b3JPcHRpb25zOnRoaXMub3B0aW9uc30pKX0pKS5jYXRjaCgoZT0+e3dhcm4oYGxvYWRGb250IC0gdHJhbnNsYXRlRm9udCBmYWlsZWQ6ICIke2V9Ii5gKTtvKG5ldyBUcmFuc2xhdGVkRm9udCh7bG9hZGVkTmFtZTp0LmxvYWRlZE5hbWUsZm9udDpuZXcgRXJyb3JGb250KGUgaW5zdGFuY2VvZiBFcnJvcj9lLm1lc3NhZ2U6ZSksZGljdDp0LGV2YWx1YXRvck9wdGlvbnM6dGhpcy5vcHRpb25zfSkpfSkpO3JldHVybiBufWJ1aWxkUGF0aChlLHQsaSxhPSExKXtjb25zdCBzPWUubGVuZ3RoLTE7aXx8KGk9W10pO2lmKHM8MHx8ZS5mbkFycmF5W3NdIT09dHQpe2lmKGEpe3dhcm4oYEVuY291bnRlcmVkIHBhdGggb3BlcmF0b3IgIiR7dH0iIGluc2lkZSBvZiBhIHRleHQgb2JqZWN0LmApO2UuYWRkT3AoR0EsbnVsbCl9bGV0IHM7c3dpdGNoKHQpe2Nhc2UgS0E6Y29uc3QgZT1pWzBdK2lbMl0sdD1pWzFdK2lbM107cz1bTWF0aC5taW4oaVswXSxlKSxNYXRoLm1pbihpWzFdLHQpLE1hdGgubWF4KGlbMF0sZSksTWF0aC5tYXgoaVsxXSx0KV07YnJlYWs7Y2FzZSBNQTpjYXNlIExBOnM9W2lbMF0saVsxXSxpWzBdLGlbMV1dO2JyZWFrO2RlZmF1bHQ6cz1bMS8wLDEvMCwtMS8wLC0xLzBdfWUuYWRkT3AodHQsW1t0XSxpLHNdKTthJiZlLmFkZE9wKHhBLG51bGwpfWVsc2V7Y29uc3QgYT1lLmFyZ3NBcnJheVtzXTthWzBdLnB1c2godCk7YVsxXS5wdXNoKC4uLmkpO2NvbnN0IHI9YVsyXTtzd2l0Y2godCl7Y2FzZSBLQTpjb25zdCBlPWlbMF0raVsyXSx0PWlbMV0raVszXTtyWzBdPU1hdGgubWluKHJbMF0saVswXSxlKTtyWzFdPU1hdGgubWluKHJbMV0saVsxXSx0KTtyWzJdPU1hdGgubWF4KHJbMl0saVswXSxlKTtyWzNdPU1hdGgubWF4KHJbM10saVsxXSx0KTticmVhaztjYXNlIE1BOmNhc2UgTEE6clswXT1NYXRoLm1pbihyWzBdLGlbMF0pO3JbMV09TWF0aC5taW4oclsxXSxpWzFdKTtyWzJdPU1hdGgubWF4KHJbMl0saVswXSk7clszXT1NYXRoLm1heChyWzNdLGlbMV0pfX19cGFyc2VDb2xvclNwYWNlKHtjczplLHJlc291cmNlczp0LGxvY2FsQ29sb3JTcGFjZUNhY2hlOml9KXtyZXR1cm4gQ29sb3JTcGFjZS5wYXJzZUFzeW5jKHtjczplLHhyZWY6dGhpcy54cmVmLHJlc291cmNlczp0LHBkZkZ1bmN0aW9uRmFjdG9yeTp0aGlzLl9wZGZGdW5jdGlvbkZhY3RvcnksbG9jYWxDb2xvclNwYWNlQ2FjaGU6aX0pLmNhdGNoKChlPT57aWYoZSBpbnN0YW5jZW9mIEFib3J0RXhjZXB0aW9uKXJldHVybiBudWxsO2lmKHRoaXMub3B0aW9ucy5pZ25vcmVFcnJvcnMpe3dhcm4oYHBhcnNlQ29sb3JTcGFjZSAtIGlnbm9yaW5nIENvbG9yU3BhY2U6ICIke2V9Ii5gKTtyZXR1cm4gbnVsbH10aHJvdyBlfSkpfXBhcnNlU2hhZGluZyh7c2hhZGluZzplLHJlc291cmNlczp0LGxvY2FsQ29sb3JTcGFjZUNhY2hlOmksbG9jYWxTaGFkaW5nUGF0dGVybkNhY2hlOmF9KXtsZXQgcyxyPWEuZ2V0KGUpO2lmKHIpcmV0dXJuIHI7dHJ5e3M9UGF0dGVybi5wYXJzZVNoYWRpbmcoZSx0aGlzLnhyZWYsdCx0aGlzLl9wZGZGdW5jdGlvbkZhY3RvcnksaSkuZ2V0SVIoKX1jYXRjaCh0KXtpZih0IGluc3RhbmNlb2YgQWJvcnRFeGNlcHRpb24pcmV0dXJuIG51bGw7aWYodGhpcy5vcHRpb25zLmlnbm9yZUVycm9ycyl7d2FybihgcGFyc2VTaGFkaW5nIC0gaWdub3Jpbmcgc2hhZGluZzogIiR7dH0iLmApO2Euc2V0KGUsbnVsbCk7cmV0dXJuIG51bGx9dGhyb3cgdH1yPWBwYXR0ZXJuXyR7dGhpcy5pZEZhY3RvcnkuY3JlYXRlT2JqSWQoKX1gO3RoaXMucGFyc2luZ1R5cGUzRm9udCYmKHI9YCR7dGhpcy5pZEZhY3RvcnkuZ2V0RG9jSWQoKX1fdHlwZTNfJHtyfWApO2Euc2V0KGUscik7dGhpcy5wYXJzaW5nVHlwZTNGb250P3RoaXMuaGFuZGxlci5zZW5kKCJjb21tb25vYmoiLFtyLCJQYXR0ZXJuIixzXSk6dGhpcy5oYW5kbGVyLnNlbmQoIm9iaiIsW3IsdGhpcy5wYWdlSW5kZXgsIlBhdHRlcm4iLHNdKTtyZXR1cm4gcn1oYW5kbGVDb2xvck4oZSx0LGksYSxzLHIsbixvLGcsYyl7Y29uc3QgQz1pLnBvcCgpO2lmKEMgaW5zdGFuY2VvZiBOYW1lKXtjb25zdCBoPXMuZ2V0UmF3KEMubmFtZSksbD1oIGluc3RhbmNlb2YgUmVmJiZnLmdldEJ5UmVmKGgpO2lmKGwpdHJ5e2NvbnN0IHM9YS5iYXNlP2EuYmFzZS5nZXRSZ2IoaSwwKTpudWxsLHI9Z2V0VGlsaW5nUGF0dGVybklSKGwub3BlcmF0b3JMaXN0SVIsbC5kaWN0LHMpO2UuYWRkT3AodCxyKTtyZXR1cm59Y2F0Y2h7fWNvbnN0IFE9dGhpcy54cmVmLmZldGNoSWZSZWYoaCk7aWYoUSl7Y29uc3Qgcz1RIGluc3RhbmNlb2YgQmFzZVN0cmVhbT9RLmRpY3Q6USxDPXMuZ2V0KCJQYXR0ZXJuVHlwZSIpO2lmKEM9PT1Gcyl7Y29uc3Qgbz1hLmJhc2U/YS5iYXNlLmdldFJnYihpLDApOm51bGw7cmV0dXJuIHRoaXMuaGFuZGxlVGlsaW5nVHlwZSh0LG8scixRLHMsZSxuLGcpfWlmKEM9PT1Tcyl7Y29uc3QgaT1zLmdldCgiU2hhZGluZyIpLGE9dGhpcy5wYXJzZVNoYWRpbmcoe3NoYWRpbmc6aSxyZXNvdXJjZXM6cixsb2NhbENvbG9yU3BhY2VDYWNoZTpvLGxvY2FsU2hhZGluZ1BhdHRlcm5DYWNoZTpjfSk7aWYoYSl7Y29uc3QgaT1zLmdldEFycmF5KCJNYXRyaXgiKTtlLmFkZE9wKHQsWyJTaGFkaW5nIixhLGldKX1yZXR1cm59dGhyb3cgbmV3IEZvcm1hdEVycm9yKGBVbmtub3duIFBhdHRlcm5UeXBlOiAke0N9YCl9fXRocm93IG5ldyBGb3JtYXRFcnJvcihgVW5rbm93biBQYXR0ZXJuTmFtZTogJHtDfWApfV9wYXJzZVZpc2liaWxpdHlFeHByZXNzaW9uKGUsdCxpKXtpZigrK3Q+MTApe3dhcm4oIlZpc2liaWxpdHkgZXhwcmVzc2lvbiBpcyB0b28gZGVlcGx5IG5lc3RlZCIpO3JldHVybn1jb25zdCBhPWUubGVuZ3RoLHM9dGhpcy54cmVmLmZldGNoSWZSZWYoZVswXSk7aWYoIShhPDIpJiZzIGluc3RhbmNlb2YgTmFtZSl7c3dpdGNoKHMubmFtZSl7Y2FzZSJBbmQiOmNhc2UiT3IiOmNhc2UiTm90IjppLnB1c2gocy5uYW1lKTticmVhaztkZWZhdWx0Ondhcm4oYEludmFsaWQgb3BlcmF0b3IgJHtzLm5hbWV9IGluIHZpc2liaWxpdHkgZXhwcmVzc2lvbmApO3JldHVybn1mb3IobGV0IHM9MTtzPGE7cysrKXtjb25zdCBhPWVbc10scj10aGlzLnhyZWYuZmV0Y2hJZlJlZihhKTtpZihBcnJheS5pc0FycmF5KHIpKXtjb25zdCBlPVtdO2kucHVzaChlKTt0aGlzLl9wYXJzZVZpc2liaWxpdHlFeHByZXNzaW9uKHIsdCxlKX1lbHNlIGEgaW5zdGFuY2VvZiBSZWYmJmkucHVzaChhLnRvU3RyaW5nKCkpfX1lbHNlIHdhcm4oIkludmFsaWQgdmlzaWJpbGl0eSBleHByZXNzaW9uIil9YXN5bmMgcGFyc2VNYXJrZWRDb250ZW50UHJvcHMoZSx0KXtsZXQgaTtpZihlIGluc3RhbmNlb2YgTmFtZSl7aT10LmdldCgiUHJvcGVydGllcyIpLmdldChlLm5hbWUpfWVsc2V7aWYoIShlIGluc3RhbmNlb2YgRGljdCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJPcHRpb25hbCBjb250ZW50IHByb3BlcnRpZXMgbWFsZm9ybWVkLiIpO2k9ZX1jb25zdCBhPWkuZ2V0KCJUeXBlIik/Lm5hbWU7aWYoIk9DRyI9PT1hKXJldHVybnt0eXBlOmEsaWQ6aS5vYmpJZH07aWYoIk9DTUQiPT09YSl7Y29uc3QgZT1pLmdldCgiVkUiKTtpZihBcnJheS5pc0FycmF5KGUpKXtjb25zdCB0PVtdO3RoaXMuX3BhcnNlVmlzaWJpbGl0eUV4cHJlc3Npb24oZSwwLHQpO2lmKHQubGVuZ3RoPjApcmV0dXJue3R5cGU6Ik9DTUQiLGV4cHJlc3Npb246dH19Y29uc3QgdD1pLmdldCgiT0NHcyIpO2lmKEFycmF5LmlzQXJyYXkodCl8fHQgaW5zdGFuY2VvZiBEaWN0KXtjb25zdCBlPVtdO2lmKEFycmF5LmlzQXJyYXkodCkpZm9yKGNvbnN0IGkgb2YgdCllLnB1c2goaS50b1N0cmluZygpKTtlbHNlIGUucHVzaCh0Lm9iaklkKTtyZXR1cm57dHlwZTphLGlkczplLHBvbGljeTppLmdldCgiUCIpaW5zdGFuY2VvZiBOYW1lP2kuZ2V0KCJQIikubmFtZTpudWxsLGV4cHJlc3Npb246bnVsbH19aWYodCBpbnN0YW5jZW9mIFJlZilyZXR1cm57dHlwZTphLGlkOnQudG9TdHJpbmcoKX19cmV0dXJuIG51bGx9Z2V0T3BlcmF0b3JMaXN0KHtzdHJlYW06ZSx0YXNrOnQscmVzb3VyY2VzOmksb3BlcmF0b3JMaXN0OmEsaW5pdGlhbFN0YXRlOnM9bnVsbCxmYWxsYmFja0ZvbnREaWN0OnI9bnVsbH0pe2l8fD1EaWN0LmVtcHR5O3N8fD1uZXcgRXZhbFN0YXRlO2lmKCFhKXRocm93IG5ldyBFcnJvcignZ2V0T3BlcmF0b3JMaXN0OiBtaXNzaW5nICJvcGVyYXRvckxpc3QiIHBhcmFtZXRlcicpO2NvbnN0IG49dGhpcyxvPXRoaXMueHJlZjtsZXQgZz0hMTtjb25zdCBjPW5ldyBMb2NhbEltYWdlQ2FjaGUsQz1uZXcgTG9jYWxDb2xvclNwYWNlQ2FjaGUsaD1uZXcgTG9jYWxHU3RhdGVDYWNoZSxsPW5ldyBMb2NhbFRpbGluZ1BhdHRlcm5DYWNoZSxRPW5ldyBNYXAsRT1pLmdldCgiWE9iamVjdCIpfHxEaWN0LmVtcHR5LHU9aS5nZXQoIlBhdHRlcm4iKXx8RGljdC5lbXB0eSxkPW5ldyBTdGF0ZU1hbmFnZXIocyksZj1uZXcgRXZhbHVhdG9yUHJlcHJvY2Vzc29yKGUsbyxkKSxwPW5ldyBUaW1lU2xvdE1hbmFnZXI7ZnVuY3Rpb24gY2xvc2VQZW5kaW5nUmVzdG9yZU9QUyhlKXtmb3IobGV0IGU9MCx0PWYuc2F2ZWRTdGF0ZXNEZXB0aDtlPHQ7ZSsrKWEuYWRkT3AoeEEsW10pfXJldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24gcHJvbWlzZUJvZHkoZSxzKXtjb25zdCBuZXh0PWZ1bmN0aW9uKHQpe1Byb21pc2UuYWxsKFt0LGEucmVhZHldKS50aGVuKChmdW5jdGlvbigpe3RyeXtwcm9taXNlQm9keShlLHMpfWNhdGNoKGUpe3MoZSl9fSkscyl9O3QuZW5zdXJlTm90VGVybWluYXRlZCgpO3AucmVzZXQoKTtjb25zdCBtPXt9O2xldCB5LHcsYixELEYsUztmb3IoOyEoeT1wLmNoZWNrKCkpOyl7bS5hcmdzPW51bGw7aWYoIWYucmVhZChtKSlicmVhaztsZXQgZT1tLmFyZ3Mscz1tLmZuO3N3aXRjaCgwfHMpe2Nhc2UgVWU6Uz1lWzBdaW5zdGFuY2VvZiBOYW1lO0Y9ZVswXS5uYW1lO2lmKFMpe2NvbnN0IHQ9Yy5nZXRCeU5hbWUoRik7aWYodCl7YS5hZGRJbWFnZU9wcyh0LmZuLHQuYXJncyx0Lm9wdGlvbmFsQ29udGVudCk7aW5jcmVtZW50Q2FjaGVkSW1hZ2VNYXNrQ291bnQodCk7ZT1udWxsO2NvbnRpbnVlfX1uZXh0KG5ldyBQcm9taXNlKChmdW5jdGlvbihlLHMpe2lmKCFTKXRocm93IG5ldyBGb3JtYXRFcnJvcigiWE9iamVjdCBtdXN0IGJlIHJlZmVycmVkIHRvIGJ5IG5hbWUuIik7bGV0IHI9RS5nZXRSYXcoRik7aWYociBpbnN0YW5jZW9mIFJlZil7Y29uc3QgdD1jLmdldEJ5UmVmKHIpfHxuLl9yZWdpb25hbEltYWdlQ2FjaGUuZ2V0QnlSZWYocik7aWYodCl7YS5hZGRJbWFnZU9wcyh0LmZuLHQuYXJncyx0Lm9wdGlvbmFsQ29udGVudCk7aW5jcmVtZW50Q2FjaGVkSW1hZ2VNYXNrQ291bnQodCk7ZSgpO3JldHVybn1jb25zdCBpPW4uZ2xvYmFsSW1hZ2VDYWNoZS5nZXREYXRhKHIsbi5wYWdlSW5kZXgpO2lmKGkpe2EuYWRkRGVwZW5kZW5jeShpLm9iaklkKTthLmFkZEltYWdlT3BzKGkuZm4saS5hcmdzLGkub3B0aW9uYWxDb250ZW50KTtlKCk7cmV0dXJufXI9by5mZXRjaChyKX1pZighKHIgaW5zdGFuY2VvZiBCYXNlU3RyZWFtKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlhPYmplY3Qgc2hvdWxkIGJlIGEgc3RyZWFtIik7Y29uc3QgZz1yLmRpY3QuZ2V0KCJTdWJ0eXBlIik7aWYoIShnIGluc3RhbmNlb2YgTmFtZSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJYT2JqZWN0IHNob3VsZCBoYXZlIGEgTmFtZSBzdWJ0eXBlIik7aWYoIkZvcm0iIT09Zy5uYW1lKWlmKCJJbWFnZSIhPT1nLm5hbWUpe2lmKCJQUyIhPT1nLm5hbWUpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBVbmhhbmRsZWQgWE9iamVjdCBzdWJ0eXBlICR7Zy5uYW1lfWApO2luZm8oIklnbm9yZWQgWE9iamVjdCBzdWJ0eXBlIFBTIik7ZSgpfWVsc2Ugbi5idWlsZFBhaW50SW1hZ2VYT2JqZWN0KHtyZXNvdXJjZXM6aSxpbWFnZTpyLG9wZXJhdG9yTGlzdDphLGNhY2hlS2V5OkYsbG9jYWxJbWFnZUNhY2hlOmMsbG9jYWxDb2xvclNwYWNlQ2FjaGU6Q30pLnRoZW4oZSxzKTtlbHNle2Quc2F2ZSgpO24uYnVpbGRGb3JtWE9iamVjdChpLHIsbnVsbCxhLHQsZC5zdGF0ZS5jbG9uZSgpLEMpLnRoZW4oKGZ1bmN0aW9uKCl7ZC5yZXN0b3JlKCk7ZSgpfSkscyl9fSkpLmNhdGNoKChmdW5jdGlvbihlKXtpZighKGUgaW5zdGFuY2VvZiBBYm9ydEV4Y2VwdGlvbikpe2lmKCFuLm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IGU7d2FybihgZ2V0T3BlcmF0b3JMaXN0IC0gaWdub3JpbmcgWE9iamVjdDogIiR7ZX0iLmApfX0pKSk7cmV0dXJuO2Nhc2Ugc2U6dmFyIGs9ZVsxXTtuZXh0KG4uaGFuZGxlU2V0Rm9udChpLGUsbnVsbCxhLHQsZC5zdGF0ZSxyKS50aGVuKChmdW5jdGlvbihlKXthLmFkZERlcGVuZGVuY3koZSk7YS5hZGRPcChzZSxbZSxrXSl9KSkpO3JldHVybjtjYXNlICRBOmc9ITA7YnJlYWs7Y2FzZSBBZTpnPSExO2JyZWFrO2Nhc2UgeGU6dmFyIE49ZVswXS5jYWNoZUtleTtpZihOKXtjb25zdCB0PWMuZ2V0QnlOYW1lKE4pO2lmKHQpe2EuYWRkSW1hZ2VPcHModC5mbix0LmFyZ3MsdC5vcHRpb25hbENvbnRlbnQpO2luY3JlbWVudENhY2hlZEltYWdlTWFza0NvdW50KHQpO2U9bnVsbDtjb250aW51ZX19bmV4dChuLmJ1aWxkUGFpbnRJbWFnZVhPYmplY3Qoe3Jlc291cmNlczppLGltYWdlOmVbMF0saXNJbmxpbmU6ITAsb3BlcmF0b3JMaXN0OmEsY2FjaGVLZXk6Tixsb2NhbEltYWdlQ2FjaGU6Yyxsb2NhbENvbG9yU3BhY2VDYWNoZTpDfSkpO3JldHVybjtjYXNlIENlOmlmKCFkLnN0YXRlLmZvbnQpe24uZW5zdXJlU3RhdGVGb250KGQuc3RhdGUpO2NvbnRpbnVlfWVbMF09bi5oYW5kbGVUZXh0KGVbMF0sZC5zdGF0ZSk7YnJlYWs7Y2FzZSBoZTppZighZC5zdGF0ZS5mb250KXtuLmVuc3VyZVN0YXRlRm9udChkLnN0YXRlKTtjb250aW51ZX12YXIgUj1bXSxHPWQuc3RhdGU7Zm9yKGNvbnN0IHQgb2YgZVswXSkic3RyaW5nIj09dHlwZW9mIHQ/Ui5wdXNoKC4uLm4uaGFuZGxlVGV4dCh0LEcpKToibnVtYmVyIj09dHlwZW9mIHQmJlIucHVzaCh0KTtlWzBdPVI7cz1DZTticmVhaztjYXNlIGxlOmlmKCFkLnN0YXRlLmZvbnQpe24uZW5zdXJlU3RhdGVGb250KGQuc3RhdGUpO2NvbnRpbnVlfWEuYWRkT3AoY2UpO2VbMF09bi5oYW5kbGVUZXh0KGVbMF0sZC5zdGF0ZSk7cz1DZTticmVhaztjYXNlIEJlOmlmKCFkLnN0YXRlLmZvbnQpe24uZW5zdXJlU3RhdGVGb250KGQuc3RhdGUpO2NvbnRpbnVlfWEuYWRkT3AoY2UpO2EuYWRkT3AodGUsW2Uuc2hpZnQoKV0pO2EuYWRkT3AoZWUsW2Uuc2hpZnQoKV0pO2VbMF09bi5oYW5kbGVUZXh0KGVbMF0sZC5zdGF0ZSk7cz1DZTticmVhaztjYXNlIHJlOmQuc3RhdGUudGV4dFJlbmRlcmluZ01vZGU9ZVswXTticmVhaztjYXNlIGRlOntjb25zdCB0PUNvbG9yU3BhY2UuZ2V0Q2FjaGVkKGVbMF0sbyxDKTtpZih0KXtkLnN0YXRlLmZpbGxDb2xvclNwYWNlPXQ7Y29udGludWV9bmV4dChuLnBhcnNlQ29sb3JTcGFjZSh7Y3M6ZVswXSxyZXNvdXJjZXM6aSxsb2NhbENvbG9yU3BhY2VDYWNoZTpDfSkudGhlbigoZnVuY3Rpb24oZSl7ZSYmKGQuc3RhdGUuZmlsbENvbG9yU3BhY2U9ZSl9KSkpO3JldHVybn1jYXNlIHVlOntjb25zdCB0PUNvbG9yU3BhY2UuZ2V0Q2FjaGVkKGVbMF0sbyxDKTtpZih0KXtkLnN0YXRlLnN0cm9rZUNvbG9yU3BhY2U9dDtjb250aW51ZX1uZXh0KG4ucGFyc2VDb2xvclNwYWNlKHtjczplWzBdLHJlc291cmNlczppLGxvY2FsQ29sb3JTcGFjZUNhY2hlOkN9KS50aGVuKChmdW5jdGlvbihlKXtlJiYoZC5zdGF0ZS5zdHJva2VDb2xvclNwYWNlPWUpfSkpKTtyZXR1cm59Y2FzZSBtZTpEPWQuc3RhdGUuZmlsbENvbG9yU3BhY2U7ZT1ELmdldFJnYihlLDApO3M9RmU7YnJlYWs7Y2FzZSBmZTpEPWQuc3RhdGUuc3Ryb2tlQ29sb3JTcGFjZTtlPUQuZ2V0UmdiKGUsMCk7cz1EZTticmVhaztjYXNlIGJlOmQuc3RhdGUuZmlsbENvbG9yU3BhY2U9Q29sb3JTcGFjZS5zaW5nbGV0b25zLmdyYXk7ZT1Db2xvclNwYWNlLnNpbmdsZXRvbnMuZ3JheS5nZXRSZ2IoZSwwKTtzPUZlO2JyZWFrO2Nhc2Ugd2U6ZC5zdGF0ZS5zdHJva2VDb2xvclNwYWNlPUNvbG9yU3BhY2Uuc2luZ2xldG9ucy5ncmF5O2U9Q29sb3JTcGFjZS5zaW5nbGV0b25zLmdyYXkuZ2V0UmdiKGUsMCk7cz1EZTticmVhaztjYXNlIGtlOmQuc3RhdGUuZmlsbENvbG9yU3BhY2U9Q29sb3JTcGFjZS5zaW5nbGV0b25zLmNteWs7ZT1Db2xvclNwYWNlLnNpbmdsZXRvbnMuY215ay5nZXRSZ2IoZSwwKTtzPUZlO2JyZWFrO2Nhc2UgU2U6ZC5zdGF0ZS5zdHJva2VDb2xvclNwYWNlPUNvbG9yU3BhY2Uuc2luZ2xldG9ucy5jbXlrO2U9Q29sb3JTcGFjZS5zaW5nbGV0b25zLmNteWsuZ2V0UmdiKGUsMCk7cz1EZTticmVhaztjYXNlIEZlOmQuc3RhdGUuZmlsbENvbG9yU3BhY2U9Q29sb3JTcGFjZS5zaW5nbGV0b25zLnJnYjtlPUNvbG9yU3BhY2Uuc2luZ2xldG9ucy5yZ2IuZ2V0UmdiKGUsMCk7YnJlYWs7Y2FzZSBEZTpkLnN0YXRlLnN0cm9rZUNvbG9yU3BhY2U9Q29sb3JTcGFjZS5zaW5nbGV0b25zLnJnYjtlPUNvbG9yU3BhY2Uuc2luZ2xldG9ucy5yZ2IuZ2V0UmdiKGUsMCk7YnJlYWs7Y2FzZSB5ZTpEPWQuc3RhdGUuZmlsbENvbG9yU3BhY2U7aWYoIlBhdHRlcm4iPT09RC5uYW1lKXtuZXh0KG4uaGFuZGxlQ29sb3JOKGEseWUsZSxELHUsaSx0LEMsbCxRKSk7cmV0dXJufWU9RC5nZXRSZ2IoZSwwKTtzPUZlO2JyZWFrO2Nhc2UgcGU6RD1kLnN0YXRlLnN0cm9rZUNvbG9yU3BhY2U7aWYoIlBhdHRlcm4iPT09RC5uYW1lKXtuZXh0KG4uaGFuZGxlQ29sb3JOKGEscGUsZSxELHUsaSx0LEMsbCxRKSk7cmV0dXJufWU9RC5nZXRSZ2IoZSwwKTtzPURlO2JyZWFrO2Nhc2UgTmU6dmFyIHg9aS5nZXQoIlNoYWRpbmciKTtpZigheCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIk5vIHNoYWRpbmcgcmVzb3VyY2UgZm91bmQiKTt2YXIgVT14LmdldChlWzBdLm5hbWUpO2lmKCFVKXRocm93IG5ldyBGb3JtYXRFcnJvcigiTm8gc2hhZGluZyBvYmplY3QgZm91bmQiKTtjb25zdCBmPW4ucGFyc2VTaGFkaW5nKHtzaGFkaW5nOlUscmVzb3VyY2VzOmksbG9jYWxDb2xvclNwYWNlQ2FjaGU6Qyxsb2NhbFNoYWRpbmdQYXR0ZXJuQ2FjaGU6UX0pO2lmKCFmKWNvbnRpbnVlO2U9W2ZdO3M9TmU7YnJlYWs7Y2FzZSBSQTpTPWVbMF1pbnN0YW5jZW9mIE5hbWU7Rj1lWzBdLm5hbWU7aWYoUyl7Y29uc3QgdD1oLmdldEJ5TmFtZShGKTtpZih0KXt0Lmxlbmd0aD4wJiZhLmFkZE9wKFJBLFt0XSk7ZT1udWxsO2NvbnRpbnVlfX1uZXh0KG5ldyBQcm9taXNlKChmdW5jdGlvbihlLHMpe2lmKCFTKXRocm93IG5ldyBGb3JtYXRFcnJvcigiR1N0YXRlIG11c3QgYmUgcmVmZXJyZWQgdG8gYnkgbmFtZS4iKTtjb25zdCByPWkuZ2V0KCJFeHRHU3RhdGUiKTtpZighKHIgaW5zdGFuY2VvZiBEaWN0KSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkV4dEdTdGF0ZSBzaG91bGQgYmUgYSBkaWN0aW9uYXJ5LiIpO2NvbnN0IG89ci5nZXQoRik7aWYoIShvIGluc3RhbmNlb2YgRGljdCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJHU3RhdGUgc2hvdWxkIGJlIGEgZGljdGlvbmFyeS4iKTtuLnNldEdTdGF0ZSh7cmVzb3VyY2VzOmksZ1N0YXRlOm8sb3BlcmF0b3JMaXN0OmEsY2FjaGVLZXk6Rix0YXNrOnQsc3RhdGVNYW5hZ2VyOmQsbG9jYWxHU3RhdGVDYWNoZTpoLGxvY2FsQ29sb3JTcGFjZUNhY2hlOkN9KS50aGVuKGUscyl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe2lmKCEoZSBpbnN0YW5jZW9mIEFib3J0RXhjZXB0aW9uKSl7aWYoIW4ub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgZTt3YXJuKGBnZXRPcGVyYXRvckxpc3QgLSBpZ25vcmluZyBFeHRHU3RhdGU6ICIke2V9Ii5gKX19KSkpO3JldHVybjtjYXNlIE1BOmNhc2UgTEE6Y2FzZSBIQTpjYXNlIEpBOmNhc2UgWUE6Y2FzZSB2QTpjYXNlIEtBOm4uYnVpbGRQYXRoKGEscyxlLGcpO2NvbnRpbnVlO2Nhc2UgTWU6Y2FzZSBMZTpjYXNlIHZlOmNhc2UgS2U6Y29udGludWU7Y2FzZSBKZTppZighKGVbMF1pbnN0YW5jZW9mIE5hbWUpKXt3YXJuKGBFeHBlY3RlZCBuYW1lIGZvciBiZWdpbk1hcmtlZENvbnRlbnRQcm9wcyBhcmcwPSR7ZVswXX1gKTthLmFkZE9wKEplLFsiT0MiLG51bGxdKTtjb250aW51ZX1pZigiT0MiPT09ZVswXS5uYW1lKXtuZXh0KG4ucGFyc2VNYXJrZWRDb250ZW50UHJvcHMoZVsxXSxpKS50aGVuKChlPT57YS5hZGRPcChKZSxbIk9DIixlXSl9KSkuY2F0Y2goKGU9PntpZighKGUgaW5zdGFuY2VvZiBBYm9ydEV4Y2VwdGlvbikpe2lmKCFuLm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IGU7d2FybihgZ2V0T3BlcmF0b3JMaXN0IC0gaWdub3JpbmcgYmVnaW5NYXJrZWRDb250ZW50UHJvcHM6ICIke2V9Ii5gKTthLmFkZE9wKEplLFsiT0MiLG51bGxdKX19KSkpO3JldHVybn1lPVtlWzBdLm5hbWUsZVsxXWluc3RhbmNlb2YgRGljdD9lWzFdLmdldCgiTUNJRCIpOm51bGxdO2JyZWFrO2RlZmF1bHQ6aWYobnVsbCE9PWUpe2Zvcih3PTAsYj1lLmxlbmd0aDt3PGImJiEoZVt3XWluc3RhbmNlb2YgRGljdCk7dysrKTtpZih3PGIpe3dhcm4oImdldE9wZXJhdG9yTGlzdCAtIGlnbm9yaW5nIG9wZXJhdG9yOiAiK3MpO2NvbnRpbnVlfX19YS5hZGRPcChzLGUpfWlmKHkpbmV4dChrcyk7ZWxzZXtjbG9zZVBlbmRpbmdSZXN0b3JlT1BTKCk7ZSgpfX0pKS5jYXRjaCgoZT0+e2lmKCEoZSBpbnN0YW5jZW9mIEFib3J0RXhjZXB0aW9uKSl7aWYoIXRoaXMub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgZTt3YXJuKGBnZXRPcGVyYXRvckxpc3QgLSBpZ25vcmluZyBlcnJvcnMgZHVyaW5nICIke3QubmFtZX0iIHRhc2s6ICIke2V9Ii5gKTtjbG9zZVBlbmRpbmdSZXN0b3JlT1BTKCl9fSkpfWdldFRleHRDb250ZW50KHtzdHJlYW06ZSx0YXNrOnQscmVzb3VyY2VzOnMsc3RhdGVNYW5hZ2VyOnI9bnVsbCxpbmNsdWRlTWFya2VkQ29udGVudDpuPSExLHNpbms6byxzZWVuU3R5bGVzOmc9bmV3IFNldCx2aWV3Qm94OmMsbWFya2VkQ29udGVudERhdGE6Qz1udWxsLGRpc2FibGVOb3JtYWxpemF0aW9uOmg9ITEsa2VlcFdoaXRlU3BhY2U6bD0hMX0pe3N8fD1EaWN0LmVtcHR5O3J8fD1uZXcgU3RhdGVNYW5hZ2VyKG5ldyBUZXh0U3RhdGUpO24mJihDfHw9e2xldmVsOjB9KTtjb25zdCBRPXtpdGVtczpbXSxzdHlsZXM6T2JqZWN0LmNyZWF0ZShudWxsKX0sRT17aW5pdGlhbGl6ZWQ6ITEsc3RyOltdLHRvdGFsV2lkdGg6MCx0b3RhbEhlaWdodDowLHdpZHRoOjAsaGVpZ2h0OjAsdmVydGljYWw6ITEscHJldlRyYW5zZm9ybTpudWxsLHRleHRBZHZhbmNlU2NhbGU6MCxzcGFjZUluRmxvd01pbjowLHNwYWNlSW5GbG93TWF4OjAsdHJhY2tpbmdTcGFjZU1pbjoxLzAsbmVnYXRpdmVTcGFjZU1heDotMS8wLG5vdEFTcGFjZTotMS8wLHRyYW5zZm9ybTpudWxsLGZvbnROYW1lOm51bGwsaGFzRU9MOiExfSx1PVsiICIsIiAiXTtsZXQgZD0wO2Z1bmN0aW9uIHNhdmVMYXN0Q2hhcihlKXtjb25zdCB0PShkKzEpJTIsaT0iICIhPT11W2RdJiYiICI9PT11W3RdO3VbZF09ZTtkPXQ7cmV0dXJuIWwmJml9ZnVuY3Rpb24gc2hvdWxkQWRkV2hpdGVwc2FjZSgpe3JldHVybiFsJiYiICIhPT11W2RdJiYiICI9PT11WyhkKzEpJTJdfWZ1bmN0aW9uIHJlc2V0TGFzdENoYXJzKCl7dVswXT11WzFdPSIgIjtkPTB9Y29uc3QgZj10aGlzLHA9dGhpcy54cmVmLG09W107bGV0IHk9bnVsbDtjb25zdCB3PW5ldyBMb2NhbEltYWdlQ2FjaGUsYj1uZXcgTG9jYWxHU3RhdGVDYWNoZSxEPW5ldyBFdmFsdWF0b3JQcmVwcm9jZXNzb3IoZSxwLHIpO2xldCBGO2Z1bmN0aW9uIHB1c2hXaGl0ZXNwYWNlKHt3aWR0aDplPTAsaGVpZ2h0OnQ9MCx0cmFuc2Zvcm06aT1FLnByZXZUcmFuc2Zvcm0sZm9udE5hbWU6YT1FLmZvbnROYW1lfSl7US5pdGVtcy5wdXNoKHtzdHI6IiAiLGRpcjoibHRyIix3aWR0aDplLGhlaWdodDp0LHRyYW5zZm9ybTppLGZvbnROYW1lOmEsaGFzRU9MOiExfSl9ZnVuY3Rpb24gZ2V0Q3VycmVudFRleHRUcmFuc2Zvcm0oKXtjb25zdCBlPUYuZm9udCx0PVtGLmZvbnRTaXplKkYudGV4dEhTY2FsZSwwLDAsRi5mb250U2l6ZSwwLEYudGV4dFJpc2VdO2lmKGUuaXNUeXBlM0ZvbnQmJihGLmZvbnRTaXplPD0xfHxlLmlzQ2hhckJCb3gpJiYhaXNBcnJheUVxdWFsKEYuZm9udE1hdHJpeCxhKSl7Y29uc3QgaT1lLmJib3hbM10tZS5iYm94WzFdO2k+MCYmKHRbM10qPWkqRi5mb250TWF0cml4WzNdKX1yZXR1cm4gVXRpbC50cmFuc2Zvcm0oRi5jdG0sVXRpbC50cmFuc2Zvcm0oRi50ZXh0TWF0cml4LHQpKX1mdW5jdGlvbiBlbnN1cmVUZXh0Q29udGVudEl0ZW0oKXtpZihFLmluaXRpYWxpemVkKXJldHVybiBFO2NvbnN0e2ZvbnQ6ZSxsb2FkZWROYW1lOnR9PUY7aWYoIWcuaGFzKHQpKXtnLmFkZCh0KTtRLnN0eWxlc1t0XT17Zm9udEZhbWlseTplLmZhbGxiYWNrTmFtZSxhc2NlbnQ6ZS5hc2NlbnQsZGVzY2VudDplLmRlc2NlbnQsdmVydGljYWw6ZS52ZXJ0aWNhbH07aWYoZi5vcHRpb25zLmZvbnRFeHRyYVByb3BlcnRpZXMmJmUuc3lzdGVtRm9udEluZm8pe2NvbnN0IGk9US5zdHlsZXNbdF07aS5mb250U3Vic3RpdHV0aW9uPWUuc3lzdGVtRm9udEluZm8uY3NzO2kuZm9udFN1YnN0aXR1dGlvbkxvYWRlZE5hbWU9ZS5zeXN0ZW1Gb250SW5mby5sb2FkZWROYW1lfX1FLmZvbnROYW1lPXQ7Y29uc3QgaT1FLnRyYW5zZm9ybT1nZXRDdXJyZW50VGV4dFRyYW5zZm9ybSgpO2lmKGUudmVydGljYWwpe0Uud2lkdGg9RS50b3RhbFdpZHRoPU1hdGguaHlwb3QoaVswXSxpWzFdKTtFLmhlaWdodD1FLnRvdGFsSGVpZ2h0PTA7RS52ZXJ0aWNhbD0hMH1lbHNle0Uud2lkdGg9RS50b3RhbFdpZHRoPTA7RS5oZWlnaHQ9RS50b3RhbEhlaWdodD1NYXRoLmh5cG90KGlbMl0saVszXSk7RS52ZXJ0aWNhbD0hMX1jb25zdCBhPU1hdGguaHlwb3QoRi50ZXh0TGluZU1hdHJpeFswXSxGLnRleHRMaW5lTWF0cml4WzFdKSxzPU1hdGguaHlwb3QoRi5jdG1bMF0sRi5jdG1bMV0pO0UudGV4dEFkdmFuY2VTY2FsZT1zKmE7Y29uc3R7Zm9udFNpemU6cn09RjtFLnRyYWNraW5nU3BhY2VNaW49LjEwMipyO0Uubm90QVNwYWNlPS4wMypyO0UubmVnYXRpdmVTcGFjZU1heD0tLjIqcjtFLnNwYWNlSW5GbG93TWluPS4xMDIqcjtFLnNwYWNlSW5GbG93TWF4PS42KnI7RS5oYXNFT0w9ITE7RS5pbml0aWFsaXplZD0hMDtyZXR1cm4gRX1mdW5jdGlvbiB1cGRhdGVBZHZhbmNlU2NhbGUoKXtpZighRS5pbml0aWFsaXplZClyZXR1cm47Y29uc3QgZT1NYXRoLmh5cG90KEYudGV4dExpbmVNYXRyaXhbMF0sRi50ZXh0TGluZU1hdHJpeFsxXSksdD1NYXRoLmh5cG90KEYuY3RtWzBdLEYuY3RtWzFdKSplO2lmKHQhPT1FLnRleHRBZHZhbmNlU2NhbGUpe2lmKEUudmVydGljYWwpe0UudG90YWxIZWlnaHQrPUUuaGVpZ2h0KkUudGV4dEFkdmFuY2VTY2FsZTtFLmhlaWdodD0wfWVsc2V7RS50b3RhbFdpZHRoKz1FLndpZHRoKkUudGV4dEFkdmFuY2VTY2FsZTtFLndpZHRoPTB9RS50ZXh0QWR2YW5jZVNjYWxlPXR9fWZ1bmN0aW9uIHJ1bkJpZGlUcmFuc2Zvcm0oZSl7bGV0IHQ9ZS5zdHIuam9pbigiIik7aHx8KHQ9ZnVuY3Rpb24gbm9ybWFsaXplVW5pY29kZShlKXtpZighZ3Qpe2d0PS8oW1x1MDBhMFx1MDBiNVx1MDM3ZVx1MGViM1x1MjAwMC1cdTIwMGFcdTIwMmZcdTIxMjZcdWZiMDAtXHVmYjA0XHVmYjA2XHVmYjIwLVx1ZmIzNlx1ZmIzOC1cdWZiM2NcdWZiM2VcdWZiNDAtXHVmYjQxXHVmYjQzLVx1ZmI0NFx1ZmI0Ni1cdWZiYTFcdWZiYTQtXHVmYmE5XHVmYmFlLVx1ZmJiMVx1ZmJkMy1cdWZiZGNcdWZiZGUtXHVmYmU3XHVmYmVhLVx1ZmJmOFx1ZmJmYy1cdWZiZmRcdWZjMDAtXHVmYzVkXHVmYzY0LVx1ZmNmMVx1ZmNmNS1cdWZkM2RcdWZkODhcdWZkZjRcdWZkZmEtXHVmZGZiXHVmZTcxXHVmZTc3XHVmZTc5XHVmZTdiXHVmZTdkXSspfChcdWZiMDUrKS9ndTtJdD1uZXcgTWFwKFtbIu+shSIsIsW/dCJdXSl9cmV0dXJuIGUucmVwbGFjZUFsbChndCwoKGUsdCxpKT0+dD90Lm5vcm1hbGl6ZSgiTkZLQyIpOkl0LmdldChpKSkpfSh0KSk7Y29uc3QgaT1iaWRpKHQsLTEsZS52ZXJ0aWNhbCk7cmV0dXJue3N0cjppLnN0cixkaXI6aS5kaXIsd2lkdGg6TWF0aC5hYnMoZS50b3RhbFdpZHRoKSxoZWlnaHQ6TWF0aC5hYnMoZS50b3RhbEhlaWdodCksdHJhbnNmb3JtOmUudHJhbnNmb3JtLGZvbnROYW1lOmUuZm9udE5hbWUsaGFzRU9MOmUuaGFzRU9MfX1hc3luYyBmdW5jdGlvbiBoYW5kbGVTZXRGb250KGUsaSl7Y29uc3Qgcj1hd2FpdCBmLmxvYWRGb250KGUsaSxzKTtpZihyLmZvbnQuaXNUeXBlM0ZvbnQpdHJ5e2F3YWl0IHIubG9hZFR5cGUzRGF0YShmLHMsdCl9Y2F0Y2h7fUYubG9hZGVkTmFtZT1yLmxvYWRlZE5hbWU7Ri5mb250PXIuZm9udDtGLmZvbnRNYXRyaXg9ci5mb250LmZvbnRNYXRyaXh8fGF9ZnVuY3Rpb24gYXBwbHlJbnZlcnNlUm90YXRpb24oZSx0LGkpe2NvbnN0IGE9TWF0aC5oeXBvdChpWzBdLGlbMV0pO3JldHVyblsoaVswXSplK2lbMV0qdCkvYSwoaVsyXSplK2lbM10qdCkvYV19ZnVuY3Rpb24gY29tcGFyZVdpdGhMYXN0UG9zaXRpb24oZSl7Y29uc3QgdD1nZXRDdXJyZW50VGV4dFRyYW5zZm9ybSgpO2xldCBpPXRbNF0sYT10WzVdO2lmKEYuZm9udD8udmVydGljYWwpe2lmKGk8Y1swXXx8aT5jWzJdfHxhK2U8Y1sxXXx8YT5jWzNdKXJldHVybiExfWVsc2UgaWYoaStlPGNbMF18fGk+Y1syXXx8YTxjWzFdfHxhPmNbM10pcmV0dXJuITE7aWYoIUYuZm9udHx8IUUucHJldlRyYW5zZm9ybSlyZXR1cm4hMDtsZXQgcz1FLnByZXZUcmFuc2Zvcm1bNF0scj1FLnByZXZUcmFuc2Zvcm1bNV07aWYocz09PWkmJnI9PT1hKXJldHVybiEwO2xldCBuPS0xO3RbMF0mJjA9PT10WzFdJiYwPT09dFsyXT9uPXRbMF0+MD8wOjE4MDp0WzFdJiYwPT09dFswXSYmMD09PXRbM10mJihuPXRbMV0+MD85MDoyNzApO3N3aXRjaChuKXtjYXNlIDA6YnJlYWs7Y2FzZSA5MDpbaSxhXT1bYSxpXTtbcyxyXT1bcixzXTticmVhaztjYXNlIDE4MDpbaSxhLHMscl09Wy1pLC1hLC1zLC1yXTticmVhaztjYXNlIDI3MDpbaSxhXT1bLWEsLWldO1tzLHJdPVstciwtc107YnJlYWs7ZGVmYXVsdDpbaSxhXT1hcHBseUludmVyc2VSb3RhdGlvbihpLGEsdCk7W3Mscl09YXBwbHlJbnZlcnNlUm90YXRpb24ocyxyLEUucHJldlRyYW5zZm9ybSl9aWYoRi5mb250LnZlcnRpY2FsKXtjb25zdCBlPShyLWEpL0UudGV4dEFkdmFuY2VTY2FsZSx0PWktcyxuPU1hdGguc2lnbihFLmhlaWdodCk7aWYoZTxuKkUubmVnYXRpdmVTcGFjZU1heCl7aWYoTWF0aC5hYnModCk+LjUqRS53aWR0aCl7YXBwZW5kRU9MKCk7cmV0dXJuITB9cmVzZXRMYXN0Q2hhcnMoKTtmbHVzaFRleHRDb250ZW50SXRlbSgpO3JldHVybiEwfWlmKE1hdGguYWJzKHQpPkUud2lkdGgpe2FwcGVuZEVPTCgpO3JldHVybiEwfWU8PW4qRS5ub3RBU3BhY2UmJnJlc2V0TGFzdENoYXJzKCk7aWYoZTw9bipFLnRyYWNraW5nU3BhY2VNaW4paWYoc2hvdWxkQWRkV2hpdGVwc2FjZSgpKXtyZXNldExhc3RDaGFycygpO2ZsdXNoVGV4dENvbnRlbnRJdGVtKCk7cHVzaFdoaXRlc3BhY2Uoe2hlaWdodDpNYXRoLmFicyhlKX0pfWVsc2UgRS5oZWlnaHQrPWU7ZWxzZSBpZighYWRkRmFrZVNwYWNlcyhlLEUucHJldlRyYW5zZm9ybSxuKSlpZigwPT09RS5zdHIubGVuZ3RoKXtyZXNldExhc3RDaGFycygpO3B1c2hXaGl0ZXNwYWNlKHtoZWlnaHQ6TWF0aC5hYnMoZSl9KX1lbHNlIEUuaGVpZ2h0Kz1lO01hdGguYWJzKHQpPi4yNSpFLndpZHRoJiZmbHVzaFRleHRDb250ZW50SXRlbSgpO3JldHVybiEwfWNvbnN0IG89KGktcykvRS50ZXh0QWR2YW5jZVNjYWxlLGc9YS1yLEM9TWF0aC5zaWduKEUud2lkdGgpO2lmKG88QypFLm5lZ2F0aXZlU3BhY2VNYXgpe2lmKE1hdGguYWJzKGcpPi41KkUuaGVpZ2h0KXthcHBlbmRFT0woKTtyZXR1cm4hMH1yZXNldExhc3RDaGFycygpO2ZsdXNoVGV4dENvbnRlbnRJdGVtKCk7cmV0dXJuITB9aWYoTWF0aC5hYnMoZyk+RS5oZWlnaHQpe2FwcGVuZEVPTCgpO3JldHVybiEwfW88PUMqRS5ub3RBU3BhY2UmJnJlc2V0TGFzdENoYXJzKCk7aWYobzw9QypFLnRyYWNraW5nU3BhY2VNaW4paWYoc2hvdWxkQWRkV2hpdGVwc2FjZSgpKXtyZXNldExhc3RDaGFycygpO2ZsdXNoVGV4dENvbnRlbnRJdGVtKCk7cHVzaFdoaXRlc3BhY2Uoe3dpZHRoOk1hdGguYWJzKG8pfSl9ZWxzZSBFLndpZHRoKz1vO2Vsc2UgaWYoIWFkZEZha2VTcGFjZXMobyxFLnByZXZUcmFuc2Zvcm0sQykpaWYoMD09PUUuc3RyLmxlbmd0aCl7cmVzZXRMYXN0Q2hhcnMoKTtwdXNoV2hpdGVzcGFjZSh7d2lkdGg6TWF0aC5hYnMobyl9KX1lbHNlIEUud2lkdGgrPW87TWF0aC5hYnMoZyk+LjI1KkUuaGVpZ2h0JiZmbHVzaFRleHRDb250ZW50SXRlbSgpO3JldHVybiEwfWZ1bmN0aW9uIGJ1aWxkVGV4dENvbnRlbnRJdGVtKHtjaGFyczplLGV4dHJhU3BhY2luZzp0fSl7Y29uc3QgaT1GLmZvbnQ7aWYoIWUpe2NvbnN0IGU9Ri5jaGFyU3BhY2luZyt0O2UmJihpLnZlcnRpY2FsP0YudHJhbnNsYXRlVGV4dE1hdHJpeCgwLC1lKTpGLnRyYW5zbGF0ZVRleHRNYXRyaXgoZSpGLnRleHRIU2NhbGUsMCkpO2wmJmNvbXBhcmVXaXRoTGFzdFBvc2l0aW9uKDApO3JldHVybn1jb25zdCBhPWkuY2hhcnNUb0dseXBocyhlKSxzPUYuZm9udE1hdHJpeFswXSpGLmZvbnRTaXplO2ZvcihsZXQgZT0wLHI9YS5sZW5ndGg7ZTxyO2UrKyl7Y29uc3Qgbj1hW2VdLHtjYXRlZ29yeTpvfT1uO2lmKG8uaXNJbnZpc2libGVGb3JtYXRNYXJrKWNvbnRpbnVlO2xldCBnPUYuY2hhclNwYWNpbmcrKGUrMT09PXI/dDowKSxjPW4ud2lkdGg7aS52ZXJ0aWNhbCYmKGM9bi52bWV0cmljP24udm1ldHJpY1swXTotYyk7bGV0IEM9YypzO2lmKCFsJiZvLmlzV2hpdGVzcGFjZSl7aWYoaS52ZXJ0aWNhbCl7Zys9LUMrRi53b3JkU3BhY2luZztGLnRyYW5zbGF0ZVRleHRNYXRyaXgoMCwtZyl9ZWxzZXtnKz1DK0Yud29yZFNwYWNpbmc7Ri50cmFuc2xhdGVUZXh0TWF0cml4KGcqRi50ZXh0SFNjYWxlLDApfXNhdmVMYXN0Q2hhcigiICIpO2NvbnRpbnVlfWlmKCFvLmlzWmVyb1dpZHRoRGlhY3JpdGljJiYhY29tcGFyZVdpdGhMYXN0UG9zaXRpb24oQykpe2kudmVydGljYWw/Ri50cmFuc2xhdGVUZXh0TWF0cml4KDAsQyk6Ri50cmFuc2xhdGVUZXh0TWF0cml4KEMqRi50ZXh0SFNjYWxlLDApO2NvbnRpbnVlfWNvbnN0IGg9ZW5zdXJlVGV4dENvbnRlbnRJdGVtKCk7by5pc1plcm9XaWR0aERpYWNyaXRpYyYmKEM9MCk7aWYoaS52ZXJ0aWNhbCl7Ri50cmFuc2xhdGVUZXh0TWF0cml4KDAsQyk7Qz1NYXRoLmFicyhDKTtoLmhlaWdodCs9Q31lbHNle0MqPUYudGV4dEhTY2FsZTtGLnRyYW5zbGF0ZVRleHRNYXRyaXgoQywwKTtoLndpZHRoKz1DfUMmJihoLnByZXZUcmFuc2Zvcm09Z2V0Q3VycmVudFRleHRUcmFuc2Zvcm0oKSk7Y29uc3QgUT1uLnVuaWNvZGU7c2F2ZUxhc3RDaGFyKFEpJiZoLnN0ci5wdXNoKCIgIik7aC5zdHIucHVzaChRKTtnJiYoaS52ZXJ0aWNhbD9GLnRyYW5zbGF0ZVRleHRNYXRyaXgoMCwtZyk6Ri50cmFuc2xhdGVUZXh0TWF0cml4KGcqRi50ZXh0SFNjYWxlLDApKX19ZnVuY3Rpb24gYXBwZW5kRU9MKCl7cmVzZXRMYXN0Q2hhcnMoKTtpZihFLmluaXRpYWxpemVkKXtFLmhhc0VPTD0hMDtmbHVzaFRleHRDb250ZW50SXRlbSgpfWVsc2UgUS5pdGVtcy5wdXNoKHtzdHI6IiIsZGlyOiJsdHIiLHdpZHRoOjAsaGVpZ2h0OjAsdHJhbnNmb3JtOmdldEN1cnJlbnRUZXh0VHJhbnNmb3JtKCksZm9udE5hbWU6Ri5sb2FkZWROYW1lLGhhc0VPTDohMH0pfWZ1bmN0aW9uIGFkZEZha2VTcGFjZXMoZSx0LGkpe2lmKGkqRS5zcGFjZUluRmxvd01pbjw9ZSYmZTw9aSpFLnNwYWNlSW5GbG93TWF4KXtpZihFLmluaXRpYWxpemVkKXtyZXNldExhc3RDaGFycygpO0Uuc3RyLnB1c2goIiAiKX1yZXR1cm4hMX1jb25zdCBhPUUuZm9udE5hbWU7bGV0IHM9MDtpZihFLnZlcnRpY2FsKXtzPWU7ZT0wfWZsdXNoVGV4dENvbnRlbnRJdGVtKCk7cmVzZXRMYXN0Q2hhcnMoKTtwdXNoV2hpdGVzcGFjZSh7d2lkdGg6TWF0aC5hYnMoZSksaGVpZ2h0Ok1hdGguYWJzKHMpLHRyYW5zZm9ybTp0fHxnZXRDdXJyZW50VGV4dFRyYW5zZm9ybSgpLGZvbnROYW1lOmF9KTtyZXR1cm4hMH1mdW5jdGlvbiBmbHVzaFRleHRDb250ZW50SXRlbSgpe2lmKEUuaW5pdGlhbGl6ZWQmJkUuc3RyKXtFLnZlcnRpY2FsP0UudG90YWxIZWlnaHQrPUUuaGVpZ2h0KkUudGV4dEFkdmFuY2VTY2FsZTpFLnRvdGFsV2lkdGgrPUUud2lkdGgqRS50ZXh0QWR2YW5jZVNjYWxlO1EuaXRlbXMucHVzaChydW5CaWRpVHJhbnNmb3JtKEUpKTtFLmluaXRpYWxpemVkPSExO0Uuc3RyLmxlbmd0aD0wfX1mdW5jdGlvbiBlbnF1ZXVlQ2h1bmsoZT0hMSl7Y29uc3QgdD1RLml0ZW1zLmxlbmd0aDtpZigwIT09dCYmIShlJiZ0PDEwKSl7by5lbnF1ZXVlKFEsdCk7US5pdGVtcz1bXTtRLnN0eWxlcz1PYmplY3QuY3JlYXRlKG51bGwpfX1jb25zdCBTPW5ldyBUaW1lU2xvdE1hbmFnZXI7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbiBwcm9taXNlQm9keShlLGEpe2NvbnN0IG5leHQ9ZnVuY3Rpb24odCl7ZW5xdWV1ZUNodW5rKCEwKTtQcm9taXNlLmFsbChbdCxvLnJlYWR5XSkudGhlbigoZnVuY3Rpb24oKXt0cnl7cHJvbWlzZUJvZHkoZSxhKX1jYXRjaChlKXthKGUpfX0pLGEpfTt0LmVuc3VyZU5vdFRlcm1pbmF0ZWQoKTtTLnJlc2V0KCk7Y29uc3QgRT17fTtsZXQgdSxkPVtdO2Zvcig7ISh1PVMuY2hlY2soKSk7KXtkLmxlbmd0aD0wO0UuYXJncz1kO2lmKCFELnJlYWQoRSkpYnJlYWs7Y29uc3QgZT1GO0Y9ci5zdGF0ZTtjb25zdCBhPUUuZm47ZD1FLmFyZ3M7c3dpdGNoKDB8YSl7Y2FzZSBzZTp2YXIgaz1kWzBdLm5hbWUsTj1kWzFdO2lmKEYuZm9udCYmaz09PUYuZm9udE5hbWUmJk49PT1GLmZvbnRTaXplKWJyZWFrO2ZsdXNoVGV4dENvbnRlbnRJdGVtKCk7Ri5mb250TmFtZT1rO0YuZm9udFNpemU9TjtuZXh0KGhhbmRsZVNldEZvbnQoayxudWxsKSk7cmV0dXJuO2Nhc2UgbmU6Ri50ZXh0UmlzZT1kWzBdO2JyZWFrO2Nhc2UgaWU6Ri50ZXh0SFNjYWxlPWRbMF0vMTAwO2JyZWFrO2Nhc2UgYWU6Ri5sZWFkaW5nPWRbMF07YnJlYWs7Y2FzZSBvZTpGLnRyYW5zbGF0ZVRleHRMaW5lTWF0cml4KGRbMF0sZFsxXSk7Ri50ZXh0TWF0cml4PUYudGV4dExpbmVNYXRyaXguc2xpY2UoKTticmVhaztjYXNlIGdlOkYubGVhZGluZz0tZFsxXTtGLnRyYW5zbGF0ZVRleHRMaW5lTWF0cml4KGRbMF0sZFsxXSk7Ri50ZXh0TWF0cml4PUYudGV4dExpbmVNYXRyaXguc2xpY2UoKTticmVhaztjYXNlIGNlOkYuY2FycmlhZ2VSZXR1cm4oKTticmVhaztjYXNlIEllOkYuc2V0VGV4dE1hdHJpeChkWzBdLGRbMV0sZFsyXSxkWzNdLGRbNF0sZFs1XSk7Ri5zZXRUZXh0TGluZU1hdHJpeChkWzBdLGRbMV0sZFsyXSxkWzNdLGRbNF0sZFs1XSk7dXBkYXRlQWR2YW5jZVNjYWxlKCk7YnJlYWs7Y2FzZSBlZTpGLmNoYXJTcGFjaW5nPWRbMF07YnJlYWs7Y2FzZSB0ZTpGLndvcmRTcGFjaW5nPWRbMF07YnJlYWs7Y2FzZSAkQTpGLnRleHRNYXRyaXg9aS5zbGljZSgpO0YudGV4dExpbmVNYXRyaXg9aS5zbGljZSgpO2JyZWFrO2Nhc2UgaGU6aWYoIXIuc3RhdGUuZm9udCl7Zi5lbnN1cmVTdGF0ZUZvbnQoci5zdGF0ZSk7Y29udGludWV9Y29uc3QgYT0oRi5mb250LnZlcnRpY2FsPzE6LTEpKkYuZm9udFNpemUvMWUzLEU9ZFswXTtmb3IobGV0IGU9MCx0PUUubGVuZ3RoO2U8dDtlKyspe2NvbnN0IHQ9RVtlXTtpZigic3RyaW5nIj09dHlwZW9mIHQpbS5wdXNoKHQpO2Vsc2UgaWYoIm51bWJlciI9PXR5cGVvZiB0JiYwIT09dCl7Y29uc3QgZT1tLmpvaW4oIiIpO20ubGVuZ3RoPTA7YnVpbGRUZXh0Q29udGVudEl0ZW0oe2NoYXJzOmUsZXh0cmFTcGFjaW5nOnQqYX0pfX1pZihtLmxlbmd0aD4wKXtjb25zdCBlPW0uam9pbigiIik7bS5sZW5ndGg9MDtidWlsZFRleHRDb250ZW50SXRlbSh7Y2hhcnM6ZSxleHRyYVNwYWNpbmc6MH0pfWJyZWFrO2Nhc2UgQ2U6aWYoIXIuc3RhdGUuZm9udCl7Zi5lbnN1cmVTdGF0ZUZvbnQoci5zdGF0ZSk7Y29udGludWV9YnVpbGRUZXh0Q29udGVudEl0ZW0oe2NoYXJzOmRbMF0sZXh0cmFTcGFjaW5nOjB9KTticmVhaztjYXNlIGxlOmlmKCFyLnN0YXRlLmZvbnQpe2YuZW5zdXJlU3RhdGVGb250KHIuc3RhdGUpO2NvbnRpbnVlfUYuY2FycmlhZ2VSZXR1cm4oKTtidWlsZFRleHRDb250ZW50SXRlbSh7Y2hhcnM6ZFswXSxleHRyYVNwYWNpbmc6MH0pO2JyZWFrO2Nhc2UgQmU6aWYoIXIuc3RhdGUuZm9udCl7Zi5lbnN1cmVTdGF0ZUZvbnQoci5zdGF0ZSk7Y29udGludWV9Ri53b3JkU3BhY2luZz1kWzBdO0YuY2hhclNwYWNpbmc9ZFsxXTtGLmNhcnJpYWdlUmV0dXJuKCk7YnVpbGRUZXh0Q29udGVudEl0ZW0oe2NoYXJzOmRbMl0sZXh0cmFTcGFjaW5nOjB9KTticmVhaztjYXNlIFVlOmZsdXNoVGV4dENvbnRlbnRJdGVtKCk7eXx8KHk9cy5nZXQoIlhPYmplY3QiKXx8RGljdC5lbXB0eSk7dmFyIFI9ZFswXWluc3RhbmNlb2YgTmFtZSxHPWRbMF0ubmFtZTtpZihSJiZ3LmdldEJ5TmFtZShHKSlicmVhaztuZXh0KG5ldyBQcm9taXNlKChmdW5jdGlvbihlLGkpe2lmKCFSKXRocm93IG5ldyBGb3JtYXRFcnJvcigiWE9iamVjdCBtdXN0IGJlIHJlZmVycmVkIHRvIGJ5IG5hbWUuIik7bGV0IGE9eS5nZXRSYXcoRyk7aWYoYSBpbnN0YW5jZW9mIFJlZil7aWYody5nZXRCeVJlZihhKSl7ZSgpO3JldHVybn1pZihmLmdsb2JhbEltYWdlQ2FjaGUuZ2V0RGF0YShhLGYucGFnZUluZGV4KSl7ZSgpO3JldHVybn1hPXAuZmV0Y2goYSl9aWYoIShhIGluc3RhbmNlb2YgQmFzZVN0cmVhbSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJYT2JqZWN0IHNob3VsZCBiZSBhIHN0cmVhbSIpO2NvbnN0IFE9YS5kaWN0LmdldCgiU3VidHlwZSIpO2lmKCEoUSBpbnN0YW5jZW9mIE5hbWUpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiWE9iamVjdCBzaG91bGQgaGF2ZSBhIE5hbWUgc3VidHlwZSIpO2lmKCJGb3JtIiE9PVEubmFtZSl7dy5zZXQoRyxhLmRpY3Qub2JqSWQsITApO2UoKTtyZXR1cm59Y29uc3QgRT1yLnN0YXRlLmNsb25lKCksdT1uZXcgU3RhdGVNYW5hZ2VyKEUpLGQ9YS5kaWN0LmdldEFycmF5KCJNYXRyaXgiKTtBcnJheS5pc0FycmF5KGQpJiY2PT09ZC5sZW5ndGgmJnUudHJhbnNmb3JtKGQpO2VucXVldWVDaHVuaygpO2NvbnN0IG09e2VucXVldWVJbnZva2VkOiExLGVucXVldWUoZSx0KXt0aGlzLmVucXVldWVJbnZva2VkPSEwO28uZW5xdWV1ZShlLHQpfSxnZXQgZGVzaXJlZFNpemUoKXtyZXR1cm4gby5kZXNpcmVkU2l6ZX0sZ2V0IHJlYWR5KCl7cmV0dXJuIG8ucmVhZHl9fTtmLmdldFRleHRDb250ZW50KHtzdHJlYW06YSx0YXNrOnQscmVzb3VyY2VzOmEuZGljdC5nZXQoIlJlc291cmNlcyIpfHxzLHN0YXRlTWFuYWdlcjp1LGluY2x1ZGVNYXJrZWRDb250ZW50Om4sc2luazptLHNlZW5TdHlsZXM6Zyx2aWV3Qm94OmMsbWFya2VkQ29udGVudERhdGE6QyxkaXNhYmxlTm9ybWFsaXphdGlvbjpoLGtlZXBXaGl0ZVNwYWNlOmx9KS50aGVuKChmdW5jdGlvbigpe20uZW5xdWV1ZUludm9rZWR8fHcuc2V0KEcsYS5kaWN0Lm9iaklkLCEwKTtlKCl9KSxpKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7aWYoIShlIGluc3RhbmNlb2YgQWJvcnRFeGNlcHRpb24pKXtpZighZi5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlO3dhcm4oYGdldFRleHRDb250ZW50IC0gaWdub3JpbmcgWE9iamVjdDogIiR7ZX0iLmApfX0pKSk7cmV0dXJuO2Nhc2UgUkE6Uj1kWzBdaW5zdGFuY2VvZiBOYW1lO0c9ZFswXS5uYW1lO2lmKFImJmIuZ2V0QnlOYW1lKEcpKWJyZWFrO25leHQobmV3IFByb21pc2UoKGZ1bmN0aW9uKGUsdCl7aWYoIVIpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJHU3RhdGUgbXVzdCBiZSByZWZlcnJlZCB0byBieSBuYW1lLiIpO2NvbnN0IGk9cy5nZXQoIkV4dEdTdGF0ZSIpO2lmKCEoaSBpbnN0YW5jZW9mIERpY3QpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiRXh0R1N0YXRlIHNob3VsZCBiZSBhIGRpY3Rpb25hcnkuIik7Y29uc3QgYT1pLmdldChHKTtpZighKGEgaW5zdGFuY2VvZiBEaWN0KSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkdTdGF0ZSBzaG91bGQgYmUgYSBkaWN0aW9uYXJ5LiIpO2NvbnN0IHI9YS5nZXQoIkZvbnQiKTtpZihyKXtmbHVzaFRleHRDb250ZW50SXRlbSgpO0YuZm9udE5hbWU9bnVsbDtGLmZvbnRTaXplPXJbMV07aGFuZGxlU2V0Rm9udChudWxsLHJbMF0pLnRoZW4oZSx0KX1lbHNle2Iuc2V0KEcsYS5vYmpJZCwhMCk7ZSgpfX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7aWYoIShlIGluc3RhbmNlb2YgQWJvcnRFeGNlcHRpb24pKXtpZighZi5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlO3dhcm4oYGdldFRleHRDb250ZW50IC0gaWdub3JpbmcgRXh0R1N0YXRlOiAiJHtlfSIuYCl9fSkpKTtyZXR1cm47Y2FzZSBIZTpmbHVzaFRleHRDb250ZW50SXRlbSgpO2lmKG4pe0MubGV2ZWwrKztRLml0ZW1zLnB1c2goe3R5cGU6ImJlZ2luTWFya2VkQ29udGVudCIsdGFnOmRbMF1pbnN0YW5jZW9mIE5hbWU/ZFswXS5uYW1lOm51bGx9KX1icmVhaztjYXNlIEplOmZsdXNoVGV4dENvbnRlbnRJdGVtKCk7aWYobil7Qy5sZXZlbCsrO2xldCBlPW51bGw7ZFsxXWluc3RhbmNlb2YgRGljdCYmKGU9ZFsxXS5nZXQoIk1DSUQiKSk7US5pdGVtcy5wdXNoKHt0eXBlOiJiZWdpbk1hcmtlZENvbnRlbnRQcm9wcyIsaWQ6TnVtYmVyLmlzSW50ZWdlcihlKT9gJHtmLmlkRmFjdG9yeS5nZXRQYWdlT2JqSWQoKX1fbWMke2V9YDpudWxsLHRhZzpkWzBdaW5zdGFuY2VvZiBOYW1lP2RbMF0ubmFtZTpudWxsfSl9YnJlYWs7Y2FzZSBZZTpmbHVzaFRleHRDb250ZW50SXRlbSgpO2lmKG4pe2lmKDA9PT1DLmxldmVsKWJyZWFrO0MubGV2ZWwtLTtRLml0ZW1zLnB1c2goe3R5cGU6ImVuZE1hcmtlZENvbnRlbnQifSl9YnJlYWs7Y2FzZSB4QTohZXx8ZS5mb250PT09Ri5mb250JiZlLmZvbnRTaXplPT09Ri5mb250U2l6ZSYmZS5mb250TmFtZT09PUYuZm9udE5hbWV8fGZsdXNoVGV4dENvbnRlbnRJdGVtKCl9aWYoUS5pdGVtcy5sZW5ndGg+PW8uZGVzaXJlZFNpemUpe3U9ITA7YnJlYWt9fWlmKHUpbmV4dChrcyk7ZWxzZXtmbHVzaFRleHRDb250ZW50SXRlbSgpO2VucXVldWVDaHVuaygpO2UoKX19KSkuY2F0Y2goKGU9PntpZighKGUgaW5zdGFuY2VvZiBBYm9ydEV4Y2VwdGlvbikpe2lmKCF0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IGU7d2FybihgZ2V0VGV4dENvbnRlbnQgLSBpZ25vcmluZyBlcnJvcnMgZHVyaW5nICIke3QubmFtZX0iIHRhc2s6ICIke2V9Ii5gKTtmbHVzaFRleHRDb250ZW50SXRlbSgpO2VucXVldWVDaHVuaygpfX0pKX1hc3luYyBleHRyYWN0RGF0YVN0cnVjdHVyZXMoZSx0KXtjb25zdCBpPXRoaXMueHJlZjtsZXQgYTtjb25zdCBzPXRoaXMucmVhZFRvVW5pY29kZSh0LnRvVW5pY29kZSk7aWYodC5jb21wb3NpdGUpe2NvbnN0IGk9ZS5nZXQoIkNJRFN5c3RlbUluZm8iKTtpIGluc3RhbmNlb2YgRGljdCYmKHQuY2lkU3lzdGVtSW5mbz17cmVnaXN0cnk6c3RyaW5nVG9QREZTdHJpbmcoaS5nZXQoIlJlZ2lzdHJ5IikpLG9yZGVyaW5nOnN0cmluZ1RvUERGU3RyaW5nKGkuZ2V0KCJPcmRlcmluZyIpKSxzdXBwbGVtZW50OmkuZ2V0KCJTdXBwbGVtZW50Iil9KTt0cnl7Y29uc3QgdD1lLmdldCgiQ0lEVG9HSURNYXAiKTt0IGluc3RhbmNlb2YgQmFzZVN0cmVhbSYmKGE9dC5nZXRCeXRlcygpKX1jYXRjaChlKXtpZighdGhpcy5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlO3dhcm4oYGV4dHJhY3REYXRhU3RydWN0dXJlcyAtIGlnbm9yaW5nIENJRFRvR0lETWFwIGRhdGE6ICIke2V9Ii5gKX19Y29uc3Qgcj1bXTtsZXQgbixvPW51bGw7aWYoZS5oYXMoIkVuY29kaW5nIikpe249ZS5nZXQoIkVuY29kaW5nIik7aWYobiBpbnN0YW5jZW9mIERpY3Qpe289bi5nZXQoIkJhc2VFbmNvZGluZyIpO289byBpbnN0YW5jZW9mIE5hbWU/by5uYW1lOm51bGw7aWYobi5oYXMoIkRpZmZlcmVuY2VzIikpe2NvbnN0IGU9bi5nZXQoIkRpZmZlcmVuY2VzIik7bGV0IHQ9MDtmb3IoY29uc3QgYSBvZiBlKXtjb25zdCBlPWkuZmV0Y2hJZlJlZihhKTtpZigibnVtYmVyIj09dHlwZW9mIGUpdD1lO2Vsc2V7aWYoIShlIGluc3RhbmNlb2YgTmFtZSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbnZhbGlkIGVudHJ5IGluICdEaWZmZXJlbmNlcycgYXJyYXk6ICR7ZX1gKTtyW3QrK109ZS5uYW1lfX19fWVsc2UgaWYobiBpbnN0YW5jZW9mIE5hbWUpbz1uLm5hbWU7ZWxzZXtjb25zdCBlPSJFbmNvZGluZyBpcyBub3QgYSBOYW1lIG5vciBhIERpY3QiO2lmKCF0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IG5ldyBGb3JtYXRFcnJvcihlKTt3YXJuKGUpfSJNYWNSb21hbkVuY29kaW5nIiE9PW8mJiJNYWNFeHBlcnRFbmNvZGluZyIhPT1vJiYiV2luQW5zaUVuY29kaW5nIiE9PW8mJihvPW51bGwpfWNvbnN0IGc9IXQuZmlsZXx8dC5pc0ludGVybmFsRm9udCxjPVppKClbdC5uYW1lXTtvJiZnJiZjJiYobz1udWxsKTtpZihvKXQuZGVmYXVsdEVuY29kaW5nPWdldEVuY29kaW5nKG8pO2Vsc2V7Y29uc3QgZT0hISh0LmZsYWdzJlRpKSxpPSEhKHQuZmxhZ3MmcWkpO249Zmk7IlRydWVUeXBlIiE9PXQudHlwZXx8aXx8KG49cGkpO2lmKGV8fGMpe249ZGk7ZyYmKC9TeW1ib2wvaS50ZXN0KHQubmFtZSk/bj1taTovRGluZ2JhdHMvaS50ZXN0KHQubmFtZSk/bj15aTovV2luZ2RpbmdzL2kudGVzdCh0Lm5hbWUpJiYobj1waSkpfXQuZGVmYXVsdEVuY29kaW5nPW59dC5kaWZmZXJlbmNlcz1yO3QuYmFzZUVuY29kaW5nTmFtZT1vO3QuaGFzRW5jb2Rpbmc9ISFvfHxyLmxlbmd0aD4wO3QuZGljdD1lO3QudG9Vbmljb2RlPWF3YWl0IHM7Y29uc3QgQz1hd2FpdCB0aGlzLmJ1aWxkVG9Vbmljb2RlKHQpO3QudG9Vbmljb2RlPUM7YSYmKHQuY2lkVG9HaWRNYXA9dGhpcy5yZWFkQ2lkVG9HaWRNYXAoYSxDKSk7cmV0dXJuIHR9X3NpbXBsZUZvbnRUb1VuaWNvZGUoZSx0PSExKXthc3NlcnQoIWUuY29tcG9zaXRlLCJNdXN0IGJlIGEgc2ltcGxlIGZvbnQuIik7Y29uc3QgaT1bXSxhPWUuZGVmYXVsdEVuY29kaW5nLnNsaWNlKCkscz1lLmJhc2VFbmNvZGluZ05hbWUscj1lLmRpZmZlcmVuY2VzO2Zvcihjb25zdCBlIGluIHIpe2NvbnN0IHQ9cltlXTsiLm5vdGRlZiIhPT10JiYoYVtlXT10KX1jb25zdCBuPVJpKCk7Zm9yKGNvbnN0IHIgaW4gYSl7bGV0IG89YVtyXTtpZigiIj09PW8pY29udGludWU7bGV0IGc9bltvXTtpZih2b2lkIDAhPT1nKXtpW3JdPVN0cmluZy5mcm9tQ2hhckNvZGUoZyk7Y29udGludWV9bGV0IGM9MDtzd2l0Y2gob1swXSl7Y2FzZSJHIjozPT09by5sZW5ndGgmJihjPXBhcnNlSW50KG8uc3Vic3RyaW5nKDEpLDE2KSk7YnJlYWs7Y2FzZSJnIjo1PT09by5sZW5ndGgmJihjPXBhcnNlSW50KG8uc3Vic3RyaW5nKDEpLDE2KSk7YnJlYWs7Y2FzZSJDIjpjYXNlImMiOmlmKG8ubGVuZ3RoPj0zJiZvLmxlbmd0aDw9NCl7Y29uc3QgaT1vLnN1YnN0cmluZygxKTtpZih0KXtjPXBhcnNlSW50KGksMTYpO2JyZWFrfWM9K2k7aWYoTnVtYmVyLmlzTmFOKGMpJiZOdW1iZXIuaXNJbnRlZ2VyKHBhcnNlSW50KGksMTYpKSlyZXR1cm4gdGhpcy5fc2ltcGxlRm9udFRvVW5pY29kZShlLCEwKX1icmVhaztjYXNlInUiOmc9Z2V0VW5pY29kZUZvckdseXBoKG8sbik7LTEhPT1nJiYoYz1nKTticmVhaztkZWZhdWx0OnN3aXRjaChvKXtjYXNlImZfaCI6Y2FzZSJmX3QiOmNhc2UiVF9oIjppW3JdPW8ucmVwbGFjZUFsbCgiXyIsIiIpO2NvbnRpbnVlfX1pZihjPjAmJmM8PTExMTQxMTEmJk51bWJlci5pc0ludGVnZXIoYykpe2lmKHMmJmM9PT0rcil7Y29uc3QgZT1nZXRFbmNvZGluZyhzKTtpZihlJiYobz1lW3JdKSl7aVtyXT1TdHJpbmcuZnJvbUNoYXJDb2RlKG5bb10pO2NvbnRpbnVlfX1pW3JdPVN0cmluZy5mcm9tQ29kZVBvaW50KGMpfX1yZXR1cm4gaX1hc3luYyBidWlsZFRvVW5pY29kZShlKXtlLmhhc0luY2x1ZGVkVG9Vbmljb2RlTWFwPWUudG9Vbmljb2RlPy5sZW5ndGg+MDtpZihlLmhhc0luY2x1ZGVkVG9Vbmljb2RlTWFwKXshZS5jb21wb3NpdGUmJmUuaGFzRW5jb2RpbmcmJihlLmZhbGxiYWNrVG9Vbmljb2RlPXRoaXMuX3NpbXBsZUZvbnRUb1VuaWNvZGUoZSkpO3JldHVybiBlLnRvVW5pY29kZX1pZighZS5jb21wb3NpdGUpcmV0dXJuIG5ldyBUb1VuaWNvZGVNYXAodGhpcy5fc2ltcGxlRm9udFRvVW5pY29kZShlKSk7aWYoZS5jb21wb3NpdGUmJihlLmNNYXAuYnVpbHRJbkNNYXAmJiEoZS5jTWFwIGluc3RhbmNlb2YgSWRlbnRpdHlDTWFwKXx8IkFkb2JlIj09PWUuY2lkU3lzdGVtSW5mbz8ucmVnaXN0cnkmJigiR0IxIj09PWUuY2lkU3lzdGVtSW5mby5vcmRlcmluZ3x8IkNOUzEiPT09ZS5jaWRTeXN0ZW1JbmZvLm9yZGVyaW5nfHwiSmFwYW4xIj09PWUuY2lkU3lzdGVtSW5mby5vcmRlcmluZ3x8IktvcmVhMSI9PT1lLmNpZFN5c3RlbUluZm8ub3JkZXJpbmcpKSl7Y29uc3R7cmVnaXN0cnk6dCxvcmRlcmluZzppfT1lLmNpZFN5c3RlbUluZm8sYT1OYW1lLmdldChgJHt0fS0ke2l9LVVDUzJgKSxzPWF3YWl0IENNYXBGYWN0b3J5LmNyZWF0ZSh7ZW5jb2Rpbmc6YSxmZXRjaEJ1aWx0SW5DTWFwOnRoaXMuX2ZldGNoQnVpbHRJbkNNYXBCb3VuZCx1c2VDTWFwOm51bGx9KSxyPVtdLG49W107ZS5jTWFwLmZvckVhY2goKGZ1bmN0aW9uKGUsdCl7aWYodD42NTUzNSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIk1heCBzaXplIG9mIENJRCBpcyA2NSw1MzUiKTtjb25zdCBpPXMubG9va3VwKHQpO2lmKGkpe24ubGVuZ3RoPTA7Zm9yKGxldCBlPTAsdD1pLmxlbmd0aDtlPHQ7ZSs9MiluLnB1c2goKGkuY2hhckNvZGVBdChlKTw8OCkraS5jaGFyQ29kZUF0KGUrMSkpO3JbZV09U3RyaW5nLmZyb21DaGFyQ29kZSguLi5uKX19KSk7cmV0dXJuIG5ldyBUb1VuaWNvZGVNYXAocil9cmV0dXJuIG5ldyBJZGVudGl0eVRvVW5pY29kZU1hcChlLmZpcnN0Q2hhcixlLmxhc3RDaGFyKX1hc3luYyByZWFkVG9Vbmljb2RlKGUpe2lmKCFlKXJldHVybiBudWxsO2lmKGUgaW5zdGFuY2VvZiBOYW1lKXtjb25zdCB0PWF3YWl0IENNYXBGYWN0b3J5LmNyZWF0ZSh7ZW5jb2Rpbmc6ZSxmZXRjaEJ1aWx0SW5DTWFwOnRoaXMuX2ZldGNoQnVpbHRJbkNNYXBCb3VuZCx1c2VDTWFwOm51bGx9KTtyZXR1cm4gdCBpbnN0YW5jZW9mIElkZW50aXR5Q01hcD9uZXcgSWRlbnRpdHlUb1VuaWNvZGVNYXAoMCw2NTUzNSk6bmV3IFRvVW5pY29kZU1hcCh0LmdldE1hcCgpKX1pZihlIGluc3RhbmNlb2YgQmFzZVN0cmVhbSl0cnl7Y29uc3QgdD1hd2FpdCBDTWFwRmFjdG9yeS5jcmVhdGUoe2VuY29kaW5nOmUsZmV0Y2hCdWlsdEluQ01hcDp0aGlzLl9mZXRjaEJ1aWx0SW5DTWFwQm91bmQsdXNlQ01hcDpudWxsfSk7aWYodCBpbnN0YW5jZW9mIElkZW50aXR5Q01hcClyZXR1cm4gbmV3IElkZW50aXR5VG9Vbmljb2RlTWFwKDAsNjU1MzUpO2NvbnN0IGk9bmV3IEFycmF5KHQubGVuZ3RoKTt0LmZvckVhY2goKGZ1bmN0aW9uKGUsdCl7aWYoIm51bWJlciI9PXR5cGVvZiB0KXtpW2VdPVN0cmluZy5mcm9tQ29kZVBvaW50KHQpO3JldHVybn1jb25zdCBhPVtdO2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSs9Mil7Y29uc3QgaT10LmNoYXJDb2RlQXQoZSk8PDh8dC5jaGFyQ29kZUF0KGUrMSk7aWYoNTUyOTYhPSg2MzQ4OCZpKSl7YS5wdXNoKGkpO2NvbnRpbnVlfWUrPTI7Y29uc3Qgcz10LmNoYXJDb2RlQXQoZSk8PDh8dC5jaGFyQ29kZUF0KGUrMSk7YS5wdXNoKCgoMTAyMyZpKTw8MTApKygxMDIzJnMpKzY1NTM2KX1pW2VdPVN0cmluZy5mcm9tQ29kZVBvaW50KC4uLmEpfSkpO3JldHVybiBuZXcgVG9Vbmljb2RlTWFwKGkpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBBYm9ydEV4Y2VwdGlvbilyZXR1cm4gbnVsbDtpZih0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXt3YXJuKGByZWFkVG9Vbmljb2RlIC0gaWdub3JpbmcgVG9Vbmljb2RlIGRhdGE6ICIke2V9Ii5gKTtyZXR1cm4gbnVsbH10aHJvdyBlfXJldHVybiBudWxsfXJlYWRDaWRUb0dpZE1hcChlLHQpe2NvbnN0IGk9W107Zm9yKGxldCBhPTAscz1lLmxlbmd0aDthPHM7YSsrKXtjb25zdCBzPWVbYSsrXTw8OHxlW2FdLHI9YT4+MTsoMCE9PXN8fHQuaGFzKHIpKSYmKGlbcl09cyl9cmV0dXJuIGl9ZXh0cmFjdFdpZHRocyhlLHQsaSl7Y29uc3QgYT10aGlzLnhyZWY7bGV0IHM9W10scj0wO2NvbnN0IG49W107bGV0IG87aWYoaS5jb21wb3NpdGUpe2NvbnN0IHQ9ZS5nZXQoIkRXIik7cj1OdW1iZXIuaXNJbnRlZ2VyKHQpP3Q6MWUzO2NvbnN0IGc9ZS5nZXQoIlciKTtpZihBcnJheS5pc0FycmF5KGcpKWZvcihsZXQgZT0wLHQ9Zy5sZW5ndGg7ZTx0O2UrKyl7bGV0IHQ9YS5mZXRjaElmUmVmKGdbZSsrXSk7aWYoIU51bWJlci5pc0ludGVnZXIodCkpYnJlYWs7Y29uc3QgaT1hLmZldGNoSWZSZWYoZ1tlXSk7aWYoQXJyYXkuaXNBcnJheShpKSlmb3IoY29uc3QgZSBvZiBpKXtjb25zdCBpPWEuZmV0Y2hJZlJlZihlKTsibnVtYmVyIj09dHlwZW9mIGkmJihzW3RdPWkpO3QrK31lbHNle2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGkpKWJyZWFrO3tjb25zdCByPWEuZmV0Y2hJZlJlZihnWysrZV0pO2lmKCJudW1iZXIiIT10eXBlb2Ygciljb250aW51ZTtmb3IobGV0IGU9dDtlPD1pO2UrKylzW2VdPXJ9fX1pZihpLnZlcnRpY2FsKXtjb25zdCB0PWUuZ2V0QXJyYXkoIkRXMiIpO2xldCBpPWlzTnVtYmVyQXJyYXkodCwyKT90Ols4ODAsLTFlM107bz1baVsxXSwuNSpyLGlbMF1dO2k9ZS5nZXQoIlcyIik7aWYoQXJyYXkuaXNBcnJheShpKSlmb3IobGV0IGU9MCx0PWkubGVuZ3RoO2U8dDtlKyspe2xldCB0PWEuZmV0Y2hJZlJlZihpW2UrK10pO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKHQpKWJyZWFrO2NvbnN0IHM9YS5mZXRjaElmUmVmKGlbZV0pO2lmKEFycmF5LmlzQXJyYXkocykpZm9yKGxldCBlPTAsaT1zLmxlbmd0aDtlPGk7ZSsrKXtjb25zdCBpPVthLmZldGNoSWZSZWYoc1tlKytdKSxhLmZldGNoSWZSZWYoc1tlKytdKSxhLmZldGNoSWZSZWYoc1tlXSldO2lzTnVtYmVyQXJyYXkoaSxudWxsKSYmKG5bdF09aSk7dCsrfWVsc2V7aWYoIU51bWJlci5pc0ludGVnZXIocykpYnJlYWs7e2NvbnN0IHI9W2EuZmV0Y2hJZlJlZihpWysrZV0pLGEuZmV0Y2hJZlJlZihpWysrZV0pLGEuZmV0Y2hJZlJlZihpWysrZV0pXTtpZighaXNOdW1iZXJBcnJheShyLG51bGwpKWNvbnRpbnVlO2ZvcihsZXQgZT10O2U8PXM7ZSsrKW5bZV09cn19fX19ZWxzZXtjb25zdCBuPWUuZ2V0KCJXaWR0aHMiKTtpZihBcnJheS5pc0FycmF5KG4pKXtsZXQgZT1pLmZpcnN0Q2hhcjtmb3IoY29uc3QgdCBvZiBuKXtjb25zdCBpPWEuZmV0Y2hJZlJlZih0KTsibnVtYmVyIj09dHlwZW9mIGkmJihzW2VdPWkpO2UrK31jb25zdCBvPXQuZ2V0KCJNaXNzaW5nV2lkdGgiKTtyPSJudW1iZXIiPT10eXBlb2Ygbz9vOjB9ZWxzZXtjb25zdCB0PWUuZ2V0KCJCYXNlRm9udCIpO2lmKHQgaW5zdGFuY2VvZiBOYW1lKXtjb25zdCBlPXRoaXMuZ2V0QmFzZUZvbnRNZXRyaWNzKHQubmFtZSk7cz10aGlzLmJ1aWxkQ2hhckNvZGVUb1dpZHRoKGUud2lkdGhzLGkpO3I9ZS5kZWZhdWx0V2lkdGh9fX1sZXQgZz0hMCxjPXI7Zm9yKGNvbnN0IGUgaW4gcyl7Y29uc3QgdD1zW2VdO2lmKHQpaWYoYyl7aWYoYyE9PXQpe2c9ITE7YnJlYWt9fWVsc2UgYz10fWc/aS5mbGFnc3w9dmk6aS5mbGFncyY9fnZpO2kuZGVmYXVsdFdpZHRoPXI7aS53aWR0aHM9cztpLmRlZmF1bHRWTWV0cmljcz1vO2kudm1ldHJpY3M9bn1pc1NlcmlmRm9udChlKXtjb25zdCB0PWUuc3BsaXQoIi0iLDEpWzBdO3JldHVybiB0IGluIFhpKCl8fC9zZXJpZi9naS50ZXN0KHQpfWdldEJhc2VGb250TWV0cmljcyhlKXtsZXQgdD0wLGk9T2JqZWN0LmNyZWF0ZShudWxsKSxhPSExO2xldCBzPVBpKClbZV18fGU7Y29uc3Qgcj1BYSgpO3MgaW4gcnx8KHM9dGhpcy5pc1NlcmlmRm9udChlKT8iVGltZXMtUm9tYW4iOiJIZWx2ZXRpY2EiKTtjb25zdCBuPXJbc107aWYoIm51bWJlciI9PXR5cGVvZiBuKXt0PW47YT0hMH1lbHNlIGk9bigpO3JldHVybntkZWZhdWx0V2lkdGg6dCxtb25vc3BhY2U6YSx3aWR0aHM6aX19YnVpbGRDaGFyQ29kZVRvV2lkdGgoZSx0KXtjb25zdCBpPU9iamVjdC5jcmVhdGUobnVsbCksYT10LmRpZmZlcmVuY2VzLHM9dC5kZWZhdWx0RW5jb2Rpbmc7Zm9yKGxldCB0PTA7dDwyNTY7dCsrKXQgaW4gYSYmZVthW3RdXT9pW3RdPWVbYVt0XV06dCBpbiBzJiZlW3NbdF1dJiYoaVt0XT1lW3NbdF1dKTtyZXR1cm4gaX1wcmVFdmFsdWF0ZUZvbnQoZSl7Y29uc3QgdD1lO2xldCBpPWUuZ2V0KCJTdWJ0eXBlIik7aWYoIShpIGluc3RhbmNlb2YgTmFtZSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJpbnZhbGlkIGZvbnQgU3VidHlwZSIpO2xldCBhLHM9ITE7aWYoIlR5cGUwIj09PWkubmFtZSl7Y29uc3QgdD1lLmdldCgiRGVzY2VuZGFudEZvbnRzIik7aWYoIXQpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJEZXNjZW5kYW50IGZvbnRzIGFyZSBub3Qgc3BlY2lmaWVkIik7aWYoISgoZT1BcnJheS5pc0FycmF5KHQpP3RoaXMueHJlZi5mZXRjaElmUmVmKHRbMF0pOnQpaW5zdGFuY2VvZiBEaWN0KSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkRlc2NlbmRhbnQgZm9udCBpcyBub3QgYSBkaWN0aW9uYXJ5LiIpO2k9ZS5nZXQoIlN1YnR5cGUiKTtpZighKGkgaW5zdGFuY2VvZiBOYW1lKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoImludmFsaWQgZm9udCBTdWJ0eXBlIik7cz0hMH1sZXQgcj1lLmdldCgiRmlyc3RDaGFyIik7TnVtYmVyLmlzSW50ZWdlcihyKXx8KHI9MCk7bGV0IG49ZS5nZXQoIkxhc3RDaGFyIik7TnVtYmVyLmlzSW50ZWdlcihuKXx8KG49cz82NTUzNToyNTUpO2NvbnN0IG89ZS5nZXQoIkZvbnREZXNjcmlwdG9yIiksZz1lLmdldCgiVG9Vbmljb2RlIil8fHQuZ2V0KCJUb1VuaWNvZGUiKTtpZihvKXthPW5ldyBNdXJtdXJIYXNoM182NDtjb25zdCBpPXQuZ2V0UmF3KCJFbmNvZGluZyIpO2lmKGkgaW5zdGFuY2VvZiBOYW1lKWEudXBkYXRlKGkubmFtZSk7ZWxzZSBpZihpIGluc3RhbmNlb2YgUmVmKWEudXBkYXRlKGkudG9TdHJpbmcoKSk7ZWxzZSBpZihpIGluc3RhbmNlb2YgRGljdClmb3IoY29uc3QgZSBvZiBpLmdldFJhd1ZhbHVlcygpKWlmKGUgaW5zdGFuY2VvZiBOYW1lKWEudXBkYXRlKGUubmFtZSk7ZWxzZSBpZihlIGluc3RhbmNlb2YgUmVmKWEudXBkYXRlKGUudG9TdHJpbmcoKSk7ZWxzZSBpZihBcnJheS5pc0FycmF5KGUpKXtjb25zdCB0PWUubGVuZ3RoLGk9bmV3IEFycmF5KHQpO2ZvcihsZXQgYT0wO2E8dDthKyspe2NvbnN0IHQ9ZVthXTt0IGluc3RhbmNlb2YgTmFtZT9pW2FdPXQubmFtZTooIm51bWJlciI9PXR5cGVvZiB0fHx0IGluc3RhbmNlb2YgUmVmKSYmKGlbYV09dC50b1N0cmluZygpKX1hLnVwZGF0ZShpLmpvaW4oKSl9YS51cGRhdGUoYCR7cn0tJHtufWApO2lmKGcgaW5zdGFuY2VvZiBCYXNlU3RyZWFtKXtjb25zdCBlPWcuc3RyfHxnLHQ9ZS5idWZmZXI/bmV3IFVpbnQ4QXJyYXkoZS5idWZmZXIuYnVmZmVyLDAsZS5idWZmZXJMZW5ndGgpOm5ldyBVaW50OEFycmF5KGUuYnl0ZXMuYnVmZmVyLGUuc3RhcnQsZS5lbmQtZS5zdGFydCk7YS51cGRhdGUodCl9ZWxzZSBnIGluc3RhbmNlb2YgTmFtZSYmYS51cGRhdGUoZy5uYW1lKTtjb25zdCBvPWUuZ2V0KCJXaWR0aHMiKXx8dC5nZXQoIldpZHRocyIpO2lmKEFycmF5LmlzQXJyYXkobykpe2NvbnN0IGU9W107Zm9yKGNvbnN0IHQgb2YgbykoIm51bWJlciI9PXR5cGVvZiB0fHx0IGluc3RhbmNlb2YgUmVmKSYmZS5wdXNoKHQudG9TdHJpbmcoKSk7YS51cGRhdGUoZS5qb2luKCkpfWlmKHMpe2EudXBkYXRlKCJjb21wb3NpdGVGb250Iik7Y29uc3QgaT1lLmdldCgiVyIpfHx0LmdldCgiVyIpO2lmKEFycmF5LmlzQXJyYXkoaSkpe2NvbnN0IGU9W107Zm9yKGNvbnN0IHQgb2YgaSlpZigibnVtYmVyIj09dHlwZW9mIHR8fHQgaW5zdGFuY2VvZiBSZWYpZS5wdXNoKHQudG9TdHJpbmcoKSk7ZWxzZSBpZihBcnJheS5pc0FycmF5KHQpKXtjb25zdCBpPVtdO2Zvcihjb25zdCBlIG9mIHQpKCJudW1iZXIiPT10eXBlb2YgZXx8ZSBpbnN0YW5jZW9mIFJlZikmJmkucHVzaChlLnRvU3RyaW5nKCkpO2UucHVzaChgWyR7aS5qb2luKCl9XWApfWEudXBkYXRlKGUuam9pbigpKX1jb25zdCBzPWUuZ2V0UmF3KCJDSURUb0dJRE1hcCIpfHx0LmdldFJhdygiQ0lEVG9HSURNYXAiKTtzIGluc3RhbmNlb2YgTmFtZT9hLnVwZGF0ZShzLm5hbWUpOnMgaW5zdGFuY2VvZiBSZWY/YS51cGRhdGUocy50b1N0cmluZygpKTpzIGluc3RhbmNlb2YgQmFzZVN0cmVhbSYmYS51cGRhdGUocy5wZWVrQnl0ZXMoKSl9fXJldHVybntkZXNjcmlwdG9yOm8sZGljdDplLGJhc2VEaWN0OnQsY29tcG9zaXRlOnMsdHlwZTppLm5hbWUsZmlyc3RDaGFyOnIsbGFzdENoYXI6bix0b1VuaWNvZGU6ZyxoYXNoOmE/YS5oZXhkaWdlc3QoKToiIn19YXN5bmMgdHJhbnNsYXRlRm9udCh7ZGVzY3JpcHRvcjplLGRpY3Q6dCxiYXNlRGljdDppLGNvbXBvc2l0ZTpzLHR5cGU6cixmaXJzdENoYXI6bixsYXN0Q2hhcjpvLHRvVW5pY29kZTpnLGNzc0ZvbnRJbmZvOmN9KXtjb25zdCBDPSJUeXBlMyI9PT1yO2lmKCFlKXtpZighQyl7bGV0IGU9dC5nZXQoIkJhc2VGb250Iik7aWYoIShlIGluc3RhbmNlb2YgTmFtZSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJCYXNlIGZvbnQgaXMgbm90IHNwZWNpZmllZCIpO2U9ZS5uYW1lLnJlcGxhY2VBbGwoL1ssX10vZywiLSIpO2NvbnN0IGE9dGhpcy5nZXRCYXNlRm9udE1ldHJpY3MoZSkscz1lLnNwbGl0KCItIiwxKVswXSxjPSh0aGlzLmlzU2VyaWZGb250KHMpP0tpOjApfChhLm1vbm9zcGFjZT92aTowKXwoWmkoKVtzXT9UaTpxaSksaD17dHlwZTpyLG5hbWU6ZSxsb2FkZWROYW1lOmkubG9hZGVkTmFtZSxzeXN0ZW1Gb250SW5mbzpudWxsLHdpZHRoczphLndpZHRocyxkZWZhdWx0V2lkdGg6YS5kZWZhdWx0V2lkdGgsaXNTaW11bGF0ZWRGbGFnczohMCxmbGFnczpjLGZpcnN0Q2hhcjpuLGxhc3RDaGFyOm8sdG9Vbmljb2RlOmcseEhlaWdodDowLGNhcEhlaWdodDowLGl0YWxpY0FuZ2xlOjAsaXNUeXBlM0ZvbnQ6Q30sbD10LmdldCgiV2lkdGhzIiksUT1nZXRTdGFuZGFyZEZvbnROYW1lKGUpO2xldCBFPW51bGw7aWYoUSl7RT1hd2FpdCB0aGlzLmZldGNoU3RhbmRhcmRGb250RGF0YShRKTtoLmlzSW50ZXJuYWxGb250PSEhRX0haC5pc0ludGVybmFsRm9udCYmdGhpcy5vcHRpb25zLnVzZVN5c3RlbUZvbnRzJiYoaC5zeXN0ZW1Gb250SW5mbz1nZXRGb250U3Vic3RpdHV0aW9uKHRoaXMuc3lzdGVtRm9udENhY2hlLHRoaXMuaWRGYWN0b3J5LHRoaXMub3B0aW9ucy5zdGFuZGFyZEZvbnREYXRhVXJsLGUsUSxyKSk7Y29uc3QgdT1hd2FpdCB0aGlzLmV4dHJhY3REYXRhU3RydWN0dXJlcyh0LGgpO2lmKGwpe2NvbnN0IGU9W107bGV0IHQ9bjtmb3IoY29uc3QgaSBvZiBsKWVbdCsrXT10aGlzLnhyZWYuZmV0Y2hJZlJlZihpKTt1LndpZHRocz1lfWVsc2UgdS53aWR0aHM9dGhpcy5idWlsZENoYXJDb2RlVG9XaWR0aChhLndpZHRocyx1KTtyZXR1cm4gbmV3IEZvbnQoZSxFLHUpfXtsZXQgaT10LmdldEFycmF5KCJGb250QkJveCIpO2lzTnVtYmVyQXJyYXkoaSw0KXx8KGk9WzAsMCwwLDBdKTsoZT1uZXcgRGljdChudWxsKSkuc2V0KCJGb250TmFtZSIsTmFtZS5nZXQocikpO2Uuc2V0KCJGb250QkJveCIsaSl9fWxldCBoPWUuZ2V0KCJGb250TmFtZSIpLGw9dC5nZXQoIkJhc2VGb250Iik7InN0cmluZyI9PXR5cGVvZiBoJiYoaD1OYW1lLmdldChoKSk7InN0cmluZyI9PXR5cGVvZiBsJiYobD1OYW1lLmdldChsKSk7Y29uc3QgUT1oPy5uYW1lLEU9bD8ubmFtZTtpZighQyYmUSE9PUUpe2luZm8oYFRoZSBGb250RGVzY3JpcHRvcidzIEZvbnROYW1lIGlzICIke1F9IiBidXQgc2hvdWxkIGJlIHRoZSBzYW1lIGFzIHRoZSBGb250J3MgQmFzZUZvbnQgIiR7RX0iLmApO1EmJkUmJihFLnN0YXJ0c1dpdGgoUSl8fCFpc0tub3duRm9udE5hbWUoUSkmJmlzS25vd25Gb250TmFtZShFKSkmJihoPW51bGwpfWh8fD1sO2lmKCEoaCBpbnN0YW5jZW9mIE5hbWUpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiaW52YWxpZCBmb250IG5hbWUiKTtsZXQgdSxkLGYscCxtO3RyeXt1PWUuZ2V0KCJGb250RmlsZSIsIkZvbnRGaWxlMiIsIkZvbnRGaWxlMyIpfWNhdGNoKGUpe2lmKCF0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IGU7d2FybihgdHJhbnNsYXRlRm9udCAtIGZldGNoaW5nICIke2gubmFtZX0iIGZvbnQgZmlsZTogIiR7ZX0iLmApO3U9bmV3IE51bGxTdHJlYW19bGV0IHk9ITEsdz1udWxsLGI9bnVsbDtpZih1KXtpZih1LmRpY3Qpe2NvbnN0IGU9dS5kaWN0LmdldCgiU3VidHlwZSIpO2UgaW5zdGFuY2VvZiBOYW1lJiYoZD1lLm5hbWUpO2Y9dS5kaWN0LmdldCgiTGVuZ3RoMSIpO3A9dS5kaWN0LmdldCgiTGVuZ3RoMiIpO209dS5kaWN0LmdldCgiTGVuZ3RoMyIpfX1lbHNlIGlmKGMpe2NvbnN0IGU9Z2V0WGZhRm9udE5hbWUoaC5uYW1lKTtpZihlKXtjLmZvbnRGYW1pbHk9YCR7Yy5mb250RmFtaWx5fS1QZGZKUy1YRkFgO2MubWV0cmljcz1lLm1ldHJpY3N8fG51bGw7dz1lLmZhY3RvcnN8fG51bGw7dT1hd2FpdCB0aGlzLmZldGNoU3RhbmRhcmRGb250RGF0YShlLm5hbWUpO3k9ISF1O2k9dD1nZXRYZmFGb250RGljdChoLm5hbWUpO3M9ITB9fWVsc2UgaWYoIUMpe2NvbnN0IGU9Z2V0U3RhbmRhcmRGb250TmFtZShoLm5hbWUpO2lmKGUpe3U9YXdhaXQgdGhpcy5mZXRjaFN0YW5kYXJkRm9udERhdGEoZSk7eT0hIXV9IXkmJnRoaXMub3B0aW9ucy51c2VTeXN0ZW1Gb250cyYmKGI9Z2V0Rm9udFN1YnN0aXR1dGlvbih0aGlzLnN5c3RlbUZvbnRDYWNoZSx0aGlzLmlkRmFjdG9yeSx0aGlzLm9wdGlvbnMuc3RhbmRhcmRGb250RGF0YVVybCxoLm5hbWUsZSxyKSl9bGV0IEQ9dC5nZXRBcnJheSgiRm9udE1hdHJpeCIpO2lzTnVtYmVyQXJyYXkoRCw2KXx8KEQ9YSk7bGV0IEY9ZS5nZXRBcnJheSgiRm9udEJCb3giKXx8dC5nZXRBcnJheSgiRm9udEJCb3giKTtpc051bWJlckFycmF5KEYsNCl8fChGPXZvaWQgMCk7bGV0IFM9ZS5nZXQoIkFzY2VudCIpOyJudW1iZXIiIT10eXBlb2YgUyYmKFM9dm9pZCAwKTtsZXQgaz1lLmdldCgiRGVzY2VudCIpOyJudW1iZXIiIT10eXBlb2YgayYmKGs9dm9pZCAwKTtsZXQgTj1lLmdldCgiWEhlaWdodCIpOyJudW1iZXIiIT10eXBlb2YgTiYmKE49MCk7bGV0IFI9ZS5nZXQoIkNhcEhlaWdodCIpOyJudW1iZXIiIT10eXBlb2YgUiYmKFI9MCk7bGV0IEc9ZS5nZXQoIkZsYWdzIik7TnVtYmVyLmlzSW50ZWdlcihHKXx8KEc9MCk7bGV0IHg9ZS5nZXQoIkl0YWxpY0FuZ2xlIik7Im51bWJlciIhPXR5cGVvZiB4JiYoeD0wKTtjb25zdCBVPXt0eXBlOnIsbmFtZTpoLm5hbWUsc3VidHlwZTpkLGZpbGU6dSxsZW5ndGgxOmYsbGVuZ3RoMjpwLGxlbmd0aDM6bSxpc0ludGVybmFsRm9udDp5LGxvYWRlZE5hbWU6aS5sb2FkZWROYW1lLGNvbXBvc2l0ZTpzLGZpeGVkUGl0Y2g6ITEsZm9udE1hdHJpeDpELGZpcnN0Q2hhcjpuLGxhc3RDaGFyOm8sdG9Vbmljb2RlOmcsYmJveDpGLGFzY2VudDpTLGRlc2NlbnQ6ayx4SGVpZ2h0Ok4sY2FwSGVpZ2h0OlIsZmxhZ3M6RyxpdGFsaWNBbmdsZTp4LGlzVHlwZTNGb250OkMsY3NzRm9udEluZm86YyxzY2FsZUZhY3RvcnM6dyxzeXN0ZW1Gb250SW5mbzpifTtpZihzKXtjb25zdCBlPWkuZ2V0KCJFbmNvZGluZyIpO2UgaW5zdGFuY2VvZiBOYW1lJiYoVS5jaWRFbmNvZGluZz1lLm5hbWUpO2NvbnN0IHQ9YXdhaXQgQ01hcEZhY3RvcnkuY3JlYXRlKHtlbmNvZGluZzplLGZldGNoQnVpbHRJbkNNYXA6dGhpcy5fZmV0Y2hCdWlsdEluQ01hcEJvdW5kLHVzZUNNYXA6bnVsbH0pO1UuY01hcD10O1UudmVydGljYWw9VS5jTWFwLnZlcnRpY2FsfWNvbnN0IE09YXdhaXQgdGhpcy5leHRyYWN0RGF0YVN0cnVjdHVyZXModCxVKTt0aGlzLmV4dHJhY3RXaWR0aHModCxlLE0pO3JldHVybiBuZXcgRm9udChoLm5hbWUsdSxNKX1zdGF0aWMgYnVpbGRGb250UGF0aHMoZSx0LGksYSl7ZnVuY3Rpb24gYnVpbGRQYXRoKHQpe2NvbnN0IHM9YCR7ZS5sb2FkZWROYW1lfV9wYXRoXyR7dH1gO3RyeXtpZihlLnJlbmRlcmVyLmhhc0J1aWx0UGF0aCh0KSlyZXR1cm47aS5zZW5kKCJjb21tb25vYmoiLFtzLCJGb250UGF0aCIsZS5yZW5kZXJlci5nZXRQYXRoSnModCldKX1jYXRjaChlKXtpZihhLmlnbm9yZUVycm9ycyl7d2FybihgYnVpbGRGb250UGF0aHMgLSBpZ25vcmluZyAke3N9IGdseXBoOiAiJHtlfSIuYCk7cmV0dXJufXRocm93IGV9fWZvcihjb25zdCBlIG9mIHQpe2J1aWxkUGF0aChlLmZvbnRDaGFyKTtjb25zdCB0PWUuYWNjZW50O3Q/LmZvbnRDaGFyJiZidWlsZFBhdGgodC5mb250Q2hhcil9fXN0YXRpYyBnZXQgZmFsbGJhY2tGb250RGljdCgpe2NvbnN0IGU9bmV3IERpY3Q7ZS5zZXQoIkJhc2VGb250IixOYW1lLmdldCgiSGVsdmV0aWNhIikpO2Uuc2V0KCJUeXBlIixOYW1lLmdldCgiRmFsbGJhY2tUeXBlIikpO2Uuc2V0KCJTdWJ0eXBlIixOYW1lLmdldCgiRmFsbGJhY2tUeXBlIikpO2Uuc2V0KCJFbmNvZGluZyIsTmFtZS5nZXQoIldpbkFuc2lFbmNvZGluZyIpKTtyZXR1cm4gc2hhZG93KHRoaXMsImZhbGxiYWNrRm9udERpY3QiLGUpfX1jbGFzcyBUcmFuc2xhdGVkRm9udHtjb25zdHJ1Y3Rvcih7bG9hZGVkTmFtZTplLGZvbnQ6dCxkaWN0OmksZXZhbHVhdG9yT3B0aW9uczphfSl7dGhpcy5sb2FkZWROYW1lPWU7dGhpcy5mb250PXQ7dGhpcy5kaWN0PWk7dGhpcy5fZXZhbHVhdG9yT3B0aW9ucz1hfHxEczt0aGlzLnR5cGUzTG9hZGVkPW51bGw7dGhpcy50eXBlM0RlcGVuZGVuY2llcz10LmlzVHlwZTNGb250P25ldyBTZXQ6bnVsbDt0aGlzLnNlbnQ9ITF9c2VuZChlKXtpZighdGhpcy5zZW50KXt0aGlzLnNlbnQ9ITA7ZS5zZW5kKCJjb21tb25vYmoiLFt0aGlzLmxvYWRlZE5hbWUsIkZvbnQiLHRoaXMuZm9udC5leHBvcnREYXRhKHRoaXMuX2V2YWx1YXRvck9wdGlvbnMuZm9udEV4dHJhUHJvcGVydGllcyldKX19ZmFsbGJhY2soZSl7aWYodGhpcy5mb250LmRhdGEpe3RoaXMuZm9udC5kaXNhYmxlRm9udEZhY2U9ITA7UGFydGlhbEV2YWx1YXRvci5idWlsZEZvbnRQYXRocyh0aGlzLmZvbnQsdGhpcy5mb250LmdseXBoQ2FjaGVWYWx1ZXMsZSx0aGlzLl9ldmFsdWF0b3JPcHRpb25zKX19bG9hZFR5cGUzRGF0YShlLHQsaSl7aWYodGhpcy50eXBlM0xvYWRlZClyZXR1cm4gdGhpcy50eXBlM0xvYWRlZDtpZighdGhpcy5mb250LmlzVHlwZTNGb250KXRocm93IG5ldyBFcnJvcigiTXVzdCBiZSBhIFR5cGUzIGZvbnQuIik7Y29uc3QgYT1lLmNsb25lKHtpZ25vcmVFcnJvcnM6ITF9KTthLnBhcnNpbmdUeXBlM0ZvbnQ9ITA7Y29uc3Qgcz1uZXcgUmVmU2V0KGUudHlwZTNGb250UmVmcyk7dGhpcy5kaWN0Lm9iaklkJiYhcy5oYXModGhpcy5kaWN0Lm9iaklkKSYmcy5wdXQodGhpcy5kaWN0Lm9iaklkKTthLnR5cGUzRm9udFJlZnM9cztjb25zdCByPXRoaXMuZm9udCxuPXRoaXMudHlwZTNEZXBlbmRlbmNpZXM7bGV0IG89UHJvbWlzZS5yZXNvbHZlKCk7Y29uc3QgZz10aGlzLmRpY3QuZ2V0KCJDaGFyUHJvY3MiKSxjPXRoaXMuZGljdC5nZXQoIlJlc291cmNlcyIpfHx0LEM9T2JqZWN0LmNyZWF0ZShudWxsKSxoPVV0aWwubm9ybWFsaXplUmVjdChyLmJib3h8fFswLDAsMCwwXSksbD1oWzJdLWhbMF0sUT1oWzNdLWhbMV0sRT1NYXRoLmh5cG90KGwsUSk7Zm9yKGNvbnN0IGUgb2YgZy5nZXRLZXlzKCkpbz1vLnRoZW4oKCgpPT57Y29uc3QgdD1nLmdldChlKSxzPW5ldyBPcGVyYXRvckxpc3Q7cmV0dXJuIGEuZ2V0T3BlcmF0b3JMaXN0KHtzdHJlYW06dCx0YXNrOmkscmVzb3VyY2VzOmMsb3BlcmF0b3JMaXN0OnN9KS50aGVuKCgoKT0+e3MuZm5BcnJheVswXT09PUVlJiZ0aGlzLl9yZW1vdmVUeXBlM0NvbG9yT3BlcmF0b3JzKHMsRSk7Q1tlXT1zLmdldElSKCk7Zm9yKGNvbnN0IGUgb2Ygcy5kZXBlbmRlbmNpZXMpbi5hZGQoZSl9KSkuY2F0Y2goKGZ1bmN0aW9uKHQpe3dhcm4oYFR5cGUzIGZvbnQgcmVzb3VyY2UgIiR7ZX0iIGlzIG5vdCBhdmFpbGFibGUuYCk7Y29uc3QgaT1uZXcgT3BlcmF0b3JMaXN0O0NbZV09aS5nZXRJUigpfSkpfSkpO3RoaXMudHlwZTNMb2FkZWQ9by50aGVuKCgoKT0+e3IuY2hhclByb2NPcGVyYXRvckxpc3Q9QztpZih0aGlzLl9iYm94KXtyLmlzQ2hhckJCb3g9ITA7ci5iYm94PXRoaXMuX2Jib3h9fSkpO3JldHVybiB0aGlzLnR5cGUzTG9hZGVkfV9yZW1vdmVUeXBlM0NvbG9yT3BlcmF0b3JzKGUsdD1OYU4pe2NvbnN0IGk9VXRpbC5ub3JtYWxpemVSZWN0KGUuYXJnc0FycmF5WzBdLnNsaWNlKDIpKSxhPWlbMl0taVswXSxzPWlbM10taVsxXSxyPU1hdGguaHlwb3QoYSxzKTtpZigwPT09YXx8MD09PXMpe2UuZm5BcnJheS5zcGxpY2UoMCwxKTtlLmFyZ3NBcnJheS5zcGxpY2UoMCwxKX1lbHNlIGlmKDA9PT10fHxNYXRoLnJvdW5kKHIvdCk+PTEwKXt0aGlzLl9iYm94fHwodGhpcy5fYmJveD1bMS8wLDEvMCwtMS8wLC0xLzBdKTt0aGlzLl9iYm94WzBdPU1hdGgubWluKHRoaXMuX2Jib3hbMF0saVswXSk7dGhpcy5fYmJveFsxXT1NYXRoLm1pbih0aGlzLl9iYm94WzFdLGlbMV0pO3RoaXMuX2Jib3hbMl09TWF0aC5tYXgodGhpcy5fYmJveFsyXSxpWzJdKTt0aGlzLl9iYm94WzNdPU1hdGgubWF4KHRoaXMuX2Jib3hbM10saVszXSl9bGV0IG49MCxvPWUubGVuZ3RoO2Zvcig7bjxvOyl7c3dpdGNoKGUuZm5BcnJheVtuXSl7Y2FzZSBFZTpicmVhaztjYXNlIHVlOmNhc2UgZGU6Y2FzZSBmZTpjYXNlIHBlOmNhc2UgbWU6Y2FzZSB5ZTpjYXNlIHdlOmNhc2UgYmU6Y2FzZSBEZTpjYXNlIEZlOmNhc2UgU2U6Y2FzZSBrZTpjYXNlIE5lOmNhc2Uga0E6ZS5mbkFycmF5LnNwbGljZShuLDEpO2UuYXJnc0FycmF5LnNwbGljZShuLDEpO28tLTtjb250aW51ZTtjYXNlIFJBOmNvbnN0W3RdPWUuYXJnc0FycmF5W25dO2xldCBpPTAsYT10Lmxlbmd0aDtmb3IoO2k8YTspe2NvbnN0W2VdPXRbaV07c3dpdGNoKGUpe2Nhc2UiVFIiOmNhc2UiVFIyIjpjYXNlIkhUIjpjYXNlIkJHIjpjYXNlIkJHMiI6Y2FzZSJVQ1IiOmNhc2UiVUNSMiI6dC5zcGxpY2UoaSwxKTthLS07Y29udGludWV9aSsrfX1uKyt9fX1jbGFzcyBTdGF0ZU1hbmFnZXJ7Y29uc3RydWN0b3IoZT1uZXcgRXZhbFN0YXRlKXt0aGlzLnN0YXRlPWU7dGhpcy5zdGF0ZVN0YWNrPVtdfXNhdmUoKXtjb25zdCBlPXRoaXMuc3RhdGU7dGhpcy5zdGF0ZVN0YWNrLnB1c2godGhpcy5zdGF0ZSk7dGhpcy5zdGF0ZT1lLmNsb25lKCl9cmVzdG9yZSgpe2NvbnN0IGU9dGhpcy5zdGF0ZVN0YWNrLnBvcCgpO2UmJih0aGlzLnN0YXRlPWUpfXRyYW5zZm9ybShlKXt0aGlzLnN0YXRlLmN0bT1VdGlsLnRyYW5zZm9ybSh0aGlzLnN0YXRlLmN0bSxlKX19Y2xhc3MgVGV4dFN0YXRle2NvbnN0cnVjdG9yKCl7dGhpcy5jdG09bmV3IEZsb2F0MzJBcnJheShpKTt0aGlzLmZvbnROYW1lPW51bGw7dGhpcy5mb250U2l6ZT0wO3RoaXMubG9hZGVkTmFtZT1udWxsO3RoaXMuZm9udD1udWxsO3RoaXMuZm9udE1hdHJpeD1hO3RoaXMudGV4dE1hdHJpeD1pLnNsaWNlKCk7dGhpcy50ZXh0TGluZU1hdHJpeD1pLnNsaWNlKCk7dGhpcy5jaGFyU3BhY2luZz0wO3RoaXMud29yZFNwYWNpbmc9MDt0aGlzLmxlYWRpbmc9MDt0aGlzLnRleHRIU2NhbGU9MTt0aGlzLnRleHRSaXNlPTB9c2V0VGV4dE1hdHJpeChlLHQsaSxhLHMscil7Y29uc3Qgbj10aGlzLnRleHRNYXRyaXg7blswXT1lO25bMV09dDtuWzJdPWk7blszXT1hO25bNF09cztuWzVdPXJ9c2V0VGV4dExpbmVNYXRyaXgoZSx0LGksYSxzLHIpe2NvbnN0IG49dGhpcy50ZXh0TGluZU1hdHJpeDtuWzBdPWU7blsxXT10O25bMl09aTtuWzNdPWE7bls0XT1zO25bNV09cn10cmFuc2xhdGVUZXh0TWF0cml4KGUsdCl7Y29uc3QgaT10aGlzLnRleHRNYXRyaXg7aVs0XT1pWzBdKmUraVsyXSp0K2lbNF07aVs1XT1pWzFdKmUraVszXSp0K2lbNV19dHJhbnNsYXRlVGV4dExpbmVNYXRyaXgoZSx0KXtjb25zdCBpPXRoaXMudGV4dExpbmVNYXRyaXg7aVs0XT1pWzBdKmUraVsyXSp0K2lbNF07aVs1XT1pWzFdKmUraVszXSp0K2lbNV19Y2FycmlhZ2VSZXR1cm4oKXt0aGlzLnRyYW5zbGF0ZVRleHRMaW5lTWF0cml4KDAsLXRoaXMubGVhZGluZyk7dGhpcy50ZXh0TWF0cml4PXRoaXMudGV4dExpbmVNYXRyaXguc2xpY2UoKX1jbG9uZSgpe2NvbnN0IGU9T2JqZWN0LmNyZWF0ZSh0aGlzKTtlLnRleHRNYXRyaXg9dGhpcy50ZXh0TWF0cml4LnNsaWNlKCk7ZS50ZXh0TGluZU1hdHJpeD10aGlzLnRleHRMaW5lTWF0cml4LnNsaWNlKCk7ZS5mb250TWF0cml4PXRoaXMuZm9udE1hdHJpeC5zbGljZSgpO3JldHVybiBlfX1jbGFzcyBFdmFsU3RhdGV7Y29uc3RydWN0b3IoKXt0aGlzLmN0bT1uZXcgRmxvYXQzMkFycmF5KGkpO3RoaXMuZm9udD1udWxsO3RoaXMudGV4dFJlbmRlcmluZ01vZGU9eTt0aGlzLmZpbGxDb2xvclNwYWNlPUNvbG9yU3BhY2Uuc2luZ2xldG9ucy5ncmF5O3RoaXMuc3Ryb2tlQ29sb3JTcGFjZT1Db2xvclNwYWNlLnNpbmdsZXRvbnMuZ3JheX1jbG9uZSgpe3JldHVybiBPYmplY3QuY3JlYXRlKHRoaXMpfX1jbGFzcyBFdmFsdWF0b3JQcmVwcm9jZXNzb3J7c3RhdGljIGdldCBvcE1hcCgpe3JldHVybiBzaGFkb3codGhpcywib3BNYXAiLE9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShudWxsKSx7dzp7aWQ6d0EsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sSjp7aWQ6YkEsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sajp7aWQ6REEsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sTTp7aWQ6RkEsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sZDp7aWQ6U0EsbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX0scmk6e2lkOmtBLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LGk6e2lkOk5BLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LGdzOntpZDpSQSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxxOntpZDpHQSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxROntpZDp4QSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxjbTp7aWQ6VUEsbnVtQXJnczo2LHZhcmlhYmxlQXJnczohMX0sbTp7aWQ6TUEsbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX0sbDp7aWQ6TEEsbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX0sYzp7aWQ6SEEsbnVtQXJnczo2LHZhcmlhYmxlQXJnczohMX0sdjp7aWQ6SkEsbnVtQXJnczo0LHZhcmlhYmxlQXJnczohMX0seTp7aWQ6WUEsbnVtQXJnczo0LHZhcmlhYmxlQXJnczohMX0saDp7aWQ6dkEsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0scmU6e2lkOktBLG51bUFyZ3M6NCx2YXJpYWJsZUFyZ3M6ITF9LFM6e2lkOlRBLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LHM6e2lkOnFBLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LGY6e2lkOk9BLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LEY6e2lkOk9BLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LCJmKiI6e2lkOlBBLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LEI6e2lkOldBLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LCJCKiI6e2lkOmpBLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LGI6e2lkOlhBLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LCJiKiI6e2lkOlpBLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LG46e2lkOlZBLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LFc6e2lkOnpBLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LCJXKiI6e2lkOl9BLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LEJUOntpZDokQSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxFVDp7aWQ6QWUsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sVGM6e2lkOmVlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LFR3OntpZDp0ZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxUejp7aWQ6aWUsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sVEw6e2lkOmFlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LFRmOntpZDpzZSxudW1BcmdzOjIsdmFyaWFibGVBcmdzOiExfSxUcjp7aWQ6cmUsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sVHM6e2lkOm5lLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LFRkOntpZDpvZSxudW1BcmdzOjIsdmFyaWFibGVBcmdzOiExfSxURDp7aWQ6Z2UsbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX0sVG06e2lkOkllLG51bUFyZ3M6Nix2YXJpYWJsZUFyZ3M6ITF9LCJUKiI6e2lkOmNlLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LFRqOntpZDpDZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxUSjp7aWQ6aGUsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sIiciOntpZDpsZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSwnIic6e2lkOkJlLG51bUFyZ3M6Myx2YXJpYWJsZUFyZ3M6ITF9LGQwOntpZDpRZSxudW1BcmdzOjIsdmFyaWFibGVBcmdzOiExfSxkMTp7aWQ6RWUsbnVtQXJnczo2LHZhcmlhYmxlQXJnczohMX0sQ1M6e2lkOnVlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LGNzOntpZDpkZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxTQzp7aWQ6ZmUsbnVtQXJnczo0LHZhcmlhYmxlQXJnczohMH0sU0NOOntpZDpwZSxudW1BcmdzOjMzLHZhcmlhYmxlQXJnczohMH0sc2M6e2lkOm1lLG51bUFyZ3M6NCx2YXJpYWJsZUFyZ3M6ITB9LHNjbjp7aWQ6eWUsbnVtQXJnczozMyx2YXJpYWJsZUFyZ3M6ITB9LEc6e2lkOndlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LGc6e2lkOmJlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LFJHOntpZDpEZSxudW1BcmdzOjMsdmFyaWFibGVBcmdzOiExfSxyZzp7aWQ6RmUsbnVtQXJnczozLHZhcmlhYmxlQXJnczohMX0sSzp7aWQ6U2UsbnVtQXJnczo0LHZhcmlhYmxlQXJnczohMX0sazp7aWQ6a2UsbnVtQXJnczo0LHZhcmlhYmxlQXJnczohMX0sc2g6e2lkOk5lLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LEJJOntpZDpSZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxJRDp7aWQ6R2UsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sRUk6e2lkOnhlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LERvOntpZDpVZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxNUDp7aWQ6TWUsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sRFA6e2lkOkxlLG51bUFyZ3M6Mix2YXJpYWJsZUFyZ3M6ITF9LEJNQzp7aWQ6SGUsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sQkRDOntpZDpKZSxudW1BcmdzOjIsdmFyaWFibGVBcmdzOiExfSxFTUM6e2lkOlllLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LEJYOntpZDp2ZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxFWDp7aWQ6S2UsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sQk06bnVsbCxCRDpudWxsLHRydWU6bnVsbCxmYTpudWxsLGZhbDpudWxsLGZhbHM6bnVsbCxmYWxzZTpudWxsLG51Om51bGwsbnVsOm51bGwsbnVsbDpudWxsfSkpfXN0YXRpYyBNQVhfSU5WQUxJRF9QQVRIX09QUz0xMDtjb25zdHJ1Y3RvcihlLHQsaT1uZXcgU3RhdGVNYW5hZ2VyKXt0aGlzLnBhcnNlcj1uZXcgUGFyc2VyKHtsZXhlcjpuZXcgTGV4ZXIoZSxFdmFsdWF0b3JQcmVwcm9jZXNzb3Iub3BNYXApLHhyZWY6dH0pO3RoaXMuc3RhdGVNYW5hZ2VyPWk7dGhpcy5ub25Qcm9jZXNzZWRBcmdzPVtdO3RoaXMuX2lzUGF0aE9wPSExO3RoaXMuX251bUludmFsaWRQYXRoT1BTPTB9Z2V0IHNhdmVkU3RhdGVzRGVwdGgoKXtyZXR1cm4gdGhpcy5zdGF0ZU1hbmFnZXIuc3RhdGVTdGFjay5sZW5ndGh9cmVhZChlKXtsZXQgdD1lLmFyZ3M7Zm9yKDs7KXtjb25zdCBpPXRoaXMucGFyc2VyLmdldE9iaigpO2lmKGkgaW5zdGFuY2VvZiBDbWQpe2NvbnN0IGE9aS5jbWQscz1FdmFsdWF0b3JQcmVwcm9jZXNzb3Iub3BNYXBbYV07aWYoIXMpe3dhcm4oYFVua25vd24gY29tbWFuZCAiJHthfSIuYCk7Y29udGludWV9Y29uc3Qgcj1zLmlkLG49cy5udW1BcmdzO2xldCBvPW51bGwhPT10P3QubGVuZ3RoOjA7dGhpcy5faXNQYXRoT3B8fCh0aGlzLl9udW1JbnZhbGlkUGF0aE9QUz0wKTt0aGlzLl9pc1BhdGhPcD1yPj1NQSYmcjw9VkE7aWYocy52YXJpYWJsZUFyZ3Mpbz5uJiZpbmZvKGBDb21tYW5kICR7YX06IGV4cGVjdGVkIFswLCAke259XSBhcmdzLCBidXQgcmVjZWl2ZWQgJHtvfSBhcmdzLmApO2Vsc2V7aWYobyE9PW4pe2NvbnN0IGU9dGhpcy5ub25Qcm9jZXNzZWRBcmdzO2Zvcig7bz5uOyl7ZS5wdXNoKHQuc2hpZnQoKSk7by0tfWZvcig7bzxuJiYwIT09ZS5sZW5ndGg7KXtudWxsPT09dCYmKHQ9W10pO3QudW5zaGlmdChlLnBvcCgpKTtvKyt9fWlmKG88bil7Y29uc3QgZT1gY29tbWFuZCAke2F9OiBleHBlY3RlZCAke259IGFyZ3MsIGJ1dCByZWNlaXZlZCAke299IGFyZ3MuYDtpZih0aGlzLl9pc1BhdGhPcCYmKyt0aGlzLl9udW1JbnZhbGlkUGF0aE9QUz5FdmFsdWF0b3JQcmVwcm9jZXNzb3IuTUFYX0lOVkFMSURfUEFUSF9PUFMpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbnZhbGlkICR7ZX1gKTt3YXJuKGBTa2lwcGluZyAke2V9YCk7bnVsbCE9PXQmJih0Lmxlbmd0aD0wKTtjb250aW51ZX19dGhpcy5wcmVwcm9jZXNzQ29tbWFuZChyLHQpO2UuZm49cjtlLmFyZ3M9dDtyZXR1cm4hMH1pZihpPT09cHQpcmV0dXJuITE7aWYobnVsbCE9PWkpe251bGw9PT10JiYodD1bXSk7dC5wdXNoKGkpO2lmKHQubGVuZ3RoPjMzKXRocm93IG5ldyBGb3JtYXRFcnJvcigiVG9vIG1hbnkgYXJndW1lbnRzIil9fX1wcmVwcm9jZXNzQ29tbWFuZChlLHQpe3N3aXRjaCgwfGUpe2Nhc2UgR0E6dGhpcy5zdGF0ZU1hbmFnZXIuc2F2ZSgpO2JyZWFrO2Nhc2UgeEE6dGhpcy5zdGF0ZU1hbmFnZXIucmVzdG9yZSgpO2JyZWFrO2Nhc2UgVUE6dGhpcy5zdGF0ZU1hbmFnZXIudHJhbnNmb3JtKHQpfX19Y2xhc3MgRGVmYXVsdEFwcGVhcmFuY2VFdmFsdWF0b3IgZXh0ZW5kcyBFdmFsdWF0b3JQcmVwcm9jZXNzb3J7Y29uc3RydWN0b3IoZSl7c3VwZXIobmV3IFN0cmluZ1N0cmVhbShlKSl9cGFyc2UoKXtjb25zdCBlPXtmbjowLGFyZ3M6W119LHQ9e2ZvbnRTaXplOjAsZm9udE5hbWU6IiIsZm9udENvbG9yOm5ldyBVaW50OENsYW1wZWRBcnJheSgzKX07dHJ5e2Zvcig7Oyl7ZS5hcmdzLmxlbmd0aD0wO2lmKCF0aGlzLnJlYWQoZSkpYnJlYWs7aWYoMCE9PXRoaXMuc2F2ZWRTdGF0ZXNEZXB0aCljb250aW51ZTtjb25zdHtmbjppLGFyZ3M6YX09ZTtzd2l0Y2goMHxpKXtjYXNlIHNlOmNvbnN0W2UsaV09YTtlIGluc3RhbmNlb2YgTmFtZSYmKHQuZm9udE5hbWU9ZS5uYW1lKTsibnVtYmVyIj09dHlwZW9mIGkmJmk+MCYmKHQuZm9udFNpemU9aSk7YnJlYWs7Y2FzZSBGZTpDb2xvclNwYWNlLnNpbmdsZXRvbnMucmdiLmdldFJnYkl0ZW0oYSwwLHQuZm9udENvbG9yLDApO2JyZWFrO2Nhc2UgYmU6Q29sb3JTcGFjZS5zaW5nbGV0b25zLmdyYXkuZ2V0UmdiSXRlbShhLDAsdC5mb250Q29sb3IsMCk7YnJlYWs7Y2FzZSBrZTpDb2xvclNwYWNlLnNpbmdsZXRvbnMuY215ay5nZXRSZ2JJdGVtKGEsMCx0LmZvbnRDb2xvciwwKX19fWNhdGNoKGUpe3dhcm4oYHBhcnNlRGVmYXVsdEFwcGVhcmFuY2UgLSBpZ25vcmluZyBlcnJvcnM6ICIke2V9Ii5gKX1yZXR1cm4gdH19ZnVuY3Rpb24gcGFyc2VEZWZhdWx0QXBwZWFyYW5jZShlKXtyZXR1cm4gbmV3IERlZmF1bHRBcHBlYXJhbmNlRXZhbHVhdG9yKGUpLnBhcnNlKCl9Y2xhc3MgQXBwZWFyYW5jZVN0cmVhbUV2YWx1YXRvciBleHRlbmRzIEV2YWx1YXRvclByZXByb2Nlc3Nvcntjb25zdHJ1Y3RvcihlLHQsaSl7c3VwZXIoZSk7dGhpcy5zdHJlYW09ZTt0aGlzLmV2YWx1YXRvck9wdGlvbnM9dDt0aGlzLnhyZWY9aTt0aGlzLnJlc291cmNlcz1lLmRpY3Q/LmdldCgiUmVzb3VyY2VzIil9cGFyc2UoKXtjb25zdCBlPXtmbjowLGFyZ3M6W119O2xldCB0PXtzY2FsZUZhY3RvcjoxLGZvbnRTaXplOjAsZm9udE5hbWU6IiIsZm9udENvbG9yOm5ldyBVaW50OENsYW1wZWRBcnJheSgzKSxmaWxsQ29sb3JTcGFjZTpDb2xvclNwYWNlLnNpbmdsZXRvbnMuZ3JheX0saT0hMTtjb25zdCBhPVtdO3RyeXtmb3IoOzspe2UuYXJncy5sZW5ndGg9MDtpZihpfHwhdGhpcy5yZWFkKGUpKWJyZWFrO2NvbnN0e2ZuOnMsYXJnczpyfT1lO3N3aXRjaCgwfHMpe2Nhc2UgR0E6YS5wdXNoKHtzY2FsZUZhY3Rvcjp0LnNjYWxlRmFjdG9yLGZvbnRTaXplOnQuZm9udFNpemUsZm9udE5hbWU6dC5mb250TmFtZSxmb250Q29sb3I6dC5mb250Q29sb3Iuc2xpY2UoKSxmaWxsQ29sb3JTcGFjZTp0LmZpbGxDb2xvclNwYWNlfSk7YnJlYWs7Y2FzZSB4QTp0PWEucG9wKCl8fHQ7YnJlYWs7Y2FzZSBJZTp0LnNjYWxlRmFjdG9yKj1NYXRoLmh5cG90KHJbMF0sclsxXSk7YnJlYWs7Y2FzZSBzZTpjb25zdFtlLHNdPXI7ZSBpbnN0YW5jZW9mIE5hbWUmJih0LmZvbnROYW1lPWUubmFtZSk7Im51bWJlciI9PXR5cGVvZiBzJiZzPjAmJih0LmZvbnRTaXplPXMqdC5zY2FsZUZhY3Rvcik7YnJlYWs7Y2FzZSBkZTp0LmZpbGxDb2xvclNwYWNlPUNvbG9yU3BhY2UucGFyc2Uoe2NzOnJbMF0seHJlZjp0aGlzLnhyZWYscmVzb3VyY2VzOnRoaXMucmVzb3VyY2VzLHBkZkZ1bmN0aW9uRmFjdG9yeTp0aGlzLl9wZGZGdW5jdGlvbkZhY3RvcnksbG9jYWxDb2xvclNwYWNlQ2FjaGU6dGhpcy5fbG9jYWxDb2xvclNwYWNlQ2FjaGV9KTticmVhaztjYXNlIG1lOnQuZmlsbENvbG9yU3BhY2UuZ2V0UmdiSXRlbShyLDAsdC5mb250Q29sb3IsMCk7YnJlYWs7Y2FzZSBGZTpDb2xvclNwYWNlLnNpbmdsZXRvbnMucmdiLmdldFJnYkl0ZW0ociwwLHQuZm9udENvbG9yLDApO2JyZWFrO2Nhc2UgYmU6Q29sb3JTcGFjZS5zaW5nbGV0b25zLmdyYXkuZ2V0UmdiSXRlbShyLDAsdC5mb250Q29sb3IsMCk7YnJlYWs7Y2FzZSBrZTpDb2xvclNwYWNlLnNpbmdsZXRvbnMuY215ay5nZXRSZ2JJdGVtKHIsMCx0LmZvbnRDb2xvciwwKTticmVhaztjYXNlIENlOmNhc2UgaGU6Y2FzZSBsZTpjYXNlIEJlOmk9ITB9fX1jYXRjaChlKXt3YXJuKGBwYXJzZUFwcGVhcmFuY2VTdHJlYW0gLSBpZ25vcmluZyBlcnJvcnM6ICIke2V9Ii5gKX10aGlzLnN0cmVhbS5yZXNldCgpO2RlbGV0ZSB0LnNjYWxlRmFjdG9yO2RlbGV0ZSB0LmZpbGxDb2xvclNwYWNlO3JldHVybiB0fWdldCBfbG9jYWxDb2xvclNwYWNlQ2FjaGUoKXtyZXR1cm4gc2hhZG93KHRoaXMsIl9sb2NhbENvbG9yU3BhY2VDYWNoZSIsbmV3IExvY2FsQ29sb3JTcGFjZUNhY2hlKX1nZXQgX3BkZkZ1bmN0aW9uRmFjdG9yeSgpe3JldHVybiBzaGFkb3codGhpcywiX3BkZkZ1bmN0aW9uRmFjdG9yeSIsbmV3IFBERkZ1bmN0aW9uRmFjdG9yeSh7eHJlZjp0aGlzLnhyZWYsaXNFdmFsU3VwcG9ydGVkOnRoaXMuZXZhbHVhdG9yT3B0aW9ucy5pc0V2YWxTdXBwb3J0ZWR9KSl9fWZ1bmN0aW9uIGdldFBkZkNvbG9yKGUsdCl7aWYoZVswXT09PWVbMV0mJmVbMV09PT1lWzJdKXtyZXR1cm5gJHtudW1iZXJUb1N0cmluZyhlWzBdLzI1NSl9ICR7dD8iZyI6IkcifWB9cmV0dXJuIEFycmF5LmZyb20oZSwoZT0+bnVtYmVyVG9TdHJpbmcoZS8yNTUpKSkuam9pbigiICIpKyIgIisodD8icmciOiJSRyIpfWNsYXNzIEZha2VVbmljb2RlRm9udHtjb25zdHJ1Y3RvcihlLHQpe3RoaXMueHJlZj1lO3RoaXMud2lkdGhzPW51bGw7dGhpcy5maXJzdENoYXI9MS8wO3RoaXMubGFzdENoYXI9LTEvMDt0aGlzLmZvbnRGYW1pbHk9dDtjb25zdCBpPW5ldyBPZmZzY3JlZW5DYW52YXMoMSwxKTt0aGlzLmN0eE1lYXN1cmU9aS5nZXRDb250ZXh0KCIyZCIpO0Zha2VVbmljb2RlRm9udC5fZm9udE5hbWVJZHx8KEZha2VVbmljb2RlRm9udC5fZm9udE5hbWVJZD0xKTt0aGlzLmZvbnROYW1lPU5hbWUuZ2V0KGBJbnZhbGlkUERGanNGb250XyR7dH1fJHtGYWtlVW5pY29kZUZvbnQuX2ZvbnROYW1lSWQrK31gKX1nZXQgZm9udERlc2NyaXB0b3JSZWYoKXtpZighRmFrZVVuaWNvZGVGb250Ll9mb250RGVzY3JpcHRvclJlZil7Y29uc3QgZT1uZXcgRGljdCh0aGlzLnhyZWYpO2Uuc2V0KCJUeXBlIixOYW1lLmdldCgiRm9udERlc2NyaXB0b3IiKSk7ZS5zZXQoIkZvbnROYW1lIix0aGlzLmZvbnROYW1lKTtlLnNldCgiRm9udEZhbWlseSIsIk15cmlhZFBybyBSZWd1bGFyIik7ZS5zZXQoIkZvbnRCQm94IixbMCwwLDAsMF0pO2Uuc2V0KCJGb250U3RyZXRjaCIsTmFtZS5nZXQoIk5vcm1hbCIpKTtlLnNldCgiRm9udFdlaWdodCIsNDAwKTtlLnNldCgiSXRhbGljQW5nbGUiLDApO0Zha2VVbmljb2RlRm9udC5fZm9udERlc2NyaXB0b3JSZWY9dGhpcy54cmVmLmdldE5ld1BlcnNpc3RlbnRSZWYoZSl9cmV0dXJuIEZha2VVbmljb2RlRm9udC5fZm9udERlc2NyaXB0b3JSZWZ9Z2V0IGRlc2NlbmRhbnRGb250UmVmKCl7Y29uc3QgZT1uZXcgRGljdCh0aGlzLnhyZWYpO2Uuc2V0KCJCYXNlRm9udCIsdGhpcy5mb250TmFtZSk7ZS5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJGb250IikpO2Uuc2V0KCJTdWJ0eXBlIixOYW1lLmdldCgiQ0lERm9udFR5cGUwIikpO2Uuc2V0KCJDSURUb0dJRE1hcCIsTmFtZS5nZXQoIklkZW50aXR5IikpO2Uuc2V0KCJGaXJzdENoYXIiLHRoaXMuZmlyc3RDaGFyKTtlLnNldCgiTGFzdENoYXIiLHRoaXMubGFzdENoYXIpO2Uuc2V0KCJGb250RGVzY3JpcHRvciIsdGhpcy5mb250RGVzY3JpcHRvclJlZik7ZS5zZXQoIkRXIiwxZTMpO2NvbnN0IHQ9W10saT1bLi4udGhpcy53aWR0aHMuZW50cmllcygpXS5zb3J0KCk7bGV0IGE9bnVsbCxzPW51bGw7Zm9yKGNvbnN0W2Uscl1vZiBpKWlmKGEpaWYoZT09PWErcy5sZW5ndGgpcy5wdXNoKHIpO2Vsc2V7dC5wdXNoKGEscyk7YT1lO3M9W3JdfWVsc2V7YT1lO3M9W3JdfWEmJnQucHVzaChhLHMpO2Uuc2V0KCJXIix0KTtjb25zdCByPW5ldyBEaWN0KHRoaXMueHJlZik7ci5zZXQoIk9yZGVyaW5nIiwiSWRlbnRpdHkiKTtyLnNldCgiUmVnaXN0cnkiLCJBZG9iZSIpO3Iuc2V0KCJTdXBwbGVtZW50IiwwKTtlLnNldCgiQ0lEU3lzdGVtSW5mbyIscik7cmV0dXJuIHRoaXMueHJlZi5nZXROZXdQZXJzaXN0ZW50UmVmKGUpfWdldCBiYXNlRm9udFJlZigpe2NvbnN0IGU9bmV3IERpY3QodGhpcy54cmVmKTtlLnNldCgiQmFzZUZvbnQiLHRoaXMuZm9udE5hbWUpO2Uuc2V0KCJUeXBlIixOYW1lLmdldCgiRm9udCIpKTtlLnNldCgiU3VidHlwZSIsTmFtZS5nZXQoIlR5cGUwIikpO2Uuc2V0KCJFbmNvZGluZyIsTmFtZS5nZXQoIklkZW50aXR5LUgiKSk7ZS5zZXQoIkRlc2NlbmRhbnRGb250cyIsW3RoaXMuZGVzY2VuZGFudEZvbnRSZWZdKTtlLnNldCgiVG9Vbmljb2RlIixOYW1lLmdldCgiSWRlbnRpdHktSCIpKTtyZXR1cm4gdGhpcy54cmVmLmdldE5ld1BlcnNpc3RlbnRSZWYoZSl9Z2V0IHJlc291cmNlcygpe2NvbnN0IGU9bmV3IERpY3QodGhpcy54cmVmKSx0PW5ldyBEaWN0KHRoaXMueHJlZik7dC5zZXQodGhpcy5mb250TmFtZS5uYW1lLHRoaXMuYmFzZUZvbnRSZWYpO2Uuc2V0KCJGb250Iix0KTtyZXR1cm4gZX1fY3JlYXRlQ29udGV4dCgpe3RoaXMud2lkdGhzPW5ldyBNYXA7dGhpcy5jdHhNZWFzdXJlLmZvbnQ9YDEwMDBweCAke3RoaXMuZm9udEZhbWlseX1gO3JldHVybiB0aGlzLmN0eE1lYXN1cmV9Y3JlYXRlRm9udFJlc291cmNlcyhlKXtjb25zdCB0PXRoaXMuX2NyZWF0ZUNvbnRleHQoKTtmb3IoY29uc3QgaSBvZiBlLnNwbGl0KC9cclxuP3xcbi8pKWZvcihjb25zdCBlIG9mIGkuc3BsaXQoIiIpKXtjb25zdCBpPWUuY2hhckNvZGVBdCgwKTtpZih0aGlzLndpZHRocy5oYXMoaSkpY29udGludWU7Y29uc3QgYT10Lm1lYXN1cmVUZXh0KGUpLHM9TWF0aC5jZWlsKGEud2lkdGgpO3RoaXMud2lkdGhzLnNldChpLHMpO3RoaXMuZmlyc3RDaGFyPU1hdGgubWluKGksdGhpcy5maXJzdENoYXIpO3RoaXMubGFzdENoYXI9TWF0aC5tYXgoaSx0aGlzLmxhc3RDaGFyKX1yZXR1cm4gdGhpcy5yZXNvdXJjZXN9c3RhdGljIGdldEZpcnN0UG9zaXRpb25JbmZvKGUsdCxpKXtjb25zdFthLG4sbyxnXT1lO2xldCBjPW8tYSxDPWctbjt0JTE4MCE9MCYmKFtjLENdPVtDLGNdKTtjb25zdCBoPXMqaTtyZXR1cm57Y29vcmRzOlswLEMrcippLWhdLGJib3g6WzAsMCxjLENdLG1hdHJpeDowIT09dD9nZXRSb3RhdGlvbk1hdHJpeCh0LEMsaCk6dm9pZCAwfX1jcmVhdGVBcHBlYXJhbmNlKGUsdCxpLGEsbixvKXtjb25zdCBnPXRoaXMuX2NyZWF0ZUNvbnRleHQoKSxjPVtdO2xldCBDPS0xLzA7Zm9yKGNvbnN0IHQgb2YgZS5zcGxpdCgvXHJcbj98XG4vKSl7Yy5wdXNoKHQpO2NvbnN0IGU9Zy5tZWFzdXJlVGV4dCh0KS53aWR0aDtDPU1hdGgubWF4KEMsZSk7Zm9yKGNvbnN0IGUgb2YgY29kZVBvaW50SXRlcih0KSl7Y29uc3QgdD1TdHJpbmcuZnJvbUNvZGVQb2ludChlKTtsZXQgaT10aGlzLndpZHRocy5nZXQoZSk7aWYodm9pZCAwPT09aSl7Y29uc3QgYT1nLm1lYXN1cmVUZXh0KHQpO2k9TWF0aC5jZWlsKGEud2lkdGgpO3RoaXMud2lkdGhzLnNldChlLGkpO3RoaXMuZmlyc3RDaGFyPU1hdGgubWluKGUsdGhpcy5maXJzdENoYXIpO3RoaXMubGFzdENoYXI9TWF0aC5tYXgoZSx0aGlzLmxhc3RDaGFyKX19fUMqPWEvMWUzO2NvbnN0W2gsbCxRLEVdPXQ7bGV0IHU9US1oLGQ9RS1sO2klMTgwIT0wJiYoW3UsZF09W2QsdV0pO2xldCBmPTE7Qz51JiYoZj11L0MpO2xldCBwPTE7Y29uc3QgbT1zKmEseT1yKmEsdz1tKmMubGVuZ3RoO3c+ZCYmKHA9ZC93KTtjb25zdCBiPWEqTWF0aC5taW4oZixwKSxEPVsicSIsYDAgMCAke251bWJlclRvU3RyaW5nKHUpfSAke251bWJlclRvU3RyaW5nKGQpfSByZSBXIG5gLCJCVCIsYDEgMCAwIDEgMCAke251bWJlclRvU3RyaW5nKGQreSl9IFRtIDAgVGMgJHtnZXRQZGZDb2xvcihuLCEwKX1gLGAvJHt0aGlzLmZvbnROYW1lLm5hbWV9ICR7bnVtYmVyVG9TdHJpbmcoYil9IFRmYF0se3Jlc291cmNlczpGfT10aGlzO2lmKDEhPT0obz0ibnVtYmVyIj09dHlwZW9mIG8mJm8+PTAmJm88PTE/bzoxKSl7RC5wdXNoKCIvUjAgZ3MiKTtjb25zdCBlPW5ldyBEaWN0KHRoaXMueHJlZiksdD1uZXcgRGljdCh0aGlzLnhyZWYpO3Quc2V0KCJjYSIsbyk7dC5zZXQoIkNBIixvKTt0LnNldCgiVHlwZSIsTmFtZS5nZXQoIkV4dEdTdGF0ZSIpKTtlLnNldCgiUjAiLHQpO0Yuc2V0KCJFeHRHU3RhdGUiLGUpfWNvbnN0IFM9bnVtYmVyVG9TdHJpbmcobSk7Zm9yKGNvbnN0IGUgb2YgYylELnB1c2goYDAgLSR7U30gVGQgPCR7c3RyaW5nVG9VVEYxNkhleFN0cmluZyhlKX0+IFRqYCk7RC5wdXNoKCJFVCIsIlEiKTtjb25zdCBrPUQuam9pbigiXG4iKSxOPW5ldyBEaWN0KHRoaXMueHJlZik7Ti5zZXQoIlN1YnR5cGUiLE5hbWUuZ2V0KCJGb3JtIikpO04uc2V0KCJUeXBlIixOYW1lLmdldCgiWE9iamVjdCIpKTtOLnNldCgiQkJveCIsWzAsMCx1LGRdKTtOLnNldCgiTGVuZ3RoIixrLmxlbmd0aCk7Ti5zZXQoIlJlc291cmNlcyIsRik7aWYoaSl7Y29uc3QgZT1nZXRSb3RhdGlvbk1hdHJpeChpLHUsZCk7Ti5zZXQoIk1hdHJpeCIsZSl9Y29uc3QgUj1uZXcgU3RyaW5nU3RyZWFtKGspO1IuZGljdD1OO3JldHVybiBSfX1jbGFzcyBOYW1lT3JOdW1iZXJUcmVle2NvbnN0cnVjdG9yKGUsdCxpKXt0aGlzLmNvbnN0cnVjdG9yPT09TmFtZU9yTnVtYmVyVHJlZSYmdW5yZWFjaGFibGUoIkNhbm5vdCBpbml0aWFsaXplIE5hbWVPck51bWJlclRyZWUuIik7dGhpcy5yb290PWU7dGhpcy54cmVmPXQ7dGhpcy5fdHlwZT1pfWdldEFsbCgpe2NvbnN0IGU9bmV3IE1hcDtpZighdGhpcy5yb290KXJldHVybiBlO2NvbnN0IHQ9dGhpcy54cmVmLGk9bmV3IFJlZlNldDtpLnB1dCh0aGlzLnJvb3QpO2NvbnN0IGE9W3RoaXMucm9vdF07Zm9yKDthLmxlbmd0aD4wOyl7Y29uc3Qgcz10LmZldGNoSWZSZWYoYS5zaGlmdCgpKTtpZighKHMgaW5zdGFuY2VvZiBEaWN0KSljb250aW51ZTtpZihzLmhhcygiS2lkcyIpKXtjb25zdCBlPXMuZ2V0KCJLaWRzIik7aWYoIUFycmF5LmlzQXJyYXkoZSkpY29udGludWU7Zm9yKGNvbnN0IHQgb2YgZSl7aWYoaS5oYXModCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBEdXBsaWNhdGUgZW50cnkgaW4gIiR7dGhpcy5fdHlwZX0iIHRyZWUuYCk7YS5wdXNoKHQpO2kucHV0KHQpfWNvbnRpbnVlfWNvbnN0IHI9cy5nZXQodGhpcy5fdHlwZSk7aWYoQXJyYXkuaXNBcnJheShyKSlmb3IobGV0IGk9MCxhPXIubGVuZ3RoO2k8YTtpKz0yKWUuc2V0KHQuZmV0Y2hJZlJlZihyW2ldKSx0LmZldGNoSWZSZWYocltpKzFdKSl9cmV0dXJuIGV9Z2V0KGUpe2lmKCF0aGlzLnJvb3QpcmV0dXJuIG51bGw7Y29uc3QgdD10aGlzLnhyZWY7bGV0IGk9dC5mZXRjaElmUmVmKHRoaXMucm9vdCksYT0wO2Zvcig7aS5oYXMoIktpZHMiKTspe2lmKCsrYT4xMCl7d2FybihgU2VhcmNoIGRlcHRoIGxpbWl0IHJlYWNoZWQgZm9yICIke3RoaXMuX3R5cGV9IiB0cmVlLmApO3JldHVybiBudWxsfWNvbnN0IHM9aS5nZXQoIktpZHMiKTtpZighQXJyYXkuaXNBcnJheShzKSlyZXR1cm4gbnVsbDtsZXQgcj0wLG49cy5sZW5ndGgtMTtmb3IoO3I8PW47KXtjb25zdCBhPXIrbj4+MSxvPXQuZmV0Y2hJZlJlZihzW2FdKSxnPW8uZ2V0KCJMaW1pdHMiKTtpZihlPHQuZmV0Y2hJZlJlZihnWzBdKSluPWEtMTtlbHNle2lmKCEoZT50LmZldGNoSWZSZWYoZ1sxXSkpKXtpPW87YnJlYWt9cj1hKzF9fWlmKHI+bilyZXR1cm4gbnVsbH1jb25zdCBzPWkuZ2V0KHRoaXMuX3R5cGUpO2lmKEFycmF5LmlzQXJyYXkocykpe2xldCBpPTAsYT1zLmxlbmd0aC0yO2Zvcig7aTw9YTspe2NvbnN0IHI9aSthPj4xLG49cisoMSZyKSxvPXQuZmV0Y2hJZlJlZihzW25dKTtpZihlPG8pYT1uLTI7ZWxzZXtpZighKGU+bykpcmV0dXJuIHQuZmV0Y2hJZlJlZihzW24rMV0pO2k9bisyfX19cmV0dXJuIG51bGx9fWNsYXNzIE5hbWVUcmVlIGV4dGVuZHMgTmFtZU9yTnVtYmVyVHJlZXtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsdCwiTmFtZXMiKX19Y2xhc3MgTnVtYmVyVHJlZSBleHRlbmRzIE5hbWVPck51bWJlclRyZWV7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLHQsIk51bXMiKX19ZnVuY3Rpb24gY2xlYXJHbG9iYWxDYWNoZXMoKXshZnVuY3Rpb24gY2xlYXJQYXR0ZXJuQ2FjaGVzKCl7eWE9T2JqZWN0LmNyZWF0ZShudWxsKX0oKTshZnVuY3Rpb24gY2xlYXJQcmltaXRpdmVDYWNoZXMoKXttdD1PYmplY3QuY3JlYXRlKG51bGwpO3l0PU9iamVjdC5jcmVhdGUobnVsbCk7d3Q9T2JqZWN0LmNyZWF0ZShudWxsKX0oKTshZnVuY3Rpb24gY2xlYXJVbmljb2RlQ2FjaGVzKCl7SmkuY2xlYXIoKX0oKTtKcHhJbWFnZS5jbGVhbnVwKCl9ZnVuY3Rpb24gcGlja1BsYXRmb3JtSXRlbShlKXtyZXR1cm4gZS5oYXMoIlVGIik/ZS5nZXQoIlVGIik6ZS5oYXMoIkYiKT9lLmdldCgiRiIpOmUuaGFzKCJVbml4Iik/ZS5nZXQoIlVuaXgiKTplLmhhcygiTWFjIik/ZS5nZXQoIk1hYyIpOmUuaGFzKCJET1MiKT9lLmdldCgiRE9TIik6bnVsbH1jbGFzcyBGaWxlU3BlY3sjdz0hMTtjb25zdHJ1Y3RvcihlLHQsaT0hMSl7aWYoZSBpbnN0YW5jZW9mIERpY3Qpe3RoaXMueHJlZj10O3RoaXMucm9vdD1lO2UuaGFzKCJGUyIpJiYodGhpcy5mcz1lLmdldCgiRlMiKSk7dGhpcy5kZXNjcmlwdGlvbj1lLmhhcygiRGVzYyIpP3N0cmluZ1RvUERGU3RyaW5nKGUuZ2V0KCJEZXNjIikpOiIiO2UuaGFzKCJSRiIpJiZ3YXJuKCJSZWxhdGVkIGZpbGUgc3BlY2lmaWNhdGlvbnMgYXJlIG5vdCBzdXBwb3J0ZWQiKTtpfHwoZS5oYXMoIkVGIik/dGhpcy4jdz0hMDp3YXJuKCJOb24tZW1iZWRkZWQgZmlsZSBzcGVjaWZpY2F0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCIpKX19Z2V0IGZpbGVuYW1lKCl7aWYoIXRoaXMuX2ZpbGVuYW1lJiZ0aGlzLnJvb3Qpe2NvbnN0IGU9cGlja1BsYXRmb3JtSXRlbSh0aGlzLnJvb3QpfHwidW5uYW1lZCI7dGhpcy5fZmlsZW5hbWU9c3RyaW5nVG9QREZTdHJpbmcoZSkucmVwbGFjZUFsbCgiXFxcXCIsIlxcIikucmVwbGFjZUFsbCgiXFwvIiwiLyIpLnJlcGxhY2VBbGwoIlxcIiwiLyIpfXJldHVybiB0aGlzLl9maWxlbmFtZX1nZXQgY29udGVudCgpe2lmKCF0aGlzLiN3KXJldHVybiBudWxsOyF0aGlzLmNvbnRlbnRSZWYmJnRoaXMucm9vdCYmKHRoaXMuY29udGVudFJlZj1waWNrUGxhdGZvcm1JdGVtKHRoaXMucm9vdC5nZXQoIkVGIikpKTtsZXQgZT1udWxsO2lmKHRoaXMuY29udGVudFJlZil7Y29uc3QgdD10aGlzLnhyZWYuZmV0Y2hJZlJlZih0aGlzLmNvbnRlbnRSZWYpO3QgaW5zdGFuY2VvZiBCYXNlU3RyZWFtP2U9dC5nZXRCeXRlcygpOndhcm4oIkVtYmVkZGVkIGZpbGUgc3BlY2lmaWNhdGlvbiBwb2ludHMgdG8gbm9uLWV4aXN0aW5nL2ludmFsaWQgY29udGVudCIpfWVsc2Ugd2FybigiRW1iZWRkZWQgZmlsZSBzcGVjaWZpY2F0aW9uIGRvZXMgbm90IGhhdmUgYSBjb250ZW50Iik7cmV0dXJuIGV9Z2V0IHNlcmlhbGl6YWJsZSgpe3JldHVybntmaWxlbmFtZTp0aGlzLmZpbGVuYW1lLGNvbnRlbnQ6dGhpcy5jb250ZW50fX19Y29uc3QgTnM9MCxScz0tMixHcz0tMyx4cz0tNCxVcz0tNSxNcz0tNixMcz0tOTtmdW5jdGlvbiBpc1doaXRlc3BhY2UoZSx0KXtjb25zdCBpPWVbdF07cmV0dXJuIiAiPT09aXx8IlxuIj09PWl8fCJcciI9PT1pfHwiXHQiPT09aX1jbGFzcyBYTUxQYXJzZXJCYXNle19yZXNvbHZlRW50aXRpZXMoZSl7cmV0dXJuIGUucmVwbGFjZUFsbCgvJihbXjtdKyk7L2csKChlLHQpPT57aWYoIiN4Ij09PXQuc3Vic3RyaW5nKDAsMikpcmV0dXJuIFN0cmluZy5mcm9tQ29kZVBvaW50KHBhcnNlSW50KHQuc3Vic3RyaW5nKDIpLDE2KSk7aWYoIiMiPT09dC5zdWJzdHJpbmcoMCwxKSlyZXR1cm4gU3RyaW5nLmZyb21Db2RlUG9pbnQocGFyc2VJbnQodC5zdWJzdHJpbmcoMSksMTApKTtzd2l0Y2godCl7Y2FzZSJsdCI6cmV0dXJuIjwiO2Nhc2UiZ3QiOnJldHVybiI+IjtjYXNlImFtcCI6cmV0dXJuIiYiO2Nhc2UicXVvdCI6cmV0dXJuJyInO2Nhc2UiYXBvcyI6cmV0dXJuIicifXJldHVybiB0aGlzLm9uUmVzb2x2ZUVudGl0eSh0KX0pKX1fcGFyc2VDb250ZW50KGUsdCl7Y29uc3QgaT1bXTtsZXQgYT10O2Z1bmN0aW9uIHNraXBXcygpe2Zvcig7YTxlLmxlbmd0aCYmaXNXaGl0ZXNwYWNlKGUsYSk7KSsrYX1mb3IoO2E8ZS5sZW5ndGgmJiFpc1doaXRlc3BhY2UoZSxhKSYmIj4iIT09ZVthXSYmIi8iIT09ZVthXTspKythO2NvbnN0IHM9ZS5zdWJzdHJpbmcodCxhKTtza2lwV3MoKTtmb3IoO2E8ZS5sZW5ndGgmJiI+IiE9PWVbYV0mJiIvIiE9PWVbYV0mJiI/IiE9PWVbYV07KXtza2lwV3MoKTtsZXQgdD0iIixzPSIiO2Zvcig7YTxlLmxlbmd0aCYmIWlzV2hpdGVzcGFjZShlLGEpJiYiPSIhPT1lW2FdOyl7dCs9ZVthXTsrK2F9c2tpcFdzKCk7aWYoIj0iIT09ZVthXSlyZXR1cm4gbnVsbDsrK2E7c2tpcFdzKCk7Y29uc3Qgcj1lW2FdO2lmKCciJyE9PXImJiInIiE9PXIpcmV0dXJuIG51bGw7Y29uc3Qgbj1lLmluZGV4T2YociwrK2EpO2lmKG48MClyZXR1cm4gbnVsbDtzPWUuc3Vic3RyaW5nKGEsbik7aS5wdXNoKHtuYW1lOnQsdmFsdWU6dGhpcy5fcmVzb2x2ZUVudGl0aWVzKHMpfSk7YT1uKzE7c2tpcFdzKCl9cmV0dXJue25hbWU6cyxhdHRyaWJ1dGVzOmkscGFyc2VkOmEtdH19X3BhcnNlUHJvY2Vzc2luZ0luc3RydWN0aW9uKGUsdCl7bGV0IGk9dDtmb3IoO2k8ZS5sZW5ndGgmJiFpc1doaXRlc3BhY2UoZSxpKSYmIj4iIT09ZVtpXSYmIj8iIT09ZVtpXSYmIi8iIT09ZVtpXTspKytpO2NvbnN0IGE9ZS5zdWJzdHJpbmcodCxpKTshZnVuY3Rpb24gc2tpcFdzKCl7Zm9yKDtpPGUubGVuZ3RoJiZpc1doaXRlc3BhY2UoZSxpKTspKytpfSgpO2NvbnN0IHM9aTtmb3IoO2k8ZS5sZW5ndGgmJigiPyIhPT1lW2ldfHwiPiIhPT1lW2krMV0pOykrK2k7cmV0dXJue25hbWU6YSx2YWx1ZTplLnN1YnN0cmluZyhzLGkpLHBhcnNlZDppLXR9fXBhcnNlWG1sKGUpe2xldCB0PTA7Zm9yKDt0PGUubGVuZ3RoOyl7bGV0IGk9dDtpZigiPCI9PT1lW3RdKXsrK2k7bGV0IHQ7c3dpdGNoKGVbaV0pe2Nhc2UiLyI6KytpO3Q9ZS5pbmRleE9mKCI+IixpKTtpZih0PDApe3RoaXMub25FcnJvcihMcyk7cmV0dXJufXRoaXMub25FbmRFbGVtZW50KGUuc3Vic3RyaW5nKGksdCkpO2k9dCsxO2JyZWFrO2Nhc2UiPyI6KytpO2NvbnN0IGE9dGhpcy5fcGFyc2VQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oZSxpKTtpZigiPz4iIT09ZS5zdWJzdHJpbmcoaSthLnBhcnNlZCxpK2EucGFyc2VkKzIpKXt0aGlzLm9uRXJyb3IoR3MpO3JldHVybn10aGlzLm9uUGkoYS5uYW1lLGEudmFsdWUpO2krPWEucGFyc2VkKzI7YnJlYWs7Y2FzZSIhIjppZigiLS0iPT09ZS5zdWJzdHJpbmcoaSsxLGkrMykpe3Q9ZS5pbmRleE9mKCItLVx4M2UiLGkrMyk7aWYodDwwKXt0aGlzLm9uRXJyb3IoVXMpO3JldHVybn10aGlzLm9uQ29tbWVudChlLnN1YnN0cmluZyhpKzMsdCkpO2k9dCszfWVsc2UgaWYoIltDREFUQVsiPT09ZS5zdWJzdHJpbmcoaSsxLGkrOCkpe3Q9ZS5pbmRleE9mKCJdXT4iLGkrOCk7aWYodDwwKXt0aGlzLm9uRXJyb3IoUnMpO3JldHVybn10aGlzLm9uQ2RhdGEoZS5zdWJzdHJpbmcoaSs4LHQpKTtpPXQrM31lbHNle2lmKCJET0NUWVBFIiE9PWUuc3Vic3RyaW5nKGkrMSxpKzgpKXt0aGlzLm9uRXJyb3IoTXMpO3JldHVybn17Y29uc3QgYT1lLmluZGV4T2YoIlsiLGkrOCk7bGV0IHM9ITE7dD1lLmluZGV4T2YoIj4iLGkrOCk7aWYodDwwKXt0aGlzLm9uRXJyb3IoeHMpO3JldHVybn1pZihhPjAmJnQ+YSl7dD1lLmluZGV4T2YoIl0+IixpKzgpO2lmKHQ8MCl7dGhpcy5vbkVycm9yKHhzKTtyZXR1cm59cz0hMH1jb25zdCByPWUuc3Vic3RyaW5nKGkrOCx0KyhzPzE6MCkpO3RoaXMub25Eb2N0eXBlKHIpO2k9dCsocz8yOjEpfX1icmVhaztkZWZhdWx0OmNvbnN0IHM9dGhpcy5fcGFyc2VDb250ZW50KGUsaSk7aWYobnVsbD09PXMpe3RoaXMub25FcnJvcihNcyk7cmV0dXJufWxldCByPSExO2lmKCIvPiI9PT1lLnN1YnN0cmluZyhpK3MucGFyc2VkLGkrcy5wYXJzZWQrMikpcj0hMDtlbHNlIGlmKCI+IiE9PWUuc3Vic3RyaW5nKGkrcy5wYXJzZWQsaStzLnBhcnNlZCsxKSl7dGhpcy5vbkVycm9yKExzKTtyZXR1cm59dGhpcy5vbkJlZ2luRWxlbWVudChzLm5hbWUscy5hdHRyaWJ1dGVzLHIpO2krPXMucGFyc2VkKyhyPzI6MSl9fWVsc2V7Zm9yKDtpPGUubGVuZ3RoJiYiPCIhPT1lW2ldOylpKys7Y29uc3QgYT1lLnN1YnN0cmluZyh0LGkpO3RoaXMub25UZXh0KHRoaXMuX3Jlc29sdmVFbnRpdGllcyhhKSl9dD1pfX1vblJlc29sdmVFbnRpdHkoZSl7cmV0dXJuYCYke2V9O2B9b25QaShlLHQpe31vbkNvbW1lbnQoZSl7fW9uQ2RhdGEoZSl7fW9uRG9jdHlwZShlKXt9b25UZXh0KGUpe31vbkJlZ2luRWxlbWVudChlLHQsaSl7fW9uRW5kRWxlbWVudChlKXt9b25FcnJvcihlKXt9fWNsYXNzIFNpbXBsZURPTU5vZGV7Y29uc3RydWN0b3IoZSx0KXt0aGlzLm5vZGVOYW1lPWU7dGhpcy5ub2RlVmFsdWU9dDtPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywicGFyZW50Tm9kZSIse3ZhbHVlOm51bGwsd3JpdGFibGU6ITB9KX1nZXQgZmlyc3RDaGlsZCgpe3JldHVybiB0aGlzLmNoaWxkTm9kZXM/LlswXX1nZXQgbmV4dFNpYmxpbmcoKXtjb25zdCBlPXRoaXMucGFyZW50Tm9kZS5jaGlsZE5vZGVzO2lmKCFlKXJldHVybjtjb25zdCB0PWUuaW5kZXhPZih0aGlzKTtyZXR1cm4tMSE9PXQ/ZVt0KzFdOnZvaWQgMH1nZXQgdGV4dENvbnRlbnQoKXtyZXR1cm4gdGhpcy5jaGlsZE5vZGVzP3RoaXMuY2hpbGROb2Rlcy5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBlLnRleHRDb250ZW50fSkpLmpvaW4oIiIpOnRoaXMubm9kZVZhbHVlfHwiIn1nZXQgY2hpbGRyZW4oKXtyZXR1cm4gdGhpcy5jaGlsZE5vZGVzfHxbXX1oYXNDaGlsZE5vZGVzKCl7cmV0dXJuIHRoaXMuY2hpbGROb2Rlcz8ubGVuZ3RoPjB9c2VhcmNoTm9kZShlLHQpe2lmKHQ+PWUubGVuZ3RoKXJldHVybiB0aGlzO2NvbnN0IGk9ZVt0XTtpZihpLm5hbWUuc3RhcnRzV2l0aCgiIyIpJiZ0PGUubGVuZ3RoLTEpcmV0dXJuIHRoaXMuc2VhcmNoTm9kZShlLHQrMSk7Y29uc3QgYT1bXTtsZXQgcz10aGlzO2Zvcig7Oyl7aWYoaS5uYW1lPT09cy5ub2RlTmFtZSl7aWYoMCE9PWkucG9zKXtpZigwPT09YS5sZW5ndGgpcmV0dXJuIG51bGw7e2NvbnN0W3JdPWEucG9wKCk7bGV0IG49MDtmb3IoY29uc3QgYSBvZiByLmNoaWxkTm9kZXMpaWYoaS5uYW1lPT09YS5ub2RlTmFtZSl7aWYobj09PWkucG9zKXJldHVybiBhLnNlYXJjaE5vZGUoZSx0KzEpO24rK31yZXR1cm4gcy5zZWFyY2hOb2RlKGUsdCsxKX19e2NvbnN0IGk9cy5zZWFyY2hOb2RlKGUsdCsxKTtpZihudWxsIT09aSlyZXR1cm4gaX19aWYocy5jaGlsZE5vZGVzPy5sZW5ndGg+MCl7YS5wdXNoKFtzLDBdKTtzPXMuY2hpbGROb2Rlc1swXX1lbHNle2lmKDA9PT1hLmxlbmd0aClyZXR1cm4gbnVsbDtmb3IoOzAhPT1hLmxlbmd0aDspe2NvbnN0W2UsdF09YS5wb3AoKSxpPXQrMTtpZihpPGUuY2hpbGROb2Rlcy5sZW5ndGgpe2EucHVzaChbZSxpXSk7cz1lLmNoaWxkTm9kZXNbaV07YnJlYWt9fWlmKDA9PT1hLmxlbmd0aClyZXR1cm4gbnVsbH19fWR1bXAoZSl7aWYoIiN0ZXh0IiE9PXRoaXMubm9kZU5hbWUpe2UucHVzaChgPCR7dGhpcy5ub2RlTmFtZX1gKTtpZih0aGlzLmF0dHJpYnV0ZXMpZm9yKGNvbnN0IHQgb2YgdGhpcy5hdHRyaWJ1dGVzKWUucHVzaChgICR7dC5uYW1lfT0iJHtlbmNvZGVUb1htbFN0cmluZyh0LnZhbHVlKX0iYCk7aWYodGhpcy5oYXNDaGlsZE5vZGVzKCkpe2UucHVzaCgiPiIpO2Zvcihjb25zdCB0IG9mIHRoaXMuY2hpbGROb2Rlcyl0LmR1bXAoZSk7ZS5wdXNoKGA8LyR7dGhpcy5ub2RlTmFtZX0+YCl9ZWxzZSB0aGlzLm5vZGVWYWx1ZT9lLnB1c2goYD4ke2VuY29kZVRvWG1sU3RyaW5nKHRoaXMubm9kZVZhbHVlKX08LyR7dGhpcy5ub2RlTmFtZX0+YCk6ZS5wdXNoKCIvPiIpfWVsc2UgZS5wdXNoKGVuY29kZVRvWG1sU3RyaW5nKHRoaXMubm9kZVZhbHVlKSl9fWNsYXNzIFNpbXBsZVhNTFBhcnNlciBleHRlbmRzIFhNTFBhcnNlckJhc2V7Y29uc3RydWN0b3Ioe2hhc0F0dHJpYnV0ZXM6ZT0hMSxsb3dlckNhc2VOYW1lOnQ9ITF9KXtzdXBlcigpO3RoaXMuX2N1cnJlbnRGcmFnbWVudD1udWxsO3RoaXMuX3N0YWNrPW51bGw7dGhpcy5fZXJyb3JDb2RlPU5zO3RoaXMuX2hhc0F0dHJpYnV0ZXM9ZTt0aGlzLl9sb3dlckNhc2VOYW1lPXR9cGFyc2VGcm9tU3RyaW5nKGUpe3RoaXMuX2N1cnJlbnRGcmFnbWVudD1bXTt0aGlzLl9zdGFjaz1bXTt0aGlzLl9lcnJvckNvZGU9TnM7dGhpcy5wYXJzZVhtbChlKTtpZih0aGlzLl9lcnJvckNvZGUhPT1OcylyZXR1cm47Y29uc3RbdF09dGhpcy5fY3VycmVudEZyYWdtZW50O3JldHVybiB0P3tkb2N1bWVudEVsZW1lbnQ6dH06dm9pZCAwfW9uVGV4dChlKXtpZihmdW5jdGlvbiBpc1doaXRlc3BhY2VTdHJpbmcoZSl7Zm9yKGxldCB0PTAsaT1lLmxlbmd0aDt0PGk7dCsrKWlmKCFpc1doaXRlc3BhY2UoZSx0KSlyZXR1cm4hMTtyZXR1cm4hMH0oZSkpcmV0dXJuO2NvbnN0IHQ9bmV3IFNpbXBsZURPTU5vZGUoIiN0ZXh0IixlKTt0aGlzLl9jdXJyZW50RnJhZ21lbnQucHVzaCh0KX1vbkNkYXRhKGUpe2NvbnN0IHQ9bmV3IFNpbXBsZURPTU5vZGUoIiN0ZXh0IixlKTt0aGlzLl9jdXJyZW50RnJhZ21lbnQucHVzaCh0KX1vbkJlZ2luRWxlbWVudChlLHQsaSl7dGhpcy5fbG93ZXJDYXNlTmFtZSYmKGU9ZS50b0xvd2VyQ2FzZSgpKTtjb25zdCBhPW5ldyBTaW1wbGVET01Ob2RlKGUpO2EuY2hpbGROb2Rlcz1bXTt0aGlzLl9oYXNBdHRyaWJ1dGVzJiYoYS5hdHRyaWJ1dGVzPXQpO3RoaXMuX2N1cnJlbnRGcmFnbWVudC5wdXNoKGEpO2lmKCFpKXt0aGlzLl9zdGFjay5wdXNoKHRoaXMuX2N1cnJlbnRGcmFnbWVudCk7dGhpcy5fY3VycmVudEZyYWdtZW50PWEuY2hpbGROb2Rlc319b25FbmRFbGVtZW50KGUpe3RoaXMuX2N1cnJlbnRGcmFnbWVudD10aGlzLl9zdGFjay5wb3AoKXx8W107Y29uc3QgdD10aGlzLl9jdXJyZW50RnJhZ21lbnQuYXQoLTEpO2lmKCF0KXJldHVybiBudWxsO2Zvcihjb25zdCBlIG9mIHQuY2hpbGROb2RlcyllLnBhcmVudE5vZGU9dDtyZXR1cm4gdH1vbkVycm9yKGUpe3RoaXMuX2Vycm9yQ29kZT1lfX1jbGFzcyBNZXRhZGF0YVBhcnNlcntjb25zdHJ1Y3RvcihlKXtlPXRoaXMuX3JlcGFpcihlKTtjb25zdCB0PW5ldyBTaW1wbGVYTUxQYXJzZXIoe2xvd2VyQ2FzZU5hbWU6ITB9KS5wYXJzZUZyb21TdHJpbmcoZSk7dGhpcy5fbWV0YWRhdGFNYXA9bmV3IE1hcDt0aGlzLl9kYXRhPWU7dCYmdGhpcy5fcGFyc2UodCl9X3JlcGFpcihlKXtyZXR1cm4gZS5yZXBsYWNlKC9eW148XSsvLCIiKS5yZXBsYWNlQWxsKC8+XFwzNzZcXDM3NyhbXjxdKykvZywoZnVuY3Rpb24oZSx0KXtjb25zdCBpPXQucmVwbGFjZUFsbCgvXFwoWzAtM10pKFswLTddKShbMC03XSkvZywoZnVuY3Rpb24oZSx0LGksYSl7cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoNjQqdCs4KmkrMSphKX0pKS5yZXBsYWNlQWxsKC8mKGFtcHxhcG9zfGd0fGx0fHF1b3QpOy9nLChmdW5jdGlvbihlLHQpe3N3aXRjaCh0KXtjYXNlImFtcCI6cmV0dXJuIiYiO2Nhc2UiYXBvcyI6cmV0dXJuIiciO2Nhc2UiZ3QiOnJldHVybiI+IjtjYXNlImx0IjpyZXR1cm4iPCI7Y2FzZSJxdW90IjpyZXR1cm4nIid9dGhyb3cgbmV3IEVycm9yKGBfcmVwYWlyOiAke3R9IGlzbid0IGRlZmluZWQuYCl9KSksYT1bIj4iXTtmb3IobGV0IGU9MCx0PWkubGVuZ3RoO2U8dDtlKz0yKXtjb25zdCB0PTI1NippLmNoYXJDb2RlQXQoZSkraS5jaGFyQ29kZUF0KGUrMSk7dD49MzImJnQ8MTI3JiY2MCE9PXQmJjYyIT09dCYmMzghPT10P2EucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKHQpKTphLnB1c2goIiYjeCIrKDY1NTM2K3QpLnRvU3RyaW5nKDE2KS5zdWJzdHJpbmcoMSkrIjsiKX1yZXR1cm4gYS5qb2luKCIiKX0pKX1fZ2V0U2VxdWVuY2UoZSl7Y29uc3QgdD1lLm5vZGVOYW1lO3JldHVybiJyZGY6YmFnIiE9PXQmJiJyZGY6c2VxIiE9PXQmJiJyZGY6YWx0IiE9PXQ/bnVsbDplLmNoaWxkTm9kZXMuZmlsdGVyKChlPT4icmRmOmxpIj09PWUubm9kZU5hbWUpKX1fcGFyc2VBcnJheShlKXtpZighZS5oYXNDaGlsZE5vZGVzKCkpcmV0dXJuO2NvbnN0W3RdPWUuY2hpbGROb2RlcyxpPXRoaXMuX2dldFNlcXVlbmNlKHQpfHxbXTt0aGlzLl9tZXRhZGF0YU1hcC5zZXQoZS5ub2RlTmFtZSxpLm1hcCgoZT0+ZS50ZXh0Q29udGVudC50cmltKCkpKSl9X3BhcnNlKGUpe2xldCB0PWUuZG9jdW1lbnRFbGVtZW50O2lmKCJyZGY6cmRmIiE9PXQubm9kZU5hbWUpe3Q9dC5maXJzdENoaWxkO2Zvcig7dCYmInJkZjpyZGYiIT09dC5ub2RlTmFtZTspdD10Lm5leHRTaWJsaW5nfWlmKHQmJiJyZGY6cmRmIj09PXQubm9kZU5hbWUmJnQuaGFzQ2hpbGROb2RlcygpKWZvcihjb25zdCBlIG9mIHQuY2hpbGROb2RlcylpZigicmRmOmRlc2NyaXB0aW9uIj09PWUubm9kZU5hbWUpZm9yKGNvbnN0IHQgb2YgZS5jaGlsZE5vZGVzKXtjb25zdCBlPXQubm9kZU5hbWU7c3dpdGNoKGUpe2Nhc2UiI3RleHQiOmNvbnRpbnVlO2Nhc2UiZGM6Y3JlYXRvciI6Y2FzZSJkYzpzdWJqZWN0Ijp0aGlzLl9wYXJzZUFycmF5KHQpO2NvbnRpbnVlfXRoaXMuX21ldGFkYXRhTWFwLnNldChlLHQudGV4dENvbnRlbnQudHJpbSgpKX19Z2V0IHNlcmlhbGl6YWJsZSgpe3JldHVybntwYXJzZWREYXRhOnRoaXMuX21ldGFkYXRhTWFwLHJhd0RhdGE6dGhpcy5fZGF0YX19fWNsYXNzIERlY3J5cHRTdHJlYW0gZXh0ZW5kcyBEZWNvZGVTdHJlYW17Y29uc3RydWN0b3IoZSx0LGkpe3N1cGVyKHQpO3RoaXMuc3RyPWU7dGhpcy5kaWN0PWUuZGljdDt0aGlzLmRlY3J5cHQ9aTt0aGlzLm5leHRDaHVuaz1udWxsO3RoaXMuaW5pdGlhbGl6ZWQ9ITF9cmVhZEJsb2NrKCl7bGV0IGU7aWYodGhpcy5pbml0aWFsaXplZCllPXRoaXMubmV4dENodW5rO2Vsc2V7ZT10aGlzLnN0ci5nZXRCeXRlcyg1MTIpO3RoaXMuaW5pdGlhbGl6ZWQ9ITB9aWYoIWV8fDA9PT1lLmxlbmd0aCl7dGhpcy5lb2Y9ITA7cmV0dXJufXRoaXMubmV4dENodW5rPXRoaXMuc3RyLmdldEJ5dGVzKDUxMik7Y29uc3QgdD10aGlzLm5leHRDaHVuaz8ubGVuZ3RoPjA7ZT0oMCx0aGlzLmRlY3J5cHQpKGUsIXQpO2NvbnN0IGk9dGhpcy5idWZmZXJMZW5ndGgsYT1pK2UubGVuZ3RoO3RoaXMuZW5zdXJlQnVmZmVyKGEpLnNldChlLGkpO3RoaXMuYnVmZmVyTGVuZ3RoPWF9fWNsYXNzIEFSQ0ZvdXJDaXBoZXJ7Y29uc3RydWN0b3IoZSl7dGhpcy5hPTA7dGhpcy5iPTA7Y29uc3QgdD1uZXcgVWludDhBcnJheSgyNTYpLGk9ZS5sZW5ndGg7Zm9yKGxldCBlPTA7ZTwyNTY7KytlKXRbZV09ZTtmb3IobGV0IGE9MCxzPTA7YTwyNTY7KythKXtjb25zdCByPXRbYV07cz1zK3IrZVthJWldJjI1NTt0W2FdPXRbc107dFtzXT1yfXRoaXMucz10fWVuY3J5cHRCbG9jayhlKXtsZXQgdD10aGlzLmEsaT10aGlzLmI7Y29uc3QgYT10aGlzLnMscz1lLmxlbmd0aCxyPW5ldyBVaW50OEFycmF5KHMpO2ZvcihsZXQgbj0wO248czsrK24pe3Q9dCsxJjI1NTtjb25zdCBzPWFbdF07aT1pK3MmMjU1O2NvbnN0IG89YVtpXTthW3RdPW87YVtpXT1zO3Jbbl09ZVtuXV5hW3MrbyYyNTVdfXRoaXMuYT10O3RoaXMuYj1pO3JldHVybiByfWRlY3J5cHRCbG9jayhlKXtyZXR1cm4gdGhpcy5lbmNyeXB0QmxvY2soZSl9ZW5jcnlwdChlKXtyZXR1cm4gdGhpcy5lbmNyeXB0QmxvY2soZSl9fWNvbnN0IEhzPWZ1bmN0aW9uIGNhbGN1bGF0ZU1ENUNsb3N1cmUoKXtjb25zdCBlPW5ldyBVaW50OEFycmF5KFs3LDEyLDE3LDIyLDcsMTIsMTcsMjIsNywxMiwxNywyMiw3LDEyLDE3LDIyLDUsOSwxNCwyMCw1LDksMTQsMjAsNSw5LDE0LDIwLDUsOSwxNCwyMCw0LDExLDE2LDIzLDQsMTEsMTYsMjMsNCwxMSwxNiwyMyw0LDExLDE2LDIzLDYsMTAsMTUsMjEsNiwxMCwxNSwyMSw2LDEwLDE1LDIxLDYsMTAsMTUsMjFdKSx0PW5ldyBJbnQzMkFycmF5KFstNjgwODc2OTM2LC0zODk1NjQ1ODYsNjA2MTA1ODE5LC0xMDQ0NTI1MzMwLC0xNzY0MTg4OTcsMTIwMDA4MDQyNiwtMTQ3MzIzMTM0MSwtNDU3MDU5ODMsMTc3MDAzNTQxNiwtMTk1ODQxNDQxNywtNDIwNjMsLTE5OTA0MDQxNjIsMTgwNDYwMzY4MiwtNDAzNDExMDEsLTE1MDIwMDIyOTAsMTIzNjUzNTMyOSwtMTY1Nzk2NTEwLC0xMDY5NTAxNjMyLDY0MzcxNzcxMywtMzczODk3MzAyLC03MDE1NTg2OTEsMzgwMTYwODMsLTY2MDQ3ODMzNSwtNDA1NTM3ODQ4LDU2ODQ0NjQzOCwtMTAxOTgwMzY5MCwtMTg3MzYzOTYxLDExNjM1MzE1MDEsLTE0NDQ2ODE0NjcsLTUxNDAzNzg0LDE3MzUzMjg0NzMsLTE5MjY2MDc3MzQsLTM3ODU1OCwtMjAyMjU3NDQ2MywxODM5MDMwNTYyLC0zNTMwOTU1NiwtMTUzMDk5MjA2MCwxMjcyODkzMzUzLC0xNTU0OTc2MzIsLTEwOTQ3MzA2NDAsNjgxMjc5MTc0LC0zNTg1MzcyMjIsLTcyMjUyMTk3OSw3NjAyOTE4OSwtNjQwMzY0NDg3LC00MjE4MTU4MzUsNTMwNzQyNTIwLC05OTUzMzg2NTEsLTE5ODYzMDg0NCwxMTI2ODkxNDE1LC0xNDE2MzU0OTA1LC01NzQzNDA1NSwxNzAwNDg1NTcxLC0xODk0OTg2NjA2LC0xMDUxNTIzLC0yMDU0OTIyNzk5LDE4NzMzMTMzNTksLTMwNjExNzQ0LC0xNTYwMTk4MzgwLDEzMDkxNTE2NDksLTE0NTUyMzA3MCwtMTEyMDIxMDM3OSw3MTg3ODcyNTksLTM0MzQ4NTU1MV0pO3JldHVybiBmdW5jdGlvbiBoYXNoKGksYSxzKXtsZXQgcj0xNzMyNTg0MTkzLG49LTI3MTczMzg3OSxvPS0xNzMyNTg0MTk0LGc9MjcxNzMzODc4O2NvbnN0IGM9cys3MiYtNjQsQz1uZXcgVWludDhBcnJheShjKTtsZXQgaCxsO2ZvcihoPTA7aDxzOysraClDW2hdPWlbYSsrXTtDW2grK109MTI4O2NvbnN0IFE9Yy04O2Zvcig7aDxROylDW2grK109MDtDW2grK109czw8MyYyNTU7Q1toKytdPXM+PjUmMjU1O0NbaCsrXT1zPj4xMyYyNTU7Q1toKytdPXM+PjIxJjI1NTtDW2grK109cz4+PjI5JjI1NTtDW2grK109MDtDW2grK109MDtDW2grK109MDtjb25zdCBFPW5ldyBJbnQzMkFycmF5KDE2KTtmb3IoaD0wO2g8Yzspe2ZvcihsPTA7bDwxNjsrK2wsaCs9NClFW2xdPUNbaF18Q1toKzFdPDw4fENbaCsyXTw8MTZ8Q1toKzNdPDwyNDtsZXQgaSxhLHM9cixjPW4sUT1vLHU9Zztmb3IobD0wO2w8NjQ7KytsKXtpZihsPDE2KXtpPWMmUXx+YyZ1O2E9bH1lbHNlIGlmKGw8MzIpe2k9dSZjfH51JlE7YT01KmwrMSYxNX1lbHNlIGlmKGw8NDgpe2k9Y15RXnU7YT0zKmwrNSYxNX1lbHNle2k9UV4oY3x+dSk7YT03KmwmMTV9Y29uc3Qgcj11LG49cytpK3RbbF0rRVthXXwwLG89ZVtsXTt1PVE7UT1jO2M9Yysobjw8b3xuPj4+MzItbyl8MDtzPXJ9cj1yK3N8MDtuPW4rY3wwO289bytRfDA7Zz1nK3V8MH1yZXR1cm4gbmV3IFVpbnQ4QXJyYXkoWzI1NSZyLHI+PjgmMjU1LHI+PjE2JjI1NSxyPj4+MjQmMjU1LDI1NSZuLG4+PjgmMjU1LG4+PjE2JjI1NSxuPj4+MjQmMjU1LDI1NSZvLG8+PjgmMjU1LG8+PjE2JjI1NSxvPj4+MjQmMjU1LDI1NSZnLGc+PjgmMjU1LGc+PjE2JjI1NSxnPj4+MjQmMjU1XSl9fSgpO2NsYXNzIFdvcmQ2NHtjb25zdHJ1Y3RvcihlLHQpe3RoaXMuaGlnaD0wfGU7dGhpcy5sb3c9MHx0fWFuZChlKXt0aGlzLmhpZ2gmPWUuaGlnaDt0aGlzLmxvdyY9ZS5sb3d9eG9yKGUpe3RoaXMuaGlnaF49ZS5oaWdoO3RoaXMubG93Xj1lLmxvd31vcihlKXt0aGlzLmhpZ2h8PWUuaGlnaDt0aGlzLmxvd3w9ZS5sb3d9c2hpZnRSaWdodChlKXtpZihlPj0zMil7dGhpcy5sb3c9dGhpcy5oaWdoPj4+ZS0zMnwwO3RoaXMuaGlnaD0wfWVsc2V7dGhpcy5sb3c9dGhpcy5sb3c+Pj5lfHRoaXMuaGlnaDw8MzItZTt0aGlzLmhpZ2g9dGhpcy5oaWdoPj4+ZXwwfX1zaGlmdExlZnQoZSl7aWYoZT49MzIpe3RoaXMuaGlnaD10aGlzLmxvdzw8ZS0zMjt0aGlzLmxvdz0wfWVsc2V7dGhpcy5oaWdoPXRoaXMuaGlnaDw8ZXx0aGlzLmxvdz4+PjMyLWU7dGhpcy5sb3c8PD1lfX1yb3RhdGVSaWdodChlKXtsZXQgdCxpO2lmKDMyJmUpe2k9dGhpcy5sb3c7dD10aGlzLmhpZ2h9ZWxzZXt0PXRoaXMubG93O2k9dGhpcy5oaWdofWUmPTMxO3RoaXMubG93PXQ+Pj5lfGk8PDMyLWU7dGhpcy5oaWdoPWk+Pj5lfHQ8PDMyLWV9bm90KCl7dGhpcy5oaWdoPX50aGlzLmhpZ2g7dGhpcy5sb3c9fnRoaXMubG93fWFkZChlKXtjb25zdCB0PSh0aGlzLmxvdz4+PjApKyhlLmxvdz4+PjApO2xldCBpPSh0aGlzLmhpZ2g+Pj4wKSsoZS5oaWdoPj4+MCk7dD40Mjk0OTY3Mjk1JiYoaSs9MSk7dGhpcy5sb3c9MHx0O3RoaXMuaGlnaD0wfGl9Y29weVRvKGUsdCl7ZVt0XT10aGlzLmhpZ2g+Pj4yNCYyNTU7ZVt0KzFdPXRoaXMuaGlnaD4+MTYmMjU1O2VbdCsyXT10aGlzLmhpZ2g+PjgmMjU1O2VbdCszXT0yNTUmdGhpcy5oaWdoO2VbdCs0XT10aGlzLmxvdz4+PjI0JjI1NTtlW3QrNV09dGhpcy5sb3c+PjE2JjI1NTtlW3QrNl09dGhpcy5sb3c+PjgmMjU1O2VbdCs3XT0yNTUmdGhpcy5sb3d9YXNzaWduKGUpe3RoaXMuaGlnaD1lLmhpZ2g7dGhpcy5sb3c9ZS5sb3d9fWNvbnN0IEpzPWZ1bmN0aW9uIGNhbGN1bGF0ZVNIQTI1NkNsb3N1cmUoKXtmdW5jdGlvbiByb3RyKGUsdCl7cmV0dXJuIGU+Pj50fGU8PDMyLXR9ZnVuY3Rpb24gY2goZSx0LGkpe3JldHVybiBlJnRefmUmaX1mdW5jdGlvbiBtYWooZSx0LGkpe3JldHVybiBlJnReZSZpXnQmaX1mdW5jdGlvbiBzaWdtYShlKXtyZXR1cm4gcm90cihlLDIpXnJvdHIoZSwxMylecm90cihlLDIyKX1mdW5jdGlvbiBzaWdtYVByaW1lKGUpe3JldHVybiByb3RyKGUsNilecm90cihlLDExKV5yb3RyKGUsMjUpfWZ1bmN0aW9uIGxpdHRsZVNpZ21hKGUpe3JldHVybiByb3RyKGUsNylecm90cihlLDE4KV5lPj4+M31jb25zdCBlPVsxMTE2MzUyNDA4LDE4OTk0NDc0NDEsMzA0OTMyMzQ3MSwzOTIxMDA5NTczLDk2MTk4NzE2MywxNTA4OTcwOTkzLDI0NTM2MzU3NDgsMjg3MDc2MzIyMSwzNjI0MzgxMDgwLDMxMDU5ODQwMSw2MDcyMjUyNzgsMTQyNjg4MTk4NywxOTI1MDc4Mzg4LDIxNjIwNzgyMDYsMjYxNDg4ODEwMywzMjQ4MjIyNTgwLDM4MzUzOTA0MDEsNDAyMjIyNDc3NCwyNjQzNDcwNzgsNjA0ODA3NjI4LDc3MDI1NTk4MywxMjQ5MTUwMTIyLDE1NTUwODE2OTIsMTk5NjA2NDk4NiwyNTU0MjIwODgyLDI4MjE4MzQzNDksMjk1Mjk5NjgwOCwzMjEwMzEzNjcxLDMzMzY1NzE4OTEsMzU4NDUyODcxMSwxMTM5MjY5OTMsMzM4MjQxODk1LDY2NjMwNzIwNSw3NzM1Mjk5MTIsMTI5NDc1NzM3MiwxMzk2MTgyMjkxLDE2OTUxODM3MDAsMTk4NjY2MTA1MSwyMTc3MDI2MzUwLDI0NTY5NTYwMzcsMjczMDQ4NTkyMSwyODIwMzAyNDExLDMyNTk3MzA4MDAsMzM0NTc2NDc3MSwzNTE2MDY1ODE3LDM2MDAzNTI4MDQsNDA5NDU3MTkwOSwyNzU0MjMzNDQsNDMwMjI3NzM0LDUwNjk0ODYxNiw2NTkwNjA1NTYsODgzOTk3ODc3LDk1ODEzOTU3MSwxMzIyODIyMjE4LDE1MzcwMDIwNjMsMTc0Nzg3Mzc3OSwxOTU1NTYyMjIyLDIwMjQxMDQ4MTUsMjIyNzczMDQ1MiwyMzYxODUyNDI0LDI0Mjg0MzY0NzQsMjc1NjczNDE4NywzMjA0MDMxNDc5LDMzMjkzMjUyOThdO3JldHVybiBmdW5jdGlvbiBoYXNoKHQsaSxhKXtsZXQgcz0xNzc5MDMzNzAzLHI9MzE0NDEzNDI3NyxuPTEwMTM5MDQyNDIsbz0yNzczNDgwNzYyLGc9MTM1OTg5MzExOSxjPTI2MDA4MjI5MjQsQz01Mjg3MzQ2MzUsaD0xNTQxNDU5MjI1O2NvbnN0IGw9NjQqTWF0aC5jZWlsKChhKzkpLzY0KSxRPW5ldyBVaW50OEFycmF5KGwpO2xldCBFLHU7Zm9yKEU9MDtFPGE7KytFKVFbRV09dFtpKytdO1FbRSsrXT0xMjg7Y29uc3QgZD1sLTg7Zm9yKDtFPGQ7KVFbRSsrXT0wO1FbRSsrXT0wO1FbRSsrXT0wO1FbRSsrXT0wO1FbRSsrXT1hPj4+MjkmMjU1O1FbRSsrXT1hPj4yMSYyNTU7UVtFKytdPWE+PjEzJjI1NTtRW0UrK109YT4+NSYyNTU7UVtFKytdPWE8PDMmMjU1O2NvbnN0IGY9bmV3IFVpbnQzMkFycmF5KDY0KTtmb3IoRT0wO0U8bDspe2Zvcih1PTA7dTwxNjsrK3Upe2ZbdV09UVtFXTw8MjR8UVtFKzFdPDwxNnxRW0UrMl08PDh8UVtFKzNdO0UrPTR9Zm9yKHU9MTY7dTw2NDsrK3UpZlt1XT0ocm90cihwPWZbdS0yXSwxNylecm90cihwLDE5KV5wPj4+MTApK2ZbdS03XStsaXR0bGVTaWdtYShmW3UtMTVdKStmW3UtMTZdfDA7bGV0IHQsaSxhPXMsbD1yLGQ9bixtPW8seT1nLHc9YyxiPUMsRD1oO2Zvcih1PTA7dTw2NDsrK3Upe3Q9RCtzaWdtYVByaW1lKHkpK2NoKHksdyxiKStlW3VdK2ZbdV07aT1zaWdtYShhKSttYWooYSxsLGQpO0Q9YjtiPXc7dz15O3k9bSt0fDA7bT1kO2Q9bDtsPWE7YT10K2l8MH1zPXMrYXwwO3I9citsfDA7bj1uK2R8MDtvPW8rbXwwO2c9Zyt5fDA7Yz1jK3d8MDtDPUMrYnwwO2g9aCtEfDB9dmFyIHA7cmV0dXJuIG5ldyBVaW50OEFycmF5KFtzPj4yNCYyNTUscz4+MTYmMjU1LHM+PjgmMjU1LDI1NSZzLHI+PjI0JjI1NSxyPj4xNiYyNTUscj4+OCYyNTUsMjU1JnIsbj4+MjQmMjU1LG4+PjE2JjI1NSxuPj44JjI1NSwyNTUmbixvPj4yNCYyNTUsbz4+MTYmMjU1LG8+PjgmMjU1LDI1NSZvLGc+PjI0JjI1NSxnPj4xNiYyNTUsZz4+OCYyNTUsMjU1JmcsYz4+MjQmMjU1LGM+PjE2JjI1NSxjPj44JjI1NSwyNTUmYyxDPj4yNCYyNTUsQz4+MTYmMjU1LEM+PjgmMjU1LDI1NSZDLGg+PjI0JjI1NSxoPj4xNiYyNTUsaD4+OCYyNTUsMjU1JmhdKX19KCksWXM9ZnVuY3Rpb24gY2FsY3VsYXRlU0hBNTEyQ2xvc3VyZSgpe2Z1bmN0aW9uIGNoKGUsdCxpLGEscyl7ZS5hc3NpZ24odCk7ZS5hbmQoaSk7cy5hc3NpZ24odCk7cy5ub3QoKTtzLmFuZChhKTtlLnhvcihzKX1mdW5jdGlvbiBtYWooZSx0LGksYSxzKXtlLmFzc2lnbih0KTtlLmFuZChpKTtzLmFzc2lnbih0KTtzLmFuZChhKTtlLnhvcihzKTtzLmFzc2lnbihpKTtzLmFuZChhKTtlLnhvcihzKX1mdW5jdGlvbiBzaWdtYShlLHQsaSl7ZS5hc3NpZ24odCk7ZS5yb3RhdGVSaWdodCgyOCk7aS5hc3NpZ24odCk7aS5yb3RhdGVSaWdodCgzNCk7ZS54b3IoaSk7aS5hc3NpZ24odCk7aS5yb3RhdGVSaWdodCgzOSk7ZS54b3IoaSl9ZnVuY3Rpb24gc2lnbWFQcmltZShlLHQsaSl7ZS5hc3NpZ24odCk7ZS5yb3RhdGVSaWdodCgxNCk7aS5hc3NpZ24odCk7aS5yb3RhdGVSaWdodCgxOCk7ZS54b3IoaSk7aS5hc3NpZ24odCk7aS5yb3RhdGVSaWdodCg0MSk7ZS54b3IoaSl9ZnVuY3Rpb24gbGl0dGxlU2lnbWEoZSx0LGkpe2UuYXNzaWduKHQpO2Uucm90YXRlUmlnaHQoMSk7aS5hc3NpZ24odCk7aS5yb3RhdGVSaWdodCg4KTtlLnhvcihpKTtpLmFzc2lnbih0KTtpLnNoaWZ0UmlnaHQoNyk7ZS54b3IoaSl9ZnVuY3Rpb24gbGl0dGxlU2lnbWFQcmltZShlLHQsaSl7ZS5hc3NpZ24odCk7ZS5yb3RhdGVSaWdodCgxOSk7aS5hc3NpZ24odCk7aS5yb3RhdGVSaWdodCg2MSk7ZS54b3IoaSk7aS5hc3NpZ24odCk7aS5zaGlmdFJpZ2h0KDYpO2UueG9yKGkpfWNvbnN0IGU9W25ldyBXb3JkNjQoMTExNjM1MjQwOCwzNjA5NzY3NDU4KSxuZXcgV29yZDY0KDE4OTk0NDc0NDEsNjAyODkxNzI1KSxuZXcgV29yZDY0KDMwNDkzMjM0NzEsMzk2NDQ4NDM5OSksbmV3IFdvcmQ2NCgzOTIxMDA5NTczLDIxNzMyOTU1NDgpLG5ldyBXb3JkNjQoOTYxOTg3MTYzLDQwODE2Mjg0NzIpLG5ldyBXb3JkNjQoMTUwODk3MDk5MywzMDUzODM0MjY1KSxuZXcgV29yZDY0KDI0NTM2MzU3NDgsMjkzNzY3MTU3OSksbmV3IFdvcmQ2NCgyODcwNzYzMjIxLDM2NjQ2MDk1NjApLG5ldyBXb3JkNjQoMzYyNDM4MTA4MCwyNzM0ODgzMzk0KSxuZXcgV29yZDY0KDMxMDU5ODQwMSwxMTY0OTk2NTQyKSxuZXcgV29yZDY0KDYwNzIyNTI3OCwxMzIzNjEwNzY0KSxuZXcgV29yZDY0KDE0MjY4ODE5ODcsMzU5MDMwNDk5NCksbmV3IFdvcmQ2NCgxOTI1MDc4Mzg4LDQwNjgxODIzODMpLG5ldyBXb3JkNjQoMjE2MjA3ODIwNiw5OTEzMzYxMTMpLG5ldyBXb3JkNjQoMjYxNDg4ODEwMyw2MzM4MDMzMTcpLG5ldyBXb3JkNjQoMzI0ODIyMjU4MCwzNDc5Nzc0ODY4KSxuZXcgV29yZDY0KDM4MzUzOTA0MDEsMjY2NjYxMzQ1OCksbmV3IFdvcmQ2NCg0MDIyMjI0Nzc0LDk0NDcxMTEzOSksbmV3IFdvcmQ2NCgyNjQzNDcwNzgsMjM0MTI2Mjc3MyksbmV3IFdvcmQ2NCg2MDQ4MDc2MjgsMjAwNzgwMDkzMyksbmV3IFdvcmQ2NCg3NzAyNTU5ODMsMTQ5NTk5MDkwMSksbmV3IFdvcmQ2NCgxMjQ5MTUwMTIyLDE4NTY0MzEyMzUpLG5ldyBXb3JkNjQoMTU1NTA4MTY5MiwzMTc1MjE4MTMyKSxuZXcgV29yZDY0KDE5OTYwNjQ5ODYsMjE5ODk1MDgzNyksbmV3IFdvcmQ2NCgyNTU0MjIwODgyLDM5OTk3MTkzMzkpLG5ldyBXb3JkNjQoMjgyMTgzNDM0OSw3NjY3ODQwMTYpLG5ldyBXb3JkNjQoMjk1Mjk5NjgwOCwyNTY2NTk0ODc5KSxuZXcgV29yZDY0KDMyMTAzMTM2NzEsMzIwMzMzNzk1NiksbmV3IFdvcmQ2NCgzMzM2NTcxODkxLDEwMzQ0NTcwMjYpLG5ldyBXb3JkNjQoMzU4NDUyODcxMSwyNDY2OTQ4OTAxKSxuZXcgV29yZDY0KDExMzkyNjk5MywzNzU4MzI2MzgzKSxuZXcgV29yZDY0KDMzODI0MTg5NSwxNjg3MTc5MzYpLG5ldyBXb3JkNjQoNjY2MzA3MjA1LDExODgxNzk5NjQpLG5ldyBXb3JkNjQoNzczNTI5OTEyLDE1NDYwNDU3MzQpLG5ldyBXb3JkNjQoMTI5NDc1NzM3MiwxNTIyODA1NDg1KSxuZXcgV29yZDY0KDEzOTYxODIyOTEsMjY0MzgzMzgyMyksbmV3IFdvcmQ2NCgxNjk1MTgzNzAwLDIzNDM1MjczOTApLG5ldyBXb3JkNjQoMTk4NjY2MTA1MSwxMDE0NDc3NDgwKSxuZXcgV29yZDY0KDIxNzcwMjYzNTAsMTIwNjc1OTE0MiksbmV3IFdvcmQ2NCgyNDU2OTU2MDM3LDM0NDA3NzYyNyksbmV3IFdvcmQ2NCgyNzMwNDg1OTIxLDEyOTA4NjM0NjApLG5ldyBXb3JkNjQoMjgyMDMwMjQxMSwzMTU4NDU0MjczKSxuZXcgV29yZDY0KDMyNTk3MzA4MDAsMzUwNTk1MjY1NyksbmV3IFdvcmQ2NCgzMzQ1NzY0NzcxLDEwNjIxNzAwOCksbmV3IFdvcmQ2NCgzNTE2MDY1ODE3LDM2MDYwMDgzNDQpLG5ldyBXb3JkNjQoMzYwMDM1MjgwNCwxNDMyNzI1Nzc2KSxuZXcgV29yZDY0KDQwOTQ1NzE5MDksMTQ2NzAzMTU5NCksbmV3IFdvcmQ2NCgyNzU0MjMzNDQsODUxMTY5NzIwKSxuZXcgV29yZDY0KDQzMDIyNzczNCwzMTAwODIzNzUyKSxuZXcgV29yZDY0KDUwNjk0ODYxNiwxMzYzMjU4MTk1KSxuZXcgV29yZDY0KDY1OTA2MDU1NiwzNzUwNjg1NTkzKSxuZXcgV29yZDY0KDg4Mzk5Nzg3NywzNzg1MDUwMjgwKSxuZXcgV29yZDY0KDk1ODEzOTU3MSwzMzE4MzA3NDI3KSxuZXcgV29yZDY0KDEzMjI4MjIyMTgsMzgxMjcyMzQwMyksbmV3IFdvcmQ2NCgxNTM3MDAyMDYzLDIwMDMwMzQ5OTUpLG5ldyBXb3JkNjQoMTc0Nzg3Mzc3OSwzNjAyMDM2ODk5KSxuZXcgV29yZDY0KDE5NTU1NjIyMjIsMTU3NTk5MDAxMiksbmV3IFdvcmQ2NCgyMDI0MTA0ODE1LDExMjU1OTI5MjgpLG5ldyBXb3JkNjQoMjIyNzczMDQ1MiwyNzE2OTA0MzA2KSxuZXcgV29yZDY0KDIzNjE4NTI0MjQsNDQyNzc2MDQ0KSxuZXcgV29yZDY0KDI0Mjg0MzY0NzQsNTkzNjk4MzQ0KSxuZXcgV29yZDY0KDI3NTY3MzQxODcsMzczMzExMDI0OSksbmV3IFdvcmQ2NCgzMjA0MDMxNDc5LDI5OTkzNTE1NzMpLG5ldyBXb3JkNjQoMzMyOTMyNTI5OCwzODE1OTIwNDI3KSxuZXcgV29yZDY0KDMzOTE1Njk2MTQsMzkyODM4MzkwMCksbmV3IFdvcmQ2NCgzNTE1MjY3MjcxLDU2NjI4MDcxMSksbmV3IFdvcmQ2NCgzOTQwMTg3NjA2LDM0NTQwNjk1MzQpLG5ldyBXb3JkNjQoNDExODYzMDI3MSw0MDAwMjM5OTkyKSxuZXcgV29yZDY0KDExNjQxODQ3NCwxOTE0MTM4NTU0KSxuZXcgV29yZDY0KDE3NDI5MjQyMSwyNzMxMDU1MjcwKSxuZXcgV29yZDY0KDI4OTM4MDM1NiwzMjAzOTkzMDA2KSxuZXcgV29yZDY0KDQ2MDM5MzI2OSwzMjA2MjAzMTUpLG5ldyBXb3JkNjQoNjg1NDcxNzMzLDU4NzQ5NjgzNiksbmV3IFdvcmQ2NCg4NTIxNDI5NzEsMTA4Njc5Mjg1MSksbmV3IFdvcmQ2NCgxMDE3MDM2Mjk4LDM2NTU0MzEwMCksbmV3IFdvcmQ2NCgxMTI2MDAwNTgwLDI2MTgyOTc2NzYpLG5ldyBXb3JkNjQoMTI4ODAzMzQ3MCwzNDA5ODU1MTU4KSxuZXcgV29yZDY0KDE1MDE1MDU5NDgsNDIzNDUwOTg2NiksbmV3IFdvcmQ2NCgxNjA3MTY3OTE1LDk4NzE2NzQ2OCksbmV3IFdvcmQ2NCgxODE2NDAyMzE2LDEyNDYxODk1OTEpXTtyZXR1cm4gZnVuY3Rpb24gaGFzaCh0LGksYSxzPSExKXtsZXQgcixuLG8sZyxjLEMsaCxsO2lmKHMpe3I9bmV3IFdvcmQ2NCgzNDE4MDcwMzY1LDMyMzgzNzEwMzIpO249bmV3IFdvcmQ2NCgxNjU0MjcwMjUwLDkxNDE1MDY2Myk7bz1uZXcgV29yZDY0KDI0Mzg1MjkzNzAsODEyNzAyOTk5KTtnPW5ldyBXb3JkNjQoMzU1NDYyMzYwLDQxNDQ5MTI2OTcpO2M9bmV3IFdvcmQ2NCgxNzMxNDA1NDE1LDQyOTA3NzU4NTcpO0M9bmV3IFdvcmQ2NCgyMzk0MTgwMjMxLDE3NTA2MDMwMjUpO2g9bmV3IFdvcmQ2NCgzNjc1MDA4NTI1LDE2OTQwNzY4MzkpO2w9bmV3IFdvcmQ2NCgxMjAzMDYyODEzLDMyMDQwNzU0MjgpfWVsc2V7cj1uZXcgV29yZDY0KDE3NzkwMzM3MDMsNDA4OTIzNTcyMCk7bj1uZXcgV29yZDY0KDMxNDQxMzQyNzcsMjIyNzg3MzU5NSk7bz1uZXcgV29yZDY0KDEwMTM5MDQyNDIsNDI3MTE3NTcyMyk7Zz1uZXcgV29yZDY0KDI3NzM0ODA3NjIsMTU5NTc1MDEyOSk7Yz1uZXcgV29yZDY0KDEzNTk4OTMxMTksMjkxNzU2NTEzNyk7Qz1uZXcgV29yZDY0KDI2MDA4MjI5MjQsNzI1NTExMTk5KTtoPW5ldyBXb3JkNjQoNTI4NzM0NjM1LDQyMTUzODk1NDcpO2w9bmV3IFdvcmQ2NCgxNTQxNDU5MjI1LDMyNzAzMzIwOSl9Y29uc3QgUT0xMjgqTWF0aC5jZWlsKChhKzE3KS8xMjgpLEU9bmV3IFVpbnQ4QXJyYXkoUSk7bGV0IHUsZDtmb3IodT0wO3U8YTsrK3UpRVt1XT10W2krK107RVt1KytdPTEyODtjb25zdCBmPVEtMTY7Zm9yKDt1PGY7KUVbdSsrXT0wO0VbdSsrXT0wO0VbdSsrXT0wO0VbdSsrXT0wO0VbdSsrXT0wO0VbdSsrXT0wO0VbdSsrXT0wO0VbdSsrXT0wO0VbdSsrXT0wO0VbdSsrXT0wO0VbdSsrXT0wO0VbdSsrXT0wO0VbdSsrXT1hPj4+MjkmMjU1O0VbdSsrXT1hPj4yMSYyNTU7RVt1KytdPWE+PjEzJjI1NTtFW3UrK109YT4+NSYyNTU7RVt1KytdPWE8PDMmMjU1O2NvbnN0IHA9bmV3IEFycmF5KDgwKTtmb3IodT0wO3U8ODA7dSsrKXBbdV09bmV3IFdvcmQ2NCgwLDApO2xldCBtPW5ldyBXb3JkNjQoMCwwKSx5PW5ldyBXb3JkNjQoMCwwKSx3PW5ldyBXb3JkNjQoMCwwKSxiPW5ldyBXb3JkNjQoMCwwKSxEPW5ldyBXb3JkNjQoMCwwKSxGPW5ldyBXb3JkNjQoMCwwKSxTPW5ldyBXb3JkNjQoMCwwKSxrPW5ldyBXb3JkNjQoMCwwKTtjb25zdCBOPW5ldyBXb3JkNjQoMCwwKSxSPW5ldyBXb3JkNjQoMCwwKSxHPW5ldyBXb3JkNjQoMCwwKSx4PW5ldyBXb3JkNjQoMCwwKTtsZXQgVSxNO2Zvcih1PTA7dTxROyl7Zm9yKGQ9MDtkPDE2OysrZCl7cFtkXS5oaWdoPUVbdV08PDI0fEVbdSsxXTw8MTZ8RVt1KzJdPDw4fEVbdSszXTtwW2RdLmxvdz1FW3UrNF08PDI0fEVbdSs1XTw8MTZ8RVt1KzZdPDw4fEVbdSs3XTt1Kz04fWZvcihkPTE2O2Q8ODA7KytkKXtVPXBbZF07bGl0dGxlU2lnbWFQcmltZShVLHBbZC0yXSx4KTtVLmFkZChwW2QtN10pO2xpdHRsZVNpZ21hKEcscFtkLTE1XSx4KTtVLmFkZChHKTtVLmFkZChwW2QtMTZdKX1tLmFzc2lnbihyKTt5LmFzc2lnbihuKTt3LmFzc2lnbihvKTtiLmFzc2lnbihnKTtELmFzc2lnbihjKTtGLmFzc2lnbihDKTtTLmFzc2lnbihoKTtrLmFzc2lnbihsKTtmb3IoZD0wO2Q8ODA7KytkKXtOLmFzc2lnbihrKTtzaWdtYVByaW1lKEcsRCx4KTtOLmFkZChHKTtjaChHLEQsRixTLHgpO04uYWRkKEcpO04uYWRkKGVbZF0pO04uYWRkKHBbZF0pO3NpZ21hKFIsbSx4KTttYWooRyxtLHksdyx4KTtSLmFkZChHKTtVPWs7az1TO1M9RjtGPUQ7Yi5hZGQoTik7RD1iO2I9dzt3PXk7eT1tO1UuYXNzaWduKE4pO1UuYWRkKFIpO209VX1yLmFkZChtKTtuLmFkZCh5KTtvLmFkZCh3KTtnLmFkZChiKTtjLmFkZChEKTtDLmFkZChGKTtoLmFkZChTKTtsLmFkZChrKX1pZihzKXtNPW5ldyBVaW50OEFycmF5KDQ4KTtyLmNvcHlUbyhNLDApO24uY29weVRvKE0sOCk7by5jb3B5VG8oTSwxNik7Zy5jb3B5VG8oTSwyNCk7Yy5jb3B5VG8oTSwzMik7Qy5jb3B5VG8oTSw0MCl9ZWxzZXtNPW5ldyBVaW50OEFycmF5KDY0KTtyLmNvcHlUbyhNLDApO24uY29weVRvKE0sOCk7by5jb3B5VG8oTSwxNik7Zy5jb3B5VG8oTSwyNCk7Yy5jb3B5VG8oTSwzMik7Qy5jb3B5VG8oTSw0MCk7aC5jb3B5VG8oTSw0OCk7bC5jb3B5VG8oTSw1Nil9cmV0dXJuIE19fSgpO2NsYXNzIE51bGxDaXBoZXJ7ZGVjcnlwdEJsb2NrKGUpe3JldHVybiBlfWVuY3J5cHQoZSl7cmV0dXJuIGV9fWNsYXNzIEFFU0Jhc2VDaXBoZXJ7Y29uc3RydWN0b3IoKXt0aGlzLmNvbnN0cnVjdG9yPT09QUVTQmFzZUNpcGhlciYmdW5yZWFjaGFibGUoIkNhbm5vdCBpbml0aWFsaXplIEFFU0Jhc2VDaXBoZXIuIik7dGhpcy5fcz1uZXcgVWludDhBcnJheShbOTksMTI0LDExOSwxMjMsMjQyLDEwNywxMTEsMTk3LDQ4LDEsMTAzLDQzLDI1NCwyMTUsMTcxLDExOCwyMDIsMTMwLDIwMSwxMjUsMjUwLDg5LDcxLDI0MCwxNzMsMjEyLDE2MiwxNzUsMTU2LDE2NCwxMTQsMTkyLDE4MywyNTMsMTQ3LDM4LDU0LDYzLDI0NywyMDQsNTIsMTY1LDIyOSwyNDEsMTEzLDIxNiw0OSwyMSw0LDE5OSwzNSwxOTUsMjQsMTUwLDUsMTU0LDcsMTgsMTI4LDIyNiwyMzUsMzksMTc4LDExNyw5LDEzMSw0NCwyNiwyNywxMTAsOTAsMTYwLDgyLDU5LDIxNCwxNzksNDEsMjI3LDQ3LDEzMiw4MywyMDksMCwyMzcsMzIsMjUyLDE3Nyw5MSwxMDYsMjAzLDE5MCw1Nyw3NCw3Niw4OCwyMDcsMjA4LDIzOSwxNzAsMjUxLDY3LDc3LDUxLDEzMyw2OSwyNDksMiwxMjcsODAsNjAsMTU5LDE2OCw4MSwxNjMsNjQsMTQzLDE0NiwxNTcsNTYsMjQ1LDE4OCwxODIsMjE4LDMzLDE2LDI1NSwyNDMsMjEwLDIwNSwxMiwxOSwyMzYsOTUsMTUxLDY4LDIzLDE5NiwxNjcsMTI2LDYxLDEwMCw5MywyNSwxMTUsOTYsMTI5LDc5LDIyMCwzNCw0MiwxNDQsMTM2LDcwLDIzOCwxODQsMjAsMjIyLDk0LDExLDIxOSwyMjQsNTAsNTgsMTAsNzMsNiwzNiw5MiwxOTQsMjExLDE3Miw5OCwxNDUsMTQ5LDIyOCwxMjEsMjMxLDIwMCw1NSwxMDksMTQxLDIxMyw3OCwxNjksMTA4LDg2LDI0NCwyMzQsMTAxLDEyMiwxNzQsOCwxODYsMTIwLDM3LDQ2LDI4LDE2NiwxODAsMTk4LDIzMiwyMjEsMTE2LDMxLDc1LDE4OSwxMzksMTM4LDExMiw2MiwxODEsMTAyLDcyLDMsMjQ2LDE0LDk3LDUzLDg3LDE4NSwxMzQsMTkzLDI5LDE1OCwyMjUsMjQ4LDE1MiwxNywxMDUsMjE3LDE0MiwxNDgsMTU1LDMwLDEzNSwyMzMsMjA2LDg1LDQwLDIyMywxNDAsMTYxLDEzNywxMywxOTEsMjMwLDY2LDEwNCw2NSwxNTMsNDUsMTUsMTc2LDg0LDE4NywyMl0pO3RoaXMuX2ludl9zPW5ldyBVaW50OEFycmF5KFs4Miw5LDEwNiwyMTMsNDgsNTQsMTY1LDU2LDE5MSw2NCwxNjMsMTU4LDEyOSwyNDMsMjE1LDI1MSwxMjQsMjI3LDU3LDEzMCwxNTUsNDcsMjU1LDEzNSw1MiwxNDIsNjcsNjgsMTk2LDIyMiwyMzMsMjAzLDg0LDEyMywxNDgsNTAsMTY2LDE5NCwzNSw2MSwyMzgsNzYsMTQ5LDExLDY2LDI1MCwxOTUsNzgsOCw0NiwxNjEsMTAyLDQwLDIxNywzNiwxNzgsMTE4LDkxLDE2Miw3MywxMDksMTM5LDIwOSwzNywxMTQsMjQ4LDI0NiwxMDAsMTM0LDEwNCwxNTIsMjIsMjEyLDE2NCw5MiwyMDQsOTMsMTAxLDE4MiwxNDYsMTA4LDExMiw3Miw4MCwyNTMsMjM3LDE4NSwyMTgsOTQsMjEsNzAsODcsMTY3LDE0MSwxNTcsMTMyLDE0NCwyMTYsMTcxLDAsMTQwLDE4OCwyMTEsMTAsMjQ3LDIyOCw4OCw1LDE4NCwxNzksNjksNiwyMDgsNDQsMzAsMTQzLDIwMiw2MywxNSwyLDE5MywxNzUsMTg5LDMsMSwxOSwxMzgsMTA3LDU4LDE0NSwxNyw2NSw3OSwxMDMsMjIwLDIzNCwxNTEsMjQyLDIwNywyMDYsMjQwLDE4MCwyMzAsMTE1LDE1MCwxNzIsMTE2LDM0LDIzMSwxNzMsNTMsMTMzLDIyNiwyNDksNTUsMjMyLDI4LDExNywyMjMsMTEwLDcxLDI0MSwyNiwxMTMsMjksNDEsMTk3LDEzNywxMTEsMTgzLDk4LDE0LDE3MCwyNCwxOTAsMjcsMjUyLDg2LDYyLDc1LDE5OCwyMTAsMTIxLDMyLDE1NCwyMTksMTkyLDI1NCwxMjAsMjA1LDkwLDI0NCwzMSwyMjEsMTY4LDUxLDEzNiw3LDE5OSw0OSwxNzcsMTgsMTYsODksMzksMTI4LDIzNiw5NSw5Niw4MSwxMjcsMTY5LDI1LDE4MSw3NCwxMyw0NSwyMjksMTIyLDE1OSwxNDcsMjAxLDE1NiwyMzksMTYwLDIyNCw1OSw3NywxNzQsNDIsMjQ1LDE3NiwyMDAsMjM1LDE4Nyw2MCwxMzEsODMsMTUzLDk3LDIzLDQzLDQsMTI2LDE4NiwxMTksMjE0LDM4LDIyNSwxMDUsMjAsOTksODUsMzMsMTIsMTI1XSk7dGhpcy5fbWl4PW5ldyBVaW50MzJBcnJheShbMCwyMzU0NzQxODcsNDcwOTQ4Mzc0LDMwMzc2NTI3Nyw5NDE4OTY3NDgsOTA4OTMzNDE1LDYwNzUzMDU1NCw3MDg3ODA4NDksMTg4Mzc5MzQ5NiwyMTE4MjE0OTk1LDE4MTc4NjY4MzAsMTY0OTYzOTIzNywxMjE1MDYxMTA4LDExODEwNDUxMTksMTQxNzU2MTY5OCwxNTE3NzY3NTI5LDM3Njc1ODY5OTIsNDAwMzA2MTE3OSw0MjM2NDI5OTkwLDQwNjkyNDY4OTMsMzYzNTczMzY2MCwzNjAyNzcwMzI3LDMyOTkyNzg0NzQsMzQwMDUyODc2OSwyNDMwMTIyMjE2LDI2NjQ1NDM3MTUsMjM2MjA5MDIzOCwyMTkzODYyNjQ1LDI4MzUxMjMzOTYsMjgwMTEwNzQwNywzMDM1NTM1MDU4LDMxMzU3NDA4ODksMzY3ODEyNDkyMywzNTc2ODcwNTEyLDMzNDEzOTQyODUsMzM3NDM2MTcwMiwzODEwNDk2MzQzLDM5Nzc2NzUzNTYsNDI3OTA4MDI1Nyw0MDQzNjEwMTg2LDI4NzY0OTQ2MjcsMjc3NjI5MjkwNCwzMDc2NjM5MDI5LDMxMTA2NTA5NDIsMjQ3MjAxMTUzNSwyNjQwMjQzMjA0LDI0MDM3Mjg2NjUsMjE2OTMwMzA1OCwxMDAxMDg5OTk1LDg5OTgzNTU4NCw2NjY0NjQ3MzMsNjk5NDMyMTUwLDU5NzI3ODQ3LDIyNjkwNjg2MCw1MzA0MDA3NTMsMjk0OTMwNjgyLDEyNzMxNjg3ODcsMTE3Mjk2NzA2NCwxNDc1NDE4NTAxLDE1MDk0MzA0MTQsMTk0MjQzNTc3NSwyMTEwNjY3NDQ0LDE4NzYyNDE4MzMsMTY0MTgxNjIyNiwyOTEwMjE5NzY2LDI3NDMwMzQxMDksMjk3NjE1MTUyMCwzMjExNjIzMTQ3LDI1MDUyMDIxMzgsMjYwNjQ1Mzk2OSwyMzAyNjkwMjUyLDIyNjk3Mjg0NTUsMzcxMTgyOTQyMiwzNTQzNTk5MjY5LDMyNDA4OTQzOTIsMzQ3NTMxMzMzMSwzODQzNjk5MDc0LDM5NDM5MDY0NDEsNDE3ODA2MjIyOCw0MTQ0MDQ3Nzc1LDEzMDY5NjczNjYsMTEzOTc4MTcwOSwxMzc0OTg4MTEyLDE2MTA0NTk3MzksMTk3NTY4MzQzNCwyMDc2OTM1MjY1LDE3NzUyNzY5MjQsMTc0MjMxNTEyNywxMDM0ODY3OTk4LDg2NjYzNzg0NSw1NjYwMjE4OTYsODAwNDQwODM1LDkyOTg3Njk4LDE5MzE5NTA2NSw0Mjk0NTYxNjQsMzk1NDQxNzExLDE5ODQ4MTI2ODUsMjAxNzc3ODU2NiwxNzg0NjYzMTk1LDE2ODM0MDcyNDgsMTMxNTU2MjE0NSwxMDgwMDk0NjM0LDEzODM4NTYzMTEsMTU1MTAzNzg4NCwxMDEwMzk4MjksMTM1MDUwMjA2LDQzNzc1NzEyMywzMzc1NTM4NjQsMTA0MjM4NTY1Nyw4MDc5NjI2MTAsNTczODA0NzgzLDc0MjAzOTAxMiwyNTMxMDY3NDUzLDI1NjQwMzMzMzQsMjMyODgyODk3MSwyMjI3NTczMDI0LDI5MzU1NjY4NjUsMjcwMDA5OTM1NCwzMDAxNzU1NjU1LDMxNjg5MzcyMjgsMzg2ODU1MjgwNSwzOTAyNTYzMTgyLDQyMDMxODExNzEsNDEwMjk3NzkxMiwzNzM2MTY0OTM3LDM1MDE3NDE4OTAsMzI2NTQ3ODc1MSwzNDMzNzEyOTgwLDExMDYwNDE1OTEsMTM0MDQ2MzEwMCwxNTc2OTc2NjA5LDE0MDg3NDkwMzQsMjA0MzIxMTQ4MywyMDA5MTk1NDcyLDE3MDg4NDgzMzMsMTgwOTA1NDE1MCw4MzI4NzcyMzEsMTA2ODM1MTM5Niw3NjY5NDU0NjUsNTk5NzYyMzU0LDE1OTQxNzk4NywxMjY0NTQ2NjQsMzYxOTI5ODc3LDQ2MzE4MDE5MCwyNzA5MjYwODcxLDI5NDM2ODIzODAsMzE3ODEwNjk2MSwzMDA5ODc5Mzg2LDI1NzI2OTcxOTUsMjUzODY4MTE4NCwyMjM2MjI4NzMzLDIzMzY0MzQ1NTAsMzUwOTg3MTEzNSwzNzQ1MzQ1MzAwLDM0NDE4NTAzNzcsMzI3NDY2NzI2NiwzOTEwMTYxOTcxLDM4NzcxOTg2NDgsNDExMDU2ODQ4NSw0MjExODE4Nzk4LDI1OTc4MDY0NzYsMjQ5NzYwNDc0MywyMjYxMDg5MTc4LDIyOTUxMDEwNzMsMjczMzg1NjE2MCwyOTAyMDg3ODUxLDMyMDI0MzcwNDYsMjk2ODAxMTQ1MywzOTM2MjkxMjg0LDM4MzUwMzY4OTUsNDEzNjQ0MDc3MCw0MTY5NDA4MjAxLDM1MzU0ODY0NTYsMzcwMjY2NTQ1OSwzNDY3MTkyMzAyLDMyMzE3MjIyMTMsMjA1MTUxODc4MCwxOTUxMzE3MDQ3LDE3MTY4OTA0MTAsMTc1MDkwMjMwNSwxMTEzODE4Mzg0LDEyODIwNTAwNzUsMTU4NDUwNDU4MiwxMzUwMDc4OTg5LDE2ODgxMDg1Miw2NzU1NjQ2MywzNzEwNDkzMzAsNDA0MDE2NzYxLDg0MTczOTU5MiwxMDA4OTE4NTk1LDc3NTU1MDgxNCw1NDAwODA3MjUsMzk2OTU2MjM2OSwzODAxMzMyMjM0LDQwMzU0ODkwNDcsNDI2OTkwNzk5NiwzNTY5MjU1MjEzLDM2Njk0NjI1NjYsMzM2Njc1NDYxOSwzMzMyNzQwMTQ0LDI2MzEwNjU0MzMsMjQ2Mzg3OTc2MiwyMTYwMTE3MDcxLDIzOTU1ODg2NzYsMjc2NzY0NTU1NywyODY4ODk3NDA2LDMxMDIwMTE3NDcsMzA2OTA0OTk2MCwyMDIwMDg0OTcsMzM3NzgzNjIsMjcwMDQwNDg3LDUwNDQ1OTQzNiw4NzU0NTEyOTMsOTc1NjU4NjQ2LDY3NTAzOTYyNyw2NDEwMjUxNTIsMjA4NDcwNDIzMywxOTE3NTE4NTYyLDE2MTU4NjEyNDcsMTg1MTMzMjg1MiwxMTQ3NTUwNjYxLDEyNDg4MDI1MTAsMTQ4NDAwNTg0MywxNDUxMDQ0MDU2LDkzMzMwMTM3MCw5NjczMTE3MjksNzMzMTU2OTcyLDYzMjk1MzcwMywyNjAzODg5NTAsMjU5NjU5MTcsMzI4NjcxODA4LDQ5NjkwNjA1OSwxMjA2NDc3ODU4LDEyMzk0NDM3NTMsMTU0MzIwODUwMCwxNDQxOTUyNTc1LDIxNDQxNjE4MDYsMTkwODY5NDI3NywxNjc1NTc3ODgwLDE4NDI3NTk0NDMsMzYxMDM2OTIyNiwzNjQ0Mzc5NTg1LDM0MDgxMTk1MTYsMzMwNzkxNjI0Nyw0MDExMTkwNTAyLDM3NzY3Njc0NjksNDA3NzM4NDQzMiw0MjQ1NjE4NjgzLDI4MDk3NzExNTQsMjg0MjczNzA0OSwzMTQ0Mzk2NDIwLDMwNDMxNDA0OTUsMjY3MzcwNTE1MCwyNDM4MjM3NjIxLDIyMDMwMzIyMzIsMjM3MDIxMzc5NV0pO3RoaXMuX21peENvbD1uZXcgVWludDhBcnJheSgyNTYpO2ZvcihsZXQgZT0wO2U8MjU2O2UrKyl0aGlzLl9taXhDb2xbZV09ZTwxMjg/ZTw8MTplPDwxXjI3O3RoaXMuYnVmZmVyPW5ldyBVaW50OEFycmF5KDE2KTt0aGlzLmJ1ZmZlclBvc2l0aW9uPTB9X2V4cGFuZEtleShlKXt1bnJlYWNoYWJsZSgiQ2Fubm90IGNhbGwgYF9leHBhbmRLZXlgIG9uIHRoZSBiYXNlIGNsYXNzIil9X2RlY3J5cHQoZSx0KXtsZXQgaSxhLHM7Y29uc3Qgcj1uZXcgVWludDhBcnJheSgxNik7ci5zZXQoZSk7Zm9yKGxldCBlPTAsaT10aGlzLl9rZXlTaXplO2U8MTY7KytlLCsraSlyW2VdXj10W2ldO2ZvcihsZXQgZT10aGlzLl9jeWNsZXNPZlJlcGV0aXRpb24tMTtlPj0xOy0tZSl7aT1yWzEzXTtyWzEzXT1yWzldO3JbOV09cls1XTtyWzVdPXJbMV07clsxXT1pO2k9clsxNF07YT1yWzEwXTtyWzE0XT1yWzZdO3JbMTBdPXJbMl07cls2XT1pO3JbMl09YTtpPXJbMTVdO2E9clsxMV07cz1yWzddO3JbMTVdPXJbM107clsxMV09aTtyWzddPWE7clszXT1zO2ZvcihsZXQgZT0wO2U8MTY7KytlKXJbZV09dGhpcy5faW52X3NbcltlXV07Zm9yKGxldCBpPTAsYT0xNiplO2k8MTY7KytpLCsrYSlyW2ldXj10W2FdO2ZvcihsZXQgZT0wO2U8MTY7ZSs9NCl7Y29uc3QgdD10aGlzLl9taXhbcltlXV0sYT10aGlzLl9taXhbcltlKzFdXSxzPXRoaXMuX21peFtyW2UrMl1dLG49dGhpcy5fbWl4W3JbZSszXV07aT10XmE+Pj44XmE8PDI0XnM+Pj4xNl5zPDwxNl5uPj4+MjRebjw8ODtyW2VdPWk+Pj4yNCYyNTU7cltlKzFdPWk+PjE2JjI1NTtyW2UrMl09aT4+OCYyNTU7cltlKzNdPTI1NSZpfX1pPXJbMTNdO3JbMTNdPXJbOV07cls5XT1yWzVdO3JbNV09clsxXTtyWzFdPWk7aT1yWzE0XTthPXJbMTBdO3JbMTRdPXJbNl07clsxMF09clsyXTtyWzZdPWk7clsyXT1hO2k9clsxNV07YT1yWzExXTtzPXJbN107clsxNV09clszXTtyWzExXT1pO3JbN109YTtyWzNdPXM7Zm9yKGxldCBlPTA7ZTwxNjsrK2Upe3JbZV09dGhpcy5faW52X3NbcltlXV07cltlXV49dFtlXX1yZXR1cm4gcn1fZW5jcnlwdChlLHQpe2NvbnN0IGk9dGhpcy5fcztsZXQgYSxzLHI7Y29uc3Qgbj1uZXcgVWludDhBcnJheSgxNik7bi5zZXQoZSk7Zm9yKGxldCBlPTA7ZTwxNjsrK2UpbltlXV49dFtlXTtmb3IobGV0IGU9MTtlPHRoaXMuX2N5Y2xlc09mUmVwZXRpdGlvbjtlKyspe2ZvcihsZXQgZT0wO2U8MTY7KytlKW5bZV09aVtuW2VdXTtyPW5bMV07blsxXT1uWzVdO25bNV09bls5XTtuWzldPW5bMTNdO25bMTNdPXI7cj1uWzJdO3M9bls2XTtuWzJdPW5bMTBdO25bNl09blsxNF07blsxMF09cjtuWzE0XT1zO3I9blszXTtzPW5bN107YT1uWzExXTtuWzNdPW5bMTVdO25bN109cjtuWzExXT1zO25bMTVdPWE7Zm9yKGxldCBlPTA7ZTwxNjtlKz00KXtjb25zdCB0PW5bZSswXSxpPW5bZSsxXSxzPW5bZSsyXSxyPW5bZSszXTthPXReaV5zXnI7bltlKzBdXj1hXnRoaXMuX21peENvbFt0XmldO25bZSsxXV49YV50aGlzLl9taXhDb2xbaV5zXTtuW2UrMl1ePWFedGhpcy5fbWl4Q29sW3Necl07bltlKzNdXj1hXnRoaXMuX21peENvbFtyXnRdfWZvcihsZXQgaT0wLGE9MTYqZTtpPDE2OysraSwrK2EpbltpXV49dFthXX1mb3IobGV0IGU9MDtlPDE2OysrZSluW2VdPWlbbltlXV07cj1uWzFdO25bMV09bls1XTtuWzVdPW5bOV07bls5XT1uWzEzXTtuWzEzXT1yO3I9blsyXTtzPW5bNl07blsyXT1uWzEwXTtuWzZdPW5bMTRdO25bMTBdPXI7blsxNF09cztyPW5bM107cz1uWzddO2E9blsxMV07blszXT1uWzE1XTtuWzddPXI7blsxMV09cztuWzE1XT1hO2ZvcihsZXQgZT0wLGk9dGhpcy5fa2V5U2l6ZTtlPDE2OysrZSwrK2kpbltlXV49dFtpXTtyZXR1cm4gbn1fZGVjcnlwdEJsb2NrMihlLHQpe2NvbnN0IGk9ZS5sZW5ndGg7bGV0IGE9dGhpcy5idWZmZXIscz10aGlzLmJ1ZmZlclBvc2l0aW9uO2NvbnN0IHI9W107bGV0IG49dGhpcy5pdjtmb3IobGV0IHQ9MDt0PGk7Kyt0KXthW3NdPWVbdF07KytzO2lmKHM8MTYpY29udGludWU7Y29uc3QgaT10aGlzLl9kZWNyeXB0KGEsdGhpcy5fa2V5KTtmb3IobGV0IGU9MDtlPDE2OysrZSlpW2VdXj1uW2VdO249YTtyLnB1c2goaSk7YT1uZXcgVWludDhBcnJheSgxNik7cz0wfXRoaXMuYnVmZmVyPWE7dGhpcy5idWZmZXJMZW5ndGg9czt0aGlzLml2PW47aWYoMD09PXIubGVuZ3RoKXJldHVybiBuZXcgVWludDhBcnJheSgwKTtsZXQgbz0xNipyLmxlbmd0aDtpZih0KXtjb25zdCBlPXIuYXQoLTEpO2xldCB0PWVbMTVdO2lmKHQ8PTE2KXtmb3IobGV0IGk9MTUsYT0xNi10O2k+PWE7LS1pKWlmKGVbaV0hPT10KXt0PTA7YnJlYWt9by09dDtyW3IubGVuZ3RoLTFdPWUuc3ViYXJyYXkoMCwxNi10KX19Y29uc3QgZz1uZXcgVWludDhBcnJheShvKTtmb3IobGV0IGU9MCx0PTAsaT1yLmxlbmd0aDtlPGk7KytlLHQrPTE2KWcuc2V0KHJbZV0sdCk7cmV0dXJuIGd9ZGVjcnlwdEJsb2NrKGUsdCxpPW51bGwpe2NvbnN0IGE9ZS5sZW5ndGgscz10aGlzLmJ1ZmZlcjtsZXQgcj10aGlzLmJ1ZmZlclBvc2l0aW9uO2lmKGkpdGhpcy5pdj1pO2Vsc2V7Zm9yKGxldCB0PTA7cjwxNiYmdDxhOysrdCwrK3Ipc1tyXT1lW3RdO2lmKHI8MTYpe3RoaXMuYnVmZmVyTGVuZ3RoPXI7cmV0dXJuIG5ldyBVaW50OEFycmF5KDApfXRoaXMuaXY9cztlPWUuc3ViYXJyYXkoMTYpfXRoaXMuYnVmZmVyPW5ldyBVaW50OEFycmF5KDE2KTt0aGlzLmJ1ZmZlckxlbmd0aD0wO3RoaXMuZGVjcnlwdEJsb2NrPXRoaXMuX2RlY3J5cHRCbG9jazI7cmV0dXJuIHRoaXMuZGVjcnlwdEJsb2NrKGUsdCl9ZW5jcnlwdChlLHQpe2NvbnN0IGk9ZS5sZW5ndGg7bGV0IGE9dGhpcy5idWZmZXIscz10aGlzLmJ1ZmZlclBvc2l0aW9uO2NvbnN0IHI9W107dHx8KHQ9bmV3IFVpbnQ4QXJyYXkoMTYpKTtmb3IobGV0IG49MDtuPGk7KytuKXthW3NdPWVbbl07KytzO2lmKHM8MTYpY29udGludWU7Zm9yKGxldCBlPTA7ZTwxNjsrK2UpYVtlXV49dFtlXTtjb25zdCBpPXRoaXMuX2VuY3J5cHQoYSx0aGlzLl9rZXkpO3Q9aTtyLnB1c2goaSk7YT1uZXcgVWludDhBcnJheSgxNik7cz0wfXRoaXMuYnVmZmVyPWE7dGhpcy5idWZmZXJMZW5ndGg9czt0aGlzLml2PXQ7aWYoMD09PXIubGVuZ3RoKXJldHVybiBuZXcgVWludDhBcnJheSgwKTtjb25zdCBuPTE2KnIubGVuZ3RoLG89bmV3IFVpbnQ4QXJyYXkobik7Zm9yKGxldCBlPTAsdD0wLGk9ci5sZW5ndGg7ZTxpOysrZSx0Kz0xNilvLnNldChyW2VdLHQpO3JldHVybiBvfX1jbGFzcyBBRVMxMjhDaXBoZXIgZXh0ZW5kcyBBRVNCYXNlQ2lwaGVye2NvbnN0cnVjdG9yKGUpe3N1cGVyKCk7dGhpcy5fY3ljbGVzT2ZSZXBldGl0aW9uPTEwO3RoaXMuX2tleVNpemU9MTYwO3RoaXMuX3Jjb249bmV3IFVpbnQ4QXJyYXkoWzE0MSwxLDIsNCw4LDE2LDMyLDY0LDEyOCwyNyw1NCwxMDgsMjE2LDE3MSw3NywxNTQsNDcsOTQsMTg4LDk5LDE5OCwxNTEsNTMsMTA2LDIxMiwxNzksMTI1LDI1MCwyMzksMTk3LDE0NSw1NywxMTQsMjI4LDIxMSwxODksOTcsMTk0LDE1OSwzNyw3NCwxNDgsNTEsMTAyLDIwNCwxMzEsMjksNTgsMTE2LDIzMiwyMDMsMTQxLDEsMiw0LDgsMTYsMzIsNjQsMTI4LDI3LDU0LDEwOCwyMTYsMTcxLDc3LDE1NCw0Nyw5NCwxODgsOTksMTk4LDE1MSw1MywxMDYsMjEyLDE3OSwxMjUsMjUwLDIzOSwxOTcsMTQ1LDU3LDExNCwyMjgsMjExLDE4OSw5NywxOTQsMTU5LDM3LDc0LDE0OCw1MSwxMDIsMjA0LDEzMSwyOSw1OCwxMTYsMjMyLDIwMywxNDEsMSwyLDQsOCwxNiwzMiw2NCwxMjgsMjcsNTQsMTA4LDIxNiwxNzEsNzcsMTU0LDQ3LDk0LDE4OCw5OSwxOTgsMTUxLDUzLDEwNiwyMTIsMTc5LDEyNSwyNTAsMjM5LDE5NywxNDUsNTcsMTE0LDIyOCwyMTEsMTg5LDk3LDE5NCwxNTksMzcsNzQsMTQ4LDUxLDEwMiwyMDQsMTMxLDI5LDU4LDExNiwyMzIsMjAzLDE0MSwxLDIsNCw4LDE2LDMyLDY0LDEyOCwyNyw1NCwxMDgsMjE2LDE3MSw3NywxNTQsNDcsOTQsMTg4LDk5LDE5OCwxNTEsNTMsMTA2LDIxMiwxNzksMTI1LDI1MCwyMzksMTk3LDE0NSw1NywxMTQsMjI4LDIxMSwxODksOTcsMTk0LDE1OSwzNyw3NCwxNDgsNTEsMTAyLDIwNCwxMzEsMjksNTgsMTE2LDIzMiwyMDMsMTQxLDEsMiw0LDgsMTYsMzIsNjQsMTI4LDI3LDU0LDEwOCwyMTYsMTcxLDc3LDE1NCw0Nyw5NCwxODgsOTksMTk4LDE1MSw1MywxMDYsMjEyLDE3OSwxMjUsMjUwLDIzOSwxOTcsMTQ1LDU3LDExNCwyMjgsMjExLDE4OSw5NywxOTQsMTU5LDM3LDc0LDE0OCw1MSwxMDIsMjA0LDEzMSwyOSw1OCwxMTYsMjMyLDIwMywxNDFdKTt0aGlzLl9rZXk9dGhpcy5fZXhwYW5kS2V5KGUpfV9leHBhbmRLZXkoZSl7Y29uc3QgdD10aGlzLl9zLGk9dGhpcy5fcmNvbixhPW5ldyBVaW50OEFycmF5KDE3Nik7YS5zZXQoZSk7Zm9yKGxldCBlPTE2LHM9MTtlPDE3NjsrK3Mpe2xldCByPWFbZS0zXSxuPWFbZS0yXSxvPWFbZS0xXSxnPWFbZS00XTtyPXRbcl07bj10W25dO289dFtvXTtnPXRbZ107cl49aVtzXTtmb3IobGV0IHQ9MDt0PDQ7Kyt0KXthW2VdPXJePWFbZS0xNl07ZSsrO2FbZV09bl49YVtlLTE2XTtlKys7YVtlXT1vXj1hW2UtMTZdO2UrKzthW2VdPWdePWFbZS0xNl07ZSsrfX1yZXR1cm4gYX19Y2xhc3MgQUVTMjU2Q2lwaGVyIGV4dGVuZHMgQUVTQmFzZUNpcGhlcntjb25zdHJ1Y3RvcihlKXtzdXBlcigpO3RoaXMuX2N5Y2xlc09mUmVwZXRpdGlvbj0xNDt0aGlzLl9rZXlTaXplPTIyNDt0aGlzLl9rZXk9dGhpcy5fZXhwYW5kS2V5KGUpfV9leHBhbmRLZXkoZSl7Y29uc3QgdD10aGlzLl9zLGk9bmV3IFVpbnQ4QXJyYXkoMjQwKTtpLnNldChlKTtsZXQgYSxzLHIsbixvPTE7Zm9yKGxldCBlPTMyLGc9MTtlPDI0MDsrK2cpe2lmKGUlMzI9PTE2KXthPXRbYV07cz10W3NdO3I9dFtyXTtuPXRbbl19ZWxzZSBpZihlJTMyPT0wKXthPWlbZS0zXTtzPWlbZS0yXTtyPWlbZS0xXTtuPWlbZS00XTthPXRbYV07cz10W3NdO3I9dFtyXTtuPXRbbl07YV49bzsobzw8PTEpPj0yNTYmJihvPTI1NSYoMjdebykpfWZvcihsZXQgdD0wO3Q8NDsrK3Qpe2lbZV09YV49aVtlLTMyXTtlKys7aVtlXT1zXj1pW2UtMzJdO2UrKztpW2VdPXJePWlbZS0zMl07ZSsrO2lbZV09bl49aVtlLTMyXTtlKyt9fXJldHVybiBpfX1jbGFzcyBQREYxN3tjaGVja093bmVyUGFzc3dvcmQoZSx0LGksYSl7Y29uc3Qgcz1uZXcgVWludDhBcnJheShlLmxlbmd0aCs1Nik7cy5zZXQoZSwwKTtzLnNldCh0LGUubGVuZ3RoKTtzLnNldChpLGUubGVuZ3RoK3QubGVuZ3RoKTtyZXR1cm4gaXNBcnJheUVxdWFsKEpzKHMsMCxzLmxlbmd0aCksYSl9Y2hlY2tVc2VyUGFzc3dvcmQoZSx0LGkpe2NvbnN0IGE9bmV3IFVpbnQ4QXJyYXkoZS5sZW5ndGgrOCk7YS5zZXQoZSwwKTthLnNldCh0LGUubGVuZ3RoKTtyZXR1cm4gaXNBcnJheUVxdWFsKEpzKGEsMCxhLmxlbmd0aCksaSl9Z2V0T3duZXJLZXkoZSx0LGksYSl7Y29uc3Qgcz1uZXcgVWludDhBcnJheShlLmxlbmd0aCs1Nik7cy5zZXQoZSwwKTtzLnNldCh0LGUubGVuZ3RoKTtzLnNldChpLGUubGVuZ3RoK3QubGVuZ3RoKTtjb25zdCByPUpzKHMsMCxzLmxlbmd0aCk7cmV0dXJuIG5ldyBBRVMyNTZDaXBoZXIocikuZGVjcnlwdEJsb2NrKGEsITEsbmV3IFVpbnQ4QXJyYXkoMTYpKX1nZXRVc2VyS2V5KGUsdCxpKXtjb25zdCBhPW5ldyBVaW50OEFycmF5KGUubGVuZ3RoKzgpO2Euc2V0KGUsMCk7YS5zZXQodCxlLmxlbmd0aCk7Y29uc3Qgcz1KcyhhLDAsYS5sZW5ndGgpO3JldHVybiBuZXcgQUVTMjU2Q2lwaGVyKHMpLmRlY3J5cHRCbG9jayhpLCExLG5ldyBVaW50OEFycmF5KDE2KSl9fWNsYXNzIFBERjIwe19oYXNoKGUsdCxpKXtsZXQgYT1Kcyh0LDAsdC5sZW5ndGgpLnN1YmFycmF5KDAsMzIpLHM9WzBdLHI9MDtmb3IoO3I8NjR8fHMuYXQoLTEpPnItMzI7KXtjb25zdCB0PWUubGVuZ3RoK2EubGVuZ3RoK2kubGVuZ3RoLGM9bmV3IFVpbnQ4QXJyYXkodCk7bGV0IEM9MDtjLnNldChlLEMpO0MrPWUubGVuZ3RoO2Muc2V0KGEsQyk7Qys9YS5sZW5ndGg7Yy5zZXQoaSxDKTtjb25zdCBoPW5ldyBVaW50OEFycmF5KDY0KnQpO2ZvcihsZXQgZT0wLGk9MDtlPDY0O2UrKyxpKz10KWguc2V0KGMsaSk7cz1uZXcgQUVTMTI4Q2lwaGVyKGEuc3ViYXJyYXkoMCwxNikpLmVuY3J5cHQoaCxhLnN1YmFycmF5KDE2LDMyKSk7Y29uc3QgbD1zLnNsaWNlKDAsMTYpLnJlZHVjZSgoKGUsdCk9PmUrdCksMCklMzswPT09bD9hPUpzKHMsMCxzLmxlbmd0aCk6MT09PWw/YT0obj1zLG89MCxnPXMubGVuZ3RoLFlzKG4sbyxnLCEwKSk6Mj09PWwmJihhPVlzKHMsMCxzLmxlbmd0aCkpO3IrK312YXIgbixvLGc7cmV0dXJuIGEuc3ViYXJyYXkoMCwzMil9Y2hlY2tPd25lclBhc3N3b3JkKGUsdCxpLGEpe2NvbnN0IHM9bmV3IFVpbnQ4QXJyYXkoZS5sZW5ndGgrNTYpO3Muc2V0KGUsMCk7cy5zZXQodCxlLmxlbmd0aCk7cy5zZXQoaSxlLmxlbmd0aCt0Lmxlbmd0aCk7cmV0dXJuIGlzQXJyYXlFcXVhbCh0aGlzLl9oYXNoKGUscyxpKSxhKX1jaGVja1VzZXJQYXNzd29yZChlLHQsaSl7Y29uc3QgYT1uZXcgVWludDhBcnJheShlLmxlbmd0aCs4KTthLnNldChlLDApO2Euc2V0KHQsZS5sZW5ndGgpO3JldHVybiBpc0FycmF5RXF1YWwodGhpcy5faGFzaChlLGEsW10pLGkpfWdldE93bmVyS2V5KGUsdCxpLGEpe2NvbnN0IHM9bmV3IFVpbnQ4QXJyYXkoZS5sZW5ndGgrNTYpO3Muc2V0KGUsMCk7cy5zZXQodCxlLmxlbmd0aCk7cy5zZXQoaSxlLmxlbmd0aCt0Lmxlbmd0aCk7Y29uc3Qgcj10aGlzLl9oYXNoKGUscyxpKTtyZXR1cm4gbmV3IEFFUzI1NkNpcGhlcihyKS5kZWNyeXB0QmxvY2soYSwhMSxuZXcgVWludDhBcnJheSgxNikpfWdldFVzZXJLZXkoZSx0LGkpe2NvbnN0IGE9bmV3IFVpbnQ4QXJyYXkoZS5sZW5ndGgrOCk7YS5zZXQoZSwwKTthLnNldCh0LGUubGVuZ3RoKTtjb25zdCBzPXRoaXMuX2hhc2goZSxhLFtdKTtyZXR1cm4gbmV3IEFFUzI1NkNpcGhlcihzKS5kZWNyeXB0QmxvY2soaSwhMSxuZXcgVWludDhBcnJheSgxNikpfX1jbGFzcyBDaXBoZXJUcmFuc2Zvcm17Y29uc3RydWN0b3IoZSx0KXt0aGlzLlN0cmluZ0NpcGhlckNvbnN0cnVjdG9yPWU7dGhpcy5TdHJlYW1DaXBoZXJDb25zdHJ1Y3Rvcj10fWNyZWF0ZVN0cmVhbShlLHQpe2NvbnN0IGk9bmV3IHRoaXMuU3RyZWFtQ2lwaGVyQ29uc3RydWN0b3I7cmV0dXJuIG5ldyBEZWNyeXB0U3RyZWFtKGUsdCwoZnVuY3Rpb24gY2lwaGVyVHJhbnNmb3JtRGVjcnlwdFN0cmVhbShlLHQpe3JldHVybiBpLmRlY3J5cHRCbG9jayhlLHQpfSkpfWRlY3J5cHRTdHJpbmcoZSl7Y29uc3QgdD1uZXcgdGhpcy5TdHJpbmdDaXBoZXJDb25zdHJ1Y3RvcjtsZXQgaT1zdHJpbmdUb0J5dGVzKGUpO2k9dC5kZWNyeXB0QmxvY2soaSwhMCk7cmV0dXJuIGJ5dGVzVG9TdHJpbmcoaSl9ZW5jcnlwdFN0cmluZyhlKXtjb25zdCB0PW5ldyB0aGlzLlN0cmluZ0NpcGhlckNvbnN0cnVjdG9yO2lmKHQgaW5zdGFuY2VvZiBBRVNCYXNlQ2lwaGVyKXtjb25zdCBpPTE2LWUubGVuZ3RoJTE2O2UrPVN0cmluZy5mcm9tQ2hhckNvZGUoaSkucmVwZWF0KGkpO2NvbnN0IGE9bmV3IFVpbnQ4QXJyYXkoMTYpO2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgY3J5cHRvKWNyeXB0by5nZXRSYW5kb21WYWx1ZXMoYSk7ZWxzZSBmb3IobGV0IGU9MDtlPDE2O2UrKylhW2VdPU1hdGguZmxvb3IoMjU2Kk1hdGgucmFuZG9tKCkpO2xldCBzPXN0cmluZ1RvQnl0ZXMoZSk7cz10LmVuY3J5cHQocyxhKTtjb25zdCByPW5ldyBVaW50OEFycmF5KDE2K3MubGVuZ3RoKTtyLnNldChhKTtyLnNldChzLDE2KTtyZXR1cm4gYnl0ZXNUb1N0cmluZyhyKX1sZXQgaT1zdHJpbmdUb0J5dGVzKGUpO2k9dC5lbmNyeXB0KGkpO3JldHVybiBieXRlc1RvU3RyaW5nKGkpfX1jbGFzcyBDaXBoZXJUcmFuc2Zvcm1GYWN0b3J5e3N0YXRpYyNiPW5ldyBVaW50OEFycmF5KFs0MCwxOTEsNzgsOTQsNzgsMTE3LDEzOCw2NSwxMDAsMCw3OCw4NiwyNTUsMjUwLDEsOCw0Niw0NiwwLDE4MiwyMDgsMTA0LDYyLDEyOCw0NywxMiwxNjksMjU0LDEwMCw4MywxMDUsMTIyXSk7I0QoZSx0LGksYSxzLHIsbixvLGcsYyxDLGgpe2lmKHQpe2NvbnN0IGU9TWF0aC5taW4oMTI3LHQubGVuZ3RoKTt0PXQuc3ViYXJyYXkoMCxlKX1lbHNlIHQ9W107Y29uc3QgbD02PT09ZT9uZXcgUERGMjA6bmV3IFBERjE3O3JldHVybiBsLmNoZWNrVXNlclBhc3N3b3JkKHQsbyxuKT9sLmdldFVzZXJLZXkodCxnLEMpOnQubGVuZ3RoJiZsLmNoZWNrT3duZXJQYXNzd29yZCh0LGEscixpKT9sLmdldE93bmVyS2V5KHQscyxyLGMpOm51bGx9I0YoZSx0LGksYSxzLHIsbixvKXtjb25zdCBnPTQwK2kubGVuZ3RoK2UubGVuZ3RoLGM9bmV3IFVpbnQ4QXJyYXkoZyk7bGV0IEMsaCxsPTA7aWYodCl7aD1NYXRoLm1pbigzMix0Lmxlbmd0aCk7Zm9yKDtsPGg7KytsKWNbbF09dFtsXX1DPTA7Zm9yKDtsPDMyOyljW2wrK109Q2lwaGVyVHJhbnNmb3JtRmFjdG9yeS4jYltDKytdO2ZvcihDPTAsaD1pLmxlbmd0aDtDPGg7KytDKWNbbCsrXT1pW0NdO2NbbCsrXT0yNTUmcztjW2wrK109cz4+OCYyNTU7Y1tsKytdPXM+PjE2JjI1NTtjW2wrK109cz4+PjI0JjI1NTtmb3IoQz0wLGg9ZS5sZW5ndGg7QzxoOysrQyljW2wrK109ZVtDXTtpZihyPj00JiYhbyl7Y1tsKytdPTI1NTtjW2wrK109MjU1O2NbbCsrXT0yNTU7Y1tsKytdPTI1NX1sZXQgUT1IcyhjLDAsbCk7Y29uc3QgRT1uPj4zO2lmKHI+PTMpZm9yKEM9MDtDPDUwOysrQylRPUhzKFEsMCxFKTtjb25zdCB1PVEuc3ViYXJyYXkoMCxFKTtsZXQgZCxmO2lmKHI+PTMpe2ZvcihsPTA7bDwzMjsrK2wpY1tsXT1DaXBoZXJUcmFuc2Zvcm1GYWN0b3J5LiNiW2xdO2ZvcihDPTAsaD1lLmxlbmd0aDtDPGg7KytDKWNbbCsrXT1lW0NdO2Q9bmV3IEFSQ0ZvdXJDaXBoZXIodSk7Zj1kLmVuY3J5cHRCbG9jayhIcyhjLDAsbCkpO2g9dS5sZW5ndGg7Y29uc3QgdD1uZXcgVWludDhBcnJheShoKTtmb3IoQz0xO0M8PTE5OysrQyl7Zm9yKGxldCBlPTA7ZTxoOysrZSl0W2VdPXVbZV1eQztkPW5ldyBBUkNGb3VyQ2lwaGVyKHQpO2Y9ZC5lbmNyeXB0QmxvY2soZil9Zm9yKEM9MCxoPWYubGVuZ3RoO0M8aDsrK0MpaWYoYVtDXSE9PWZbQ10pcmV0dXJuIG51bGx9ZWxzZXtkPW5ldyBBUkNGb3VyQ2lwaGVyKHUpO2Y9ZC5lbmNyeXB0QmxvY2soQ2lwaGVyVHJhbnNmb3JtRmFjdG9yeS4jYik7Zm9yKEM9MCxoPWYubGVuZ3RoO0M8aDsrK0MpaWYoYVtDXSE9PWZbQ10pcmV0dXJuIG51bGx9cmV0dXJuIHV9I1MoZSx0LGksYSl7Y29uc3Qgcz1uZXcgVWludDhBcnJheSgzMik7bGV0IHI9MDtjb25zdCBuPU1hdGgubWluKDMyLGUubGVuZ3RoKTtmb3IoO3I8bjsrK3Ipc1tyXT1lW3JdO2xldCBvPTA7Zm9yKDtyPDMyOylzW3IrK109Q2lwaGVyVHJhbnNmb3JtRmFjdG9yeS4jYltvKytdO2xldCBnPUhzKHMsMCxyKTtjb25zdCBjPWE+PjM7aWYoaT49Mylmb3Iobz0wO288NTA7KytvKWc9SHMoZywwLGcubGVuZ3RoKTtsZXQgQyxoO2lmKGk+PTMpe2g9dDtjb25zdCBlPW5ldyBVaW50OEFycmF5KGMpO2ZvcihvPTE5O28+PTA7by0tKXtmb3IobGV0IHQ9MDt0PGM7Kyt0KWVbdF09Z1t0XV5vO0M9bmV3IEFSQ0ZvdXJDaXBoZXIoZSk7aD1DLmVuY3J5cHRCbG9jayhoKX19ZWxzZXtDPW5ldyBBUkNGb3VyQ2lwaGVyKGcuc3ViYXJyYXkoMCxjKSk7aD1DLmVuY3J5cHRCbG9jayh0KX1yZXR1cm4gaH0jayhlLHQsaSxhPSExKXtjb25zdCBzPW5ldyBVaW50OEFycmF5KGkubGVuZ3RoKzkpLHI9aS5sZW5ndGg7bGV0IG47Zm9yKG49MDtuPHI7KytuKXNbbl09aVtuXTtzW24rK109MjU1JmU7c1tuKytdPWU+PjgmMjU1O3NbbisrXT1lPj4xNiYyNTU7c1tuKytdPTI1NSZ0O3NbbisrXT10Pj44JjI1NTtpZihhKXtzW24rK109MTE1O3NbbisrXT02NTtzW24rK109MTA4O3NbbisrXT04NH1yZXR1cm4gSHMocywwLG4pLnN1YmFycmF5KDAsTWF0aC5taW4oaS5sZW5ndGgrNSwxNikpfSNOKGUsdCxpLGEscyl7aWYoISh0IGluc3RhbmNlb2YgTmFtZSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIGNyeXB0IGZpbHRlciBuYW1lLiIpO2NvbnN0IHI9dGhpcyxuPWUuZ2V0KHQubmFtZSksbz1uPy5nZXQoIkNGTSIpO2lmKCFvfHwiTm9uZSI9PT1vLm5hbWUpcmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBOdWxsQ2lwaGVyfTtpZigiVjIiPT09by5uYW1lKXJldHVybiBmdW5jdGlvbigpe3JldHVybiBuZXcgQVJDRm91ckNpcGhlcihyLiNrKGksYSxzLCExKSl9O2lmKCJBRVNWMiI9PT1vLm5hbWUpcmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBBRVMxMjhDaXBoZXIoci4jayhpLGEscywhMCkpfTtpZigiQUVTVjMiPT09by5uYW1lKXJldHVybiBmdW5jdGlvbigpe3JldHVybiBuZXcgQUVTMjU2Q2lwaGVyKHMpfTt0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlVua25vd24gY3J5cHRvIG1ldGhvZCIpfWNvbnN0cnVjdG9yKGUsdCxpKXtjb25zdCBhPWUuZ2V0KCJGaWx0ZXIiKTtpZighaXNOYW1lKGEsIlN0YW5kYXJkIikpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJ1bmtub3duIGVuY3J5cHRpb24gbWV0aG9kIik7dGhpcy5maWx0ZXJOYW1lPWEubmFtZTt0aGlzLmRpY3Q9ZTtjb25zdCBzPWUuZ2V0KCJWIik7aWYoIU51bWJlci5pc0ludGVnZXIocyl8fDEhPT1zJiYyIT09cyYmNCE9PXMmJjUhPT1zKXRocm93IG5ldyBGb3JtYXRFcnJvcigidW5zdXBwb3J0ZWQgZW5jcnlwdGlvbiBhbGdvcml0aG0iKTt0aGlzLmFsZ29yaXRobT1zO2xldCByPWUuZ2V0KCJMZW5ndGgiKTtpZighcilpZihzPD0zKXI9NDA7ZWxzZXtjb25zdCB0PWUuZ2V0KCJDRiIpLGk9ZS5nZXQoIlN0bUYiKTtpZih0IGluc3RhbmNlb2YgRGljdCYmaSBpbnN0YW5jZW9mIE5hbWUpe3Quc3VwcHJlc3NFbmNyeXB0aW9uPSEwO2NvbnN0IGU9dC5nZXQoaS5uYW1lKTtyPWU/LmdldCgiTGVuZ3RoIil8fDEyODtyPDQwJiYocjw8PTMpfX1pZighTnVtYmVyLmlzSW50ZWdlcihyKXx8cjw0MHx8ciU4IT0wKXRocm93IG5ldyBGb3JtYXRFcnJvcigiaW52YWxpZCBrZXkgbGVuZ3RoIik7Y29uc3Qgbj1zdHJpbmdUb0J5dGVzKGUuZ2V0KCJPIikpLG89c3RyaW5nVG9CeXRlcyhlLmdldCgiVSIpKSxnPW4uc3ViYXJyYXkoMCwzMiksYz1vLnN1YmFycmF5KDAsMzIpLEM9ZS5nZXQoIlAiKSxoPWUuZ2V0KCJSIiksbD0oND09PXN8fDU9PT1zKSYmITEhPT1lLmdldCgiRW5jcnlwdE1ldGFkYXRhIik7dGhpcy5lbmNyeXB0TWV0YWRhdGE9bDtjb25zdCBRPXN0cmluZ1RvQnl0ZXModCk7bGV0IEUsdTtpZihpKXtpZig2PT09aCl0cnl7aT11dGY4U3RyaW5nVG9TdHJpbmcoaSl9Y2F0Y2h7d2FybigiQ2lwaGVyVHJhbnNmb3JtRmFjdG9yeTogVW5hYmxlIHRvIGNvbnZlcnQgVVRGOCBlbmNvZGVkIHBhc3N3b3JkLiIpfUU9c3RyaW5nVG9CeXRlcyhpKX1pZig1IT09cyl1PXRoaXMuI0YoUSxFLGcsYyxDLGgscixsKTtlbHNle2NvbnN0IHQ9bi5zdWJhcnJheSgzMiw0MCksaT1uLnN1YmFycmF5KDQwLDQ4KSxhPW8uc3ViYXJyYXkoMCw0OCkscz1vLnN1YmFycmF5KDMyLDQwKSxyPW8uc3ViYXJyYXkoNDAsNDgpLEM9c3RyaW5nVG9CeXRlcyhlLmdldCgiT0UiKSksbD1zdHJpbmdUb0J5dGVzKGUuZ2V0KCJVRSIpKSxRPXN0cmluZ1RvQnl0ZXMoZS5nZXQoIlBlcm1zIikpO3U9dGhpcy4jRChoLEUsZyx0LGksYSxjLHMscixDLGwsUSl9aWYoIXUmJiFpKXRocm93IG5ldyBQYXNzd29yZEV4Y2VwdGlvbigiTm8gcGFzc3dvcmQgZ2l2ZW4iLGl0KTtpZighdSYmaSl7Y29uc3QgZT10aGlzLiNTKEUsZyxoLHIpO3U9dGhpcy4jRihRLGUsZyxjLEMsaCxyLGwpfWlmKCF1KXRocm93IG5ldyBQYXNzd29yZEV4Y2VwdGlvbigiSW5jb3JyZWN0IFBhc3N3b3JkIixhdCk7dGhpcy5lbmNyeXB0aW9uS2V5PXU7aWYocz49NCl7Y29uc3QgdD1lLmdldCgiQ0YiKTt0IGluc3RhbmNlb2YgRGljdCYmKHQuc3VwcHJlc3NFbmNyeXB0aW9uPSEwKTt0aGlzLmNmPXQ7dGhpcy5zdG1mPWUuZ2V0KCJTdG1GIil8fE5hbWUuZ2V0KCJJZGVudGl0eSIpO3RoaXMuc3RyZj1lLmdldCgiU3RyRiIpfHxOYW1lLmdldCgiSWRlbnRpdHkiKTt0aGlzLmVmZj1lLmdldCgiRUZGIil8fHRoaXMuc3RtZn19Y3JlYXRlQ2lwaGVyVHJhbnNmb3JtKGUsdCl7aWYoND09PXRoaXMuYWxnb3JpdGhtfHw1PT09dGhpcy5hbGdvcml0aG0pcmV0dXJuIG5ldyBDaXBoZXJUcmFuc2Zvcm0odGhpcy4jTih0aGlzLmNmLHRoaXMuc3RyZixlLHQsdGhpcy5lbmNyeXB0aW9uS2V5KSx0aGlzLiNOKHRoaXMuY2YsdGhpcy5zdG1mLGUsdCx0aGlzLmVuY3J5cHRpb25LZXkpKTtjb25zdCBpPXRoaXMuI2soZSx0LHRoaXMuZW5jcnlwdGlvbktleSwhMSksY2lwaGVyQ29uc3RydWN0b3I9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IEFSQ0ZvdXJDaXBoZXIoaSl9O3JldHVybiBuZXcgQ2lwaGVyVHJhbnNmb3JtKGNpcGhlckNvbnN0cnVjdG9yLGNpcGhlckNvbnN0cnVjdG9yKX19YXN5bmMgZnVuY3Rpb24gd3JpdGVPYmplY3QoZSx0LGkse2VuY3J5cHQ6YT1udWxsfSl7Y29uc3Qgcz1hPy5jcmVhdGVDaXBoZXJUcmFuc2Zvcm0oZS5udW0sZS5nZW4pO2kucHVzaChgJHtlLm51bX0gJHtlLmdlbn0gb2JqXG5gKTt0IGluc3RhbmNlb2YgRGljdD9hd2FpdCB3cml0ZURpY3QodCxpLHMpOnQgaW5zdGFuY2VvZiBCYXNlU3RyZWFtP2F3YWl0IHdyaXRlU3RyZWFtKHQsaSxzKTooQXJyYXkuaXNBcnJheSh0KXx8QXJyYXlCdWZmZXIuaXNWaWV3KHQpKSYmYXdhaXQgd3JpdGVBcnJheSh0LGkscyk7aS5wdXNoKCJcbmVuZG9ialxuIil9YXN5bmMgZnVuY3Rpb24gd3JpdGVEaWN0KGUsdCxpKXt0LnB1c2goIjw8Iik7Zm9yKGNvbnN0IGEgb2YgZS5nZXRLZXlzKCkpe3QucHVzaChgIC8ke2VzY2FwZVBERk5hbWUoYSl9IGApO2F3YWl0IHdyaXRlVmFsdWUoZS5nZXRSYXcoYSksdCxpKX10LnB1c2goIj4+Iil9YXN5bmMgZnVuY3Rpb24gd3JpdGVTdHJlYW0oZSx0LGkpe2xldCBhPWUuZ2V0Qnl0ZXMoKTtjb25zdHtkaWN0OnN9PWUsW3Isbl09YXdhaXQgUHJvbWlzZS5hbGwoW3MuZ2V0QXN5bmMoIkZpbHRlciIpLHMuZ2V0QXN5bmMoIkRlY29kZVBhcm1zIildKSxvPWlzTmFtZShBcnJheS5pc0FycmF5KHIpP2F3YWl0IHMueHJlZi5mZXRjaElmUmVmQXN5bmMoclswXSk6ciwiRmxhdGVEZWNvZGUiKTtpZihhLmxlbmd0aD49MjU2fHxvKXRyeXtjb25zdCBlPW5ldyBDb21wcmVzc2lvblN0cmVhbSgiZGVmbGF0ZSIpLHQ9ZS53cml0YWJsZS5nZXRXcml0ZXIoKTt0LndyaXRlKGEpO3QuY2xvc2UoKTtjb25zdCBpPWF3YWl0IG5ldyBSZXNwb25zZShlLnJlYWRhYmxlKS5hcnJheUJ1ZmZlcigpO2E9bmV3IFVpbnQ4QXJyYXkoaSk7bGV0IGcsYztpZihyKXtpZighbyl7Zz1BcnJheS5pc0FycmF5KHIpP1tOYW1lLmdldCgiRmxhdGVEZWNvZGUiKSwuLi5yXTpbTmFtZS5nZXQoIkZsYXRlRGVjb2RlIikscl07biYmKGM9QXJyYXkuaXNBcnJheShuKT9bbnVsbCwuLi5uXTpbbnVsbCxuXSl9fWVsc2UgZz1OYW1lLmdldCgiRmxhdGVEZWNvZGUiKTtnJiZzLnNldCgiRmlsdGVyIixnKTtjJiZzLnNldCgiRGVjb2RlUGFybXMiLGMpfWNhdGNoKGUpe2luZm8oYHdyaXRlU3RyZWFtIC0gY2Fubm90IGNvbXByZXNzIGRhdGE6ICIke2V9Ii5gKX1sZXQgZz1ieXRlc1RvU3RyaW5nKGEpO2kmJihnPWkuZW5jcnlwdFN0cmluZyhnKSk7cy5zZXQoIkxlbmd0aCIsZy5sZW5ndGgpO2F3YWl0IHdyaXRlRGljdChzLHQsaSk7dC5wdXNoKCIgc3RyZWFtXG4iLGcsIlxuZW5kc3RyZWFtIil9YXN5bmMgZnVuY3Rpb24gd3JpdGVBcnJheShlLHQsaSl7dC5wdXNoKCJbIik7bGV0IGE9ITA7Zm9yKGNvbnN0IHMgb2YgZSl7YT9hPSExOnQucHVzaCgiICIpO2F3YWl0IHdyaXRlVmFsdWUocyx0LGkpfXQucHVzaCgiXSIpfWFzeW5jIGZ1bmN0aW9uIHdyaXRlVmFsdWUoZSx0LGkpe2lmKGUgaW5zdGFuY2VvZiBOYW1lKXQucHVzaChgLyR7ZXNjYXBlUERGTmFtZShlLm5hbWUpfWApO2Vsc2UgaWYoZSBpbnN0YW5jZW9mIFJlZil0LnB1c2goYCR7ZS5udW19ICR7ZS5nZW59IFJgKTtlbHNlIGlmKEFycmF5LmlzQXJyYXkoZSl8fEFycmF5QnVmZmVyLmlzVmlldyhlKSlhd2FpdCB3cml0ZUFycmF5KGUsdCxpKTtlbHNlIGlmKCJzdHJpbmciPT10eXBlb2YgZSl7aSYmKGU9aS5lbmNyeXB0U3RyaW5nKGUpKTt0LnB1c2goYCgke2VzY2FwZVN0cmluZyhlKX0pYCl9ZWxzZSJudW1iZXIiPT10eXBlb2YgZT90LnB1c2gobnVtYmVyVG9TdHJpbmcoZSkpOiJib29sZWFuIj09dHlwZW9mIGU/dC5wdXNoKGUudG9TdHJpbmcoKSk6ZSBpbnN0YW5jZW9mIERpY3Q/YXdhaXQgd3JpdGVEaWN0KGUsdCxpKTplIGluc3RhbmNlb2YgQmFzZVN0cmVhbT9hd2FpdCB3cml0ZVN0cmVhbShlLHQsaSk6bnVsbD09PWU/dC5wdXNoKCJudWxsIik6d2FybihgVW5oYW5kbGVkIHZhbHVlIGluIHdyaXRlcjogJHt0eXBlb2YgZX0sIHBsZWFzZSBmaWxlIGEgYnVnLmApfWZ1bmN0aW9uIHdyaXRlSW50KGUsdCxpLGEpe2ZvcihsZXQgcz10K2ktMTtzPmktMTtzLS0pe2Fbc109MjU1JmU7ZT4+PTh9cmV0dXJuIGkrdH1mdW5jdGlvbiB3cml0ZVN0cmluZyhlLHQsaSl7Zm9yKGxldCBhPTAscz1lLmxlbmd0aDthPHM7YSsrKWlbdCthXT0yNTUmZS5jaGFyQ29kZUF0KGEpfWZ1bmN0aW9uIHVwZGF0ZVhGQSh7eGZhRGF0YTplLHhmYURhdGFzZXRzUmVmOnQsbmV3UmVmczppLHhyZWY6YX0pe2lmKG51bGw9PT1lKXtlPWZ1bmN0aW9uIHdyaXRlWEZBRGF0YUZvckFjcm9mb3JtKGUsdCl7Y29uc3QgaT1uZXcgU2ltcGxlWE1MUGFyc2VyKHtoYXNBdHRyaWJ1dGVzOiEwfSkucGFyc2VGcm9tU3RyaW5nKGUpO2Zvcihjb25zdHt4ZmE6ZX1vZiB0KXtpZighZSljb250aW51ZTtjb25zdHtwYXRoOnQsdmFsdWU6YX09ZTtpZighdCljb250aW51ZTtjb25zdCBzPXBhcnNlWEZBUGF0aCh0KTtsZXQgcj1pLmRvY3VtZW50RWxlbWVudC5zZWFyY2hOb2RlKHMsMCk7IXImJnMubGVuZ3RoPjEmJihyPWkuZG9jdW1lbnRFbGVtZW50LnNlYXJjaE5vZGUoW3MuYXQoLTEpXSwwKSk7cj9yLmNoaWxkTm9kZXM9QXJyYXkuaXNBcnJheShhKT9hLm1hcCgoZT0+bmV3IFNpbXBsZURPTU5vZGUoInZhbHVlIixlKSkpOltuZXcgU2ltcGxlRE9NTm9kZSgiI3RleHQiLGEpXTp3YXJuKGBOb2RlIG5vdCBmb3VuZCBmb3IgcGF0aDogJHt0fWApfWNvbnN0IGE9W107aS5kb2N1bWVudEVsZW1lbnQuZHVtcChhKTtyZXR1cm4gYS5qb2luKCIiKX0oYS5mZXRjaElmUmVmKHQpLmdldFN0cmluZygpLGkpfWNvbnN0IHM9YS5lbmNyeXB0O2lmKHMpe2U9cy5jcmVhdGVDaXBoZXJUcmFuc2Zvcm0odC5udW0sdC5nZW4pLmVuY3J5cHRTdHJpbmcoZSl9Y29uc3Qgcj1gJHt0Lm51bX0gJHt0Lmdlbn0gb2JqXG48PCAvVHlwZSAvRW1iZWRkZWRGaWxlIC9MZW5ndGggJHtlLmxlbmd0aH0+Plxuc3RyZWFtXG5gK2UrIlxuZW5kc3RyZWFtXG5lbmRvYmpcbiI7aS5wdXNoKHtyZWY6dCxkYXRhOnJ9KX1mdW5jdGlvbiBnZXRJbmRleGVzKGUpe2NvbnN0IHQ9W107Zm9yKGNvbnN0e3JlZjppfW9mIGUpaS5udW09PT10LmF0KC0yKSt0LmF0KC0xKT90W3QubGVuZ3RoLTFdKz0xOnQucHVzaChpLm51bSwxKTtyZXR1cm4gdH1mdW5jdGlvbiBjb21wdXRlSURzKGUsdCxpKXtpZihBcnJheS5pc0FycmF5KHQuZmlsZUlkcykmJnQuZmlsZUlkcy5sZW5ndGg+MCl7Y29uc3QgYT1mdW5jdGlvbiBjb21wdXRlTUQ1KGUsdCl7Y29uc3QgaT1NYXRoLmZsb29yKERhdGUubm93KCkvMWUzKSxhPXQuZmlsZW5hbWV8fCIiLHM9W2kudG9TdHJpbmcoKSxhLGUudG9TdHJpbmcoKV07bGV0IHI9cy5yZWR1Y2UoKChlLHQpPT5lK3QubGVuZ3RoKSwwKTtmb3IoY29uc3QgZSBvZiBPYmplY3QudmFsdWVzKHQuaW5mbykpe3MucHVzaChlKTtyKz1lLmxlbmd0aH1jb25zdCBuPW5ldyBVaW50OEFycmF5KHIpO2xldCBvPTA7Zm9yKGNvbnN0IGUgb2Ygcyl7d3JpdGVTdHJpbmcoZSxvLG4pO28rPWUubGVuZ3RofXJldHVybiBieXRlc1RvU3RyaW5nKEhzKG4pKX0oZSx0KTtpLnNldCgiSUQiLFt0LmZpbGVJZHNbMF0sYV0pfX1hc3luYyBmdW5jdGlvbiBpbmNyZW1lbnRhbFVwZGF0ZSh7b3JpZ2luYWxEYXRhOmUseHJlZkluZm86dCxuZXdSZWZzOmkseHJlZjphPW51bGwsaGFzWGZhOnM9ITEseGZhRGF0YXNldHNSZWY6cj1udWxsLGhhc1hmYURhdGFzZXRzRW50cnk6bj0hMSxuZWVkQXBwZWFyYW5jZXM6byxhY3JvRm9ybVJlZjpnPW51bGwsYWNyb0Zvcm06Yz1udWxsLHhmYURhdGE6Qz1udWxsLHVzZVhyZWZTdHJlYW06aD0hMX0pe2F3YWl0IGFzeW5jIGZ1bmN0aW9uIHVwZGF0ZUFjcm9mb3JtKHt4cmVmOmUsYWNyb0Zvcm06dCxhY3JvRm9ybVJlZjppLGhhc1hmYTphLGhhc1hmYURhdGFzZXRzRW50cnk6cyx4ZmFEYXRhc2V0c1JlZjpyLG5lZWRBcHBlYXJhbmNlczpuLG5ld1JlZnM6b30peyFhfHxzfHxyfHx3YXJuKCJYRkEgLSBDYW5ub3Qgc2F2ZSBpdCIpO2lmKCFuJiYoIWF8fCFyfHxzKSlyZXR1cm47Y29uc3QgZz10LmNsb25lKCk7aWYoYSYmIXMpe2NvbnN0IGU9dC5nZXQoIlhGQSIpLnNsaWNlKCk7ZS5zcGxpY2UoMiwwLCJkYXRhc2V0cyIpO2Uuc3BsaWNlKDMsMCxyKTtnLnNldCgiWEZBIixlKX1uJiZnLnNldCgiTmVlZEFwcGVhcmFuY2VzIiwhMCk7Y29uc3QgYz1bXTthd2FpdCB3cml0ZU9iamVjdChpLGcsYyxlKTtvLnB1c2goe3JlZjppLGRhdGE6Yy5qb2luKCIiKX0pfSh7eHJlZjphLGFjcm9Gb3JtOmMsYWNyb0Zvcm1SZWY6ZyxoYXNYZmE6cyxoYXNYZmFEYXRhc2V0c0VudHJ5Om4seGZhRGF0YXNldHNSZWY6cixuZWVkQXBwZWFyYW5jZXM6byxuZXdSZWZzOml9KTtzJiZ1cGRhdGVYRkEoe3hmYURhdGE6Qyx4ZmFEYXRhc2V0c1JlZjpyLG5ld1JlZnM6aSx4cmVmOmF9KTtjb25zdCBsPVtdO2xldCBRPWUubGVuZ3RoO2NvbnN0IEU9ZS5hdCgtMSk7aWYoMTAhPT1FJiYxMyE9PUUpe2wucHVzaCgiXG4iKTtRKz0xfWNvbnN0IHU9ZnVuY3Rpb24gZ2V0VHJhaWxlckRpY3QoZSx0LGkpe2NvbnN0IGE9bmV3IERpY3QobnVsbCk7YS5zZXQoIlByZXYiLGUuc3RhcnRYUmVmKTtjb25zdCBzPWUubmV3UmVmO2lmKGkpe3QucHVzaCh7cmVmOnMsZGF0YToiIn0pO2Euc2V0KCJTaXplIixzLm51bSsxKTthLnNldCgiVHlwZSIsTmFtZS5nZXQoIlhSZWYiKSl9ZWxzZSBhLnNldCgiU2l6ZSIscy5udW0pO251bGwhPT1lLnJvb3RSZWYmJmEuc2V0KCJSb290IixlLnJvb3RSZWYpO251bGwhPT1lLmluZm9SZWYmJmEuc2V0KCJJbmZvIixlLmluZm9SZWYpO251bGwhPT1lLmVuY3J5cHRSZWYmJmEuc2V0KCJFbmNyeXB0IixlLmVuY3J5cHRSZWYpO3JldHVybiBhfSh0LGksaCk7aT1pLnNvcnQoKChlLHQpPT5lLnJlZi5udW0tdC5yZWYubnVtKSk7Zm9yKGNvbnN0e2RhdGE6ZX1vZiBpKW51bGwhPT1lJiZsLnB1c2goZSk7YXdhaXQoaD9hc3luYyBmdW5jdGlvbiBnZXRYUmVmU3RyZWFtVGFibGUoZSx0LGksYSxzKXtjb25zdCByPVtdO2xldCBuPTAsbz0wO2Zvcihjb25zdHtyZWY6ZSxkYXRhOmF9b2YgaSl7bGV0IGk7bj1NYXRoLm1heChuLHQpO2lmKG51bGwhPT1hKXtpPU1hdGgubWluKGUuZ2VuLDY1NTM1KTtyLnB1c2goWzEsdCxpXSk7dCs9YS5sZW5ndGh9ZWxzZXtpPU1hdGgubWluKGUuZ2VuKzEsNjU1MzUpO3IucHVzaChbMCwwLGldKX1vPU1hdGgubWF4KG8saSl9YS5zZXQoIkluZGV4IixnZXRJbmRleGVzKGkpKTtjb25zdCBnPVsxLGdldFNpemVJbkJ5dGVzKG4pLGdldFNpemVJbkJ5dGVzKG8pXTthLnNldCgiVyIsZyk7Y29tcHV0ZUlEcyh0LGUsYSk7Y29uc3QgYz1nLnJlZHVjZSgoKGUsdCk9PmUrdCksMCksQz1uZXcgVWludDhBcnJheShjKnIubGVuZ3RoKSxoPW5ldyBTdHJlYW0oQyk7aC5kaWN0PWE7bGV0IGw9MDtmb3IoY29uc3RbZSx0LGldb2Ygcil7bD13cml0ZUludChlLGdbMF0sbCxDKTtsPXdyaXRlSW50KHQsZ1sxXSxsLEMpO2w9d3JpdGVJbnQoaSxnWzJdLGwsQyl9YXdhaXQgd3JpdGVPYmplY3QoZS5uZXdSZWYsaCxzLHt9KTtzLnB1c2goInN0YXJ0eHJlZlxuIix0LnRvU3RyaW5nKCksIlxuJSVFT0ZcbiIpfSh0LFEsaSx1LGwpOmFzeW5jIGZ1bmN0aW9uIGdldFhSZWZUYWJsZShlLHQsaSxhLHMpe3MucHVzaCgieHJlZlxuIik7Y29uc3Qgcj1nZXRJbmRleGVzKGkpO2xldCBuPTA7Zm9yKGNvbnN0e3JlZjplLGRhdGE6YX1vZiBpKXtpZihlLm51bT09PXJbbl0pe3MucHVzaChgJHtyW25dfSAke3JbbisxXX1cbmApO24rPTJ9aWYobnVsbCE9PWEpe3MucHVzaChgJHt0LnRvU3RyaW5nKCkucGFkU3RhcnQoMTAsIjAiKX0gJHtNYXRoLm1pbihlLmdlbiw2NTUzNSkudG9TdHJpbmcoKS5wYWRTdGFydCg1LCIwIil9IG5cclxuYCk7dCs9YS5sZW5ndGh9ZWxzZSBzLnB1c2goYDAwMDAwMDAwMDAgJHtNYXRoLm1pbihlLmdlbisxLDY1NTM1KS50b1N0cmluZygpLnBhZFN0YXJ0KDUsIjAiKX0gZlxyXG5gKX1jb21wdXRlSURzKHQsZSxhKTtzLnB1c2goInRyYWlsZXJcbiIpO2F3YWl0IHdyaXRlRGljdChhLHMpO3MucHVzaCgiXG5zdGFydHhyZWZcbiIsdC50b1N0cmluZygpLCJcbiUlRU9GXG4iKX0odCxRLGksdSxsKSk7Y29uc3QgZD1sLnJlZHVjZSgoKGUsdCk9PmUrdC5sZW5ndGgpLGUubGVuZ3RoKSxmPW5ldyBVaW50OEFycmF5KGQpO2Yuc2V0KGUpO2xldCBwPWUubGVuZ3RoO2Zvcihjb25zdCBlIG9mIGwpe3dyaXRlU3RyaW5nKGUscCxmKTtwKz1lLmxlbmd0aH1yZXR1cm4gZn1jb25zdCB2cz0xLEtzPTIsVHM9Myxxcz00LE9zPTU7Y2xhc3MgU3RydWN0VHJlZVJvb3R7Y29uc3RydWN0b3IoZSx0KXt0aGlzLmRpY3Q9ZTt0aGlzLnJlZj10IGluc3RhbmNlb2YgUmVmP3Q6bnVsbDt0aGlzLnJvbGVNYXA9bmV3IE1hcDt0aGlzLnN0cnVjdFBhcmVudElkcz1udWxsfWluaXQoKXt0aGlzLnJlYWRSb2xlTWFwKCl9I1IoZSx0LGkpe2lmKCEoZSBpbnN0YW5jZW9mIFJlZil8fHQ8MClyZXR1cm47dGhpcy5zdHJ1Y3RQYXJlbnRJZHN8fD1uZXcgUmVmU2V0Q2FjaGU7bGV0IGE9dGhpcy5zdHJ1Y3RQYXJlbnRJZHMuZ2V0KGUpO2lmKCFhKXthPVtdO3RoaXMuc3RydWN0UGFyZW50SWRzLnB1dChlLGEpfWEucHVzaChbdCxpXSl9YWRkQW5ub3RhdGlvbklkVG9QYWdlKGUsdCl7dGhpcy4jUihlLHQscXMpfXJlYWRSb2xlTWFwKCl7Y29uc3QgZT10aGlzLmRpY3QuZ2V0KCJSb2xlTWFwIik7ZSBpbnN0YW5jZW9mIERpY3QmJmUuZm9yRWFjaCgoKGUsdCk9Pnt0IGluc3RhbmNlb2YgTmFtZSYmdGhpcy5yb2xlTWFwLnNldChlLHQubmFtZSl9KSl9c3RhdGljIGFzeW5jIGNhbkNyZWF0ZVN0cnVjdHVyZVRyZWUoe2NhdGFsb2dSZWY6ZSxwZGZNYW5hZ2VyOnQsbmV3QW5ub3RhdGlvbnNCeVBhZ2U6aX0pe2lmKCEoZSBpbnN0YW5jZW9mIFJlZikpe3dhcm4oIkNhbm5vdCBzYXZlIHRoZSBzdHJ1Y3QgdHJlZTogbm8gY2F0YWxvZyByZWZlcmVuY2UuIik7cmV0dXJuITF9bGV0IGE9MCxzPSEwO2Zvcihjb25zdFtlLHJdb2YgaSl7Y29uc3R7cmVmOml9PWF3YWl0IHQuZ2V0UGFnZShlKTtpZighKGkgaW5zdGFuY2VvZiBSZWYpKXt3YXJuKGBDYW5ub3Qgc2F2ZSB0aGUgc3RydWN0IHRyZWU6IHBhZ2UgJHtlfSBoYXMgbm8gcmVmLmApO3M9ITA7YnJlYWt9Zm9yKGNvbnN0IGUgb2YgcilpZihlLmFjY2Vzc2liaWxpdHlEYXRhPy50eXBlKXtlLnBhcmVudFRyZWVJZD1hKys7cz0hMX19aWYocyl7Zm9yKGNvbnN0IGUgb2YgaS52YWx1ZXMoKSlmb3IoY29uc3QgdCBvZiBlKWRlbGV0ZSB0LnBhcmVudFRyZWVJZDtyZXR1cm4hMX1yZXR1cm4hMH1zdGF0aWMgYXN5bmMgY3JlYXRlU3RydWN0dXJlVHJlZSh7bmV3QW5ub3RhdGlvbnNCeVBhZ2U6ZSx4cmVmOnQsY2F0YWxvZ1JlZjppLHBkZk1hbmFnZXI6YSxuZXdSZWZzOnN9KXtjb25zdCByPWEuY2F0YWxvZy5jbG9uZURpY3QoKSxuPW5ldyBSZWZTZXRDYWNoZTtuLnB1dChpLHIpO2NvbnN0IG89dC5nZXROZXdUZW1wb3JhcnlSZWYoKTtyLnNldCgiU3RydWN0VHJlZVJvb3QiLG8pO2NvbnN0IGc9bmV3IERpY3QodCk7Zy5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJTdHJ1Y3RUcmVlUm9vdCIpKTtjb25zdCBjPXQuZ2V0TmV3VGVtcG9yYXJ5UmVmKCk7Zy5zZXQoIlBhcmVudFRyZWUiLGMpO2NvbnN0IEM9W107Zy5zZXQoIksiLEMpO24ucHV0KG8sZyk7Y29uc3QgaD1uZXcgRGljdCh0KSxsPVtdO2guc2V0KCJOdW1zIixsKTtjb25zdCBRPWF3YWl0IHRoaXMuI0coe25ld0Fubm90YXRpb25zQnlQYWdlOmUsc3RydWN0VHJlZVJvb3RSZWY6byxraWRzOkMsbnVtczpsLHhyZWY6dCxwZGZNYW5hZ2VyOmEsY2FjaGU6bn0pO2cuc2V0KCJQYXJlbnRUcmVlTmV4dEtleSIsUSk7bi5wdXQoYyxoKTtjb25zdCBFPVtdO2Zvcihjb25zdFtlLGldb2Ygbi5pdGVtcygpKXtFLmxlbmd0aD0wO2F3YWl0IHdyaXRlT2JqZWN0KGUsaSxFLHQpO3MucHVzaCh7cmVmOmUsZGF0YTpFLmpvaW4oIiIpfSl9fWFzeW5jIGNhblVwZGF0ZVN0cnVjdFRyZWUoe3BkZk1hbmFnZXI6ZSx4cmVmOnQsbmV3QW5ub3RhdGlvbnNCeVBhZ2U6aX0pe2lmKCF0aGlzLnJlZil7d2FybigiQ2Fubm90IHVwZGF0ZSB0aGUgc3RydWN0IHRyZWU6IG5vIHJvb3QgcmVmZXJlbmNlLiIpO3JldHVybiExfWxldCBhPXRoaXMuZGljdC5nZXQoIlBhcmVudFRyZWVOZXh0S2V5Iik7aWYoIU51bWJlci5pc0ludGVnZXIoYSl8fGE8MCl7d2FybigiQ2Fubm90IHVwZGF0ZSB0aGUgc3RydWN0IHRyZWU6IGludmFsaWQgbmV4dCBrZXkuIik7cmV0dXJuITF9Y29uc3Qgcz10aGlzLmRpY3QuZ2V0KCJQYXJlbnRUcmVlIik7aWYoIShzIGluc3RhbmNlb2YgRGljdCkpe3dhcm4oIkNhbm5vdCB1cGRhdGUgdGhlIHN0cnVjdCB0cmVlOiBQYXJlbnRUcmVlIGlzbid0IGEgZGljdC4iKTtyZXR1cm4hMX1jb25zdCByPXMuZ2V0KCJOdW1zIik7aWYoIUFycmF5LmlzQXJyYXkocikpe3dhcm4oIkNhbm5vdCB1cGRhdGUgdGhlIHN0cnVjdCB0cmVlOiBudW1zIGlzbid0IGFuIGFycmF5LiIpO3JldHVybiExfWNvbnN0IG49bmV3IE51bWJlclRyZWUocyx0KTtmb3IoY29uc3QgdCBvZiBpLmtleXMoKSl7Y29uc3R7cGFnZURpY3Q6aX09YXdhaXQgZS5nZXRQYWdlKHQpO2lmKCFpLmhhcygiU3RydWN0UGFyZW50cyIpKWNvbnRpbnVlO2NvbnN0IGE9aS5nZXQoIlN0cnVjdFBhcmVudHMiKTtpZighTnVtYmVyLmlzSW50ZWdlcihhKXx8IUFycmF5LmlzQXJyYXkobi5nZXQoYSkpKXt3YXJuKGBDYW5ub3Qgc2F2ZSB0aGUgc3RydWN0IHRyZWU6IHBhZ2UgJHt0fSBoYXMgYSB3cm9uZyBpZC5gKTtyZXR1cm4hMX19bGV0IG89ITA7Zm9yKGNvbnN0W3Qsc11vZiBpKXtjb25zdHtwYWdlRGljdDppfT1hd2FpdCBlLmdldFBhZ2UodCk7U3RydWN0VHJlZVJvb3QuI3goe2VsZW1lbnRzOnMseHJlZjp0aGlzLmRpY3QueHJlZixwYWdlRGljdDppLG51bWJlclRyZWU6bn0pO2Zvcihjb25zdCBlIG9mIHMpaWYoZS5hY2Nlc3NpYmlsaXR5RGF0YT8udHlwZSl7ZS5wYXJlbnRUcmVlSWQ9YSsrO289ITF9fWlmKG8pe2Zvcihjb25zdCBlIG9mIGkudmFsdWVzKCkpZm9yKGNvbnN0IHQgb2YgZSl7ZGVsZXRlIHQucGFyZW50VHJlZUlkO2RlbGV0ZSB0LnN0cnVjdFRyZWVQYXJlbnR9cmV0dXJuITF9cmV0dXJuITB9YXN5bmMgdXBkYXRlU3RydWN0dXJlVHJlZSh7bmV3QW5ub3RhdGlvbnNCeVBhZ2U6ZSxwZGZNYW5hZ2VyOnQsbmV3UmVmczppfSl7Y29uc3QgYT10aGlzLmRpY3QueHJlZixzPXRoaXMuZGljdC5jbG9uZSgpLHI9dGhpcy5yZWYsbj1uZXcgUmVmU2V0Q2FjaGU7bi5wdXQocixzKTtsZXQgbyxnPXMuZ2V0UmF3KCJQYXJlbnRUcmVlIik7aWYoZyBpbnN0YW5jZW9mIFJlZilvPWEuZmV0Y2goZyk7ZWxzZXtvPWc7Zz1hLmdldE5ld1RlbXBvcmFyeVJlZigpO3Muc2V0KCJQYXJlbnRUcmVlIixnKX1vPW8uY2xvbmUoKTtuLnB1dChnLG8pO2xldCBjPW8uZ2V0UmF3KCJOdW1zIiksQz1udWxsO2lmKGMgaW5zdGFuY2VvZiBSZWYpe0M9YztjPWEuZmV0Y2goQyl9Yz1jLnNsaWNlKCk7Q3x8by5zZXQoIk51bXMiLGMpO2NvbnN0IGg9YXdhaXQgU3RydWN0VHJlZVJvb3QuI0coe25ld0Fubm90YXRpb25zQnlQYWdlOmUsc3RydWN0VHJlZVJvb3RSZWY6cixraWRzOm51bGwsbnVtczpjLHhyZWY6YSxwZGZNYW5hZ2VyOnQsY2FjaGU6bn0pO3Muc2V0KCJQYXJlbnRUcmVlTmV4dEtleSIsaCk7QyYmbi5wdXQoQyxjKTtjb25zdCBsPVtdO2Zvcihjb25zdFtlLHRdb2Ygbi5pdGVtcygpKXtsLmxlbmd0aD0wO2F3YWl0IHdyaXRlT2JqZWN0KGUsdCxsLGEpO2kucHVzaCh7cmVmOmUsZGF0YTpsLmpvaW4oIiIpfSl9fXN0YXRpYyBhc3luYyNHKHtuZXdBbm5vdGF0aW9uc0J5UGFnZTplLHN0cnVjdFRyZWVSb290UmVmOnQsa2lkczppLG51bXM6YSx4cmVmOnMscGRmTWFuYWdlcjpyLGNhY2hlOm59KXtjb25zdCBvPU5hbWUuZ2V0KCJPQkpSIik7bGV0IGc9LTEvMDtmb3IoY29uc3RbYyxDXW9mIGUpe2NvbnN0e3JlZjplfT1hd2FpdCByLmdldFBhZ2UoYyksaD1lIGluc3RhbmNlb2YgUmVmO2Zvcihjb25zdHthY2Nlc3NpYmlsaXR5RGF0YTpyLHJlZjpjLHBhcmVudFRyZWVJZDpsLHN0cnVjdFRyZWVQYXJlbnQ6UX1vZiBDKXtpZighcj8udHlwZSljb250aW51ZTtjb25zdHt0eXBlOkMsdGl0bGU6RSxsYW5nOnUsYWx0OmQsZXhwYW5kZWQ6ZixhY3R1YWxUZXh0OnB9PXI7Zz1NYXRoLm1heChnLGwpO2NvbnN0IG09cy5nZXROZXdUZW1wb3JhcnlSZWYoKSx5PW5ldyBEaWN0KHMpO3kuc2V0KCJTIixOYW1lLmdldChDKSk7RSYmeS5zZXQoIlQiLEUpO3UmJnkuc2V0KCJMYW5nIix1KTtkJiZ5LnNldCgiQWx0IixkKTtmJiZ5LnNldCgiRSIsZik7cCYmeS5zZXQoIkFjdHVhbFRleHQiLHApO2F3YWl0IHRoaXMuI1Uoe3N0cnVjdFRyZWVQYXJlbnQ6USx0YWdEaWN0OnksbmV3VGFnUmVmOm0sc3RydWN0VHJlZVJvb3RSZWY6dCxmYWxsYmFja0tpZHM6aSx4cmVmOnMsY2FjaGU6bn0pO2NvbnN0IHc9bmV3IERpY3Qocyk7eS5zZXQoIksiLHcpO3cuc2V0KCJUeXBlIixvKTtoJiZ3LnNldCgiUGciLGUpO3cuc2V0KCJPYmoiLGMpO24ucHV0KG0seSk7YS5wdXNoKGwsbSl9fXJldHVybiBnKzF9c3RhdGljI3goe2VsZW1lbnRzOmUseHJlZjp0LHBhZ2VEaWN0OmksbnVtYmVyVHJlZTphfSl7Y29uc3Qgcz1uZXcgTWFwO2Zvcihjb25zdCB0IG9mIGUpaWYodC5zdHJ1Y3RUcmVlUGFyZW50SWQpe2NvbnN0IGU9cGFyc2VJbnQodC5zdHJ1Y3RUcmVlUGFyZW50SWQuc3BsaXQoIl9tYyIpWzFdLDEwKTtsZXQgaT1zLmdldChlKTtpZighaSl7aT1bXTtzLnNldChlLGkpfWkucHVzaCh0KX1jb25zdCByPWkuZ2V0KCJTdHJ1Y3RQYXJlbnRzIik7aWYoIU51bWJlci5pc0ludGVnZXIocikpcmV0dXJuO2NvbnN0IG49YS5nZXQociksdXBkYXRlRWxlbWVudD0oZSxpLGEpPT57Y29uc3Qgcj1zLmdldChlKTtpZihyKXtjb25zdCBlPWkuZ2V0UmF3KCJQIikscz10LmZldGNoSWZSZWYoZSk7aWYoZSBpbnN0YW5jZW9mIFJlZiYmcyBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IGU9e3JlZjphLGRpY3Q6aX07Zm9yKGNvbnN0IHQgb2Ygcil0LnN0cnVjdFRyZWVQYXJlbnQ9ZX1yZXR1cm4hMH1yZXR1cm4hMX07Zm9yKGNvbnN0IGUgb2Ygbil7aWYoIShlIGluc3RhbmNlb2YgUmVmKSljb250aW51ZTtjb25zdCBpPXQuZmV0Y2goZSksYT1pLmdldCgiSyIpO2lmKE51bWJlci5pc0ludGVnZXIoYSkpdXBkYXRlRWxlbWVudChhLGksZSk7ZWxzZSBpZihBcnJheS5pc0FycmF5KGEpKWZvcihsZXQgcyBvZiBhKXtzPXQuZmV0Y2hJZlJlZihzKTtpZihOdW1iZXIuaXNJbnRlZ2VyKHMpJiZ1cGRhdGVFbGVtZW50KHMsaSxlKSlicmVhaztpZighKHMgaW5zdGFuY2VvZiBEaWN0KSljb250aW51ZTtpZighaXNOYW1lKHMuZ2V0KCJUeXBlIiksIk1DUiIpKWJyZWFrO2NvbnN0IGE9cy5nZXQoIk1DSUQiKTtpZihOdW1iZXIuaXNJbnRlZ2VyKGEpJiZ1cGRhdGVFbGVtZW50KGEsaSxlKSlicmVha319fXN0YXRpYyBhc3luYyNVKHtzdHJ1Y3RUcmVlUGFyZW50OmUsdGFnRGljdDp0LG5ld1RhZ1JlZjppLHN0cnVjdFRyZWVSb290UmVmOmEsZmFsbGJhY2tLaWRzOnMseHJlZjpyLGNhY2hlOm59KXtsZXQgbyxnPW51bGw7aWYoZSl7KHtyZWY6Z309ZSk7bz1lLmRpY3QuZ2V0UmF3KCJQIil8fGF9ZWxzZSBvPWE7dC5zZXQoIlAiLG8pO2NvbnN0IGM9ci5mZXRjaElmUmVmKG8pO2lmKCFjKXtzLnB1c2goaSk7cmV0dXJufWxldCBDPW4uZ2V0KG8pO2lmKCFDKXtDPWMuY2xvbmUoKTtuLnB1dChvLEMpfWNvbnN0IGg9Qy5nZXRSYXcoIksiKTtsZXQgbD1oIGluc3RhbmNlb2YgUmVmP24uZ2V0KGgpOm51bGw7aWYoIWwpe2w9ci5mZXRjaElmUmVmKGgpO2w9QXJyYXkuaXNBcnJheShsKT9sLnNsaWNlKCk6W2hdO2NvbnN0IGU9ci5nZXROZXdUZW1wb3JhcnlSZWYoKTtDLnNldCgiSyIsZSk7bi5wdXQoZSxsKX1jb25zdCBRPWwuaW5kZXhPZihnKTtsLnNwbGljZShRPj0wP1ErMTpsLmxlbmd0aCwwLGkpfX1jbGFzcyBTdHJ1Y3RFbGVtZW50Tm9kZXtjb25zdHJ1Y3RvcihlLHQpe3RoaXMudHJlZT1lO3RoaXMuZGljdD10O3RoaXMua2lkcz1bXTt0aGlzLnBhcnNlS2lkcygpfWdldCByb2xlKCl7Y29uc3QgZT10aGlzLmRpY3QuZ2V0KCJTIiksdD1lIGluc3RhbmNlb2YgTmFtZT9lLm5hbWU6IiIse3Jvb3Q6aX09dGhpcy50cmVlO3JldHVybiBpLnJvbGVNYXAuaGFzKHQpP2kucm9sZU1hcC5nZXQodCk6dH1wYXJzZUtpZHMoKXtsZXQgZT1udWxsO2NvbnN0IHQ9dGhpcy5kaWN0LmdldFJhdygiUGciKTt0IGluc3RhbmNlb2YgUmVmJiYoZT10LnRvU3RyaW5nKCkpO2NvbnN0IGk9dGhpcy5kaWN0LmdldCgiSyIpO2lmKEFycmF5LmlzQXJyYXkoaSkpZm9yKGNvbnN0IHQgb2YgaSl7Y29uc3QgaT10aGlzLnBhcnNlS2lkKGUsdCk7aSYmdGhpcy5raWRzLnB1c2goaSl9ZWxzZXtjb25zdCB0PXRoaXMucGFyc2VLaWQoZSxpKTt0JiZ0aGlzLmtpZHMucHVzaCh0KX19cGFyc2VLaWQoZSx0KXtpZihOdW1iZXIuaXNJbnRlZ2VyKHQpKXJldHVybiB0aGlzLnRyZWUucGFnZURpY3Qub2JqSWQhPT1lP251bGw6bmV3IFN0cnVjdEVsZW1lbnQoe3R5cGU6dnMsbWNpZDp0LHBhZ2VPYmpJZDplfSk7bGV0IGk9bnVsbDt0IGluc3RhbmNlb2YgUmVmP2k9dGhpcy5kaWN0LnhyZWYuZmV0Y2godCk6dCBpbnN0YW5jZW9mIERpY3QmJihpPXQpO2lmKCFpKXJldHVybiBudWxsO2NvbnN0IGE9aS5nZXRSYXcoIlBnIik7YSBpbnN0YW5jZW9mIFJlZiYmKGU9YS50b1N0cmluZygpKTtjb25zdCBzPWkuZ2V0KCJUeXBlIilpbnN0YW5jZW9mIE5hbWU/aS5nZXQoIlR5cGUiKS5uYW1lOm51bGw7aWYoIk1DUiI9PT1zKXtpZih0aGlzLnRyZWUucGFnZURpY3Qub2JqSWQhPT1lKXJldHVybiBudWxsO2NvbnN0IHQ9aS5nZXRSYXcoIlN0bSIpO3JldHVybiBuZXcgU3RydWN0RWxlbWVudCh7dHlwZTpLcyxyZWZPYmpJZDp0IGluc3RhbmNlb2YgUmVmP3QudG9TdHJpbmcoKTpudWxsLHBhZ2VPYmpJZDplLG1jaWQ6aS5nZXQoIk1DSUQiKX0pfWlmKCJPQkpSIj09PXMpe2lmKHRoaXMudHJlZS5wYWdlRGljdC5vYmpJZCE9PWUpcmV0dXJuIG51bGw7Y29uc3QgdD1pLmdldFJhdygiT2JqIik7cmV0dXJuIG5ldyBTdHJ1Y3RFbGVtZW50KHt0eXBlOlRzLHJlZk9iaklkOnQgaW5zdGFuY2VvZiBSZWY/dC50b1N0cmluZygpOm51bGwscGFnZU9iaklkOmV9KX1yZXR1cm4gbmV3IFN0cnVjdEVsZW1lbnQoe3R5cGU6T3MsZGljdDppfSl9fWNsYXNzIFN0cnVjdEVsZW1lbnR7Y29uc3RydWN0b3Ioe3R5cGU6ZSxkaWN0OnQ9bnVsbCxtY2lkOmk9bnVsbCxwYWdlT2JqSWQ6YT1udWxsLHJlZk9iaklkOnM9bnVsbH0pe3RoaXMudHlwZT1lO3RoaXMuZGljdD10O3RoaXMubWNpZD1pO3RoaXMucGFnZU9iaklkPWE7dGhpcy5yZWZPYmpJZD1zO3RoaXMucGFyZW50Tm9kZT1udWxsfX1jbGFzcyBTdHJ1Y3RUcmVlUGFnZXtjb25zdHJ1Y3RvcihlLHQpe3RoaXMucm9vdD1lO3RoaXMucm9vdERpY3Q9ZT9lLmRpY3Q6bnVsbDt0aGlzLnBhZ2VEaWN0PXQ7dGhpcy5ub2Rlcz1bXX1wYXJzZShlKXtpZighdGhpcy5yb290fHwhdGhpcy5yb290RGljdClyZXR1cm47Y29uc3QgdD10aGlzLnJvb3REaWN0LmdldCgiUGFyZW50VHJlZSIpO2lmKCF0KXJldHVybjtjb25zdCBpPXRoaXMucGFnZURpY3QuZ2V0KCJTdHJ1Y3RQYXJlbnRzIiksYT1lIGluc3RhbmNlb2YgUmVmJiZ0aGlzLnJvb3Quc3RydWN0UGFyZW50SWRzPy5nZXQoZSk7aWYoIU51bWJlci5pc0ludGVnZXIoaSkmJiFhKXJldHVybjtjb25zdCBzPW5ldyBNYXAscj1uZXcgTnVtYmVyVHJlZSh0LHRoaXMucm9vdERpY3QueHJlZik7aWYoTnVtYmVyLmlzSW50ZWdlcihpKSl7Y29uc3QgZT1yLmdldChpKTtpZihBcnJheS5pc0FycmF5KGUpKWZvcihjb25zdCB0IG9mIGUpdCBpbnN0YW5jZW9mIFJlZiYmdGhpcy5hZGROb2RlKHRoaXMucm9vdERpY3QueHJlZi5mZXRjaCh0KSxzKX1pZihhKWZvcihjb25zdFtlLHRdb2YgYSl7Y29uc3QgaT1yLmdldChlKTtpZihpKXtjb25zdCBlPXRoaXMuYWRkTm9kZSh0aGlzLnJvb3REaWN0LnhyZWYuZmV0Y2hJZlJlZihpKSxzKTsxPT09ZT8ua2lkcz8ubGVuZ3RoJiZlLmtpZHNbMF0udHlwZT09PVRzJiYoZS5raWRzWzBdLnR5cGU9dCl9fX1hZGROb2RlKGUsdCxpPTApe2lmKGk+NDApe3dhcm4oIlN0cnVjdFRyZWUgTUFYX0RFUFRIIHJlYWNoZWQuIik7cmV0dXJuIG51bGx9aWYodC5oYXMoZSkpcmV0dXJuIHQuZ2V0KGUpO2NvbnN0IGE9bmV3IFN0cnVjdEVsZW1lbnROb2RlKHRoaXMsZSk7dC5zZXQoZSxhKTtjb25zdCBzPWUuZ2V0KCJQIik7aWYoIXN8fGlzTmFtZShzLmdldCgiVHlwZSIpLCJTdHJ1Y3RUcmVlUm9vdCIpKXt0aGlzLmFkZFRvcExldmVsTm9kZShlLGEpfHx0LmRlbGV0ZShlKTtyZXR1cm4gYX1jb25zdCByPXRoaXMuYWRkTm9kZShzLHQsaSsxKTtpZighcilyZXR1cm4gYTtsZXQgbj0hMTtmb3IoY29uc3QgdCBvZiByLmtpZHMpaWYodC50eXBlPT09T3MmJnQuZGljdD09PWUpe3QucGFyZW50Tm9kZT1hO249ITB9bnx8dC5kZWxldGUoZSk7cmV0dXJuIGF9YWRkVG9wTGV2ZWxOb2RlKGUsdCl7Y29uc3QgaT10aGlzLnJvb3REaWN0LmdldCgiSyIpO2lmKCFpKXJldHVybiExO2lmKGkgaW5zdGFuY2VvZiBEaWN0KXtpZihpLm9iaklkIT09ZS5vYmpJZClyZXR1cm4hMTt0aGlzLm5vZGVzWzBdPXQ7cmV0dXJuITB9aWYoIUFycmF5LmlzQXJyYXkoaSkpcmV0dXJuITA7bGV0IGE9ITE7Zm9yKGxldCBzPTA7czxpLmxlbmd0aDtzKyspe2NvbnN0IHI9aVtzXTtpZihyPy50b1N0cmluZygpPT09ZS5vYmpJZCl7dGhpcy5ub2Rlc1tzXT10O2E9ITB9fXJldHVybiBhfWdldCBzZXJpYWxpemFibGUoKXtmdW5jdGlvbiBub2RlVG9TZXJpYWxpemFibGUoZSx0LGk9MCl7aWYoaT40MCl7d2FybigiU3RydWN0VHJlZSB0b28gZGVlcCB0byBiZSBmdWxseSBzZXJpYWxpemVkLiIpO3JldHVybn1jb25zdCBhPU9iamVjdC5jcmVhdGUobnVsbCk7YS5yb2xlPWUucm9sZTthLmNoaWxkcmVuPVtdO3QuY2hpbGRyZW4ucHVzaChhKTtjb25zdCBzPWUuZGljdC5nZXQoIkFsdCIpOyJzdHJpbmciPT10eXBlb2YgcyYmKGEuYWx0PXN0cmluZ1RvUERGU3RyaW5nKHMpKTtjb25zdCByPWUuZGljdC5nZXQoIkxhbmciKTsic3RyaW5nIj09dHlwZW9mIHImJihhLmxhbmc9c3RyaW5nVG9QREZTdHJpbmcocikpO2Zvcihjb25zdCB0IG9mIGUua2lkcyl7Y29uc3QgZT10LnR5cGU9PT1Pcz90LnBhcmVudE5vZGU6bnVsbDtlP25vZGVUb1NlcmlhbGl6YWJsZShlLGEsaSsxKTp0LnR5cGU9PT12c3x8dC50eXBlPT09S3M/YS5jaGlsZHJlbi5wdXNoKHt0eXBlOiJjb250ZW50IixpZDpgcCR7dC5wYWdlT2JqSWR9X21jJHt0Lm1jaWR9YH0pOnQudHlwZT09PVRzP2EuY2hpbGRyZW4ucHVzaCh7dHlwZToib2JqZWN0IixpZDp0LnJlZk9iaklkfSk6dC50eXBlPT09cXMmJmEuY2hpbGRyZW4ucHVzaCh7dHlwZToiYW5ub3RhdGlvbiIsaWQ6YHBkZmpzX2ludGVybmFsX2lkXyR7dC5yZWZPYmpJZH1gfSl9fWNvbnN0IGU9T2JqZWN0LmNyZWF0ZShudWxsKTtlLmNoaWxkcmVuPVtdO2Uucm9sZT0iUm9vdCI7Zm9yKGNvbnN0IHQgb2YgdGhpcy5ub2Rlcyl0JiZub2RlVG9TZXJpYWxpemFibGUodCxlKTtyZXR1cm4gZX19ZnVuY3Rpb24gaXNWYWxpZEV4cGxpY2l0RGVzdChlKXtpZighQXJyYXkuaXNBcnJheShlKXx8ZS5sZW5ndGg8MilyZXR1cm4hMTtjb25zdFt0LGksLi4uYV09ZTtpZighKHQgaW5zdGFuY2VvZiBSZWZ8fE51bWJlci5pc0ludGVnZXIodCkpKXJldHVybiExO2lmKCEoaSBpbnN0YW5jZW9mIE5hbWUpKXJldHVybiExO2xldCBzPSEwO3N3aXRjaChpLm5hbWUpe2Nhc2UiWFlaIjppZigzIT09YS5sZW5ndGgpcmV0dXJuITE7YnJlYWs7Y2FzZSJGaXQiOmNhc2UiRml0QiI6cmV0dXJuIDA9PT1hLmxlbmd0aDtjYXNlIkZpdEgiOmNhc2UiRml0QkgiOmNhc2UiRml0ViI6Y2FzZSJGaXRCViI6aWYoMSE9PWEubGVuZ3RoKXJldHVybiExO2JyZWFrO2Nhc2UiRml0UiI6aWYoNCE9PWEubGVuZ3RoKXJldHVybiExO3M9ITE7YnJlYWs7ZGVmYXVsdDpyZXR1cm4hMX1mb3IoY29uc3QgZSBvZiBhKWlmKCEoIm51bWJlciI9PXR5cGVvZiBlfHxzJiZudWxsPT09ZSkpcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gZmV0Y2hEZXN0KGUpe2UgaW5zdGFuY2VvZiBEaWN0JiYoZT1lLmdldCgiRCIpKTtyZXR1cm4gaXNWYWxpZEV4cGxpY2l0RGVzdChlKT9lOm51bGx9ZnVuY3Rpb24gZmV0Y2hSZW1vdGVEZXN0KGUpe2xldCB0PWUuZ2V0KCJEIik7aWYodCl7dCBpbnN0YW5jZW9mIE5hbWUmJih0PXQubmFtZSk7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiBzdHJpbmdUb1BERlN0cmluZyh0KTtpZihpc1ZhbGlkRXhwbGljaXREZXN0KHQpKXJldHVybiBKU09OLnN0cmluZ2lmeSh0KX1yZXR1cm4gbnVsbH1jbGFzcyBDYXRhbG9ne2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5wZGZNYW5hZ2VyPWU7dGhpcy54cmVmPXQ7dGhpcy5fY2F0RGljdD10LmdldENhdGFsb2dPYmooKTtpZighKHRoaXMuX2NhdERpY3QgaW5zdGFuY2VvZiBEaWN0KSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkNhdGFsb2cgb2JqZWN0IGlzIG5vdCBhIGRpY3Rpb25hcnkuIik7dGhpcy50b3BsZXZlbFBhZ2VzRGljdDt0aGlzLl9hY3R1YWxOdW1QYWdlcz1udWxsO3RoaXMuZm9udENhY2hlPW5ldyBSZWZTZXRDYWNoZTt0aGlzLmJ1aWx0SW5DTWFwQ2FjaGU9bmV3IE1hcDt0aGlzLnN0YW5kYXJkRm9udERhdGFDYWNoZT1uZXcgTWFwO3RoaXMuZ2xvYmFsSW1hZ2VDYWNoZT1uZXcgR2xvYmFsSW1hZ2VDYWNoZTt0aGlzLnBhZ2VLaWRzQ291bnRDYWNoZT1uZXcgUmVmU2V0Q2FjaGU7dGhpcy5wYWdlSW5kZXhDYWNoZT1uZXcgUmVmU2V0Q2FjaGU7dGhpcy5ub25CbGVuZE1vZGVzU2V0PW5ldyBSZWZTZXQ7dGhpcy5zeXN0ZW1Gb250Q2FjaGU9bmV3IE1hcH1jbG9uZURpY3QoKXtyZXR1cm4gdGhpcy5fY2F0RGljdC5jbG9uZSgpfWdldCB2ZXJzaW9uKCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldCgiVmVyc2lvbiIpO2lmKGUgaW5zdGFuY2VvZiBOYW1lKXtpZihEdC50ZXN0KGUubmFtZSkpcmV0dXJuIHNoYWRvdyh0aGlzLCJ2ZXJzaW9uIixlLm5hbWUpO3dhcm4oYEludmFsaWQgUERGIGNhdGFsb2cgdmVyc2lvbjogJHtlLm5hbWV9YCl9cmV0dXJuIHNoYWRvdyh0aGlzLCJ2ZXJzaW9uIixudWxsKX1nZXQgbGFuZygpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXQoIkxhbmciKTtyZXR1cm4gc2hhZG93KHRoaXMsImxhbmciLCJzdHJpbmciPT10eXBlb2YgZT9zdHJpbmdUb1BERlN0cmluZyhlKTpudWxsKX1nZXQgbmVlZHNSZW5kZXJpbmcoKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0KCJOZWVkc1JlbmRlcmluZyIpO3JldHVybiBzaGFkb3codGhpcywibmVlZHNSZW5kZXJpbmciLCJib29sZWFuIj09dHlwZW9mIGUmJmUpfWdldCBjb2xsZWN0aW9uKCl7bGV0IGU9bnVsbDt0cnl7Y29uc3QgdD10aGlzLl9jYXREaWN0LmdldCgiQ29sbGVjdGlvbiIpO3QgaW5zdGFuY2VvZiBEaWN0JiZ0LnNpemU+MCYmKGU9dCl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7aW5mbygiQ2Fubm90IGZldGNoIENvbGxlY3Rpb24gZW50cnk7IGFzc3VtaW5nIG5vIGNvbGxlY3Rpb24gaXMgcHJlc2VudC4iKX1yZXR1cm4gc2hhZG93KHRoaXMsImNvbGxlY3Rpb24iLGUpfWdldCBhY3JvRm9ybSgpe2xldCBlPW51bGw7dHJ5e2NvbnN0IHQ9dGhpcy5fY2F0RGljdC5nZXQoIkFjcm9Gb3JtIik7dCBpbnN0YW5jZW9mIERpY3QmJnQuc2l6ZT4wJiYoZT10KX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTtpbmZvKCJDYW5ub3QgZmV0Y2ggQWNyb0Zvcm0gZW50cnk7IGFzc3VtaW5nIG5vIGZvcm1zIGFyZSBwcmVzZW50LiIpfXJldHVybiBzaGFkb3codGhpcywiYWNyb0Zvcm0iLGUpfWdldCBhY3JvRm9ybVJlZigpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXRSYXcoIkFjcm9Gb3JtIik7cmV0dXJuIHNoYWRvdyh0aGlzLCJhY3JvRm9ybVJlZiIsZSBpbnN0YW5jZW9mIFJlZj9lOm51bGwpfWdldCBtZXRhZGF0YSgpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXRSYXcoIk1ldGFkYXRhIik7aWYoIShlIGluc3RhbmNlb2YgUmVmKSlyZXR1cm4gc2hhZG93KHRoaXMsIm1ldGFkYXRhIixudWxsKTtsZXQgdD1udWxsO3RyeXtjb25zdCBpPXRoaXMueHJlZi5mZXRjaChlLCF0aGlzLnhyZWYuZW5jcnlwdD8uZW5jcnlwdE1ldGFkYXRhKTtpZihpIGluc3RhbmNlb2YgQmFzZVN0cmVhbSYmaS5kaWN0IGluc3RhbmNlb2YgRGljdCl7Y29uc3QgZT1pLmRpY3QuZ2V0KCJUeXBlIiksYT1pLmRpY3QuZ2V0KCJTdWJ0eXBlIik7aWYoaXNOYW1lKGUsIk1ldGFkYXRhIikmJmlzTmFtZShhLCJYTUwiKSl7Y29uc3QgZT1zdHJpbmdUb1VURjhTdHJpbmcoaS5nZXRTdHJpbmcoKSk7ZSYmKHQ9bmV3IE1ldGFkYXRhUGFyc2VyKGUpLnNlcmlhbGl6YWJsZSl9fX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTtpbmZvKGBTa2lwcGluZyBpbnZhbGlkIE1ldGFkYXRhOiAiJHtlfSIuYCl9cmV0dXJuIHNoYWRvdyh0aGlzLCJtZXRhZGF0YSIsdCl9Z2V0IG1hcmtJbmZvKCl7bGV0IGU9bnVsbDt0cnl7ZT10aGlzLl9yZWFkTWFya0luZm8oKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTt3YXJuKCJVbmFibGUgdG8gcmVhZCBtYXJrIGluZm8uIil9cmV0dXJuIHNoYWRvdyh0aGlzLCJtYXJrSW5mbyIsZSl9X3JlYWRNYXJrSW5mbygpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXQoIk1hcmtJbmZvIik7aWYoIShlIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuIG51bGw7Y29uc3QgdD17TWFya2VkOiExLFVzZXJQcm9wZXJ0aWVzOiExLFN1c3BlY3RzOiExfTtmb3IoY29uc3QgaSBpbiB0KXtjb25zdCBhPWUuZ2V0KGkpOyJib29sZWFuIj09dHlwZW9mIGEmJih0W2ldPWEpfXJldHVybiB0fWdldCBzdHJ1Y3RUcmVlUm9vdCgpe2xldCBlPW51bGw7dHJ5e2U9dGhpcy5fcmVhZFN0cnVjdFRyZWVSb290KCl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7d2FybigiVW5hYmxlIHJlYWQgdG8gc3RydWN0VHJlZVJvb3QgaW5mby4iKX1yZXR1cm4gc2hhZG93KHRoaXMsInN0cnVjdFRyZWVSb290IixlKX1fcmVhZFN0cnVjdFRyZWVSb290KCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldFJhdygiU3RydWN0VHJlZVJvb3QiKSx0PXRoaXMueHJlZi5mZXRjaElmUmVmKGUpO2lmKCEodCBpbnN0YW5jZW9mIERpY3QpKXJldHVybiBudWxsO2NvbnN0IGk9bmV3IFN0cnVjdFRyZWVSb290KHQsZSk7aS5pbml0KCk7cmV0dXJuIGl9Z2V0IHRvcGxldmVsUGFnZXNEaWN0KCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldCgiUGFnZXMiKTtpZighKGUgaW5zdGFuY2VvZiBEaWN0KSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgdG9wLWxldmVsIHBhZ2VzIGRpY3Rpb25hcnkuIik7cmV0dXJuIHNoYWRvdyh0aGlzLCJ0b3BsZXZlbFBhZ2VzRGljdCIsZSl9Z2V0IGRvY3VtZW50T3V0bGluZSgpe2xldCBlPW51bGw7dHJ5e2U9dGhpcy5fcmVhZERvY3VtZW50T3V0bGluZSgpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO3dhcm4oIlVuYWJsZSB0byByZWFkIGRvY3VtZW50IG91dGxpbmUuIil9cmV0dXJuIHNoYWRvdyh0aGlzLCJkb2N1bWVudE91dGxpbmUiLGUpfV9yZWFkRG9jdW1lbnRPdXRsaW5lKCl7bGV0IGU9dGhpcy5fY2F0RGljdC5nZXQoIk91dGxpbmVzIik7aWYoIShlIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuIG51bGw7ZT1lLmdldFJhdygiRmlyc3QiKTtpZighKGUgaW5zdGFuY2VvZiBSZWYpKXJldHVybiBudWxsO2NvbnN0IHQ9e2l0ZW1zOltdfSxpPVt7b2JqOmUscGFyZW50OnR9XSxhPW5ldyBSZWZTZXQ7YS5wdXQoZSk7Y29uc3Qgcz10aGlzLnhyZWYscj1uZXcgVWludDhDbGFtcGVkQXJyYXkoMyk7Zm9yKDtpLmxlbmd0aD4wOyl7Y29uc3QgdD1pLnNoaWZ0KCksbj1zLmZldGNoSWZSZWYodC5vYmopO2lmKG51bGw9PT1uKWNvbnRpbnVlO24uaGFzKCJUaXRsZSIpfHx3YXJuKCJJbnZhbGlkIG91dGxpbmUgaXRlbSBlbmNvdW50ZXJlZC4iKTtjb25zdCBvPXt1cmw6bnVsbCxkZXN0Om51bGwsYWN0aW9uOm51bGx9O0NhdGFsb2cucGFyc2VEZXN0RGljdGlvbmFyeSh7ZGVzdERpY3Q6bixyZXN1bHRPYmo6byxkb2NCYXNlVXJsOnRoaXMuYmFzZVVybCxkb2NBdHRhY2htZW50czp0aGlzLmF0dGFjaG1lbnRzfSk7Y29uc3QgZz1uLmdldCgiVGl0bGUiKSxjPW4uZ2V0KCJGIil8fDAsQz1uLmdldEFycmF5KCJDIiksaD1uLmdldCgiQ291bnQiKTtsZXQgbD1yOyFBcnJheS5pc0FycmF5KEMpfHwzIT09Qy5sZW5ndGh8fDA9PT1DWzBdJiYwPT09Q1sxXSYmMD09PUNbMl18fChsPUNvbG9yU3BhY2Uuc2luZ2xldG9ucy5yZ2IuZ2V0UmdiKEMsMCkpO2NvbnN0IFE9e2FjdGlvbjpvLmFjdGlvbixhdHRhY2htZW50Om8uYXR0YWNobWVudCxkZXN0Om8uZGVzdCx1cmw6by51cmwsdW5zYWZlVXJsOm8udW5zYWZlVXJsLG5ld1dpbmRvdzpvLm5ld1dpbmRvdyxzZXRPQ0dTdGF0ZTpvLnNldE9DR1N0YXRlLHRpdGxlOiJzdHJpbmciPT10eXBlb2YgZz9zdHJpbmdUb1BERlN0cmluZyhnKToiIixjb2xvcjpsLGNvdW50Ok51bWJlci5pc0ludGVnZXIoaCk/aDp2b2lkIDAsYm9sZDohISgyJmMpLGl0YWxpYzohISgxJmMpLGl0ZW1zOltdfTt0LnBhcmVudC5pdGVtcy5wdXNoKFEpO2U9bi5nZXRSYXcoIkZpcnN0Iik7aWYoZSBpbnN0YW5jZW9mIFJlZiYmIWEuaGFzKGUpKXtpLnB1c2goe29iajplLHBhcmVudDpRfSk7YS5wdXQoZSl9ZT1uLmdldFJhdygiTmV4dCIpO2lmKGUgaW5zdGFuY2VvZiBSZWYmJiFhLmhhcyhlKSl7aS5wdXNoKHtvYmo6ZSxwYXJlbnQ6dC5wYXJlbnR9KTthLnB1dChlKX19cmV0dXJuIHQuaXRlbXMubGVuZ3RoPjA/dC5pdGVtczpudWxsfWdldCBwZXJtaXNzaW9ucygpe2xldCBlPW51bGw7dHJ5e2U9dGhpcy5fcmVhZFBlcm1pc3Npb25zKCl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7d2FybigiVW5hYmxlIHRvIHJlYWQgcGVybWlzc2lvbnMuIil9cmV0dXJuIHNoYWRvdyh0aGlzLCJwZXJtaXNzaW9ucyIsZSl9X3JlYWRQZXJtaXNzaW9ucygpe2NvbnN0IGU9dGhpcy54cmVmLnRyYWlsZXIuZ2V0KCJFbmNyeXB0Iik7aWYoIShlIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuIG51bGw7bGV0IHQ9ZS5nZXQoIlAiKTtpZigibnVtYmVyIiE9dHlwZW9mIHQpcmV0dXJuIG51bGw7dCs9MioqMzI7Y29uc3QgaT1bXTtmb3IoY29uc3QgZSBpbiBtKXtjb25zdCBhPW1bZV07dCZhJiZpLnB1c2goYSl9cmV0dXJuIGl9Z2V0IG9wdGlvbmFsQ29udGVudENvbmZpZygpe2xldCBlPW51bGw7dHJ5e2NvbnN0IHQ9dGhpcy5fY2F0RGljdC5nZXQoIk9DUHJvcGVydGllcyIpO2lmKCF0KXJldHVybiBzaGFkb3codGhpcywib3B0aW9uYWxDb250ZW50Q29uZmlnIixudWxsKTtjb25zdCBpPXQuZ2V0KCJEIik7aWYoIWkpcmV0dXJuIHNoYWRvdyh0aGlzLCJvcHRpb25hbENvbnRlbnRDb25maWciLG51bGwpO2NvbnN0IGE9dC5nZXQoIk9DR3MiKTtpZighQXJyYXkuaXNBcnJheShhKSlyZXR1cm4gc2hhZG93KHRoaXMsIm9wdGlvbmFsQ29udGVudENvbmZpZyIsbnVsbCk7Y29uc3Qgcz1bXSxyPW5ldyBSZWZTZXQ7Zm9yKGNvbnN0IGUgb2YgYSlpZihlIGluc3RhbmNlb2YgUmVmJiYhci5oYXMoZSkpe3IucHV0KGUpO3MucHVzaCh0aGlzLiNNKGUpKX1lPXRoaXMuI0woaSxyKTtlLmdyb3Vwcz1zfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO3dhcm4oYFVuYWJsZSB0byByZWFkIG9wdGlvbmFsIGNvbnRlbnQgY29uZmlnOiAke2V9YCl9cmV0dXJuIHNoYWRvdyh0aGlzLCJvcHRpb25hbENvbnRlbnRDb25maWciLGUpfSNNKGUpe2NvbnN0IHQ9dGhpcy54cmVmLmZldGNoKGUpLGk9e2lkOmUudG9TdHJpbmcoKSxuYW1lOm51bGwsaW50ZW50Om51bGwsdXNhZ2U6e3ByaW50Om51bGwsdmlldzpudWxsfX0sYT10LmdldCgiTmFtZSIpOyJzdHJpbmciPT10eXBlb2YgYSYmKGkubmFtZT1zdHJpbmdUb1BERlN0cmluZyhhKSk7bGV0IHM9dC5nZXRBcnJheSgiSW50ZW50Iik7QXJyYXkuaXNBcnJheShzKXx8KHM9W3NdKTtzLmV2ZXJ5KChlPT5lIGluc3RhbmNlb2YgTmFtZSkpJiYoaS5pbnRlbnQ9cy5tYXAoKGU9PmUubmFtZSkpKTtjb25zdCByPXQuZ2V0KCJVc2FnZSIpO2lmKCEociBpbnN0YW5jZW9mIERpY3QpKXJldHVybiBpO2NvbnN0IG49aS51c2FnZSxvPXIuZ2V0KCJQcmludCIpO2lmKG8gaW5zdGFuY2VvZiBEaWN0KXtjb25zdCBlPW8uZ2V0KCJQcmludFN0YXRlIik7aWYoZSBpbnN0YW5jZW9mIE5hbWUpc3dpdGNoKGUubmFtZSl7Y2FzZSJPTiI6Y2FzZSJPRkYiOm4ucHJpbnQ9e3ByaW50U3RhdGU6ZS5uYW1lfX19Y29uc3QgZz1yLmdldCgiVmlldyIpO2lmKGcgaW5zdGFuY2VvZiBEaWN0KXtjb25zdCBlPWcuZ2V0KCJWaWV3U3RhdGUiKTtpZihlIGluc3RhbmNlb2YgTmFtZSlzd2l0Y2goZS5uYW1lKXtjYXNlIk9OIjpjYXNlIk9GRiI6bi52aWV3PXt2aWV3U3RhdGU6ZS5uYW1lfX19cmV0dXJuIGl9I0woZSx0KXtmdW5jdGlvbiBwYXJzZU9uT2ZmKGUpe2NvbnN0IGk9W107aWYoQXJyYXkuaXNBcnJheShlKSlmb3IoY29uc3QgYSBvZiBlKWEgaW5zdGFuY2VvZiBSZWYmJnQuaGFzKGEpJiZpLnB1c2goYS50b1N0cmluZygpKTtyZXR1cm4gaX1mdW5jdGlvbiBwYXJzZU9yZGVyKGUsaT0wKXtpZighQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gbnVsbDtjb25zdCBzPVtdO2Zvcihjb25zdCByIG9mIGUpe2lmKHIgaW5zdGFuY2VvZiBSZWYmJnQuaGFzKHIpKXthLnB1dChyKTtzLnB1c2goci50b1N0cmluZygpKTtjb250aW51ZX1jb25zdCBlPXBhcnNlTmVzdGVkT3JkZXIocixpKTtlJiZzLnB1c2goZSl9aWYoaT4wKXJldHVybiBzO2NvbnN0IHI9W107Zm9yKGNvbnN0IGUgb2YgdClhLmhhcyhlKXx8ci5wdXNoKGUudG9TdHJpbmcoKSk7ci5sZW5ndGgmJnMucHVzaCh7bmFtZTpudWxsLG9yZGVyOnJ9KTtyZXR1cm4gc31mdW5jdGlvbiBwYXJzZU5lc3RlZE9yZGVyKGUsdCl7aWYoKyt0PnMpe3dhcm4oInBhcnNlTmVzdGVkT3JkZXIgLSByZWFjaGVkIE1BWF9ORVNURURfTEVWRUxTLiIpO3JldHVybiBudWxsfWNvbnN0IGE9aS5mZXRjaElmUmVmKGUpO2lmKCFBcnJheS5pc0FycmF5KGEpKXJldHVybiBudWxsO2NvbnN0IHI9aS5mZXRjaElmUmVmKGFbMF0pO2lmKCJzdHJpbmciIT10eXBlb2YgcilyZXR1cm4gbnVsbDtjb25zdCBuPXBhcnNlT3JkZXIoYS5zbGljZSgxKSx0KTtyZXR1cm4gbiYmbi5sZW5ndGg/e25hbWU6c3RyaW5nVG9QREZTdHJpbmcociksb3JkZXI6bn06bnVsbH1jb25zdCBpPXRoaXMueHJlZixhPW5ldyBSZWZTZXQscz0xMDtyZXR1cm57bmFtZToic3RyaW5nIj09dHlwZW9mIGUuZ2V0KCJOYW1lIik/c3RyaW5nVG9QREZTdHJpbmcoZS5nZXQoIk5hbWUiKSk6bnVsbCxjcmVhdG9yOiJzdHJpbmciPT10eXBlb2YgZS5nZXQoIkNyZWF0b3IiKT9zdHJpbmdUb1BERlN0cmluZyhlLmdldCgiQ3JlYXRvciIpKTpudWxsLGJhc2VTdGF0ZTplLmdldCgiQmFzZVN0YXRlIilpbnN0YW5jZW9mIE5hbWU/ZS5nZXQoIkJhc2VTdGF0ZSIpLm5hbWU6bnVsbCxvbjpwYXJzZU9uT2ZmKGUuZ2V0KCJPTiIpKSxvZmY6cGFyc2VPbk9mZihlLmdldCgiT0ZGIikpLG9yZGVyOnBhcnNlT3JkZXIoZS5nZXQoIk9yZGVyIikpLGdyb3VwczpudWxsfX1zZXRBY3R1YWxOdW1QYWdlcyhlPW51bGwpe3RoaXMuX2FjdHVhbE51bVBhZ2VzPWV9Z2V0IGhhc0FjdHVhbE51bVBhZ2VzKCl7cmV0dXJuIG51bGwhPT10aGlzLl9hY3R1YWxOdW1QYWdlc31nZXQgX3BhZ2VzQ291bnQoKXtjb25zdCBlPXRoaXMudG9wbGV2ZWxQYWdlc0RpY3QuZ2V0KCJDb3VudCIpO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGUpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiUGFnZSBjb3VudCBpbiB0b3AtbGV2ZWwgcGFnZXMgZGljdGlvbmFyeSBpcyBub3QgYW4gaW50ZWdlci4iKTtyZXR1cm4gc2hhZG93KHRoaXMsIl9wYWdlc0NvdW50IixlKX1nZXQgbnVtUGFnZXMoKXtyZXR1cm4gdGhpcy5oYXNBY3R1YWxOdW1QYWdlcz90aGlzLl9hY3R1YWxOdW1QYWdlczp0aGlzLl9wYWdlc0NvdW50fWdldCBkZXN0aW5hdGlvbnMoKXtjb25zdCBlPXRoaXMuX3JlYWREZXN0cygpLHQ9T2JqZWN0LmNyZWF0ZShudWxsKTtpZihlIGluc3RhbmNlb2YgTmFtZVRyZWUpZm9yKGNvbnN0W2ksYV1vZiBlLmdldEFsbCgpKXtjb25zdCBlPWZldGNoRGVzdChhKTtlJiYodFtzdHJpbmdUb1BERlN0cmluZyhpKV09ZSl9ZWxzZSBlIGluc3RhbmNlb2YgRGljdCYmZS5mb3JFYWNoKChmdW5jdGlvbihlLGkpe2NvbnN0IGE9ZmV0Y2hEZXN0KGkpO2EmJih0W2VdPWEpfSkpO3JldHVybiBzaGFkb3codGhpcywiZGVzdGluYXRpb25zIix0KX1nZXREZXN0aW5hdGlvbihlKXtjb25zdCB0PXRoaXMuX3JlYWREZXN0cygpO2lmKHQgaW5zdGFuY2VvZiBOYW1lVHJlZSl7Y29uc3QgaT1mZXRjaERlc3QodC5nZXQoZSkpO2lmKGkpcmV0dXJuIGk7Y29uc3QgYT10aGlzLmRlc3RpbmF0aW9uc1tlXTtpZihhKXt3YXJuKGBGb3VuZCAiJHtlfSIgYXQgYW4gaW5jb3JyZWN0IHBvc2l0aW9uIGluIHRoZSBOYW1lVHJlZS5gKTtyZXR1cm4gYX19ZWxzZSBpZih0IGluc3RhbmNlb2YgRGljdCl7Y29uc3QgaT1mZXRjaERlc3QodC5nZXQoZSkpO2lmKGkpcmV0dXJuIGl9cmV0dXJuIG51bGx9X3JlYWREZXN0cygpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXQoIk5hbWVzIik7cmV0dXJuIGU/LmhhcygiRGVzdHMiKT9uZXcgTmFtZVRyZWUoZS5nZXRSYXcoIkRlc3RzIiksdGhpcy54cmVmKTp0aGlzLl9jYXREaWN0LmhhcygiRGVzdHMiKT90aGlzLl9jYXREaWN0LmdldCgiRGVzdHMiKTp2b2lkIDB9Z2V0IHBhZ2VMYWJlbHMoKXtsZXQgZT1udWxsO3RyeXtlPXRoaXMuX3JlYWRQYWdlTGFiZWxzKCl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7d2FybigiVW5hYmxlIHRvIHJlYWQgcGFnZSBsYWJlbHMuIil9cmV0dXJuIHNoYWRvdyh0aGlzLCJwYWdlTGFiZWxzIixlKX1fcmVhZFBhZ2VMYWJlbHMoKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0UmF3KCJQYWdlTGFiZWxzIik7aWYoIWUpcmV0dXJuIG51bGw7Y29uc3QgdD1uZXcgQXJyYXkodGhpcy5udW1QYWdlcyk7bGV0IGk9bnVsbCxhPSIiO2NvbnN0IHM9bmV3IE51bWJlclRyZWUoZSx0aGlzLnhyZWYpLmdldEFsbCgpO2xldCByPSIiLG49MTtmb3IobGV0IGU9MCxvPXRoaXMubnVtUGFnZXM7ZTxvO2UrKyl7Y29uc3Qgbz1zLmdldChlKTtpZih2b2lkIDAhPT1vKXtpZighKG8gaW5zdGFuY2VvZiBEaWN0KSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlBhZ2VMYWJlbCBpcyBub3QgYSBkaWN0aW9uYXJ5LiIpO2lmKG8uaGFzKCJUeXBlIikmJiFpc05hbWUoby5nZXQoIlR5cGUiKSwiUGFnZUxhYmVsIikpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIHR5cGUgaW4gUGFnZUxhYmVsIGRpY3Rpb25hcnkuIik7aWYoby5oYXMoIlMiKSl7Y29uc3QgZT1vLmdldCgiUyIpO2lmKCEoZSBpbnN0YW5jZW9mIE5hbWUpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBzdHlsZSBpbiBQYWdlTGFiZWwgZGljdGlvbmFyeS4iKTtpPWUubmFtZX1lbHNlIGk9bnVsbDtpZihvLmhhcygiUCIpKXtjb25zdCBlPW8uZ2V0KCJQIik7aWYoInN0cmluZyIhPXR5cGVvZiBlKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBwcmVmaXggaW4gUGFnZUxhYmVsIGRpY3Rpb25hcnkuIik7YT1zdHJpbmdUb1BERlN0cmluZyhlKX1lbHNlIGE9IiI7aWYoby5oYXMoIlN0Iikpe2NvbnN0IGU9by5nZXQoIlN0Iik7aWYoIShOdW1iZXIuaXNJbnRlZ2VyKGUpJiZlPj0xKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgc3RhcnQgaW4gUGFnZUxhYmVsIGRpY3Rpb25hcnkuIik7bj1lfWVsc2Ugbj0xfXN3aXRjaChpKXtjYXNlIkQiOnI9bjticmVhaztjYXNlIlIiOmNhc2UiciI6cj10b1JvbWFuTnVtZXJhbHMobiwiciI9PT1pKTticmVhaztjYXNlIkEiOmNhc2UiYSI6Y29uc3QgZT0yNix0PSJhIj09PWk/OTc6NjUsYT1uLTE7cj1TdHJpbmcuZnJvbUNoYXJDb2RlKHQrYSVlKS5yZXBlYXQoTWF0aC5mbG9vcihhL2UpKzEpO2JyZWFrO2RlZmF1bHQ6aWYoaSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEludmFsaWQgc3R5bGUgIiR7aX0iIGluIFBhZ2VMYWJlbCBkaWN0aW9uYXJ5LmApO3I9IiJ9dFtlXT1hK3I7bisrfXJldHVybiB0fWdldCBwYWdlTGF5b3V0KCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldCgiUGFnZUxheW91dCIpO2xldCB0PSIiO2lmKGUgaW5zdGFuY2VvZiBOYW1lKXN3aXRjaChlLm5hbWUpe2Nhc2UiU2luZ2xlUGFnZSI6Y2FzZSJPbmVDb2x1bW4iOmNhc2UiVHdvQ29sdW1uTGVmdCI6Y2FzZSJUd29Db2x1bW5SaWdodCI6Y2FzZSJUd29QYWdlTGVmdCI6Y2FzZSJUd29QYWdlUmlnaHQiOnQ9ZS5uYW1lfXJldHVybiBzaGFkb3codGhpcywicGFnZUxheW91dCIsdCl9Z2V0IHBhZ2VNb2RlKCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldCgiUGFnZU1vZGUiKTtsZXQgdD0iVXNlTm9uZSI7aWYoZSBpbnN0YW5jZW9mIE5hbWUpc3dpdGNoKGUubmFtZSl7Y2FzZSJVc2VOb25lIjpjYXNlIlVzZU91dGxpbmVzIjpjYXNlIlVzZVRodW1icyI6Y2FzZSJGdWxsU2NyZWVuIjpjYXNlIlVzZU9DIjpjYXNlIlVzZUF0dGFjaG1lbnRzIjp0PWUubmFtZX1yZXR1cm4gc2hhZG93KHRoaXMsInBhZ2VNb2RlIix0KX1nZXQgdmlld2VyUHJlZmVyZW5jZXMoKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0KCJWaWV3ZXJQcmVmZXJlbmNlcyIpO2lmKCEoZSBpbnN0YW5jZW9mIERpY3QpKXJldHVybiBzaGFkb3codGhpcywidmlld2VyUHJlZmVyZW5jZXMiLG51bGwpO2xldCB0PW51bGw7Zm9yKGNvbnN0IGkgb2YgZS5nZXRLZXlzKCkpe2NvbnN0IGE9ZS5nZXQoaSk7bGV0IHM7c3dpdGNoKGkpe2Nhc2UiSGlkZVRvb2xiYXIiOmNhc2UiSGlkZU1lbnViYXIiOmNhc2UiSGlkZVdpbmRvd1VJIjpjYXNlIkZpdFdpbmRvdyI6Y2FzZSJDZW50ZXJXaW5kb3ciOmNhc2UiRGlzcGxheURvY1RpdGxlIjpjYXNlIlBpY2tUcmF5QnlQREZTaXplIjoiYm9vbGVhbiI9PXR5cGVvZiBhJiYocz1hKTticmVhaztjYXNlIk5vbkZ1bGxTY3JlZW5QYWdlTW9kZSI6aWYoYSBpbnN0YW5jZW9mIE5hbWUpc3dpdGNoKGEubmFtZSl7Y2FzZSJVc2VOb25lIjpjYXNlIlVzZU91dGxpbmVzIjpjYXNlIlVzZVRodW1icyI6Y2FzZSJVc2VPQyI6cz1hLm5hbWU7YnJlYWs7ZGVmYXVsdDpzPSJVc2VOb25lIn1icmVhaztjYXNlIkRpcmVjdGlvbiI6aWYoYSBpbnN0YW5jZW9mIE5hbWUpc3dpdGNoKGEubmFtZSl7Y2FzZSJMMlIiOmNhc2UiUjJMIjpzPWEubmFtZTticmVhaztkZWZhdWx0OnM9IkwyUiJ9YnJlYWs7Y2FzZSJWaWV3QXJlYSI6Y2FzZSJWaWV3Q2xpcCI6Y2FzZSJQcmludEFyZWEiOmNhc2UiUHJpbnRDbGlwIjppZihhIGluc3RhbmNlb2YgTmFtZSlzd2l0Y2goYS5uYW1lKXtjYXNlIk1lZGlhQm94IjpjYXNlIkNyb3BCb3giOmNhc2UiQmxlZWRCb3giOmNhc2UiVHJpbUJveCI6Y2FzZSJBcnRCb3giOnM9YS5uYW1lO2JyZWFrO2RlZmF1bHQ6cz0iQ3JvcEJveCJ9YnJlYWs7Y2FzZSJQcmludFNjYWxpbmciOmlmKGEgaW5zdGFuY2VvZiBOYW1lKXN3aXRjaChhLm5hbWUpe2Nhc2UiTm9uZSI6Y2FzZSJBcHBEZWZhdWx0IjpzPWEubmFtZTticmVhaztkZWZhdWx0OnM9IkFwcERlZmF1bHQifWJyZWFrO2Nhc2UiRHVwbGV4IjppZihhIGluc3RhbmNlb2YgTmFtZSlzd2l0Y2goYS5uYW1lKXtjYXNlIlNpbXBsZXgiOmNhc2UiRHVwbGV4RmxpcFNob3J0RWRnZSI6Y2FzZSJEdXBsZXhGbGlwTG9uZ0VkZ2UiOnM9YS5uYW1lO2JyZWFrO2RlZmF1bHQ6cz0iTm9uZSJ9YnJlYWs7Y2FzZSJQcmludFBhZ2VSYW5nZSI6aWYoQXJyYXkuaXNBcnJheShhKSYmYS5sZW5ndGglMj09MCl7YS5ldmVyeSgoKGUsdCxpKT0+TnVtYmVyLmlzSW50ZWdlcihlKSYmZT4wJiYoMD09PXR8fGU+PWlbdC0xXSkmJmU8PXRoaXMubnVtUGFnZXMpKSYmKHM9YSl9YnJlYWs7Y2FzZSJOdW1Db3BpZXMiOk51bWJlci5pc0ludGVnZXIoYSkmJmE+MCYmKHM9YSk7YnJlYWs7ZGVmYXVsdDp3YXJuKGBJZ25vcmluZyBub24tc3RhbmRhcmQga2V5IGluIFZpZXdlclByZWZlcmVuY2VzOiAke2l9LmApO2NvbnRpbnVlfWlmKHZvaWQgMCE9PXMpe3R8fCh0PU9iamVjdC5jcmVhdGUobnVsbCkpO3RbaV09c31lbHNlIHdhcm4oYEJhZCB2YWx1ZSwgZm9yIGtleSAiJHtpfSIsIGluIFZpZXdlclByZWZlcmVuY2VzOiAke2F9LmApfXJldHVybiBzaGFkb3codGhpcywidmlld2VyUHJlZmVyZW5jZXMiLHQpfWdldCBvcGVuQWN0aW9uKCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldCgiT3BlbkFjdGlvbiIpLHQ9T2JqZWN0LmNyZWF0ZShudWxsKTtpZihlIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgaT1uZXcgRGljdCh0aGlzLnhyZWYpO2kuc2V0KCJBIixlKTtjb25zdCBhPXt1cmw6bnVsbCxkZXN0Om51bGwsYWN0aW9uOm51bGx9O0NhdGFsb2cucGFyc2VEZXN0RGljdGlvbmFyeSh7ZGVzdERpY3Q6aSxyZXN1bHRPYmo6YX0pO0FycmF5LmlzQXJyYXkoYS5kZXN0KT90LmRlc3Q9YS5kZXN0OmEuYWN0aW9uJiYodC5hY3Rpb249YS5hY3Rpb24pfWVsc2UgQXJyYXkuaXNBcnJheShlKSYmKHQuZGVzdD1lKTtyZXR1cm4gc2hhZG93KHRoaXMsIm9wZW5BY3Rpb24iLG9iamVjdFNpemUodCk+MD90Om51bGwpfWdldCBhdHRhY2htZW50cygpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXQoIk5hbWVzIik7bGV0IHQ9bnVsbDtpZihlIGluc3RhbmNlb2YgRGljdCYmZS5oYXMoIkVtYmVkZGVkRmlsZXMiKSl7Y29uc3QgaT1uZXcgTmFtZVRyZWUoZS5nZXRSYXcoIkVtYmVkZGVkRmlsZXMiKSx0aGlzLnhyZWYpO2Zvcihjb25zdFtlLGFdb2YgaS5nZXRBbGwoKSl7Y29uc3QgaT1uZXcgRmlsZVNwZWMoYSx0aGlzLnhyZWYpO3R8fCh0PU9iamVjdC5jcmVhdGUobnVsbCkpO3Rbc3RyaW5nVG9QREZTdHJpbmcoZSldPWkuc2VyaWFsaXphYmxlfX1yZXR1cm4gc2hhZG93KHRoaXMsImF0dGFjaG1lbnRzIix0KX1nZXQgeGZhSW1hZ2VzKCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldCgiTmFtZXMiKTtsZXQgdD1udWxsO2lmKGUgaW5zdGFuY2VvZiBEaWN0JiZlLmhhcygiWEZBSW1hZ2VzIikpe2NvbnN0IGk9bmV3IE5hbWVUcmVlKGUuZ2V0UmF3KCJYRkFJbWFnZXMiKSx0aGlzLnhyZWYpO2Zvcihjb25zdFtlLGFdb2YgaS5nZXRBbGwoKSl7dHx8KHQ9bmV3IERpY3QodGhpcy54cmVmKSk7dC5zZXQoc3RyaW5nVG9QREZTdHJpbmcoZSksYSl9fXJldHVybiBzaGFkb3codGhpcywieGZhSW1hZ2VzIix0KX1fY29sbGVjdEphdmFTY3JpcHQoKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0KCJOYW1lcyIpO2xldCB0PW51bGw7ZnVuY3Rpb24gYXBwZW5kSWZKYXZhU2NyaXB0RGljdChlLGkpe2lmKCEoaSBpbnN0YW5jZW9mIERpY3QpKXJldHVybjtpZighaXNOYW1lKGkuZ2V0KCJTIiksIkphdmFTY3JpcHQiKSlyZXR1cm47bGV0IGE9aS5nZXQoIkpTIik7aWYoYSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pYT1hLmdldFN0cmluZygpO2Vsc2UgaWYoInN0cmluZyIhPXR5cGVvZiBhKXJldHVybjthPXN0cmluZ1RvUERGU3RyaW5nKGEpLnJlcGxhY2VBbGwoIlwwIiwiIik7YSYmKHR8fD1uZXcgTWFwKS5zZXQoZSxhKX1pZihlIGluc3RhbmNlb2YgRGljdCYmZS5oYXMoIkphdmFTY3JpcHQiKSl7Y29uc3QgdD1uZXcgTmFtZVRyZWUoZS5nZXRSYXcoIkphdmFTY3JpcHQiKSx0aGlzLnhyZWYpO2Zvcihjb25zdFtlLGldb2YgdC5nZXRBbGwoKSlhcHBlbmRJZkphdmFTY3JpcHREaWN0KHN0cmluZ1RvUERGU3RyaW5nKGUpLGkpfWNvbnN0IGk9dGhpcy5fY2F0RGljdC5nZXQoIk9wZW5BY3Rpb24iKTtpJiZhcHBlbmRJZkphdmFTY3JpcHREaWN0KCJPcGVuQWN0aW9uIixpKTtyZXR1cm4gdH1nZXQganNBY3Rpb25zKCl7Y29uc3QgZT10aGlzLl9jb2xsZWN0SmF2YVNjcmlwdCgpO2xldCB0PWNvbGxlY3RBY3Rpb25zKHRoaXMueHJlZix0aGlzLl9jYXREaWN0LGRBKTtpZihlKXt0fHw9T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IoY29uc3RbaSxhXW9mIGUpaSBpbiB0P3RbaV0ucHVzaChhKTp0W2ldPVthXX1yZXR1cm4gc2hhZG93KHRoaXMsImpzQWN0aW9ucyIsdCl9YXN5bmMgZm9udEZhbGxiYWNrKGUsdCl7Y29uc3QgaT1hd2FpdCBQcm9taXNlLmFsbCh0aGlzLmZvbnRDYWNoZSk7Zm9yKGNvbnN0IGEgb2YgaSlpZihhLmxvYWRlZE5hbWU9PT1lKXthLmZhbGxiYWNrKHQpO3JldHVybn19YXN5bmMgY2xlYW51cChlPSExKXtjbGVhckdsb2JhbENhY2hlcygpO3RoaXMuZ2xvYmFsSW1hZ2VDYWNoZS5jbGVhcihlKTt0aGlzLnBhZ2VLaWRzQ291bnRDYWNoZS5jbGVhcigpO3RoaXMucGFnZUluZGV4Q2FjaGUuY2xlYXIoKTt0aGlzLm5vbkJsZW5kTW9kZXNTZXQuY2xlYXIoKTtjb25zdCB0PWF3YWl0IFByb21pc2UuYWxsKHRoaXMuZm9udENhY2hlKTtmb3IoY29uc3R7ZGljdDplfW9mIHQpZGVsZXRlIGUuY2FjaGVLZXk7dGhpcy5mb250Q2FjaGUuY2xlYXIoKTt0aGlzLmJ1aWx0SW5DTWFwQ2FjaGUuY2xlYXIoKTt0aGlzLnN0YW5kYXJkRm9udERhdGFDYWNoZS5jbGVhcigpO3RoaXMuc3lzdGVtRm9udENhY2hlLmNsZWFyKCl9YXN5bmMgZ2V0UGFnZURpY3QoZSl7Y29uc3QgdD1bdGhpcy50b3BsZXZlbFBhZ2VzRGljdF0saT1uZXcgUmVmU2V0LGE9dGhpcy5fY2F0RGljdC5nZXRSYXcoIlBhZ2VzIik7YSBpbnN0YW5jZW9mIFJlZiYmaS5wdXQoYSk7Y29uc3Qgcz10aGlzLnhyZWYscj10aGlzLnBhZ2VLaWRzQ291bnRDYWNoZSxuPXRoaXMucGFnZUluZGV4Q2FjaGU7bGV0IG89MDtmb3IoO3QubGVuZ3RoOyl7Y29uc3QgYT10LnBvcCgpO2lmKGEgaW5zdGFuY2VvZiBSZWYpe2NvbnN0IGc9ci5nZXQoYSk7aWYoZz49MCYmbytnPD1lKXtvKz1nO2NvbnRpbnVlfWlmKGkuaGFzKGEpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiUGFnZXMgdHJlZSBjb250YWlucyBjaXJjdWxhciByZWZlcmVuY2UuIik7aS5wdXQoYSk7Y29uc3QgYz1hd2FpdCBzLmZldGNoQXN5bmMoYSk7aWYoYyBpbnN0YW5jZW9mIERpY3Qpe2xldCB0PWMuZ2V0UmF3KCJUeXBlIik7dCBpbnN0YW5jZW9mIFJlZiYmKHQ9YXdhaXQgcy5mZXRjaEFzeW5jKHQpKTtpZihpc05hbWUodCwiUGFnZSIpfHwhYy5oYXMoIktpZHMiKSl7ci5oYXMoYSl8fHIucHV0KGEsMSk7bi5oYXMoYSl8fG4ucHV0KGEsbyk7aWYobz09PWUpcmV0dXJuW2MsYV07bysrO2NvbnRpbnVlfX10LnB1c2goYyk7Y29udGludWV9aWYoIShhIGluc3RhbmNlb2YgRGljdCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJQYWdlIGRpY3Rpb25hcnkga2lkIHJlZmVyZW5jZSBwb2ludHMgdG8gd3JvbmcgdHlwZSBvZiBvYmplY3QuIik7Y29uc3R7b2JqSWQ6Z309YTtsZXQgYz1hLmdldFJhdygiQ291bnQiKTtjIGluc3RhbmNlb2YgUmVmJiYoYz1hd2FpdCBzLmZldGNoQXN5bmMoYykpO2lmKE51bWJlci5pc0ludGVnZXIoYykmJmM+PTApe2cmJiFyLmhhcyhnKSYmci5wdXQoZyxjKTtpZihvK2M8PWUpe28rPWM7Y29udGludWV9fWxldCBDPWEuZ2V0UmF3KCJLaWRzIik7QyBpbnN0YW5jZW9mIFJlZiYmKEM9YXdhaXQgcy5mZXRjaEFzeW5jKEMpKTtpZighQXJyYXkuaXNBcnJheShDKSl7bGV0IHQ9YS5nZXRSYXcoIlR5cGUiKTt0IGluc3RhbmNlb2YgUmVmJiYodD1hd2FpdCBzLmZldGNoQXN5bmModCkpO2lmKGlzTmFtZSh0LCJQYWdlIil8fCFhLmhhcygiS2lkcyIpKXtpZihvPT09ZSlyZXR1cm5bYSxudWxsXTtvKys7Y29udGludWV9dGhyb3cgbmV3IEZvcm1hdEVycm9yKCJQYWdlIGRpY3Rpb25hcnkga2lkcyBvYmplY3QgaXMgbm90IGFuIGFycmF5LiIpfWZvcihsZXQgZT1DLmxlbmd0aC0xO2U+PTA7ZS0tKXQucHVzaChDW2VdKX10aHJvdyBuZXcgRXJyb3IoYFBhZ2UgaW5kZXggJHtlfSBub3QgZm91bmQuYCl9YXN5bmMgZ2V0QWxsUGFnZURpY3RzKGU9ITEpe2NvbnN0e2lnbm9yZUVycm9yczp0fT10aGlzLnBkZk1hbmFnZXIuZXZhbHVhdG9yT3B0aW9ucyxpPVt7Y3VycmVudE5vZGU6dGhpcy50b3BsZXZlbFBhZ2VzRGljdCxwb3NJbktpZHM6MH1dLGE9bmV3IFJlZlNldCxzPXRoaXMuX2NhdERpY3QuZ2V0UmF3KCJQYWdlcyIpO3MgaW5zdGFuY2VvZiBSZWYmJmEucHV0KHMpO2NvbnN0IHI9bmV3IE1hcCxuPXRoaXMueHJlZixvPXRoaXMucGFnZUluZGV4Q2FjaGU7bGV0IGc9MDtmdW5jdGlvbiBhZGRQYWdlRGljdChlLHQpe3QmJiFvLmhhcyh0KSYmby5wdXQodCxnKTtyLnNldChnKyssW2UsdF0pfWZ1bmN0aW9uIGFkZFBhZ2VFcnJvcihpKXtpZihpIGluc3RhbmNlb2YgWFJlZkVudHJ5RXhjZXB0aW9uJiYhZSl0aHJvdyBpO2lmKGUmJnQmJjA9PT1nKXt3YXJuKGBnZXRBbGxQYWdlRGljdHMgLSBTa2lwcGluZyBpbnZhbGlkIGZpcnN0IHBhZ2U6ICIke2l9Ii5gKTtpPURpY3QuZW1wdHl9ci5zZXQoZysrLFtpLG51bGxdKX1mb3IoO2kubGVuZ3RoPjA7KXtjb25zdCBlPWkuYXQoLTEpLHtjdXJyZW50Tm9kZTp0LHBvc0luS2lkczpzfT1lO2xldCByPXQuZ2V0UmF3KCJLaWRzIik7aWYociBpbnN0YW5jZW9mIFJlZil0cnl7cj1hd2FpdCBuLmZldGNoQXN5bmMocil9Y2F0Y2goZSl7YWRkUGFnZUVycm9yKGUpO2JyZWFrfWlmKCFBcnJheS5pc0FycmF5KHIpKXthZGRQYWdlRXJyb3IobmV3IEZvcm1hdEVycm9yKCJQYWdlIGRpY3Rpb25hcnkga2lkcyBvYmplY3QgaXMgbm90IGFuIGFycmF5LiIpKTticmVha31pZihzPj1yLmxlbmd0aCl7aS5wb3AoKTtjb250aW51ZX1jb25zdCBvPXJbc107bGV0IGc7aWYobyBpbnN0YW5jZW9mIFJlZil7aWYoYS5oYXMobykpe2FkZFBhZ2VFcnJvcihuZXcgRm9ybWF0RXJyb3IoIlBhZ2VzIHRyZWUgY29udGFpbnMgY2lyY3VsYXIgcmVmZXJlbmNlLiIpKTticmVha31hLnB1dChvKTt0cnl7Zz1hd2FpdCBuLmZldGNoQXN5bmMobyl9Y2F0Y2goZSl7YWRkUGFnZUVycm9yKGUpO2JyZWFrfX1lbHNlIGc9bztpZighKGcgaW5zdGFuY2VvZiBEaWN0KSl7YWRkUGFnZUVycm9yKG5ldyBGb3JtYXRFcnJvcigiUGFnZSBkaWN0aW9uYXJ5IGtpZCByZWZlcmVuY2UgcG9pbnRzIHRvIHdyb25nIHR5cGUgb2Ygb2JqZWN0LiIpKTticmVha31sZXQgYz1nLmdldFJhdygiVHlwZSIpO2lmKGMgaW5zdGFuY2VvZiBSZWYpdHJ5e2M9YXdhaXQgbi5mZXRjaEFzeW5jKGMpfWNhdGNoKGUpe2FkZFBhZ2VFcnJvcihlKTticmVha31pc05hbWUoYywiUGFnZSIpfHwhZy5oYXMoIktpZHMiKT9hZGRQYWdlRGljdChnLG8gaW5zdGFuY2VvZiBSZWY/bzpudWxsKTppLnB1c2goe2N1cnJlbnROb2RlOmcscG9zSW5LaWRzOjB9KTtlLnBvc0luS2lkcysrfXJldHVybiByfWdldFBhZ2VJbmRleChlKXtjb25zdCB0PXRoaXMucGFnZUluZGV4Q2FjaGUuZ2V0KGUpO2lmKHZvaWQgMCE9PXQpcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0KTtjb25zdCBpPXRoaXMueHJlZjtsZXQgYT0wO2NvbnN0IG5leHQ9dD0+ZnVuY3Rpb24gcGFnZXNCZWZvcmVSZWYodCl7bGV0IGEscz0wO3JldHVybiBpLmZldGNoQXN5bmModCkudGhlbigoZnVuY3Rpb24oaSl7aWYoaXNSZWZzRXF1YWwodCxlKSYmIWlzRGljdChpLCJQYWdlIikmJiEoaSBpbnN0YW5jZW9mIERpY3QmJiFpLmhhcygiVHlwZSIpJiZpLmhhcygiQ29udGVudHMiKSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJUaGUgcmVmZXJlbmNlIGRvZXMgbm90IHBvaW50IHRvIGEgL1BhZ2UgZGljdGlvbmFyeS4iKTtpZighaSlyZXR1cm4gbnVsbDtpZighKGkgaW5zdGFuY2VvZiBEaWN0KSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIk5vZGUgbXVzdCBiZSBhIGRpY3Rpb25hcnkuIik7YT1pLmdldFJhdygiUGFyZW50Iik7cmV0dXJuIGkuZ2V0QXN5bmMoIlBhcmVudCIpfSkpLnRoZW4oKGZ1bmN0aW9uKGUpe2lmKCFlKXJldHVybiBudWxsO2lmKCEoZSBpbnN0YW5jZW9mIERpY3QpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiUGFyZW50IG11c3QgYmUgYSBkaWN0aW9uYXJ5LiIpO3JldHVybiBlLmdldEFzeW5jKCJLaWRzIil9KSkudGhlbigoZnVuY3Rpb24oZSl7aWYoIWUpcmV0dXJuIG51bGw7Y29uc3Qgcj1bXTtsZXQgbj0hMTtmb3IoY29uc3QgYSBvZiBlKXtpZighKGEgaW5zdGFuY2VvZiBSZWYpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiS2lkIG11c3QgYmUgYSByZWZlcmVuY2UuIik7aWYoaXNSZWZzRXF1YWwoYSx0KSl7bj0hMDticmVha31yLnB1c2goaS5mZXRjaEFzeW5jKGEpLnRoZW4oKGZ1bmN0aW9uKGUpe2lmKCEoZSBpbnN0YW5jZW9mIERpY3QpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiS2lkIG5vZGUgbXVzdCBiZSBhIGRpY3Rpb25hcnkuIik7ZS5oYXMoIkNvdW50Iik/cys9ZS5nZXQoIkNvdW50Iik6cysrfSkpKX1pZighbil0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIktpZCByZWZlcmVuY2Ugbm90IGZvdW5kIGluIHBhcmVudCdzIGtpZHMuIik7cmV0dXJuIFByb21pc2UuYWxsKHIpLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuW3MsYV19KSl9KSl9KHQpLnRoZW4oKHQ9PntpZighdCl7dGhpcy5wYWdlSW5kZXhDYWNoZS5wdXQoZSxhKTtyZXR1cm4gYX1jb25zdFtpLHNdPXQ7YSs9aTtyZXR1cm4gbmV4dChzKX0pKTtyZXR1cm4gbmV4dChlKX1nZXQgYmFzZVVybCgpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXQoIlVSSSIpO2lmKGUgaW5zdGFuY2VvZiBEaWN0KXtjb25zdCB0PWUuZ2V0KCJCYXNlIik7aWYoInN0cmluZyI9PXR5cGVvZiB0KXtjb25zdCBlPWNyZWF0ZVZhbGlkQWJzb2x1dGVVcmwodCxudWxsLHt0cnlDb252ZXJ0RW5jb2Rpbmc6ITB9KTtpZihlKXJldHVybiBzaGFkb3codGhpcywiYmFzZVVybCIsZS5ocmVmKX19cmV0dXJuIHNoYWRvdyh0aGlzLCJiYXNlVXJsIix0aGlzLnBkZk1hbmFnZXIuZG9jQmFzZVVybCl9c3RhdGljIHBhcnNlRGVzdERpY3Rpb25hcnkoe2Rlc3REaWN0OmUscmVzdWx0T2JqOnQsZG9jQmFzZVVybDppPW51bGwsZG9jQXR0YWNobWVudHM6YT1udWxsfSl7aWYoIShlIGluc3RhbmNlb2YgRGljdCkpe3dhcm4oInBhcnNlRGVzdERpY3Rpb25hcnk6IGBkZXN0RGljdGAgbXVzdCBiZSBhIGRpY3Rpb25hcnkuIik7cmV0dXJufWxldCBzLHIsbj1lLmdldCgiQSIpO2lmKCEobiBpbnN0YW5jZW9mIERpY3QpKWlmKGUuaGFzKCJEZXN0Iikpbj1lLmdldCgiRGVzdCIpO2Vsc2V7bj1lLmdldCgiQUEiKTtuIGluc3RhbmNlb2YgRGljdCYmKG4uaGFzKCJEIik/bj1uLmdldCgiRCIpOm4uaGFzKCJVIikmJihuPW4uZ2V0KCJVIikpKX1pZihuIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgZT1uLmdldCgiUyIpO2lmKCEoZSBpbnN0YW5jZW9mIE5hbWUpKXt3YXJuKCJwYXJzZURlc3REaWN0aW9uYXJ5OiBJbnZhbGlkIHR5cGUgaW4gQWN0aW9uIGRpY3Rpb25hcnkuIik7cmV0dXJufWNvbnN0IGk9ZS5uYW1lO3N3aXRjaChpKXtjYXNlIlJlc2V0Rm9ybSI6Y29uc3QgZT1uLmdldCgiRmxhZ3MiKSxvPTA9PSgxJigibnVtYmVyIj09dHlwZW9mIGU/ZTowKSksZz1bXSxjPVtdO2Zvcihjb25zdCBlIG9mIG4uZ2V0KCJGaWVsZHMiKXx8W10pZSBpbnN0YW5jZW9mIFJlZj9jLnB1c2goZS50b1N0cmluZygpKToic3RyaW5nIj09dHlwZW9mIGUmJmcucHVzaChzdHJpbmdUb1BERlN0cmluZyhlKSk7dC5yZXNldEZvcm09e2ZpZWxkczpnLHJlZnM6YyxpbmNsdWRlOm99O2JyZWFrO2Nhc2UiVVJJIjpzPW4uZ2V0KCJVUkkiKTtzIGluc3RhbmNlb2YgTmFtZSYmKHM9Ii8iK3MubmFtZSk7YnJlYWs7Y2FzZSJHb1RvIjpyPW4uZ2V0KCJEIik7YnJlYWs7Y2FzZSJMYXVuY2giOmNhc2UiR29Ub1IiOmNvbnN0IEM9bi5nZXQoIkYiKTtpZihDIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgZT1uZXcgRmlsZVNwZWMoQyxudWxsLCEwKSx7ZmlsZW5hbWU6dH09ZS5zZXJpYWxpemFibGU7cz10fWVsc2Uic3RyaW5nIj09dHlwZW9mIEMmJihzPUMpO2NvbnN0IGg9ZmV0Y2hSZW1vdGVEZXN0KG4pO2gmJiJzdHJpbmciPT10eXBlb2YgcyYmKHM9cy5zcGxpdCgiIyIsMSlbMF0rIiMiK2gpO2NvbnN0IGw9bi5nZXQoIk5ld1dpbmRvdyIpOyJib29sZWFuIj09dHlwZW9mIGwmJih0Lm5ld1dpbmRvdz1sKTticmVhaztjYXNlIkdvVG9FIjpjb25zdCBRPW4uZ2V0KCJUIik7bGV0IEU7aWYoYSYmUSBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IGU9US5nZXQoIlIiKSx0PVEuZ2V0KCJOIik7aXNOYW1lKGUsIkMiKSYmInN0cmluZyI9PXR5cGVvZiB0JiYoRT1hW3N0cmluZ1RvUERGU3RyaW5nKHQpXSl9aWYoRSl7dC5hdHRhY2htZW50PUU7Y29uc3QgZT1mZXRjaFJlbW90ZURlc3Qobik7ZSYmKHQuYXR0YWNobWVudERlc3Q9ZSl9ZWxzZSB3YXJuKCdwYXJzZURlc3REaWN0aW9uYXJ5IC0gdW5pbXBsZW1lbnRlZCAiR29Ub0UiIGFjdGlvbi4nKTticmVhaztjYXNlIk5hbWVkIjpjb25zdCB1PW4uZ2V0KCJOIik7dSBpbnN0YW5jZW9mIE5hbWUmJih0LmFjdGlvbj11Lm5hbWUpO2JyZWFrO2Nhc2UiU2V0T0NHU3RhdGUiOmNvbnN0IGQ9bi5nZXQoIlN0YXRlIiksZj1uLmdldCgiUHJlc2VydmVSQiIpO2lmKCFBcnJheS5pc0FycmF5KGQpfHwwPT09ZC5sZW5ndGgpYnJlYWs7Y29uc3QgcD1bXTtmb3IoY29uc3QgZSBvZiBkKWlmKGUgaW5zdGFuY2VvZiBOYW1lKXN3aXRjaChlLm5hbWUpe2Nhc2UiT04iOmNhc2UiT0ZGIjpjYXNlIlRvZ2dsZSI6cC5wdXNoKGUubmFtZSl9ZWxzZSBlIGluc3RhbmNlb2YgUmVmJiZwLnB1c2goZS50b1N0cmluZygpKTtpZihwLmxlbmd0aCE9PWQubGVuZ3RoKWJyZWFrO3Quc2V0T0NHU3RhdGU9e3N0YXRlOnAscHJlc2VydmVSQjoiYm9vbGVhbiIhPXR5cGVvZiBmfHxmfTticmVhaztjYXNlIkphdmFTY3JpcHQiOmNvbnN0IG09bi5nZXQoIkpTIik7bGV0IHk7bSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0/eT1tLmdldFN0cmluZygpOiJzdHJpbmciPT10eXBlb2YgbSYmKHk9bSk7Y29uc3Qgdz15JiZyZWNvdmVySnNVUkwoc3RyaW5nVG9QREZTdHJpbmcoeSkpO2lmKHcpe3M9dy51cmw7dC5uZXdXaW5kb3c9dy5uZXdXaW5kb3c7YnJlYWt9ZGVmYXVsdDppZigiSmF2YVNjcmlwdCI9PT1pfHwiU3VibWl0Rm9ybSI9PT1pKWJyZWFrO3dhcm4oYHBhcnNlRGVzdERpY3Rpb25hcnkgLSB1bnN1cHBvcnRlZCBhY3Rpb246ICIke2l9Ii5gKX19ZWxzZSBlLmhhcygiRGVzdCIpJiYocj1lLmdldCgiRGVzdCIpKTtpZigic3RyaW5nIj09dHlwZW9mIHMpe2NvbnN0IGU9Y3JlYXRlVmFsaWRBYnNvbHV0ZVVybChzLGkse2FkZERlZmF1bHRQcm90b2NvbDohMCx0cnlDb252ZXJ0RW5jb2Rpbmc6ITB9KTtlJiYodC51cmw9ZS5ocmVmKTt0LnVuc2FmZVVybD1zfWlmKHIpe3IgaW5zdGFuY2VvZiBOYW1lJiYocj1yLm5hbWUpOyJzdHJpbmciPT10eXBlb2Ygcj90LmRlc3Q9c3RyaW5nVG9QREZTdHJpbmcocik6aXNWYWxpZEV4cGxpY2l0RGVzdChyKSYmKHQuZGVzdD1yKX19fWZ1bmN0aW9uIGFkZENoaWxkcmVuKGUsdCl7aWYoZSBpbnN0YW5jZW9mIERpY3QpZT1lLmdldFJhd1ZhbHVlcygpO2Vsc2UgaWYoZSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pZT1lLmRpY3QuZ2V0UmF3VmFsdWVzKCk7ZWxzZSBpZighQXJyYXkuaXNBcnJheShlKSlyZXR1cm47Zm9yKGNvbnN0IGEgb2YgZSkoKGk9YSlpbnN0YW5jZW9mIFJlZnx8aSBpbnN0YW5jZW9mIERpY3R8fGkgaW5zdGFuY2VvZiBCYXNlU3RyZWFtfHxBcnJheS5pc0FycmF5KGkpKSYmdC5wdXNoKGEpO3ZhciBpfWNsYXNzIE9iamVjdExvYWRlcntjb25zdHJ1Y3RvcihlLHQsaSl7dGhpcy5kaWN0PWU7dGhpcy5rZXlzPXQ7dGhpcy54cmVmPWk7dGhpcy5yZWZTZXQ9bnVsbH1hc3luYyBsb2FkKCl7aWYodGhpcy54cmVmLnN0cmVhbS5pc0RhdGFMb2FkZWQpcmV0dXJuO2NvbnN0e2tleXM6ZSxkaWN0OnR9PXRoaXM7dGhpcy5yZWZTZXQ9bmV3IFJlZlNldDtjb25zdCBpPVtdO2Zvcihjb25zdCBhIG9mIGUpe2NvbnN0IGU9dC5nZXRSYXcoYSk7dm9pZCAwIT09ZSYmaS5wdXNoKGUpfXJldHVybiB0aGlzLl93YWxrKGkpfWFzeW5jIF93YWxrKGUpe2NvbnN0IHQ9W10saT1bXTtmb3IoO2UubGVuZ3RoOyl7bGV0IGE9ZS5wb3AoKTtpZihhIGluc3RhbmNlb2YgUmVmKXtpZih0aGlzLnJlZlNldC5oYXMoYSkpY29udGludWU7dHJ5e3RoaXMucmVmU2V0LnB1dChhKTthPXRoaXMueHJlZi5mZXRjaChhKX1jYXRjaChlKXtpZighKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbikpe3dhcm4oYE9iamVjdExvYWRlci5fd2FsayAtIHJlcXVlc3RpbmcgYWxsIGRhdGE6ICIke2V9Ii5gKTt0aGlzLnJlZlNldD1udWxsO2NvbnN0e21hbmFnZXI6dH09dGhpcy54cmVmLnN0cmVhbTtyZXR1cm4gdC5yZXF1ZXN0QWxsQ2h1bmtzKCl9dC5wdXNoKGEpO2kucHVzaCh7YmVnaW46ZS5iZWdpbixlbmQ6ZS5lbmR9KX19aWYoYSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pe2NvbnN0IGU9YS5nZXRCYXNlU3RyZWFtcygpO2lmKGUpe2xldCBzPSExO2Zvcihjb25zdCB0IG9mIGUpaWYoIXQuaXNEYXRhTG9hZGVkKXtzPSEwO2kucHVzaCh7YmVnaW46dC5zdGFydCxlbmQ6dC5lbmR9KX1zJiZ0LnB1c2goYSl9fWFkZENoaWxkcmVuKGEsZSl9aWYoaS5sZW5ndGgpe2F3YWl0IHRoaXMueHJlZi5zdHJlYW0ubWFuYWdlci5yZXF1ZXN0UmFuZ2VzKGkpO2Zvcihjb25zdCBlIG9mIHQpZSBpbnN0YW5jZW9mIFJlZiYmdGhpcy5yZWZTZXQucmVtb3ZlKGUpO3JldHVybiB0aGlzLl93YWxrKHQpfXRoaXMucmVmU2V0PW51bGx9fWNvbnN0IFdzPVN5bWJvbCgpLGpzPVN5bWJvbCgpLFhzPVN5bWJvbCgpLFpzPVN5bWJvbCgpLFZzPVN5bWJvbCgpLHpzPVN5bWJvbCgpLF9zPVN5bWJvbCgpLCRzPVN5bWJvbCgpLEFyPVN5bWJvbCgpLGVyPVN5bWJvbCgiY29udGVudCIpLHRyPVN5bWJvbCgiZGF0YSIpLGlyPVN5bWJvbCgpLGFyPVN5bWJvbCgiZXh0cmEiKSxzcj1TeW1ib2woKSxycj1TeW1ib2woKSxucj1TeW1ib2woKSxvcj1TeW1ib2woKSxncj1TeW1ib2woKSxJcj1TeW1ib2woKSxjcj1TeW1ib2woKSxDcj1TeW1ib2woKSxocj1TeW1ib2woKSxscj1TeW1ib2woKSxRcj1TeW1ib2woKSxFcj1TeW1ib2woKSx1cj1TeW1ib2woKSxkcj1TeW1ib2woKSxmcj1TeW1ib2woKSxwcj1TeW1ib2woKSxtcj1TeW1ib2woKSx5cj1TeW1ib2woKSx3cj1TeW1ib2woKSxicj1TeW1ib2woKSxEcj1TeW1ib2woKSxGcj1TeW1ib2woKSxTcj1TeW1ib2woKSxrcj1TeW1ib2woKSxOcj1TeW1ib2woKSxScj1TeW1ib2woKSxHcj1TeW1ib2woKSx4cj1TeW1ib2woKSxVcj1TeW1ib2woKSxNcj1TeW1ib2woKSxMcj1TeW1ib2woKSxIcj1TeW1ib2woKSxKcj1TeW1ib2woIm5hbWVzcGFjZUlkIiksWXI9U3ltYm9sKCJub2RlTmFtZSIpLHZyPVN5bWJvbCgpLEtyPVN5bWJvbCgpLFRyPVN5bWJvbCgpLHFyPVN5bWJvbCgpLE9yPVN5bWJvbCgpLFByPVN5bWJvbCgpLFdyPVN5bWJvbCgpLGpyPVN5bWJvbCgpLFhyPVN5bWJvbCgicm9vdCIpLFpyPVN5bWJvbCgpLFZyPVN5bWJvbCgpLHpyPVN5bWJvbCgpLF9yPVN5bWJvbCgpLCRyPVN5bWJvbCgpLEFuPVN5bWJvbCgpLGVuPVN5bWJvbCgpLHRuPVN5bWJvbCgpLGFuPVN5bWJvbCgpLHNuPVN5bWJvbCgpLHJuPVN5bWJvbCgpLG5uPVN5bWJvbCgidWlkIiksb249U3ltYm9sKCksZ249e2NvbmZpZzp7aWQ6MCxjaGVjazplPT5lLnN0YXJ0c1dpdGgoImh0dHA6Ly93d3cueGZhLm9yZy9zY2hlbWEveGNpLyIpfSxjb25uZWN0aW9uU2V0OntpZDoxLGNoZWNrOmU9PmUuc3RhcnRzV2l0aCgiaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94ZmEtY29ubmVjdGlvbi1zZXQvIil9LGRhdGFzZXRzOntpZDoyLGNoZWNrOmU9PmUuc3RhcnRzV2l0aCgiaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94ZmEtZGF0YS8iKX0sZm9ybTp7aWQ6MyxjaGVjazplPT5lLnN0YXJ0c1dpdGgoImh0dHA6Ly93d3cueGZhLm9yZy9zY2hlbWEveGZhLWZvcm0vIil9LGxvY2FsZVNldDp7aWQ6NCxjaGVjazplPT5lLnN0YXJ0c1dpdGgoImh0dHA6Ly93d3cueGZhLm9yZy9zY2hlbWEveGZhLWxvY2FsZS1zZXQvIil9LHBkZjp7aWQ6NSxjaGVjazplPT4iaHR0cDovL25zLmFkb2JlLmNvbS94ZHAvcGRmLyI9PT1lfSxzaWduYXR1cmU6e2lkOjYsY2hlY2s6ZT0+Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPT09ZX0sc291cmNlU2V0OntpZDo3LGNoZWNrOmU9PmUuc3RhcnRzV2l0aCgiaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94ZmEtc291cmNlLXNldC8iKX0sc3R5bGVzaGVldDp7aWQ6OCxjaGVjazplPT4iaHR0cDovL3d3dy53My5vcmcvMTk5OS9YU0wvVHJhbnNmb3JtIj09PWV9LHRlbXBsYXRlOntpZDo5LGNoZWNrOmU9PmUuc3RhcnRzV2l0aCgiaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94ZmEtdGVtcGxhdGUvIil9LHhkYzp7aWQ6MTAsY2hlY2s6ZT0+ZS5zdGFydHNXaXRoKCJodHRwOi8vd3d3LnhmYS5vcmcvc2NoZW1hL3hkYy8iKX0seGRwOntpZDoxMSxjaGVjazplPT4iaHR0cDovL25zLmFkb2JlLmNvbS94ZHAvIj09PWV9LHhmZGY6e2lkOjEyLGNoZWNrOmU9PiJodHRwOi8vbnMuYWRvYmUuY29tL3hmZGYvIj09PWV9LHhodG1sOntpZDoxMyxjaGVjazplPT4iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI9PT1lfSx4bXBtZXRhOntpZDoxNCxjaGVjazplPT4iaHR0cDovL25zLmFkb2JlLmNvbS94bXBtZXRhLyI9PT1lfX0sSW49e3B0OmU9PmUsY206ZT0+ZS8yLjU0KjcyLG1tOmU9PmUvMjUuNCo3MixpbjplPT43MiplLHB4OmU9PmV9LGNuPS8oWystXT9cZCtcLj9cZCopKC4qKS87ZnVuY3Rpb24gc3RyaXBRdW90ZXMoZSl7cmV0dXJuIGUuc3RhcnRzV2l0aCgiJyIpfHxlLnN0YXJ0c1dpdGgoJyInKT9lLnNsaWNlKDEsLTEpOmV9ZnVuY3Rpb24gZ2V0SW50ZWdlcih7ZGF0YTplLGRlZmF1bHRWYWx1ZTp0LHZhbGlkYXRlOml9KXtpZighZSlyZXR1cm4gdDtlPWUudHJpbSgpO2NvbnN0IGE9cGFyc2VJbnQoZSwxMCk7cmV0dXJuIWlzTmFOKGEpJiZpKGEpP2E6dH1mdW5jdGlvbiBnZXRGbG9hdCh7ZGF0YTplLGRlZmF1bHRWYWx1ZTp0LHZhbGlkYXRlOml9KXtpZighZSlyZXR1cm4gdDtlPWUudHJpbSgpO2NvbnN0IGE9cGFyc2VGbG9hdChlKTtyZXR1cm4haXNOYU4oYSkmJmkoYSk/YTp0fWZ1bmN0aW9uIGdldEtleXdvcmQoe2RhdGE6ZSxkZWZhdWx0VmFsdWU6dCx2YWxpZGF0ZTppfSl7cmV0dXJuIGUmJmkoZT1lLnRyaW0oKSk/ZTp0fWZ1bmN0aW9uIGdldFN0cmluZ09wdGlvbihlLHQpe3JldHVybiBnZXRLZXl3b3JkKHtkYXRhOmUsZGVmYXVsdFZhbHVlOnRbMF0sdmFsaWRhdGU6ZT0+dC5pbmNsdWRlcyhlKX0pfWZ1bmN0aW9uIGdldE1lYXN1cmVtZW50KGUsdD0iMCIpe3R8fD0iMCI7aWYoIWUpcmV0dXJuIGdldE1lYXN1cmVtZW50KHQpO2NvbnN0IGk9ZS50cmltKCkubWF0Y2goY24pO2lmKCFpKXJldHVybiBnZXRNZWFzdXJlbWVudCh0KTtjb25zdFssYSxzXT1pLHI9cGFyc2VGbG9hdChhKTtpZihpc05hTihyKSlyZXR1cm4gZ2V0TWVhc3VyZW1lbnQodCk7aWYoMD09PXIpcmV0dXJuIDA7Y29uc3Qgbj1JbltzXTtyZXR1cm4gbj9uKHIpOnJ9ZnVuY3Rpb24gZ2V0UmF0aW8oZSl7aWYoIWUpcmV0dXJue251bToxLGRlbjoxfTtjb25zdCB0PWUudHJpbSgpLnNwbGl0KC9ccyo6XHMqLykubWFwKChlPT5wYXJzZUZsb2F0KGUpKSkuZmlsdGVyKChlPT4haXNOYU4oZSkpKTsxPT09dC5sZW5ndGgmJnQucHVzaCgxKTtpZigwPT09dC5sZW5ndGgpcmV0dXJue251bToxLGRlbjoxfTtjb25zdFtpLGFdPXQ7cmV0dXJue251bTppLGRlbjphfX1mdW5jdGlvbiBnZXRSZWxldmFudChlKXtyZXR1cm4gZT9lLnRyaW0oKS5zcGxpdCgvXHMrLykubWFwKChlPT4oe2V4Y2x1ZGVkOiItIj09PWVbMF0sdmlld25hbWU6ZS5zdWJzdHJpbmcoMSl9KSkpOltdfWNsYXNzIEhUTUxSZXN1bHR7c3RhdGljIGdldCBGQUlMVVJFKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJGQUlMVVJFIixuZXcgSFRNTFJlc3VsdCghMSxudWxsLG51bGwsbnVsbCkpfXN0YXRpYyBnZXQgRU1QVFkoKXtyZXR1cm4gc2hhZG93KHRoaXMsIkVNUFRZIixuZXcgSFRNTFJlc3VsdCghMCxudWxsLG51bGwsbnVsbCkpfWNvbnN0cnVjdG9yKGUsdCxpLGEpe3RoaXMuc3VjY2Vzcz1lO3RoaXMuaHRtbD10O3RoaXMuYmJveD1pO3RoaXMuYnJlYWtOb2RlPWF9aXNCcmVhaygpe3JldHVybiEhdGhpcy5icmVha05vZGV9c3RhdGljIGJyZWFrTm9kZShlKXtyZXR1cm4gbmV3IEhUTUxSZXN1bHQoITEsbnVsbCxudWxsLGUpfXN0YXRpYyBzdWNjZXNzKGUsdD1udWxsKXtyZXR1cm4gbmV3IEhUTUxSZXN1bHQoITAsZSx0LG51bGwpfX1jbGFzcyBGb250RmluZGVye2NvbnN0cnVjdG9yKGUpe3RoaXMuZm9udHM9bmV3IE1hcDt0aGlzLmNhY2hlPW5ldyBNYXA7dGhpcy53YXJuZWQ9bmV3IFNldDt0aGlzLmRlZmF1bHRGb250PW51bGw7dGhpcy5hZGQoZSl9YWRkKGUsdD1udWxsKXtmb3IoY29uc3QgdCBvZiBlKXRoaXMuYWRkUGRmRm9udCh0KTtmb3IoY29uc3QgZSBvZiB0aGlzLmZvbnRzLnZhbHVlcygpKWUucmVndWxhcnx8KGUucmVndWxhcj1lLml0YWxpY3x8ZS5ib2xkfHxlLmJvbGRpdGFsaWMpO2lmKCF0fHwwPT09dC5zaXplKXJldHVybjtjb25zdCBpPXRoaXMuZm9udHMuZ2V0KCJQZGZKUy1GYWxsYmFjay1QZGZKUy1YRkEiKTtmb3IoY29uc3QgZSBvZiB0KXRoaXMuZm9udHMuc2V0KGUsaSl9YWRkUGRmRm9udChlKXtjb25zdCB0PWUuY3NzRm9udEluZm8saT10LmZvbnRGYW1pbHk7bGV0IGE9dGhpcy5mb250cy5nZXQoaSk7aWYoIWEpe2E9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLmZvbnRzLnNldChpLGEpO3RoaXMuZGVmYXVsdEZvbnR8fCh0aGlzLmRlZmF1bHRGb250PWEpfWxldCBzPSIiO2NvbnN0IHI9cGFyc2VGbG9hdCh0LmZvbnRXZWlnaHQpOzAhPT1wYXJzZUZsb2F0KHQuaXRhbGljQW5nbGUpP3M9cj49NzAwPyJib2xkaXRhbGljIjoiaXRhbGljIjpyPj03MDAmJihzPSJib2xkIik7aWYoIXMpeyhlLm5hbWUuaW5jbHVkZXMoIkJvbGQiKXx8ZS5wc05hbWU/LmluY2x1ZGVzKCJCb2xkIikpJiYocz0iYm9sZCIpOyhlLm5hbWUuaW5jbHVkZXMoIkl0YWxpYyIpfHxlLm5hbWUuZW5kc1dpdGgoIkl0Iil8fGUucHNOYW1lPy5pbmNsdWRlcygiSXRhbGljIil8fGUucHNOYW1lPy5lbmRzV2l0aCgiSXQiKSkmJihzKz0iaXRhbGljIil9c3x8KHM9InJlZ3VsYXIiKTthW3NdPWV9Z2V0RGVmYXVsdCgpe3JldHVybiB0aGlzLmRlZmF1bHRGb250fWZpbmQoZSx0PSEwKXtsZXQgaT10aGlzLmZvbnRzLmdldChlKXx8dGhpcy5jYWNoZS5nZXQoZSk7aWYoaSlyZXR1cm4gaTtjb25zdCBhPS8sfC18X3wgfGJvbGRpdGFsaWN8Ym9sZHxpdGFsaWN8cmVndWxhcnxpdC9naTtsZXQgcz1lLnJlcGxhY2VBbGwoYSwiIik7aT10aGlzLmZvbnRzLmdldChzKTtpZihpKXt0aGlzLmNhY2hlLnNldChlLGkpO3JldHVybiBpfXM9cy50b0xvd2VyQ2FzZSgpO2NvbnN0IHI9W107Zm9yKGNvbnN0W2UsdF1vZiB0aGlzLmZvbnRzLmVudHJpZXMoKSllLnJlcGxhY2VBbGwoYSwiIikudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKHMpJiZyLnB1c2godCk7aWYoMD09PXIubGVuZ3RoKWZvcihjb25zdFssZV1vZiB0aGlzLmZvbnRzLmVudHJpZXMoKSllLnJlZ3VsYXIubmFtZT8ucmVwbGFjZUFsbChhLCIiKS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgocykmJnIucHVzaChlKTtpZigwPT09ci5sZW5ndGgpe3M9cy5yZXBsYWNlQWxsKC9wc210fG10L2dpLCIiKTtmb3IoY29uc3RbZSx0XW9mIHRoaXMuZm9udHMuZW50cmllcygpKWUucmVwbGFjZUFsbChhLCIiKS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgocykmJnIucHVzaCh0KX1pZigwPT09ci5sZW5ndGgpZm9yKGNvbnN0IGUgb2YgdGhpcy5mb250cy52YWx1ZXMoKSllLnJlZ3VsYXIubmFtZT8ucmVwbGFjZUFsbChhLCIiKS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgocykmJnIucHVzaChlKTtpZihyLmxlbmd0aD49MSl7MSE9PXIubGVuZ3RoJiZ0JiZ3YXJuKGBYRkEgLSBUb28gbWFueSBjaG9pY2VzIHRvIGd1ZXNzIHRoZSBjb3JyZWN0IGZvbnQ6ICR7ZX1gKTt0aGlzLmNhY2hlLnNldChlLHJbMF0pO3JldHVybiByWzBdfWlmKHQmJiF0aGlzLndhcm5lZC5oYXMoZSkpe3RoaXMud2FybmVkLmFkZChlKTt3YXJuKGBYRkEgLSBDYW5ub3QgZmluZCB0aGUgZm9udDogJHtlfWApfXJldHVybiBudWxsfX1mdW5jdGlvbiBzZWxlY3RGb250KGUsdCl7cmV0dXJuIml0YWxpYyI9PT1lLnBvc3R1cmU/ImJvbGQiPT09ZS53ZWlnaHQ/dC5ib2xkaXRhbGljOnQuaXRhbGljOiJib2xkIj09PWUud2VpZ2h0P3QuYm9sZDp0LnJlZ3VsYXJ9Y2xhc3MgRm9udEluZm97Y29uc3RydWN0b3IoZSx0LGksYSl7dGhpcy5saW5lSGVpZ2h0PWk7dGhpcy5wYXJhTWFyZ2luPXR8fHt0b3A6MCxib3R0b206MCxsZWZ0OjAscmlnaHQ6MH07aWYoIWUpe1t0aGlzLnBkZkZvbnQsdGhpcy54ZmFGb250XT10aGlzLmRlZmF1bHRGb250KGEpO3JldHVybn10aGlzLnhmYUZvbnQ9e3R5cGVmYWNlOmUudHlwZWZhY2UscG9zdHVyZTplLnBvc3R1cmUsd2VpZ2h0OmUud2VpZ2h0LHNpemU6ZS5zaXplLGxldHRlclNwYWNpbmc6ZS5sZXR0ZXJTcGFjaW5nfTtjb25zdCBzPWEuZmluZChlLnR5cGVmYWNlKTtpZihzKXt0aGlzLnBkZkZvbnQ9c2VsZWN0Rm9udChlLHMpO3RoaXMucGRmRm9udHx8KFt0aGlzLnBkZkZvbnQsdGhpcy54ZmFGb250XT10aGlzLmRlZmF1bHRGb250KGEpKX1lbHNlW3RoaXMucGRmRm9udCx0aGlzLnhmYUZvbnRdPXRoaXMuZGVmYXVsdEZvbnQoYSl9ZGVmYXVsdEZvbnQoZSl7Y29uc3QgdD1lLmZpbmQoIkhlbHZldGljYSIsITEpfHxlLmZpbmQoIk15cmlhZCBQcm8iLCExKXx8ZS5maW5kKCJBcmlhbCIsITEpfHxlLmdldERlZmF1bHQoKTtpZih0Py5yZWd1bGFyKXtjb25zdCBlPXQucmVndWxhcjtyZXR1cm5bZSx7dHlwZWZhY2U6ZS5jc3NGb250SW5mby5mb250RmFtaWx5LHBvc3R1cmU6Im5vcm1hbCIsd2VpZ2h0OiJub3JtYWwiLHNpemU6MTAsbGV0dGVyU3BhY2luZzowfV19cmV0dXJuW251bGwse3R5cGVmYWNlOiJDb3VyaWVyIixwb3N0dXJlOiJub3JtYWwiLHdlaWdodDoibm9ybWFsIixzaXplOjEwLGxldHRlclNwYWNpbmc6MH1dfX1jbGFzcyBGb250U2VsZWN0b3J7Y29uc3RydWN0b3IoZSx0LGksYSl7dGhpcy5mb250RmluZGVyPWE7dGhpcy5zdGFjaz1bbmV3IEZvbnRJbmZvKGUsdCxpLGEpXX1wdXNoRGF0YShlLHQsaSl7Y29uc3QgYT10aGlzLnN0YWNrLmF0KC0xKTtmb3IoY29uc3QgdCBvZlsidHlwZWZhY2UiLCJwb3N0dXJlIiwid2VpZ2h0Iiwic2l6ZSIsImxldHRlclNwYWNpbmciXSllW3RdfHwoZVt0XT1hLnhmYUZvbnRbdF0pO2Zvcihjb25zdCBlIG9mWyJ0b3AiLCJib3R0b20iLCJsZWZ0IiwicmlnaHQiXSlpc05hTih0W2VdKSYmKHRbZV09YS5wYXJhTWFyZ2luW2VdKTtjb25zdCBzPW5ldyBGb250SW5mbyhlLHQsaXx8YS5saW5lSGVpZ2h0LHRoaXMuZm9udEZpbmRlcik7cy5wZGZGb250fHwocy5wZGZGb250PWEucGRmRm9udCk7dGhpcy5zdGFjay5wdXNoKHMpfXBvcEZvbnQoKXt0aGlzLnN0YWNrLnBvcCgpfXRvcEZvbnQoKXtyZXR1cm4gdGhpcy5zdGFjay5hdCgtMSl9fWNsYXNzIFRleHRNZWFzdXJle2NvbnN0cnVjdG9yKGUsdCxpLGEpe3RoaXMuZ2x5cGhzPVtdO3RoaXMuZm9udFNlbGVjdG9yPW5ldyBGb250U2VsZWN0b3IoZSx0LGksYSk7dGhpcy5leHRyYUhlaWdodD0wfXB1c2hEYXRhKGUsdCxpKXt0aGlzLmZvbnRTZWxlY3Rvci5wdXNoRGF0YShlLHQsaSl9cG9wRm9udChlKXtyZXR1cm4gdGhpcy5mb250U2VsZWN0b3IucG9wRm9udCgpfWFkZFBhcmEoKXtjb25zdCBlPXRoaXMuZm9udFNlbGVjdG9yLnRvcEZvbnQoKTt0aGlzLmV4dHJhSGVpZ2h0Kz1lLnBhcmFNYXJnaW4udG9wK2UucGFyYU1hcmdpbi5ib3R0b219YWRkU3RyaW5nKGUpe2lmKCFlKXJldHVybjtjb25zdCB0PXRoaXMuZm9udFNlbGVjdG9yLnRvcEZvbnQoKSxpPXQueGZhRm9udC5zaXplO2lmKHQucGRmRm9udCl7Y29uc3QgYT10LnhmYUZvbnQubGV0dGVyU3BhY2luZyxzPXQucGRmRm9udCxyPXMubGluZUhlaWdodHx8MS4yLG49dC5saW5lSGVpZ2h0fHxNYXRoLm1heCgxLjIscikqaSxvPXItKHZvaWQgMD09PXMubGluZUdhcD8uMjpzLmxpbmVHYXApLGc9TWF0aC5tYXgoMSxvKSppLGM9aS8xZTMsQz1zLmRlZmF1bHRXaWR0aHx8cy5jaGFyc1RvR2x5cGhzKCIgIilbMF0ud2lkdGg7Zm9yKGNvbnN0IHQgb2YgZS5zcGxpdCgvW1x1MjAyOVxuXS8pKXtjb25zdCBlPXMuZW5jb2RlU3RyaW5nKHQpLmpvaW4oIiIpLGk9cy5jaGFyc1RvR2x5cGhzKGUpO2Zvcihjb25zdCBlIG9mIGkpe2NvbnN0IHQ9ZS53aWR0aHx8Qzt0aGlzLmdseXBocy5wdXNoKFt0KmMrYSxuLGcsZS51bmljb2RlLCExXSl9dGhpcy5nbHlwaHMucHVzaChbMCwwLDAsIlxuIiwhMF0pfXRoaXMuZ2x5cGhzLnBvcCgpfWVsc2V7Zm9yKGNvbnN0IHQgb2YgZS5zcGxpdCgvW1x1MjAyOVxuXS8pKXtmb3IoY29uc3QgZSBvZiB0LnNwbGl0KCIiKSl0aGlzLmdseXBocy5wdXNoKFtpLDEuMippLGksZSwhMV0pO3RoaXMuZ2x5cGhzLnB1c2goWzAsMCwwLCJcbiIsITBdKX10aGlzLmdseXBocy5wb3AoKX19Y29tcHV0ZShlKXtsZXQgdD0tMSxpPTAsYT0wLHM9MCxyPTAsbj0wLG89ITEsZz0hMDtmb3IobGV0IGM9MCxDPXRoaXMuZ2x5cGhzLmxlbmd0aDtjPEM7YysrKXtjb25zdFtDLGgsbCxRLEVdPXRoaXMuZ2x5cGhzW2NdLHU9IiAiPT09USxkPWc/bDpoO2lmKEUpe2E9TWF0aC5tYXgoYSxyKTtyPTA7cys9bjtuPWQ7dD0tMTtpPTA7Zz0hMX1lbHNlIGlmKHUpaWYocitDPmUpe2E9TWF0aC5tYXgoYSxyKTtyPTA7cys9bjtuPWQ7dD0tMTtpPTA7bz0hMDtnPSExfWVsc2V7bj1NYXRoLm1heChkLG4pO2k9cjtyKz1DO3Q9Y31lbHNlIGlmKHIrQz5lKXtzKz1uO249ZDtpZigtMSE9PXQpe2M9dDthPU1hdGgubWF4KGEsaSk7cj0wO3Q9LTE7aT0wfWVsc2V7YT1NYXRoLm1heChhLHIpO3I9Q31vPSEwO2c9ITF9ZWxzZXtyKz1DO249TWF0aC5tYXgoZCxuKX19YT1NYXRoLm1heChhLHIpO3MrPW4rdGhpcy5leHRyYUhlaWdodDtyZXR1cm57d2lkdGg6MS4wMiphLGhlaWdodDpzLGlzQnJva2VuOm99fX1jb25zdCBDbj0vXlteLltdKy8saG49L15bXlxdXSsvLGxuPXtkb3Q6MCxkb3REb3Q6MSxkb3RIYXNoOjIsZG90QnJhY2tldDozLGRvdFBhcmVuOjR9LEJuPW5ldyBNYXAoW1siJGRhdGEiLChlLHQpPT5lLmRhdGFzZXRzP2UuZGF0YXNldHMuZGF0YTplXSxbIiRyZWNvcmQiLChlLHQpPT4oZS5kYXRhc2V0cz9lLmRhdGFzZXRzLmRhdGE6ZSlbRXJdKClbMF1dLFsiJHRlbXBsYXRlIiwoZSx0KT0+ZS50ZW1wbGF0ZV0sWyIkY29ubmVjdGlvblNldCIsKGUsdCk9PmUuY29ubmVjdGlvblNldF0sWyIkZm9ybSIsKGUsdCk9PmUuZm9ybV0sWyIkbGF5b3V0IiwoZSx0KT0+ZS5sYXlvdXRdLFsiJGhvc3QiLChlLHQpPT5lLmhvc3RdLFsiJGRhdGFXaW5kb3ciLChlLHQpPT5lLmRhdGFXaW5kb3ddLFsiJGV2ZW50IiwoZSx0KT0+ZS5ldmVudF0sWyIhIiwoZSx0KT0+ZS5kYXRhc2V0c10sWyIkeGZhIiwoZSx0KT0+ZV0sWyJ4ZmEiLChlLHQpPT5lXSxbIiQiLChlLHQpPT50XV0pLFFuPW5ldyBXZWFrTWFwO2Z1bmN0aW9uIHBhcnNlRXhwcmVzc2lvbihlLHQsaT0hMCl7bGV0IGE9ZS5tYXRjaChDbik7aWYoIWEpcmV0dXJuIG51bGw7bGV0W3NdPWE7Y29uc3Qgcj1be25hbWU6cyxjYWNoZU5hbWU6Ii4iK3MsaW5kZXg6MCxqczpudWxsLGZvcm1DYWxjOm51bGwsb3BlcmF0b3I6bG4uZG90fV07bGV0IG49cy5sZW5ndGg7Zm9yKDtuPGUubGVuZ3RoOyl7Y29uc3QgZz1uO2lmKCJbIj09PWUuY2hhckF0KG4rKykpe2E9ZS5zbGljZShuKS5tYXRjaChobik7aWYoIWEpe3dhcm4oIlhGQSAtIEludmFsaWQgaW5kZXggaW4gU09NIGV4cHJlc3Npb24iKTtyZXR1cm4gbnVsbH1yLmF0KC0xKS5pbmRleD0iKiI9PT0obz0obz1hWzBdKS50cmltKCkpPzEvMDpwYXJzZUludChvLDEwKXx8MDtuKz1hWzBdLmxlbmd0aCsxO2NvbnRpbnVlfWxldCBjO3N3aXRjaChlLmNoYXJBdChuKSl7Y2FzZSIuIjppZighdClyZXR1cm4gbnVsbDtuKys7Yz1sbi5kb3REb3Q7YnJlYWs7Y2FzZSIjIjpuKys7Yz1sbi5kb3RIYXNoO2JyZWFrO2Nhc2UiWyI6aWYoaSl7d2FybigiWEZBIC0gU09NIGV4cHJlc3Npb24gY29udGFpbnMgYSBGb3JtQ2FsYyBzdWJleHByZXNzaW9uIHdoaWNoIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIG5vdy4iKTtyZXR1cm4gbnVsbH1jPWxuLmRvdEJyYWNrZXQ7YnJlYWs7Y2FzZSIoIjppZihpKXt3YXJuKCJYRkEgLSBTT00gZXhwcmVzc2lvbiBjb250YWlucyBhIEphdmFTY3JpcHQgc3ViZXhwcmVzc2lvbiB3aGljaCBpcyBub3Qgc3VwcG9ydGVkIGZvciBub3cuIik7cmV0dXJuIG51bGx9Yz1sbi5kb3RQYXJlbjticmVhaztkZWZhdWx0OmM9bG4uZG90fWE9ZS5zbGljZShuKS5tYXRjaChDbik7aWYoIWEpYnJlYWs7W3NdPWE7bis9cy5sZW5ndGg7ci5wdXNoKHtuYW1lOnMsY2FjaGVOYW1lOmUuc2xpY2UoZyxuKSxvcGVyYXRvcjpjLGluZGV4OjAsanM6bnVsbCxmb3JtQ2FsYzpudWxsfSl9dmFyIG87cmV0dXJuIHJ9ZnVuY3Rpb24gc2VhcmNoTm9kZShlLHQsaSxhPSEwLHM9ITApe2NvbnN0IHI9cGFyc2VFeHByZXNzaW9uKGksYSk7aWYoIXIpcmV0dXJuIG51bGw7Y29uc3Qgbj1Cbi5nZXQoclswXS5uYW1lKTtsZXQgbyxnPTA7aWYobil7bz0hMDtlPVtuKGUsdCldO2c9MX1lbHNle289bnVsbD09PXQ7ZT1bdHx8ZV19Zm9yKGxldCBpPXIubGVuZ3RoO2c8aTtnKyspe2NvbnN0e25hbWU6aSxjYWNoZU5hbWU6YSxvcGVyYXRvcjpuLGluZGV4OmN9PXJbZ10sQz1bXTtmb3IoY29uc3QgdCBvZiBlKXtpZighdC5pc1hGQU9iamVjdCljb250aW51ZTtsZXQgZSxyO2lmKHMpe3I9UW4uZ2V0KHQpO2lmKCFyKXtyPW5ldyBNYXA7UW4uc2V0KHQscil9ZT1yLmdldChhKX1pZighZSl7c3dpdGNoKG4pe2Nhc2UgbG4uZG90OmU9dFtjcl0oaSwhMSk7YnJlYWs7Y2FzZSBsbi5kb3REb3Q6ZT10W2NyXShpLCEwKTticmVhaztjYXNlIGxuLmRvdEhhc2g6ZT10W0lyXShpKTtlPWUuaXNYRkFPYmplY3RBcnJheT9lLmNoaWxkcmVuOltlXX1zJiZyLnNldChhLGUpfWUubGVuZ3RoPjAmJkMucHVzaChlKX1pZigwIT09Qy5sZW5ndGh8fG98fDAhPT1nKWU9aXNGaW5pdGUoYyk/Qy5maWx0ZXIoKGU9PmM8ZS5sZW5ndGgpKS5tYXAoKGU9PmVbY10pKTpDLmZsYXQoKTtlbHNle2NvbnN0IGk9dFtwcl0oKTtpZighKHQ9aSkpcmV0dXJuIG51bGw7Zz0tMTtlPVt0XX19cmV0dXJuIDA9PT1lLmxlbmd0aD9udWxsOmV9ZnVuY3Rpb24gY3JlYXRlRGF0YU5vZGUoZSx0LGkpe2NvbnN0IGE9cGFyc2VFeHByZXNzaW9uKGkpO2lmKCFhKXJldHVybiBudWxsO2lmKGEuc29tZSgoZT0+ZS5vcGVyYXRvcj09PWxuLmRvdERvdCkpKXJldHVybiBudWxsO2NvbnN0IHM9Qm4uZ2V0KGFbMF0ubmFtZSk7bGV0IHI9MDtpZihzKXtlPXMoZSx0KTtyPTF9ZWxzZSBlPXR8fGU7Zm9yKGxldCB0PWEubGVuZ3RoO3I8dDtyKyspe2NvbnN0e25hbWU6dCxvcGVyYXRvcjppLGluZGV4OnN9PWFbcl07aWYoIWlzRmluaXRlKHMpKXthW3JdLmluZGV4PTA7cmV0dXJuIGUuY3JlYXRlTm9kZXMoYS5zbGljZShyKSl9bGV0IG47c3dpdGNoKGkpe2Nhc2UgbG4uZG90Om49ZVtjcl0odCwhMSk7YnJlYWs7Y2FzZSBsbi5kb3REb3Q6bj1lW2NyXSh0LCEwKTticmVhaztjYXNlIGxuLmRvdEhhc2g6bj1lW0lyXSh0KTtuPW4uaXNYRkFPYmplY3RBcnJheT9uLmNoaWxkcmVuOltuXX1pZigwPT09bi5sZW5ndGgpcmV0dXJuIGUuY3JlYXRlTm9kZXMoYS5zbGljZShyKSk7aWYoIShzPG4ubGVuZ3RoKSl7YVtyXS5pbmRleD1zLW4ubGVuZ3RoO3JldHVybiBlLmNyZWF0ZU5vZGVzKGEuc2xpY2UocikpfXtjb25zdCB0PW5bc107aWYoIXQuaXNYRkFPYmplY3Qpe3dhcm4oIlhGQSAtIENhbm5vdCBjcmVhdGUgYSBub2RlLiIpO3JldHVybiBudWxsfWU9dH19cmV0dXJuIG51bGx9Y29uc3QgRW49U3ltYm9sKCksdW49U3ltYm9sKCksZG49U3ltYm9sKCksZm49U3ltYm9sKCJfY2hpbGRyZW4iKSxwbj1TeW1ib2woKSxtbj1TeW1ib2woKSx5bj1TeW1ib2woKSx3bj1TeW1ib2woKSxibj1TeW1ib2woKSxEbj1TeW1ib2woKSxGbj1TeW1ib2woKSxTbj1TeW1ib2woKSxrbj1TeW1ib2woKSxObj1TeW1ib2woInBhcmVudCIpLFJuPVN5bWJvbCgpLEduPVN5bWJvbCgpLHhuPVN5bWJvbCgpO2xldCBVbj0wO2NvbnN0IE1uPWduLmRhdGFzZXRzLmlkO2NsYXNzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlLHQsaT0hMSl7dGhpc1tKcl09ZTt0aGlzW1lyXT10O3RoaXNbRm5dPWk7dGhpc1tObl09bnVsbDt0aGlzW2ZuXT1bXTt0aGlzW25uXT1gJHt0fSR7VW4rK31gO3RoaXNbeXJdPW51bGx9Z2V0IGlzWEZBT2JqZWN0KCl7cmV0dXJuITB9Z2V0IGlzWEZBT2JqZWN0QXJyYXkoKXtyZXR1cm4hMX1jcmVhdGVOb2RlcyhlKXtsZXQgdD10aGlzLGk9bnVsbDtmb3IoY29uc3R7bmFtZTphLGluZGV4OnN9b2YgZSl7Zm9yKGxldCBlPTAscj1pc0Zpbml0ZShzKT9zOjA7ZTw9cjtlKyspe2NvbnN0IGU9dFtKcl09PT1Nbj8tMTp0W0pyXTtpPW5ldyBYbWxPYmplY3QoZSxhKTt0W1hzXShpKX10PWl9cmV0dXJuIGl9W0tyXShlKXtpZighdGhpc1tGbl18fCF0aGlzW1RyXShlKSlyZXR1cm4hMTtjb25zdCB0PWVbWXJdLGk9dGhpc1t0XTtpZighKGkgaW5zdGFuY2VvZiBYRkFPYmplY3RBcnJheSkpe251bGwhPT1pJiZ0aGlzW2pyXShpKTt0aGlzW3RdPWU7dGhpc1tYc10oZSk7cmV0dXJuITB9aWYoaS5wdXNoKGUpKXt0aGlzW1hzXShlKTtyZXR1cm4hMH1sZXQgYT0iIjt0aGlzLmlkP2E9YCAoaWQ6ICR7dGhpcy5pZH0pYDp0aGlzLm5hbWUmJihhPWAgKG5hbWU6ICR7dGhpcy5uYW1lfSAke3RoaXMuaC52YWx1ZX0pYCk7d2FybihgWEZBIC0gbm9kZSAiJHt0aGlzW1lyXX0iJHthfSBoYXMgYWxyZWFkeSBlbm91Z2ggIiR7dH0iIWApO3JldHVybiExfVtUcl0oZSl7cmV0dXJuIHRoaXMuaGFzT3duUHJvcGVydHkoZVtZcl0pJiZlW0pyXT09PXRoaXNbSnJdfVtHcl0oKXtyZXR1cm4hMX1bV3NdKCl7cmV0dXJuITF9W1NyXSgpe3JldHVybiExfVtrcl0oKXtyZXR1cm4hMX1bUHJdKCl7dGhpcy5wYXJhJiZ0aGlzW21yXSgpW2FyXS5wYXJhU3RhY2sucG9wKCl9W1dyXSgpe3RoaXNbbXJdKClbYXJdLnBhcmFTdGFjay5wdXNoKHRoaXMucGFyYSl9W3pyXShlKXt0aGlzLmlkJiZ0aGlzW0pyXT09PWduLnRlbXBsYXRlLmlkJiZlLnNldCh0aGlzLmlkLHRoaXMpfVttcl0oKXtyZXR1cm4gdGhpc1t5cl0udGVtcGxhdGV9W3hyXSgpe3JldHVybiExfVtVcl0oKXtyZXR1cm4hMX1bWHNdKGUpe2VbTm5dPXRoaXM7dGhpc1tmbl0ucHVzaChlKTshZVt5cl0mJnRoaXNbeXJdJiYoZVt5cl09dGhpc1t5cl0pfVtqcl0oZSl7Y29uc3QgdD10aGlzW2ZuXS5pbmRleE9mKGUpO3RoaXNbZm5dLnNwbGljZSh0LDEpfVt3cl0oKXtyZXR1cm4gdGhpcy5oYXNPd25Qcm9wZXJ0eSgidmFsdWUiKX1bJHJdKGUpe31bcXJdKGUpe31bc3JdKCl7fVtWc10oZSl7ZGVsZXRlIHRoaXNbRm5dO2lmKHRoaXNbX3NdKXtlLmNsZWFuKHRoaXNbX3NdKTtkZWxldGUgdGhpc1tfc119fVtEcl0oZSl7cmV0dXJuIHRoaXNbZm5dLmluZGV4T2YoZSl9W0ZyXShlLHQpe3RbTm5dPXRoaXM7dGhpc1tmbl0uc3BsaWNlKGUsMCx0KTshdFt5cl0mJnRoaXNbeXJdJiYodFt5cl09dGhpc1t5cl0pfVtNcl0oKXtyZXR1cm4hdGhpcy5uYW1lfVtIcl0oKXtyZXR1cm4iIn1bZW5dKCl7cmV0dXJuIDA9PT10aGlzW2ZuXS5sZW5ndGg/dGhpc1tlcl06dGhpc1tmbl0ubWFwKChlPT5lW2VuXSgpKSkuam9pbigiIil9Z2V0W2RuXSgpe2NvbnN0IGU9T2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMpO2lmKCFlLl9hdHRyaWJ1dGVzKXtjb25zdCB0PWUuX2F0dHJpYnV0ZXM9bmV3IFNldDtmb3IoY29uc3QgZSBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSl7aWYobnVsbD09PXRoaXNbZV18fHRoaXNbZV1pbnN0YW5jZW9mIFhGQU9iamVjdHx8dGhpc1tlXWluc3RhbmNlb2YgWEZBT2JqZWN0QXJyYXkpYnJlYWs7dC5hZGQoZSl9fXJldHVybiBzaGFkb3codGhpcyxkbixlLl9hdHRyaWJ1dGVzKX1bUnJdKGUpe2xldCB0PXRoaXM7Zm9yKDt0Oyl7aWYodD09PWUpcmV0dXJuITA7dD10W3ByXSgpfXJldHVybiExfVtwcl0oKXtyZXR1cm4gdGhpc1tObl19W2ZyXSgpe3JldHVybiB0aGlzW3ByXSgpfVtFcl0oZT1udWxsKXtyZXR1cm4gZT90aGlzW2VdOnRoaXNbZm5dfVtpcl0oKXtjb25zdCBlPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpc1tlcl0mJihlLiRjb250ZW50PXRoaXNbZXJdKTtmb3IoY29uc3QgdCBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSl7Y29uc3QgaT10aGlzW3RdO251bGwhPT1pJiYoaSBpbnN0YW5jZW9mIFhGQU9iamVjdD9lW3RdPWlbaXJdKCk6aSBpbnN0YW5jZW9mIFhGQU9iamVjdEFycmF5P2kuaXNFbXB0eSgpfHwoZVt0XT1pLmR1bXAoKSk6ZVt0XT1pKX1yZXR1cm4gZX1bcm5dKCl7cmV0dXJuIG51bGx9W2FuXSgpe3JldHVybiBIVE1MUmVzdWx0LkVNUFRZfSpbdXJdKCl7Zm9yKGNvbnN0IGUgb2YgdGhpc1tFcl0oKSl5aWVsZCBlfSpbd25dKGUsdCl7Zm9yKGNvbnN0IGkgb2YgdGhpc1t1cl0oKSlpZighZXx8dD09PWUuaGFzKGlbWXJdKSl7Y29uc3QgZT10aGlzW2dyXSgpLHQ9aVthbl0oZSk7dC5zdWNjZXNzfHwodGhpc1thcl0uZmFpbGluZ05vZGU9aSk7eWllbGQgdH19W3JyXSgpe3JldHVybiBudWxsfVtqc10oZSx0KXt0aGlzW2FyXS5jaGlsZHJlbi5wdXNoKGUpfVtncl0oKXt9W1pzXSh7ZmlsdGVyOmU9bnVsbCxpbmNsdWRlOnQ9ITB9KXtpZih0aGlzW2FyXS5nZW5lcmF0b3Ipe2NvbnN0IGU9dGhpc1tncl0oKSx0PXRoaXNbYXJdLmZhaWxpbmdOb2RlW2FuXShlKTtpZighdC5zdWNjZXNzKXJldHVybiB0O3QuaHRtbCYmdGhpc1tqc10odC5odG1sLHQuYmJveCk7ZGVsZXRlIHRoaXNbYXJdLmZhaWxpbmdOb2RlfWVsc2UgdGhpc1thcl0uZ2VuZXJhdG9yPXRoaXNbd25dKGUsdCk7Zm9yKDs7KXtjb25zdCBlPXRoaXNbYXJdLmdlbmVyYXRvci5uZXh0KCk7aWYoZS5kb25lKWJyZWFrO2NvbnN0IHQ9ZS52YWx1ZTtpZighdC5zdWNjZXNzKXJldHVybiB0O3QuaHRtbCYmdGhpc1tqc10odC5odG1sLHQuYmJveCl9dGhpc1thcl0uZ2VuZXJhdG9yPW51bGw7cmV0dXJuIEhUTUxSZXN1bHQuRU1QVFl9W19yXShlKXt0aGlzW0duXT1uZXcgU2V0KE9iamVjdC5rZXlzKGUpKX1bRG5dKGUpe2NvbnN0IHQ9dGhpc1tkbl0saT10aGlzW0duXTtyZXR1cm5bLi4uZV0uZmlsdGVyKChlPT50LmhhcyhlKSYmIWkuaGFzKGUpKSl9W1pyXShlLHQ9bmV3IFNldCl7Zm9yKGNvbnN0IGkgb2YgdGhpc1tmbl0paVtSbl0oZSx0KX1bUm5dKGUsdCl7Y29uc3QgaT10aGlzW2JuXShlLHQpO2k/dGhpc1tFbl0oaSxlLHQpOnRoaXNbWnJdKGUsdCl9W2JuXShlLHQpe2NvbnN0e3VzZTppLHVzZWhyZWY6YX09dGhpcztpZighaSYmIWEpcmV0dXJuIG51bGw7bGV0IHM9bnVsbCxyPW51bGwsbj1udWxsLG89aTtpZihhKXtvPWE7YS5zdGFydHNXaXRoKCIjc29tKCIpJiZhLmVuZHNXaXRoKCIpIik/cj1hLnNsaWNlKDUsLTEpOmEuc3RhcnRzV2l0aCgiLiNzb20oIikmJmEuZW5kc1dpdGgoIikiKT9yPWEuc2xpY2UoNiwtMSk6YS5zdGFydHNXaXRoKCIjIik/bj1hLnNsaWNlKDEpOmEuc3RhcnRzV2l0aCgiLiMiKSYmKG49YS5zbGljZSgyKSl9ZWxzZSBpLnN0YXJ0c1dpdGgoIiMiKT9uPWkuc2xpY2UoMSk6cj1pO3RoaXMudXNlPXRoaXMudXNlaHJlZj0iIjtpZihuKXM9ZS5nZXQobik7ZWxzZXtzPXNlYXJjaE5vZGUoZS5nZXQoWHIpLHRoaXMsciwhMCwhMSk7cyYmKHM9c1swXSl9aWYoIXMpe3dhcm4oYFhGQSAtIEludmFsaWQgcHJvdG90eXBlIHJlZmVyZW5jZTogJHtvfS5gKTtyZXR1cm4gbnVsbH1pZihzW1lyXSE9PXRoaXNbWXJdKXt3YXJuKGBYRkEgLSBJbmNvbXBhdGlibGUgcHJvdG90eXBlOiAke3NbWXJdfSAhPT0gJHt0aGlzW1lyXX0uYCk7cmV0dXJuIG51bGx9aWYodC5oYXMocykpe3dhcm4oIlhGQSAtIEN5Y2xlIGRldGVjdGVkIGluIHByb3RvdHlwZXMgdXNlLiIpO3JldHVybiBudWxsfXQuYWRkKHMpO2NvbnN0IGc9c1tibl0oZSx0KTtnJiZzW0VuXShnLGUsdCk7c1tacl0oZSx0KTt0LmRlbGV0ZShzKTtyZXR1cm4gc31bRW5dKGUsdCxpKXtpZihpLmhhcyhlKSl7d2FybigiWEZBIC0gQ3ljbGUgZGV0ZWN0ZWQgaW4gcHJvdG90eXBlcyB1c2UuIik7cmV0dXJufSF0aGlzW2VyXSYmZVtlcl0mJih0aGlzW2VyXT1lW2VyXSk7bmV3IFNldChpKS5hZGQoZSk7Zm9yKGNvbnN0IHQgb2YgdGhpc1tEbl0oZVtHbl0pKXt0aGlzW3RdPWVbdF07dGhpc1tHbl0mJnRoaXNbR25dLmFkZCh0KX1mb3IoY29uc3QgYSBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSl7aWYodGhpc1tkbl0uaGFzKGEpKWNvbnRpbnVlO2NvbnN0IHM9dGhpc1thXSxyPWVbYV07aWYocyBpbnN0YW5jZW9mIFhGQU9iamVjdEFycmF5KXtmb3IoY29uc3QgZSBvZiBzW2ZuXSllW1JuXSh0LGkpO2ZvcihsZXQgYT1zW2ZuXS5sZW5ndGgsbj1yW2ZuXS5sZW5ndGg7YTxuO2ErKyl7Y29uc3Qgcj1lW2ZuXVthXVskc10oKTtpZighcy5wdXNoKHIpKWJyZWFrO3JbTm5dPXRoaXM7dGhpc1tmbl0ucHVzaChyKTtyW1JuXSh0LGkpfX1lbHNlIGlmKG51bGw9PT1zKXtpZihudWxsIT09cil7Y29uc3QgZT1yWyRzXSgpO2VbTm5dPXRoaXM7dGhpc1thXT1lO3RoaXNbZm5dLnB1c2goZSk7ZVtSbl0odCxpKX19ZWxzZXtzW1pyXSh0LGkpO3ImJnNbRW5dKHIsdCxpKX19fXN0YXRpY1twbl0oZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/ZS5tYXAoKGU9PlhGQU9iamVjdFtwbl0oZSkpKToib2JqZWN0Ij09dHlwZW9mIGUmJm51bGwhPT1lP09iamVjdC5hc3NpZ24oe30sZSk6ZX1bJHNdKCl7Y29uc3QgZT1PYmplY3QuY3JlYXRlKE9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKSk7Zm9yKGNvbnN0IHQgb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyh0aGlzKSl0cnl7ZVt0XT10aGlzW3RdfWNhdGNoe3NoYWRvdyhlLHQsdGhpc1t0XSl9ZVtubl09YCR7ZVtZcl19JHtVbisrfWA7ZVtmbl09W107Zm9yKGNvbnN0IHQgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpe2lmKHRoaXNbZG5dLmhhcyh0KSl7ZVt0XT1YRkFPYmplY3RbcG5dKHRoaXNbdF0pO2NvbnRpbnVlfWNvbnN0IGk9dGhpc1t0XTtlW3RdPWkgaW5zdGFuY2VvZiBYRkFPYmplY3RBcnJheT9uZXcgWEZBT2JqZWN0QXJyYXkoaVtTbl0pOm51bGx9Zm9yKGNvbnN0IHQgb2YgdGhpc1tmbl0pe2NvbnN0IGk9dFtZcl0sYT10WyRzXSgpO2VbZm5dLnB1c2goYSk7YVtObl09ZTtudWxsPT09ZVtpXT9lW2ldPWE6ZVtpXVtmbl0ucHVzaChhKX1yZXR1cm4gZX1bRXJdKGU9bnVsbCl7cmV0dXJuIGU/dGhpc1tmbl0uZmlsdGVyKCh0PT50W1lyXT09PWUpKTp0aGlzW2ZuXX1bSXJdKGUpe3JldHVybiB0aGlzW2VdfVtjcl0oZSx0LGk9ITApe3JldHVybiBBcnJheS5mcm9tKHRoaXNbQ3JdKGUsdCxpKSl9KltDcl0oZSx0LGk9ITApe2lmKCJwYXJlbnQiIT09ZSl7Zm9yKGNvbnN0IGkgb2YgdGhpc1tmbl0pe2lbWXJdPT09ZSYmKHlpZWxkIGkpO2kubmFtZT09PWUmJih5aWVsZCBpKTsodHx8aVtNcl0oKSkmJih5aWVsZCppW0NyXShlLHQsITEpKX1pJiZ0aGlzW2RuXS5oYXMoZSkmJih5aWVsZCBuZXcgWEZBQXR0cmlidXRlKHRoaXMsZSx0aGlzW2VdKSl9ZWxzZSB5aWVsZCB0aGlzW05uXX19Y2xhc3MgWEZBT2JqZWN0QXJyYXl7Y29uc3RydWN0b3IoZT0xLzApe3RoaXNbU25dPWU7dGhpc1tmbl09W119Z2V0IGlzWEZBT2JqZWN0KCl7cmV0dXJuITF9Z2V0IGlzWEZBT2JqZWN0QXJyYXkoKXtyZXR1cm4hMH1wdXNoKGUpe2lmKHRoaXNbZm5dLmxlbmd0aDw9dGhpc1tTbl0pe3RoaXNbZm5dLnB1c2goZSk7cmV0dXJuITB9d2FybihgWEZBIC0gbm9kZSAiJHtlW1lyXX0iIGFjY2VwdHMgbm8gbW9yZSB0aGFuICR7dGhpc1tTbl19IGNoaWxkcmVuYCk7cmV0dXJuITF9aXNFbXB0eSgpe3JldHVybiAwPT09dGhpc1tmbl0ubGVuZ3RofWR1bXAoKXtyZXR1cm4gMT09PXRoaXNbZm5dLmxlbmd0aD90aGlzW2ZuXVswXVtpcl0oKTp0aGlzW2ZuXS5tYXAoKGU9PmVbaXJdKCkpKX1bJHNdKCl7Y29uc3QgZT1uZXcgWEZBT2JqZWN0QXJyYXkodGhpc1tTbl0pO2VbZm5dPXRoaXNbZm5dLm1hcCgoZT0+ZVskc10oKSkpO3JldHVybiBlfWdldCBjaGlsZHJlbigpe3JldHVybiB0aGlzW2ZuXX1jbGVhcigpe3RoaXNbZm5dLmxlbmd0aD0wfX1jbGFzcyBYRkFBdHRyaWJ1dGV7Y29uc3RydWN0b3IoZSx0LGkpe3RoaXNbTm5dPWU7dGhpc1tZcl09dDt0aGlzW2VyXT1pO3RoaXNbQXJdPSExO3RoaXNbbm5dPSJhdHRyaWJ1dGUiK1VuKyt9W3ByXSgpe3JldHVybiB0aGlzW05uXX1bTnJdKCl7cmV0dXJuITB9W2hyXSgpe3JldHVybiB0aGlzW2VyXS50cmltKCl9WyRyXShlKXtlPWUudmFsdWV8fCIiO3RoaXNbZXJdPWUudG9TdHJpbmcoKX1bZW5dKCl7cmV0dXJuIHRoaXNbZXJdfVtScl0oZSl7cmV0dXJuIHRoaXNbTm5dPT09ZXx8dGhpc1tObl1bUnJdKGUpfX1jbGFzcyBYbWxPYmplY3QgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSx0LGk9e30pe3N1cGVyKGUsdCk7dGhpc1tlcl09IiI7dGhpc1ttbl09bnVsbDtpZigiI3RleHQiIT09dCl7Y29uc3QgZT1uZXcgTWFwO3RoaXNbdW5dPWU7Zm9yKGNvbnN0W3QsYV1vZiBPYmplY3QuZW50cmllcyhpKSllLnNldCh0LG5ldyBYRkFBdHRyaWJ1dGUodGhpcyx0LGEpKTtpZihpLmhhc093blByb3BlcnR5KHZyKSl7Y29uc3QgZT1pW3ZyXS54ZmEuZGF0YU5vZGU7dm9pZCAwIT09ZSYmKCJkYXRhR3JvdXAiPT09ZT90aGlzW21uXT0hMToiZGF0YVZhbHVlIj09PWUmJih0aGlzW21uXT0hMCkpfX10aGlzW0FyXT0hMX1bc25dKGUpe2NvbnN0IHQ9dGhpc1tZcl07aWYoIiN0ZXh0Ij09PXQpe2UucHVzaChlbmNvZGVUb1htbFN0cmluZyh0aGlzW2VyXSkpO3JldHVybn1jb25zdCBpPXV0ZjhTdHJpbmdUb1N0cmluZyh0KSxhPXRoaXNbSnJdPT09TW4/InhmYToiOiIiO2UucHVzaChgPCR7YX0ke2l9YCk7Zm9yKGNvbnN0W3QsaV1vZiB0aGlzW3VuXS5lbnRyaWVzKCkpe2NvbnN0IGE9dXRmOFN0cmluZ1RvU3RyaW5nKHQpO2UucHVzaChgICR7YX09IiR7ZW5jb2RlVG9YbWxTdHJpbmcoaVtlcl0pfSJgKX1udWxsIT09dGhpc1ttbl0mJih0aGlzW21uXT9lLnB1c2goJyB4ZmE6ZGF0YU5vZGU9ImRhdGFWYWx1ZSInKTplLnB1c2goJyB4ZmE6ZGF0YU5vZGU9ImRhdGFHcm91cCInKSk7aWYodGhpc1tlcl18fDAhPT10aGlzW2ZuXS5sZW5ndGgpe2UucHVzaCgiPiIpO2lmKHRoaXNbZXJdKSJzdHJpbmciPT10eXBlb2YgdGhpc1tlcl0/ZS5wdXNoKGVuY29kZVRvWG1sU3RyaW5nKHRoaXNbZXJdKSk6dGhpc1tlcl1bc25dKGUpO2Vsc2UgZm9yKGNvbnN0IHQgb2YgdGhpc1tmbl0pdFtzbl0oZSk7ZS5wdXNoKGA8LyR7YX0ke2l9PmApfWVsc2UgZS5wdXNoKCIvPiIpfVtLcl0oZSl7aWYodGhpc1tlcl0pe2NvbnN0IGU9bmV3IFhtbE9iamVjdCh0aGlzW0pyXSwiI3RleHQiKTt0aGlzW1hzXShlKTtlW2VyXT10aGlzW2VyXTt0aGlzW2VyXT0iIn10aGlzW1hzXShlKTtyZXR1cm4hMH1bcXJdKGUpe3RoaXNbZXJdKz1lfVtzcl0oKXtpZih0aGlzW2VyXSYmdGhpc1tmbl0ubGVuZ3RoPjApe2NvbnN0IGU9bmV3IFhtbE9iamVjdCh0aGlzW0pyXSwiI3RleHQiKTt0aGlzW1hzXShlKTtlW2VyXT10aGlzW2VyXTtkZWxldGUgdGhpc1tlcl19fVthbl0oKXtyZXR1cm4iI3RleHQiPT09dGhpc1tZcl0/SFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiIjdGV4dCIsdmFsdWU6dGhpc1tlcl19KTpIVE1MUmVzdWx0LkVNUFRZfVtFcl0oZT1udWxsKXtyZXR1cm4gZT90aGlzW2ZuXS5maWx0ZXIoKHQ9PnRbWXJdPT09ZSkpOnRoaXNbZm5dfVtvcl0oKXtyZXR1cm4gdGhpc1t1bl19W0lyXShlKXtjb25zdCB0PXRoaXNbdW5dLmdldChlKTtyZXR1cm4gdm9pZCAwIT09dD90OnRoaXNbRXJdKGUpfSpbQ3JdKGUsdCl7Y29uc3QgaT10aGlzW3VuXS5nZXQoZSk7aSYmKHlpZWxkIGkpO2Zvcihjb25zdCBpIG9mIHRoaXNbZm5dKXtpW1lyXT09PWUmJih5aWVsZCBpKTt0JiYoeWllbGQqaVtDcl0oZSx0KSl9fSpbbnJdKGUsdCl7Y29uc3QgaT10aGlzW3VuXS5nZXQoZSk7IWl8fHQmJmlbQXJdfHwoeWllbGQgaSk7Zm9yKGNvbnN0IGkgb2YgdGhpc1tmbl0peWllbGQqaVtucl0oZSx0KX0qW1FyXShlLHQsaSl7Zm9yKGNvbnN0IGEgb2YgdGhpc1tmbl0pe2FbWXJdIT09ZXx8aSYmYVtBcl18fCh5aWVsZCBhKTt0JiYoeWllbGQqYVtRcl0oZSx0LGkpKX19W05yXSgpe3JldHVybiBudWxsPT09dGhpc1ttbl0/MD09PXRoaXNbZm5dLmxlbmd0aHx8dGhpc1tmbl1bMF1bSnJdPT09Z24ueGh0bWwuaWQ6dGhpc1ttbl19W2hyXSgpe3JldHVybiBudWxsPT09dGhpc1ttbl0/MD09PXRoaXNbZm5dLmxlbmd0aD90aGlzW2VyXS50cmltKCk6dGhpc1tmbl1bMF1bSnJdPT09Z24ueGh0bWwuaWQ/dGhpc1tmbl1bMF1bZW5dKCkudHJpbSgpOm51bGw6dGhpc1tlcl0udHJpbSgpfVskcl0oZSl7ZT1lLnZhbHVlfHwiIjt0aGlzW2VyXT1lLnRvU3RyaW5nKCl9W2lyXShlPSExKXtjb25zdCB0PU9iamVjdC5jcmVhdGUobnVsbCk7ZSYmKHQuJG5zPXRoaXNbSnJdKTt0aGlzW2VyXSYmKHQuJGNvbnRlbnQ9dGhpc1tlcl0pO3QuJG5hbWU9dGhpc1tZcl07dC5jaGlsZHJlbj1bXTtmb3IoY29uc3QgaSBvZiB0aGlzW2ZuXSl0LmNoaWxkcmVuLnB1c2goaVtpcl0oZSkpO3QuYXR0cmlidXRlcz1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcihjb25zdFtlLGldb2YgdGhpc1t1bl0pdC5hdHRyaWJ1dGVzW2VdPWlbZXJdO3JldHVybiB0fX1jbGFzcyBDb250ZW50T2JqZWN0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSx0KTt0aGlzW2VyXT0iIn1bcXJdKGUpe3RoaXNbZXJdKz1lfVtzcl0oKXt9fWNsYXNzIE9wdGlvbk9iamVjdCBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSx0LGkpe3N1cGVyKGUsdCk7dGhpc1trbl09aX1bc3JdKCl7dGhpc1tlcl09Z2V0S2V5d29yZCh7ZGF0YTp0aGlzW2VyXSxkZWZhdWx0VmFsdWU6dGhpc1trbl1bMF0sdmFsaWRhdGU6ZT0+dGhpc1trbl0uaW5jbHVkZXMoZSl9KX1bVnNdKGUpe3N1cGVyW1ZzXShlKTtkZWxldGUgdGhpc1trbl19fWNsYXNzIFN0cmluZ09iamVjdCBleHRlbmRzIENvbnRlbnRPYmplY3R7W3NyXSgpe3RoaXNbZXJdPXRoaXNbZXJdLnRyaW0oKX19Y2xhc3MgSW50ZWdlck9iamVjdCBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSx0LGksYSl7c3VwZXIoZSx0KTt0aGlzW3luXT1pO3RoaXNbeG5dPWF9W3NyXSgpe3RoaXNbZXJdPWdldEludGVnZXIoe2RhdGE6dGhpc1tlcl0sZGVmYXVsdFZhbHVlOnRoaXNbeW5dLHZhbGlkYXRlOnRoaXNbeG5dfSl9W1ZzXShlKXtzdXBlcltWc10oZSk7ZGVsZXRlIHRoaXNbeW5dO2RlbGV0ZSB0aGlzW3huXX19Y2xhc3MgT3B0aW9uMDEgZXh0ZW5kcyBJbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSx0LDAsKGU9PjE9PT1lKSl9fWNsYXNzIE9wdGlvbjEwIGV4dGVuZHMgSW50ZWdlck9iamVjdHtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsdCwxLChlPT4wPT09ZSkpfX1mdW5jdGlvbiBtZWFzdXJlVG9TdHJpbmcoZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlPyIwcHgiOk51bWJlci5pc0ludGVnZXIoZSk/YCR7ZX1weGA6YCR7ZS50b0ZpeGVkKDIpfXB4YH1jb25zdCBMbj17YW5jaG9yVHlwZShlLHQpe2NvbnN0IGk9ZVtmcl0oKTtpZihpJiYoIWkubGF5b3V0fHwicG9zaXRpb24iPT09aS5sYXlvdXQpKXsidHJhbnNmb3JtImluIHR8fCh0LnRyYW5zZm9ybT0iIik7c3dpdGNoKGUuYW5jaG9yVHlwZSl7Y2FzZSJib3R0b21DZW50ZXIiOnQudHJhbnNmb3JtKz0idHJhbnNsYXRlKC01MCUsIC0xMDAlKSI7YnJlYWs7Y2FzZSJib3R0b21MZWZ0Ijp0LnRyYW5zZm9ybSs9InRyYW5zbGF0ZSgwLC0xMDAlKSI7YnJlYWs7Y2FzZSJib3R0b21SaWdodCI6dC50cmFuc2Zvcm0rPSJ0cmFuc2xhdGUoLTEwMCUsLTEwMCUpIjticmVhaztjYXNlIm1pZGRsZUNlbnRlciI6dC50cmFuc2Zvcm0rPSJ0cmFuc2xhdGUoLTUwJSwtNTAlKSI7YnJlYWs7Y2FzZSJtaWRkbGVMZWZ0Ijp0LnRyYW5zZm9ybSs9InRyYW5zbGF0ZSgwLC01MCUpIjticmVhaztjYXNlIm1pZGRsZVJpZ2h0Ijp0LnRyYW5zZm9ybSs9InRyYW5zbGF0ZSgtMTAwJSwtNTAlKSI7YnJlYWs7Y2FzZSJ0b3BDZW50ZXIiOnQudHJhbnNmb3JtKz0idHJhbnNsYXRlKC01MCUsMCkiO2JyZWFrO2Nhc2UidG9wUmlnaHQiOnQudHJhbnNmb3JtKz0idHJhbnNsYXRlKC0xMDAlLDApIn19fSxkaW1lbnNpb25zKGUsdCl7Y29uc3QgaT1lW2ZyXSgpO2xldCBhPWUudztjb25zdCBzPWUuaDtpZihpLmxheW91dD8uaW5jbHVkZXMoInJvdyIpKXtjb25zdCB0PWlbYXJdLHM9ZS5jb2xTcGFuO2xldCByO2lmKC0xPT09cyl7cj10LmNvbHVtbldpZHRocy5zbGljZSh0LmN1cnJlbnRDb2x1bW4pLnJlZHVjZSgoKGUsdCk9PmUrdCksMCk7dC5jdXJyZW50Q29sdW1uPTB9ZWxzZXtyPXQuY29sdW1uV2lkdGhzLnNsaWNlKHQuY3VycmVudENvbHVtbix0LmN1cnJlbnRDb2x1bW4rcykucmVkdWNlKCgoZSx0KT0+ZSt0KSwwKTt0LmN1cnJlbnRDb2x1bW49KHQuY3VycmVudENvbHVtbitlLmNvbFNwYW4pJXQuY29sdW1uV2lkdGhzLmxlbmd0aH1pc05hTihyKXx8KGE9ZS53PXIpfXQud2lkdGg9IiIhPT1hP21lYXN1cmVUb1N0cmluZyhhKToiYXV0byI7dC5oZWlnaHQ9IiIhPT1zP21lYXN1cmVUb1N0cmluZyhzKToiYXV0byJ9LHBvc2l0aW9uKGUsdCl7Y29uc3QgaT1lW2ZyXSgpO2lmKCFpPy5sYXlvdXR8fCJwb3NpdGlvbiI9PT1pLmxheW91dCl7dC5wb3NpdGlvbj0iYWJzb2x1dGUiO3QubGVmdD1tZWFzdXJlVG9TdHJpbmcoZS54KTt0LnRvcD1tZWFzdXJlVG9TdHJpbmcoZS55KX19LHJvdGF0ZShlLHQpe2lmKGUucm90YXRlKXsidHJhbnNmb3JtImluIHR8fCh0LnRyYW5zZm9ybT0iIik7dC50cmFuc2Zvcm0rPWByb3RhdGUoLSR7ZS5yb3RhdGV9ZGVnKWA7dC50cmFuc2Zvcm1PcmlnaW49InRvcCBsZWZ0In19LHByZXNlbmNlKGUsdCl7c3dpdGNoKGUucHJlc2VuY2Upe2Nhc2UiaW52aXNpYmxlIjp0LnZpc2liaWxpdHk9ImhpZGRlbiI7YnJlYWs7Y2FzZSJoaWRkZW4iOmNhc2UiaW5hY3RpdmUiOnQuZGlzcGxheT0ibm9uZSJ9fSxoQWxpZ24oZSx0KXtpZigicGFyYSI9PT1lW1lyXSlzd2l0Y2goZS5oQWxpZ24pe2Nhc2UianVzdGlmeUFsbCI6dC50ZXh0QWxpZ249Imp1c3RpZnktYWxsIjticmVhaztjYXNlInJhZGl4Ijp0LnRleHRBbGlnbj0ibGVmdCI7YnJlYWs7ZGVmYXVsdDp0LnRleHRBbGlnbj1lLmhBbGlnbn1lbHNlIHN3aXRjaChlLmhBbGlnbil7Y2FzZSJsZWZ0Ijp0LmFsaWduU2VsZj0ic3RhcnQiO2JyZWFrO2Nhc2UiY2VudGVyIjp0LmFsaWduU2VsZj0iY2VudGVyIjticmVhaztjYXNlInJpZ2h0Ijp0LmFsaWduU2VsZj0iZW5kIn19LG1hcmdpbihlLHQpe2UubWFyZ2luJiYodC5tYXJnaW49ZS5tYXJnaW5bcm5dKCkubWFyZ2luKX19O2Z1bmN0aW9uIHNldE1pbk1heERpbWVuc2lvbnMoZSx0KXtpZigicG9zaXRpb24iPT09ZVtmcl0oKS5sYXlvdXQpe2UubWluVz4wJiYodC5taW5XaWR0aD1tZWFzdXJlVG9TdHJpbmcoZS5taW5XKSk7ZS5tYXhXPjAmJih0Lm1heFdpZHRoPW1lYXN1cmVUb1N0cmluZyhlLm1heFcpKTtlLm1pbkg+MCYmKHQubWluSGVpZ2h0PW1lYXN1cmVUb1N0cmluZyhlLm1pbkgpKTtlLm1heEg+MCYmKHQubWF4SGVpZ2h0PW1lYXN1cmVUb1N0cmluZyhlLm1heEgpKX19ZnVuY3Rpb24gbGF5b3V0VGV4dChlLHQsaSxhLHMscil7Y29uc3Qgbj1uZXcgVGV4dE1lYXN1cmUodCxpLGEscyk7InN0cmluZyI9PXR5cGVvZiBlP24uYWRkU3RyaW5nKGUpOmVbT3JdKG4pO3JldHVybiBuLmNvbXB1dGUocil9ZnVuY3Rpb24gbGF5b3V0Tm9kZShlLHQpe2xldCBpPW51bGwsYT1udWxsLHM9ITE7aWYoKCFlLnd8fCFlLmgpJiZlLnZhbHVlKXtsZXQgcj0wLG49MDtpZihlLm1hcmdpbil7cj1lLm1hcmdpbi5sZWZ0SW5zZXQrZS5tYXJnaW4ucmlnaHRJbnNldDtuPWUubWFyZ2luLnRvcEluc2V0K2UubWFyZ2luLmJvdHRvbUluc2V0fWxldCBvPW51bGwsZz1udWxsO2lmKGUucGFyYSl7Zz1PYmplY3QuY3JlYXRlKG51bGwpO289IiI9PT1lLnBhcmEubGluZUhlaWdodD9udWxsOmUucGFyYS5saW5lSGVpZ2h0O2cudG9wPSIiPT09ZS5wYXJhLnNwYWNlQWJvdmU/MDplLnBhcmEuc3BhY2VBYm92ZTtnLmJvdHRvbT0iIj09PWUucGFyYS5zcGFjZUJlbG93PzA6ZS5wYXJhLnNwYWNlQmVsb3c7Zy5sZWZ0PSIiPT09ZS5wYXJhLm1hcmdpbkxlZnQ/MDplLnBhcmEubWFyZ2luTGVmdDtnLnJpZ2h0PSIiPT09ZS5wYXJhLm1hcmdpblJpZ2h0PzA6ZS5wYXJhLm1hcmdpblJpZ2h0fWxldCBjPWUuZm9udDtpZighYyl7Y29uc3QgdD1lW21yXSgpO2xldCBpPWVbcHJdKCk7Zm9yKDtpJiZpIT09dDspe2lmKGkuZm9udCl7Yz1pLmZvbnQ7YnJlYWt9aT1pW3ByXSgpfX1jb25zdCBDPShlLnd8fHQud2lkdGgpLXIsaD1lW3lyXS5mb250RmluZGVyO2lmKGUudmFsdWUuZXhEYXRhJiZlLnZhbHVlLmV4RGF0YVtlcl0mJiJ0ZXh0L2h0bWwiPT09ZS52YWx1ZS5leERhdGEuY29udGVudFR5cGUpe2NvbnN0IHQ9bGF5b3V0VGV4dChlLnZhbHVlLmV4RGF0YVtlcl0sYyxnLG8saCxDKTthPXQud2lkdGg7aT10LmhlaWdodDtzPXQuaXNCcm9rZW59ZWxzZXtjb25zdCB0PWUudmFsdWVbZW5dKCk7aWYodCl7Y29uc3QgZT1sYXlvdXRUZXh0KHQsYyxnLG8saCxDKTthPWUud2lkdGg7aT1lLmhlaWdodDtzPWUuaXNCcm9rZW59fW51bGw9PT1hfHxlLnd8fChhKz1yKTtudWxsPT09aXx8ZS5ofHwoaSs9bil9cmV0dXJue3c6YSxoOmksaXNCcm9rZW46c319ZnVuY3Rpb24gY29tcHV0ZUJib3goZSx0LGkpe2xldCBhO2lmKCIiIT09ZS53JiYiIiE9PWUuaClhPVtlLngsZS55LGUudyxlLmhdO2Vsc2V7aWYoIWkpcmV0dXJuIG51bGw7bGV0IHM9ZS53O2lmKCIiPT09cyl7aWYoMD09PWUubWF4Vyl7Y29uc3QgdD1lW2ZyXSgpO3M9InBvc2l0aW9uIj09PXQubGF5b3V0JiYiIiE9PXQudz8wOmUubWluV31lbHNlIHM9TWF0aC5taW4oZS5tYXhXLGkud2lkdGgpO3QuYXR0cmlidXRlcy5zdHlsZS53aWR0aD1tZWFzdXJlVG9TdHJpbmcocyl9bGV0IHI9ZS5oO2lmKCIiPT09cil7aWYoMD09PWUubWF4SCl7Y29uc3QgdD1lW2ZyXSgpO3I9InBvc2l0aW9uIj09PXQubGF5b3V0JiYiIiE9PXQuaD8wOmUubWluSH1lbHNlIHI9TWF0aC5taW4oZS5tYXhILGkuaGVpZ2h0KTt0LmF0dHJpYnV0ZXMuc3R5bGUuaGVpZ2h0PW1lYXN1cmVUb1N0cmluZyhyKX1hPVtlLngsZS55LHMscl19cmV0dXJuIGF9ZnVuY3Rpb24gZml4RGltZW5zaW9ucyhlKXtjb25zdCB0PWVbZnJdKCk7aWYodC5sYXlvdXQ/LmluY2x1ZGVzKCJyb3ciKSl7Y29uc3QgaT10W2FyXSxhPWUuY29sU3BhbjtsZXQgcztzPS0xPT09YT9pLmNvbHVtbldpZHRocy5zbGljZShpLmN1cnJlbnRDb2x1bW4pLnJlZHVjZSgoKGUsdCk9PmUrdCksMCk6aS5jb2x1bW5XaWR0aHMuc2xpY2UoaS5jdXJyZW50Q29sdW1uLGkuY3VycmVudENvbHVtbithKS5yZWR1Y2UoKChlLHQpPT5lK3QpLDApO2lzTmFOKHMpfHwoZS53PXMpfXQubGF5b3V0JiYicG9zaXRpb24iIT09dC5sYXlvdXQmJihlLng9ZS55PTApOyJ0YWJsZSI9PT1lLmxheW91dCYmIiI9PT1lLncmJkFycmF5LmlzQXJyYXkoZS5jb2x1bW5XaWR0aHMpJiYoZS53PWUuY29sdW1uV2lkdGhzLnJlZHVjZSgoKGUsdCk9PmUrdCksMCkpfWZ1bmN0aW9uIGxheW91dENsYXNzKGUpe3N3aXRjaChlLmxheW91dCl7Y2FzZSJwb3NpdGlvbiI6ZGVmYXVsdDpyZXR1cm4ieGZhUG9zaXRpb24iO2Nhc2UibHItdGIiOnJldHVybiJ4ZmFMclRiIjtjYXNlInJsLXJvdyI6cmV0dXJuInhmYVJsUm93IjtjYXNlInJsLXRiIjpyZXR1cm4ieGZhUmxUYiI7Y2FzZSJyb3ciOnJldHVybiJ4ZmFSb3ciO2Nhc2UidGFibGUiOnJldHVybiJ4ZmFUYWJsZSI7Y2FzZSJ0YiI6cmV0dXJuInhmYVRiIn19ZnVuY3Rpb24gdG9TdHlsZShlLC4uLnQpe2NvbnN0IGk9T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IoY29uc3QgYSBvZiB0KXtjb25zdCB0PWVbYV07aWYobnVsbCE9PXQpaWYoTG4uaGFzT3duUHJvcGVydHkoYSkpTG5bYV0oZSxpKTtlbHNlIGlmKHQgaW5zdGFuY2VvZiBYRkFPYmplY3Qpe2NvbnN0IGU9dFtybl0oKTtlP09iamVjdC5hc3NpZ24oaSxlKTp3YXJuKGAoREVCVUcpIC0gWEZBIC0gc3R5bGUgZm9yICR7YX0gbm90IGltcGxlbWVudGVkIHlldGApfX1yZXR1cm4gaX1mdW5jdGlvbiBjcmVhdGVXcmFwcGVyKGUsdCl7Y29uc3R7YXR0cmlidXRlczppfT10LHtzdHlsZTphfT1pLHM9e25hbWU6ImRpdiIsYXR0cmlidXRlczp7Y2xhc3M6WyJ4ZmFXcmFwcGVyIl0sc3R5bGU6T2JqZWN0LmNyZWF0ZShudWxsKX0sY2hpbGRyZW46W119O2kuY2xhc3MucHVzaCgieGZhV3JhcHBlZCIpO2lmKGUuYm9yZGVyKXtjb25zdHt3aWR0aHM6aSxpbnNldHM6cn09ZS5ib3JkZXJbYXJdO2xldCBuLG8sZz1yWzBdLGM9clszXTtjb25zdCBDPXJbMF0rclsyXSxoPXJbMV0rclszXTtzd2l0Y2goZS5ib3JkZXIuaGFuZCl7Y2FzZSJldmVuIjpnLT1pWzBdLzI7Yy09aVszXS8yO249YGNhbGMoMTAwJSArICR7KGlbMV0raVszXSkvMi1ofXB4KWA7bz1gY2FsYygxMDAlICsgJHsoaVswXStpWzJdKS8yLUN9cHgpYDticmVhaztjYXNlImxlZnQiOmctPWlbMF07Yy09aVszXTtuPWBjYWxjKDEwMCUgKyAke2lbMV0raVszXS1ofXB4KWA7bz1gY2FsYygxMDAlICsgJHtpWzBdK2lbMl0tQ31weClgO2JyZWFrO2Nhc2UicmlnaHQiOm49aD9gY2FsYygxMDAlIC0gJHtofXB4KWA6IjEwMCUiO289Qz9gY2FsYygxMDAlIC0gJHtDfXB4KWA6IjEwMCUifWNvbnN0IGw9WyJ4ZmFCb3JkZXIiXTtpc1ByaW50T25seShlLmJvcmRlcikmJmwucHVzaCgieGZhUHJpbnRPbmx5Iik7Y29uc3QgUT17bmFtZToiZGl2IixhdHRyaWJ1dGVzOntjbGFzczpsLHN0eWxlOnt0b3A6YCR7Z31weGAsbGVmdDpgJHtjfXB4YCx3aWR0aDpuLGhlaWdodDpvfX0sY2hpbGRyZW46W119O2Zvcihjb25zdCBlIG9mWyJib3JkZXIiLCJib3JkZXJXaWR0aCIsImJvcmRlckNvbG9yIiwiYm9yZGVyUmFkaXVzIiwiYm9yZGVyU3R5bGUiXSlpZih2b2lkIDAhPT1hW2VdKXtRLmF0dHJpYnV0ZXMuc3R5bGVbZV09YVtlXTtkZWxldGUgYVtlXX1zLmNoaWxkcmVuLnB1c2goUSx0KX1lbHNlIHMuY2hpbGRyZW4ucHVzaCh0KTtmb3IoY29uc3QgZSBvZlsiYmFja2dyb3VuZCIsImJhY2tncm91bmRDbGlwIiwidG9wIiwibGVmdCIsIndpZHRoIiwiaGVpZ2h0IiwibWluV2lkdGgiLCJtaW5IZWlnaHQiLCJtYXhXaWR0aCIsIm1heEhlaWdodCIsInRyYW5zZm9ybSIsInRyYW5zZm9ybU9yaWdpbiIsInZpc2liaWxpdHkiXSlpZih2b2lkIDAhPT1hW2VdKXtzLmF0dHJpYnV0ZXMuc3R5bGVbZV09YVtlXTtkZWxldGUgYVtlXX1zLmF0dHJpYnV0ZXMuc3R5bGUucG9zaXRpb249ImFic29sdXRlIj09PWEucG9zaXRpb24/ImFic29sdXRlIjoicmVsYXRpdmUiO2RlbGV0ZSBhLnBvc2l0aW9uO2lmKGEuYWxpZ25TZWxmKXtzLmF0dHJpYnV0ZXMuc3R5bGUuYWxpZ25TZWxmPWEuYWxpZ25TZWxmO2RlbGV0ZSBhLmFsaWduU2VsZn1yZXR1cm4gc31mdW5jdGlvbiBmaXhUZXh0SW5kZW50KGUpe2NvbnN0IHQ9Z2V0TWVhc3VyZW1lbnQoZS50ZXh0SW5kZW50LCIwcHgiKTtpZih0Pj0wKXJldHVybjtjb25zdCBpPSJwYWRkaW5nIisoImxlZnQiPT09KCJyaWdodCI9PT1lLnRleHRBbGlnbj8icmlnaHQiOiJsZWZ0Iik/IkxlZnQiOiJSaWdodCIpLGE9Z2V0TWVhc3VyZW1lbnQoZVtpXSwiMHB4Iik7ZVtpXT1hLXQrInB4In1mdW5jdGlvbiBzZXRBY2Nlc3MoZSx0KXtzd2l0Y2goZS5hY2Nlc3Mpe2Nhc2Uibm9uSW50ZXJhY3RpdmUiOnQucHVzaCgieGZhTm9uSW50ZXJhY3RpdmUiKTticmVhaztjYXNlInJlYWRPbmx5Ijp0LnB1c2goInhmYVJlYWRPbmx5Iik7YnJlYWs7Y2FzZSJwcm90ZWN0ZWQiOnQucHVzaCgieGZhRGlzYWJsZWQiKX19ZnVuY3Rpb24gaXNQcmludE9ubHkoZSl7cmV0dXJuIGUucmVsZXZhbnQubGVuZ3RoPjAmJiFlLnJlbGV2YW50WzBdLmV4Y2x1ZGVkJiYicHJpbnQiPT09ZS5yZWxldmFudFswXS52aWV3bmFtZX1mdW5jdGlvbiBnZXRDdXJyZW50UGFyYShlKXtjb25zdCB0PWVbbXJdKClbYXJdLnBhcmFTdGFjaztyZXR1cm4gdC5sZW5ndGg/dC5hdCgtMSk6bnVsbH1mdW5jdGlvbiBzZXRQYXJhKGUsdCxpKXtpZihpLmF0dHJpYnV0ZXMuY2xhc3M/LmluY2x1ZGVzKCJ4ZmFSaWNoIikpe2lmKHQpeyIiPT09ZS5oJiYodC5oZWlnaHQ9ImF1dG8iKTsiIj09PWUudyYmKHQud2lkdGg9ImF1dG8iKX1jb25zdCBhPWdldEN1cnJlbnRQYXJhKGUpO2lmKGEpe2NvbnN0IGU9aS5hdHRyaWJ1dGVzLnN0eWxlO2UuZGlzcGxheT0iZmxleCI7ZS5mbGV4RGlyZWN0aW9uPSJjb2x1bW4iO3N3aXRjaChhLnZBbGlnbil7Y2FzZSJ0b3AiOmUuanVzdGlmeUNvbnRlbnQ9InN0YXJ0IjticmVhaztjYXNlImJvdHRvbSI6ZS5qdXN0aWZ5Q29udGVudD0iZW5kIjticmVhaztjYXNlIm1pZGRsZSI6ZS5qdXN0aWZ5Q29udGVudD0iY2VudGVyIn1jb25zdCB0PWFbcm5dKCk7Zm9yKGNvbnN0W2ksYV1vZiBPYmplY3QuZW50cmllcyh0KSlpIGluIGV8fChlW2ldPWEpfX19ZnVuY3Rpb24gc2V0Rm9udEZhbWlseShlLHQsaSxhKXtpZighaSl7ZGVsZXRlIGEuZm9udEZhbWlseTtyZXR1cm59Y29uc3Qgcz1zdHJpcFF1b3RlcyhlLnR5cGVmYWNlKTthLmZvbnRGYW1pbHk9YCIke3N9ImA7Y29uc3Qgcj1pLmZpbmQocyk7aWYocil7Y29uc3R7Zm9udEZhbWlseTppfT1yLnJlZ3VsYXIuY3NzRm9udEluZm87aSE9PXMmJihhLmZvbnRGYW1pbHk9YCIke2l9ImApO2NvbnN0IG49Z2V0Q3VycmVudFBhcmEodCk7aWYobiYmIiIhPT1uLmxpbmVIZWlnaHQpcmV0dXJuO2lmKGEubGluZUhlaWdodClyZXR1cm47Y29uc3Qgbz1zZWxlY3RGb250KGUscik7byYmKGEubGluZUhlaWdodD1NYXRoLm1heCgxLjIsby5saW5lSGVpZ2h0KSl9fWZ1bmN0aW9uIGZpeFVSTChlKXtjb25zdCB0PWNyZWF0ZVZhbGlkQWJzb2x1dGVVcmwoZSxudWxsLHthZGREZWZhdWx0UHJvdG9jb2w6ITAsdHJ5Q29udmVydEVuY29kaW5nOiEwfSk7cmV0dXJuIHQ/dC5ocmVmOm51bGx9ZnVuY3Rpb24gY3JlYXRlTGluZShlLHQpe3JldHVybntuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e2NsYXNzOlsibHItdGIiPT09ZS5sYXlvdXQ/InhmYUxyIjoieGZhUmwiXX0sY2hpbGRyZW46dH19ZnVuY3Rpb24gZmx1c2hIVE1MKGUpe2lmKCFlW2FyXSlyZXR1cm4gbnVsbDtjb25zdCB0PXtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6ZVthcl0uYXR0cmlidXRlcyxjaGlsZHJlbjplW2FyXS5jaGlsZHJlbn07aWYoZVthcl0uZmFpbGluZ05vZGUpe2NvbnN0IGk9ZVthcl0uZmFpbGluZ05vZGVbcnJdKCk7aSYmKGUubGF5b3V0LmVuZHNXaXRoKCItdGIiKT90LmNoaWxkcmVuLnB1c2goY3JlYXRlTGluZShlLFtpXSkpOnQuY2hpbGRyZW4ucHVzaChpKSl9cmV0dXJuIDA9PT10LmNoaWxkcmVuLmxlbmd0aD9udWxsOnR9ZnVuY3Rpb24gYWRkSFRNTChlLHQsaSl7Y29uc3QgYT1lW2FyXSxzPWEuYXZhaWxhYmxlU3BhY2UsW3IsbixvLGddPWk7c3dpdGNoKGUubGF5b3V0KXtjYXNlInBvc2l0aW9uIjphLndpZHRoPU1hdGgubWF4KGEud2lkdGgscitvKTthLmhlaWdodD1NYXRoLm1heChhLmhlaWdodCxuK2cpO2EuY2hpbGRyZW4ucHVzaCh0KTticmVhaztjYXNlImxyLXRiIjpjYXNlInJsLXRiIjppZighYS5saW5lfHwxPT09YS5hdHRlbXB0KXthLmxpbmU9Y3JlYXRlTGluZShlLFtdKTthLmNoaWxkcmVuLnB1c2goYS5saW5lKTthLm51bWJlckluTGluZT0wfWEubnVtYmVySW5MaW5lKz0xO2EubGluZS5jaGlsZHJlbi5wdXNoKHQpO2lmKDA9PT1hLmF0dGVtcHQpe2EuY3VycmVudFdpZHRoKz1vO2EuaGVpZ2h0PU1hdGgubWF4KGEuaGVpZ2h0LGEucHJldkhlaWdodCtnKX1lbHNle2EuY3VycmVudFdpZHRoPW87YS5wcmV2SGVpZ2h0PWEuaGVpZ2h0O2EuaGVpZ2h0Kz1nO2EuYXR0ZW1wdD0wfWEud2lkdGg9TWF0aC5tYXgoYS53aWR0aCxhLmN1cnJlbnRXaWR0aCk7YnJlYWs7Y2FzZSJybC1yb3ciOmNhc2Uicm93Ijp7YS5jaGlsZHJlbi5wdXNoKHQpO2Eud2lkdGgrPW87YS5oZWlnaHQ9TWF0aC5tYXgoYS5oZWlnaHQsZyk7Y29uc3QgZT1tZWFzdXJlVG9TdHJpbmcoYS5oZWlnaHQpO2Zvcihjb25zdCB0IG9mIGEuY2hpbGRyZW4pdC5hdHRyaWJ1dGVzLnN0eWxlLmhlaWdodD1lO2JyZWFrfWNhc2UidGFibGUiOmNhc2UidGIiOmEud2lkdGg9TWF0aC5taW4ocy53aWR0aCxNYXRoLm1heChhLndpZHRoLG8pKTthLmhlaWdodCs9ZzthLmNoaWxkcmVuLnB1c2godCl9fWZ1bmN0aW9uIGdldEF2YWlsYWJsZVNwYWNlKGUpe2NvbnN0IHQ9ZVthcl0uYXZhaWxhYmxlU3BhY2UsaT1lLm1hcmdpbj9lLm1hcmdpbi50b3BJbnNldCtlLm1hcmdpbi5ib3R0b21JbnNldDowLGE9ZS5tYXJnaW4/ZS5tYXJnaW4ubGVmdEluc2V0K2UubWFyZ2luLnJpZ2h0SW5zZXQ6MDtzd2l0Y2goZS5sYXlvdXQpe2Nhc2UibHItdGIiOmNhc2UicmwtdGIiOnJldHVybiAwPT09ZVthcl0uYXR0ZW1wdD97d2lkdGg6dC53aWR0aC1hLWVbYXJdLmN1cnJlbnRXaWR0aCxoZWlnaHQ6dC5oZWlnaHQtaS1lW2FyXS5wcmV2SGVpZ2h0fTp7d2lkdGg6dC53aWR0aC1hLGhlaWdodDp0LmhlaWdodC1pLWVbYXJdLmhlaWdodH07Y2FzZSJybC1yb3ciOmNhc2Uicm93IjpyZXR1cm57d2lkdGg6ZVthcl0uY29sdW1uV2lkdGhzLnNsaWNlKGVbYXJdLmN1cnJlbnRDb2x1bW4pLnJlZHVjZSgoKGUsdCk9PmUrdCkpLGhlaWdodDp0LmhlaWdodC1hfTtjYXNlInRhYmxlIjpjYXNlInRiIjpyZXR1cm57d2lkdGg6dC53aWR0aC1hLGhlaWdodDp0LmhlaWdodC1pLWVbYXJdLmhlaWdodH07ZGVmYXVsdDpyZXR1cm4gdH19ZnVuY3Rpb24gY2hlY2tEaW1lbnNpb25zKGUsdCl7aWYobnVsbD09PWVbbXJdKClbYXJdLmZpcnN0VW5zcGxpdHRhYmxlKXJldHVybiEwO2lmKDA9PT1lLnd8fDA9PT1lLmgpcmV0dXJuITA7Y29uc3QgaT1lW2ZyXSgpLGE9aVthcl0/LmF0dGVtcHR8fDAsWyxzLHIsbl09ZnVuY3Rpb24gZ2V0VHJhbnNmb3JtZWRCQm94KGUpe2xldCB0LGksYT0iIj09PWUudz9OYU46ZS53LHM9IiI9PT1lLmg/TmFOOmUuaCxbcixuXT1bMCwwXTtzd2l0Y2goZS5hbmNob3JUeXBlfHwiIil7Y2FzZSJib3R0b21DZW50ZXIiOltyLG5dPVthLzIsc107YnJlYWs7Y2FzZSJib3R0b21MZWZ0IjpbcixuXT1bMCxzXTticmVhaztjYXNlImJvdHRvbVJpZ2h0IjpbcixuXT1bYSxzXTticmVhaztjYXNlIm1pZGRsZUNlbnRlciI6W3Isbl09W2EvMixzLzJdO2JyZWFrO2Nhc2UibWlkZGxlTGVmdCI6W3Isbl09WzAscy8yXTticmVhaztjYXNlIm1pZGRsZVJpZ2h0IjpbcixuXT1bYSxzLzJdO2JyZWFrO2Nhc2UidG9wQ2VudGVyIjpbcixuXT1bYS8yLDBdO2JyZWFrO2Nhc2UidG9wUmlnaHQiOltyLG5dPVthLDBdfXN3aXRjaChlLnJvdGF0ZXx8MCl7Y2FzZSAwOlt0LGldPVstciwtbl07YnJlYWs7Y2FzZSA5MDpbdCxpXT1bLW4scl07W2Esc109W3MsLWFdO2JyZWFrO2Nhc2UgMTgwOlt0LGldPVtyLG5dO1thLHNdPVstYSwtc107YnJlYWs7Y2FzZSAyNzA6W3QsaV09W24sLXJdO1thLHNdPVstcyxhXX1yZXR1cm5bZS54K3QrTWF0aC5taW4oMCxhKSxlLnkraStNYXRoLm1pbigwLHMpLE1hdGguYWJzKGEpLE1hdGguYWJzKHMpXX0oZSk7c3dpdGNoKGkubGF5b3V0KXtjYXNlImxyLXRiIjpjYXNlInJsLXRiIjpyZXR1cm4gMD09PWE/ZVttcl0oKVthcl0ubm9MYXlvdXRGYWlsdXJlPyIiIT09ZS53P01hdGgucm91bmQoci10LndpZHRoKTw9Mjp0LndpZHRoPjI6ISgiIiE9PWUuaCYmTWF0aC5yb3VuZChuLXQuaGVpZ2h0KT4yKSYmKCIiIT09ZS53P01hdGgucm91bmQoci10LndpZHRoKTw9Mnx8MD09PWlbYXJdLm51bWJlckluTGluZSYmdC5oZWlnaHQ+Mjp0LndpZHRoPjIpOiEhZVttcl0oKVthcl0ubm9MYXlvdXRGYWlsdXJlfHwhKCIiIT09ZS5oJiZNYXRoLnJvdW5kKG4tdC5oZWlnaHQpPjIpJiYoKCIiPT09ZS53fHxNYXRoLnJvdW5kKHItdC53aWR0aCk8PTJ8fCFpW1VyXSgpKSYmdC5oZWlnaHQ+Mik7Y2FzZSJ0YWJsZSI6Y2FzZSJ0YiI6cmV0dXJuISFlW21yXSgpW2FyXS5ub0xheW91dEZhaWx1cmV8fCgiIj09PWUuaHx8ZVt4cl0oKT8oIiI9PT1lLnd8fE1hdGgucm91bmQoci10LndpZHRoKTw9Mnx8IWlbVXJdKCkpJiZ0LmhlaWdodD4yOk1hdGgucm91bmQobi10LmhlaWdodCk8PTIpO2Nhc2UicG9zaXRpb24iOmlmKGVbbXJdKClbYXJdLm5vTGF5b3V0RmFpbHVyZSlyZXR1cm4hMDtpZigiIj09PWUuaHx8TWF0aC5yb3VuZChuK3MtdC5oZWlnaHQpPD0yKXJldHVybiEwO3JldHVybiBuK3M+ZVttcl0oKVthcl0uY3VycmVudENvbnRlbnRBcmVhLmg7Y2FzZSJybC1yb3ciOmNhc2Uicm93IjpyZXR1cm4hIWVbbXJdKClbYXJdLm5vTGF5b3V0RmFpbHVyZXx8KCIiPT09ZS5ofHxNYXRoLnJvdW5kKG4tdC5oZWlnaHQpPD0yKTtkZWZhdWx0OnJldHVybiEwfX1jb25zdCBIbj1nbi50ZW1wbGF0ZS5pZCxKbj0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLFluPS9eSChcZCspJC8sdm49bmV3IFNldChbImltYWdlL2dpZiIsImltYWdlL2pwZWciLCJpbWFnZS9qcGciLCJpbWFnZS9wanBlZyIsImltYWdlL3BuZyIsImltYWdlL2FwbmciLCJpbWFnZS94LXBuZyIsImltYWdlL2JtcCIsImltYWdlL3gtbXMtYm1wIiwiaW1hZ2UvdGlmZiIsImltYWdlL3RpZiIsImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSJdKSxLbj1bW1s2Niw3N10sImltYWdlL2JtcCJdLFtbMjU1LDIxNiwyNTVdLCJpbWFnZS9qcGVnIl0sW1s3Myw3Myw0MiwwXSwiaW1hZ2UvdGlmZiJdLFtbNzcsNzcsMCw0Ml0sImltYWdlL3RpZmYiXSxbWzcxLDczLDcwLDU2LDU3LDk3XSwiaW1hZ2UvZ2lmIl0sW1sxMzcsODAsNzgsNzEsMTMsMTAsMjYsMTBdLCJpbWFnZS9wbmciXV07ZnVuY3Rpb24gZ2V0Qm9yZGVyRGltcyhlKXtpZighZXx8IWUuYm9yZGVyKXJldHVybnt3OjAsaDowfTtjb25zdCB0PWUuYm9yZGVyW2xyXSgpO3JldHVybiB0P3t3OnQud2lkdGhzWzBdK3Qud2lkdGhzWzJdK3QuaW5zZXRzWzBdK3QuaW5zZXRzWzJdLGg6dC53aWR0aHNbMV0rdC53aWR0aHNbM10rdC5pbnNldHNbMV0rdC5pbnNldHNbM119Ont3OjAsaDowfX1mdW5jdGlvbiBoYXNNYXJnaW4oZSl7cmV0dXJuIGUubWFyZ2luJiYoZS5tYXJnaW4udG9wSW5zZXR8fGUubWFyZ2luLnJpZ2h0SW5zZXR8fGUubWFyZ2luLmJvdHRvbUluc2V0fHxlLm1hcmdpbi5sZWZ0SW5zZXQpfWZ1bmN0aW9uIF9zZXRWYWx1ZShlLHQpe2lmKCFlLnZhbHVlKXtjb25zdCB0PW5ldyBWYWx1ZSh7fSk7ZVtYc10odCk7ZS52YWx1ZT10fWUudmFsdWVbJHJdKHQpfWZ1bmN0aW9uKmdldENvbnRhaW5lZENoaWxkcmVuKGUpe2Zvcihjb25zdCB0IG9mIGVbRXJdKCkpdCBpbnN0YW5jZW9mIFN1YmZvcm1TZXQ/eWllbGQqdFt1cl0oKTp5aWVsZCB0fWZ1bmN0aW9uIGlzUmVxdWlyZWQoZSl7cmV0dXJuImVycm9yIj09PWUudmFsaWRhdGU/Lm51bGxUZXN0fWZ1bmN0aW9uIHNldFRhYkluZGV4KGUpe2Zvcig7ZTspe2lmKCFlLnRyYXZlcnNhbCl7ZVtBbl09ZVtwcl0oKVtBbl07cmV0dXJufWlmKGVbQW5dKXJldHVybjtsZXQgdD1udWxsO2Zvcihjb25zdCBpIG9mIGUudHJhdmVyc2FsW0VyXSgpKWlmKCJuZXh0Ij09PWkub3BlcmF0aW9uKXt0PWk7YnJlYWt9aWYoIXR8fCF0LnJlZil7ZVtBbl09ZVtwcl0oKVtBbl07cmV0dXJufWNvbnN0IGk9ZVttcl0oKTtlW0FuXT0rK2lbQW5dO2NvbnN0IGE9aVtWcl0odC5yZWYsZSk7aWYoIWEpcmV0dXJuO2U9YVswXX19ZnVuY3Rpb24gYXBwbHlBc3Npc3QoZSx0KXtjb25zdCBpPWUuYXNzaXN0O2lmKGkpe2NvbnN0IGU9aVthbl0oKTtlJiYodC50aXRsZT1lKTtjb25zdCBhPWkucm9sZS5tYXRjaChZbik7aWYoYSl7Y29uc3QgZT0iaGVhZGluZyIsaT1hWzFdO3Qucm9sZT1lO3RbImFyaWEtbGV2ZWwiXT1pfX1pZigidGFibGUiPT09ZS5sYXlvdXQpdC5yb2xlPSJ0YWJsZSI7ZWxzZSBpZigicm93Ij09PWUubGF5b3V0KXQucm9sZT0icm93IjtlbHNle2NvbnN0IGk9ZVtwcl0oKTsicm93Ij09PWkubGF5b3V0JiYodC5yb2xlPSJUSCI9PT1pLmFzc2lzdD8ucm9sZT8iY29sdW1uaGVhZGVyIjoiY2VsbCIpfX1mdW5jdGlvbiBhcmlhTGFiZWwoZSl7aWYoIWUuYXNzaXN0KXJldHVybiBudWxsO2NvbnN0IHQ9ZS5hc3Npc3Q7cmV0dXJuIHQuc3BlYWsmJiIiIT09dC5zcGVha1tlcl0/dC5zcGVha1tlcl06dC50b29sVGlwP3QudG9vbFRpcFtlcl06bnVsbH1mdW5jdGlvbiB2YWx1ZVRvSHRtbChlKXtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhUmljaCJdLHN0eWxlOk9iamVjdC5jcmVhdGUobnVsbCl9LGNoaWxkcmVuOlt7bmFtZToic3BhbiIsYXR0cmlidXRlczp7c3R5bGU6T2JqZWN0LmNyZWF0ZShudWxsKX0sdmFsdWU6ZX1dfSl9ZnVuY3Rpb24gc2V0Rmlyc3RVbnNwbGl0dGFibGUoZSl7Y29uc3QgdD1lW21yXSgpO2lmKG51bGw9PT10W2FyXS5maXJzdFVuc3BsaXR0YWJsZSl7dFthcl0uZmlyc3RVbnNwbGl0dGFibGU9ZTt0W2FyXS5ub0xheW91dEZhaWx1cmU9ITB9fWZ1bmN0aW9uIHVuc2V0Rmlyc3RVbnNwbGl0dGFibGUoZSl7Y29uc3QgdD1lW21yXSgpO3RbYXJdLmZpcnN0VW5zcGxpdHRhYmxlPT09ZSYmKHRbYXJdLm5vTGF5b3V0RmFpbHVyZT0hMSl9ZnVuY3Rpb24gaGFuZGxlQnJlYWsoZSl7aWYoZVthcl0pcmV0dXJuITE7ZVthcl09T2JqZWN0LmNyZWF0ZShudWxsKTtpZigiYXV0byI9PT1lLnRhcmdldFR5cGUpcmV0dXJuITE7Y29uc3QgdD1lW21yXSgpO2xldCBpPW51bGw7aWYoZS50YXJnZXQpe2k9dFtWcl0oZS50YXJnZXQsZVtwcl0oKSk7aWYoIWkpcmV0dXJuITE7aT1pWzBdfWNvbnN0e2N1cnJlbnRQYWdlQXJlYTphLGN1cnJlbnRDb250ZW50QXJlYTpzfT10W2FyXTtpZigicGFnZUFyZWEiPT09ZS50YXJnZXRUeXBlKXtpIGluc3RhbmNlb2YgUGFnZUFyZWF8fChpPW51bGwpO2lmKGUuc3RhcnROZXcpe2VbYXJdLnRhcmdldD1pfHxhO3JldHVybiEwfWlmKGkmJmkhPT1hKXtlW2FyXS50YXJnZXQ9aTtyZXR1cm4hMH1yZXR1cm4hMX1pIGluc3RhbmNlb2YgQ29udGVudEFyZWF8fChpPW51bGwpO2NvbnN0IHI9aSYmaVtwcl0oKTtsZXQgbixvPXI7aWYoZS5zdGFydE5ldylpZihpKXtjb25zdCBlPXIuY29udGVudEFyZWEuY2hpbGRyZW4sdD1lLmluZGV4T2YocyksYT1lLmluZGV4T2YoaSk7LTEhPT10JiZ0PGEmJihvPW51bGwpO249YS0xfWVsc2Ugbj1hLmNvbnRlbnRBcmVhLmNoaWxkcmVuLmluZGV4T2Yocyk7ZWxzZXtpZighaXx8aT09PXMpcmV0dXJuITE7bj1yLmNvbnRlbnRBcmVhLmNoaWxkcmVuLmluZGV4T2YoaSktMTtvPXI9PT1hP251bGw6cn1lW2FyXS50YXJnZXQ9bztlW2FyXS5pbmRleD1uO3JldHVybiEwfWZ1bmN0aW9uIGhhbmRsZU92ZXJmbG93KGUsdCxpKXtjb25zdCBhPWVbbXJdKCkscz1hW2FyXS5ub0xheW91dEZhaWx1cmUscj10W2ZyXTt0W2ZyXT0oKT0+ZTthW2FyXS5ub0xheW91dEZhaWx1cmU9ITA7Y29uc3Qgbj10W2FuXShpKTtlW2pzXShuLmh0bWwsbi5iYm94KTthW2FyXS5ub0xheW91dEZhaWx1cmU9czt0W2ZyXT1yfWNsYXNzIEFwcGVhcmFuY2VGaWx0ZXIgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoSG4sImFwcGVhcmFuY2VGaWx0ZXIiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIEFyYyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihIbiwiYXJjIiwhMCk7dGhpcy5jaXJjdWxhcj1nZXRJbnRlZ2VyKHtkYXRhOmUuY2lyY3VsYXIsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLmhhbmQ9Z2V0U3RyaW5nT3B0aW9uKGUuaGFuZCxbImV2ZW4iLCJsZWZ0IiwicmlnaHQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnN0YXJ0QW5nbGU9Z2V0RmxvYXQoe2RhdGE6ZS5zdGFydEFuZ2xlLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PiEwfSk7dGhpcy5zd2VlcEFuZ2xlPWdldEZsb2F0KHtkYXRhOmUuc3dlZXBBbmdsZSxkZWZhdWx0VmFsdWU6MzYwLHZhbGlkYXRlOmU9PiEwfSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZWRnZT1udWxsO3RoaXMuZmlsbD1udWxsfVthbl0oKXtjb25zdCBlPXRoaXMuZWRnZXx8bmV3IEVkZ2Uoe30pLHQ9ZVtybl0oKSxpPU9iamVjdC5jcmVhdGUobnVsbCk7InZpc2libGUiPT09dGhpcy5maWxsPy5wcmVzZW5jZT9PYmplY3QuYXNzaWduKGksdGhpcy5maWxsW3JuXSgpKTppLmZpbGw9InRyYW5zcGFyZW50IjtpLnN0cm9rZVdpZHRoPW1lYXN1cmVUb1N0cmluZygidmlzaWJsZSI9PT1lLnByZXNlbmNlP2UudGhpY2tuZXNzOjApO2kuc3Ryb2tlPXQuY29sb3I7bGV0IGE7Y29uc3Qgcz17eG1sbnM6Sm4sc3R5bGU6e3dpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUiLG92ZXJmbG93OiJ2aXNpYmxlIn19O2lmKDM2MD09PXRoaXMuc3dlZXBBbmdsZSlhPXtuYW1lOiJlbGxpcHNlIixhdHRyaWJ1dGVzOnt4bWxuczpKbixjeDoiNTAlIixjeToiNTAlIixyeDoiNTAlIixyeToiNTAlIixzdHlsZTppfX07ZWxzZXtjb25zdCBlPXRoaXMuc3RhcnRBbmdsZSpNYXRoLlBJLzE4MCx0PXRoaXMuc3dlZXBBbmdsZSpNYXRoLlBJLzE4MCxyPXRoaXMuc3dlZXBBbmdsZT4xODA/MTowLFtuLG8sZyxjXT1bNTAqKDErTWF0aC5jb3MoZSkpLDUwKigxLU1hdGguc2luKGUpKSw1MCooMStNYXRoLmNvcyhlK3QpKSw1MCooMS1NYXRoLnNpbihlK3QpKV07YT17bmFtZToicGF0aCIsYXR0cmlidXRlczp7eG1sbnM6Sm4sZDpgTSAke259ICR7b30gQSA1MCA1MCAwICR7cn0gMCAke2d9ICR7Y31gLHZlY3RvckVmZmVjdDoibm9uLXNjYWxpbmctc3Ryb2tlIixzdHlsZTppfX07T2JqZWN0LmFzc2lnbihzLHt2aWV3Qm94OiIwIDAgMTAwIDEwMCIscHJlc2VydmVBc3BlY3RSYXRpbzoibm9uZSJ9KX1jb25zdCByPXtuYW1lOiJzdmciLGNoaWxkcmVuOlthXSxhdHRyaWJ1dGVzOnN9O2lmKGhhc01hcmdpbih0aGlzW3ByXSgpW3ByXSgpKSlyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e3N0eWxlOntkaXNwbGF5OiJpbmxpbmUiLHdpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUifX0sY2hpbGRyZW46W3JdfSk7ci5hdHRyaWJ1dGVzLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSI7cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2VzcyhyKX19Y2xhc3MgQXJlYSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihIbiwiYXJlYSIsITApO3RoaXMuY29sU3Bhbj1nZXRJbnRlZ2VyKHtkYXRhOmUuY29sU3BhbixkZWZhdWx0VmFsdWU6MSx2YWxpZGF0ZTplPT5lPj0xfHwtMT09PWV9KTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucmVsZXZhbnQ9Z2V0UmVsZXZhbnQoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMueD1nZXRNZWFzdXJlbWVudChlLngsIjBwdCIpO3RoaXMueT1nZXRNZWFzdXJlbWVudChlLnksIjBwdCIpO3RoaXMuZGVzYz1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5hcmVhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRyYXc9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXhPYmplY3Q9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXhjbEdyb3VwPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmZpZWxkPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnN1YmZvcm09bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc3ViZm9ybVNldD1uZXcgWEZBT2JqZWN0QXJyYXl9Klt1cl0oKXt5aWVsZCpnZXRDb250YWluZWRDaGlsZHJlbih0aGlzKX1bTXJdKCl7cmV0dXJuITB9W2tyXSgpe3JldHVybiEwfVtqc10oZSx0KXtjb25zdFtpLGEscyxyXT10O3RoaXNbYXJdLndpZHRoPU1hdGgubWF4KHRoaXNbYXJdLndpZHRoLGkrcyk7dGhpc1thcl0uaGVpZ2h0PU1hdGgubWF4KHRoaXNbYXJdLmhlaWdodCxhK3IpO3RoaXNbYXJdLmNoaWxkcmVuLnB1c2goZSl9W2dyXSgpe3JldHVybiB0aGlzW2FyXS5hdmFpbGFibGVTcGFjZX1bYW5dKGUpe2NvbnN0IHQ9dG9TdHlsZSh0aGlzLCJwb3NpdGlvbiIpLGk9e3N0eWxlOnQsaWQ6dGhpc1tubl0sY2xhc3M6WyJ4ZmFBcmVhIl19O2lzUHJpbnRPbmx5KHRoaXMpJiZpLmNsYXNzLnB1c2goInhmYVByaW50T25seSIpO3RoaXMubmFtZSYmKGkueGZhTmFtZT10aGlzLm5hbWUpO2NvbnN0IGE9W107dGhpc1thcl09e2NoaWxkcmVuOmEsd2lkdGg6MCxoZWlnaHQ6MCxhdmFpbGFibGVTcGFjZTplfTtjb25zdCBzPXRoaXNbWnNdKHtmaWx0ZXI6bmV3IFNldChbImFyZWEiLCJkcmF3IiwiZmllbGQiLCJleGNsR3JvdXAiLCJzdWJmb3JtIiwic3ViZm9ybVNldCJdKSxpbmNsdWRlOiEwfSk7aWYoIXMuc3VjY2Vzcyl7aWYocy5pc0JyZWFrKCkpcmV0dXJuIHM7ZGVsZXRlIHRoaXNbYXJdO3JldHVybiBIVE1MUmVzdWx0LkZBSUxVUkV9dC53aWR0aD1tZWFzdXJlVG9TdHJpbmcodGhpc1thcl0ud2lkdGgpO3QuaGVpZ2h0PW1lYXN1cmVUb1N0cmluZyh0aGlzW2FyXS5oZWlnaHQpO2NvbnN0IHI9e25hbWU6ImRpdiIsYXR0cmlidXRlczppLGNoaWxkcmVuOmF9LG49W3RoaXMueCx0aGlzLnksdGhpc1thcl0ud2lkdGgsdGhpc1thcl0uaGVpZ2h0XTtkZWxldGUgdGhpc1thcl07cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2VzcyhyLG4pfX1jbGFzcyBBc3Npc3QgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoSG4sImFzc2lzdCIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5yb2xlPWUucm9sZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuc3BlYWs9bnVsbDt0aGlzLnRvb2xUaXA9bnVsbH1bYW5dKCl7cmV0dXJuIHRoaXMudG9vbFRpcD8uW2VyXXx8bnVsbH19Y2xhc3MgQmFyY29kZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihIbiwiYmFyY29kZSIsITApO3RoaXMuY2hhckVuY29kaW5nPWdldEtleXdvcmQoe2RhdGE6ZS5jaGFyRW5jb2Rpbmc/ZS5jaGFyRW5jb2RpbmcudG9Mb3dlckNhc2UoKToiIixkZWZhdWx0VmFsdWU6IiIsdmFsaWRhdGU6ZT0+WyJ1dGYtOCIsImJpZy1maXZlIiwiZm9udHNwZWNpZmljIiwiZ2JrIiwiZ2ItMTgwMzAiLCJnYi0yMzEyIiwia3NjLTU2MDEiLCJub25lIiwic2hpZnQtamlzIiwidWNzLTIiLCJ1dGYtMTYiXS5pbmNsdWRlcyhlKXx8ZS5tYXRjaCgvaXNvLTg4NTktXGR7Mn0vKX0pO3RoaXMuY2hlY2tzdW09Z2V0U3RyaW5nT3B0aW9uKGUuY2hlY2tzdW0sWyJub25lIiwiMW1vZDEwIiwiMW1vZDEwXzFtb2QxMSIsIjJtb2QxMCIsImF1dG8iXSk7dGhpcy5kYXRhQ29sdW1uQ291bnQ9Z2V0SW50ZWdlcih7ZGF0YTplLmRhdGFDb2x1bW5Db3VudCxkZWZhdWx0VmFsdWU6LTEsdmFsaWRhdGU6ZT0+ZT49MH0pO3RoaXMuZGF0YUxlbmd0aD1nZXRJbnRlZ2VyKHtkYXRhOmUuZGF0YUxlbmd0aCxkZWZhdWx0VmFsdWU6LTEsdmFsaWRhdGU6ZT0+ZT49MH0pO3RoaXMuZGF0YVByZXA9Z2V0U3RyaW5nT3B0aW9uKGUuZGF0YVByZXAsWyJub25lIiwiZmxhdGVDb21wcmVzcyJdKTt0aGlzLmRhdGFSb3dDb3VudD1nZXRJbnRlZ2VyKHtkYXRhOmUuZGF0YVJvd0NvdW50LGRlZmF1bHRWYWx1ZTotMSx2YWxpZGF0ZTplPT5lPj0wfSk7dGhpcy5lbmRDaGFyPWUuZW5kQ2hhcnx8IiI7dGhpcy5lcnJvckNvcnJlY3Rpb25MZXZlbD1nZXRJbnRlZ2VyKHtkYXRhOmUuZXJyb3JDb3JyZWN0aW9uTGV2ZWwsZGVmYXVsdFZhbHVlOi0xLHZhbGlkYXRlOmU9PmU+PTAmJmU8PTh9KTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubW9kdWxlSGVpZ2h0PWdldE1lYXN1cmVtZW50KGUubW9kdWxlSGVpZ2h0LCI1bW0iKTt0aGlzLm1vZHVsZVdpZHRoPWdldE1lYXN1cmVtZW50KGUubW9kdWxlV2lkdGgsIjAuMjVtbSIpO3RoaXMucHJpbnRDaGVja0RpZ2l0PWdldEludGVnZXIoe2RhdGE6ZS5wcmludENoZWNrRGlnaXQsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLnJvd0NvbHVtblJhdGlvPWdldFJhdGlvKGUucm93Q29sdW1uUmF0aW8pO3RoaXMuc3RhcnRDaGFyPWUuc3RhcnRDaGFyfHwiIjt0aGlzLnRleHRMb2NhdGlvbj1nZXRTdHJpbmdPcHRpb24oZS50ZXh0TG9jYXRpb24sWyJiZWxvdyIsImFib3ZlIiwiYWJvdmVFbWJlZGRlZCIsImJlbG93RW1iZWRkZWQiLCJub25lIl0pO3RoaXMudHJ1bmNhdGU9Z2V0SW50ZWdlcih7ZGF0YTplLnRydW5jYXRlLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGU/ZS50eXBlLnRvTG93ZXJDYXNlKCk6IiIsWyJhenRlYyIsImNvZGFiYXIiLCJjb2RlMm9mNWluZHVzdHJpYWwiLCJjb2RlMm9mNWludGVybGVhdmVkIiwiY29kZTJvZjVtYXRyaXgiLCJjb2RlMm9mNXN0YW5kYXJkIiwiY29kZTNvZjkiLCJjb2RlM29mOWV4dGVuZGVkIiwiY29kZTExIiwiY29kZTQ5IiwiY29kZTkzIiwiY29kZTEyOCIsImNvZGUxMjhhIiwiY29kZTEyOGIiLCJjb2RlMTI4YyIsImNvZGUxMjhzc2NjIiwiZGF0YW1hdHJpeCIsImVhbjgiLCJlYW44YWRkMiIsImVhbjhhZGQ1IiwiZWFuMTMiLCJlYW4xM2FkZDIiLCJlYW4xM2FkZDUiLCJlYW4xM3B3Y2QiLCJmaW0iLCJsb2dtYXJzIiwibWF4aWNvZGUiLCJtc2kiLCJwZGY0MTciLCJwZGY0MTdtYWNybyIsInBsZXNzZXkiLCJwb3N0YXVzY3VzdDIiLCJwb3N0YXVzY3VzdDMiLCJwb3N0YXVzcmVwbHlwYWlkIiwicG9zdGF1c3N0YW5kYXJkIiwicG9zdHVrcm00c2NjIiwicG9zdHVzZHBiYyIsInBvc3R1c2ltYiIsInBvc3R1c3N0YW5kYXJkIiwicG9zdHVzNXppcCIsInFyY29kZSIsInJmaWQiLCJyc3MxNCIsInJzczE0ZXhwYW5kZWQiLCJyc3MxNGxpbWl0ZWQiLCJyc3MxNHN0YWNrZWQiLCJyc3MxNHN0YWNrZWRvbW5pIiwicnNzMTR0cnVuY2F0ZWQiLCJ0ZWxlcGVuIiwidWNjMTI4IiwidWNjMTI4cmFuZG9tIiwidWNjMTI4c3NjYyIsInVwY2EiLCJ1cGNhYWRkMiIsInVwY2FhZGQ1IiwidXBjYXB3Y2QiLCJ1cGNlIiwidXBjZWFkZDIiLCJ1cGNlYWRkNSIsInVwY2VhbjIiLCJ1cGNlYW41IiwidXBzbWF4aWNvZGUiXSk7dGhpcy51cHNNb2RlPWdldFN0cmluZ09wdGlvbihlLnVwc01vZGUsWyJ1c0NhcnJpZXIiLCJpbnRlcm5hdGlvbmFsQ2FycmllciIsInNlY3VyZVN5bWJvbCIsInN0YW5kYXJkU3ltYm9sIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLndpZGVOYXJyb3dSYXRpbz1nZXRSYXRpbyhlLndpZGVOYXJyb3dSYXRpbyk7dGhpcy5lbmNyeXB0PW51bGw7dGhpcy5leHRyYXM9bnVsbH19Y2xhc3MgQmluZCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihIbiwiYmluZCIsITApO3RoaXMubWF0Y2g9Z2V0U3RyaW5nT3B0aW9uKGUubWF0Y2gsWyJvbmNlIiwiZGF0YVJlZiIsImdsb2JhbCIsIm5vbmUiXSk7dGhpcy5yZWY9ZS5yZWZ8fCIiO3RoaXMucGljdHVyZT1udWxsfX1jbGFzcyBCaW5kSXRlbXMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoSG4sImJpbmRJdGVtcyIpO3RoaXMuY29ubmVjdGlvbj1lLmNvbm5lY3Rpb258fCIiO3RoaXMubGFiZWxSZWY9ZS5sYWJlbFJlZnx8IiI7dGhpcy5yZWY9ZS5yZWZ8fCIiO3RoaXMudmFsdWVSZWY9ZS52YWx1ZVJlZnx8IiJ9fWNsYXNzIEJvb2tlbmQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoSG4sImJvb2tlbmQiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubGVhZGVyPWUubGVhZGVyfHwiIjt0aGlzLnRyYWlsZXI9ZS50cmFpbGVyfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIEJvb2xlYW5FbGVtZW50IGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIoSG4sImJvb2xlYW4iKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bYW5dKGUpe3JldHVybiB2YWx1ZVRvSHRtbCgxPT09dGhpc1tlcl0/IjEiOiIwIil9fWNsYXNzIEJvcmRlciBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihIbiwiYm9yZGVyIiwhMCk7dGhpcy5icmVhaz1nZXRTdHJpbmdPcHRpb24oZS5icmVhayxbImNsb3NlIiwib3BlbiJdKTt0aGlzLmhhbmQ9Z2V0U3RyaW5nT3B0aW9uKGUuaGFuZCxbImV2ZW4iLCJsZWZ0IiwicmlnaHQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnByZXNlbmNlPWdldFN0cmluZ09wdGlvbihlLnByZXNlbmNlLFsidmlzaWJsZSIsImhpZGRlbiIsImluYWN0aXZlIiwiaW52aXNpYmxlIl0pO3RoaXMucmVsZXZhbnQ9Z2V0UmVsZXZhbnQoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY29ybmVyPW5ldyBYRkFPYmplY3RBcnJheSg0KTt0aGlzLmVkZ2U9bmV3IFhGQU9iamVjdEFycmF5KDQpO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5maWxsPW51bGw7dGhpcy5tYXJnaW49bnVsbH1bbHJdKCl7aWYoIXRoaXNbYXJdKXtjb25zdCBlPXRoaXMuZWRnZS5jaGlsZHJlbi5zbGljZSgpO2lmKGUubGVuZ3RoPDQpe2NvbnN0IHQ9ZS5hdCgtMSl8fG5ldyBFZGdlKHt9KTtmb3IobGV0IGk9ZS5sZW5ndGg7aTw0O2krKyllLnB1c2godCl9Y29uc3QgdD1lLm1hcCgoZT0+ZS50aGlja25lc3MpKSxpPVswLDAsMCwwXTtpZih0aGlzLm1hcmdpbil7aVswXT10aGlzLm1hcmdpbi50b3BJbnNldDtpWzFdPXRoaXMubWFyZ2luLnJpZ2h0SW5zZXQ7aVsyXT10aGlzLm1hcmdpbi5ib3R0b21JbnNldDtpWzNdPXRoaXMubWFyZ2luLmxlZnRJbnNldH10aGlzW2FyXT17d2lkdGhzOnQsaW5zZXRzOmksZWRnZXM6ZX19cmV0dXJuIHRoaXNbYXJdfVtybl0oKXtjb25zdHtlZGdlczplfT10aGlzW2xyXSgpLHQ9ZS5tYXAoKGU9Pntjb25zdCB0PWVbcm5dKCk7dC5jb2xvcnx8PSIjMDAwMDAwIjtyZXR1cm4gdH0pKSxpPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy5tYXJnaW4mJk9iamVjdC5hc3NpZ24oaSx0aGlzLm1hcmdpbltybl0oKSk7InZpc2libGUiPT09dGhpcy5maWxsPy5wcmVzZW5jZSYmT2JqZWN0LmFzc2lnbihpLHRoaXMuZmlsbFtybl0oKSk7aWYodGhpcy5jb3JuZXIuY2hpbGRyZW4uc29tZSgoZT0+MCE9PWUucmFkaXVzKSkpe2NvbnN0IGU9dGhpcy5jb3JuZXIuY2hpbGRyZW4ubWFwKChlPT5lW3JuXSgpKSk7aWYoMj09PWUubGVuZ3RofHwzPT09ZS5sZW5ndGgpe2NvbnN0IHQ9ZS5hdCgtMSk7Zm9yKGxldCBpPWUubGVuZ3RoO2k8NDtpKyspZS5wdXNoKHQpfWkuYm9yZGVyUmFkaXVzPWUubWFwKChlPT5lLnJhZGl1cykpLmpvaW4oIiAiKX1zd2l0Y2godGhpcy5wcmVzZW5jZSl7Y2FzZSJpbnZpc2libGUiOmNhc2UiaGlkZGVuIjppLmJvcmRlclN0eWxlPSIiO2JyZWFrO2Nhc2UiaW5hY3RpdmUiOmkuYm9yZGVyU3R5bGU9Im5vbmUiO2JyZWFrO2RlZmF1bHQ6aS5ib3JkZXJTdHlsZT10Lm1hcCgoZT0+ZS5zdHlsZSkpLmpvaW4oIiAiKX1pLmJvcmRlcldpZHRoPXQubWFwKChlPT5lLndpZHRoKSkuam9pbigiICIpO2kuYm9yZGVyQ29sb3I9dC5tYXAoKGU9PmUuY29sb3IpKS5qb2luKCIgIik7cmV0dXJuIGl9fWNsYXNzIEJyZWFrIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEhuLCJicmVhayIsITApO3RoaXMuYWZ0ZXI9Z2V0U3RyaW5nT3B0aW9uKGUuYWZ0ZXIsWyJhdXRvIiwiY29udGVudEFyZWEiLCJwYWdlQXJlYSIsInBhZ2VFdmVuIiwicGFnZU9kZCJdKTt0aGlzLmFmdGVyVGFyZ2V0PWUuYWZ0ZXJUYXJnZXR8fCIiO3RoaXMuYmVmb3JlPWdldFN0cmluZ09wdGlvbihlLmJlZm9yZSxbImF1dG8iLCJjb250ZW50QXJlYSIsInBhZ2VBcmVhIiwicGFnZUV2ZW4iLCJwYWdlT2RkIl0pO3RoaXMuYmVmb3JlVGFyZ2V0PWUuYmVmb3JlVGFyZ2V0fHwiIjt0aGlzLmJvb2tlbmRMZWFkZXI9ZS5ib29rZW5kTGVhZGVyfHwiIjt0aGlzLmJvb2tlbmRUcmFpbGVyPWUuYm9va2VuZFRyYWlsZXJ8fCIiO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5vdmVyZmxvd0xlYWRlcj1lLm92ZXJmbG93TGVhZGVyfHwiIjt0aGlzLm92ZXJmbG93VGFyZ2V0PWUub3ZlcmZsb3dUYXJnZXR8fCIiO3RoaXMub3ZlcmZsb3dUcmFpbGVyPWUub3ZlcmZsb3dUcmFpbGVyfHwiIjt0aGlzLnN0YXJ0TmV3PWdldEludGVnZXIoe2RhdGE6ZS5zdGFydE5ldyxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsfX1jbGFzcyBCcmVha0FmdGVyIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEhuLCJicmVha0FmdGVyIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmxlYWRlcj1lLmxlYWRlcnx8IiI7dGhpcy5zdGFydE5ldz1nZXRJbnRlZ2VyKHtkYXRhOmUuc3RhcnROZXcsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLnRhcmdldD1lLnRhcmdldHx8IiI7dGhpcy50YXJnZXRUeXBlPWdldFN0cmluZ09wdGlvbihlLnRhcmdldFR5cGUsWyJhdXRvIiwiY29udGVudEFyZWEiLCJwYWdlQXJlYSJdKTt0aGlzLnRyYWlsZXI9ZS50cmFpbGVyfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5zY3JpcHQ9bnVsbH19Y2xhc3MgQnJlYWtCZWZvcmUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoSG4sImJyZWFrQmVmb3JlIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmxlYWRlcj1lLmxlYWRlcnx8IiI7dGhpcy5zdGFydE5ldz1nZXRJbnRlZ2VyKHtkYXRhOmUuc3RhcnROZXcsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLnRhcmdldD1lLnRhcmdldHx8IiI7dGhpcy50YXJnZXRUeXBlPWdldFN0cmluZ09wdGlvbihlLnRhcmdldFR5cGUsWyJhdXRvIiwiY29udGVudEFyZWEiLCJwYWdlQXJlYSJdKTt0aGlzLnRyYWlsZXI9ZS50cmFpbGVyfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5zY3JpcHQ9bnVsbH1bYW5dKGUpe3RoaXNbYXJdPXt9O3JldHVybiBIVE1MUmVzdWx0LkZBSUxVUkV9fWNsYXNzIEJ1dHRvbiBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihIbiwiYnV0dG9uIiwhMCk7dGhpcy5oaWdobGlnaHQ9Z2V0U3RyaW5nT3B0aW9uKGUuaGlnaGxpZ2h0LFsiaW52ZXJ0ZWQiLCJub25lIiwib3V0bGluZSIsInB1c2giXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbH1bYW5dKGUpe2NvbnN0IHQ9dGhpc1twcl0oKVtwcl0oKSxpPXtuYW1lOiJidXR0b24iLGF0dHJpYnV0ZXM6e2lkOnRoaXNbbm5dLGNsYXNzOlsieGZhQnV0dG9uIl0sc3R5bGU6e319LGNoaWxkcmVuOltdfTtmb3IoY29uc3QgZSBvZiB0LmV2ZW50LmNoaWxkcmVuKXtpZigiY2xpY2siIT09ZS5hY3Rpdml0eXx8IWUuc2NyaXB0KWNvbnRpbnVlO2NvbnN0IHQ9cmVjb3ZlckpzVVJMKGUuc2NyaXB0W2VyXSk7aWYoIXQpY29udGludWU7Y29uc3QgYT1maXhVUkwodC51cmwpO2EmJmkuY2hpbGRyZW4ucHVzaCh7bmFtZToiYSIsYXR0cmlidXRlczp7aWQ6ImxpbmsiK3RoaXNbbm5dLGhyZWY6YSxuZXdXaW5kb3c6dC5uZXdXaW5kb3csY2xhc3M6WyJ4ZmFMaW5rIl0sc3R5bGU6e319LGNoaWxkcmVuOltdfSl9cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2VzcyhpKX19Y2xhc3MgQ2FsY3VsYXRlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEhuLCJjYWxjdWxhdGUiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMub3ZlcnJpZGU9Z2V0U3RyaW5nT3B0aW9uKGUub3ZlcnJpZGUsWyJkaXNhYmxlZCIsImVycm9yIiwiaWdub3JlIiwid2FybmluZyJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm1lc3NhZ2U9bnVsbDt0aGlzLnNjcmlwdD1udWxsfX1jbGFzcyBDYXB0aW9uIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEhuLCJjYXB0aW9uIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnBsYWNlbWVudD1nZXRTdHJpbmdPcHRpb24oZS5wbGFjZW1lbnQsWyJsZWZ0IiwiYm90dG9tIiwiaW5saW5lIiwicmlnaHQiLCJ0b3AiXSk7dGhpcy5wcmVzZW5jZT1nZXRTdHJpbmdPcHRpb24oZS5wcmVzZW5jZSxbInZpc2libGUiLCJoaWRkZW4iLCJpbmFjdGl2ZSIsImludmlzaWJsZSJdKTt0aGlzLnJlc2VydmU9TWF0aC5jZWlsKGdldE1lYXN1cmVtZW50KGUucmVzZXJ2ZSkpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsO3RoaXMuZm9udD1udWxsO3RoaXMubWFyZ2luPW51bGw7dGhpcy5wYXJhPW51bGw7dGhpcy52YWx1ZT1udWxsfVskcl0oZSl7X3NldFZhbHVlKHRoaXMsZSl9W2xyXShlKXtpZighdGhpc1thcl0pe2xldHt3aWR0aDp0LGhlaWdodDppfT1lO3N3aXRjaCh0aGlzLnBsYWNlbWVudCl7Y2FzZSJsZWZ0IjpjYXNlInJpZ2h0IjpjYXNlImlubGluZSI6dD10aGlzLnJlc2VydmU8PTA/dDp0aGlzLnJlc2VydmU7YnJlYWs7Y2FzZSJ0b3AiOmNhc2UiYm90dG9tIjppPXRoaXMucmVzZXJ2ZTw9MD9pOnRoaXMucmVzZXJ2ZX10aGlzW2FyXT1sYXlvdXROb2RlKHRoaXMse3dpZHRoOnQsaGVpZ2h0Oml9KX1yZXR1cm4gdGhpc1thcl19W2FuXShlKXtpZighdGhpcy52YWx1ZSlyZXR1cm4gSFRNTFJlc3VsdC5FTVBUWTt0aGlzW1dyXSgpO2NvbnN0IHQ9dGhpcy52YWx1ZVthbl0oZSkuaHRtbDtpZighdCl7dGhpc1tQcl0oKTtyZXR1cm4gSFRNTFJlc3VsdC5FTVBUWX1jb25zdCBpPXRoaXMucmVzZXJ2ZTtpZih0aGlzLnJlc2VydmU8PTApe2NvbnN0e3c6dCxoOml9PXRoaXNbbHJdKGUpO3N3aXRjaCh0aGlzLnBsYWNlbWVudCl7Y2FzZSJsZWZ0IjpjYXNlInJpZ2h0IjpjYXNlImlubGluZSI6dGhpcy5yZXNlcnZlPXQ7YnJlYWs7Y2FzZSJ0b3AiOmNhc2UiYm90dG9tIjp0aGlzLnJlc2VydmU9aX19Y29uc3QgYT1bXTsic3RyaW5nIj09dHlwZW9mIHQ/YS5wdXNoKHtuYW1lOiIjdGV4dCIsdmFsdWU6dH0pOmEucHVzaCh0KTtjb25zdCBzPXRvU3R5bGUodGhpcywiZm9udCIsIm1hcmdpbiIsInZpc2liaWxpdHkiKTtzd2l0Y2godGhpcy5wbGFjZW1lbnQpe2Nhc2UibGVmdCI6Y2FzZSJyaWdodCI6dGhpcy5yZXNlcnZlPjAmJihzLndpZHRoPW1lYXN1cmVUb1N0cmluZyh0aGlzLnJlc2VydmUpKTticmVhaztjYXNlInRvcCI6Y2FzZSJib3R0b20iOnRoaXMucmVzZXJ2ZT4wJiYocy5oZWlnaHQ9bWVhc3VyZVRvU3RyaW5nKHRoaXMucmVzZXJ2ZSkpfXNldFBhcmEodGhpcyxudWxsLHQpO3RoaXNbUHJdKCk7dGhpcy5yZXNlcnZlPWk7cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiZGl2IixhdHRyaWJ1dGVzOntzdHlsZTpzLGNsYXNzOlsieGZhQ2FwdGlvbiJdfSxjaGlsZHJlbjphfSl9fWNsYXNzIENlcnRpZmljYXRlIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEhuLCJjZXJ0aWZpY2F0ZSIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBDZXJ0aWZpY2F0ZXMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoSG4sImNlcnRpZmljYXRlcyIsITApO3RoaXMuY3JlZGVudGlhbFNlcnZlclBvbGljeT1nZXRTdHJpbmdPcHRpb24oZS5jcmVkZW50aWFsU2VydmVyUG9saWN5LFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXJsPWUudXJsfHwiIjt0aGlzLnVybFBvbGljeT1lLnVybFBvbGljeXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZW5jcnlwdGlvbj1udWxsO3RoaXMuaXNzdWVycz1udWxsO3RoaXMua2V5VXNhZ2U9bnVsbDt0aGlzLm9pZHM9bnVsbDt0aGlzLnNpZ25pbmc9bnVsbDt0aGlzLnN1YmplY3RETnM9bnVsbH19Y2xhc3MgQ2hlY2tCdXR0b24gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoSG4sImNoZWNrQnV0dG9uIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm1hcms9Z2V0U3RyaW5nT3B0aW9uKGUubWFyayxbImRlZmF1bHQiLCJjaGVjayIsImNpcmNsZSIsImNyb3NzIiwiZGlhbW9uZCIsInNxdWFyZSIsInN0YXIiXSk7dGhpcy5zaGFwZT1nZXRTdHJpbmdPcHRpb24oZS5zaGFwZSxbInNxdWFyZSIsInJvdW5kIl0pO3RoaXMuc2l6ZT1nZXRNZWFzdXJlbWVudChlLnNpemUsIjEwcHQiKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMubWFyZ2luPW51bGx9W2FuXShlKXtjb25zdCB0PXRvU3R5bGUoIm1hcmdpbiIpLGk9bWVhc3VyZVRvU3RyaW5nKHRoaXMuc2l6ZSk7dC53aWR0aD10LmhlaWdodD1pO2xldCBhLHMscjtjb25zdCBuPXRoaXNbcHJdKClbcHJdKCksbz1uLml0ZW1zLmNoaWxkcmVuLmxlbmd0aCYmbi5pdGVtcy5jaGlsZHJlblswXVthbl0oKS5odG1sfHxbXSxnPXtvbjoodm9pZCAwIT09b1swXT9vWzBdOiJvbiIpLnRvU3RyaW5nKCksb2ZmOih2b2lkIDAhPT1vWzFdP29bMV06Im9mZiIpLnRvU3RyaW5nKCl9LGM9KG4udmFsdWU/Lltlbl0oKXx8Im9mZiIpPT09Zy5vbnx8dm9pZCAwLEM9bltmcl0oKSxoPW5bbm5dO2xldCBsO2lmKEMgaW5zdGFuY2VvZiBFeGNsR3JvdXApe3I9Q1tubl07YT0icmFkaW8iO3M9InhmYVJhZGlvIjtsPUNbdHJdPy5bbm5dfHxDW25uXX1lbHNle2E9ImNoZWNrYm94IjtzPSJ4ZmFDaGVja2JveCI7bD1uW3RyXT8uW25uXXx8bltubl19Y29uc3QgUT17bmFtZToiaW5wdXQiLGF0dHJpYnV0ZXM6e2NsYXNzOltzXSxzdHlsZTp0LGZpZWxkSWQ6aCxkYXRhSWQ6bCx0eXBlOmEsY2hlY2tlZDpjLHhmYU9uOmcub24seGZhT2ZmOmcub2ZmLCJhcmlhLWxhYmVsIjphcmlhTGFiZWwobiksImFyaWEtcmVxdWlyZWQiOiExfX07ciYmKFEuYXR0cmlidXRlcy5uYW1lPXIpO2lmKGlzUmVxdWlyZWQobikpe1EuYXR0cmlidXRlc1siYXJpYS1yZXF1aXJlZCJdPSEwO1EuYXR0cmlidXRlcy5yZXF1aXJlZD0hMH1yZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJsYWJlbCIsYXR0cmlidXRlczp7Y2xhc3M6WyJ4ZmFMYWJlbCJdfSxjaGlsZHJlbjpbUV19KX19Y2xhc3MgQ2hvaWNlTGlzdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihIbiwiY2hvaWNlTGlzdCIsITApO3RoaXMuY29tbWl0T249Z2V0U3RyaW5nT3B0aW9uKGUuY29tbWl0T24sWyJzZWxlY3QiLCJleGl0Il0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5vcGVuPWdldFN0cmluZ09wdGlvbihlLm9wZW4sWyJ1c2VyQ29udHJvbCIsImFsd2F5cyIsIm11bHRpU2VsZWN0Iiwib25FbnRyeSJdKTt0aGlzLnRleHRFbnRyeT1nZXRJbnRlZ2VyKHtkYXRhOmUudGV4dEVudHJ5LGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYm9yZGVyPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm1hcmdpbj1udWxsfVthbl0oZSl7Y29uc3QgdD10b1N0eWxlKHRoaXMsImJvcmRlciIsIm1hcmdpbiIpLGk9dGhpc1twcl0oKVtwcl0oKSxhPXtmb250U2l6ZTpgY2FsYygke2kuZm9udD8uc2l6ZXx8MTB9cHggKiB2YXIoLS1zY2FsZS1mYWN0b3IpKWB9LHM9W107aWYoaS5pdGVtcy5jaGlsZHJlbi5sZW5ndGg+MCl7Y29uc3QgZT1pLml0ZW1zO2xldCB0PTAscj0wO2lmKDI9PT1lLmNoaWxkcmVuLmxlbmd0aCl7dD1lLmNoaWxkcmVuWzBdLnNhdmU7cj0xLXR9Y29uc3Qgbj1lLmNoaWxkcmVuW3RdW2FuXSgpLmh0bWwsbz1lLmNoaWxkcmVuW3JdW2FuXSgpLmh0bWw7bGV0IGc9ITE7Y29uc3QgYz1pLnZhbHVlPy5bZW5dKCl8fCIiO2ZvcihsZXQgZT0wLHQ9bi5sZW5ndGg7ZTx0O2UrKyl7Y29uc3QgdD17bmFtZToib3B0aW9uIixhdHRyaWJ1dGVzOnt2YWx1ZTpvW2VdfHxuW2VdLHN0eWxlOmF9LHZhbHVlOm5bZV19O29bZV09PT1jJiYodC5hdHRyaWJ1dGVzLnNlbGVjdGVkPWc9ITApO3MucHVzaCh0KX1nfHxzLnNwbGljZSgwLDAse25hbWU6Im9wdGlvbiIsYXR0cmlidXRlczp7aGlkZGVuOiEwLHNlbGVjdGVkOiEwfSx2YWx1ZToiICJ9KX1jb25zdCByPXtjbGFzczpbInhmYVNlbGVjdCJdLGZpZWxkSWQ6aVtubl0sZGF0YUlkOmlbdHJdPy5bbm5dfHxpW25uXSxzdHlsZTp0LCJhcmlhLWxhYmVsIjphcmlhTGFiZWwoaSksImFyaWEtcmVxdWlyZWQiOiExfTtpZihpc1JlcXVpcmVkKGkpKXtyWyJhcmlhLXJlcXVpcmVkIl09ITA7ci5yZXF1aXJlZD0hMH0ibXVsdGlTZWxlY3QiPT09dGhpcy5vcGVuJiYoci5tdWx0aXBsZT0hMCk7cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToibGFiZWwiLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhTGFiZWwiXX0sY2hpbGRyZW46W3tuYW1lOiJzZWxlY3QiLGNoaWxkcmVuOnMsYXR0cmlidXRlczpyfV19KX19Y2xhc3MgQ29sb3IgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoSG4sImNvbG9yIiwhMCk7dGhpcy5jU3BhY2U9Z2V0U3RyaW5nT3B0aW9uKGUuY1NwYWNlLFsiU1JHQiJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnZhbHVlPWUudmFsdWU/ZnVuY3Rpb24gZ2V0Q29sb3IoZSx0PVswLDAsMF0pe2xldFtpLGEsc109dDtpZighZSlyZXR1cm57cjppLGc6YSxiOnN9O2NvbnN0IHI9ZS50cmltKCkuc3BsaXQoL1xzKixccyovKS5tYXAoKGU9Pk1hdGgubWluKE1hdGgubWF4KDAscGFyc2VJbnQoZS50cmltKCksMTApKSwyNTUpKSkubWFwKChlPT5pc05hTihlKT8wOmUpKTtpZihyLmxlbmd0aDwzKXJldHVybntyOmksZzphLGI6c307W2ksYSxzXT1yO3JldHVybntyOmksZzphLGI6c319KGUudmFsdWUpOiIiO3RoaXMuZXh0cmFzPW51bGx9W3dyXSgpe3JldHVybiExfVtybl0oKXtyZXR1cm4gdGhpcy52YWx1ZT9VdGlsLm1ha2VIZXhDb2xvcih0aGlzLnZhbHVlLnIsdGhpcy52YWx1ZS5nLHRoaXMudmFsdWUuYik6bnVsbH19Y2xhc3MgQ29tYiBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihIbiwiY29tYiIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5udW1iZXJPZkNlbGxzPWdldEludGVnZXIoe2RhdGE6ZS5udW1iZXJPZkNlbGxzLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIENvbm5lY3QgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoSG4sImNvbm5lY3QiLCEwKTt0aGlzLmNvbm5lY3Rpb249ZS5jb25uZWN0aW9ufHwiIjt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucmVmPWUucmVmfHwiIjt0aGlzLnVzYWdlPWdldFN0cmluZ09wdGlvbihlLnVzYWdlLFsiZXhwb3J0QW5kSW1wb3J0IiwiZXhwb3J0T25seSIsImltcG9ydE9ubHkiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMucGljdHVyZT1udWxsfX1jbGFzcyBDb250ZW50QXJlYSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihIbiwiY29udGVudEFyZWEiLCEwKTt0aGlzLmg9Z2V0TWVhc3VyZW1lbnQoZS5oKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucmVsZXZhbnQ9Z2V0UmVsZXZhbnQoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMudz1nZXRNZWFzdXJlbWVudChlLncpO3RoaXMueD1nZXRNZWFzdXJlbWVudChlLngsIjBwdCIpO3RoaXMueT1nZXRNZWFzdXJlbWVudChlLnksIjBwdCIpO3RoaXMuZGVzYz1udWxsO3RoaXMuZXh0cmFzPW51bGx9W2FuXShlKXtjb25zdCB0PXtsZWZ0Om1lYXN1cmVUb1N0cmluZyh0aGlzLngpLHRvcDptZWFzdXJlVG9TdHJpbmcodGhpcy55KSx3aWR0aDptZWFzdXJlVG9TdHJpbmcodGhpcy53KSxoZWlnaHQ6bWVhc3VyZVRvU3RyaW5nKHRoaXMuaCl9LGk9WyJ4ZmFDb250ZW50YXJlYSJdO2lzUHJpbnRPbmx5KHRoaXMpJiZpLnB1c2goInhmYVByaW50T25seSIpO3JldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImRpdiIsY2hpbGRyZW46W10sYXR0cmlidXRlczp7c3R5bGU6dCxjbGFzczppLGlkOnRoaXNbbm5dfX0pfX1jbGFzcyBDb3JuZXIgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoSG4sImNvcm5lciIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5pbnZlcnRlZD1nZXRJbnRlZ2VyKHtkYXRhOmUuaW52ZXJ0ZWQsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLmpvaW49Z2V0U3RyaW5nT3B0aW9uKGUuam9pbixbInNxdWFyZSIsInJvdW5kIl0pO3RoaXMucHJlc2VuY2U9Z2V0U3RyaW5nT3B0aW9uKGUucHJlc2VuY2UsWyJ2aXNpYmxlIiwiaGlkZGVuIiwiaW5hY3RpdmUiLCJpbnZpc2libGUiXSk7dGhpcy5yYWRpdXM9Z2V0TWVhc3VyZW1lbnQoZS5yYWRpdXMpO3RoaXMuc3Ryb2tlPWdldFN0cmluZ09wdGlvbihlLnN0cm9rZSxbInNvbGlkIiwiZGFzaERvdCIsImRhc2hEb3REb3QiLCJkYXNoZWQiLCJkb3R0ZWQiLCJlbWJvc3NlZCIsImV0Y2hlZCIsImxvd2VyZWQiLCJyYWlzZWQiXSk7dGhpcy50aGlja25lc3M9Z2V0TWVhc3VyZW1lbnQoZS50aGlja25lc3MsIjAuNXB0Iik7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY29sb3I9bnVsbDt0aGlzLmV4dHJhcz1udWxsfVtybl0oKXtjb25zdCBlPXRvU3R5bGUodGhpcywidmlzaWJpbGl0eSIpO2UucmFkaXVzPW1lYXN1cmVUb1N0cmluZygic3F1YXJlIj09PXRoaXMuam9pbj8wOnRoaXMucmFkaXVzKTtyZXR1cm4gZX19Y2xhc3MgRGF0ZUVsZW1lbnQgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEhuLCJkYXRlIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W3NyXSgpe2NvbnN0IGU9dGhpc1tlcl0udHJpbSgpO3RoaXNbZXJdPWU/bmV3IERhdGUoZSk6bnVsbH1bYW5dKGUpe3JldHVybiB2YWx1ZVRvSHRtbCh0aGlzW2VyXT90aGlzW2VyXS50b1N0cmluZygpOiIiKX19Y2xhc3MgRGF0ZVRpbWUgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEhuLCJkYXRlVGltZSIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVtzcl0oKXtjb25zdCBlPXRoaXNbZXJdLnRyaW0oKTt0aGlzW2VyXT1lP25ldyBEYXRlKGUpOm51bGx9W2FuXShlKXtyZXR1cm4gdmFsdWVUb0h0bWwodGhpc1tlcl0/dGhpc1tlcl0udG9TdHJpbmcoKToiIil9fWNsYXNzIERhdGVUaW1lRWRpdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihIbiwiZGF0ZVRpbWVFZGl0IiwhMCk7dGhpcy5oU2Nyb2xsUG9saWN5PWdldFN0cmluZ09wdGlvbihlLmhTY3JvbGxQb2xpY3ksWyJhdXRvIiwib2ZmIiwib24iXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnBpY2tlcj1nZXRTdHJpbmdPcHRpb24oZS5waWNrZXIsWyJob3N0Iiwibm9uZSJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmNvbWI9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMubWFyZ2luPW51bGx9W2FuXShlKXtjb25zdCB0PXRvU3R5bGUodGhpcywiYm9yZGVyIiwiZm9udCIsIm1hcmdpbiIpLGk9dGhpc1twcl0oKVtwcl0oKSxhPXtuYW1lOiJpbnB1dCIsYXR0cmlidXRlczp7dHlwZToidGV4dCIsZmllbGRJZDppW25uXSxkYXRhSWQ6aVt0cl0/Lltubl18fGlbbm5dLGNsYXNzOlsieGZhVGV4dGZpZWxkIl0sc3R5bGU6dCwiYXJpYS1sYWJlbCI6YXJpYUxhYmVsKGkpLCJhcmlhLXJlcXVpcmVkIjohMX19O2lmKGlzUmVxdWlyZWQoaSkpe2EuYXR0cmlidXRlc1siYXJpYS1yZXF1aXJlZCJdPSEwO2EuYXR0cmlidXRlcy5yZXF1aXJlZD0hMH1yZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJsYWJlbCIsYXR0cmlidXRlczp7Y2xhc3M6WyJ4ZmFMYWJlbCJdfSxjaGlsZHJlbjpbYV19KX19Y2xhc3MgRGVjaW1hbCBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoSG4sImRlY2ltYWwiKTt0aGlzLmZyYWNEaWdpdHM9Z2V0SW50ZWdlcih7ZGF0YTplLmZyYWNEaWdpdHMsZGVmYXVsdFZhbHVlOjIsdmFsaWRhdGU6ZT0+ITB9KTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubGVhZERpZ2l0cz1nZXRJbnRlZ2VyKHtkYXRhOmUubGVhZERpZ2l0cyxkZWZhdWx0VmFsdWU6LTEsdmFsaWRhdGU6ZT0+ITB9KTt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W3NyXSgpe2NvbnN0IGU9cGFyc2VGbG9hdCh0aGlzW2VyXS50cmltKCkpO3RoaXNbZXJdPWlzTmFOKGUpP251bGw6ZX1bYW5dKGUpe3JldHVybiB2YWx1ZVRvSHRtbChudWxsIT09dGhpc1tlcl0/dGhpc1tlcl0udG9TdHJpbmcoKToiIil9fWNsYXNzIERlZmF1bHRVaSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihIbiwiZGVmYXVsdFVpIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbH19Y2xhc3MgRGVzYyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihIbiwiZGVzYyIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYm9vbGVhbj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRhdGVUaW1lPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRlY2ltYWw9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXhEYXRhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmZsb2F0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmltYWdlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmludGVnZXI9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudGV4dD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50aW1lPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgRGlnZXN0TWV0aG9kIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEhuLCJkaWdlc3RNZXRob2QiLFsiIiwiU0hBMSIsIlNIQTI1NiIsIlNIQTUxMiIsIlJJUEVNRDE2MCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgRGlnZXN0TWV0aG9kcyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihIbiwiZGlnZXN0TWV0aG9kcyIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmRpZ2VzdE1ldGhvZD1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIERyYXcgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoSG4sImRyYXciLCEwKTt0aGlzLmFuY2hvclR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUuYW5jaG9yVHlwZSxbInRvcExlZnQiLCJib3R0b21DZW50ZXIiLCJib3R0b21MZWZ0IiwiYm90dG9tUmlnaHQiLCJtaWRkbGVDZW50ZXIiLCJtaWRkbGVMZWZ0IiwibWlkZGxlUmlnaHQiLCJ0b3BDZW50ZXIiLCJ0b3BSaWdodCJdKTt0aGlzLmNvbFNwYW49Z2V0SW50ZWdlcih7ZGF0YTplLmNvbFNwYW4sZGVmYXVsdFZhbHVlOjEsdmFsaWRhdGU6ZT0+ZT49MXx8LTE9PT1lfSk7dGhpcy5oPWUuaD9nZXRNZWFzdXJlbWVudChlLmgpOiIiO3RoaXMuaEFsaWduPWdldFN0cmluZ09wdGlvbihlLmhBbGlnbixbImxlZnQiLCJjZW50ZXIiLCJqdXN0aWZ5IiwianVzdGlmeUFsbCIsInJhZGl4IiwicmlnaHQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmxvY2FsZT1lLmxvY2FsZXx8IiI7dGhpcy5tYXhIPWdldE1lYXN1cmVtZW50KGUubWF4SCwiMHB0Iik7dGhpcy5tYXhXPWdldE1lYXN1cmVtZW50KGUubWF4VywiMHB0Iik7dGhpcy5taW5IPWdldE1lYXN1cmVtZW50KGUubWluSCwiMHB0Iik7dGhpcy5taW5XPWdldE1lYXN1cmVtZW50KGUubWluVywiMHB0Iik7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5wcmVzZW5jZT1nZXRTdHJpbmdPcHRpb24oZS5wcmVzZW5jZSxbInZpc2libGUiLCJoaWRkZW4iLCJpbmFjdGl2ZSIsImludmlzaWJsZSJdKTt0aGlzLnJlbGV2YW50PWdldFJlbGV2YW50KGUucmVsZXZhbnQpO3RoaXMucm90YXRlPWdldEludGVnZXIoe2RhdGE6ZS5yb3RhdGUsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+ZSU5MD09MH0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnc9ZS53P2dldE1lYXN1cmVtZW50KGUudyk6IiI7dGhpcy54PWdldE1lYXN1cmVtZW50KGUueCwiMHB0Iik7dGhpcy55PWdldE1lYXN1cmVtZW50KGUueSwiMHB0Iik7dGhpcy5hc3Npc3Q9bnVsbDt0aGlzLmJvcmRlcj1udWxsO3RoaXMuY2FwdGlvbj1udWxsO3RoaXMuZGVzYz1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5mb250PW51bGw7dGhpcy5rZWVwPW51bGw7dGhpcy5tYXJnaW49bnVsbDt0aGlzLnBhcmE9bnVsbDt0aGlzLnRyYXZlcnNhbD1udWxsO3RoaXMudWk9bnVsbDt0aGlzLnZhbHVlPW51bGw7dGhpcy5zZXRQcm9wZXJ0eT1uZXcgWEZBT2JqZWN0QXJyYXl9WyRyXShlKXtfc2V0VmFsdWUodGhpcyxlKX1bYW5dKGUpe3NldFRhYkluZGV4KHRoaXMpO2lmKCJoaWRkZW4iPT09dGhpcy5wcmVzZW5jZXx8ImluYWN0aXZlIj09PXRoaXMucHJlc2VuY2UpcmV0dXJuIEhUTUxSZXN1bHQuRU1QVFk7Zml4RGltZW5zaW9ucyh0aGlzKTt0aGlzW1dyXSgpO2NvbnN0IHQ9dGhpcy53LGk9dGhpcy5oLHt3OmEsaDpzLGlzQnJva2VuOnJ9PWxheW91dE5vZGUodGhpcyxlKTtpZihhJiYiIj09PXRoaXMudyl7aWYociYmdGhpc1tmcl0oKVtVcl0oKSl7dGhpc1tQcl0oKTtyZXR1cm4gSFRNTFJlc3VsdC5GQUlMVVJFfXRoaXMudz1hfXMmJiIiPT09dGhpcy5oJiYodGhpcy5oPXMpO3NldEZpcnN0VW5zcGxpdHRhYmxlKHRoaXMpO2lmKCFjaGVja0RpbWVuc2lvbnModGhpcyxlKSl7dGhpcy53PXQ7dGhpcy5oPWk7dGhpc1tQcl0oKTtyZXR1cm4gSFRNTFJlc3VsdC5GQUlMVVJFfXVuc2V0Rmlyc3RVbnNwbGl0dGFibGUodGhpcyk7Y29uc3Qgbj10b1N0eWxlKHRoaXMsImZvbnQiLCJoQWxpZ24iLCJkaW1lbnNpb25zIiwicG9zaXRpb24iLCJwcmVzZW5jZSIsInJvdGF0ZSIsImFuY2hvclR5cGUiLCJib3JkZXIiLCJtYXJnaW4iKTtzZXRNaW5NYXhEaW1lbnNpb25zKHRoaXMsbik7aWYobi5tYXJnaW4pe24ucGFkZGluZz1uLm1hcmdpbjtkZWxldGUgbi5tYXJnaW59Y29uc3Qgbz1bInhmYURyYXciXTt0aGlzLmZvbnQmJm8ucHVzaCgieGZhRm9udCIpO2lzUHJpbnRPbmx5KHRoaXMpJiZvLnB1c2goInhmYVByaW50T25seSIpO2NvbnN0IGc9e3N0eWxlOm4saWQ6dGhpc1tubl0sY2xhc3M6b307dGhpcy5uYW1lJiYoZy54ZmFOYW1lPXRoaXMubmFtZSk7Y29uc3QgYz17bmFtZToiZGl2IixhdHRyaWJ1dGVzOmcsY2hpbGRyZW46W119O2FwcGx5QXNzaXN0KHRoaXMsZyk7Y29uc3QgQz1jb21wdXRlQmJveCh0aGlzLGMsZSksaD10aGlzLnZhbHVlP3RoaXMudmFsdWVbYW5dKGUpLmh0bWw6bnVsbDtpZihudWxsPT09aCl7dGhpcy53PXQ7dGhpcy5oPWk7dGhpc1tQcl0oKTtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKGNyZWF0ZVdyYXBwZXIodGhpcyxjKSxDKX1jLmNoaWxkcmVuLnB1c2goaCk7c2V0UGFyYSh0aGlzLG4saCk7dGhpcy53PXQ7dGhpcy5oPWk7dGhpc1tQcl0oKTtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKGNyZWF0ZVdyYXBwZXIodGhpcyxjKSxDKX19Y2xhc3MgRWRnZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihIbiwiZWRnZSIsITApO3RoaXMuY2FwPWdldFN0cmluZ09wdGlvbihlLmNhcCxbInNxdWFyZSIsImJ1dHQiLCJyb3VuZCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucHJlc2VuY2U9Z2V0U3RyaW5nT3B0aW9uKGUucHJlc2VuY2UsWyJ2aXNpYmxlIiwiaGlkZGVuIiwiaW5hY3RpdmUiLCJpbnZpc2libGUiXSk7dGhpcy5zdHJva2U9Z2V0U3RyaW5nT3B0aW9uKGUuc3Ryb2tlLFsic29saWQiLCJkYXNoRG90IiwiZGFzaERvdERvdCIsImRhc2hlZCIsImRvdHRlZCIsImVtYm9zc2VkIiwiZXRjaGVkIiwibG93ZXJlZCIsInJhaXNlZCJdKTt0aGlzLnRoaWNrbmVzcz1nZXRNZWFzdXJlbWVudChlLnRoaWNrbmVzcywiMC41cHQiKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5jb2xvcj1udWxsO3RoaXMuZXh0cmFzPW51bGx9W3JuXSgpe2NvbnN0IGU9dG9TdHlsZSh0aGlzLCJ2aXNpYmlsaXR5Iik7T2JqZWN0LmFzc2lnbihlLHtsaW5lY2FwOnRoaXMuY2FwLHdpZHRoOm1lYXN1cmVUb1N0cmluZyh0aGlzLnRoaWNrbmVzcyksY29sb3I6dGhpcy5jb2xvcj90aGlzLmNvbG9yW3JuXSgpOiIjMDAwMDAwIixzdHlsZToiIn0pO2lmKCJ2aXNpYmxlIiE9PXRoaXMucHJlc2VuY2UpZS5zdHlsZT0ibm9uZSI7ZWxzZSBzd2l0Y2godGhpcy5zdHJva2Upe2Nhc2Uic29saWQiOmUuc3R5bGU9InNvbGlkIjticmVhaztjYXNlImRhc2hEb3QiOmNhc2UiZGFzaERvdERvdCI6Y2FzZSJkYXNoZWQiOmUuc3R5bGU9ImRhc2hlZCI7YnJlYWs7Y2FzZSJkb3R0ZWQiOmUuc3R5bGU9ImRvdHRlZCI7YnJlYWs7Y2FzZSJlbWJvc3NlZCI6ZS5zdHlsZT0icmlkZ2UiO2JyZWFrO2Nhc2UiZXRjaGVkIjplLnN0eWxlPSJncm9vdmUiO2JyZWFrO2Nhc2UibG93ZXJlZCI6ZS5zdHlsZT0iaW5zZXQiO2JyZWFrO2Nhc2UicmFpc2VkIjplLnN0eWxlPSJvdXRzZXQifXJldHVybiBlfX1jbGFzcyBFbmNvZGluZyBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihIbiwiZW5jb2RpbmciLFsiYWRiZS54NTA5LnJzYV9zaGExIiwiYWRiZS5wa2NzNy5kZXRhY2hlZCIsImFkYmUucGtjczcuc2hhMSJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgRW5jb2RpbmdzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEhuLCJlbmNvZGluZ3MiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5lbmNvZGluZz1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIEVuY3J5cHQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoSG4sImVuY3J5cHQiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNlcnRpZmljYXRlPW51bGx9fWNsYXNzIEVuY3J5cHREYXRhIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEhuLCJlbmNyeXB0RGF0YSIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5vcGVyYXRpb249Z2V0U3RyaW5nT3B0aW9uKGUub3BlcmF0aW9uLFsiZW5jcnlwdCIsImRlY3J5cHQiXSk7dGhpcy50YXJnZXQ9ZS50YXJnZXR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmZpbHRlcj1udWxsO3RoaXMubWFuaWZlc3Q9bnVsbH19Y2xhc3MgRW5jcnlwdGlvbiBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihIbiwiZW5jcnlwdGlvbiIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNlcnRpZmljYXRlPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgRW5jcnlwdGlvbk1ldGhvZCBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihIbiwiZW5jcnlwdGlvbk1ldGhvZCIsWyIiLCJBRVMyNTYtQ0JDIiwiVFJJUExFREVTLUNCQyIsIkFFUzEyOC1DQkMiLCJBRVMxOTItQ0JDIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBFbmNyeXB0aW9uTWV0aG9kcyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihIbiwiZW5jcnlwdGlvbk1ldGhvZHMiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5lbmNyeXB0aW9uTWV0aG9kPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgRXZlbnQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoSG4sImV2ZW50IiwhMCk7dGhpcy5hY3Rpdml0eT1nZXRTdHJpbmdPcHRpb24oZS5hY3Rpdml0eSxbImNsaWNrIiwiY2hhbmdlIiwiZG9jQ2xvc2UiLCJkb2NSZWFkeSIsImVudGVyIiwiZXhpdCIsImZ1bGwiLCJpbmRleENoYW5nZSIsImluaXRpYWxpemUiLCJtb3VzZURvd24iLCJtb3VzZUVudGVyIiwibW91c2VFeGl0IiwibW91c2VVcCIsInBvc3RFeGVjdXRlIiwicG9zdE9wZW4iLCJwb3N0UHJpbnQiLCJwb3N0U2F2ZSIsInBvc3RTaWduIiwicG9zdFN1Ym1pdCIsInByZUV4ZWN1dGUiLCJwcmVPcGVuIiwicHJlUHJpbnQiLCJwcmVTYXZlIiwicHJlU2lnbiIsInByZVN1Ym1pdCIsInJlYWR5IiwidmFsaWRhdGlvblN0YXRlIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5saXN0ZW49Z2V0U3RyaW5nT3B0aW9uKGUubGlzdGVuLFsicmVmT25seSIsInJlZkFuZERlc2NlbmRlbnRzIl0pO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucmVmPWUucmVmfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmVuY3J5cHREYXRhPW51bGw7dGhpcy5leGVjdXRlPW51bGw7dGhpcy5zY3JpcHQ9bnVsbDt0aGlzLnNpZ25EYXRhPW51bGw7dGhpcy5zdWJtaXQ9bnVsbH19Y2xhc3MgRXhEYXRhIGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihIbiwiZXhEYXRhIik7dGhpcy5jb250ZW50VHlwZT1lLmNvbnRlbnRUeXBlfHwiIjt0aGlzLmhyZWY9ZS5ocmVmfHwiIjt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubWF4TGVuZ3RoPWdldEludGVnZXIoe2RhdGE6ZS5tYXhMZW5ndGgsZGVmYXVsdFZhbHVlOi0xLHZhbGlkYXRlOmU9PmU+PS0xfSk7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5yaWQ9ZS5yaWR8fCIiO3RoaXMudHJhbnNmZXJFbmNvZGluZz1nZXRTdHJpbmdPcHRpb24oZS50cmFuc2ZlckVuY29kaW5nLFsibm9uZSIsImJhc2U2NCIsInBhY2thZ2UiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVtTcl0oKXtyZXR1cm4idGV4dC9odG1sIj09PXRoaXMuY29udGVudFR5cGV9W0tyXShlKXtpZigidGV4dC9odG1sIj09PXRoaXMuY29udGVudFR5cGUmJmVbSnJdPT09Z24ueGh0bWwuaWQpe3RoaXNbZXJdPWU7cmV0dXJuITB9aWYoInRleHQveG1sIj09PXRoaXMuY29udGVudFR5cGUpe3RoaXNbZXJdPWU7cmV0dXJuITB9cmV0dXJuITF9W2FuXShlKXtyZXR1cm4idGV4dC9odG1sIj09PXRoaXMuY29udGVudFR5cGUmJnRoaXNbZXJdP3RoaXNbZXJdW2FuXShlKTpIVE1MUmVzdWx0LkVNUFRZfX1jbGFzcyBFeE9iamVjdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihIbiwiZXhPYmplY3QiLCEwKTt0aGlzLmFyY2hpdmU9ZS5hcmNoaXZlfHwiIjt0aGlzLmNsYXNzSWQ9ZS5jbGFzc0lkfHwiIjt0aGlzLmNvZGVCYXNlPWUuY29kZUJhc2V8fCIiO3RoaXMuY29kZVR5cGU9ZS5jb2RlVHlwZXx8IiI7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmJvb2xlYW49bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlVGltZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kZWNpbWFsPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV4RGF0YT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5leE9iamVjdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5mbG9hdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5pbWFnZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5pbnRlZ2VyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRleHQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudGltZT1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIEV4Y2xHcm91cCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihIbiwiZXhjbEdyb3VwIiwhMCk7dGhpcy5hY2Nlc3M9Z2V0U3RyaW5nT3B0aW9uKGUuYWNjZXNzLFsib3BlbiIsIm5vbkludGVyYWN0aXZlIiwicHJvdGVjdGVkIiwicmVhZE9ubHkiXSk7dGhpcy5hY2Nlc3NLZXk9ZS5hY2Nlc3NLZXl8fCIiO3RoaXMuYW5jaG9yVHlwZT1nZXRTdHJpbmdPcHRpb24oZS5hbmNob3JUeXBlLFsidG9wTGVmdCIsImJvdHRvbUNlbnRlciIsImJvdHRvbUxlZnQiLCJib3R0b21SaWdodCIsIm1pZGRsZUNlbnRlciIsIm1pZGRsZUxlZnQiLCJtaWRkbGVSaWdodCIsInRvcENlbnRlciIsInRvcFJpZ2h0Il0pO3RoaXMuY29sU3Bhbj1nZXRJbnRlZ2VyKHtkYXRhOmUuY29sU3BhbixkZWZhdWx0VmFsdWU6MSx2YWxpZGF0ZTplPT5lPj0xfHwtMT09PWV9KTt0aGlzLmg9ZS5oP2dldE1lYXN1cmVtZW50KGUuaCk6IiI7dGhpcy5oQWxpZ249Z2V0U3RyaW5nT3B0aW9uKGUuaEFsaWduLFsibGVmdCIsImNlbnRlciIsImp1c3RpZnkiLCJqdXN0aWZ5QWxsIiwicmFkaXgiLCJyaWdodCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubGF5b3V0PWdldFN0cmluZ09wdGlvbihlLmxheW91dCxbInBvc2l0aW9uIiwibHItdGIiLCJybC1yb3ciLCJybC10YiIsInJvdyIsInRhYmxlIiwidGIiXSk7dGhpcy5tYXhIPWdldE1lYXN1cmVtZW50KGUubWF4SCwiMHB0Iik7dGhpcy5tYXhXPWdldE1lYXN1cmVtZW50KGUubWF4VywiMHB0Iik7dGhpcy5taW5IPWdldE1lYXN1cmVtZW50KGUubWluSCwiMHB0Iik7dGhpcy5taW5XPWdldE1lYXN1cmVtZW50KGUubWluVywiMHB0Iik7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5wcmVzZW5jZT1nZXRTdHJpbmdPcHRpb24oZS5wcmVzZW5jZSxbInZpc2libGUiLCJoaWRkZW4iLCJpbmFjdGl2ZSIsImludmlzaWJsZSJdKTt0aGlzLnJlbGV2YW50PWdldFJlbGV2YW50KGUucmVsZXZhbnQpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnc9ZS53P2dldE1lYXN1cmVtZW50KGUudyk6IiI7dGhpcy54PWdldE1lYXN1cmVtZW50KGUueCwiMHB0Iik7dGhpcy55PWdldE1lYXN1cmVtZW50KGUueSwiMHB0Iik7dGhpcy5hc3Npc3Q9bnVsbDt0aGlzLmJpbmQ9bnVsbDt0aGlzLmJvcmRlcj1udWxsO3RoaXMuY2FsY3VsYXRlPW51bGw7dGhpcy5jYXB0aW9uPW51bGw7dGhpcy5kZXNjPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm1hcmdpbj1udWxsO3RoaXMucGFyYT1udWxsO3RoaXMudHJhdmVyc2FsPW51bGw7dGhpcy52YWxpZGF0ZT1udWxsO3RoaXMuY29ubmVjdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5ldmVudD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5maWVsZD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zZXRQcm9wZXJ0eT1uZXcgWEZBT2JqZWN0QXJyYXl9W2tyXSgpe3JldHVybiEwfVt3cl0oKXtyZXR1cm4hMH1bJHJdKGUpe2Zvcihjb25zdCB0IG9mIHRoaXMuZmllbGQuY2hpbGRyZW4pe2lmKCF0LnZhbHVlKXtjb25zdCBlPW5ldyBWYWx1ZSh7fSk7dFtYc10oZSk7dC52YWx1ZT1lfXQudmFsdWVbJHJdKGUpfX1bVXJdKCl7cmV0dXJuIHRoaXMubGF5b3V0LmVuZHNXaXRoKCItdGIiKSYmMD09PXRoaXNbYXJdLmF0dGVtcHQmJnRoaXNbYXJdLm51bWJlckluTGluZT4wfHx0aGlzW3ByXSgpW1VyXSgpfVt4cl0oKXtjb25zdCBlPXRoaXNbZnJdKCk7aWYoIWVbeHJdKCkpcmV0dXJuITE7aWYodm9pZCAwIT09dGhpc1thcl0uX2lzU3BsaXR0YWJsZSlyZXR1cm4gdGhpc1thcl0uX2lzU3BsaXR0YWJsZTtpZigicG9zaXRpb24iPT09dGhpcy5sYXlvdXR8fHRoaXMubGF5b3V0LmluY2x1ZGVzKCJyb3ciKSl7dGhpc1thcl0uX2lzU3BsaXR0YWJsZT0hMTtyZXR1cm4hMX1pZihlLmxheW91dD8uZW5kc1dpdGgoIi10YiIpJiYwIT09ZVthcl0ubnVtYmVySW5MaW5lKXJldHVybiExO3RoaXNbYXJdLl9pc1NwbGl0dGFibGU9ITA7cmV0dXJuITB9W3JyXSgpe3JldHVybiBmbHVzaEhUTUwodGhpcyl9W2pzXShlLHQpe2FkZEhUTUwodGhpcyxlLHQpfVtncl0oKXtyZXR1cm4gZ2V0QXZhaWxhYmxlU3BhY2UodGhpcyl9W2FuXShlKXtzZXRUYWJJbmRleCh0aGlzKTtpZigiaGlkZGVuIj09PXRoaXMucHJlc2VuY2V8fCJpbmFjdGl2ZSI9PT10aGlzLnByZXNlbmNlfHwwPT09dGhpcy5ofHwwPT09dGhpcy53KXJldHVybiBIVE1MUmVzdWx0LkVNUFRZO2ZpeERpbWVuc2lvbnModGhpcyk7Y29uc3QgdD1bXSxpPXtpZDp0aGlzW25uXSxjbGFzczpbXX07c2V0QWNjZXNzKHRoaXMsaS5jbGFzcyk7dGhpc1thcl18fCh0aGlzW2FyXT1PYmplY3QuY3JlYXRlKG51bGwpKTtPYmplY3QuYXNzaWduKHRoaXNbYXJdLHtjaGlsZHJlbjp0LGF0dHJpYnV0ZXM6aSxhdHRlbXB0OjAsbGluZTpudWxsLG51bWJlckluTGluZTowLGF2YWlsYWJsZVNwYWNlOnt3aWR0aDpNYXRoLm1pbih0aGlzLnd8fDEvMCxlLndpZHRoKSxoZWlnaHQ6TWF0aC5taW4odGhpcy5ofHwxLzAsZS5oZWlnaHQpfSx3aWR0aDowLGhlaWdodDowLHByZXZIZWlnaHQ6MCxjdXJyZW50V2lkdGg6MH0pO2NvbnN0IGE9dGhpc1t4cl0oKTthfHxzZXRGaXJzdFVuc3BsaXR0YWJsZSh0aGlzKTtpZighY2hlY2tEaW1lbnNpb25zKHRoaXMsZSkpcmV0dXJuIEhUTUxSZXN1bHQuRkFJTFVSRTtjb25zdCBzPW5ldyBTZXQoWyJmaWVsZCJdKTtpZih0aGlzLmxheW91dC5pbmNsdWRlcygicm93Iikpe2NvbnN0IGU9dGhpc1tmcl0oKS5jb2x1bW5XaWR0aHM7aWYoQXJyYXkuaXNBcnJheShlKSYmZS5sZW5ndGg+MCl7dGhpc1thcl0uY29sdW1uV2lkdGhzPWU7dGhpc1thcl0uY3VycmVudENvbHVtbj0wfX1jb25zdCByPXRvU3R5bGUodGhpcywiYW5jaG9yVHlwZSIsImRpbWVuc2lvbnMiLCJwb3NpdGlvbiIsInByZXNlbmNlIiwiYm9yZGVyIiwibWFyZ2luIiwiaEFsaWduIiksbj1bInhmYUV4Y2xncm91cCJdLG89bGF5b3V0Q2xhc3ModGhpcyk7byYmbi5wdXNoKG8pO2lzUHJpbnRPbmx5KHRoaXMpJiZuLnB1c2goInhmYVByaW50T25seSIpO2kuc3R5bGU9cjtpLmNsYXNzPW47dGhpcy5uYW1lJiYoaS54ZmFOYW1lPXRoaXMubmFtZSk7dGhpc1tXcl0oKTtjb25zdCBnPSJsci10YiI9PT10aGlzLmxheW91dHx8InJsLXRiIj09PXRoaXMubGF5b3V0LGM9Zz8yOjE7Zm9yKDt0aGlzW2FyXS5hdHRlbXB0PGM7dGhpc1thcl0uYXR0ZW1wdCsrKXtnJiYxPT09dGhpc1thcl0uYXR0ZW1wdCYmKHRoaXNbYXJdLm51bWJlckluTGluZT0wKTtjb25zdCBlPXRoaXNbWnNdKHtmaWx0ZXI6cyxpbmNsdWRlOiEwfSk7aWYoZS5zdWNjZXNzKWJyZWFrO2lmKGUuaXNCcmVhaygpKXt0aGlzW1ByXSgpO3JldHVybiBlfWlmKGcmJjA9PT10aGlzW2FyXS5hdHRlbXB0JiYwPT09dGhpc1thcl0ubnVtYmVySW5MaW5lJiYhdGhpc1ttcl0oKVthcl0ubm9MYXlvdXRGYWlsdXJlKXt0aGlzW2FyXS5hdHRlbXB0PWM7YnJlYWt9fXRoaXNbUHJdKCk7YXx8dW5zZXRGaXJzdFVuc3BsaXR0YWJsZSh0aGlzKTtpZih0aGlzW2FyXS5hdHRlbXB0PT09Yyl7YXx8ZGVsZXRlIHRoaXNbYXJdO3JldHVybiBIVE1MUmVzdWx0LkZBSUxVUkV9bGV0IEM9MCxoPTA7aWYodGhpcy5tYXJnaW4pe0M9dGhpcy5tYXJnaW4ubGVmdEluc2V0K3RoaXMubWFyZ2luLnJpZ2h0SW5zZXQ7aD10aGlzLm1hcmdpbi50b3BJbnNldCt0aGlzLm1hcmdpbi5ib3R0b21JbnNldH1jb25zdCBsPU1hdGgubWF4KHRoaXNbYXJdLndpZHRoK0MsdGhpcy53fHwwKSxRPU1hdGgubWF4KHRoaXNbYXJdLmhlaWdodCtoLHRoaXMuaHx8MCksRT1bdGhpcy54LHRoaXMueSxsLFFdOyIiPT09dGhpcy53JiYoci53aWR0aD1tZWFzdXJlVG9TdHJpbmcobCkpOyIiPT09dGhpcy5oJiYoci5oZWlnaHQ9bWVhc3VyZVRvU3RyaW5nKFEpKTtjb25zdCB1PXtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6aSxjaGlsZHJlbjp0fTthcHBseUFzc2lzdCh0aGlzLGkpO2RlbGV0ZSB0aGlzW2FyXTtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKGNyZWF0ZVdyYXBwZXIodGhpcyx1KSxFKX19Y2xhc3MgRXhlY3V0ZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihIbiwiZXhlY3V0ZSIpO3RoaXMuY29ubmVjdGlvbj1lLmNvbm5lY3Rpb258fCIiO3RoaXMuZXhlY3V0ZVR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUuZXhlY3V0ZVR5cGUsWyJpbXBvcnQiLCJyZW1lcmdlIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5ydW5BdD1nZXRTdHJpbmdPcHRpb24oZS5ydW5BdCxbImNsaWVudCIsImJvdGgiLCJzZXJ2ZXIiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBFeHRyYXMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoSG4sImV4dHJhcyIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYm9vbGVhbj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRhdGVUaW1lPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRlY2ltYWw9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXhEYXRhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV4dHJhcz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5mbG9hdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5pbWFnZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5pbnRlZ2VyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRleHQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudGltZT1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIEZpZWxkIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEhuLCJmaWVsZCIsITApO3RoaXMuYWNjZXNzPWdldFN0cmluZ09wdGlvbihlLmFjY2VzcyxbIm9wZW4iLCJub25JbnRlcmFjdGl2ZSIsInByb3RlY3RlZCIsInJlYWRPbmx5Il0pO3RoaXMuYWNjZXNzS2V5PWUuYWNjZXNzS2V5fHwiIjt0aGlzLmFuY2hvclR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUuYW5jaG9yVHlwZSxbInRvcExlZnQiLCJib3R0b21DZW50ZXIiLCJib3R0b21MZWZ0IiwiYm90dG9tUmlnaHQiLCJtaWRkbGVDZW50ZXIiLCJtaWRkbGVMZWZ0IiwibWlkZGxlUmlnaHQiLCJ0b3BDZW50ZXIiLCJ0b3BSaWdodCJdKTt0aGlzLmNvbFNwYW49Z2V0SW50ZWdlcih7ZGF0YTplLmNvbFNwYW4sZGVmYXVsdFZhbHVlOjEsdmFsaWRhdGU6ZT0+ZT49MXx8LTE9PT1lfSk7dGhpcy5oPWUuaD9nZXRNZWFzdXJlbWVudChlLmgpOiIiO3RoaXMuaEFsaWduPWdldFN0cmluZ09wdGlvbihlLmhBbGlnbixbImxlZnQiLCJjZW50ZXIiLCJqdXN0aWZ5IiwianVzdGlmeUFsbCIsInJhZGl4IiwicmlnaHQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmxvY2FsZT1lLmxvY2FsZXx8IiI7dGhpcy5tYXhIPWdldE1lYXN1cmVtZW50KGUubWF4SCwiMHB0Iik7dGhpcy5tYXhXPWdldE1lYXN1cmVtZW50KGUubWF4VywiMHB0Iik7dGhpcy5taW5IPWdldE1lYXN1cmVtZW50KGUubWluSCwiMHB0Iik7dGhpcy5taW5XPWdldE1lYXN1cmVtZW50KGUubWluVywiMHB0Iik7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5wcmVzZW5jZT1nZXRTdHJpbmdPcHRpb24oZS5wcmVzZW5jZSxbInZpc2libGUiLCJoaWRkZW4iLCJpbmFjdGl2ZSIsImludmlzaWJsZSJdKTt0aGlzLnJlbGV2YW50PWdldFJlbGV2YW50KGUucmVsZXZhbnQpO3RoaXMucm90YXRlPWdldEludGVnZXIoe2RhdGE6ZS5yb3RhdGUsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+ZSU5MD09MH0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnc9ZS53P2dldE1lYXN1cmVtZW50KGUudyk6IiI7dGhpcy54PWdldE1lYXN1cmVtZW50KGUueCwiMHB0Iik7dGhpcy55PWdldE1lYXN1cmVtZW50KGUueSwiMHB0Iik7dGhpcy5hc3Npc3Q9bnVsbDt0aGlzLmJpbmQ9bnVsbDt0aGlzLmJvcmRlcj1udWxsO3RoaXMuY2FsY3VsYXRlPW51bGw7dGhpcy5jYXB0aW9uPW51bGw7dGhpcy5kZXNjPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmZvbnQ9bnVsbDt0aGlzLmZvcm1hdD1udWxsO3RoaXMuaXRlbXM9bmV3IFhGQU9iamVjdEFycmF5KDIpO3RoaXMua2VlcD1udWxsO3RoaXMubWFyZ2luPW51bGw7dGhpcy5wYXJhPW51bGw7dGhpcy50cmF2ZXJzYWw9bnVsbDt0aGlzLnVpPW51bGw7dGhpcy52YWxpZGF0ZT1udWxsO3RoaXMudmFsdWU9bnVsbDt0aGlzLmJpbmRJdGVtcz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5jb25uZWN0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV2ZW50PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnNldFByb3BlcnR5PW5ldyBYRkFPYmplY3RBcnJheX1ba3JdKCl7cmV0dXJuITB9WyRyXShlKXtfc2V0VmFsdWUodGhpcyxlKX1bYW5dKGUpe3NldFRhYkluZGV4KHRoaXMpO2lmKCF0aGlzLnVpKXt0aGlzLnVpPW5ldyBVaSh7fSk7dGhpcy51aVt5cl09dGhpc1t5cl07dGhpc1tYc10odGhpcy51aSk7bGV0IGU7c3dpdGNoKHRoaXMuaXRlbXMuY2hpbGRyZW4ubGVuZ3RoKXtjYXNlIDA6ZT1uZXcgVGV4dEVkaXQoe30pO3RoaXMudWkudGV4dEVkaXQ9ZTticmVhaztjYXNlIDE6ZT1uZXcgQ2hlY2tCdXR0b24oe30pO3RoaXMudWkuY2hlY2tCdXR0b249ZTticmVhaztjYXNlIDI6ZT1uZXcgQ2hvaWNlTGlzdCh7fSk7dGhpcy51aS5jaG9pY2VMaXN0PWV9dGhpcy51aVtYc10oZSl9aWYoIXRoaXMudWl8fCJoaWRkZW4iPT09dGhpcy5wcmVzZW5jZXx8ImluYWN0aXZlIj09PXRoaXMucHJlc2VuY2V8fDA9PT10aGlzLmh8fDA9PT10aGlzLncpcmV0dXJuIEhUTUxSZXN1bHQuRU1QVFk7dGhpcy5jYXB0aW9uJiZkZWxldGUgdGhpcy5jYXB0aW9uW2FyXTt0aGlzW1dyXSgpO2NvbnN0IHQ9dGhpcy5jYXB0aW9uP3RoaXMuY2FwdGlvblthbl0oZSkuaHRtbDpudWxsLGk9dGhpcy53LGE9dGhpcy5oO2xldCBzPTAscj0wO2lmKHRoaXMubWFyZ2luKXtzPXRoaXMubWFyZ2luLmxlZnRJbnNldCt0aGlzLm1hcmdpbi5yaWdodEluc2V0O3I9dGhpcy5tYXJnaW4udG9wSW5zZXQrdGhpcy5tYXJnaW4uYm90dG9tSW5zZXR9bGV0IG49bnVsbDtpZigiIj09PXRoaXMud3x8IiI9PT10aGlzLmgpe2xldCB0PW51bGwsaT1udWxsLGE9MCxvPTA7aWYodGhpcy51aS5jaGVja0J1dHRvbilhPW89dGhpcy51aS5jaGVja0J1dHRvbi5zaXplO2Vsc2V7Y29uc3R7dzp0LGg6aX09bGF5b3V0Tm9kZSh0aGlzLGUpO2lmKG51bGwhPT10KXthPXQ7bz1pfWVsc2Ugbz1mdW5jdGlvbiBmb250c19nZXRNZXRyaWNzKGUsdD0hMSl7bGV0IGk9bnVsbDtpZihlKXtjb25zdCB0PXN0cmlwUXVvdGVzKGUudHlwZWZhY2UpLGE9ZVt5cl0uZm9udEZpbmRlci5maW5kKHQpO2k9c2VsZWN0Rm9udChlLGEpfWlmKCFpKXJldHVybntsaW5lSGVpZ2h0OjEyLGxpbmVHYXA6MixsaW5lTm9HYXA6MTB9O2NvbnN0IGE9ZS5zaXplfHwxMCxzPWkubGluZUhlaWdodD9NYXRoLm1heCh0PzA6MS4yLGkubGluZUhlaWdodCk6MS4yLHI9dm9pZCAwPT09aS5saW5lR2FwPy4yOmkubGluZUdhcDtyZXR1cm57bGluZUhlaWdodDpzKmEsbGluZUdhcDpyKmEsbGluZU5vR2FwOk1hdGgubWF4KDEscy1yKSphfX0odGhpcy5mb250LCEwKS5saW5lTm9HYXB9bj1nZXRCb3JkZXJEaW1zKHRoaXMudWlbbHJdKCkpO2ErPW4udztvKz1uLmg7aWYodGhpcy5jYXB0aW9uKXtjb25zdHt3OnMsaDpyLGlzQnJva2VuOm59PXRoaXMuY2FwdGlvbltscl0oZSk7aWYobiYmdGhpc1tmcl0oKVtVcl0oKSl7dGhpc1tQcl0oKTtyZXR1cm4gSFRNTFJlc3VsdC5GQUlMVVJFfXQ9cztpPXI7c3dpdGNoKHRoaXMuY2FwdGlvbi5wbGFjZW1lbnQpe2Nhc2UibGVmdCI6Y2FzZSJyaWdodCI6Y2FzZSJpbmxpbmUiOnQrPWE7YnJlYWs7Y2FzZSJ0b3AiOmNhc2UiYm90dG9tIjppKz1vfX1lbHNle3Q9YTtpPW99aWYodCYmIiI9PT10aGlzLncpe3QrPXM7dGhpcy53PU1hdGgubWluKHRoaXMubWF4Vzw9MD8xLzA6dGhpcy5tYXhXLHRoaXMubWluVysxPHQ/dDp0aGlzLm1pblcpfWlmKGkmJiIiPT09dGhpcy5oKXtpKz1yO3RoaXMuaD1NYXRoLm1pbih0aGlzLm1heEg8PTA/MS8wOnRoaXMubWF4SCx0aGlzLm1pbkgrMTxpP2k6dGhpcy5taW5IKX19dGhpc1tQcl0oKTtmaXhEaW1lbnNpb25zKHRoaXMpO3NldEZpcnN0VW5zcGxpdHRhYmxlKHRoaXMpO2lmKCFjaGVja0RpbWVuc2lvbnModGhpcyxlKSl7dGhpcy53PWk7dGhpcy5oPWE7dGhpc1tQcl0oKTtyZXR1cm4gSFRNTFJlc3VsdC5GQUlMVVJFfXVuc2V0Rmlyc3RVbnNwbGl0dGFibGUodGhpcyk7Y29uc3Qgbz10b1N0eWxlKHRoaXMsImZvbnQiLCJkaW1lbnNpb25zIiwicG9zaXRpb24iLCJyb3RhdGUiLCJhbmNob3JUeXBlIiwicHJlc2VuY2UiLCJtYXJnaW4iLCJoQWxpZ24iKTtzZXRNaW5NYXhEaW1lbnNpb25zKHRoaXMsbyk7Y29uc3QgZz1bInhmYUZpZWxkIl07dGhpcy5mb250JiZnLnB1c2goInhmYUZvbnQiKTtpc1ByaW50T25seSh0aGlzKSYmZy5wdXNoKCJ4ZmFQcmludE9ubHkiKTtjb25zdCBjPXtzdHlsZTpvLGlkOnRoaXNbbm5dLGNsYXNzOmd9O2lmKG8ubWFyZ2luKXtvLnBhZGRpbmc9by5tYXJnaW47ZGVsZXRlIG8ubWFyZ2lufXNldEFjY2Vzcyh0aGlzLGcpO3RoaXMubmFtZSYmKGMueGZhTmFtZT10aGlzLm5hbWUpO2NvbnN0IEM9W10saD17bmFtZToiZGl2IixhdHRyaWJ1dGVzOmMsY2hpbGRyZW46Q307YXBwbHlBc3Npc3QodGhpcyxjKTtjb25zdCBsPXRoaXMuYm9yZGVyP3RoaXMuYm9yZGVyW3JuXSgpOm51bGwsUT1jb21wdXRlQmJveCh0aGlzLGgsZSksRT10aGlzLnVpW2FuXSgpLmh0bWw7aWYoIUUpe09iamVjdC5hc3NpZ24obyxsKTtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKGNyZWF0ZVdyYXBwZXIodGhpcyxoKSxRKX10aGlzW0FuXSYmKEUuY2hpbGRyZW4/LlswXT9FLmNoaWxkcmVuWzBdLmF0dHJpYnV0ZXMudGFiaW5kZXg9dGhpc1tBbl06RS5hdHRyaWJ1dGVzLnRhYmluZGV4PXRoaXNbQW5dKTtFLmF0dHJpYnV0ZXMuc3R5bGV8fChFLmF0dHJpYnV0ZXMuc3R5bGU9T2JqZWN0LmNyZWF0ZShudWxsKSk7bGV0IHU9bnVsbDtpZih0aGlzLnVpLmJ1dHRvbil7MT09PUUuY2hpbGRyZW4ubGVuZ3RoJiYoW3VdPUUuY2hpbGRyZW4uc3BsaWNlKDAsMSkpO09iamVjdC5hc3NpZ24oRS5hdHRyaWJ1dGVzLnN0eWxlLGwpfWVsc2UgT2JqZWN0LmFzc2lnbihvLGwpO0MucHVzaChFKTtpZih0aGlzLnZhbHVlKWlmKHRoaXMudWkuaW1hZ2VFZGl0KUUuY2hpbGRyZW4ucHVzaCh0aGlzLnZhbHVlW2FuXSgpLmh0bWwpO2Vsc2UgaWYoIXRoaXMudWkuYnV0dG9uKXtsZXQgZT0iIjtpZih0aGlzLnZhbHVlLmV4RGF0YSllPXRoaXMudmFsdWUuZXhEYXRhW2VuXSgpO2Vsc2UgaWYodGhpcy52YWx1ZS50ZXh0KWU9dGhpcy52YWx1ZS50ZXh0W2xyXSgpO2Vsc2V7Y29uc3QgdD10aGlzLnZhbHVlW2FuXSgpLmh0bWw7bnVsbCE9PXQmJihlPXQuY2hpbGRyZW5bMF0udmFsdWUpfXRoaXMudWkudGV4dEVkaXQmJnRoaXMudmFsdWUudGV4dD8ubWF4Q2hhcnMmJihFLmNoaWxkcmVuWzBdLmF0dHJpYnV0ZXMubWF4TGVuZ3RoPXRoaXMudmFsdWUudGV4dC5tYXhDaGFycyk7aWYoZSl7aWYodGhpcy51aS5udW1lcmljRWRpdCl7ZT1wYXJzZUZsb2F0KGUpO2U9aXNOYU4oZSk/IiI6ZS50b1N0cmluZygpfSJ0ZXh0YXJlYSI9PT1FLmNoaWxkcmVuWzBdLm5hbWU/RS5jaGlsZHJlblswXS5hdHRyaWJ1dGVzLnRleHRDb250ZW50PWU6RS5jaGlsZHJlblswXS5hdHRyaWJ1dGVzLnZhbHVlPWV9fWlmKCF0aGlzLnVpLmltYWdlRWRpdCYmRS5jaGlsZHJlbj8uWzBdJiZ0aGlzLmgpe249bnx8Z2V0Qm9yZGVyRGltcyh0aGlzLnVpW2xyXSgpKTtsZXQgdD0wO2lmKHRoaXMuY2FwdGlvbiYmWyJ0b3AiLCJib3R0b20iXS5pbmNsdWRlcyh0aGlzLmNhcHRpb24ucGxhY2VtZW50KSl7dD10aGlzLmNhcHRpb24ucmVzZXJ2ZTt0PD0wJiYodD10aGlzLmNhcHRpb25bbHJdKGUpLmgpO2NvbnN0IGk9dGhpcy5oLXQtci1uLmg7RS5jaGlsZHJlblswXS5hdHRyaWJ1dGVzLnN0eWxlLmhlaWdodD1tZWFzdXJlVG9TdHJpbmcoaSl9ZWxzZSBFLmNoaWxkcmVuWzBdLmF0dHJpYnV0ZXMuc3R5bGUuaGVpZ2h0PSIxMDAlIn11JiZFLmNoaWxkcmVuLnB1c2godSk7aWYoIXQpe0UuYXR0cmlidXRlcy5jbGFzcyYmRS5hdHRyaWJ1dGVzLmNsYXNzLnB1c2goInhmYUxlZnQiKTt0aGlzLnc9aTt0aGlzLmg9YTtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKGNyZWF0ZVdyYXBwZXIodGhpcyxoKSxRKX1pZih0aGlzLnVpLmJ1dHRvbil7by5wYWRkaW5nJiZkZWxldGUgby5wYWRkaW5nOyJkaXYiPT09dC5uYW1lJiYodC5uYW1lPSJzcGFuIik7RS5jaGlsZHJlbi5wdXNoKHQpO3JldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3MoaCxRKX10aGlzLnVpLmNoZWNrQnV0dG9uJiYodC5hdHRyaWJ1dGVzLmNsYXNzWzBdPSJ4ZmFDYXB0aW9uRm9yQ2hlY2tCdXR0b24iKTtFLmF0dHJpYnV0ZXMuY2xhc3N8fChFLmF0dHJpYnV0ZXMuY2xhc3M9W10pO0UuY2hpbGRyZW4uc3BsaWNlKDAsMCx0KTtzd2l0Y2godGhpcy5jYXB0aW9uLnBsYWNlbWVudCl7Y2FzZSJsZWZ0IjpjYXNlImlubGluZSI6RS5hdHRyaWJ1dGVzLmNsYXNzLnB1c2goInhmYUxlZnQiKTticmVhaztjYXNlInJpZ2h0IjpFLmF0dHJpYnV0ZXMuY2xhc3MucHVzaCgieGZhUmlnaHQiKTticmVhaztjYXNlInRvcCI6RS5hdHRyaWJ1dGVzLmNsYXNzLnB1c2goInhmYVRvcCIpO2JyZWFrO2Nhc2UiYm90dG9tIjpFLmF0dHJpYnV0ZXMuY2xhc3MucHVzaCgieGZhQm90dG9tIil9dGhpcy53PWk7dGhpcy5oPWE7cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2VzcyhjcmVhdGVXcmFwcGVyKHRoaXMsaCksUSl9fWNsYXNzIEZpbGwgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoSG4sImZpbGwiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucHJlc2VuY2U9Z2V0U3RyaW5nT3B0aW9uKGUucHJlc2VuY2UsWyJ2aXNpYmxlIiwiaGlkZGVuIiwiaW5hY3RpdmUiLCJpbnZpc2libGUiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY29sb3I9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMubGluZWFyPW51bGw7dGhpcy5wYXR0ZXJuPW51bGw7dGhpcy5yYWRpYWw9bnVsbDt0aGlzLnNvbGlkPW51bGw7dGhpcy5zdGlwcGxlPW51bGx9W3JuXSgpe2NvbnN0IGU9dGhpc1twcl0oKSx0PWVbcHJdKClbcHJdKCksaT1PYmplY3QuY3JlYXRlKG51bGwpO2xldCBhPSJjb2xvciIscz1hO2lmKGUgaW5zdGFuY2VvZiBCb3JkZXIpe2E9ImJhY2tncm91bmQtY29sb3IiO3M9ImJhY2tncm91bmQiO3QgaW5zdGFuY2VvZiBVaSYmKGkuYmFja2dyb3VuZENvbG9yPSJ3aGl0ZSIpfWlmKGUgaW5zdGFuY2VvZiBSZWN0YW5nbGV8fGUgaW5zdGFuY2VvZiBBcmMpe2E9cz0iZmlsbCI7aS5maWxsPSJ3aGl0ZSJ9Zm9yKGNvbnN0IGUgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpe2lmKCJleHRyYXMiPT09ZXx8ImNvbG9yIj09PWUpY29udGludWU7Y29uc3QgdD10aGlzW2VdO2lmKCEodCBpbnN0YW5jZW9mIFhGQU9iamVjdCkpY29udGludWU7Y29uc3Qgcj10W3JuXSh0aGlzLmNvbG9yKTtyJiYoaVtyLnN0YXJ0c1dpdGgoIiMiKT9hOnNdPXIpO3JldHVybiBpfWlmKHRoaXMuY29sb3I/LnZhbHVlKXtjb25zdCBlPXRoaXMuY29sb3Jbcm5dKCk7aVtlLnN0YXJ0c1dpdGgoIiMiKT9hOnNdPWV9cmV0dXJuIGl9fWNsYXNzIEZpbHRlciBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihIbiwiZmlsdGVyIiwhMCk7dGhpcy5hZGRSZXZvY2F0aW9uSW5mbz1nZXRTdHJpbmdPcHRpb24oZS5hZGRSZXZvY2F0aW9uSW5mbyxbIiIsInJlcXVpcmVkIiwib3B0aW9uYWwiLCJub25lIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMudmVyc2lvbj1nZXRJbnRlZ2VyKHtkYXRhOnRoaXMudmVyc2lvbixkZWZhdWx0VmFsdWU6NSx2YWxpZGF0ZTplPT5lPj0xJiZlPD01fSk7dGhpcy5hcHBlYXJhbmNlRmlsdGVyPW51bGw7dGhpcy5jZXJ0aWZpY2F0ZXM9bnVsbDt0aGlzLmRpZ2VzdE1ldGhvZHM9bnVsbDt0aGlzLmVuY29kaW5ncz1udWxsO3RoaXMuZW5jcnlwdGlvbk1ldGhvZHM9bnVsbDt0aGlzLmhhbmRsZXI9bnVsbDt0aGlzLmxvY2tEb2N1bWVudD1udWxsO3RoaXMubWRwPW51bGw7dGhpcy5yZWFzb25zPW51bGw7dGhpcy50aW1lU3RhbXA9bnVsbH19Y2xhc3MgRmxvYXQgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEhuLCJmbG9hdCIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVtzcl0oKXtjb25zdCBlPXBhcnNlRmxvYXQodGhpc1tlcl0udHJpbSgpKTt0aGlzW2VyXT1pc05hTihlKT9udWxsOmV9W2FuXShlKXtyZXR1cm4gdmFsdWVUb0h0bWwobnVsbCE9PXRoaXNbZXJdP3RoaXNbZXJdLnRvU3RyaW5nKCk6IiIpfX1jbGFzcyB0ZW1wbGF0ZV9Gb250IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEhuLCJmb250IiwhMCk7dGhpcy5iYXNlbGluZVNoaWZ0PWdldE1lYXN1cmVtZW50KGUuYmFzZWxpbmVTaGlmdCk7dGhpcy5mb250SG9yaXpvbnRhbFNjYWxlPWdldEZsb2F0KHtkYXRhOmUuZm9udEhvcml6b250YWxTY2FsZSxkZWZhdWx0VmFsdWU6MTAwLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLmZvbnRWZXJ0aWNhbFNjYWxlPWdldEZsb2F0KHtkYXRhOmUuZm9udFZlcnRpY2FsU2NhbGUsZGVmYXVsdFZhbHVlOjEwMCx2YWxpZGF0ZTplPT5lPj0wfSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmtlcm5pbmdNb2RlPWdldFN0cmluZ09wdGlvbihlLmtlcm5pbmdNb2RlLFsibm9uZSIsInBhaXIiXSk7dGhpcy5sZXR0ZXJTcGFjaW5nPWdldE1lYXN1cmVtZW50KGUubGV0dGVyU3BhY2luZywiMCIpO3RoaXMubGluZVRocm91Z2g9Z2V0SW50ZWdlcih7ZGF0YTplLmxpbmVUaHJvdWdoLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfHwyPT09ZX0pO3RoaXMubGluZVRocm91Z2hQZXJpb2Q9Z2V0U3RyaW5nT3B0aW9uKGUubGluZVRocm91Z2hQZXJpb2QsWyJhbGwiLCJ3b3JkIl0pO3RoaXMub3ZlcmxpbmU9Z2V0SW50ZWdlcih7ZGF0YTplLm92ZXJsaW5lLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfHwyPT09ZX0pO3RoaXMub3ZlcmxpbmVQZXJpb2Q9Z2V0U3RyaW5nT3B0aW9uKGUub3ZlcmxpbmVQZXJpb2QsWyJhbGwiLCJ3b3JkIl0pO3RoaXMucG9zdHVyZT1nZXRTdHJpbmdPcHRpb24oZS5wb3N0dXJlLFsibm9ybWFsIiwiaXRhbGljIl0pO3RoaXMuc2l6ZT1nZXRNZWFzdXJlbWVudChlLnNpemUsIjEwcHQiKTt0aGlzLnR5cGVmYWNlPWUudHlwZWZhY2V8fCJDb3VyaWVyIjt0aGlzLnVuZGVybGluZT1nZXRJbnRlZ2VyKHtkYXRhOmUudW5kZXJsaW5lLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfHwyPT09ZX0pO3RoaXMudW5kZXJsaW5lUGVyaW9kPWdldFN0cmluZ09wdGlvbihlLnVuZGVybGluZVBlcmlvZCxbImFsbCIsIndvcmQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMud2VpZ2h0PWdldFN0cmluZ09wdGlvbihlLndlaWdodCxbIm5vcm1hbCIsImJvbGQiXSk7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmZpbGw9bnVsbH1bVnNdKGUpe3N1cGVyW1ZzXShlKTt0aGlzW3lyXS51c2VkVHlwZWZhY2VzLmFkZCh0aGlzLnR5cGVmYWNlKX1bcm5dKCl7Y29uc3QgZT10b1N0eWxlKHRoaXMsImZpbGwiKSx0PWUuY29sb3I7aWYodClpZigiIzAwMDAwMCI9PT10KWRlbGV0ZSBlLmNvbG9yO2Vsc2UgaWYoIXQuc3RhcnRzV2l0aCgiIyIpKXtlLmJhY2tncm91bmQ9dDtlLmJhY2tncm91bmRDbGlwPSJ0ZXh0IjtlLmNvbG9yPSJ0cmFuc3BhcmVudCJ9dGhpcy5iYXNlbGluZVNoaWZ0JiYoZS52ZXJ0aWNhbEFsaWduPW1lYXN1cmVUb1N0cmluZyh0aGlzLmJhc2VsaW5lU2hpZnQpKTtlLmZvbnRLZXJuaW5nPSJub25lIj09PXRoaXMua2VybmluZ01vZGU/Im5vbmUiOiJub3JtYWwiO2UubGV0dGVyU3BhY2luZz1tZWFzdXJlVG9TdHJpbmcodGhpcy5sZXR0ZXJTcGFjaW5nKTtpZigwIT09dGhpcy5saW5lVGhyb3VnaCl7ZS50ZXh0RGVjb3JhdGlvbj0ibGluZS10aHJvdWdoIjsyPT09dGhpcy5saW5lVGhyb3VnaCYmKGUudGV4dERlY29yYXRpb25TdHlsZT0iZG91YmxlIil9aWYoMCE9PXRoaXMub3ZlcmxpbmUpe2UudGV4dERlY29yYXRpb249Im92ZXJsaW5lIjsyPT09dGhpcy5vdmVybGluZSYmKGUudGV4dERlY29yYXRpb25TdHlsZT0iZG91YmxlIil9ZS5mb250U3R5bGU9dGhpcy5wb3N0dXJlO2UuZm9udFNpemU9bWVhc3VyZVRvU3RyaW5nKC45OSp0aGlzLnNpemUpO3NldEZvbnRGYW1pbHkodGhpcyx0aGlzLHRoaXNbeXJdLmZvbnRGaW5kZXIsZSk7aWYoMCE9PXRoaXMudW5kZXJsaW5lKXtlLnRleHREZWNvcmF0aW9uPSJ1bmRlcmxpbmUiOzI9PT10aGlzLnVuZGVybGluZSYmKGUudGV4dERlY29yYXRpb25TdHlsZT0iZG91YmxlIil9ZS5mb250V2VpZ2h0PXRoaXMud2VpZ2h0O3JldHVybiBlfX1jbGFzcyBGb3JtYXQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoSG4sImZvcm1hdCIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5waWN0dXJlPW51bGx9fWNsYXNzIEhhbmRsZXIgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoSG4sImhhbmRsZXIiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIEh5cGhlbmF0aW9uIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEhuLCJoeXBoZW5hdGlvbiIpO3RoaXMuZXhjbHVkZUFsbENhcHM9Z2V0SW50ZWdlcih7ZGF0YTplLmV4Y2x1ZGVBbGxDYXBzLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5leGNsdWRlSW5pdGlhbENhcD1nZXRJbnRlZ2VyKHtkYXRhOmUuZXhjbHVkZUluaXRpYWxDYXAsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLmh5cGhlbmF0ZT1nZXRJbnRlZ2VyKHtkYXRhOmUuaHlwaGVuYXRlLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnB1c2hDaGFyYWN0ZXJDb3VudD1nZXRJbnRlZ2VyKHtkYXRhOmUucHVzaENoYXJhY3RlckNvdW50LGRlZmF1bHRWYWx1ZTozLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLnJlbWFpbkNoYXJhY3RlckNvdW50PWdldEludGVnZXIoe2RhdGE6ZS5yZW1haW5DaGFyYWN0ZXJDb3VudCxkZWZhdWx0VmFsdWU6Myx2YWxpZGF0ZTplPT5lPj0wfSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMud29yZENoYXJhY3RlckNvdW50PWdldEludGVnZXIoe2RhdGE6ZS53b3JkQ2hhcmFjdGVyQ291bnQsZGVmYXVsdFZhbHVlOjcsdmFsaWRhdGU6ZT0+ZT49MH0pfX1jbGFzcyBJbWFnZSBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihIbiwiaW1hZ2UiKTt0aGlzLmFzcGVjdD1nZXRTdHJpbmdPcHRpb24oZS5hc3BlY3QsWyJmaXQiLCJhY3R1YWwiLCJoZWlnaHQiLCJub25lIiwid2lkdGgiXSk7dGhpcy5jb250ZW50VHlwZT1lLmNvbnRlbnRUeXBlfHwiIjt0aGlzLmhyZWY9ZS5ocmVmfHwiIjt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudHJhbnNmZXJFbmNvZGluZz1nZXRTdHJpbmdPcHRpb24oZS50cmFuc2ZlckVuY29kaW5nLFsiYmFzZTY0Iiwibm9uZSIsInBhY2thZ2UiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVthbl0oKXtpZih0aGlzLmNvbnRlbnRUeXBlJiYhdm4uaGFzKHRoaXMuY29udGVudFR5cGUudG9Mb3dlckNhc2UoKSkpcmV0dXJuIEhUTUxSZXN1bHQuRU1QVFk7bGV0IGU9dGhpc1t5cl0uaW1hZ2VzJiZ0aGlzW3lyXS5pbWFnZXMuZ2V0KHRoaXMuaHJlZik7aWYoIWUmJih0aGlzLmhyZWZ8fCF0aGlzW2VyXSkpcmV0dXJuIEhUTUxSZXN1bHQuRU1QVFk7ZXx8ImJhc2U2NCIhPT10aGlzLnRyYW5zZmVyRW5jb2Rpbmd8fChlPXN0cmluZ1RvQnl0ZXMoYXRvYih0aGlzW2VyXSkpKTtpZighZSlyZXR1cm4gSFRNTFJlc3VsdC5FTVBUWTtpZighdGhpcy5jb250ZW50VHlwZSl7Zm9yKGNvbnN0W3QsaV1vZiBLbilpZihlLmxlbmd0aD50Lmxlbmd0aCYmdC5ldmVyeSgoKHQsaSk9PnQ9PT1lW2ldKSkpe3RoaXMuY29udGVudFR5cGU9aTticmVha31pZighdGhpcy5jb250ZW50VHlwZSlyZXR1cm4gSFRNTFJlc3VsdC5FTVBUWX1jb25zdCB0PW5ldyBCbG9iKFtlXSx7dHlwZTp0aGlzLmNvbnRlbnRUeXBlfSk7bGV0IGk7c3dpdGNoKHRoaXMuYXNwZWN0KXtjYXNlImZpdCI6Y2FzZSJhY3R1YWwiOmJyZWFrO2Nhc2UiaGVpZ2h0IjppPXtoZWlnaHQ6IjEwMCUiLG9iamVjdEZpdDoiZmlsbCJ9O2JyZWFrO2Nhc2Uibm9uZSI6aT17d2lkdGg6IjEwMCUiLGhlaWdodDoiMTAwJSIsb2JqZWN0Rml0OiJmaWxsIn07YnJlYWs7Y2FzZSJ3aWR0aCI6aT17d2lkdGg6IjEwMCUiLG9iamVjdEZpdDoiZmlsbCJ9fWNvbnN0IGE9dGhpc1twcl0oKTtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJpbWciLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhSW1hZ2UiXSxzdHlsZTppLHNyYzpVUkwuY3JlYXRlT2JqZWN0VVJMKHQpLGFsdDphP2FyaWFMYWJlbChhW3ByXSgpKTpudWxsfX0pfX1jbGFzcyBJbWFnZUVkaXQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoSG4sImltYWdlRWRpdCIsITApO3RoaXMuZGF0YT1nZXRTdHJpbmdPcHRpb24oZS5kYXRhLFsibGluayIsImVtYmVkIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYm9yZGVyPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm1hcmdpbj1udWxsfVthbl0oZSl7cmV0dXJuImVtYmVkIj09PXRoaXMuZGF0YT9IVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImRpdiIsY2hpbGRyZW46W10sYXR0cmlidXRlczp7fX0pOkhUTUxSZXN1bHQuRU1QVFl9fWNsYXNzIEludGVnZXIgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEhuLCJpbnRlZ2VyIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W3NyXSgpe2NvbnN0IGU9cGFyc2VJbnQodGhpc1tlcl0udHJpbSgpLDEwKTt0aGlzW2VyXT1pc05hTihlKT9udWxsOmV9W2FuXShlKXtyZXR1cm4gdmFsdWVUb0h0bWwobnVsbCE9PXRoaXNbZXJdP3RoaXNbZXJdLnRvU3RyaW5nKCk6IiIpfX1jbGFzcyBJc3N1ZXJzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEhuLCJpc3N1ZXJzIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY2VydGlmaWNhdGU9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBJdGVtcyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihIbiwiaXRlbXMiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucHJlc2VuY2U9Z2V0U3RyaW5nT3B0aW9uKGUucHJlc2VuY2UsWyJ2aXNpYmxlIiwiaGlkZGVuIiwiaW5hY3RpdmUiLCJpbnZpc2libGUiXSk7dGhpcy5yZWY9ZS5yZWZ8fCIiO3RoaXMuc2F2ZT1nZXRJbnRlZ2VyKHtkYXRhOmUuc2F2ZSxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmJvb2xlYW49bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlVGltZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kZWNpbWFsPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV4RGF0YT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5mbG9hdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5pbWFnZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5pbnRlZ2VyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRleHQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudGltZT1uZXcgWEZBT2JqZWN0QXJyYXl9W2FuXSgpe2NvbnN0IGU9W107Zm9yKGNvbnN0IHQgb2YgdGhpc1tFcl0oKSllLnB1c2godFtlbl0oKSk7cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2VzcyhlKX19Y2xhc3MgS2VlcCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihIbiwia2VlcCIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7Y29uc3QgdD1bIm5vbmUiLCJjb250ZW50QXJlYSIsInBhZ2VBcmVhIl07dGhpcy5pbnRhY3Q9Z2V0U3RyaW5nT3B0aW9uKGUuaW50YWN0LHQpO3RoaXMubmV4dD1nZXRTdHJpbmdPcHRpb24oZS5uZXh0LHQpO3RoaXMucHJldmlvdXM9Z2V0U3RyaW5nT3B0aW9uKGUucHJldmlvdXMsdCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGx9fWNsYXNzIEtleVVzYWdlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEhuLCJrZXlVc2FnZSIpO2NvbnN0IHQ9WyIiLCJ5ZXMiLCJubyJdO3RoaXMuY3JsU2lnbj1nZXRTdHJpbmdPcHRpb24oZS5jcmxTaWduLHQpO3RoaXMuZGF0YUVuY2lwaGVybWVudD1nZXRTdHJpbmdPcHRpb24oZS5kYXRhRW5jaXBoZXJtZW50LHQpO3RoaXMuZGVjaXBoZXJPbmx5PWdldFN0cmluZ09wdGlvbihlLmRlY2lwaGVyT25seSx0KTt0aGlzLmRpZ2l0YWxTaWduYXR1cmU9Z2V0U3RyaW5nT3B0aW9uKGUuZGlnaXRhbFNpZ25hdHVyZSx0KTt0aGlzLmVuY2lwaGVyT25seT1nZXRTdHJpbmdPcHRpb24oZS5lbmNpcGhlck9ubHksdCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmtleUFncmVlbWVudD1nZXRTdHJpbmdPcHRpb24oZS5rZXlBZ3JlZW1lbnQsdCk7dGhpcy5rZXlDZXJ0U2lnbj1nZXRTdHJpbmdPcHRpb24oZS5rZXlDZXJ0U2lnbix0KTt0aGlzLmtleUVuY2lwaGVybWVudD1nZXRTdHJpbmdPcHRpb24oZS5rZXlFbmNpcGhlcm1lbnQsdCk7dGhpcy5ub25SZXB1ZGlhdGlvbj1nZXRTdHJpbmdPcHRpb24oZS5ub25SZXB1ZGlhdGlvbix0KTt0aGlzLnR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBMaW5lIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEhuLCJsaW5lIiwhMCk7dGhpcy5oYW5kPWdldFN0cmluZ09wdGlvbihlLmhhbmQsWyJldmVuIiwibGVmdCIsInJpZ2h0Il0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5zbG9wZT1nZXRTdHJpbmdPcHRpb24oZS5zbG9wZSxbIlxcIiwiLyJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5lZGdlPW51bGx9W2FuXSgpe2NvbnN0IGU9dGhpc1twcl0oKVtwcl0oKSx0PXRoaXMuZWRnZXx8bmV3IEVkZ2Uoe30pLGk9dFtybl0oKSxhPU9iamVjdC5jcmVhdGUobnVsbCkscz0idmlzaWJsZSI9PT10LnByZXNlbmNlP3QudGhpY2tuZXNzOjA7YS5zdHJva2VXaWR0aD1tZWFzdXJlVG9TdHJpbmcocyk7YS5zdHJva2U9aS5jb2xvcjtsZXQgcixuLG8sZyxjPSIxMDAlIixDPSIxMDAlIjtpZihlLnc8PXMpe1tyLG4sbyxnXT1bIjUwJSIsMCwiNTAlIiwiMTAwJSJdO2M9YS5zdHJva2VXaWR0aH1lbHNlIGlmKGUuaDw9cyl7W3IsbixvLGddPVswLCI1MCUiLCIxMDAlIiwiNTAlIl07Qz1hLnN0cm9rZVdpZHRofWVsc2UiXFwiPT09dGhpcy5zbG9wZT9bcixuLG8sZ109WzAsMCwiMTAwJSIsIjEwMCUiXTpbcixuLG8sZ109WzAsIjEwMCUiLCIxMDAlIiwwXTtjb25zdCBoPXtuYW1lOiJzdmciLGNoaWxkcmVuOlt7bmFtZToibGluZSIsYXR0cmlidXRlczp7eG1sbnM6Sm4seDE6cix5MTpuLHgyOm8seTI6ZyxzdHlsZTphfX1dLGF0dHJpYnV0ZXM6e3htbG5zOkpuLHdpZHRoOmMsaGVpZ2h0OkMsc3R5bGU6e292ZXJmbG93OiJ2aXNpYmxlIn19fTtpZihoYXNNYXJnaW4oZSkpcmV0dXJuIEhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiZGl2IixhdHRyaWJ1dGVzOntzdHlsZTp7ZGlzcGxheToiaW5saW5lIix3aWR0aDoiMTAwJSIsaGVpZ2h0OiIxMDAlIn19LGNoaWxkcmVuOltoXX0pO2guYXR0cmlidXRlcy5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiO3JldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3MoaCl9fWNsYXNzIExpbmVhciBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihIbiwibGluZWFyIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUudHlwZSxbInRvUmlnaHQiLCJ0b0JvdHRvbSIsInRvTGVmdCIsInRvVG9wIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNvbG9yPW51bGw7dGhpcy5leHRyYXM9bnVsbH1bcm5dKGUpe2U9ZT9lW3JuXSgpOiIjRkZGRkZGIjtyZXR1cm5gbGluZWFyLWdyYWRpZW50KCR7dGhpcy50eXBlLnJlcGxhY2UoLyhbUkJMVF0pLywiICQxIikudG9Mb3dlckNhc2UoKX0sICR7ZX0sICR7dGhpcy5jb2xvcj90aGlzLmNvbG9yW3JuXSgpOiIjMDAwMDAwIn0pYH19Y2xhc3MgTG9ja0RvY3VtZW50IGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihIbiwibG9ja0RvY3VtZW50Iik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVtzcl0oKXt0aGlzW2VyXT1nZXRTdHJpbmdPcHRpb24odGhpc1tlcl0sWyJhdXRvIiwiMCIsIjEiXSl9fWNsYXNzIE1hbmlmZXN0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEhuLCJtYW5pZmVzdCIsITApO3RoaXMuYWN0aW9uPWdldFN0cmluZ09wdGlvbihlLmFjdGlvbixbImluY2x1ZGUiLCJhbGwiLCJleGNsdWRlIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5yZWY9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBNYXJnaW4gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoSG4sIm1hcmdpbiIsITApO3RoaXMuYm90dG9tSW5zZXQ9Z2V0TWVhc3VyZW1lbnQoZS5ib3R0b21JbnNldCwiMCIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5sZWZ0SW5zZXQ9Z2V0TWVhc3VyZW1lbnQoZS5sZWZ0SW5zZXQsIjAiKTt0aGlzLnJpZ2h0SW5zZXQ9Z2V0TWVhc3VyZW1lbnQoZS5yaWdodEluc2V0LCIwIik7dGhpcy50b3BJbnNldD1nZXRNZWFzdXJlbWVudChlLnRvcEluc2V0LCIwIik7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGx9W3JuXSgpe3JldHVybnttYXJnaW46bWVhc3VyZVRvU3RyaW5nKHRoaXMudG9wSW5zZXQpKyIgIittZWFzdXJlVG9TdHJpbmcodGhpcy5yaWdodEluc2V0KSsiICIrbWVhc3VyZVRvU3RyaW5nKHRoaXMuYm90dG9tSW5zZXQpKyIgIittZWFzdXJlVG9TdHJpbmcodGhpcy5sZWZ0SW5zZXQpfX19Y2xhc3MgTWRwIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEhuLCJtZHAiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucGVybWlzc2lvbnM9Z2V0SW50ZWdlcih7ZGF0YTplLnBlcm1pc3Npb25zLGRlZmF1bHRWYWx1ZToyLHZhbGlkYXRlOmU9PjE9PT1lfHwzPT09ZX0pO3RoaXMuc2lnbmF0dXJlVHlwZT1nZXRTdHJpbmdPcHRpb24oZS5zaWduYXR1cmVUeXBlLFsiZmlsbGVyIiwiYXV0aG9yIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgTWVkaXVtIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEhuLCJtZWRpdW0iKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMuaW1hZ2luZ0JCb3g9ZnVuY3Rpb24gZ2V0QkJveChlKXtjb25zdCB0PS0xO2lmKCFlKXJldHVybnt4OnQseTp0LHdpZHRoOnQsaGVpZ2h0OnR9O2NvbnN0IGk9ZS50cmltKCkuc3BsaXQoL1xzKixccyovKS5tYXAoKGU9PmdldE1lYXN1cmVtZW50KGUsIi0xIikpKTtpZihpLmxlbmd0aDw0fHxpWzJdPDB8fGlbM108MClyZXR1cm57eDp0LHk6dCx3aWR0aDp0LGhlaWdodDp0fTtjb25zdFthLHMscixuXT1pO3JldHVybnt4OmEseTpzLHdpZHRoOnIsaGVpZ2h0Om59fShlLmltYWdpbmdCQm94KTt0aGlzLmxvbmc9Z2V0TWVhc3VyZW1lbnQoZS5sb25nKTt0aGlzLm9yaWVudGF0aW9uPWdldFN0cmluZ09wdGlvbihlLm9yaWVudGF0aW9uLFsicG9ydHJhaXQiLCJsYW5kc2NhcGUiXSk7dGhpcy5zaG9ydD1nZXRNZWFzdXJlbWVudChlLnNob3J0KTt0aGlzLnN0b2NrPWUuc3RvY2t8fCIiO3RoaXMudHJheUluPWdldFN0cmluZ09wdGlvbihlLnRyYXlJbixbImF1dG8iLCJkZWxlZ2F0ZSIsInBhZ2VGcm9udCJdKTt0aGlzLnRyYXlPdXQ9Z2V0U3RyaW5nT3B0aW9uKGUudHJheU91dCxbImF1dG8iLCJkZWxlZ2F0ZSJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIE1lc3NhZ2UgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoSG4sIm1lc3NhZ2UiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnRleHQ9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBOdW1lcmljRWRpdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihIbiwibnVtZXJpY0VkaXQiLCEwKTt0aGlzLmhTY3JvbGxQb2xpY3k9Z2V0U3RyaW5nT3B0aW9uKGUuaFNjcm9sbFBvbGljeSxbImF1dG8iLCJvZmYiLCJvbiJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmJvcmRlcj1udWxsO3RoaXMuY29tYj1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5tYXJnaW49bnVsbH1bYW5dKGUpe2NvbnN0IHQ9dG9TdHlsZSh0aGlzLCJib3JkZXIiLCJmb250IiwibWFyZ2luIiksaT10aGlzW3ByXSgpW3ByXSgpLGE9e25hbWU6ImlucHV0IixhdHRyaWJ1dGVzOnt0eXBlOiJ0ZXh0IixmaWVsZElkOmlbbm5dLGRhdGFJZDppW3RyXT8uW25uXXx8aVtubl0sY2xhc3M6WyJ4ZmFUZXh0ZmllbGQiXSxzdHlsZTp0LCJhcmlhLWxhYmVsIjphcmlhTGFiZWwoaSksImFyaWEtcmVxdWlyZWQiOiExfX07aWYoaXNSZXF1aXJlZChpKSl7YS5hdHRyaWJ1dGVzWyJhcmlhLXJlcXVpcmVkIl09ITA7YS5hdHRyaWJ1dGVzLnJlcXVpcmVkPSEwfXJldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImxhYmVsIixhdHRyaWJ1dGVzOntjbGFzczpbInhmYUxhYmVsIl19LGNoaWxkcmVuOlthXX0pfX1jbGFzcyBPY2N1ciBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihIbiwib2NjdXIiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMuaW5pdGlhbD0iIiE9PWUuaW5pdGlhbD9nZXRJbnRlZ2VyKHtkYXRhOmUuaW5pdGlhbCxkZWZhdWx0VmFsdWU6IiIsdmFsaWRhdGU6ZT0+ITB9KToiIjt0aGlzLm1heD0iIiE9PWUubWF4P2dldEludGVnZXIoe2RhdGE6ZS5tYXgsZGVmYXVsdFZhbHVlOjEsdmFsaWRhdGU6ZT0+ITB9KToiIjt0aGlzLm1pbj0iIiE9PWUubWluP2dldEludGVnZXIoe2RhdGE6ZS5taW4sZGVmYXVsdFZhbHVlOjEsdmFsaWRhdGU6ZT0+ITB9KToiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbH1bVnNdKCl7Y29uc3QgZT10aGlzW3ByXSgpLHQ9dGhpcy5taW47IiI9PT10aGlzLm1pbiYmKHRoaXMubWluPWUgaW5zdGFuY2VvZiBQYWdlQXJlYXx8ZSBpbnN0YW5jZW9mIFBhZ2VTZXQ/MDoxKTsiIj09PXRoaXMubWF4JiYodGhpcy5tYXg9IiI9PT10P2UgaW5zdGFuY2VvZiBQYWdlQXJlYXx8ZSBpbnN0YW5jZW9mIFBhZ2VTZXQ/LTE6MTp0aGlzLm1pbik7LTEhPT10aGlzLm1heCYmdGhpcy5tYXg8dGhpcy5taW4mJih0aGlzLm1heD10aGlzLm1pbik7IiI9PT10aGlzLmluaXRpYWwmJih0aGlzLmluaXRpYWw9ZSBpbnN0YW5jZW9mIFRlbXBsYXRlPzE6dGhpcy5taW4pfX1jbGFzcyBPaWQgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoSG4sIm9pZCIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBPaWRzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEhuLCJvaWRzIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMub2lkPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgT3ZlcmZsb3cgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoSG4sIm92ZXJmbG93Iik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmxlYWRlcj1lLmxlYWRlcnx8IiI7dGhpcy50YXJnZXQ9ZS50YXJnZXR8fCIiO3RoaXMudHJhaWxlcj1lLnRyYWlsZXJ8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bbHJdKCl7aWYoIXRoaXNbYXJdKXtjb25zdCBlPXRoaXNbcHJdKCksdD10aGlzW21yXSgpLGk9dFtWcl0odGhpcy50YXJnZXQsZSksYT10W1ZyXSh0aGlzLmxlYWRlcixlKSxzPXRbVnJdKHRoaXMudHJhaWxlcixlKTt0aGlzW2FyXT17dGFyZ2V0Omk/LlswXXx8bnVsbCxsZWFkZXI6YT8uWzBdfHxudWxsLHRyYWlsZXI6cz8uWzBdfHxudWxsLGFkZExlYWRlcjohMSxhZGRUcmFpbGVyOiExfX1yZXR1cm4gdGhpc1thcl19fWNsYXNzIFBhZ2VBcmVhIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEhuLCJwYWdlQXJlYSIsITApO3RoaXMuYmxhbmtPck5vdEJsYW5rPWdldFN0cmluZ09wdGlvbihlLmJsYW5rT3JOb3RCbGFuayxbImFueSIsImJsYW5rIiwibm90QmxhbmsiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmluaXRpYWxOdW1iZXI9Z2V0SW50ZWdlcih7ZGF0YTplLmluaXRpYWxOdW1iZXIsZGVmYXVsdFZhbHVlOjEsdmFsaWRhdGU6ZT0+ITB9KTt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLm51bWJlcmVkPWdldEludGVnZXIoe2RhdGE6ZS5udW1iZXJlZCxkZWZhdWx0VmFsdWU6MSx2YWxpZGF0ZTplPT4hMH0pO3RoaXMub2RkT3JFdmVuPWdldFN0cmluZ09wdGlvbihlLm9kZE9yRXZlbixbImFueSIsImV2ZW4iLCJvZGQiXSk7dGhpcy5wYWdlUG9zaXRpb249Z2V0U3RyaW5nT3B0aW9uKGUucGFnZVBvc2l0aW9uLFsiYW55IiwiZmlyc3QiLCJsYXN0Iiwib25seSIsInJlc3QiXSk7dGhpcy5yZWxldmFudD1nZXRSZWxldmFudChlLnJlbGV2YW50KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5kZXNjPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm1lZGl1bT1udWxsO3RoaXMub2NjdXI9bnVsbDt0aGlzLmFyZWE9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuY29udGVudEFyZWE9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZHJhdz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5leGNsR3JvdXA9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZmllbGQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc3ViZm9ybT1uZXcgWEZBT2JqZWN0QXJyYXl9W0xyXSgpe2lmKCF0aGlzW2FyXSl7dGhpc1thcl09e251bWJlck9mVXNlOjB9O3JldHVybiEwfXJldHVybiF0aGlzLm9jY3VyfHwtMT09PXRoaXMub2NjdXIubWF4fHx0aGlzW2FyXS5udW1iZXJPZlVzZTx0aGlzLm9jY3VyLm1heH1benNdKCl7ZGVsZXRlIHRoaXNbYXJdfVtkcl0oKXt0aGlzW2FyXXx8KHRoaXNbYXJdPXtudW1iZXJPZlVzZTowfSk7Y29uc3QgZT10aGlzW3ByXSgpO2lmKCJvcmRlcmVkT2NjdXJyZW5jZSI9PT1lLnJlbGF0aW9uJiZ0aGlzW0xyXSgpKXt0aGlzW2FyXS5udW1iZXJPZlVzZSs9MTtyZXR1cm4gdGhpc31yZXR1cm4gZVtkcl0oKX1bZ3JdKCl7cmV0dXJuIHRoaXNbYXJdLnNwYWNlfHx7d2lkdGg6MCxoZWlnaHQ6MH19W2FuXSgpe3RoaXNbYXJdfHwodGhpc1thcl09e251bWJlck9mVXNlOjF9KTtjb25zdCBlPVtdO3RoaXNbYXJdLmNoaWxkcmVuPWU7Y29uc3QgdD1PYmplY3QuY3JlYXRlKG51bGwpO2lmKHRoaXMubWVkaXVtJiZ0aGlzLm1lZGl1bS5zaG9ydCYmdGhpcy5tZWRpdW0ubG9uZyl7dC53aWR0aD1tZWFzdXJlVG9TdHJpbmcodGhpcy5tZWRpdW0uc2hvcnQpO3QuaGVpZ2h0PW1lYXN1cmVUb1N0cmluZyh0aGlzLm1lZGl1bS5sb25nKTt0aGlzW2FyXS5zcGFjZT17d2lkdGg6dGhpcy5tZWRpdW0uc2hvcnQsaGVpZ2h0OnRoaXMubWVkaXVtLmxvbmd9O2lmKCJsYW5kc2NhcGUiPT09dGhpcy5tZWRpdW0ub3JpZW50YXRpb24pe2NvbnN0IGU9dC53aWR0aDt0LndpZHRoPXQuaGVpZ2h0O3QuaGVpZ2h0PWU7dGhpc1thcl0uc3BhY2U9e3dpZHRoOnRoaXMubWVkaXVtLmxvbmcsaGVpZ2h0OnRoaXMubWVkaXVtLnNob3J0fX19ZWxzZSB3YXJuKCJYRkEgLSBObyBtZWRpdW0gc3BlY2lmaWVkIGluIHBhZ2VBcmVhOiBwbGVhc2UgZmlsZSBhIGJ1Zy4iKTt0aGlzW1pzXSh7ZmlsdGVyOm5ldyBTZXQoWyJhcmVhIiwiZHJhdyIsImZpZWxkIiwic3ViZm9ybSJdKSxpbmNsdWRlOiEwfSk7dGhpc1tac10oe2ZpbHRlcjpuZXcgU2V0KFsiY29udGVudEFyZWEiXSksaW5jbHVkZTohMH0pO3JldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImRpdiIsY2hpbGRyZW46ZSxhdHRyaWJ1dGVzOntjbGFzczpbInhmYVBhZ2UiXSxpZDp0aGlzW25uXSxzdHlsZTp0LHhmYU5hbWU6dGhpcy5uYW1lfX0pfX1jbGFzcyBQYWdlU2V0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEhuLCJwYWdlU2V0IiwhMCk7dGhpcy5kdXBsZXhJbXBvc2l0aW9uPWdldFN0cmluZ09wdGlvbihlLmR1cGxleEltcG9zaXRpb24sWyJsb25nRWRnZSIsInNob3J0RWRnZSJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucmVsYXRpb249Z2V0U3RyaW5nT3B0aW9uKGUucmVsYXRpb24sWyJvcmRlcmVkT2NjdXJyZW5jZSIsImR1cGxleFBhZ2luYXRlZCIsInNpbXBsZXhQYWdpbmF0ZWQiXSk7dGhpcy5yZWxldmFudD1nZXRSZWxldmFudChlLnJlbGV2YW50KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm9jY3VyPW51bGw7dGhpcy5wYWdlQXJlYT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5wYWdlU2V0PW5ldyBYRkFPYmplY3RBcnJheX1benNdKCl7Zm9yKGNvbnN0IGUgb2YgdGhpcy5wYWdlQXJlYS5jaGlsZHJlbillW3pzXSgpO2Zvcihjb25zdCBlIG9mIHRoaXMucGFnZVNldC5jaGlsZHJlbillW3pzXSgpfVtMcl0oKXtyZXR1cm4hdGhpcy5vY2N1cnx8LTE9PT10aGlzLm9jY3VyLm1heHx8dGhpc1thcl0ubnVtYmVyT2ZVc2U8dGhpcy5vY2N1ci5tYXh9W2RyXSgpe3RoaXNbYXJdfHwodGhpc1thcl09e251bWJlck9mVXNlOjEscGFnZUluZGV4Oi0xLHBhZ2VTZXRJbmRleDotMX0pO2lmKCJvcmRlcmVkT2NjdXJyZW5jZSI9PT10aGlzLnJlbGF0aW9uKXtpZih0aGlzW2FyXS5wYWdlSW5kZXgrMTx0aGlzLnBhZ2VBcmVhLmNoaWxkcmVuLmxlbmd0aCl7dGhpc1thcl0ucGFnZUluZGV4Kz0xO3JldHVybiB0aGlzLnBhZ2VBcmVhLmNoaWxkcmVuW3RoaXNbYXJdLnBhZ2VJbmRleF1bZHJdKCl9aWYodGhpc1thcl0ucGFnZVNldEluZGV4KzE8dGhpcy5wYWdlU2V0LmNoaWxkcmVuLmxlbmd0aCl7dGhpc1thcl0ucGFnZVNldEluZGV4Kz0xO3JldHVybiB0aGlzLnBhZ2VTZXQuY2hpbGRyZW5bdGhpc1thcl0ucGFnZVNldEluZGV4XVtkcl0oKX1pZih0aGlzW0xyXSgpKXt0aGlzW2FyXS5udW1iZXJPZlVzZSs9MTt0aGlzW2FyXS5wYWdlSW5kZXg9LTE7dGhpc1thcl0ucGFnZVNldEluZGV4PS0xO3JldHVybiB0aGlzW2RyXSgpfWNvbnN0IGU9dGhpc1twcl0oKTtpZihlIGluc3RhbmNlb2YgUGFnZVNldClyZXR1cm4gZVtkcl0oKTt0aGlzW3pzXSgpO3JldHVybiB0aGlzW2RyXSgpfWNvbnN0IGU9dGhpc1ttcl0oKVthcl0ucGFnZU51bWJlcix0PWUlMj09MD8iZXZlbiI6Im9kZCIsaT0wPT09ZT8iZmlyc3QiOiJyZXN0IjtsZXQgYT10aGlzLnBhZ2VBcmVhLmNoaWxkcmVuLmZpbmQoKGU9PmUub2RkT3JFdmVuPT09dCYmZS5wYWdlUG9zaXRpb249PT1pKSk7aWYoYSlyZXR1cm4gYTthPXRoaXMucGFnZUFyZWEuY2hpbGRyZW4uZmluZCgoZT0+ImFueSI9PT1lLm9kZE9yRXZlbiYmZS5wYWdlUG9zaXRpb249PT1pKSk7aWYoYSlyZXR1cm4gYTthPXRoaXMucGFnZUFyZWEuY2hpbGRyZW4uZmluZCgoZT0+ImFueSI9PT1lLm9kZE9yRXZlbiYmImFueSI9PT1lLnBhZ2VQb3NpdGlvbikpO3JldHVybiBhfHx0aGlzLnBhZ2VBcmVhLmNoaWxkcmVuWzBdfX1jbGFzcyBQYXJhIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEhuLCJwYXJhIiwhMCk7dGhpcy5oQWxpZ249Z2V0U3RyaW5nT3B0aW9uKGUuaEFsaWduLFsibGVmdCIsImNlbnRlciIsImp1c3RpZnkiLCJqdXN0aWZ5QWxsIiwicmFkaXgiLCJyaWdodCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubGluZUhlaWdodD1lLmxpbmVIZWlnaHQ/Z2V0TWVhc3VyZW1lbnQoZS5saW5lSGVpZ2h0LCIwcHQiKToiIjt0aGlzLm1hcmdpbkxlZnQ9ZS5tYXJnaW5MZWZ0P2dldE1lYXN1cmVtZW50KGUubWFyZ2luTGVmdCwiMHB0Iik6IiI7dGhpcy5tYXJnaW5SaWdodD1lLm1hcmdpblJpZ2h0P2dldE1lYXN1cmVtZW50KGUubWFyZ2luUmlnaHQsIjBwdCIpOiIiO3RoaXMub3JwaGFucz1nZXRJbnRlZ2VyKHtkYXRhOmUub3JwaGFucyxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT5lPj0wfSk7dGhpcy5wcmVzZXJ2ZT1lLnByZXNlcnZlfHwiIjt0aGlzLnJhZGl4T2Zmc2V0PWUucmFkaXhPZmZzZXQ/Z2V0TWVhc3VyZW1lbnQoZS5yYWRpeE9mZnNldCwiMHB0Iik6IiI7dGhpcy5zcGFjZUFib3ZlPWUuc3BhY2VBYm92ZT9nZXRNZWFzdXJlbWVudChlLnNwYWNlQWJvdmUsIjBwdCIpOiIiO3RoaXMuc3BhY2VCZWxvdz1lLnNwYWNlQmVsb3c/Z2V0TWVhc3VyZW1lbnQoZS5zcGFjZUJlbG93LCIwcHQiKToiIjt0aGlzLnRhYkRlZmF1bHQ9ZS50YWJEZWZhdWx0P2dldE1lYXN1cmVtZW50KHRoaXMudGFiRGVmYXVsdCk6IiI7dGhpcy50YWJTdG9wcz0oZS50YWJTdG9wc3x8IiIpLnRyaW0oKS5zcGxpdCgvXHMrLykubWFwKCgoZSx0KT0+dCUyPT0xP2dldE1lYXN1cmVtZW50KGUpOmUpKTt0aGlzLnRleHRJbmRlbnQ9ZS50ZXh0SW5kZW50P2dldE1lYXN1cmVtZW50KGUudGV4dEluZGVudCwiMHB0Iik6IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMudkFsaWduPWdldFN0cmluZ09wdGlvbihlLnZBbGlnbixbInRvcCIsImJvdHRvbSIsIm1pZGRsZSJdKTt0aGlzLndpZG93cz1nZXRJbnRlZ2VyKHtkYXRhOmUud2lkb3dzLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLmh5cGhlbmF0aW9uPW51bGx9W3JuXSgpe2NvbnN0IGU9dG9TdHlsZSh0aGlzLCJoQWxpZ24iKTsiIiE9PXRoaXMubWFyZ2luTGVmdCYmKGUucGFkZGluZ0xlZnQ9bWVhc3VyZVRvU3RyaW5nKHRoaXMubWFyZ2luTGVmdCkpOyIiIT09dGhpcy5tYXJnaW5SaWdodCYmKGUucGFkZGluZ2lnaHQ9bWVhc3VyZVRvU3RyaW5nKHRoaXMubWFyZ2luUmlnaHQpKTsiIiE9PXRoaXMuc3BhY2VBYm92ZSYmKGUucGFkZGluZ1RvcD1tZWFzdXJlVG9TdHJpbmcodGhpcy5zcGFjZUFib3ZlKSk7IiIhPT10aGlzLnNwYWNlQmVsb3cmJihlLnBhZGRpbmdCb3R0b209bWVhc3VyZVRvU3RyaW5nKHRoaXMuc3BhY2VCZWxvdykpO2lmKCIiIT09dGhpcy50ZXh0SW5kZW50KXtlLnRleHRJbmRlbnQ9bWVhc3VyZVRvU3RyaW5nKHRoaXMudGV4dEluZGVudCk7Zml4VGV4dEluZGVudChlKX10aGlzLmxpbmVIZWlnaHQ+MCYmKGUubGluZUhlaWdodD1tZWFzdXJlVG9TdHJpbmcodGhpcy5saW5lSGVpZ2h0KSk7IiIhPT10aGlzLnRhYkRlZmF1bHQmJihlLnRhYlNpemU9bWVhc3VyZVRvU3RyaW5nKHRoaXMudGFiRGVmYXVsdCkpO3RoaXMudGFiU3RvcHMubGVuZ3RoO3RoaXMuaHlwaGVuYXRhdGlvbiYmT2JqZWN0LmFzc2lnbihlLHRoaXMuaHlwaGVuYXRhdGlvbltybl0oKSk7cmV0dXJuIGV9fWNsYXNzIFBhc3N3b3JkRWRpdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihIbiwicGFzc3dvcmRFZGl0IiwhMCk7dGhpcy5oU2Nyb2xsUG9saWN5PWdldFN0cmluZ09wdGlvbihlLmhTY3JvbGxQb2xpY3ksWyJhdXRvIiwib2ZmIiwib24iXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnBhc3N3b3JkQ2hhcj1lLnBhc3N3b3JkQ2hhcnx8IioiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmJvcmRlcj1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5tYXJnaW49bnVsbH19Y2xhc3MgdGVtcGxhdGVfUGF0dGVybiBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihIbiwicGF0dGVybiIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJjcm9zc0hhdGNoIiwiY3Jvc3NEaWFnb25hbCIsImRpYWdvbmFsTGVmdCIsImRpYWdvbmFsUmlnaHQiLCJob3Jpem9udGFsIiwidmVydGljYWwiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY29sb3I9bnVsbDt0aGlzLmV4dHJhcz1udWxsfVtybl0oZSl7ZT1lP2Vbcm5dKCk6IiNGRkZGRkYiO2NvbnN0IHQ9dGhpcy5jb2xvcj90aGlzLmNvbG9yW3JuXSgpOiIjMDAwMDAwIixpPSJyZXBlYXRpbmctbGluZWFyLWdyYWRpZW50IixhPWAke2V9LCR7ZX0gNXB4LCR7dH0gNXB4LCR7dH0gMTBweGA7c3dpdGNoKHRoaXMudHlwZSl7Y2FzZSJjcm9zc0hhdGNoIjpyZXR1cm5gJHtpfSh0byB0b3AsJHthfSkgJHtpfSh0byByaWdodCwke2F9KWA7Y2FzZSJjcm9zc0RpYWdvbmFsIjpyZXR1cm5gJHtpfSg0NWRlZywke2F9KSAke2l9KC00NWRlZywke2F9KWA7Y2FzZSJkaWFnb25hbExlZnQiOnJldHVybmAke2l9KDQ1ZGVnLCR7YX0pYDtjYXNlImRpYWdvbmFsUmlnaHQiOnJldHVybmAke2l9KC00NWRlZywke2F9KWA7Y2FzZSJob3Jpem9udGFsIjpyZXR1cm5gJHtpfSh0byB0b3AsJHthfSlgO2Nhc2UidmVydGljYWwiOnJldHVybmAke2l9KHRvIHJpZ2h0LCR7YX0pYH1yZXR1cm4iIn19Y2xhc3MgUGljdHVyZSBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihIbiwicGljdHVyZSIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBQcm90byBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihIbiwicHJvdG8iLCEwKTt0aGlzLmFwcGVhcmFuY2VGaWx0ZXI9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuYXJjPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmFyZWE9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuYXNzaXN0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmJhcmNvZGU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuYmluZEl0ZW1zPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmJvb2tlbmQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuYm9vbGVhbj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5ib3JkZXI9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuYnJlYWs9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuYnJlYWtBZnRlcj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5icmVha0JlZm9yZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5idXR0b249bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuY2FsY3VsYXRlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmNhcHRpb249bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuY2VydGlmaWNhdGU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuY2VydGlmaWNhdGVzPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmNoZWNrQnV0dG9uPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmNob2ljZUxpc3Q9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuY29sb3I9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuY29tYj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5jb25uZWN0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmNvbnRlbnRBcmVhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmNvcm5lcj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRhdGVUaW1lPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRhdGVUaW1lRWRpdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kZWNpbWFsPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRlZmF1bHRVaT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kZXNjPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRpZ2VzdE1ldGhvZD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kaWdlc3RNZXRob2RzPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRyYXc9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZWRnZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5lbmNvZGluZz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5lbmNvZGluZ3M9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZW5jcnlwdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5lbmNyeXB0RGF0YT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5lbmNyeXB0aW9uPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmVuY3J5cHRpb25NZXRob2Q9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZW5jcnlwdGlvbk1ldGhvZHM9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXZlbnQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXhEYXRhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV4T2JqZWN0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV4Y2xHcm91cD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5leGVjdXRlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV4dHJhcz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5maWVsZD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5maWxsPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmZpbHRlcj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5mbG9hdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5mb250PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmZvcm1hdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5oYW5kbGVyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmh5cGhlbmF0aW9uPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmltYWdlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmltYWdlRWRpdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5pbnRlZ2VyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmlzc3VlcnM9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuaXRlbXM9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMua2VlcD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5rZXlVc2FnZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5saW5lPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmxpbmVhcj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5sb2NrRG9jdW1lbnQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMubWFuaWZlc3Q9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMubWFyZ2luPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLm1kcD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5tZWRpdW09bmV3IFhGQU9iamVjdEFycmF5O3RoaXMubWVzc2FnZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5udW1lcmljRWRpdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5vY2N1cj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5vaWQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMub2lkcz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5vdmVyZmxvdz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5wYWdlQXJlYT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5wYWdlU2V0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnBhcmE9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMucGFzc3dvcmRFZGl0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnBhdHRlcm49bmV3IFhGQU9iamVjdEFycmF5O3RoaXMucGljdHVyZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5yYWRpYWw9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMucmVhc29uPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnJlYXNvbnM9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMucmVjdGFuZ2xlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnJlZj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zY3JpcHQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc2V0UHJvcGVydHk9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc2lnbkRhdGE9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc2lnbmF0dXJlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnNpZ25pbmc9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc29saWQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc3BlYWs9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc3RpcHBsZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJmb3JtPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnN1YmZvcm1TZXQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc3ViamVjdEROPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnN1YmplY3RETnM9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc3VibWl0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRleHQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudGV4dEVkaXQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudGltZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50aW1lU3RhbXA9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudG9vbFRpcD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50cmF2ZXJzYWw9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudHJhdmVyc2U9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudWk9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudmFsaWRhdGU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudmFsdWU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudmFyaWFibGVzPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgUmFkaWFsIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEhuLCJyYWRpYWwiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsidG9FZGdlIiwidG9DZW50ZXIiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY29sb3I9bnVsbDt0aGlzLmV4dHJhcz1udWxsfVtybl0oZSl7ZT1lP2Vbcm5dKCk6IiNGRkZGRkYiO2NvbnN0IHQ9dGhpcy5jb2xvcj90aGlzLmNvbG9yW3JuXSgpOiIjMDAwMDAwIjtyZXR1cm5gcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCBjZW50ZXIsICR7InRvRWRnZSI9PT10aGlzLnR5cGU/YCR7ZX0sJHt0fWA6YCR7dH0sJHtlfWB9KWB9fWNsYXNzIFJlYXNvbiBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihIbiwicmVhc29uIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFJlYXNvbnMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoSG4sInJlYXNvbnMiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5yZWFzb249bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBSZWN0YW5nbGUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoSG4sInJlY3RhbmdsZSIsITApO3RoaXMuaGFuZD1nZXRTdHJpbmdPcHRpb24oZS5oYW5kLFsiZXZlbiIsImxlZnQiLCJyaWdodCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNvcm5lcj1uZXcgWEZBT2JqZWN0QXJyYXkoNCk7dGhpcy5lZGdlPW5ldyBYRkFPYmplY3RBcnJheSg0KTt0aGlzLmZpbGw9bnVsbH1bYW5dKCl7Y29uc3QgZT10aGlzLmVkZ2UuY2hpbGRyZW4ubGVuZ3RoP3RoaXMuZWRnZS5jaGlsZHJlblswXTpuZXcgRWRnZSh7fSksdD1lW3JuXSgpLGk9T2JqZWN0LmNyZWF0ZShudWxsKTsidmlzaWJsZSI9PT10aGlzLmZpbGw/LnByZXNlbmNlP09iamVjdC5hc3NpZ24oaSx0aGlzLmZpbGxbcm5dKCkpOmkuZmlsbD0idHJhbnNwYXJlbnQiO2kuc3Ryb2tlV2lkdGg9bWVhc3VyZVRvU3RyaW5nKCJ2aXNpYmxlIj09PWUucHJlc2VuY2U/ZS50aGlja25lc3M6MCk7aS5zdHJva2U9dC5jb2xvcjtjb25zdCBhPSh0aGlzLmNvcm5lci5jaGlsZHJlbi5sZW5ndGg/dGhpcy5jb3JuZXIuY2hpbGRyZW5bMF06bmV3IENvcm5lcih7fSkpW3JuXSgpLHM9e25hbWU6InN2ZyIsY2hpbGRyZW46W3tuYW1lOiJyZWN0IixhdHRyaWJ1dGVzOnt4bWxuczpKbix3aWR0aDoiMTAwJSIsaGVpZ2h0OiIxMDAlIix4OjAseTowLHJ4OmEucmFkaXVzLHJ5OmEucmFkaXVzLHN0eWxlOml9fV0sYXR0cmlidXRlczp7eG1sbnM6Sm4sc3R5bGU6e292ZXJmbG93OiJ2aXNpYmxlIn0sd2lkdGg6IjEwMCUiLGhlaWdodDoiMTAwJSJ9fTtpZihoYXNNYXJnaW4odGhpc1twcl0oKVtwcl0oKSkpcmV0dXJuIEhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiZGl2IixhdHRyaWJ1dGVzOntzdHlsZTp7ZGlzcGxheToiaW5saW5lIix3aWR0aDoiMTAwJSIsaGVpZ2h0OiIxMDAlIn19LGNoaWxkcmVuOltzXX0pO3MuYXR0cmlidXRlcy5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiO3JldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3Mocyl9fWNsYXNzIFJlZkVsZW1lbnQgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoSG4sInJlZiIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBTY3JpcHQgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoSG4sInNjcmlwdCIpO3RoaXMuYmluZGluZz1lLmJpbmRpbmd8fCIiO3RoaXMuY29udGVudFR5cGU9ZS5jb250ZW50VHlwZXx8IiI7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnJ1bkF0PWdldFN0cmluZ09wdGlvbihlLnJ1bkF0LFsiY2xpZW50IiwiYm90aCIsInNlcnZlciJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFNldFByb3BlcnR5IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEhuLCJzZXRQcm9wZXJ0eSIpO3RoaXMuY29ubmVjdGlvbj1lLmNvbm5lY3Rpb258fCIiO3RoaXMucmVmPWUucmVmfHwiIjt0aGlzLnRhcmdldD1lLnRhcmdldHx8IiJ9fWNsYXNzIFNpZ25EYXRhIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEhuLCJzaWduRGF0YSIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5vcGVyYXRpb249Z2V0U3RyaW5nT3B0aW9uKGUub3BlcmF0aW9uLFsic2lnbiIsImNsZWFyIiwidmVyaWZ5Il0pO3RoaXMucmVmPWUucmVmfHwiIjt0aGlzLnRhcmdldD1lLnRhcmdldHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZmlsdGVyPW51bGw7dGhpcy5tYW5pZmVzdD1udWxsfX1jbGFzcyBTaWduYXR1cmUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoSG4sInNpZ25hdHVyZSIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJQREYxLjMiLCJQREYxLjYiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYm9yZGVyPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmZpbHRlcj1udWxsO3RoaXMubWFuaWZlc3Q9bnVsbDt0aGlzLm1hcmdpbj1udWxsfX1jbGFzcyBTaWduaW5nIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEhuLCJzaWduaW5nIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY2VydGlmaWNhdGU9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBTb2xpZCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihIbiwic29saWQiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsfVtybl0oZSl7cmV0dXJuIGU/ZVtybl0oKToiI0ZGRkZGRiJ9fWNsYXNzIFNwZWFrIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEhuLCJzcGVhayIpO3RoaXMuZGlzYWJsZT1nZXRJbnRlZ2VyKHtkYXRhOmUuZGlzYWJsZSxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5wcmlvcml0eT1nZXRTdHJpbmdPcHRpb24oZS5wcmlvcml0eSxbImN1c3RvbSIsImNhcHRpb24iLCJuYW1lIiwidG9vbFRpcCJdKTt0aGlzLnJpZD1lLnJpZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBTdGlwcGxlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEhuLCJzdGlwcGxlIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnJhdGU9Z2V0SW50ZWdlcih7ZGF0YTplLnJhdGUsZGVmYXVsdFZhbHVlOjUwLHZhbGlkYXRlOmU9PmU+PTAmJmU8PTEwMH0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNvbG9yPW51bGw7dGhpcy5leHRyYXM9bnVsbH1bcm5dKGUpe2NvbnN0IHQ9dGhpcy5yYXRlLzEwMDtyZXR1cm4gVXRpbC5tYWtlSGV4Q29sb3IoTWF0aC5yb3VuZChlLnZhbHVlLnIqKDEtdCkrdGhpcy52YWx1ZS5yKnQpLE1hdGgucm91bmQoZS52YWx1ZS5nKigxLXQpK3RoaXMudmFsdWUuZyp0KSxNYXRoLnJvdW5kKGUudmFsdWUuYiooMS10KSt0aGlzLnZhbHVlLmIqdCkpfX1jbGFzcyBTdWJmb3JtIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEhuLCJzdWJmb3JtIiwhMCk7dGhpcy5hY2Nlc3M9Z2V0U3RyaW5nT3B0aW9uKGUuYWNjZXNzLFsib3BlbiIsIm5vbkludGVyYWN0aXZlIiwicHJvdGVjdGVkIiwicmVhZE9ubHkiXSk7dGhpcy5hbGxvd01hY3JvPWdldEludGVnZXIoe2RhdGE6ZS5hbGxvd01hY3JvLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5hbmNob3JUeXBlPWdldFN0cmluZ09wdGlvbihlLmFuY2hvclR5cGUsWyJ0b3BMZWZ0IiwiYm90dG9tQ2VudGVyIiwiYm90dG9tTGVmdCIsImJvdHRvbVJpZ2h0IiwibWlkZGxlQ2VudGVyIiwibWlkZGxlTGVmdCIsIm1pZGRsZVJpZ2h0IiwidG9wQ2VudGVyIiwidG9wUmlnaHQiXSk7dGhpcy5jb2xTcGFuPWdldEludGVnZXIoe2RhdGE6ZS5jb2xTcGFuLGRlZmF1bHRWYWx1ZToxLHZhbGlkYXRlOmU9PmU+PTF8fC0xPT09ZX0pO3RoaXMuY29sdW1uV2lkdGhzPShlLmNvbHVtbldpZHRoc3x8IiIpLnRyaW0oKS5zcGxpdCgvXHMrLykubWFwKChlPT4iLTEiPT09ZT8tMTpnZXRNZWFzdXJlbWVudChlKSkpO3RoaXMuaD1lLmg/Z2V0TWVhc3VyZW1lbnQoZS5oKToiIjt0aGlzLmhBbGlnbj1nZXRTdHJpbmdPcHRpb24oZS5oQWxpZ24sWyJsZWZ0IiwiY2VudGVyIiwianVzdGlmeSIsImp1c3RpZnlBbGwiLCJyYWRpeCIsInJpZ2h0Il0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5sYXlvdXQ9Z2V0U3RyaW5nT3B0aW9uKGUubGF5b3V0LFsicG9zaXRpb24iLCJsci10YiIsInJsLXJvdyIsInJsLXRiIiwicm93IiwidGFibGUiLCJ0YiJdKTt0aGlzLmxvY2FsZT1lLmxvY2FsZXx8IiI7dGhpcy5tYXhIPWdldE1lYXN1cmVtZW50KGUubWF4SCwiMHB0Iik7dGhpcy5tYXhXPWdldE1lYXN1cmVtZW50KGUubWF4VywiMHB0Iik7dGhpcy5tZXJnZU1vZGU9Z2V0U3RyaW5nT3B0aW9uKGUubWVyZ2VNb2RlLFsiY29uc3VtZURhdGEiLCJtYXRjaFRlbXBsYXRlIl0pO3RoaXMubWluSD1nZXRNZWFzdXJlbWVudChlLm1pbkgsIjBwdCIpO3RoaXMubWluVz1nZXRNZWFzdXJlbWVudChlLm1pblcsIjBwdCIpO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucHJlc2VuY2U9Z2V0U3RyaW5nT3B0aW9uKGUucHJlc2VuY2UsWyJ2aXNpYmxlIiwiaGlkZGVuIiwiaW5hY3RpdmUiLCJpbnZpc2libGUiXSk7dGhpcy5yZWxldmFudD1nZXRSZWxldmFudChlLnJlbGV2YW50KTt0aGlzLnJlc3RvcmVTdGF0ZT1nZXRTdHJpbmdPcHRpb24oZS5yZXN0b3JlU3RhdGUsWyJtYW51YWwiLCJhdXRvIl0pO3RoaXMuc2NvcGU9Z2V0U3RyaW5nT3B0aW9uKGUuc2NvcGUsWyJuYW1lIiwibm9uZSJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy53PWUudz9nZXRNZWFzdXJlbWVudChlLncpOiIiO3RoaXMueD1nZXRNZWFzdXJlbWVudChlLngsIjBwdCIpO3RoaXMueT1nZXRNZWFzdXJlbWVudChlLnksIjBwdCIpO3RoaXMuYXNzaXN0PW51bGw7dGhpcy5iaW5kPW51bGw7dGhpcy5ib29rZW5kPW51bGw7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmJyZWFrPW51bGw7dGhpcy5jYWxjdWxhdGU9bnVsbDt0aGlzLmRlc2M9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMua2VlcD1udWxsO3RoaXMubWFyZ2luPW51bGw7dGhpcy5vY2N1cj1udWxsO3RoaXMub3ZlcmZsb3c9bnVsbDt0aGlzLnBhZ2VTZXQ9bnVsbDt0aGlzLnBhcmE9bnVsbDt0aGlzLnRyYXZlcnNhbD1udWxsO3RoaXMudmFsaWRhdGU9bnVsbDt0aGlzLnZhcmlhYmxlcz1udWxsO3RoaXMuYXJlYT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5icmVha0FmdGVyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmJyZWFrQmVmb3JlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmNvbm5lY3Q9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZHJhdz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5ldmVudD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5leE9iamVjdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5leGNsR3JvdXA9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZmllbGQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMucHJvdG89bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc2V0UHJvcGVydHk9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc3ViZm9ybT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJmb3JtU2V0PW5ldyBYRkFPYmplY3RBcnJheX1bZnJdKCl7Y29uc3QgZT10aGlzW3ByXSgpO3JldHVybiBlIGluc3RhbmNlb2YgU3ViZm9ybVNldD9lW2ZyXSgpOmV9W2tyXSgpe3JldHVybiEwfVtVcl0oKXtyZXR1cm4gdGhpcy5sYXlvdXQuZW5kc1dpdGgoIi10YiIpJiYwPT09dGhpc1thcl0uYXR0ZW1wdCYmdGhpc1thcl0ubnVtYmVySW5MaW5lPjB8fHRoaXNbcHJdKClbVXJdKCl9Klt1cl0oKXt5aWVsZCpnZXRDb250YWluZWRDaGlsZHJlbih0aGlzKX1bcnJdKCl7cmV0dXJuIGZsdXNoSFRNTCh0aGlzKX1banNdKGUsdCl7YWRkSFRNTCh0aGlzLGUsdCl9W2dyXSgpe3JldHVybiBnZXRBdmFpbGFibGVTcGFjZSh0aGlzKX1beHJdKCl7Y29uc3QgZT10aGlzW2ZyXSgpO2lmKCFlW3hyXSgpKXJldHVybiExO2lmKHZvaWQgMCE9PXRoaXNbYXJdLl9pc1NwbGl0dGFibGUpcmV0dXJuIHRoaXNbYXJdLl9pc1NwbGl0dGFibGU7aWYoInBvc2l0aW9uIj09PXRoaXMubGF5b3V0fHx0aGlzLmxheW91dC5pbmNsdWRlcygicm93Iikpe3RoaXNbYXJdLl9pc1NwbGl0dGFibGU9ITE7cmV0dXJuITF9aWYodGhpcy5rZWVwJiYibm9uZSIhPT10aGlzLmtlZXAuaW50YWN0KXt0aGlzW2FyXS5faXNTcGxpdHRhYmxlPSExO3JldHVybiExfWlmKGUubGF5b3V0Py5lbmRzV2l0aCgiLXRiIikmJjAhPT1lW2FyXS5udW1iZXJJbkxpbmUpcmV0dXJuITE7dGhpc1thcl0uX2lzU3BsaXR0YWJsZT0hMDtyZXR1cm4hMH1bYW5dKGUpe3NldFRhYkluZGV4KHRoaXMpO2lmKHRoaXMuYnJlYWspe2lmKCJhdXRvIiE9PXRoaXMuYnJlYWsuYWZ0ZXJ8fCIiIT09dGhpcy5icmVhay5hZnRlclRhcmdldCl7Y29uc3QgZT1uZXcgQnJlYWtBZnRlcih7dGFyZ2V0VHlwZTp0aGlzLmJyZWFrLmFmdGVyLHRhcmdldDp0aGlzLmJyZWFrLmFmdGVyVGFyZ2V0LHN0YXJ0TmV3OnRoaXMuYnJlYWsuc3RhcnROZXcudG9TdHJpbmcoKX0pO2VbeXJdPXRoaXNbeXJdO3RoaXNbWHNdKGUpO3RoaXMuYnJlYWtBZnRlci5wdXNoKGUpfWlmKCJhdXRvIiE9PXRoaXMuYnJlYWsuYmVmb3JlfHwiIiE9PXRoaXMuYnJlYWsuYmVmb3JlVGFyZ2V0KXtjb25zdCBlPW5ldyBCcmVha0JlZm9yZSh7dGFyZ2V0VHlwZTp0aGlzLmJyZWFrLmJlZm9yZSx0YXJnZXQ6dGhpcy5icmVhay5iZWZvcmVUYXJnZXQsc3RhcnROZXc6dGhpcy5icmVhay5zdGFydE5ldy50b1N0cmluZygpfSk7ZVt5cl09dGhpc1t5cl07dGhpc1tYc10oZSk7dGhpcy5icmVha0JlZm9yZS5wdXNoKGUpfWlmKCIiIT09dGhpcy5icmVhay5vdmVyZmxvd1RhcmdldCl7Y29uc3QgZT1uZXcgT3ZlcmZsb3coe3RhcmdldDp0aGlzLmJyZWFrLm92ZXJmbG93VGFyZ2V0LGxlYWRlcjp0aGlzLmJyZWFrLm92ZXJmbG93TGVhZGVyLHRyYWlsZXI6dGhpcy5icmVhay5vdmVyZmxvd1RyYWlsZXJ9KTtlW3lyXT10aGlzW3lyXTt0aGlzW1hzXShlKTt0aGlzLm92ZXJmbG93LnB1c2goZSl9dGhpc1tqcl0odGhpcy5icmVhayk7dGhpcy5icmVhaz1udWxsfWlmKCJoaWRkZW4iPT09dGhpcy5wcmVzZW5jZXx8ImluYWN0aXZlIj09PXRoaXMucHJlc2VuY2UpcmV0dXJuIEhUTUxSZXN1bHQuRU1QVFk7KHRoaXMuYnJlYWtCZWZvcmUuY2hpbGRyZW4ubGVuZ3RoPjF8fHRoaXMuYnJlYWtBZnRlci5jaGlsZHJlbi5sZW5ndGg+MSkmJndhcm4oIlhGQSAtIFNldmVyYWwgYnJlYWtCZWZvcmUgb3IgYnJlYWtBZnRlciBpbiBzdWJmb3JtczogcGxlYXNlIGZpbGUgYSBidWcuIik7aWYodGhpcy5icmVha0JlZm9yZS5jaGlsZHJlbi5sZW5ndGg+PTEpe2NvbnN0IGU9dGhpcy5icmVha0JlZm9yZS5jaGlsZHJlblswXTtpZihoYW5kbGVCcmVhayhlKSlyZXR1cm4gSFRNTFJlc3VsdC5icmVha05vZGUoZSl9aWYodGhpc1thcl0/LmFmdGVyQnJlYWtBZnRlcilyZXR1cm4gSFRNTFJlc3VsdC5FTVBUWTtmaXhEaW1lbnNpb25zKHRoaXMpO2NvbnN0IHQ9W10saT17aWQ6dGhpc1tubl0sY2xhc3M6W119O3NldEFjY2Vzcyh0aGlzLGkuY2xhc3MpO3RoaXNbYXJdfHwodGhpc1thcl09T2JqZWN0LmNyZWF0ZShudWxsKSk7T2JqZWN0LmFzc2lnbih0aGlzW2FyXSx7Y2hpbGRyZW46dCxsaW5lOm51bGwsYXR0cmlidXRlczppLGF0dGVtcHQ6MCxudW1iZXJJbkxpbmU6MCxhdmFpbGFibGVTcGFjZTp7d2lkdGg6TWF0aC5taW4odGhpcy53fHwxLzAsZS53aWR0aCksaGVpZ2h0Ok1hdGgubWluKHRoaXMuaHx8MS8wLGUuaGVpZ2h0KX0sd2lkdGg6MCxoZWlnaHQ6MCxwcmV2SGVpZ2h0OjAsY3VycmVudFdpZHRoOjB9KTtjb25zdCBhPXRoaXNbbXJdKCkscz1hW2FyXS5ub0xheW91dEZhaWx1cmUscj10aGlzW3hyXSgpO3J8fHNldEZpcnN0VW5zcGxpdHRhYmxlKHRoaXMpO2lmKCFjaGVja0RpbWVuc2lvbnModGhpcyxlKSlyZXR1cm4gSFRNTFJlc3VsdC5GQUlMVVJFO2NvbnN0IG49bmV3IFNldChbImFyZWEiLCJkcmF3IiwiZXhjbEdyb3VwIiwiZmllbGQiLCJzdWJmb3JtIiwic3ViZm9ybVNldCJdKTtpZih0aGlzLmxheW91dC5pbmNsdWRlcygicm93Iikpe2NvbnN0IGU9dGhpc1tmcl0oKS5jb2x1bW5XaWR0aHM7aWYoQXJyYXkuaXNBcnJheShlKSYmZS5sZW5ndGg+MCl7dGhpc1thcl0uY29sdW1uV2lkdGhzPWU7dGhpc1thcl0uY3VycmVudENvbHVtbj0wfX1jb25zdCBvPXRvU3R5bGUodGhpcywiYW5jaG9yVHlwZSIsImRpbWVuc2lvbnMiLCJwb3NpdGlvbiIsInByZXNlbmNlIiwiYm9yZGVyIiwibWFyZ2luIiwiaEFsaWduIiksZz1bInhmYVN1YmZvcm0iXSxjPWxheW91dENsYXNzKHRoaXMpO2MmJmcucHVzaChjKTtpLnN0eWxlPW87aS5jbGFzcz1nO3RoaXMubmFtZSYmKGkueGZhTmFtZT10aGlzLm5hbWUpO2lmKHRoaXMub3ZlcmZsb3cpe2NvbnN0IHQ9dGhpcy5vdmVyZmxvd1tscl0oKTtpZih0LmFkZExlYWRlcil7dC5hZGRMZWFkZXI9ITE7aGFuZGxlT3ZlcmZsb3codGhpcyx0LmxlYWRlcixlKX19dGhpc1tXcl0oKTtjb25zdCBDPSJsci10YiI9PT10aGlzLmxheW91dHx8InJsLXRiIj09PXRoaXMubGF5b3V0LGg9Qz8yOjE7Zm9yKDt0aGlzW2FyXS5hdHRlbXB0PGg7dGhpc1thcl0uYXR0ZW1wdCsrKXtDJiYxPT09dGhpc1thcl0uYXR0ZW1wdCYmKHRoaXNbYXJdLm51bWJlckluTGluZT0wKTtjb25zdCBlPXRoaXNbWnNdKHtmaWx0ZXI6bixpbmNsdWRlOiEwfSk7aWYoZS5zdWNjZXNzKWJyZWFrO2lmKGUuaXNCcmVhaygpKXt0aGlzW1ByXSgpO3JldHVybiBlfWlmKEMmJjA9PT10aGlzW2FyXS5hdHRlbXB0JiYwPT09dGhpc1thcl0ubnVtYmVySW5MaW5lJiYhYVthcl0ubm9MYXlvdXRGYWlsdXJlKXt0aGlzW2FyXS5hdHRlbXB0PWg7YnJlYWt9fXRoaXNbUHJdKCk7cnx8dW5zZXRGaXJzdFVuc3BsaXR0YWJsZSh0aGlzKTthW2FyXS5ub0xheW91dEZhaWx1cmU9cztpZih0aGlzW2FyXS5hdHRlbXB0PT09aCl7dGhpcy5vdmVyZmxvdyYmKHRoaXNbbXJdKClbYXJdLm92ZXJmbG93Tm9kZT10aGlzLm92ZXJmbG93KTtyfHxkZWxldGUgdGhpc1thcl07cmV0dXJuIEhUTUxSZXN1bHQuRkFJTFVSRX1pZih0aGlzLm92ZXJmbG93KXtjb25zdCB0PXRoaXMub3ZlcmZsb3dbbHJdKCk7aWYodC5hZGRUcmFpbGVyKXt0LmFkZFRyYWlsZXI9ITE7aGFuZGxlT3ZlcmZsb3codGhpcyx0LnRyYWlsZXIsZSl9fWxldCBsPTAsUT0wO2lmKHRoaXMubWFyZ2luKXtsPXRoaXMubWFyZ2luLmxlZnRJbnNldCt0aGlzLm1hcmdpbi5yaWdodEluc2V0O1E9dGhpcy5tYXJnaW4udG9wSW5zZXQrdGhpcy5tYXJnaW4uYm90dG9tSW5zZXR9Y29uc3QgRT1NYXRoLm1heCh0aGlzW2FyXS53aWR0aCtsLHRoaXMud3x8MCksdT1NYXRoLm1heCh0aGlzW2FyXS5oZWlnaHQrUSx0aGlzLmh8fDApLGQ9W3RoaXMueCx0aGlzLnksRSx1XTsiIj09PXRoaXMudyYmKG8ud2lkdGg9bWVhc3VyZVRvU3RyaW5nKEUpKTsiIj09PXRoaXMuaCYmKG8uaGVpZ2h0PW1lYXN1cmVUb1N0cmluZyh1KSk7aWYoKCIwcHgiPT09by53aWR0aHx8IjBweCI9PT1vLmhlaWdodCkmJjA9PT10Lmxlbmd0aClyZXR1cm4gSFRNTFJlc3VsdC5FTVBUWTtjb25zdCBmPXtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6aSxjaGlsZHJlbjp0fTthcHBseUFzc2lzdCh0aGlzLGkpO2NvbnN0IHA9SFRNTFJlc3VsdC5zdWNjZXNzKGNyZWF0ZVdyYXBwZXIodGhpcyxmKSxkKTtpZih0aGlzLmJyZWFrQWZ0ZXIuY2hpbGRyZW4ubGVuZ3RoPj0xKXtjb25zdCBlPXRoaXMuYnJlYWtBZnRlci5jaGlsZHJlblswXTtpZihoYW5kbGVCcmVhayhlKSl7dGhpc1thcl0uYWZ0ZXJCcmVha0FmdGVyPXA7cmV0dXJuIEhUTUxSZXN1bHQuYnJlYWtOb2RlKGUpfX1kZWxldGUgdGhpc1thcl07cmV0dXJuIHB9fWNsYXNzIFN1YmZvcm1TZXQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoSG4sInN1YmZvcm1TZXQiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucmVsYXRpb249Z2V0U3RyaW5nT3B0aW9uKGUucmVsYXRpb24sWyJvcmRlcmVkIiwiY2hvaWNlIiwidW5vcmRlcmVkIl0pO3RoaXMucmVsZXZhbnQ9Z2V0UmVsZXZhbnQoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYm9va2VuZD1udWxsO3RoaXMuYnJlYWs9bnVsbDt0aGlzLmRlc2M9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMub2NjdXI9bnVsbDt0aGlzLm92ZXJmbG93PW51bGw7dGhpcy5icmVha0FmdGVyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmJyZWFrQmVmb3JlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnN1YmZvcm09bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc3ViZm9ybVNldD1uZXcgWEZBT2JqZWN0QXJyYXl9Klt1cl0oKXt5aWVsZCpnZXRDb250YWluZWRDaGlsZHJlbih0aGlzKX1bZnJdKCl7bGV0IGU9dGhpc1twcl0oKTtmb3IoOyEoZSBpbnN0YW5jZW9mIFN1YmZvcm0pOyllPWVbcHJdKCk7cmV0dXJuIGV9W2tyXSgpe3JldHVybiEwfX1jbGFzcyBTdWJqZWN0RE4gZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEhuLCJzdWJqZWN0RE4iKTt0aGlzLmRlbGltaXRlcj1lLmRlbGltaXRlcnx8IiwiO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVtzcl0oKXt0aGlzW2VyXT1uZXcgTWFwKHRoaXNbZXJdLnNwbGl0KHRoaXMuZGVsaW1pdGVyKS5tYXAoKGU9PnsoZT1lLnNwbGl0KCI9IiwyKSlbMF09ZVswXS50cmltKCk7cmV0dXJuIGV9KSkpfX1jbGFzcyBTdWJqZWN0RE5zIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEhuLCJzdWJqZWN0RE5zIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuc3ViamVjdEROPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgU3VibWl0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEhuLCJzdWJtaXQiLCEwKTt0aGlzLmVtYmVkUERGPWdldEludGVnZXIoe2RhdGE6ZS5lbWJlZFBERixkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMuZm9ybWF0PWdldFN0cmluZ09wdGlvbihlLmZvcm1hdCxbInhkcCIsImZvcm1kYXRhIiwicGRmIiwidXJsZW5jb2RlZCIsInhmZCIsInhtbCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudGFyZ2V0PWUudGFyZ2V0fHwiIjt0aGlzLnRleHRFbmNvZGluZz1nZXRLZXl3b3JkKHtkYXRhOmUudGV4dEVuY29kaW5nP2UudGV4dEVuY29kaW5nLnRvTG93ZXJDYXNlKCk6IiIsZGVmYXVsdFZhbHVlOiIiLHZhbGlkYXRlOmU9PlsidXRmLTgiLCJiaWctZml2ZSIsImZvbnRzcGVjaWZpYyIsImdiayIsImdiLTE4MDMwIiwiZ2ItMjMxMiIsImtzYy01NjAxIiwibm9uZSIsInNoaWZ0LWppcyIsInVjcy0yIiwidXRmLTE2Il0uaW5jbHVkZXMoZSl8fGUubWF0Y2goL2lzby04ODU5LVxkezJ9Lyl9KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy54ZHBDb250ZW50PWUueGRwQ29udGVudHx8IiI7dGhpcy5lbmNyeXB0PW51bGw7dGhpcy5lbmNyeXB0RGF0YT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zaWduRGF0YT1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIFRlbXBsYXRlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEhuLCJ0ZW1wbGF0ZSIsITApO3RoaXMuYmFzZVByb2ZpbGU9Z2V0U3RyaW5nT3B0aW9uKGUuYmFzZVByb2ZpbGUsWyJmdWxsIiwiaW50ZXJhY3RpdmVGb3JtcyJdKTt0aGlzLmV4dHJhcz1udWxsO3RoaXMuc3ViZm9ybT1uZXcgWEZBT2JqZWN0QXJyYXl9W3NyXSgpezA9PT10aGlzLnN1YmZvcm0uY2hpbGRyZW4ubGVuZ3RoJiZ3YXJuKCJYRkEgLSBObyBzdWJmb3JtcyBpbiB0ZW1wbGF0ZSBub2RlLiIpO3RoaXMuc3ViZm9ybS5jaGlsZHJlbi5sZW5ndGg+PTImJndhcm4oIlhGQSAtIFNldmVyYWwgc3ViZm9ybXMgaW4gdGVtcGxhdGUgbm9kZTogcGxlYXNlIGZpbGUgYSBidWcuIik7dGhpc1tBbl09NWUzfVt4cl0oKXtyZXR1cm4hMH1bVnJdKGUsdCl7cmV0dXJuIGUuc3RhcnRzV2l0aCgiIyIpP1t0aGlzW2JyXS5nZXQoZS5zbGljZSgxKSldOnNlYXJjaE5vZGUodGhpcyx0LGUsITAsITApfSpbdG5dKCl7aWYoIXRoaXMuc3ViZm9ybS5jaGlsZHJlbi5sZW5ndGgpcmV0dXJuIEhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiZGl2IixjaGlsZHJlbjpbXX0pO3RoaXNbYXJdPXtvdmVyZmxvd05vZGU6bnVsbCxmaXJzdFVuc3BsaXR0YWJsZTpudWxsLGN1cnJlbnRDb250ZW50QXJlYTpudWxsLGN1cnJlbnRQYWdlQXJlYTpudWxsLG5vTGF5b3V0RmFpbHVyZTohMSxwYWdlTnVtYmVyOjEscGFnZVBvc2l0aW9uOiJmaXJzdCIsb2RkT3JFdmVuOiJvZGQiLGJsYW5rT3JOb3RCbGFuazoibm9uQmxhbmsiLHBhcmFTdGFjazpbXX07Y29uc3QgZT10aGlzLnN1YmZvcm0uY2hpbGRyZW5bMF07ZS5wYWdlU2V0W3pzXSgpO2NvbnN0IHQ9ZS5wYWdlU2V0LnBhZ2VBcmVhLmNoaWxkcmVuLGk9e25hbWU6ImRpdiIsY2hpbGRyZW46W119O2xldCBhPW51bGwscz1udWxsLHI9bnVsbDtpZihlLmJyZWFrQmVmb3JlLmNoaWxkcmVuLmxlbmd0aD49MSl7cz1lLmJyZWFrQmVmb3JlLmNoaWxkcmVuWzBdO3I9cy50YXJnZXR9ZWxzZSBpZihlLnN1YmZvcm0uY2hpbGRyZW4ubGVuZ3RoPj0xJiZlLnN1YmZvcm0uY2hpbGRyZW5bMF0uYnJlYWtCZWZvcmUuY2hpbGRyZW4ubGVuZ3RoPj0xKXtzPWUuc3ViZm9ybS5jaGlsZHJlblswXS5icmVha0JlZm9yZS5jaGlsZHJlblswXTtyPXMudGFyZ2V0fWVsc2UgaWYoZS5icmVhaz8uYmVmb3JlVGFyZ2V0KXtzPWUuYnJlYWs7cj1zLmJlZm9yZVRhcmdldH1lbHNlIGlmKGUuc3ViZm9ybS5jaGlsZHJlbi5sZW5ndGg+PTEmJmUuc3ViZm9ybS5jaGlsZHJlblswXS5icmVhaz8uYmVmb3JlVGFyZ2V0KXtzPWUuc3ViZm9ybS5jaGlsZHJlblswXS5icmVhaztyPXMuYmVmb3JlVGFyZ2V0fWlmKHMpe2NvbnN0IGU9dGhpc1tWcl0ocixzW3ByXSgpKTtpZihlIGluc3RhbmNlb2YgUGFnZUFyZWEpe2E9ZTtzW2FyXT17fX19YXx8KGE9dFswXSk7YVthcl09e251bWJlck9mVXNlOjF9O2NvbnN0IG49YVtwcl0oKTtuW2FyXT17bnVtYmVyT2ZVc2U6MSxwYWdlSW5kZXg6bi5wYWdlQXJlYS5jaGlsZHJlbi5pbmRleE9mKGEpLHBhZ2VTZXRJbmRleDowfTtsZXQgbyxnPW51bGwsYz1udWxsLEM9ITAsaD0wLGw9MDtmb3IoOzspe2lmKEMpaD0wO2Vsc2V7aS5jaGlsZHJlbi5wb3AoKTtpZigzPT0rK2gpe3dhcm4oIlhGQSAtIFNvbWV0aGluZyBnb2VzIHdyb25nOiBwbGVhc2UgZmlsZSBhIGJ1Zy4iKTtyZXR1cm4gaX19bz1udWxsO3RoaXNbYXJdLmN1cnJlbnRQYWdlQXJlYT1hO2NvbnN0IHQ9YVthbl0oKS5odG1sO2kuY2hpbGRyZW4ucHVzaCh0KTtpZihnKXt0aGlzW2FyXS5ub0xheW91dEZhaWx1cmU9ITA7dC5jaGlsZHJlbi5wdXNoKGdbYW5dKGFbYXJdLnNwYWNlKS5odG1sKTtnPW51bGx9aWYoYyl7dGhpc1thcl0ubm9MYXlvdXRGYWlsdXJlPSEwO3QuY2hpbGRyZW4ucHVzaChjW2FuXShhW2FyXS5zcGFjZSkuaHRtbCk7Yz1udWxsfWNvbnN0IHM9YS5jb250ZW50QXJlYS5jaGlsZHJlbixyPXQuY2hpbGRyZW4uZmlsdGVyKChlPT5lLmF0dHJpYnV0ZXMuY2xhc3MuaW5jbHVkZXMoInhmYUNvbnRlbnRhcmVhIikpKTtDPSExO3RoaXNbYXJdLmZpcnN0VW5zcGxpdHRhYmxlPW51bGw7dGhpc1thcl0ubm9MYXlvdXRGYWlsdXJlPSExO2NvbnN0IGZsdXNoPXQ9Pntjb25zdCBpPWVbcnJdKCk7aWYoaSl7Q3x8PWkuY2hpbGRyZW4/Lmxlbmd0aD4wO3JbdF0uY2hpbGRyZW4ucHVzaChpKX19O2ZvcihsZXQgdD1sLGE9cy5sZW5ndGg7dDxhO3QrKyl7Y29uc3QgYT10aGlzW2FyXS5jdXJyZW50Q29udGVudEFyZWE9c1t0XSxuPXt3aWR0aDphLncsaGVpZ2h0OmEuaH07bD0wO2lmKGcpe3JbdF0uY2hpbGRyZW4ucHVzaChnW2FuXShuKS5odG1sKTtnPW51bGx9aWYoYyl7clt0XS5jaGlsZHJlbi5wdXNoKGNbYW5dKG4pLmh0bWwpO2M9bnVsbH1jb25zdCBoPWVbYW5dKG4pO2lmKGguc3VjY2Vzcyl7aWYoaC5odG1sKXtDfHw9aC5odG1sLmNoaWxkcmVuPy5sZW5ndGg+MDtyW3RdLmNoaWxkcmVuLnB1c2goaC5odG1sKX1lbHNlIUMmJmkuY2hpbGRyZW4ubGVuZ3RoPjEmJmkuY2hpbGRyZW4ucG9wKCk7cmV0dXJuIGl9aWYoaC5pc0JyZWFrKCkpe2NvbnN0IGU9aC5icmVha05vZGU7Zmx1c2godCk7aWYoImF1dG8iPT09ZS50YXJnZXRUeXBlKWNvbnRpbnVlO2lmKGUubGVhZGVyKXtnPXRoaXNbVnJdKGUubGVhZGVyLGVbcHJdKCkpO2c9Zz9nWzBdOm51bGx9aWYoZS50cmFpbGVyKXtjPXRoaXNbVnJdKGUudHJhaWxlcixlW3ByXSgpKTtjPWM/Y1swXTpudWxsfWlmKCJwYWdlQXJlYSI9PT1lLnRhcmdldFR5cGUpe289ZVthcl0udGFyZ2V0O3Q9MS8wfWVsc2UgaWYoZVthcl0udGFyZ2V0KXtvPWVbYXJdLnRhcmdldDtsPWVbYXJdLmluZGV4KzE7dD0xLzB9ZWxzZSB0PWVbYXJdLmluZGV4fWVsc2UgaWYodGhpc1thcl0ub3ZlcmZsb3dOb2RlKXtjb25zdCBlPXRoaXNbYXJdLm92ZXJmbG93Tm9kZTt0aGlzW2FyXS5vdmVyZmxvd05vZGU9bnVsbDtjb25zdCBpPWVbbHJdKCksYT1pLnRhcmdldDtpLmFkZExlYWRlcj1udWxsIT09aS5sZWFkZXI7aS5hZGRUcmFpbGVyPW51bGwhPT1pLnRyYWlsZXI7Zmx1c2godCk7Y29uc3Qgcj10O3Q9MS8wO2lmKGEgaW5zdGFuY2VvZiBQYWdlQXJlYSlvPWE7ZWxzZSBpZihhIGluc3RhbmNlb2YgQ29udGVudEFyZWEpe2NvbnN0IGU9cy5pbmRleE9mKGEpO2lmKC0xIT09ZSllPnI/dD1lLTE6bD1lO2Vsc2V7bz1hW3ByXSgpO2w9by5jb250ZW50QXJlYS5jaGlsZHJlbi5pbmRleE9mKGEpfX19ZWxzZSBmbHVzaCh0KX10aGlzW2FyXS5wYWdlTnVtYmVyKz0xO28mJihvW0xyXSgpP29bYXJdLm51bWJlck9mVXNlKz0xOm89bnVsbCk7YT1vfHxhW2RyXSgpO3lpZWxkIG51bGx9fX1jbGFzcyBUZXh0IGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihIbiwidGV4dCIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5tYXhDaGFycz1nZXRJbnRlZ2VyKHtkYXRhOmUubWF4Q2hhcnMsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+ZT49MH0pO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucmlkPWUucmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W1dzXSgpe3JldHVybiEwfVtLcl0oZSl7aWYoZVtKcl09PT1nbi54aHRtbC5pZCl7dGhpc1tlcl09ZTtyZXR1cm4hMH13YXJuKGBYRkEgLSBJbnZhbGlkIGNvbnRlbnQgaW4gVGV4dDogJHtlW1lyXX0uYCk7cmV0dXJuITF9W3FyXShlKXt0aGlzW2VyXWluc3RhbmNlb2YgWEZBT2JqZWN0fHxzdXBlcltxcl0oZSl9W3NyXSgpeyJzdHJpbmciPT10eXBlb2YgdGhpc1tlcl0mJih0aGlzW2VyXT10aGlzW2VyXS5yZXBsYWNlQWxsKCJcclxuIiwiXG4iKSl9W2xyXSgpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdGhpc1tlcl0/dGhpc1tlcl0uc3BsaXQoL1tcdTIwMjlcdTIwMjhcbl0vKS5yZWR1Y2UoKChlLHQpPT57dCYmZS5wdXNoKHQpO3JldHVybiBlfSksW10pLmpvaW4oIlxuIik6dGhpc1tlcl1bZW5dKCl9W2FuXShlKXtpZigic3RyaW5nIj09dHlwZW9mIHRoaXNbZXJdKXtjb25zdCBlPXZhbHVlVG9IdG1sKHRoaXNbZXJdKS5odG1sO2lmKHRoaXNbZXJdLmluY2x1ZGVzKCJcdTIwMjkiKSl7ZS5uYW1lPSJkaXYiO2UuY2hpbGRyZW49W107dGhpc1tlcl0uc3BsaXQoIlx1MjAyOSIpLm1hcCgoZT0+ZS5zcGxpdCgvW1x1MjAyOFxuXS8pLnJlZHVjZSgoKGUsdCk9PntlLnB1c2goe25hbWU6InNwYW4iLHZhbHVlOnR9LHtuYW1lOiJiciJ9KTtyZXR1cm4gZX0pLFtdKSkpLmZvckVhY2goKHQ9PntlLmNoaWxkcmVuLnB1c2goe25hbWU6InAiLGNoaWxkcmVuOnR9KX0pKX1lbHNlIGlmKC9bXHUyMDI4XG5dLy50ZXN0KHRoaXNbZXJdKSl7ZS5uYW1lPSJkaXYiO2UuY2hpbGRyZW49W107dGhpc1tlcl0uc3BsaXQoL1tcdTIwMjhcbl0vKS5mb3JFYWNoKCh0PT57ZS5jaGlsZHJlbi5wdXNoKHtuYW1lOiJzcGFuIix2YWx1ZTp0fSx7bmFtZToiYnIifSl9KSl9cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2VzcyhlKX1yZXR1cm4gdGhpc1tlcl1bYW5dKGUpfX1jbGFzcyBUZXh0RWRpdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihIbiwidGV4dEVkaXQiLCEwKTt0aGlzLmFsbG93UmljaFRleHQ9Z2V0SW50ZWdlcih7ZGF0YTplLmFsbG93UmljaFRleHQsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLmhTY3JvbGxQb2xpY3k9Z2V0U3RyaW5nT3B0aW9uKGUuaFNjcm9sbFBvbGljeSxbImF1dG8iLCJvZmYiLCJvbiJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubXVsdGlMaW5lPWdldEludGVnZXIoe2RhdGE6ZS5tdWx0aUxpbmUsZGVmYXVsdFZhbHVlOiIiLHZhbGlkYXRlOmU9PjA9PT1lfHwxPT09ZX0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnZTY3JvbGxQb2xpY3k9Z2V0U3RyaW5nT3B0aW9uKGUudlNjcm9sbFBvbGljeSxbImF1dG8iLCJvZmYiLCJvbiJdKTt0aGlzLmJvcmRlcj1udWxsO3RoaXMuY29tYj1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5tYXJnaW49bnVsbH1bYW5dKGUpe2NvbnN0IHQ9dG9TdHlsZSh0aGlzLCJib3JkZXIiLCJmb250IiwibWFyZ2luIik7bGV0IGk7Y29uc3QgYT10aGlzW3ByXSgpW3ByXSgpOyIiPT09dGhpcy5tdWx0aUxpbmUmJih0aGlzLm11bHRpTGluZT1hIGluc3RhbmNlb2YgRHJhdz8xOjApO2k9MT09PXRoaXMubXVsdGlMaW5lP3tuYW1lOiJ0ZXh0YXJlYSIsYXR0cmlidXRlczp7ZGF0YUlkOmFbdHJdPy5bbm5dfHxhW25uXSxmaWVsZElkOmFbbm5dLGNsYXNzOlsieGZhVGV4dGZpZWxkIl0sc3R5bGU6dCwiYXJpYS1sYWJlbCI6YXJpYUxhYmVsKGEpLCJhcmlhLXJlcXVpcmVkIjohMX19OntuYW1lOiJpbnB1dCIsYXR0cmlidXRlczp7dHlwZToidGV4dCIsZGF0YUlkOmFbdHJdPy5bbm5dfHxhW25uXSxmaWVsZElkOmFbbm5dLGNsYXNzOlsieGZhVGV4dGZpZWxkIl0sc3R5bGU6dCwiYXJpYS1sYWJlbCI6YXJpYUxhYmVsKGEpLCJhcmlhLXJlcXVpcmVkIjohMX19O2lmKGlzUmVxdWlyZWQoYSkpe2kuYXR0cmlidXRlc1siYXJpYS1yZXF1aXJlZCJdPSEwO2kuYXR0cmlidXRlcy5yZXF1aXJlZD0hMH1yZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJsYWJlbCIsYXR0cmlidXRlczp7Y2xhc3M6WyJ4ZmFMYWJlbCJdfSxjaGlsZHJlbjpbaV19KX19Y2xhc3MgVGltZSBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihIbiwidGltZSIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVtzcl0oKXtjb25zdCBlPXRoaXNbZXJdLnRyaW0oKTt0aGlzW2VyXT1lP25ldyBEYXRlKGUpOm51bGx9W2FuXShlKXtyZXR1cm4gdmFsdWVUb0h0bWwodGhpc1tlcl0/dGhpc1tlcl0udG9TdHJpbmcoKToiIil9fWNsYXNzIFRpbWVTdGFtcCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihIbiwidGltZVN0YW1wIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnNlcnZlcj1lLnNlcnZlcnx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgVG9vbFRpcCBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihIbiwidG9vbFRpcCIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5yaWQ9ZS5yaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgVHJhdmVyc2FsIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEhuLCJ0cmF2ZXJzYWwiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsO3RoaXMudHJhdmVyc2U9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBUcmF2ZXJzZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihIbiwidHJhdmVyc2UiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMub3BlcmF0aW9uPWdldFN0cmluZ09wdGlvbihlLm9wZXJhdGlvbixbIm5leHQiLCJiYWNrIiwiZG93biIsImZpcnN0IiwibGVmdCIsInJpZ2h0IiwidXAiXSk7dGhpcy5yZWY9ZS5yZWZ8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsO3RoaXMuc2NyaXB0PW51bGx9Z2V0IG5hbWUoKXtyZXR1cm4gdGhpcy5vcGVyYXRpb259W01yXSgpe3JldHVybiExfX1jbGFzcyBVaSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihIbiwidWkiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsO3RoaXMucGljdHVyZT1udWxsO3RoaXMuYmFyY29kZT1udWxsO3RoaXMuYnV0dG9uPW51bGw7dGhpcy5jaGVja0J1dHRvbj1udWxsO3RoaXMuY2hvaWNlTGlzdD1udWxsO3RoaXMuZGF0ZVRpbWVFZGl0PW51bGw7dGhpcy5kZWZhdWx0VWk9bnVsbDt0aGlzLmltYWdlRWRpdD1udWxsO3RoaXMubnVtZXJpY0VkaXQ9bnVsbDt0aGlzLnBhc3N3b3JkRWRpdD1udWxsO3RoaXMuc2lnbmF0dXJlPW51bGw7dGhpcy50ZXh0RWRpdD1udWxsfVtscl0oKXtpZih2b2lkIDA9PT10aGlzW2FyXSl7Zm9yKGNvbnN0IGUgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpe2lmKCJleHRyYXMiPT09ZXx8InBpY3R1cmUiPT09ZSljb250aW51ZTtjb25zdCB0PXRoaXNbZV07aWYodCBpbnN0YW5jZW9mIFhGQU9iamVjdCl7dGhpc1thcl09dDtyZXR1cm4gdH19dGhpc1thcl09bnVsbH1yZXR1cm4gdGhpc1thcl19W2FuXShlKXtjb25zdCB0PXRoaXNbbHJdKCk7cmV0dXJuIHQ/dFthbl0oZSk6SFRNTFJlc3VsdC5FTVBUWX19Y2xhc3MgVmFsaWRhdGUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoSG4sInZhbGlkYXRlIiwhMCk7dGhpcy5mb3JtYXRUZXN0PWdldFN0cmluZ09wdGlvbihlLmZvcm1hdFRlc3QsWyJ3YXJuaW5nIiwiZGlzYWJsZWQiLCJlcnJvciJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubnVsbFRlc3Q9Z2V0U3RyaW5nT3B0aW9uKGUubnVsbFRlc3QsWyJkaXNhYmxlZCIsImVycm9yIiwid2FybmluZyJdKTt0aGlzLnNjcmlwdFRlc3Q9Z2V0U3RyaW5nT3B0aW9uKGUuc2NyaXB0VGVzdCxbImVycm9yIiwiZGlzYWJsZWQiLCJ3YXJuaW5nIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsO3RoaXMubWVzc2FnZT1udWxsO3RoaXMucGljdHVyZT1udWxsO3RoaXMuc2NyaXB0PW51bGx9fWNsYXNzIFZhbHVlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEhuLCJ2YWx1ZSIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5vdmVycmlkZT1nZXRJbnRlZ2VyKHtkYXRhOmUub3ZlcnJpZGUsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLnJlbGV2YW50PWdldFJlbGV2YW50KGUucmVsZXZhbnQpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmFyYz1udWxsO3RoaXMuYm9vbGVhbj1udWxsO3RoaXMuZGF0ZT1udWxsO3RoaXMuZGF0ZVRpbWU9bnVsbDt0aGlzLmRlY2ltYWw9bnVsbDt0aGlzLmV4RGF0YT1udWxsO3RoaXMuZmxvYXQ9bnVsbDt0aGlzLmltYWdlPW51bGw7dGhpcy5pbnRlZ2VyPW51bGw7dGhpcy5saW5lPW51bGw7dGhpcy5yZWN0YW5nbGU9bnVsbDt0aGlzLnRleHQ9bnVsbDt0aGlzLnRpbWU9bnVsbH1bJHJdKGUpe2NvbnN0IHQ9dGhpc1twcl0oKTtpZih0IGluc3RhbmNlb2YgRmllbGQmJnQudWk/LmltYWdlRWRpdCl7aWYoIXRoaXMuaW1hZ2Upe3RoaXMuaW1hZ2U9bmV3IEltYWdlKHt9KTt0aGlzW1hzXSh0aGlzLmltYWdlKX10aGlzLmltYWdlW2VyXT1lW2VyXTtyZXR1cm59Y29uc3QgaT1lW1lyXTtpZihudWxsPT09dGhpc1tpXSl7Zm9yKGNvbnN0IGUgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpe2NvbnN0IHQ9dGhpc1tlXTtpZih0IGluc3RhbmNlb2YgWEZBT2JqZWN0KXt0aGlzW2VdPW51bGw7dGhpc1tqcl0odCl9fXRoaXNbZVtZcl1dPWU7dGhpc1tYc10oZSl9ZWxzZSB0aGlzW2ldW2VyXT1lW2VyXX1bZW5dKCl7aWYodGhpcy5leERhdGEpcmV0dXJuInN0cmluZyI9PXR5cGVvZiB0aGlzLmV4RGF0YVtlcl0/dGhpcy5leERhdGFbZXJdLnRyaW0oKTp0aGlzLmV4RGF0YVtlcl1bZW5dKCkudHJpbSgpO2Zvcihjb25zdCBlIG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMpKXtpZigiaW1hZ2UiPT09ZSljb250aW51ZTtjb25zdCB0PXRoaXNbZV07aWYodCBpbnN0YW5jZW9mIFhGQU9iamVjdClyZXR1cm4odFtlcl18fCIiKS50b1N0cmluZygpLnRyaW0oKX1yZXR1cm4gbnVsbH1bYW5dKGUpe2Zvcihjb25zdCB0IG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMpKXtjb25zdCBpPXRoaXNbdF07aWYoaSBpbnN0YW5jZW9mIFhGQU9iamVjdClyZXR1cm4gaVthbl0oZSl9cmV0dXJuIEhUTUxSZXN1bHQuRU1QVFl9fWNsYXNzIFZhcmlhYmxlcyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihIbiwidmFyaWFibGVzIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib29sZWFuPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRhdGU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZVRpbWU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGVjaW1hbD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5leERhdGE9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZmxvYXQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuaW1hZ2U9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuaW50ZWdlcj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5tYW5pZmVzdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zY3JpcHQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudGV4dD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50aW1lPW5ldyBYRkFPYmplY3RBcnJheX1bTXJdKCl7cmV0dXJuITB9fWNsYXNzIFRlbXBsYXRlTmFtZXNwYWNle3N0YXRpY1tvbl0oZSx0KXtpZihUZW1wbGF0ZU5hbWVzcGFjZS5oYXNPd25Qcm9wZXJ0eShlKSl7Y29uc3QgaT1UZW1wbGF0ZU5hbWVzcGFjZVtlXSh0KTtpW19yXSh0KTtyZXR1cm4gaX19c3RhdGljIGFwcGVhcmFuY2VGaWx0ZXIoZSl7cmV0dXJuIG5ldyBBcHBlYXJhbmNlRmlsdGVyKGUpfXN0YXRpYyBhcmMoZSl7cmV0dXJuIG5ldyBBcmMoZSl9c3RhdGljIGFyZWEoZSl7cmV0dXJuIG5ldyBBcmVhKGUpfXN0YXRpYyBhc3Npc3QoZSl7cmV0dXJuIG5ldyBBc3Npc3QoZSl9c3RhdGljIGJhcmNvZGUoZSl7cmV0dXJuIG5ldyBCYXJjb2RlKGUpfXN0YXRpYyBiaW5kKGUpe3JldHVybiBuZXcgQmluZChlKX1zdGF0aWMgYmluZEl0ZW1zKGUpe3JldHVybiBuZXcgQmluZEl0ZW1zKGUpfXN0YXRpYyBib29rZW5kKGUpe3JldHVybiBuZXcgQm9va2VuZChlKX1zdGF0aWMgYm9vbGVhbihlKXtyZXR1cm4gbmV3IEJvb2xlYW5FbGVtZW50KGUpfXN0YXRpYyBib3JkZXIoZSl7cmV0dXJuIG5ldyBCb3JkZXIoZSl9c3RhdGljIGJyZWFrKGUpe3JldHVybiBuZXcgQnJlYWsoZSl9c3RhdGljIGJyZWFrQWZ0ZXIoZSl7cmV0dXJuIG5ldyBCcmVha0FmdGVyKGUpfXN0YXRpYyBicmVha0JlZm9yZShlKXtyZXR1cm4gbmV3IEJyZWFrQmVmb3JlKGUpfXN0YXRpYyBidXR0b24oZSl7cmV0dXJuIG5ldyBCdXR0b24oZSl9c3RhdGljIGNhbGN1bGF0ZShlKXtyZXR1cm4gbmV3IENhbGN1bGF0ZShlKX1zdGF0aWMgY2FwdGlvbihlKXtyZXR1cm4gbmV3IENhcHRpb24oZSl9c3RhdGljIGNlcnRpZmljYXRlKGUpe3JldHVybiBuZXcgQ2VydGlmaWNhdGUoZSl9c3RhdGljIGNlcnRpZmljYXRlcyhlKXtyZXR1cm4gbmV3IENlcnRpZmljYXRlcyhlKX1zdGF0aWMgY2hlY2tCdXR0b24oZSl7cmV0dXJuIG5ldyBDaGVja0J1dHRvbihlKX1zdGF0aWMgY2hvaWNlTGlzdChlKXtyZXR1cm4gbmV3IENob2ljZUxpc3QoZSl9c3RhdGljIGNvbG9yKGUpe3JldHVybiBuZXcgQ29sb3IoZSl9c3RhdGljIGNvbWIoZSl7cmV0dXJuIG5ldyBDb21iKGUpfXN0YXRpYyBjb25uZWN0KGUpe3JldHVybiBuZXcgQ29ubmVjdChlKX1zdGF0aWMgY29udGVudEFyZWEoZSl7cmV0dXJuIG5ldyBDb250ZW50QXJlYShlKX1zdGF0aWMgY29ybmVyKGUpe3JldHVybiBuZXcgQ29ybmVyKGUpfXN0YXRpYyBkYXRlKGUpe3JldHVybiBuZXcgRGF0ZUVsZW1lbnQoZSl9c3RhdGljIGRhdGVUaW1lKGUpe3JldHVybiBuZXcgRGF0ZVRpbWUoZSl9c3RhdGljIGRhdGVUaW1lRWRpdChlKXtyZXR1cm4gbmV3IERhdGVUaW1lRWRpdChlKX1zdGF0aWMgZGVjaW1hbChlKXtyZXR1cm4gbmV3IERlY2ltYWwoZSl9c3RhdGljIGRlZmF1bHRVaShlKXtyZXR1cm4gbmV3IERlZmF1bHRVaShlKX1zdGF0aWMgZGVzYyhlKXtyZXR1cm4gbmV3IERlc2MoZSl9c3RhdGljIGRpZ2VzdE1ldGhvZChlKXtyZXR1cm4gbmV3IERpZ2VzdE1ldGhvZChlKX1zdGF0aWMgZGlnZXN0TWV0aG9kcyhlKXtyZXR1cm4gbmV3IERpZ2VzdE1ldGhvZHMoZSl9c3RhdGljIGRyYXcoZSl7cmV0dXJuIG5ldyBEcmF3KGUpfXN0YXRpYyBlZGdlKGUpe3JldHVybiBuZXcgRWRnZShlKX1zdGF0aWMgZW5jb2RpbmcoZSl7cmV0dXJuIG5ldyBFbmNvZGluZyhlKX1zdGF0aWMgZW5jb2RpbmdzKGUpe3JldHVybiBuZXcgRW5jb2RpbmdzKGUpfXN0YXRpYyBlbmNyeXB0KGUpe3JldHVybiBuZXcgRW5jcnlwdChlKX1zdGF0aWMgZW5jcnlwdERhdGEoZSl7cmV0dXJuIG5ldyBFbmNyeXB0RGF0YShlKX1zdGF0aWMgZW5jcnlwdGlvbihlKXtyZXR1cm4gbmV3IEVuY3J5cHRpb24oZSl9c3RhdGljIGVuY3J5cHRpb25NZXRob2QoZSl7cmV0dXJuIG5ldyBFbmNyeXB0aW9uTWV0aG9kKGUpfXN0YXRpYyBlbmNyeXB0aW9uTWV0aG9kcyhlKXtyZXR1cm4gbmV3IEVuY3J5cHRpb25NZXRob2RzKGUpfXN0YXRpYyBldmVudChlKXtyZXR1cm4gbmV3IEV2ZW50KGUpfXN0YXRpYyBleERhdGEoZSl7cmV0dXJuIG5ldyBFeERhdGEoZSl9c3RhdGljIGV4T2JqZWN0KGUpe3JldHVybiBuZXcgRXhPYmplY3QoZSl9c3RhdGljIGV4Y2xHcm91cChlKXtyZXR1cm4gbmV3IEV4Y2xHcm91cChlKX1zdGF0aWMgZXhlY3V0ZShlKXtyZXR1cm4gbmV3IEV4ZWN1dGUoZSl9c3RhdGljIGV4dHJhcyhlKXtyZXR1cm4gbmV3IEV4dHJhcyhlKX1zdGF0aWMgZmllbGQoZSl7cmV0dXJuIG5ldyBGaWVsZChlKX1zdGF0aWMgZmlsbChlKXtyZXR1cm4gbmV3IEZpbGwoZSl9c3RhdGljIGZpbHRlcihlKXtyZXR1cm4gbmV3IEZpbHRlcihlKX1zdGF0aWMgZmxvYXQoZSl7cmV0dXJuIG5ldyBGbG9hdChlKX1zdGF0aWMgZm9udChlKXtyZXR1cm4gbmV3IHRlbXBsYXRlX0ZvbnQoZSl9c3RhdGljIGZvcm1hdChlKXtyZXR1cm4gbmV3IEZvcm1hdChlKX1zdGF0aWMgaGFuZGxlcihlKXtyZXR1cm4gbmV3IEhhbmRsZXIoZSl9c3RhdGljIGh5cGhlbmF0aW9uKGUpe3JldHVybiBuZXcgSHlwaGVuYXRpb24oZSl9c3RhdGljIGltYWdlKGUpe3JldHVybiBuZXcgSW1hZ2UoZSl9c3RhdGljIGltYWdlRWRpdChlKXtyZXR1cm4gbmV3IEltYWdlRWRpdChlKX1zdGF0aWMgaW50ZWdlcihlKXtyZXR1cm4gbmV3IEludGVnZXIoZSl9c3RhdGljIGlzc3VlcnMoZSl7cmV0dXJuIG5ldyBJc3N1ZXJzKGUpfXN0YXRpYyBpdGVtcyhlKXtyZXR1cm4gbmV3IEl0ZW1zKGUpfXN0YXRpYyBrZWVwKGUpe3JldHVybiBuZXcgS2VlcChlKX1zdGF0aWMga2V5VXNhZ2UoZSl7cmV0dXJuIG5ldyBLZXlVc2FnZShlKX1zdGF0aWMgbGluZShlKXtyZXR1cm4gbmV3IExpbmUoZSl9c3RhdGljIGxpbmVhcihlKXtyZXR1cm4gbmV3IExpbmVhcihlKX1zdGF0aWMgbG9ja0RvY3VtZW50KGUpe3JldHVybiBuZXcgTG9ja0RvY3VtZW50KGUpfXN0YXRpYyBtYW5pZmVzdChlKXtyZXR1cm4gbmV3IE1hbmlmZXN0KGUpfXN0YXRpYyBtYXJnaW4oZSl7cmV0dXJuIG5ldyBNYXJnaW4oZSl9c3RhdGljIG1kcChlKXtyZXR1cm4gbmV3IE1kcChlKX1zdGF0aWMgbWVkaXVtKGUpe3JldHVybiBuZXcgTWVkaXVtKGUpfXN0YXRpYyBtZXNzYWdlKGUpe3JldHVybiBuZXcgTWVzc2FnZShlKX1zdGF0aWMgbnVtZXJpY0VkaXQoZSl7cmV0dXJuIG5ldyBOdW1lcmljRWRpdChlKX1zdGF0aWMgb2NjdXIoZSl7cmV0dXJuIG5ldyBPY2N1cihlKX1zdGF0aWMgb2lkKGUpe3JldHVybiBuZXcgT2lkKGUpfXN0YXRpYyBvaWRzKGUpe3JldHVybiBuZXcgT2lkcyhlKX1zdGF0aWMgb3ZlcmZsb3coZSl7cmV0dXJuIG5ldyBPdmVyZmxvdyhlKX1zdGF0aWMgcGFnZUFyZWEoZSl7cmV0dXJuIG5ldyBQYWdlQXJlYShlKX1zdGF0aWMgcGFnZVNldChlKXtyZXR1cm4gbmV3IFBhZ2VTZXQoZSl9c3RhdGljIHBhcmEoZSl7cmV0dXJuIG5ldyBQYXJhKGUpfXN0YXRpYyBwYXNzd29yZEVkaXQoZSl7cmV0dXJuIG5ldyBQYXNzd29yZEVkaXQoZSl9c3RhdGljIHBhdHRlcm4oZSl7cmV0dXJuIG5ldyB0ZW1wbGF0ZV9QYXR0ZXJuKGUpfXN0YXRpYyBwaWN0dXJlKGUpe3JldHVybiBuZXcgUGljdHVyZShlKX1zdGF0aWMgcHJvdG8oZSl7cmV0dXJuIG5ldyBQcm90byhlKX1zdGF0aWMgcmFkaWFsKGUpe3JldHVybiBuZXcgUmFkaWFsKGUpfXN0YXRpYyByZWFzb24oZSl7cmV0dXJuIG5ldyBSZWFzb24oZSl9c3RhdGljIHJlYXNvbnMoZSl7cmV0dXJuIG5ldyBSZWFzb25zKGUpfXN0YXRpYyByZWN0YW5nbGUoZSl7cmV0dXJuIG5ldyBSZWN0YW5nbGUoZSl9c3RhdGljIHJlZihlKXtyZXR1cm4gbmV3IFJlZkVsZW1lbnQoZSl9c3RhdGljIHNjcmlwdChlKXtyZXR1cm4gbmV3IFNjcmlwdChlKX1zdGF0aWMgc2V0UHJvcGVydHkoZSl7cmV0dXJuIG5ldyBTZXRQcm9wZXJ0eShlKX1zdGF0aWMgc2lnbkRhdGEoZSl7cmV0dXJuIG5ldyBTaWduRGF0YShlKX1zdGF0aWMgc2lnbmF0dXJlKGUpe3JldHVybiBuZXcgU2lnbmF0dXJlKGUpfXN0YXRpYyBzaWduaW5nKGUpe3JldHVybiBuZXcgU2lnbmluZyhlKX1zdGF0aWMgc29saWQoZSl7cmV0dXJuIG5ldyBTb2xpZChlKX1zdGF0aWMgc3BlYWsoZSl7cmV0dXJuIG5ldyBTcGVhayhlKX1zdGF0aWMgc3RpcHBsZShlKXtyZXR1cm4gbmV3IFN0aXBwbGUoZSl9c3RhdGljIHN1YmZvcm0oZSl7cmV0dXJuIG5ldyBTdWJmb3JtKGUpfXN0YXRpYyBzdWJmb3JtU2V0KGUpe3JldHVybiBuZXcgU3ViZm9ybVNldChlKX1zdGF0aWMgc3ViamVjdEROKGUpe3JldHVybiBuZXcgU3ViamVjdEROKGUpfXN0YXRpYyBzdWJqZWN0RE5zKGUpe3JldHVybiBuZXcgU3ViamVjdEROcyhlKX1zdGF0aWMgc3VibWl0KGUpe3JldHVybiBuZXcgU3VibWl0KGUpfXN0YXRpYyB0ZW1wbGF0ZShlKXtyZXR1cm4gbmV3IFRlbXBsYXRlKGUpfXN0YXRpYyB0ZXh0KGUpe3JldHVybiBuZXcgVGV4dChlKX1zdGF0aWMgdGV4dEVkaXQoZSl7cmV0dXJuIG5ldyBUZXh0RWRpdChlKX1zdGF0aWMgdGltZShlKXtyZXR1cm4gbmV3IFRpbWUoZSl9c3RhdGljIHRpbWVTdGFtcChlKXtyZXR1cm4gbmV3IFRpbWVTdGFtcChlKX1zdGF0aWMgdG9vbFRpcChlKXtyZXR1cm4gbmV3IFRvb2xUaXAoZSl9c3RhdGljIHRyYXZlcnNhbChlKXtyZXR1cm4gbmV3IFRyYXZlcnNhbChlKX1zdGF0aWMgdHJhdmVyc2UoZSl7cmV0dXJuIG5ldyBUcmF2ZXJzZShlKX1zdGF0aWMgdWkoZSl7cmV0dXJuIG5ldyBVaShlKX1zdGF0aWMgdmFsaWRhdGUoZSl7cmV0dXJuIG5ldyBWYWxpZGF0ZShlKX1zdGF0aWMgdmFsdWUoZSl7cmV0dXJuIG5ldyBWYWx1ZShlKX1zdGF0aWMgdmFyaWFibGVzKGUpe3JldHVybiBuZXcgVmFyaWFibGVzKGUpfX1jb25zdCBUbj1nbi5kYXRhc2V0cy5pZDtmdW5jdGlvbiBjcmVhdGVUZXh0KGUpe2NvbnN0IHQ9bmV3IFRleHQoe30pO3RbZXJdPWU7cmV0dXJuIHR9Y2xhc3MgQmluZGVye2NvbnN0cnVjdG9yKGUpe3RoaXMucm9vdD1lO3RoaXMuZGF0YXNldHM9ZS5kYXRhc2V0czt0aGlzLmRhdGE9ZS5kYXRhc2V0cz8uZGF0YXx8bmV3IFhtbE9iamVjdChnbi5kYXRhc2V0cy5pZCwiZGF0YSIpO3RoaXMuZW1wdHlNZXJnZT0wPT09dGhpcy5kYXRhW0VyXSgpLmxlbmd0aDt0aGlzLnJvb3QuZm9ybT10aGlzLmZvcm09ZS50ZW1wbGF0ZVskc10oKX1faXNDb25zdW1lRGF0YSgpe3JldHVybiF0aGlzLmVtcHR5TWVyZ2UmJnRoaXMuX21lcmdlTW9kZX1faXNNYXRjaFRlbXBsYXRlKCl7cmV0dXJuIXRoaXMuX2lzQ29uc3VtZURhdGEoKX1iaW5kKCl7dGhpcy5fYmluZEVsZW1lbnQodGhpcy5mb3JtLHRoaXMuZGF0YSk7cmV0dXJuIHRoaXMuZm9ybX1nZXREYXRhKCl7cmV0dXJuIHRoaXMuZGF0YX1fYmluZFZhbHVlKGUsdCxpKXtlW3RyXT10O2lmKGVbd3JdKCkpaWYodFtOcl0oKSl7Y29uc3QgaT10W2hyXSgpO2VbJHJdKGNyZWF0ZVRleHQoaSkpfWVsc2UgaWYoZSBpbnN0YW5jZW9mIEZpZWxkJiYibXVsdGlTZWxlY3QiPT09ZS51aT8uY2hvaWNlTGlzdD8ub3Blbil7Y29uc3QgaT10W0VyXSgpLm1hcCgoZT0+ZVtlcl0udHJpbSgpKSkuam9pbigiXG4iKTtlWyRyXShjcmVhdGVUZXh0KGkpKX1lbHNlIHRoaXMuX2lzQ29uc3VtZURhdGEoKSYmd2FybigiWEZBIC0gTm9kZXMgaGF2ZW4ndCB0aGUgc2FtZSB0eXBlLiIpO2Vsc2UhdFtOcl0oKXx8dGhpcy5faXNNYXRjaFRlbXBsYXRlKCk/dGhpcy5fYmluZEVsZW1lbnQoZSx0KTp3YXJuKCJYRkEgLSBOb2RlcyBoYXZlbid0IHRoZSBzYW1lIHR5cGUuIil9X2ZpbmREYXRhQnlOYW1lVG9Db25zdW1lKGUsdCxpLGEpe2lmKCFlKXJldHVybiBudWxsO2xldCBzLHI7Zm9yKGxldCBhPTA7YTwzO2ErKyl7cz1pW1FyXShlLCExLCEwKTtmb3IoOzspe3I9cy5uZXh0KCkudmFsdWU7aWYoIXIpYnJlYWs7aWYodD09PXJbTnJdKCkpcmV0dXJuIHJ9aWYoaVtKcl09PT1nbi5kYXRhc2V0cy5pZCYmImRhdGEiPT09aVtZcl0pYnJlYWs7aT1pW3ByXSgpfWlmKCFhKXJldHVybiBudWxsO3M9dGhpcy5kYXRhW1FyXShlLCEwLCExKTtyPXMubmV4dCgpLnZhbHVlO2lmKHIpcmV0dXJuIHI7cz10aGlzLmRhdGFbbnJdKGUsITApO3I9cy5uZXh0KCkudmFsdWU7cmV0dXJuIHI/LltOcl0oKT9yOm51bGx9X3NldFByb3BlcnRpZXMoZSx0KXtpZihlLmhhc093blByb3BlcnR5KCJzZXRQcm9wZXJ0eSIpKWZvcihjb25zdHtyZWY6aSx0YXJnZXQ6YSxjb25uZWN0aW9uOnN9b2YgZS5zZXRQcm9wZXJ0eS5jaGlsZHJlbil7aWYocyljb250aW51ZTtpZighaSljb250aW51ZTtjb25zdCByPXNlYXJjaE5vZGUodGhpcy5yb290LHQsaSwhMSwhMSk7aWYoIXIpe3dhcm4oYFhGQSAtIEludmFsaWQgcmVmZXJlbmNlOiAke2l9LmApO2NvbnRpbnVlfWNvbnN0W25dPXI7aWYoIW5bUnJdKHRoaXMuZGF0YSkpe3dhcm4oIlhGQSAtIEludmFsaWQgbm9kZTogbXVzdCBiZSBhIGRhdGEgbm9kZS4iKTtjb250aW51ZX1jb25zdCBvPXNlYXJjaE5vZGUodGhpcy5yb290LGUsYSwhMSwhMSk7aWYoIW8pe3dhcm4oYFhGQSAtIEludmFsaWQgdGFyZ2V0OiAke2F9LmApO2NvbnRpbnVlfWNvbnN0W2ddPW87aWYoIWdbUnJdKGUpKXt3YXJuKCJYRkEgLSBJbnZhbGlkIHRhcmdldDogbXVzdCBiZSBhIHByb3BlcnR5IG9yIHN1YnByb3BlcnR5LiIpO2NvbnRpbnVlfWNvbnN0IGM9Z1twcl0oKTtpZihnIGluc3RhbmNlb2YgU2V0UHJvcGVydHl8fGMgaW5zdGFuY2VvZiBTZXRQcm9wZXJ0eSl7d2FybigiWEZBIC0gSW52YWxpZCB0YXJnZXQ6IGNhbm5vdCBiZSBhIHNldFByb3BlcnR5IG9yIG9uZSBvZiBpdHMgcHJvcGVydGllcy4iKTtjb250aW51ZX1pZihnIGluc3RhbmNlb2YgQmluZEl0ZW1zfHxjIGluc3RhbmNlb2YgQmluZEl0ZW1zKXt3YXJuKCJYRkEgLSBJbnZhbGlkIHRhcmdldDogY2Fubm90IGJlIGEgYmluZEl0ZW1zIG9yIG9uZSBvZiBpdHMgcHJvcGVydGllcy4iKTtjb250aW51ZX1jb25zdCBDPW5bZW5dKCksaD1nW1lyXTtpZihnIGluc3RhbmNlb2YgWEZBQXR0cmlidXRlKXtjb25zdCBlPU9iamVjdC5jcmVhdGUobnVsbCk7ZVtoXT1DO2NvbnN0IHQ9UmVmbGVjdC5jb25zdHJ1Y3QoT2JqZWN0LmdldFByb3RvdHlwZU9mKGMpLmNvbnN0cnVjdG9yLFtlXSk7Y1toXT10W2hdfWVsc2UgaWYoZy5oYXNPd25Qcm9wZXJ0eShlcikpe2dbdHJdPW47Z1tlcl09QztnW3NyXSgpfWVsc2Ugd2FybigiWEZBIC0gSW52YWxpZCBub2RlIHRvIHVzZSBpbiBzZXRQcm9wZXJ0eSIpfX1fYmluZEl0ZW1zKGUsdCl7aWYoIWUuaGFzT3duUHJvcGVydHkoIml0ZW1zIil8fCFlLmhhc093blByb3BlcnR5KCJiaW5kSXRlbXMiKXx8ZS5iaW5kSXRlbXMuaXNFbXB0eSgpKXJldHVybjtmb3IoY29uc3QgdCBvZiBlLml0ZW1zLmNoaWxkcmVuKWVbanJdKHQpO2UuaXRlbXMuY2xlYXIoKTtjb25zdCBpPW5ldyBJdGVtcyh7fSksYT1uZXcgSXRlbXMoe30pO2VbWHNdKGkpO2UuaXRlbXMucHVzaChpKTtlW1hzXShhKTtlLml0ZW1zLnB1c2goYSk7Zm9yKGNvbnN0e3JlZjpzLGxhYmVsUmVmOnIsdmFsdWVSZWY6bixjb25uZWN0aW9uOm99b2YgZS5iaW5kSXRlbXMuY2hpbGRyZW4pe2lmKG8pY29udGludWU7aWYoIXMpY29udGludWU7Y29uc3QgZT1zZWFyY2hOb2RlKHRoaXMucm9vdCx0LHMsITEsITEpO2lmKGUpZm9yKGNvbnN0IHQgb2YgZSl7aWYoIXRbUnJdKHRoaXMuZGF0YXNldHMpKXt3YXJuKGBYRkEgLSBJbnZhbGlkIHJlZiAoJHtzfSk6IG11c3QgYmUgYSBkYXRhc2V0cyBjaGlsZC5gKTtjb250aW51ZX1jb25zdCBlPXNlYXJjaE5vZGUodGhpcy5yb290LHQsciwhMCwhMSk7aWYoIWUpe3dhcm4oYFhGQSAtIEludmFsaWQgbGFiZWw6ICR7cn0uYCk7Y29udGludWV9Y29uc3Rbb109ZTtpZighb1tScl0odGhpcy5kYXRhc2V0cykpe3dhcm4oIlhGQSAtIEludmFsaWQgbGFiZWw6IG11c3QgYmUgYSBkYXRhc2V0cyBjaGlsZC4iKTtjb250aW51ZX1jb25zdCBnPXNlYXJjaE5vZGUodGhpcy5yb290LHQsbiwhMCwhMSk7aWYoIWcpe3dhcm4oYFhGQSAtIEludmFsaWQgdmFsdWU6ICR7bn0uYCk7Y29udGludWV9Y29uc3RbY109ZztpZighY1tScl0odGhpcy5kYXRhc2V0cykpe3dhcm4oIlhGQSAtIEludmFsaWQgdmFsdWU6IG11c3QgYmUgYSBkYXRhc2V0cyBjaGlsZC4iKTtjb250aW51ZX1jb25zdCBDPWNyZWF0ZVRleHQob1tlbl0oKSksaD1jcmVhdGVUZXh0KGNbZW5dKCkpO2lbWHNdKEMpO2kudGV4dC5wdXNoKEMpO2FbWHNdKGgpO2EudGV4dC5wdXNoKGgpfWVsc2Ugd2FybihgWEZBIC0gSW52YWxpZCByZWZlcmVuY2U6ICR7c30uYCl9fV9iaW5kT2NjdXJyZW5jZXMoZSx0LGkpe2xldCBhO2lmKHQubGVuZ3RoPjEpe2E9ZVskc10oKTthW2pyXShhLm9jY3VyKTthLm9jY3VyPW51bGx9dGhpcy5fYmluZFZhbHVlKGUsdFswXSxpKTt0aGlzLl9zZXRQcm9wZXJ0aWVzKGUsdFswXSk7dGhpcy5fYmluZEl0ZW1zKGUsdFswXSk7aWYoMT09PXQubGVuZ3RoKXJldHVybjtjb25zdCBzPWVbcHJdKCkscj1lW1lyXSxuPXNbRHJdKGUpO2ZvcihsZXQgZT0xLG89dC5sZW5ndGg7ZTxvO2UrKyl7Y29uc3Qgbz10W2VdLGc9YVskc10oKTtzW3JdLnB1c2goZyk7c1tGcl0obitlLGcpO3RoaXMuX2JpbmRWYWx1ZShnLG8saSk7dGhpcy5fc2V0UHJvcGVydGllcyhnLG8pO3RoaXMuX2JpbmRJdGVtcyhnLG8pfX1fY3JlYXRlT2NjdXJyZW5jZXMoZSl7aWYoIXRoaXMuZW1wdHlNZXJnZSlyZXR1cm47Y29uc3R7b2NjdXI6dH09ZTtpZighdHx8dC5pbml0aWFsPD0xKXJldHVybjtjb25zdCBpPWVbcHJdKCksYT1lW1lyXTtpZighKGlbYV1pbnN0YW5jZW9mIFhGQU9iamVjdEFycmF5KSlyZXR1cm47bGV0IHM7cz1lLm5hbWU/aVthXS5jaGlsZHJlbi5maWx0ZXIoKHQ9PnQubmFtZT09PWUubmFtZSkpLmxlbmd0aDppW2FdLmNoaWxkcmVuLmxlbmd0aDtjb25zdCByPWlbRHJdKGUpKzEsbj10LmluaXRpYWwtcztpZihuKXtjb25zdCB0PWVbJHNdKCk7dFtqcl0odC5vY2N1cik7dC5vY2N1cj1udWxsO2lbYV0ucHVzaCh0KTtpW0ZyXShyLHQpO2ZvcihsZXQgZT0xO2U8bjtlKyspe2NvbnN0IHM9dFskc10oKTtpW2FdLnB1c2gocyk7aVtGcl0ocitlLHMpfX19X2dldE9jY3VySW5mbyhlKXtjb25zdHtuYW1lOnQsb2NjdXI6aX09ZTtpZighaXx8IXQpcmV0dXJuWzEsMV07Y29uc3QgYT0tMT09PWkubWF4PzEvMDppLm1heDtyZXR1cm5baS5taW4sYV19X3NldEFuZEJpbmQoZSx0KXt0aGlzLl9zZXRQcm9wZXJ0aWVzKGUsdCk7dGhpcy5fYmluZEl0ZW1zKGUsdCk7dGhpcy5fYmluZEVsZW1lbnQoZSx0KX1fYmluZEVsZW1lbnQoZSx0KXtjb25zdCBpPVtdO3RoaXMuX2NyZWF0ZU9jY3VycmVuY2VzKGUpO2Zvcihjb25zdCBhIG9mIGVbRXJdKCkpe2lmKGFbdHJdKWNvbnRpbnVlO2lmKHZvaWQgMD09PXRoaXMuX21lcmdlTW9kZSYmInN1YmZvcm0iPT09YVtZcl0pe3RoaXMuX21lcmdlTW9kZT0iY29uc3VtZURhdGEiPT09YS5tZXJnZU1vZGU7Y29uc3QgZT10W0VyXSgpO2lmKGUubGVuZ3RoPjApdGhpcy5fYmluZE9jY3VycmVuY2VzKGEsW2VbMF1dLG51bGwpO2Vsc2UgaWYodGhpcy5lbXB0eU1lcmdlKXtjb25zdCBlPXRbSnJdPT09VG4/LTE6dFtKcl0saT1hW3RyXT1uZXcgWG1sT2JqZWN0KGUsYS5uYW1lfHwicm9vdCIpO3RbWHNdKGkpO3RoaXMuX2JpbmRFbGVtZW50KGEsaSl9Y29udGludWV9aWYoIWFba3JdKCkpY29udGludWU7bGV0IGU9ITEscz1udWxsLHI9bnVsbCxuPW51bGw7aWYoYS5iaW5kKXtzd2l0Y2goYS5iaW5kLm1hdGNoKXtjYXNlIm5vbmUiOnRoaXMuX3NldEFuZEJpbmQoYSx0KTtjb250aW51ZTtjYXNlImdsb2JhbCI6ZT0hMDticmVhaztjYXNlImRhdGFSZWYiOmlmKCFhLmJpbmQucmVmKXt3YXJuKGBYRkEgLSByZWYgaXMgZW1wdHkgaW4gbm9kZSAke2FbWXJdfS5gKTt0aGlzLl9zZXRBbmRCaW5kKGEsdCk7Y29udGludWV9cj1hLmJpbmQucmVmfWEuYmluZC5waWN0dXJlJiYocz1hLmJpbmQucGljdHVyZVtlcl0pfWNvbnN0W28sZ109dGhpcy5fZ2V0T2NjdXJJbmZvKGEpO2lmKHIpe249c2VhcmNoTm9kZSh0aGlzLnJvb3QsdCxyLCEwLCExKTtpZihudWxsPT09bil7bj1jcmVhdGVEYXRhTm9kZSh0aGlzLmRhdGEsdCxyKTtpZighbiljb250aW51ZTt0aGlzLl9pc0NvbnN1bWVEYXRhKCkmJihuW0FyXT0hMCk7dGhpcy5fc2V0QW5kQmluZChhLG4pO2NvbnRpbnVlfXRoaXMuX2lzQ29uc3VtZURhdGEoKSYmKG49bi5maWx0ZXIoKGU9PiFlW0FyXSkpKTtuLmxlbmd0aD5nP249bi5zbGljZSgwLGcpOjA9PT1uLmxlbmd0aCYmKG49bnVsbCk7biYmdGhpcy5faXNDb25zdW1lRGF0YSgpJiZuLmZvckVhY2goKGU9PntlW0FyXT0hMH0pKX1lbHNle2lmKCFhLm5hbWUpe3RoaXMuX3NldEFuZEJpbmQoYSx0KTtjb250aW51ZX1pZih0aGlzLl9pc0NvbnN1bWVEYXRhKCkpe2NvbnN0IGk9W107Zm9yKDtpLmxlbmd0aDxnOyl7Y29uc3Qgcz10aGlzLl9maW5kRGF0YUJ5TmFtZVRvQ29uc3VtZShhLm5hbWUsYVt3cl0oKSx0LGUpO2lmKCFzKWJyZWFrO3NbQXJdPSEwO2kucHVzaChzKX1uPWkubGVuZ3RoPjA/aTpudWxsfWVsc2V7bj10W1FyXShhLm5hbWUsITEsdGhpcy5lbXB0eU1lcmdlKS5uZXh0KCkudmFsdWU7aWYoIW4pe2lmKDA9PT1vKXtpLnB1c2goYSk7Y29udGludWV9Y29uc3QgZT10W0pyXT09PVRuPy0xOnRbSnJdO249YVt0cl09bmV3IFhtbE9iamVjdChlLGEubmFtZSk7dGhpcy5lbXB0eU1lcmdlJiYobltBcl09ITApO3RbWHNdKG4pO3RoaXMuX3NldEFuZEJpbmQoYSxuKTtjb250aW51ZX10aGlzLmVtcHR5TWVyZ2UmJihuW0FyXT0hMCk7bj1bbl19fW4/dGhpcy5fYmluZE9jY3VycmVuY2VzKGEsbixzKTpvPjA/dGhpcy5fc2V0QW5kQmluZChhLHQpOmkucHVzaChhKX1pLmZvckVhY2goKGU9PmVbcHJdKClbanJdKGUpKSl9fWNsYXNzIERhdGFIYW5kbGVye2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5kYXRhPXQ7dGhpcy5kYXRhc2V0PWUuZGF0YXNldHN8fG51bGx9c2VyaWFsaXplKGUpe2NvbnN0IHQ9W1stMSx0aGlzLmRhdGFbRXJdKCldXTtmb3IoO3QubGVuZ3RoPjA7KXtjb25zdCBpPXQuYXQoLTEpLFthLHNdPWk7aWYoYSsxPT09cy5sZW5ndGgpe3QucG9wKCk7Y29udGludWV9Y29uc3Qgcj1zWysraVswXV0sbj1lLmdldChyW25uXSk7aWYobilyWyRyXShuKTtlbHNle2NvbnN0IHQ9cltvcl0oKTtmb3IoY29uc3QgaSBvZiB0LnZhbHVlcygpKXtjb25zdCB0PWUuZ2V0KGlbbm5dKTtpZih0KXtpWyRyXSh0KTticmVha319fWNvbnN0IG89cltFcl0oKTtvLmxlbmd0aD4wJiZ0LnB1c2goWy0xLG9dKX1jb25zdCBpPVsnPHhmYTpkYXRhc2V0cyB4bWxuczp4ZmE9Imh0dHA6Ly93d3cueGZhLm9yZy9zY2hlbWEveGZhLWRhdGEvMS4wLyI+J107aWYodGhpcy5kYXRhc2V0KWZvcihjb25zdCBlIG9mIHRoaXMuZGF0YXNldFtFcl0oKSkiZGF0YSIhPT1lW1lyXSYmZVtzbl0oaSk7dGhpcy5kYXRhW3NuXShpKTtpLnB1c2goIjwveGZhOmRhdGFzZXRzPiIpO3JldHVybiBpLmpvaW4oIiIpfX1jb25zdCBxbj1nbi5jb25maWcuaWQ7Y2xhc3MgQWNyb2JhdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwiYWNyb2JhdCIsITApO3RoaXMuYWNyb2JhdDc9bnVsbDt0aGlzLmF1dG9TYXZlPW51bGw7dGhpcy5jb21tb249bnVsbDt0aGlzLnZhbGlkYXRlPW51bGw7dGhpcy52YWxpZGF0ZUFwcHJvdmFsU2lnbmF0dXJlcz1udWxsO3RoaXMuc3VibWl0VXJsPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgQWNyb2JhdDcgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sImFjcm9iYXQ3IiwhMCk7dGhpcy5keW5hbWljUmVuZGVyPW51bGx9fWNsYXNzIEFEQkVfSlNDb25zb2xlIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJBREJFX0pTQ29uc29sZSIsWyJkZWxlZ2F0ZSIsIkVuYWJsZSIsIkRpc2FibGUiXSl9fWNsYXNzIEFEQkVfSlNEZWJ1Z2dlciBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwiQURCRV9KU0RlYnVnZ2VyIixbImRlbGVnYXRlIiwiRW5hYmxlIiwiRGlzYWJsZSJdKX19Y2xhc3MgQWRkU2lsZW50UHJpbnQgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwiYWRkU2lsZW50UHJpbnQiKX19Y2xhc3MgQWRkVmlld2VyUHJlZmVyZW5jZXMgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwiYWRkVmlld2VyUHJlZmVyZW5jZXMiKX19Y2xhc3MgQWRqdXN0RGF0YSBleHRlbmRzIE9wdGlvbjEwe2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJhZGp1c3REYXRhIil9fWNsYXNzIEFkb2JlRXh0ZW5zaW9uTGV2ZWwgZXh0ZW5kcyBJbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJhZG9iZUV4dGVuc2lvbkxldmVsIiwwLChlPT5lPj0xJiZlPD04KSl9fWNsYXNzIEFnZW50IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJhZ2VudCIsITApO3RoaXMubmFtZT1lLm5hbWU/ZS5uYW1lLnRyaW0oKToiIjt0aGlzLmNvbW1vbj1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIEFsd2F5c0VtYmVkIGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwiYWx3YXlzRW1iZWQiKX19Y2xhc3MgQW1kIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJhbWQiKX19Y2xhc3MgY29uZmlnX0FyZWEgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sImFyZWEiKTt0aGlzLmxldmVsPWdldEludGVnZXIoe2RhdGE6ZS5sZXZlbCxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT5lPj0xJiZlPD0zfSk7dGhpcy5uYW1lPWdldFN0cmluZ09wdGlvbihlLm5hbWUsWyIiLCJiYXJjb2RlIiwiY29yZWluaXQiLCJkZXZpY2VEcml2ZXIiLCJmb250IiwiZ2VuZXJhbCIsImxheW91dCIsIm1lcmdlIiwic2NyaXB0Iiwic2lnbmF0dXJlIiwic291cmNlU2V0IiwidGVtcGxhdGVDYWNoZSJdKX19Y2xhc3MgQXR0cmlidXRlcyBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwiYXR0cmlidXRlcyIsWyJwcmVzZXJ2ZSIsImRlbGVnYXRlIiwiaWdub3JlIl0pfX1jbGFzcyBBdXRvU2F2ZSBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwiYXV0b1NhdmUiLFsiZGlzYWJsZWQiLCJlbmFibGVkIl0pfX1jbGFzcyBCYXNlIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJiYXNlIil9fWNsYXNzIEJhdGNoT3V0cHV0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJiYXRjaE91dHB1dCIpO3RoaXMuZm9ybWF0PWdldFN0cmluZ09wdGlvbihlLmZvcm1hdCxbIm5vbmUiLCJjb25jYXQiLCJ6aXAiLCJ6aXBDb21wcmVzcyJdKX19Y2xhc3MgQmVoYXZpb3JPdmVycmlkZSBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sImJlaGF2aW9yT3ZlcnJpZGUiKX1bc3JdKCl7dGhpc1tlcl09bmV3IE1hcCh0aGlzW2VyXS50cmltKCkuc3BsaXQoL1xzKy8pLmZpbHRlcigoZT0+ZS5pbmNsdWRlcygiOiIpKSkubWFwKChlPT5lLnNwbGl0KCI6IiwyKSkpKX19Y2xhc3MgQ2FjaGUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sImNhY2hlIiwhMCk7dGhpcy50ZW1wbGF0ZUNhY2hlPW51bGx9fWNsYXNzIENoYW5nZSBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJjaGFuZ2UiKX19Y2xhc3MgQ29tbW9uIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJjb21tb24iLCEwKTt0aGlzLmRhdGE9bnVsbDt0aGlzLmxvY2FsZT1udWxsO3RoaXMubG9jYWxlU2V0PW51bGw7dGhpcy5tZXNzYWdpbmc9bnVsbDt0aGlzLnN1cHByZXNzQmFubmVyPW51bGw7dGhpcy50ZW1wbGF0ZT1udWxsO3RoaXMudmFsaWRhdGlvbk1lc3NhZ2luZz1udWxsO3RoaXMudmVyc2lvbkNvbnRyb2w9bnVsbDt0aGlzLmxvZz1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIENvbXByZXNzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJjb21wcmVzcyIpO3RoaXMuc2NvcGU9Z2V0U3RyaW5nT3B0aW9uKGUuc2NvcGUsWyJpbWFnZU9ubHkiLCJkb2N1bWVudCJdKX19Y2xhc3MgQ29tcHJlc3NMb2dpY2FsU3RydWN0dXJlIGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sImNvbXByZXNzTG9naWNhbFN0cnVjdHVyZSIpfX1jbGFzcyBDb21wcmVzc09iamVjdFN0cmVhbSBleHRlbmRzIE9wdGlvbjEwe2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJjb21wcmVzc09iamVjdFN0cmVhbSIpfX1jbGFzcyBDb21wcmVzc2lvbiBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwiY29tcHJlc3Npb24iLCEwKTt0aGlzLmNvbXByZXNzTG9naWNhbFN0cnVjdHVyZT1udWxsO3RoaXMuY29tcHJlc3NPYmplY3RTdHJlYW09bnVsbDt0aGlzLmxldmVsPW51bGw7dGhpcy50eXBlPW51bGx9fWNsYXNzIENvbmZpZyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwiY29uZmlnIiwhMCk7dGhpcy5hY3JvYmF0PW51bGw7dGhpcy5wcmVzZW50PW51bGw7dGhpcy50cmFjZT1udWxsO3RoaXMuYWdlbnQ9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBDb25mb3JtYW5jZSBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwiY29uZm9ybWFuY2UiLFsiQSIsIkIiXSl9fWNsYXNzIENvbnRlbnRDb3B5IGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sImNvbnRlbnRDb3B5Iil9fWNsYXNzIENvcGllcyBleHRlbmRzIEludGVnZXJPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sImNvcGllcyIsMSwoZT0+ZT49MSkpfX1jbGFzcyBDcmVhdG9yIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJjcmVhdG9yIil9fWNsYXNzIEN1cnJlbnRQYWdlIGV4dGVuZHMgSW50ZWdlck9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwiY3VycmVudFBhZ2UiLDAsKGU9PmU+PTApKX19Y2xhc3MgRGF0YSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwiZGF0YSIsITApO3RoaXMuYWRqdXN0RGF0YT1udWxsO3RoaXMuYXR0cmlidXRlcz1udWxsO3RoaXMuaW5jcmVtZW50YWxMb2FkPW51bGw7dGhpcy5vdXRwdXRYU0w9bnVsbDt0aGlzLnJhbmdlPW51bGw7dGhpcy5yZWNvcmQ9bnVsbDt0aGlzLnN0YXJ0Tm9kZT1udWxsO3RoaXMudXJpPW51bGw7dGhpcy53aW5kb3c9bnVsbDt0aGlzLnhzbD1udWxsO3RoaXMuZXhjbHVkZU5TPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRyYW5zZm9ybT1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIERlYnVnIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJkZWJ1ZyIsITApO3RoaXMudXJpPW51bGx9fWNsYXNzIERlZmF1bHRUeXBlZmFjZSBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sImRlZmF1bHRUeXBlZmFjZSIpO3RoaXMud3JpdGluZ1NjcmlwdD1nZXRTdHJpbmdPcHRpb24oZS53cml0aW5nU2NyaXB0LFsiKiIsIkFyYWJpYyIsIkN5cmlsbGljIiwiRWFzdEV1cm9wZWFuUm9tYW4iLCJHcmVlayIsIkhlYnJldyIsIkphcGFuZXNlIiwiS29yZWFuIiwiUm9tYW4iLCJTaW1wbGlmaWVkQ2hpbmVzZSIsIlRoYWkiLCJUcmFkaXRpb25hbENoaW5lc2UiLCJWaWV0bmFtZXNlIl0pfX1jbGFzcyBEZXN0aW5hdGlvbiBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwiZGVzdGluYXRpb24iLFsicGRmIiwicGNsIiwicHMiLCJ3ZWJDbGllbnQiLCJ6cGwiXSl9fWNsYXNzIERvY3VtZW50QXNzZW1ibHkgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwiZG9jdW1lbnRBc3NlbWJseSIpfX1jbGFzcyBEcml2ZXIgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sImRyaXZlciIsITApO3RoaXMubmFtZT1lLm5hbWU/ZS5uYW1lLnRyaW0oKToiIjt0aGlzLmZvbnRJbmZvPW51bGw7dGhpcy54ZGM9bnVsbH19Y2xhc3MgRHVwbGV4T3B0aW9uIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJkdXBsZXhPcHRpb24iLFsic2ltcGxleCIsImR1cGxleEZsaXBMb25nRWRnZSIsImR1cGxleEZsaXBTaG9ydEVkZ2UiXSl9fWNsYXNzIER5bmFtaWNSZW5kZXIgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sImR5bmFtaWNSZW5kZXIiLFsiZm9yYmlkZGVuIiwicmVxdWlyZWQiXSl9fWNsYXNzIEVtYmVkIGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sImVtYmVkIil9fWNsYXNzIGNvbmZpZ19FbmNyeXB0IGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sImVuY3J5cHQiKX19Y2xhc3MgY29uZmlnX0VuY3J5cHRpb24gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sImVuY3J5cHRpb24iLCEwKTt0aGlzLmVuY3J5cHQ9bnVsbDt0aGlzLmVuY3J5cHRpb25MZXZlbD1udWxsO3RoaXMucGVybWlzc2lvbnM9bnVsbH19Y2xhc3MgRW5jcnlwdGlvbkxldmVsIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJlbmNyeXB0aW9uTGV2ZWwiLFsiNDBiaXQiLCIxMjhiaXQiXSl9fWNsYXNzIEVuZm9yY2UgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sImVuZm9yY2UiKX19Y2xhc3MgRXF1YXRlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJlcXVhdGUiKTt0aGlzLmZvcmNlPWdldEludGVnZXIoe2RhdGE6ZS5mb3JjZSxkZWZhdWx0VmFsdWU6MSx2YWxpZGF0ZTplPT4wPT09ZX0pO3RoaXMuZnJvbT1lLmZyb218fCIiO3RoaXMudG89ZS50b3x8IiJ9fWNsYXNzIEVxdWF0ZVJhbmdlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJlcXVhdGVSYW5nZSIpO3RoaXMuZnJvbT1lLmZyb218fCIiO3RoaXMudG89ZS50b3x8IiI7dGhpcy5fdW5pY29kZVJhbmdlPWUudW5pY29kZVJhbmdlfHwiIn1nZXQgdW5pY29kZVJhbmdlKCl7Y29uc3QgZT1bXSx0PS9VXCsoWzAtOWEtZkEtRl0rKS8saT10aGlzLl91bmljb2RlUmFuZ2U7Zm9yKGxldCBhIG9mIGkuc3BsaXQoIiwiKS5tYXAoKGU9PmUudHJpbSgpKSkuZmlsdGVyKChlPT4hIWUpKSl7YT1hLnNwbGl0KCItIiwyKS5tYXAoKGU9Pntjb25zdCBpPWUubWF0Y2godCk7cmV0dXJuIGk/cGFyc2VJbnQoaVsxXSwxNik6MH0pKTsxPT09YS5sZW5ndGgmJmEucHVzaChhWzBdKTtlLnB1c2goYSl9cmV0dXJuIHNoYWRvdyh0aGlzLCJ1bmljb2RlUmFuZ2UiLGUpfX1jbGFzcyBFeGNsdWRlIGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwiZXhjbHVkZSIpfVtzcl0oKXt0aGlzW2VyXT10aGlzW2VyXS50cmltKCkuc3BsaXQoL1xzKy8pLmZpbHRlcigoZT0+ZSYmWyJjYWxjdWxhdGUiLCJjbG9zZSIsImVudGVyIiwiZXhpdCIsImluaXRpYWxpemUiLCJyZWFkeSIsInZhbGlkYXRlIl0uaW5jbHVkZXMoZSkpKX19Y2xhc3MgRXhjbHVkZU5TIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJleGNsdWRlTlMiKX19Y2xhc3MgRmxpcExhYmVsIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJmbGlwTGFiZWwiLFsidXNlUHJpbnRlclNldHRpbmciLCJvbiIsIm9mZiJdKX19Y2xhc3MgY29uZmlnX0ZvbnRJbmZvIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJmb250SW5mbyIsITApO3RoaXMuZW1iZWQ9bnVsbDt0aGlzLm1hcD1udWxsO3RoaXMuc3Vic2V0QmVsb3c9bnVsbDt0aGlzLmFsd2F5c0VtYmVkPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRlZmF1bHRUeXBlZmFjZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5uZXZlckVtYmVkPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgRm9ybUZpZWxkRmlsbGluZyBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJmb3JtRmllbGRGaWxsaW5nIil9fWNsYXNzIEdyb3VwUGFyZW50IGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJncm91cFBhcmVudCIpfX1jbGFzcyBJZkVtcHR5IGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJpZkVtcHR5IixbImRhdGFWYWx1ZSIsImRhdGFHcm91cCIsImlnbm9yZSIsInJlbW92ZSJdKX19Y2xhc3MgSW5jbHVkZVhEUENvbnRlbnQgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sImluY2x1ZGVYRFBDb250ZW50Iil9fWNsYXNzIEluY3JlbWVudGFsTG9hZCBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwiaW5jcmVtZW50YWxMb2FkIixbIm5vbmUiLCJmb3J3YXJkT25seSJdKX19Y2xhc3MgSW5jcmVtZW50YWxNZXJnZSBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJpbmNyZW1lbnRhbE1lcmdlIil9fWNsYXNzIEludGVyYWN0aXZlIGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sImludGVyYWN0aXZlIil9fWNsYXNzIEpvZyBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwiam9nIixbInVzZVByaW50ZXJTZXR0aW5nIiwibm9uZSIsInBhZ2VTZXQiXSl9fWNsYXNzIExhYmVsUHJpbnRlciBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwibGFiZWxQcmludGVyIiwhMCk7dGhpcy5uYW1lPWdldFN0cmluZ09wdGlvbihlLm5hbWUsWyJ6cGwiLCJkcGwiLCJpcGwiLCJ0Y3BsIl0pO3RoaXMuYmF0Y2hPdXRwdXQ9bnVsbDt0aGlzLmZsaXBMYWJlbD1udWxsO3RoaXMuZm9udEluZm89bnVsbDt0aGlzLnhkYz1udWxsfX1jbGFzcyBMYXlvdXQgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sImxheW91dCIsWyJwYWdpbmF0ZSIsInBhbmVsIl0pfX1jbGFzcyBMZXZlbCBleHRlbmRzIEludGVnZXJPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sImxldmVsIiwwLChlPT5lPjApKX19Y2xhc3MgTGluZWFyaXplZCBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJsaW5lYXJpemVkIil9fWNsYXNzIExvY2FsZSBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwibG9jYWxlIil9fWNsYXNzIExvY2FsZVNldCBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwibG9jYWxlU2V0Iil9fWNsYXNzIExvZyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwibG9nIiwhMCk7dGhpcy5tb2RlPW51bGw7dGhpcy50aHJlc2hvbGQ9bnVsbDt0aGlzLnRvPW51bGw7dGhpcy51cmk9bnVsbH19Y2xhc3MgTWFwRWxlbWVudCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwibWFwIiwhMCk7dGhpcy5lcXVhdGU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXF1YXRlUmFuZ2U9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBNZWRpdW1JbmZvIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJtZWRpdW1JbmZvIiwhMCk7dGhpcy5tYXA9bnVsbH19Y2xhc3MgY29uZmlnX01lc3NhZ2UgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sIm1lc3NhZ2UiLCEwKTt0aGlzLm1zZ0lkPW51bGw7dGhpcy5zZXZlcml0eT1udWxsfX1jbGFzcyBNZXNzYWdpbmcgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sIm1lc3NhZ2luZyIsITApO3RoaXMubWVzc2FnZT1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIE1vZGUgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sIm1vZGUiLFsiYXBwZW5kIiwib3ZlcndyaXRlIl0pfX1jbGFzcyBNb2RpZnlBbm5vdHMgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwibW9kaWZ5QW5ub3RzIil9fWNsYXNzIE1zZ0lkIGV4dGVuZHMgSW50ZWdlck9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwibXNnSWQiLDEsKGU9PmU+PTEpKX19Y2xhc3MgTmFtZUF0dHIgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sIm5hbWVBdHRyIil9fWNsYXNzIE5ldmVyRW1iZWQgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJuZXZlckVtYmVkIil9fWNsYXNzIE51bWJlck9mQ29waWVzIGV4dGVuZHMgSW50ZWdlck9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwibnVtYmVyT2ZDb3BpZXMiLG51bGwsKGU9PmU+PTImJmU8PTUpKX19Y2xhc3MgT3BlbkFjdGlvbiBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwib3BlbkFjdGlvbiIsITApO3RoaXMuZGVzdGluYXRpb249bnVsbH19Y2xhc3MgT3V0cHV0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJvdXRwdXQiLCEwKTt0aGlzLnRvPW51bGw7dGhpcy50eXBlPW51bGw7dGhpcy51cmk9bnVsbH19Y2xhc3MgT3V0cHV0QmluIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJvdXRwdXRCaW4iKX19Y2xhc3MgT3V0cHV0WFNMIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJvdXRwdXRYU0wiLCEwKTt0aGlzLnVyaT1udWxsfX1jbGFzcyBPdmVycHJpbnQgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sIm92ZXJwcmludCIsWyJub25lIiwiYm90aCIsImRyYXciLCJmaWVsZCJdKX19Y2xhc3MgUGFja2V0cyBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwicGFja2V0cyIpfVtzcl0oKXsiKiIhPT10aGlzW2VyXSYmKHRoaXNbZXJdPXRoaXNbZXJdLnRyaW0oKS5zcGxpdCgvXHMrLykuZmlsdGVyKChlPT5bImNvbmZpZyIsImRhdGFzZXRzIiwidGVtcGxhdGUiLCJ4ZmRmIiwieHNsdCJdLmluY2x1ZGVzKGUpKSkpfX1jbGFzcyBQYWdlT2Zmc2V0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJwYWdlT2Zmc2V0Iik7dGhpcy54PWdldEludGVnZXIoe2RhdGE6ZS54LGRlZmF1bHRWYWx1ZToidXNlWERDU2V0dGluZyIsdmFsaWRhdGU6ZT0+ITB9KTt0aGlzLnk9Z2V0SW50ZWdlcih7ZGF0YTplLnksZGVmYXVsdFZhbHVlOiJ1c2VYRENTZXR0aW5nIix2YWxpZGF0ZTplPT4hMH0pfX1jbGFzcyBQYWdlUmFuZ2UgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sInBhZ2VSYW5nZSIpfVtzcl0oKXtjb25zdCBlPXRoaXNbZXJdLnRyaW0oKS5zcGxpdCgvXHMrLykubWFwKChlPT5wYXJzZUludChlLDEwKSkpLHQ9W107Zm9yKGxldCBpPTAsYT1lLmxlbmd0aDtpPGE7aSs9Mil0LnB1c2goZS5zbGljZShpLGkrMikpO3RoaXNbZXJdPXR9fWNsYXNzIFBhZ2luYXRpb24gZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sInBhZ2luYXRpb24iLFsic2ltcGxleCIsImR1cGxleFNob3J0RWRnZSIsImR1cGxleExvbmdFZGdlIl0pfX1jbGFzcyBQYWdpbmF0aW9uT3ZlcnJpZGUgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sInBhZ2luYXRpb25PdmVycmlkZSIsWyJub25lIiwiZm9yY2VEdXBsZXgiLCJmb3JjZUR1cGxleExvbmdFZGdlIiwiZm9yY2VEdXBsZXhTaG9ydEVkZ2UiLCJmb3JjZVNpbXBsZXgiXSl9fWNsYXNzIFBhcnQgZXh0ZW5kcyBJbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJwYXJ0IiwxLChlPT4hMSkpfX1jbGFzcyBQY2wgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sInBjbCIsITApO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMuYmF0Y2hPdXRwdXQ9bnVsbDt0aGlzLmZvbnRJbmZvPW51bGw7dGhpcy5qb2c9bnVsbDt0aGlzLm1lZGl1bUluZm89bnVsbDt0aGlzLm91dHB1dEJpbj1udWxsO3RoaXMucGFnZU9mZnNldD1udWxsO3RoaXMuc3RhcGxlPW51bGw7dGhpcy54ZGM9bnVsbH19Y2xhc3MgUGRmIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJwZGYiLCEwKTt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLmFkb2JlRXh0ZW5zaW9uTGV2ZWw9bnVsbDt0aGlzLmJhdGNoT3V0cHV0PW51bGw7dGhpcy5jb21wcmVzc2lvbj1udWxsO3RoaXMuY3JlYXRvcj1udWxsO3RoaXMuZW5jcnlwdGlvbj1udWxsO3RoaXMuZm9udEluZm89bnVsbDt0aGlzLmludGVyYWN0aXZlPW51bGw7dGhpcy5saW5lYXJpemVkPW51bGw7dGhpcy5vcGVuQWN0aW9uPW51bGw7dGhpcy5wZGZhPW51bGw7dGhpcy5wcm9kdWNlcj1udWxsO3RoaXMucmVuZGVyUG9saWN5PW51bGw7dGhpcy5zY3JpcHRNb2RlbD1udWxsO3RoaXMuc2lsZW50UHJpbnQ9bnVsbDt0aGlzLnN1Ym1pdEZvcm1hdD1udWxsO3RoaXMudGFnZ2VkPW51bGw7dGhpcy52ZXJzaW9uPW51bGw7dGhpcy52aWV3ZXJQcmVmZXJlbmNlcz1udWxsO3RoaXMueGRjPW51bGx9fWNsYXNzIFBkZmEgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sInBkZmEiLCEwKTt0aGlzLmFtZD1udWxsO3RoaXMuY29uZm9ybWFuY2U9bnVsbDt0aGlzLmluY2x1ZGVYRFBDb250ZW50PW51bGw7dGhpcy5wYXJ0PW51bGx9fWNsYXNzIFBlcm1pc3Npb25zIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJwZXJtaXNzaW9ucyIsITApO3RoaXMuYWNjZXNzaWJsZUNvbnRlbnQ9bnVsbDt0aGlzLmNoYW5nZT1udWxsO3RoaXMuY29udGVudENvcHk9bnVsbDt0aGlzLmRvY3VtZW50QXNzZW1ibHk9bnVsbDt0aGlzLmZvcm1GaWVsZEZpbGxpbmc9bnVsbDt0aGlzLm1vZGlmeUFubm90cz1udWxsO3RoaXMucGxhaW50ZXh0TWV0YWRhdGE9bnVsbDt0aGlzLnByaW50PW51bGw7dGhpcy5wcmludEhpZ2hRdWFsaXR5PW51bGx9fWNsYXNzIFBpY2tUcmF5QnlQREZTaXplIGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sInBpY2tUcmF5QnlQREZTaXplIil9fWNsYXNzIGNvbmZpZ19QaWN0dXJlIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJwaWN0dXJlIil9fWNsYXNzIFBsYWludGV4dE1ldGFkYXRhIGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sInBsYWludGV4dE1ldGFkYXRhIil9fWNsYXNzIFByZXNlbmNlIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJwcmVzZW5jZSIsWyJwcmVzZXJ2ZSIsImRpc3NvbHZlIiwiZGlzc29sdmVTdHJ1Y3R1cmUiLCJpZ25vcmUiLCJyZW1vdmUiXSl9fWNsYXNzIFByZXNlbnQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sInByZXNlbnQiLCEwKTt0aGlzLmJlaGF2aW9yT3ZlcnJpZGU9bnVsbDt0aGlzLmNhY2hlPW51bGw7dGhpcy5jb21tb249bnVsbDt0aGlzLmNvcGllcz1udWxsO3RoaXMuZGVzdGluYXRpb249bnVsbDt0aGlzLmluY3JlbWVudGFsTWVyZ2U9bnVsbDt0aGlzLmxheW91dD1udWxsO3RoaXMub3V0cHV0PW51bGw7dGhpcy5vdmVycHJpbnQ9bnVsbDt0aGlzLnBhZ2luYXRpb249bnVsbDt0aGlzLnBhZ2luYXRpb25PdmVycmlkZT1udWxsO3RoaXMuc2NyaXB0PW51bGw7dGhpcy52YWxpZGF0ZT1udWxsO3RoaXMueGRwPW51bGw7dGhpcy5kcml2ZXI9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMubGFiZWxQcmludGVyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnBjbD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5wZGY9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMucHM9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc3VibWl0VXJsPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLndlYkNsaWVudD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy56cGw9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBQcmludCBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJwcmludCIpfX1jbGFzcyBQcmludEhpZ2hRdWFsaXR5IGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sInByaW50SGlnaFF1YWxpdHkiKX19Y2xhc3MgUHJpbnRTY2FsaW5nIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJwcmludFNjYWxpbmciLFsiYXBwZGVmYXVsdCIsIm5vU2NhbGluZyJdKX19Y2xhc3MgUHJpbnRlck5hbWUgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sInByaW50ZXJOYW1lIil9fWNsYXNzIFByb2R1Y2VyIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJwcm9kdWNlciIpfX1jbGFzcyBQcyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwicHMiLCEwKTt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLmJhdGNoT3V0cHV0PW51bGw7dGhpcy5mb250SW5mbz1udWxsO3RoaXMuam9nPW51bGw7dGhpcy5tZWRpdW1JbmZvPW51bGw7dGhpcy5vdXRwdXRCaW49bnVsbDt0aGlzLnN0YXBsZT1udWxsO3RoaXMueGRjPW51bGx9fWNsYXNzIFJhbmdlIGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwicmFuZ2UiKX1bc3JdKCl7dGhpc1tlcl09dGhpc1tlcl0udHJpbSgpLnNwbGl0KC9ccyosXHMqLywyKS5tYXAoKGU9PmUuc3BsaXQoIi0iKS5tYXAoKGU9PnBhcnNlSW50KGUudHJpbSgpLDEwKSkpKSkuZmlsdGVyKChlPT5lLmV2ZXJ5KChlPT4haXNOYU4oZSkpKSkpLm1hcCgoZT0+ezE9PT1lLmxlbmd0aCYmZS5wdXNoKGVbMF0pO3JldHVybiBlfSkpfX1jbGFzcyBSZWNvcmQgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJyZWNvcmQiKX1bc3JdKCl7dGhpc1tlcl09dGhpc1tlcl0udHJpbSgpO2NvbnN0IGU9cGFyc2VJbnQodGhpc1tlcl0sMTApOyFpc05hTihlKSYmZT49MCYmKHRoaXNbZXJdPWUpfX1jbGFzcyBSZWxldmFudCBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sInJlbGV2YW50Iil9W3NyXSgpe3RoaXNbZXJdPXRoaXNbZXJdLnRyaW0oKS5zcGxpdCgvXHMrLyl9fWNsYXNzIFJlbmFtZSBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sInJlbmFtZSIpfVtzcl0oKXt0aGlzW2VyXT10aGlzW2VyXS50cmltKCk7KHRoaXNbZXJdLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aCgieG1sIil8fG5ldyBSZWdFeHAoIltcXHB7TH1fXVtcXHB7TH1cXGQuX1xccHtNfS1dKiIsInUiKS50ZXN0KHRoaXNbZXJdKSkmJndhcm4oIlhGQSAtIFJlbmFtZTogaW52YWxpZCBYRkEgbmFtZSIpfX1jbGFzcyBSZW5kZXJQb2xpY3kgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sInJlbmRlclBvbGljeSIsWyJzZXJ2ZXIiLCJjbGllbnQiXSl9fWNsYXNzIFJ1blNjcmlwdHMgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sInJ1blNjcmlwdHMiLFsiYm90aCIsImNsaWVudCIsIm5vbmUiLCJzZXJ2ZXIiXSl9fWNsYXNzIGNvbmZpZ19TY3JpcHQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sInNjcmlwdCIsITApO3RoaXMuY3VycmVudFBhZ2U9bnVsbDt0aGlzLmV4Y2x1ZGU9bnVsbDt0aGlzLnJ1blNjcmlwdHM9bnVsbH19Y2xhc3MgU2NyaXB0TW9kZWwgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sInNjcmlwdE1vZGVsIixbIlhGQSIsIm5vbmUiXSl9fWNsYXNzIFNldmVyaXR5IGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJzZXZlcml0eSIsWyJpZ25vcmUiLCJlcnJvciIsImluZm9ybWF0aW9uIiwidHJhY2UiLCJ3YXJuaW5nIl0pfX1jbGFzcyBTaWxlbnRQcmludCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwic2lsZW50UHJpbnQiLCEwKTt0aGlzLmFkZFNpbGVudFByaW50PW51bGw7dGhpcy5wcmludGVyTmFtZT1udWxsfX1jbGFzcyBTdGFwbGUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sInN0YXBsZSIpO3RoaXMubW9kZT1nZXRTdHJpbmdPcHRpb24oZS5tb2RlLFsidXNlUHJpbnRlclNldHRpbmciLCJvbiIsIm9mZiJdKX19Y2xhc3MgU3RhcnROb2RlIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJzdGFydE5vZGUiKX19Y2xhc3MgU3RhcnRQYWdlIGV4dGVuZHMgSW50ZWdlck9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwic3RhcnRQYWdlIiwwLChlPT4hMCkpfX1jbGFzcyBTdWJtaXRGb3JtYXQgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sInN1Ym1pdEZvcm1hdCIsWyJodG1sIiwiZGVsZWdhdGUiLCJmZGYiLCJ4bWwiLCJwZGYiXSl9fWNsYXNzIFN1Ym1pdFVybCBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwic3VibWl0VXJsIil9fWNsYXNzIFN1YnNldEJlbG93IGV4dGVuZHMgSW50ZWdlck9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwic3Vic2V0QmVsb3ciLDEwMCwoZT0+ZT49MCYmZTw9MTAwKSl9fWNsYXNzIFN1cHByZXNzQmFubmVyIGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sInN1cHByZXNzQmFubmVyIil9fWNsYXNzIFRhZ2dlZCBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJ0YWdnZWQiKX19Y2xhc3MgY29uZmlnX1RlbXBsYXRlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJ0ZW1wbGF0ZSIsITApO3RoaXMuYmFzZT1udWxsO3RoaXMucmVsZXZhbnQ9bnVsbDt0aGlzLnN0YXJ0UGFnZT1udWxsO3RoaXMudXJpPW51bGw7dGhpcy54c2w9bnVsbH19Y2xhc3MgVGhyZXNob2xkIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJ0aHJlc2hvbGQiLFsidHJhY2UiLCJlcnJvciIsImluZm9ybWF0aW9uIiwid2FybmluZyJdKX19Y2xhc3MgVG8gZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sInRvIixbIm51bGwiLCJtZW1vcnkiLCJzdGRlcnIiLCJzdGRvdXQiLCJzeXN0ZW0iLCJ1cmkiXSl9fWNsYXNzIFRlbXBsYXRlQ2FjaGUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sInRlbXBsYXRlQ2FjaGUiKTt0aGlzLm1heEVudHJpZXM9Z2V0SW50ZWdlcih7ZGF0YTplLm1heEVudHJpZXMsZGVmYXVsdFZhbHVlOjUsdmFsaWRhdGU6ZT0+ZT49MH0pfX1jbGFzcyBUcmFjZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwidHJhY2UiLCEwKTt0aGlzLmFyZWE9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBUcmFuc2Zvcm0gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sInRyYW5zZm9ybSIsITApO3RoaXMuZ3JvdXBQYXJlbnQ9bnVsbDt0aGlzLmlmRW1wdHk9bnVsbDt0aGlzLm5hbWVBdHRyPW51bGw7dGhpcy5waWN0dXJlPW51bGw7dGhpcy5wcmVzZW5jZT1udWxsO3RoaXMucmVuYW1lPW51bGw7dGhpcy53aGl0ZXNwYWNlPW51bGx9fWNsYXNzIFR5cGUgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sInR5cGUiLFsibm9uZSIsImFzY2lpODUiLCJhc2NpaUhleCIsImNjaXR0ZmF4IiwiZmxhdGUiLCJsenciLCJydW5MZW5ndGgiLCJuYXRpdmUiLCJ4ZHAiLCJtZXJnZWRYRFAiXSl9fWNsYXNzIFVyaSBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwidXJpIil9fWNsYXNzIGNvbmZpZ19WYWxpZGF0ZSBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwidmFsaWRhdGUiLFsicHJlU3VibWl0IiwicHJlUHJpbnQiLCJwcmVFeGVjdXRlIiwicHJlU2F2ZSJdKX19Y2xhc3MgVmFsaWRhdGVBcHByb3ZhbFNpZ25hdHVyZXMgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJ2YWxpZGF0ZUFwcHJvdmFsU2lnbmF0dXJlcyIpfVtzcl0oKXt0aGlzW2VyXT10aGlzW2VyXS50cmltKCkuc3BsaXQoL1xzKy8pLmZpbHRlcigoZT0+WyJkb2NSZWFkeSIsInBvc3RTaWduIl0uaW5jbHVkZXMoZSkpKX19Y2xhc3MgVmFsaWRhdGlvbk1lc3NhZ2luZyBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwidmFsaWRhdGlvbk1lc3NhZ2luZyIsWyJhbGxNZXNzYWdlc0luZGl2aWR1YWxseSIsImFsbE1lc3NhZ2VzVG9nZXRoZXIiLCJmaXJzdE1lc3NhZ2VPbmx5Iiwibm9NZXNzYWdlcyJdKX19Y2xhc3MgVmVyc2lvbiBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwidmVyc2lvbiIsWyIxLjciLCIxLjYiLCIxLjUiLCIxLjQiLCIxLjMiLCIxLjIiXSl9fWNsYXNzIFZlcnNpb25Db250cm9sIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJWZXJzaW9uQ29udHJvbCIpO3RoaXMub3V0cHV0QmVsb3c9Z2V0U3RyaW5nT3B0aW9uKGUub3V0cHV0QmVsb3csWyJ3YXJuIiwiZXJyb3IiLCJ1cGRhdGUiXSk7dGhpcy5zb3VyY2VBYm92ZT1nZXRTdHJpbmdPcHRpb24oZS5zb3VyY2VBYm92ZSxbIndhcm4iLCJlcnJvciJdKTt0aGlzLnNvdXJjZUJlbG93PWdldFN0cmluZ09wdGlvbihlLnNvdXJjZUJlbG93LFsidXBkYXRlIiwibWFpbnRhaW4iXSl9fWNsYXNzIFZpZXdlclByZWZlcmVuY2VzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJ2aWV3ZXJQcmVmZXJlbmNlcyIsITApO3RoaXMuQURCRV9KU0NvbnNvbGU9bnVsbDt0aGlzLkFEQkVfSlNEZWJ1Z2dlcj1udWxsO3RoaXMuYWRkVmlld2VyUHJlZmVyZW5jZXM9bnVsbDt0aGlzLmR1cGxleE9wdGlvbj1udWxsO3RoaXMuZW5mb3JjZT1udWxsO3RoaXMubnVtYmVyT2ZDb3BpZXM9bnVsbDt0aGlzLnBhZ2VSYW5nZT1udWxsO3RoaXMucGlja1RyYXlCeVBERlNpemU9bnVsbDt0aGlzLnByaW50U2NhbGluZz1udWxsfX1jbGFzcyBXZWJDbGllbnQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sIndlYkNsaWVudCIsITApO3RoaXMubmFtZT1lLm5hbWU/ZS5uYW1lLnRyaW0oKToiIjt0aGlzLmZvbnRJbmZvPW51bGw7dGhpcy54ZGM9bnVsbH19Y2xhc3MgV2hpdGVzcGFjZSBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwid2hpdGVzcGFjZSIsWyJwcmVzZXJ2ZSIsImx0cmltIiwibm9ybWFsaXplIiwicnRyaW0iLCJ0cmltIl0pfX1jbGFzcyBXaW5kb3cgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJ3aW5kb3ciKX1bc3JdKCl7Y29uc3QgZT10aGlzW2VyXS50cmltKCkuc3BsaXQoL1xzKixccyovLDIpLm1hcCgoZT0+cGFyc2VJbnQoZSwxMCkpKTtpZihlLnNvbWUoKGU9PmlzTmFOKGUpKSkpdGhpc1tlcl09WzAsMF07ZWxzZXsxPT09ZS5sZW5ndGgmJmUucHVzaChlWzBdKTt0aGlzW2VyXT1lfX19Y2xhc3MgWGRjIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJ4ZGMiLCEwKTt0aGlzLnVyaT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy54c2w9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBYZHAgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sInhkcCIsITApO3RoaXMucGFja2V0cz1udWxsfX1jbGFzcyBYc2wgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sInhzbCIsITApO3RoaXMuZGVidWc9bnVsbDt0aGlzLnVyaT1udWxsfX1jbGFzcyBacGwgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sInpwbCIsITApO3RoaXMubmFtZT1lLm5hbWU/ZS5uYW1lLnRyaW0oKToiIjt0aGlzLmJhdGNoT3V0cHV0PW51bGw7dGhpcy5mbGlwTGFiZWw9bnVsbDt0aGlzLmZvbnRJbmZvPW51bGw7dGhpcy54ZGM9bnVsbH19Y2xhc3MgQ29uZmlnTmFtZXNwYWNle3N0YXRpY1tvbl0oZSx0KXtpZihDb25maWdOYW1lc3BhY2UuaGFzT3duUHJvcGVydHkoZSkpcmV0dXJuIENvbmZpZ05hbWVzcGFjZVtlXSh0KX1zdGF0aWMgYWNyb2JhdChlKXtyZXR1cm4gbmV3IEFjcm9iYXQoZSl9c3RhdGljIGFjcm9iYXQ3KGUpe3JldHVybiBuZXcgQWNyb2JhdDcoZSl9c3RhdGljIEFEQkVfSlNDb25zb2xlKGUpe3JldHVybiBuZXcgQURCRV9KU0NvbnNvbGUoZSl9c3RhdGljIEFEQkVfSlNEZWJ1Z2dlcihlKXtyZXR1cm4gbmV3IEFEQkVfSlNEZWJ1Z2dlcihlKX1zdGF0aWMgYWRkU2lsZW50UHJpbnQoZSl7cmV0dXJuIG5ldyBBZGRTaWxlbnRQcmludChlKX1zdGF0aWMgYWRkVmlld2VyUHJlZmVyZW5jZXMoZSl7cmV0dXJuIG5ldyBBZGRWaWV3ZXJQcmVmZXJlbmNlcyhlKX1zdGF0aWMgYWRqdXN0RGF0YShlKXtyZXR1cm4gbmV3IEFkanVzdERhdGEoZSl9c3RhdGljIGFkb2JlRXh0ZW5zaW9uTGV2ZWwoZSl7cmV0dXJuIG5ldyBBZG9iZUV4dGVuc2lvbkxldmVsKGUpfXN0YXRpYyBhZ2VudChlKXtyZXR1cm4gbmV3IEFnZW50KGUpfXN0YXRpYyBhbHdheXNFbWJlZChlKXtyZXR1cm4gbmV3IEFsd2F5c0VtYmVkKGUpfXN0YXRpYyBhbWQoZSl7cmV0dXJuIG5ldyBBbWQoZSl9c3RhdGljIGFyZWEoZSl7cmV0dXJuIG5ldyBjb25maWdfQXJlYShlKX1zdGF0aWMgYXR0cmlidXRlcyhlKXtyZXR1cm4gbmV3IEF0dHJpYnV0ZXMoZSl9c3RhdGljIGF1dG9TYXZlKGUpe3JldHVybiBuZXcgQXV0b1NhdmUoZSl9c3RhdGljIGJhc2UoZSl7cmV0dXJuIG5ldyBCYXNlKGUpfXN0YXRpYyBiYXRjaE91dHB1dChlKXtyZXR1cm4gbmV3IEJhdGNoT3V0cHV0KGUpfXN0YXRpYyBiZWhhdmlvck92ZXJyaWRlKGUpe3JldHVybiBuZXcgQmVoYXZpb3JPdmVycmlkZShlKX1zdGF0aWMgY2FjaGUoZSl7cmV0dXJuIG5ldyBDYWNoZShlKX1zdGF0aWMgY2hhbmdlKGUpe3JldHVybiBuZXcgQ2hhbmdlKGUpfXN0YXRpYyBjb21tb24oZSl7cmV0dXJuIG5ldyBDb21tb24oZSl9c3RhdGljIGNvbXByZXNzKGUpe3JldHVybiBuZXcgQ29tcHJlc3MoZSl9c3RhdGljIGNvbXByZXNzTG9naWNhbFN0cnVjdHVyZShlKXtyZXR1cm4gbmV3IENvbXByZXNzTG9naWNhbFN0cnVjdHVyZShlKX1zdGF0aWMgY29tcHJlc3NPYmplY3RTdHJlYW0oZSl7cmV0dXJuIG5ldyBDb21wcmVzc09iamVjdFN0cmVhbShlKX1zdGF0aWMgY29tcHJlc3Npb24oZSl7cmV0dXJuIG5ldyBDb21wcmVzc2lvbihlKX1zdGF0aWMgY29uZmlnKGUpe3JldHVybiBuZXcgQ29uZmlnKGUpfXN0YXRpYyBjb25mb3JtYW5jZShlKXtyZXR1cm4gbmV3IENvbmZvcm1hbmNlKGUpfXN0YXRpYyBjb250ZW50Q29weShlKXtyZXR1cm4gbmV3IENvbnRlbnRDb3B5KGUpfXN0YXRpYyBjb3BpZXMoZSl7cmV0dXJuIG5ldyBDb3BpZXMoZSl9c3RhdGljIGNyZWF0b3IoZSl7cmV0dXJuIG5ldyBDcmVhdG9yKGUpfXN0YXRpYyBjdXJyZW50UGFnZShlKXtyZXR1cm4gbmV3IEN1cnJlbnRQYWdlKGUpfXN0YXRpYyBkYXRhKGUpe3JldHVybiBuZXcgRGF0YShlKX1zdGF0aWMgZGVidWcoZSl7cmV0dXJuIG5ldyBEZWJ1ZyhlKX1zdGF0aWMgZGVmYXVsdFR5cGVmYWNlKGUpe3JldHVybiBuZXcgRGVmYXVsdFR5cGVmYWNlKGUpfXN0YXRpYyBkZXN0aW5hdGlvbihlKXtyZXR1cm4gbmV3IERlc3RpbmF0aW9uKGUpfXN0YXRpYyBkb2N1bWVudEFzc2VtYmx5KGUpe3JldHVybiBuZXcgRG9jdW1lbnRBc3NlbWJseShlKX1zdGF0aWMgZHJpdmVyKGUpe3JldHVybiBuZXcgRHJpdmVyKGUpfXN0YXRpYyBkdXBsZXhPcHRpb24oZSl7cmV0dXJuIG5ldyBEdXBsZXhPcHRpb24oZSl9c3RhdGljIGR5bmFtaWNSZW5kZXIoZSl7cmV0dXJuIG5ldyBEeW5hbWljUmVuZGVyKGUpfXN0YXRpYyBlbWJlZChlKXtyZXR1cm4gbmV3IEVtYmVkKGUpfXN0YXRpYyBlbmNyeXB0KGUpe3JldHVybiBuZXcgY29uZmlnX0VuY3J5cHQoZSl9c3RhdGljIGVuY3J5cHRpb24oZSl7cmV0dXJuIG5ldyBjb25maWdfRW5jcnlwdGlvbihlKX1zdGF0aWMgZW5jcnlwdGlvbkxldmVsKGUpe3JldHVybiBuZXcgRW5jcnlwdGlvbkxldmVsKGUpfXN0YXRpYyBlbmZvcmNlKGUpe3JldHVybiBuZXcgRW5mb3JjZShlKX1zdGF0aWMgZXF1YXRlKGUpe3JldHVybiBuZXcgRXF1YXRlKGUpfXN0YXRpYyBlcXVhdGVSYW5nZShlKXtyZXR1cm4gbmV3IEVxdWF0ZVJhbmdlKGUpfXN0YXRpYyBleGNsdWRlKGUpe3JldHVybiBuZXcgRXhjbHVkZShlKX1zdGF0aWMgZXhjbHVkZU5TKGUpe3JldHVybiBuZXcgRXhjbHVkZU5TKGUpfXN0YXRpYyBmbGlwTGFiZWwoZSl7cmV0dXJuIG5ldyBGbGlwTGFiZWwoZSl9c3RhdGljIGZvbnRJbmZvKGUpe3JldHVybiBuZXcgY29uZmlnX0ZvbnRJbmZvKGUpfXN0YXRpYyBmb3JtRmllbGRGaWxsaW5nKGUpe3JldHVybiBuZXcgRm9ybUZpZWxkRmlsbGluZyhlKX1zdGF0aWMgZ3JvdXBQYXJlbnQoZSl7cmV0dXJuIG5ldyBHcm91cFBhcmVudChlKX1zdGF0aWMgaWZFbXB0eShlKXtyZXR1cm4gbmV3IElmRW1wdHkoZSl9c3RhdGljIGluY2x1ZGVYRFBDb250ZW50KGUpe3JldHVybiBuZXcgSW5jbHVkZVhEUENvbnRlbnQoZSl9c3RhdGljIGluY3JlbWVudGFsTG9hZChlKXtyZXR1cm4gbmV3IEluY3JlbWVudGFsTG9hZChlKX1zdGF0aWMgaW5jcmVtZW50YWxNZXJnZShlKXtyZXR1cm4gbmV3IEluY3JlbWVudGFsTWVyZ2UoZSl9c3RhdGljIGludGVyYWN0aXZlKGUpe3JldHVybiBuZXcgSW50ZXJhY3RpdmUoZSl9c3RhdGljIGpvZyhlKXtyZXR1cm4gbmV3IEpvZyhlKX1zdGF0aWMgbGFiZWxQcmludGVyKGUpe3JldHVybiBuZXcgTGFiZWxQcmludGVyKGUpfXN0YXRpYyBsYXlvdXQoZSl7cmV0dXJuIG5ldyBMYXlvdXQoZSl9c3RhdGljIGxldmVsKGUpe3JldHVybiBuZXcgTGV2ZWwoZSl9c3RhdGljIGxpbmVhcml6ZWQoZSl7cmV0dXJuIG5ldyBMaW5lYXJpemVkKGUpfXN0YXRpYyBsb2NhbGUoZSl7cmV0dXJuIG5ldyBMb2NhbGUoZSl9c3RhdGljIGxvY2FsZVNldChlKXtyZXR1cm4gbmV3IExvY2FsZVNldChlKX1zdGF0aWMgbG9nKGUpe3JldHVybiBuZXcgTG9nKGUpfXN0YXRpYyBtYXAoZSl7cmV0dXJuIG5ldyBNYXBFbGVtZW50KGUpfXN0YXRpYyBtZWRpdW1JbmZvKGUpe3JldHVybiBuZXcgTWVkaXVtSW5mbyhlKX1zdGF0aWMgbWVzc2FnZShlKXtyZXR1cm4gbmV3IGNvbmZpZ19NZXNzYWdlKGUpfXN0YXRpYyBtZXNzYWdpbmcoZSl7cmV0dXJuIG5ldyBNZXNzYWdpbmcoZSl9c3RhdGljIG1vZGUoZSl7cmV0dXJuIG5ldyBNb2RlKGUpfXN0YXRpYyBtb2RpZnlBbm5vdHMoZSl7cmV0dXJuIG5ldyBNb2RpZnlBbm5vdHMoZSl9c3RhdGljIG1zZ0lkKGUpe3JldHVybiBuZXcgTXNnSWQoZSl9c3RhdGljIG5hbWVBdHRyKGUpe3JldHVybiBuZXcgTmFtZUF0dHIoZSl9c3RhdGljIG5ldmVyRW1iZWQoZSl7cmV0dXJuIG5ldyBOZXZlckVtYmVkKGUpfXN0YXRpYyBudW1iZXJPZkNvcGllcyhlKXtyZXR1cm4gbmV3IE51bWJlck9mQ29waWVzKGUpfXN0YXRpYyBvcGVuQWN0aW9uKGUpe3JldHVybiBuZXcgT3BlbkFjdGlvbihlKX1zdGF0aWMgb3V0cHV0KGUpe3JldHVybiBuZXcgT3V0cHV0KGUpfXN0YXRpYyBvdXRwdXRCaW4oZSl7cmV0dXJuIG5ldyBPdXRwdXRCaW4oZSl9c3RhdGljIG91dHB1dFhTTChlKXtyZXR1cm4gbmV3IE91dHB1dFhTTChlKX1zdGF0aWMgb3ZlcnByaW50KGUpe3JldHVybiBuZXcgT3ZlcnByaW50KGUpfXN0YXRpYyBwYWNrZXRzKGUpe3JldHVybiBuZXcgUGFja2V0cyhlKX1zdGF0aWMgcGFnZU9mZnNldChlKXtyZXR1cm4gbmV3IFBhZ2VPZmZzZXQoZSl9c3RhdGljIHBhZ2VSYW5nZShlKXtyZXR1cm4gbmV3IFBhZ2VSYW5nZShlKX1zdGF0aWMgcGFnaW5hdGlvbihlKXtyZXR1cm4gbmV3IFBhZ2luYXRpb24oZSl9c3RhdGljIHBhZ2luYXRpb25PdmVycmlkZShlKXtyZXR1cm4gbmV3IFBhZ2luYXRpb25PdmVycmlkZShlKX1zdGF0aWMgcGFydChlKXtyZXR1cm4gbmV3IFBhcnQoZSl9c3RhdGljIHBjbChlKXtyZXR1cm4gbmV3IFBjbChlKX1zdGF0aWMgcGRmKGUpe3JldHVybiBuZXcgUGRmKGUpfXN0YXRpYyBwZGZhKGUpe3JldHVybiBuZXcgUGRmYShlKX1zdGF0aWMgcGVybWlzc2lvbnMoZSl7cmV0dXJuIG5ldyBQZXJtaXNzaW9ucyhlKX1zdGF0aWMgcGlja1RyYXlCeVBERlNpemUoZSl7cmV0dXJuIG5ldyBQaWNrVHJheUJ5UERGU2l6ZShlKX1zdGF0aWMgcGljdHVyZShlKXtyZXR1cm4gbmV3IGNvbmZpZ19QaWN0dXJlKGUpfXN0YXRpYyBwbGFpbnRleHRNZXRhZGF0YShlKXtyZXR1cm4gbmV3IFBsYWludGV4dE1ldGFkYXRhKGUpfXN0YXRpYyBwcmVzZW5jZShlKXtyZXR1cm4gbmV3IFByZXNlbmNlKGUpfXN0YXRpYyBwcmVzZW50KGUpe3JldHVybiBuZXcgUHJlc2VudChlKX1zdGF0aWMgcHJpbnQoZSl7cmV0dXJuIG5ldyBQcmludChlKX1zdGF0aWMgcHJpbnRIaWdoUXVhbGl0eShlKXtyZXR1cm4gbmV3IFByaW50SGlnaFF1YWxpdHkoZSl9c3RhdGljIHByaW50U2NhbGluZyhlKXtyZXR1cm4gbmV3IFByaW50U2NhbGluZyhlKX1zdGF0aWMgcHJpbnRlck5hbWUoZSl7cmV0dXJuIG5ldyBQcmludGVyTmFtZShlKX1zdGF0aWMgcHJvZHVjZXIoZSl7cmV0dXJuIG5ldyBQcm9kdWNlcihlKX1zdGF0aWMgcHMoZSl7cmV0dXJuIG5ldyBQcyhlKX1zdGF0aWMgcmFuZ2UoZSl7cmV0dXJuIG5ldyBSYW5nZShlKX1zdGF0aWMgcmVjb3JkKGUpe3JldHVybiBuZXcgUmVjb3JkKGUpfXN0YXRpYyByZWxldmFudChlKXtyZXR1cm4gbmV3IFJlbGV2YW50KGUpfXN0YXRpYyByZW5hbWUoZSl7cmV0dXJuIG5ldyBSZW5hbWUoZSl9c3RhdGljIHJlbmRlclBvbGljeShlKXtyZXR1cm4gbmV3IFJlbmRlclBvbGljeShlKX1zdGF0aWMgcnVuU2NyaXB0cyhlKXtyZXR1cm4gbmV3IFJ1blNjcmlwdHMoZSl9c3RhdGljIHNjcmlwdChlKXtyZXR1cm4gbmV3IGNvbmZpZ19TY3JpcHQoZSl9c3RhdGljIHNjcmlwdE1vZGVsKGUpe3JldHVybiBuZXcgU2NyaXB0TW9kZWwoZSl9c3RhdGljIHNldmVyaXR5KGUpe3JldHVybiBuZXcgU2V2ZXJpdHkoZSl9c3RhdGljIHNpbGVudFByaW50KGUpe3JldHVybiBuZXcgU2lsZW50UHJpbnQoZSl9c3RhdGljIHN0YXBsZShlKXtyZXR1cm4gbmV3IFN0YXBsZShlKX1zdGF0aWMgc3RhcnROb2RlKGUpe3JldHVybiBuZXcgU3RhcnROb2RlKGUpfXN0YXRpYyBzdGFydFBhZ2UoZSl7cmV0dXJuIG5ldyBTdGFydFBhZ2UoZSl9c3RhdGljIHN1Ym1pdEZvcm1hdChlKXtyZXR1cm4gbmV3IFN1Ym1pdEZvcm1hdChlKX1zdGF0aWMgc3VibWl0VXJsKGUpe3JldHVybiBuZXcgU3VibWl0VXJsKGUpfXN0YXRpYyBzdWJzZXRCZWxvdyhlKXtyZXR1cm4gbmV3IFN1YnNldEJlbG93KGUpfXN0YXRpYyBzdXBwcmVzc0Jhbm5lcihlKXtyZXR1cm4gbmV3IFN1cHByZXNzQmFubmVyKGUpfXN0YXRpYyB0YWdnZWQoZSl7cmV0dXJuIG5ldyBUYWdnZWQoZSl9c3RhdGljIHRlbXBsYXRlKGUpe3JldHVybiBuZXcgY29uZmlnX1RlbXBsYXRlKGUpfXN0YXRpYyB0ZW1wbGF0ZUNhY2hlKGUpe3JldHVybiBuZXcgVGVtcGxhdGVDYWNoZShlKX1zdGF0aWMgdGhyZXNob2xkKGUpe3JldHVybiBuZXcgVGhyZXNob2xkKGUpfXN0YXRpYyB0byhlKXtyZXR1cm4gbmV3IFRvKGUpfXN0YXRpYyB0cmFjZShlKXtyZXR1cm4gbmV3IFRyYWNlKGUpfXN0YXRpYyB0cmFuc2Zvcm0oZSl7cmV0dXJuIG5ldyBUcmFuc2Zvcm0oZSl9c3RhdGljIHR5cGUoZSl7cmV0dXJuIG5ldyBUeXBlKGUpfXN0YXRpYyB1cmkoZSl7cmV0dXJuIG5ldyBVcmkoZSl9c3RhdGljIHZhbGlkYXRlKGUpe3JldHVybiBuZXcgY29uZmlnX1ZhbGlkYXRlKGUpfXN0YXRpYyB2YWxpZGF0ZUFwcHJvdmFsU2lnbmF0dXJlcyhlKXtyZXR1cm4gbmV3IFZhbGlkYXRlQXBwcm92YWxTaWduYXR1cmVzKGUpfXN0YXRpYyB2YWxpZGF0aW9uTWVzc2FnaW5nKGUpe3JldHVybiBuZXcgVmFsaWRhdGlvbk1lc3NhZ2luZyhlKX1zdGF0aWMgdmVyc2lvbihlKXtyZXR1cm4gbmV3IFZlcnNpb24oZSl9c3RhdGljIHZlcnNpb25Db250cm9sKGUpe3JldHVybiBuZXcgVmVyc2lvbkNvbnRyb2woZSl9c3RhdGljIHZpZXdlclByZWZlcmVuY2VzKGUpe3JldHVybiBuZXcgVmlld2VyUHJlZmVyZW5jZXMoZSl9c3RhdGljIHdlYkNsaWVudChlKXtyZXR1cm4gbmV3IFdlYkNsaWVudChlKX1zdGF0aWMgd2hpdGVzcGFjZShlKXtyZXR1cm4gbmV3IFdoaXRlc3BhY2UoZSl9c3RhdGljIHdpbmRvdyhlKXtyZXR1cm4gbmV3IFdpbmRvdyhlKX1zdGF0aWMgeGRjKGUpe3JldHVybiBuZXcgWGRjKGUpfXN0YXRpYyB4ZHAoZSl7cmV0dXJuIG5ldyBYZHAoZSl9c3RhdGljIHhzbChlKXtyZXR1cm4gbmV3IFhzbChlKX1zdGF0aWMgenBsKGUpe3JldHVybiBuZXcgWnBsKGUpfX1jb25zdCBPbj1nbi5jb25uZWN0aW9uU2V0LmlkO2NsYXNzIENvbm5lY3Rpb25TZXQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoT24sImNvbm5lY3Rpb25TZXQiLCEwKTt0aGlzLndzZGxDb25uZWN0aW9uPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnhtbENvbm5lY3Rpb249bmV3IFhGQU9iamVjdEFycmF5O3RoaXMueHNkQ29ubmVjdGlvbj1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIEVmZmVjdGl2ZUlucHV0UG9saWN5IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE9uLCJlZmZlY3RpdmVJbnB1dFBvbGljeSIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBFZmZlY3RpdmVPdXRwdXRQb2xpY3kgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoT24sImVmZmVjdGl2ZU91dHB1dFBvbGljeSIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBPcGVyYXRpb24gZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoT24sIm9wZXJhdGlvbiIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5pbnB1dD1lLmlucHV0fHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLm91dHB1dD1lLm91dHB1dHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBSb290RWxlbWVudCBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihPbiwicm9vdEVsZW1lbnQiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgU29hcEFjdGlvbiBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihPbiwic29hcEFjdGlvbiIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBTb2FwQWRkcmVzcyBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihPbiwic29hcEFkZHJlc3MiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgY29ubmVjdGlvbl9zZXRfVXJpIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE9uLCJ1cmkiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgV3NkbEFkZHJlc3MgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoT24sIndzZGxBZGRyZXNzIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFdzZGxDb25uZWN0aW9uIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE9uLCJ3c2RsQ29ubmVjdGlvbiIsITApO3RoaXMuZGF0YURlc2NyaXB0aW9uPWUuZGF0YURlc2NyaXB0aW9ufHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLmVmZmVjdGl2ZUlucHV0UG9saWN5PW51bGw7dGhpcy5lZmZlY3RpdmVPdXRwdXRQb2xpY3k9bnVsbDt0aGlzLm9wZXJhdGlvbj1udWxsO3RoaXMuc29hcEFjdGlvbj1udWxsO3RoaXMuc29hcEFkZHJlc3M9bnVsbDt0aGlzLndzZGxBZGRyZXNzPW51bGx9fWNsYXNzIFhtbENvbm5lY3Rpb24gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoT24sInhtbENvbm5lY3Rpb24iLCEwKTt0aGlzLmRhdGFEZXNjcmlwdGlvbj1lLmRhdGFEZXNjcmlwdGlvbnx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51cmk9bnVsbH19Y2xhc3MgWHNkQ29ubmVjdGlvbiBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihPbiwieHNkQ29ubmVjdGlvbiIsITApO3RoaXMuZGF0YURlc2NyaXB0aW9uPWUuZGF0YURlc2NyaXB0aW9ufHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnJvb3RFbGVtZW50PW51bGw7dGhpcy51cmk9bnVsbH19Y2xhc3MgQ29ubmVjdGlvblNldE5hbWVzcGFjZXtzdGF0aWNbb25dKGUsdCl7aWYoQ29ubmVjdGlvblNldE5hbWVzcGFjZS5oYXNPd25Qcm9wZXJ0eShlKSlyZXR1cm4gQ29ubmVjdGlvblNldE5hbWVzcGFjZVtlXSh0KX1zdGF0aWMgY29ubmVjdGlvblNldChlKXtyZXR1cm4gbmV3IENvbm5lY3Rpb25TZXQoZSl9c3RhdGljIGVmZmVjdGl2ZUlucHV0UG9saWN5KGUpe3JldHVybiBuZXcgRWZmZWN0aXZlSW5wdXRQb2xpY3koZSl9c3RhdGljIGVmZmVjdGl2ZU91dHB1dFBvbGljeShlKXtyZXR1cm4gbmV3IEVmZmVjdGl2ZU91dHB1dFBvbGljeShlKX1zdGF0aWMgb3BlcmF0aW9uKGUpe3JldHVybiBuZXcgT3BlcmF0aW9uKGUpfXN0YXRpYyByb290RWxlbWVudChlKXtyZXR1cm4gbmV3IFJvb3RFbGVtZW50KGUpfXN0YXRpYyBzb2FwQWN0aW9uKGUpe3JldHVybiBuZXcgU29hcEFjdGlvbihlKX1zdGF0aWMgc29hcEFkZHJlc3MoZSl7cmV0dXJuIG5ldyBTb2FwQWRkcmVzcyhlKX1zdGF0aWMgdXJpKGUpe3JldHVybiBuZXcgY29ubmVjdGlvbl9zZXRfVXJpKGUpfXN0YXRpYyB3c2RsQWRkcmVzcyhlKXtyZXR1cm4gbmV3IFdzZGxBZGRyZXNzKGUpfXN0YXRpYyB3c2RsQ29ubmVjdGlvbihlKXtyZXR1cm4gbmV3IFdzZGxDb25uZWN0aW9uKGUpfXN0YXRpYyB4bWxDb25uZWN0aW9uKGUpe3JldHVybiBuZXcgWG1sQ29ubmVjdGlvbihlKX1zdGF0aWMgeHNkQ29ubmVjdGlvbihlKXtyZXR1cm4gbmV3IFhzZENvbm5lY3Rpb24oZSl9fWNvbnN0IFBuPWduLmRhdGFzZXRzLmlkO2NsYXNzIGRhdGFzZXRzX0RhdGEgZXh0ZW5kcyBYbWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUG4sImRhdGEiLGUpfVtHcl0oKXtyZXR1cm4hMH19Y2xhc3MgRGF0YXNldHMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoUG4sImRhdGFzZXRzIiwhMCk7dGhpcy5kYXRhPW51bGw7dGhpcy5TaWduYXR1cmU9bnVsbH1bS3JdKGUpe2NvbnN0IHQ9ZVtZcl07KCJkYXRhIj09PXQmJmVbSnJdPT09UG58fCJTaWduYXR1cmUiPT09dCYmZVtKcl09PT1nbi5zaWduYXR1cmUuaWQpJiYodGhpc1t0XT1lKTt0aGlzW1hzXShlKX19Y2xhc3MgRGF0YXNldHNOYW1lc3BhY2V7c3RhdGljW29uXShlLHQpe2lmKERhdGFzZXRzTmFtZXNwYWNlLmhhc093blByb3BlcnR5KGUpKXJldHVybiBEYXRhc2V0c05hbWVzcGFjZVtlXSh0KX1zdGF0aWMgZGF0YXNldHMoZSl7cmV0dXJuIG5ldyBEYXRhc2V0cyhlKX1zdGF0aWMgZGF0YShlKXtyZXR1cm4gbmV3IGRhdGFzZXRzX0RhdGEoZSl9fWNvbnN0IFduPWduLmxvY2FsZVNldC5pZDtjbGFzcyBDYWxlbmRhclN5bWJvbHMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoV24sImNhbGVuZGFyU3ltYm9scyIsITApO3RoaXMubmFtZT0iZ3JlZ29yaWFuIjt0aGlzLmRheU5hbWVzPW5ldyBYRkFPYmplY3RBcnJheSgyKTt0aGlzLmVyYU5hbWVzPW51bGw7dGhpcy5tZXJpZGllbU5hbWVzPW51bGw7dGhpcy5tb250aE5hbWVzPW5ldyBYRkFPYmplY3RBcnJheSgyKX19Y2xhc3MgQ3VycmVuY3lTeW1ib2wgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoV24sImN1cnJlbmN5U3ltYm9sIik7dGhpcy5uYW1lPWdldFN0cmluZ09wdGlvbihlLm5hbWUsWyJzeW1ib2wiLCJpc29uYW1lIiwiZGVjaW1hbCJdKX19Y2xhc3MgQ3VycmVuY3lTeW1ib2xzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFduLCJjdXJyZW5jeVN5bWJvbHMiLCEwKTt0aGlzLmN1cnJlbmN5U3ltYm9sPW5ldyBYRkFPYmplY3RBcnJheSgzKX19Y2xhc3MgRGF0ZVBhdHRlcm4gZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoV24sImRhdGVQYXR0ZXJuIik7dGhpcy5uYW1lPWdldFN0cmluZ09wdGlvbihlLm5hbWUsWyJmdWxsIiwibG9uZyIsIm1lZCIsInNob3J0Il0pfX1jbGFzcyBEYXRlUGF0dGVybnMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoV24sImRhdGVQYXR0ZXJucyIsITApO3RoaXMuZGF0ZVBhdHRlcm49bmV3IFhGQU9iamVjdEFycmF5KDQpfX1jbGFzcyBEYXRlVGltZVN5bWJvbHMgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFduLCJkYXRlVGltZVN5bWJvbHMiKX19Y2xhc3MgRGF5IGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFduLCJkYXkiKX19Y2xhc3MgRGF5TmFtZXMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoV24sImRheU5hbWVzIiwhMCk7dGhpcy5hYmJyPWdldEludGVnZXIoe2RhdGE6ZS5hYmJyLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5kYXk9bmV3IFhGQU9iamVjdEFycmF5KDcpfX1jbGFzcyBFcmEgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoV24sImVyYSIpfX1jbGFzcyBFcmFOYW1lcyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihXbiwiZXJhTmFtZXMiLCEwKTt0aGlzLmVyYT1uZXcgWEZBT2JqZWN0QXJyYXkoMil9fWNsYXNzIGxvY2FsZV9zZXRfTG9jYWxlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFduLCJsb2NhbGUiLCEwKTt0aGlzLmRlc2M9ZS5kZXNjfHwiIjt0aGlzLm5hbWU9Imlzb25hbWUiO3RoaXMuY2FsZW5kYXJTeW1ib2xzPW51bGw7dGhpcy5jdXJyZW5jeVN5bWJvbHM9bnVsbDt0aGlzLmRhdGVQYXR0ZXJucz1udWxsO3RoaXMuZGF0ZVRpbWVTeW1ib2xzPW51bGw7dGhpcy5udW1iZXJQYXR0ZXJucz1udWxsO3RoaXMubnVtYmVyU3ltYm9scz1udWxsO3RoaXMudGltZVBhdHRlcm5zPW51bGw7dGhpcy50eXBlRmFjZXM9bnVsbH19Y2xhc3MgbG9jYWxlX3NldF9Mb2NhbGVTZXQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoV24sImxvY2FsZVNldCIsITApO3RoaXMubG9jYWxlPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgTWVyaWRpZW0gZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoV24sIm1lcmlkaWVtIil9fWNsYXNzIE1lcmlkaWVtTmFtZXMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoV24sIm1lcmlkaWVtTmFtZXMiLCEwKTt0aGlzLm1lcmlkaWVtPW5ldyBYRkFPYmplY3RBcnJheSgyKX19Y2xhc3MgTW9udGggZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoV24sIm1vbnRoIil9fWNsYXNzIE1vbnRoTmFtZXMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoV24sIm1vbnRoTmFtZXMiLCEwKTt0aGlzLmFiYnI9Z2V0SW50ZWdlcih7ZGF0YTplLmFiYnIsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLm1vbnRoPW5ldyBYRkFPYmplY3RBcnJheSgxMil9fWNsYXNzIE51bWJlclBhdHRlcm4gZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoV24sIm51bWJlclBhdHRlcm4iKTt0aGlzLm5hbWU9Z2V0U3RyaW5nT3B0aW9uKGUubmFtZSxbImZ1bGwiLCJsb25nIiwibWVkIiwic2hvcnQiXSl9fWNsYXNzIE51bWJlclBhdHRlcm5zIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFduLCJudW1iZXJQYXR0ZXJucyIsITApO3RoaXMubnVtYmVyUGF0dGVybj1uZXcgWEZBT2JqZWN0QXJyYXkoNCl9fWNsYXNzIE51bWJlclN5bWJvbCBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihXbiwibnVtYmVyU3ltYm9sIik7dGhpcy5uYW1lPWdldFN0cmluZ09wdGlvbihlLm5hbWUsWyJkZWNpbWFsIiwiZ3JvdXBpbmciLCJwZXJjZW50IiwibWludXMiLCJ6ZXJvIl0pfX1jbGFzcyBOdW1iZXJTeW1ib2xzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFduLCJudW1iZXJTeW1ib2xzIiwhMCk7dGhpcy5udW1iZXJTeW1ib2w9bmV3IFhGQU9iamVjdEFycmF5KDUpfX1jbGFzcyBUaW1lUGF0dGVybiBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihXbiwidGltZVBhdHRlcm4iKTt0aGlzLm5hbWU9Z2V0U3RyaW5nT3B0aW9uKGUubmFtZSxbImZ1bGwiLCJsb25nIiwibWVkIiwic2hvcnQiXSl9fWNsYXNzIFRpbWVQYXR0ZXJucyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihXbiwidGltZVBhdHRlcm5zIiwhMCk7dGhpcy50aW1lUGF0dGVybj1uZXcgWEZBT2JqZWN0QXJyYXkoNCl9fWNsYXNzIFR5cGVGYWNlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFduLCJ0eXBlRmFjZSIsITApO3RoaXMubmFtZT0iInxlLm5hbWV9fWNsYXNzIFR5cGVGYWNlcyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihXbiwidHlwZUZhY2VzIiwhMCk7dGhpcy50eXBlRmFjZT1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIExvY2FsZVNldE5hbWVzcGFjZXtzdGF0aWNbb25dKGUsdCl7aWYoTG9jYWxlU2V0TmFtZXNwYWNlLmhhc093blByb3BlcnR5KGUpKXJldHVybiBMb2NhbGVTZXROYW1lc3BhY2VbZV0odCl9c3RhdGljIGNhbGVuZGFyU3ltYm9scyhlKXtyZXR1cm4gbmV3IENhbGVuZGFyU3ltYm9scyhlKX1zdGF0aWMgY3VycmVuY3lTeW1ib2woZSl7cmV0dXJuIG5ldyBDdXJyZW5jeVN5bWJvbChlKX1zdGF0aWMgY3VycmVuY3lTeW1ib2xzKGUpe3JldHVybiBuZXcgQ3VycmVuY3lTeW1ib2xzKGUpfXN0YXRpYyBkYXRlUGF0dGVybihlKXtyZXR1cm4gbmV3IERhdGVQYXR0ZXJuKGUpfXN0YXRpYyBkYXRlUGF0dGVybnMoZSl7cmV0dXJuIG5ldyBEYXRlUGF0dGVybnMoZSl9c3RhdGljIGRhdGVUaW1lU3ltYm9scyhlKXtyZXR1cm4gbmV3IERhdGVUaW1lU3ltYm9scyhlKX1zdGF0aWMgZGF5KGUpe3JldHVybiBuZXcgRGF5KGUpfXN0YXRpYyBkYXlOYW1lcyhlKXtyZXR1cm4gbmV3IERheU5hbWVzKGUpfXN0YXRpYyBlcmEoZSl7cmV0dXJuIG5ldyBFcmEoZSl9c3RhdGljIGVyYU5hbWVzKGUpe3JldHVybiBuZXcgRXJhTmFtZXMoZSl9c3RhdGljIGxvY2FsZShlKXtyZXR1cm4gbmV3IGxvY2FsZV9zZXRfTG9jYWxlKGUpfXN0YXRpYyBsb2NhbGVTZXQoZSl7cmV0dXJuIG5ldyBsb2NhbGVfc2V0X0xvY2FsZVNldChlKX1zdGF0aWMgbWVyaWRpZW0oZSl7cmV0dXJuIG5ldyBNZXJpZGllbShlKX1zdGF0aWMgbWVyaWRpZW1OYW1lcyhlKXtyZXR1cm4gbmV3IE1lcmlkaWVtTmFtZXMoZSl9c3RhdGljIG1vbnRoKGUpe3JldHVybiBuZXcgTW9udGgoZSl9c3RhdGljIG1vbnRoTmFtZXMoZSl7cmV0dXJuIG5ldyBNb250aE5hbWVzKGUpfXN0YXRpYyBudW1iZXJQYXR0ZXJuKGUpe3JldHVybiBuZXcgTnVtYmVyUGF0dGVybihlKX1zdGF0aWMgbnVtYmVyUGF0dGVybnMoZSl7cmV0dXJuIG5ldyBOdW1iZXJQYXR0ZXJucyhlKX1zdGF0aWMgbnVtYmVyU3ltYm9sKGUpe3JldHVybiBuZXcgTnVtYmVyU3ltYm9sKGUpfXN0YXRpYyBudW1iZXJTeW1ib2xzKGUpe3JldHVybiBuZXcgTnVtYmVyU3ltYm9scyhlKX1zdGF0aWMgdGltZVBhdHRlcm4oZSl7cmV0dXJuIG5ldyBUaW1lUGF0dGVybihlKX1zdGF0aWMgdGltZVBhdHRlcm5zKGUpe3JldHVybiBuZXcgVGltZVBhdHRlcm5zKGUpfXN0YXRpYyB0eXBlRmFjZShlKXtyZXR1cm4gbmV3IFR5cGVGYWNlKGUpfXN0YXRpYyB0eXBlRmFjZXMoZSl7cmV0dXJuIG5ldyBUeXBlRmFjZXMoZSl9fWNvbnN0IGpuPWduLnNpZ25hdHVyZS5pZDtjbGFzcyBzaWduYXR1cmVfU2lnbmF0dXJlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpuLCJzaWduYXR1cmUiLCEwKX19Y2xhc3MgU2lnbmF0dXJlTmFtZXNwYWNle3N0YXRpY1tvbl0oZSx0KXtpZihTaWduYXR1cmVOYW1lc3BhY2UuaGFzT3duUHJvcGVydHkoZSkpcmV0dXJuIFNpZ25hdHVyZU5hbWVzcGFjZVtlXSh0KX1zdGF0aWMgc2lnbmF0dXJlKGUpe3JldHVybiBuZXcgc2lnbmF0dXJlX1NpZ25hdHVyZShlKX19Y29uc3QgWG49Z24uc3R5bGVzaGVldC5pZDtjbGFzcyBTdHlsZXNoZWV0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFhuLCJzdHlsZXNoZWV0IiwhMCl9fWNsYXNzIFN0eWxlc2hlZXROYW1lc3BhY2V7c3RhdGljW29uXShlLHQpe2lmKFN0eWxlc2hlZXROYW1lc3BhY2UuaGFzT3duUHJvcGVydHkoZSkpcmV0dXJuIFN0eWxlc2hlZXROYW1lc3BhY2VbZV0odCl9c3RhdGljIHN0eWxlc2hlZXQoZSl7cmV0dXJuIG5ldyBTdHlsZXNoZWV0KGUpfX1jb25zdCBabj1nbi54ZHAuaWQ7Y2xhc3MgeGRwX1hkcCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihabiwieGRwIiwhMCk7dGhpcy51dWlkPWUudXVpZHx8IiI7dGhpcy50aW1lU3RhbXA9ZS50aW1lU3RhbXB8fCIiO3RoaXMuY29uZmlnPW51bGw7dGhpcy5jb25uZWN0aW9uU2V0PW51bGw7dGhpcy5kYXRhc2V0cz1udWxsO3RoaXMubG9jYWxlU2V0PW51bGw7dGhpcy5zdHlsZXNoZWV0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRlbXBsYXRlPW51bGx9W1RyXShlKXtjb25zdCB0PWduW2VbWXJdXTtyZXR1cm4gdCYmZVtKcl09PT10LmlkfX1jbGFzcyBYZHBOYW1lc3BhY2V7c3RhdGljW29uXShlLHQpe2lmKFhkcE5hbWVzcGFjZS5oYXNPd25Qcm9wZXJ0eShlKSlyZXR1cm4gWGRwTmFtZXNwYWNlW2VdKHQpfXN0YXRpYyB4ZHAoZSl7cmV0dXJuIG5ldyB4ZHBfWGRwKGUpfX1jb25zdCBWbj1nbi54aHRtbC5pZCx6bj1TeW1ib2woKSxfbj1uZXcgU2V0KFsiY29sb3IiLCJmb250IiwiZm9udC1mYW1pbHkiLCJmb250LXNpemUiLCJmb250LXN0cmV0Y2giLCJmb250LXN0eWxlIiwiZm9udC13ZWlnaHQiLCJtYXJnaW4iLCJtYXJnaW4tYm90dG9tIiwibWFyZ2luLWxlZnQiLCJtYXJnaW4tcmlnaHQiLCJtYXJnaW4tdG9wIiwibGV0dGVyLXNwYWNpbmciLCJsaW5lLWhlaWdodCIsIm9ycGhhbnMiLCJwYWdlLWJyZWFrLWFmdGVyIiwicGFnZS1icmVhay1iZWZvcmUiLCJwYWdlLWJyZWFrLWluc2lkZSIsInRhYi1pbnRlcnZhbCIsInRhYi1zdG9wIiwidGV4dC1hbGlnbiIsInRleHQtZGVjb3JhdGlvbiIsInRleHQtaW5kZW50IiwidmVydGljYWwtYWxpZ24iLCJ3aWRvd3MiLCJrZXJuaW5nLW1vZGUiLCJ4ZmEtZm9udC1ob3Jpem9udGFsLXNjYWxlIiwieGZhLWZvbnQtdmVydGljYWwtc2NhbGUiLCJ4ZmEtc3BhY2VydW4iLCJ4ZmEtdGFiLXN0b3BzIl0pLCRuPW5ldyBNYXAoW1sicGFnZS1icmVhay1hZnRlciIsImJyZWFrQWZ0ZXIiXSxbInBhZ2UtYnJlYWstYmVmb3JlIiwiYnJlYWtCZWZvcmUiXSxbInBhZ2UtYnJlYWstaW5zaWRlIiwiYnJlYWtJbnNpZGUiXSxbImtlcm5pbmctbW9kZSIsZT0+Im5vbmUiPT09ZT8ibm9uZSI6Im5vcm1hbCJdLFsieGZhLWZvbnQtaG9yaXpvbnRhbC1zY2FsZSIsZT0+YHNjYWxlWCgke01hdGgubWF4KDAsTWF0aC5taW4ocGFyc2VJbnQoZSkvMTAwKSkudG9GaXhlZCgyKX0pYF0sWyJ4ZmEtZm9udC12ZXJ0aWNhbC1zY2FsZSIsZT0+YHNjYWxlWSgke01hdGgubWF4KDAsTWF0aC5taW4ocGFyc2VJbnQoZSkvMTAwKSkudG9GaXhlZCgyKX0pYF0sWyJ4ZmEtc3BhY2VydW4iLCIiXSxbInhmYS10YWItc3RvcHMiLCIiXSxbImZvbnQtc2l6ZSIsKGUsdCk9Pm1lYXN1cmVUb1N0cmluZyguOTkqKGU9dC5mb250U2l6ZT1nZXRNZWFzdXJlbWVudChlKSkpXSxbImxldHRlci1zcGFjaW5nIixlPT5tZWFzdXJlVG9TdHJpbmcoZ2V0TWVhc3VyZW1lbnQoZSkpXSxbImxpbmUtaGVpZ2h0IixlPT5tZWFzdXJlVG9TdHJpbmcoZ2V0TWVhc3VyZW1lbnQoZSkpXSxbIm1hcmdpbiIsZT0+bWVhc3VyZVRvU3RyaW5nKGdldE1lYXN1cmVtZW50KGUpKV0sWyJtYXJnaW4tYm90dG9tIixlPT5tZWFzdXJlVG9TdHJpbmcoZ2V0TWVhc3VyZW1lbnQoZSkpXSxbIm1hcmdpbi1sZWZ0IixlPT5tZWFzdXJlVG9TdHJpbmcoZ2V0TWVhc3VyZW1lbnQoZSkpXSxbIm1hcmdpbi1yaWdodCIsZT0+bWVhc3VyZVRvU3RyaW5nKGdldE1lYXN1cmVtZW50KGUpKV0sWyJtYXJnaW4tdG9wIixlPT5tZWFzdXJlVG9TdHJpbmcoZ2V0TWVhc3VyZW1lbnQoZSkpXSxbInRleHQtaW5kZW50IixlPT5tZWFzdXJlVG9TdHJpbmcoZ2V0TWVhc3VyZW1lbnQoZSkpXSxbImZvbnQtZmFtaWx5IixlPT5lXSxbInZlcnRpY2FsLWFsaWduIixlPT5tZWFzdXJlVG9TdHJpbmcoZ2V0TWVhc3VyZW1lbnQoZSkpXV0pLEFvPS9ccysvZyxlbz0vW1xyXG5dKy9nLHRvPS9cclxuPy9nO2Z1bmN0aW9uIG1hcFN0eWxlKGUsdCxpKXtjb25zdCBhPU9iamVjdC5jcmVhdGUobnVsbCk7aWYoIWUpcmV0dXJuIGE7Y29uc3Qgcz1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcihjb25zdFt0LGldb2YgZS5zcGxpdCgiOyIpLm1hcCgoZT0+ZS5zcGxpdCgiOiIsMikpKSl7Y29uc3QgZT0kbi5nZXQodCk7aWYoIiI9PT1lKWNvbnRpbnVlO2xldCByPWk7ZSYmKHI9InN0cmluZyI9PXR5cGVvZiBlP2U6ZShpLHMpKTt0LmVuZHNXaXRoKCJzY2FsZSIpP2EudHJhbnNmb3JtPWEudHJhbnNmb3JtP2Ake2FbdF19ICR7cn1gOnI6YVt0LnJlcGxhY2VBbGwoLy0oW2EtekEtWl0pL2csKChlLHQpPT50LnRvVXBwZXJDYXNlKCkpKV09cn1hLmZvbnRGYW1pbHkmJnNldEZvbnRGYW1pbHkoe3R5cGVmYWNlOmEuZm9udEZhbWlseSx3ZWlnaHQ6YS5mb250V2VpZ2h0fHwibm9ybWFsIixwb3N0dXJlOmEuZm9udFN0eWxlfHwibm9ybWFsIixzaXplOnMuZm9udFNpemV8fDB9LHQsdFt5cl0uZm9udEZpbmRlcixhKTtpZihpJiZhLnZlcnRpY2FsQWxpZ24mJiIwcHgiIT09YS52ZXJ0aWNhbEFsaWduJiZhLmZvbnRTaXplKXtjb25zdCBlPS41ODMsdD0uMzMzLGk9Z2V0TWVhc3VyZW1lbnQoYS5mb250U2l6ZSk7YS5mb250U2l6ZT1tZWFzdXJlVG9TdHJpbmcoaSplKTthLnZlcnRpY2FsQWxpZ249bWVhc3VyZVRvU3RyaW5nKE1hdGguc2lnbihnZXRNZWFzdXJlbWVudChhLnZlcnRpY2FsQWxpZ24pKSppKnQpfWkmJmEuZm9udFNpemUmJihhLmZvbnRTaXplPWBjYWxjKCR7YS5mb250U2l6ZX0gKiB2YXIoLS1zY2FsZS1mYWN0b3IpKWApO2ZpeFRleHRJbmRlbnQoYSk7cmV0dXJuIGF9Y29uc3QgaW89bmV3IFNldChbImJvZHkiLCJodG1sIl0pO2NsYXNzIFhodG1sT2JqZWN0IGV4dGVuZHMgWG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoVm4sdCk7dGhpc1t6bl09ITE7dGhpcy5zdHlsZT1lLnN0eWxlfHwiIn1bVnNdKGUpe3N1cGVyW1ZzXShlKTt0aGlzLnN0eWxlPWZ1bmN0aW9uIGNoZWNrU3R5bGUoZSl7cmV0dXJuIGUuc3R5bGU/ZS5zdHlsZS50cmltKCkuc3BsaXQoL1xzKjtccyovKS5maWx0ZXIoKGU9PiEhZSkpLm1hcCgoZT0+ZS5zcGxpdCgvXHMqOlxzKi8sMikpKS5maWx0ZXIoKChbdCxpXSk9PnsiZm9udC1mYW1pbHkiPT09dCYmZVt5cl0udXNlZFR5cGVmYWNlcy5hZGQoaSk7cmV0dXJuIF9uLmhhcyh0KX0pKS5tYXAoKGU9PmUuam9pbigiOiIpKSkuam9pbigiOyIpOiIifSh0aGlzKX1bV3NdKCl7cmV0dXJuIWlvLmhhcyh0aGlzW1lyXSl9W3FyXShlLHQ9ITEpe2lmKHQpdGhpc1t6bl09ITA7ZWxzZXtlPWUucmVwbGFjZUFsbChlbywiIik7dGhpcy5zdHlsZS5pbmNsdWRlcygieGZhLXNwYWNlcnVuOnllcyIpfHwoZT1lLnJlcGxhY2VBbGwoQW8sIiAiKSl9ZSYmKHRoaXNbZXJdKz1lKX1bT3JdKGUsdD0hMCl7Y29uc3QgaT1PYmplY3QuY3JlYXRlKG51bGwpLGE9e3RvcDpOYU4sYm90dG9tOk5hTixsZWZ0Ok5hTixyaWdodDpOYU59O2xldCBzPW51bGw7Zm9yKGNvbnN0W2UsdF1vZiB0aGlzLnN0eWxlLnNwbGl0KCI7IikubWFwKChlPT5lLnNwbGl0KCI6IiwyKSkpKXN3aXRjaChlKXtjYXNlImZvbnQtZmFtaWx5IjppLnR5cGVmYWNlPXN0cmlwUXVvdGVzKHQpO2JyZWFrO2Nhc2UiZm9udC1zaXplIjppLnNpemU9Z2V0TWVhc3VyZW1lbnQodCk7YnJlYWs7Y2FzZSJmb250LXdlaWdodCI6aS53ZWlnaHQ9dDticmVhaztjYXNlImZvbnQtc3R5bGUiOmkucG9zdHVyZT10O2JyZWFrO2Nhc2UibGV0dGVyLXNwYWNpbmciOmkubGV0dGVyU3BhY2luZz1nZXRNZWFzdXJlbWVudCh0KTticmVhaztjYXNlIm1hcmdpbiI6Y29uc3QgZT10LnNwbGl0KC8gXHQvKS5tYXAoKGU9PmdldE1lYXN1cmVtZW50KGUpKSk7c3dpdGNoKGUubGVuZ3RoKXtjYXNlIDE6YS50b3A9YS5ib3R0b209YS5sZWZ0PWEucmlnaHQ9ZVswXTticmVhaztjYXNlIDI6YS50b3A9YS5ib3R0b209ZVswXTthLmxlZnQ9YS5yaWdodD1lWzFdO2JyZWFrO2Nhc2UgMzphLnRvcD1lWzBdO2EuYm90dG9tPWVbMl07YS5sZWZ0PWEucmlnaHQ9ZVsxXTticmVhaztjYXNlIDQ6YS50b3A9ZVswXTthLmxlZnQ9ZVsxXTthLmJvdHRvbT1lWzJdO2EucmlnaHQ9ZVszXX1icmVhaztjYXNlIm1hcmdpbi10b3AiOmEudG9wPWdldE1lYXN1cmVtZW50KHQpO2JyZWFrO2Nhc2UibWFyZ2luLWJvdHRvbSI6YS5ib3R0b209Z2V0TWVhc3VyZW1lbnQodCk7YnJlYWs7Y2FzZSJtYXJnaW4tbGVmdCI6YS5sZWZ0PWdldE1lYXN1cmVtZW50KHQpO2JyZWFrO2Nhc2UibWFyZ2luLXJpZ2h0IjphLnJpZ2h0PWdldE1lYXN1cmVtZW50KHQpO2JyZWFrO2Nhc2UibGluZS1oZWlnaHQiOnM9Z2V0TWVhc3VyZW1lbnQodCl9ZS5wdXNoRGF0YShpLGEscyk7aWYodGhpc1tlcl0pZS5hZGRTdHJpbmcodGhpc1tlcl0pO2Vsc2UgZm9yKGNvbnN0IHQgb2YgdGhpc1tFcl0oKSkiI3RleHQiIT09dFtZcl0/dFtPcl0oZSk6ZS5hZGRTdHJpbmcodFtlcl0pO3QmJmUucG9wRm9udCgpfVthbl0oZSl7Y29uc3QgdD1bXTt0aGlzW2FyXT17Y2hpbGRyZW46dH07dGhpc1tac10oe30pO2lmKDA9PT10Lmxlbmd0aCYmIXRoaXNbZXJdKXJldHVybiBIVE1MUmVzdWx0LkVNUFRZO2xldCBpO2k9dGhpc1t6bl0/dGhpc1tlcl0/dGhpc1tlcl0ucmVwbGFjZUFsbCh0bywiXG4iKTp2b2lkIDA6dGhpc1tlcl18fHZvaWQgMDtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOnRoaXNbWXJdLGF0dHJpYnV0ZXM6e2hyZWY6dGhpcy5ocmVmLHN0eWxlOm1hcFN0eWxlKHRoaXMuc3R5bGUsdGhpcyx0aGlzW3puXSl9LGNoaWxkcmVuOnQsdmFsdWU6aX0pfX1jbGFzcyBBIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiYSIpO3RoaXMuaHJlZj1maXhVUkwoZS5ocmVmKXx8IiJ9fWNsYXNzIEIgZXh0ZW5kcyBYaHRtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJiIil9W09yXShlKXtlLnB1c2hGb250KHt3ZWlnaHQ6ImJvbGQifSk7c3VwZXJbT3JdKGUpO2UucG9wRm9udCgpfX1jbGFzcyBCb2R5IGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiYm9keSIpfVthbl0oZSl7Y29uc3QgdD1zdXBlclthbl0oZSkse2h0bWw6aX09dDtpZighaSlyZXR1cm4gSFRNTFJlc3VsdC5FTVBUWTtpLm5hbWU9ImRpdiI7aS5hdHRyaWJ1dGVzLmNsYXNzPVsieGZhUmljaCJdO3JldHVybiB0fX1jbGFzcyBCciBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsImJyIil9W2VuXSgpe3JldHVybiJcbiJ9W09yXShlKXtlLmFkZFN0cmluZygiXG4iKX1bYW5dKGUpe3JldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImJyIn0pfX1jbGFzcyBIdG1sIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiaHRtbCIpfVthbl0oZSl7Y29uc3QgdD1bXTt0aGlzW2FyXT17Y2hpbGRyZW46dH07dGhpc1tac10oe30pO2lmKDA9PT10Lmxlbmd0aClyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhUmljaCJdLHN0eWxlOnt9fSx2YWx1ZTp0aGlzW2VyXXx8IiJ9KTtpZigxPT09dC5sZW5ndGgpe2NvbnN0IGU9dFswXTtpZihlLmF0dHJpYnV0ZXM/LmNsYXNzLmluY2x1ZGVzKCJ4ZmFSaWNoIikpcmV0dXJuIEhUTUxSZXN1bHQuc3VjY2VzcyhlKX1yZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhUmljaCJdLHN0eWxlOnt9fSxjaGlsZHJlbjp0fSl9fWNsYXNzIEkgZXh0ZW5kcyBYaHRtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJpIil9W09yXShlKXtlLnB1c2hGb250KHtwb3N0dXJlOiJpdGFsaWMifSk7c3VwZXJbT3JdKGUpO2UucG9wRm9udCgpfX1jbGFzcyBMaSBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsImxpIil9fWNsYXNzIE9sIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwib2wiKX19Y2xhc3MgUCBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsInAiKX1bT3JdKGUpe3N1cGVyW09yXShlLCExKTtlLmFkZFN0cmluZygiXG4iKTtlLmFkZFBhcmEoKTtlLnBvcEZvbnQoKX1bZW5dKCl7cmV0dXJuIHRoaXNbcHJdKClbRXJdKCkuYXQoLTEpPT09dGhpcz9zdXBlcltlbl0oKTpzdXBlcltlbl0oKSsiXG4ifX1jbGFzcyBTcGFuIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwic3BhbiIpfX1jbGFzcyBTdWIgZXh0ZW5kcyBYaHRtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJzdWIiKX19Y2xhc3MgU3VwIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwic3VwIil9fWNsYXNzIFVsIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwidWwiKX19Y2xhc3MgWGh0bWxOYW1lc3BhY2V7c3RhdGljW29uXShlLHQpe2lmKFhodG1sTmFtZXNwYWNlLmhhc093blByb3BlcnR5KGUpKXJldHVybiBYaHRtbE5hbWVzcGFjZVtlXSh0KX1zdGF0aWMgYShlKXtyZXR1cm4gbmV3IEEoZSl9c3RhdGljIGIoZSl7cmV0dXJuIG5ldyBCKGUpfXN0YXRpYyBib2R5KGUpe3JldHVybiBuZXcgQm9keShlKX1zdGF0aWMgYnIoZSl7cmV0dXJuIG5ldyBCcihlKX1zdGF0aWMgaHRtbChlKXtyZXR1cm4gbmV3IEh0bWwoZSl9c3RhdGljIGkoZSl7cmV0dXJuIG5ldyBJKGUpfXN0YXRpYyBsaShlKXtyZXR1cm4gbmV3IExpKGUpfXN0YXRpYyBvbChlKXtyZXR1cm4gbmV3IE9sKGUpfXN0YXRpYyBwKGUpe3JldHVybiBuZXcgUChlKX1zdGF0aWMgc3BhbihlKXtyZXR1cm4gbmV3IFNwYW4oZSl9c3RhdGljIHN1YihlKXtyZXR1cm4gbmV3IFN1YihlKX1zdGF0aWMgc3VwKGUpe3JldHVybiBuZXcgU3VwKGUpfXN0YXRpYyB1bChlKXtyZXR1cm4gbmV3IFVsKGUpfX1jb25zdCBhbz17Y29uZmlnOkNvbmZpZ05hbWVzcGFjZSxjb25uZWN0aW9uOkNvbm5lY3Rpb25TZXROYW1lc3BhY2UsZGF0YXNldHM6RGF0YXNldHNOYW1lc3BhY2UsbG9jYWxlU2V0OkxvY2FsZVNldE5hbWVzcGFjZSxzaWduYXR1cmU6U2lnbmF0dXJlTmFtZXNwYWNlLHN0eWxlc2hlZXQ6U3R5bGVzaGVldE5hbWVzcGFjZSx0ZW1wbGF0ZTpUZW1wbGF0ZU5hbWVzcGFjZSx4ZHA6WGRwTmFtZXNwYWNlLHhodG1sOlhodG1sTmFtZXNwYWNlfTtjbGFzcyBVbmtub3duTmFtZXNwYWNle2NvbnN0cnVjdG9yKGUpe3RoaXMubmFtZXNwYWNlSWQ9ZX1bb25dKGUsdCl7cmV0dXJuIG5ldyBYbWxPYmplY3QodGhpcy5uYW1lc3BhY2VJZCxlLHQpfX1jbGFzcyBSb290IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKC0xLCJyb290IixPYmplY3QuY3JlYXRlKG51bGwpKTt0aGlzLmVsZW1lbnQ9bnVsbDt0aGlzW2JyXT1lfVtLcl0oZSl7dGhpcy5lbGVtZW50PWU7cmV0dXJuITB9W3NyXSgpe3N1cGVyW3NyXSgpO2lmKHRoaXMuZWxlbWVudC50ZW1wbGF0ZSBpbnN0YW5jZW9mIFRlbXBsYXRlKXt0aGlzW2JyXS5zZXQoWHIsdGhpcy5lbGVtZW50KTt0aGlzLmVsZW1lbnQudGVtcGxhdGVbWnJdKHRoaXNbYnJdKTt0aGlzLmVsZW1lbnQudGVtcGxhdGVbYnJdPXRoaXNbYnJdfX19Y2xhc3MgRW1wdHkgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoKXtzdXBlcigtMSwiIixPYmplY3QuY3JlYXRlKG51bGwpKX1bS3JdKGUpe3JldHVybiExfX1jbGFzcyBCdWlsZGVye2NvbnN0cnVjdG9yKGU9bnVsbCl7dGhpcy5fbmFtZXNwYWNlU3RhY2s9W107dGhpcy5fbnNBZ25vc3RpY0xldmVsPTA7dGhpcy5fbmFtZXNwYWNlUHJlZml4ZXM9bmV3IE1hcDt0aGlzLl9uYW1lc3BhY2VzPW5ldyBNYXA7dGhpcy5fbmV4dE5zSWQ9TWF0aC5tYXgoLi4uT2JqZWN0LnZhbHVlcyhnbikubWFwKCgoe2lkOmV9KT0+ZSkpKTt0aGlzLl9jdXJyZW50TmFtZXNwYWNlPWV8fG5ldyBVbmtub3duTmFtZXNwYWNlKCsrdGhpcy5fbmV4dE5zSWQpfWJ1aWxkUm9vdChlKXtyZXR1cm4gbmV3IFJvb3QoZSl9YnVpbGQoe25zUHJlZml4OmUsbmFtZTp0LGF0dHJpYnV0ZXM6aSxuYW1lc3BhY2U6YSxwcmVmaXhlczpzfSl7Y29uc3Qgcj1udWxsIT09YTtpZihyKXt0aGlzLl9uYW1lc3BhY2VTdGFjay5wdXNoKHRoaXMuX2N1cnJlbnROYW1lc3BhY2UpO3RoaXMuX2N1cnJlbnROYW1lc3BhY2U9dGhpcy5fc2VhcmNoTmFtZXNwYWNlKGEpfXMmJnRoaXMuX2FkZE5hbWVzcGFjZVByZWZpeChzKTtpZihpLmhhc093blByb3BlcnR5KHZyKSl7Y29uc3QgZT1hby5kYXRhc2V0cyx0PWlbdnJdO2xldCBhPW51bGw7Zm9yKGNvbnN0W2ksc11vZiBPYmplY3QuZW50cmllcyh0KSl7aWYodGhpcy5fZ2V0TmFtZXNwYWNlVG9Vc2UoaSk9PT1lKXthPXt4ZmE6c307YnJlYWt9fWE/aVt2cl09YTpkZWxldGUgaVt2cl19Y29uc3Qgbj10aGlzLl9nZXROYW1lc3BhY2VUb1VzZShlKSxvPW4/Lltvbl0odCxpKXx8bmV3IEVtcHR5O29bR3JdKCkmJnRoaXMuX25zQWdub3N0aWNMZXZlbCsrOyhyfHxzfHxvW0dyXSgpKSYmKG9bX3NdPXtoYXNOYW1lc3BhY2U6cixwcmVmaXhlczpzLG5zQWdub3N0aWM6b1tHcl0oKX0pO3JldHVybiBvfWlzTnNBZ25vc3RpYygpe3JldHVybiB0aGlzLl9uc0Fnbm9zdGljTGV2ZWw+MH1fc2VhcmNoTmFtZXNwYWNlKGUpe2xldCB0PXRoaXMuX25hbWVzcGFjZXMuZ2V0KGUpO2lmKHQpcmV0dXJuIHQ7Zm9yKGNvbnN0W2kse2NoZWNrOmF9XW9mIE9iamVjdC5lbnRyaWVzKGduKSlpZihhKGUpKXt0PWFvW2ldO2lmKHQpe3RoaXMuX25hbWVzcGFjZXMuc2V0KGUsdCk7cmV0dXJuIHR9YnJlYWt9dD1uZXcgVW5rbm93bk5hbWVzcGFjZSgrK3RoaXMuX25leHROc0lkKTt0aGlzLl9uYW1lc3BhY2VzLnNldChlLHQpO3JldHVybiB0fV9hZGROYW1lc3BhY2VQcmVmaXgoZSl7Zm9yKGNvbnN0e3ByZWZpeDp0LHZhbHVlOml9b2YgZSl7Y29uc3QgZT10aGlzLl9zZWFyY2hOYW1lc3BhY2UoaSk7bGV0IGE9dGhpcy5fbmFtZXNwYWNlUHJlZml4ZXMuZ2V0KHQpO2lmKCFhKXthPVtdO3RoaXMuX25hbWVzcGFjZVByZWZpeGVzLnNldCh0LGEpfWEucHVzaChlKX19X2dldE5hbWVzcGFjZVRvVXNlKGUpe2lmKCFlKXJldHVybiB0aGlzLl9jdXJyZW50TmFtZXNwYWNlO2NvbnN0IHQ9dGhpcy5fbmFtZXNwYWNlUHJlZml4ZXMuZ2V0KGUpO2lmKHQ/Lmxlbmd0aD4wKXJldHVybiB0LmF0KC0xKTt3YXJuKGBVbmtub3duIG5hbWVzcGFjZSBwcmVmaXg6ICR7ZX0uYCk7cmV0dXJuIG51bGx9Y2xlYW4oZSl7Y29uc3R7aGFzTmFtZXNwYWNlOnQscHJlZml4ZXM6aSxuc0Fnbm9zdGljOmF9PWU7dCYmKHRoaXMuX2N1cnJlbnROYW1lc3BhY2U9dGhpcy5fbmFtZXNwYWNlU3RhY2sucG9wKCkpO2kmJmkuZm9yRWFjaCgoKHtwcmVmaXg6ZX0pPT57dGhpcy5fbmFtZXNwYWNlUHJlZml4ZXMuZ2V0KGUpLnBvcCgpfSkpO2EmJnRoaXMuX25zQWdub3N0aWNMZXZlbC0tfX1jbGFzcyBYRkFQYXJzZXIgZXh0ZW5kcyBYTUxQYXJzZXJCYXNle2NvbnN0cnVjdG9yKGU9bnVsbCx0PSExKXtzdXBlcigpO3RoaXMuX2J1aWxkZXI9bmV3IEJ1aWxkZXIoZSk7dGhpcy5fc3RhY2s9W107dGhpcy5fZ2xvYmFsRGF0YT17dXNlZFR5cGVmYWNlczpuZXcgU2V0fTt0aGlzLl9pZHM9bmV3IE1hcDt0aGlzLl9jdXJyZW50PXRoaXMuX2J1aWxkZXIuYnVpbGRSb290KHRoaXMuX2lkcyk7dGhpcy5fZXJyb3JDb2RlPU5zO3RoaXMuX3doaXRlUmVnZXg9L15ccyskLzt0aGlzLl9uYnNwcz0vXHhhMCsvZzt0aGlzLl9yaWNoVGV4dD10fXBhcnNlKGUpe3RoaXMucGFyc2VYbWwoZSk7aWYodGhpcy5fZXJyb3JDb2RlPT09TnMpe3RoaXMuX2N1cnJlbnRbc3JdKCk7cmV0dXJuIHRoaXMuX2N1cnJlbnQuZWxlbWVudH19b25UZXh0KGUpe2U9ZS5yZXBsYWNlKHRoaXMuX25ic3BzLChlPT5lLnNsaWNlKDEpKyIgIikpO3RoaXMuX3JpY2hUZXh0fHx0aGlzLl9jdXJyZW50W1dzXSgpP3RoaXMuX2N1cnJlbnRbcXJdKGUsdGhpcy5fcmljaFRleHQpOnRoaXMuX3doaXRlUmVnZXgudGVzdChlKXx8dGhpcy5fY3VycmVudFtxcl0oZS50cmltKCkpfW9uQ2RhdGEoZSl7dGhpcy5fY3VycmVudFtxcl0oZSl9X21rQXR0cmlidXRlcyhlLHQpe2xldCBpPW51bGwsYT1udWxsO2NvbnN0IHM9T2JqZWN0LmNyZWF0ZSh7fSk7Zm9yKGNvbnN0e25hbWU6cix2YWx1ZTpufW9mIGUpaWYoInhtbG5zIj09PXIpaT93YXJuKGBYRkEgLSBtdWx0aXBsZSBuYW1lc3BhY2UgZGVmaW5pdGlvbiBpbiA8JHt0fT5gKTppPW47ZWxzZSBpZihyLnN0YXJ0c1dpdGgoInhtbG5zOiIpKXtjb25zdCBlPXIuc3Vic3RyaW5nKDYpO2F8fChhPVtdKTthLnB1c2goe3ByZWZpeDplLHZhbHVlOm59KX1lbHNle2NvbnN0IGU9ci5pbmRleE9mKCI6Iik7aWYoLTE9PT1lKXNbcl09bjtlbHNle2xldCB0PXNbdnJdO3R8fCh0PXNbdnJdPU9iamVjdC5jcmVhdGUobnVsbCkpO2NvbnN0W2ksYV09W3Iuc2xpY2UoMCxlKSxyLnNsaWNlKGUrMSldOyh0W2ldfHw9T2JqZWN0LmNyZWF0ZShudWxsKSlbYV09bn19cmV0dXJuW2ksYSxzXX1fZ2V0TmFtZUFuZFByZWZpeChlLHQpe2NvbnN0IGk9ZS5pbmRleE9mKCI6Iik7cmV0dXJuLTE9PT1pP1tlLG51bGxdOltlLnN1YnN0cmluZyhpKzEpLHQ/IiI6ZS5zdWJzdHJpbmcoMCxpKV19b25CZWdpbkVsZW1lbnQoZSx0LGkpe2NvbnN0W2EscyxyXT10aGlzLl9ta0F0dHJpYnV0ZXModCxlKSxbbixvXT10aGlzLl9nZXROYW1lQW5kUHJlZml4KGUsdGhpcy5fYnVpbGRlci5pc05zQWdub3N0aWMoKSksZz10aGlzLl9idWlsZGVyLmJ1aWxkKHtuc1ByZWZpeDpvLG5hbWU6bixhdHRyaWJ1dGVzOnIsbmFtZXNwYWNlOmEscHJlZml4ZXM6c30pO2dbeXJdPXRoaXMuX2dsb2JhbERhdGE7aWYoaSl7Z1tzcl0oKTt0aGlzLl9jdXJyZW50W0tyXShnKSYmZ1t6cl0odGhpcy5faWRzKTtnW1ZzXSh0aGlzLl9idWlsZGVyKX1lbHNle3RoaXMuX3N0YWNrLnB1c2godGhpcy5fY3VycmVudCk7dGhpcy5fY3VycmVudD1nfX1vbkVuZEVsZW1lbnQoZSl7Y29uc3QgdD10aGlzLl9jdXJyZW50O2lmKHRbU3JdKCkmJiJzdHJpbmciPT10eXBlb2YgdFtlcl0pe2NvbnN0IGU9bmV3IFhGQVBhcnNlcjtlLl9nbG9iYWxEYXRhPXRoaXMuX2dsb2JhbERhdGE7Y29uc3QgaT1lLnBhcnNlKHRbZXJdKTt0W2VyXT1udWxsO3RbS3JdKGkpfXRbc3JdKCk7dGhpcy5fY3VycmVudD10aGlzLl9zdGFjay5wb3AoKTt0aGlzLl9jdXJyZW50W0tyXSh0KSYmdFt6cl0odGhpcy5faWRzKTt0W1ZzXSh0aGlzLl9idWlsZGVyKX1vbkVycm9yKGUpe3RoaXMuX2Vycm9yQ29kZT1lfX1jbGFzcyBYRkFGYWN0b3J5e2NvbnN0cnVjdG9yKGUpe3RyeXt0aGlzLnJvb3Q9KG5ldyBYRkFQYXJzZXIpLnBhcnNlKFhGQUZhY3RvcnkuX2NyZWF0ZURvY3VtZW50KGUpKTtjb25zdCB0PW5ldyBCaW5kZXIodGhpcy5yb290KTt0aGlzLmZvcm09dC5iaW5kKCk7dGhpcy5kYXRhSGFuZGxlcj1uZXcgRGF0YUhhbmRsZXIodGhpcy5yb290LHQuZ2V0RGF0YSgpKTt0aGlzLmZvcm1beXJdLnRlbXBsYXRlPXRoaXMuZm9ybX1jYXRjaChlKXt3YXJuKGBYRkEgLSBhbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgcGFyc2luZyBhbmQgYmluZGluZzogJHtlfWApfX1pc1ZhbGlkKCl7cmV0dXJuIHRoaXMucm9vdCYmdGhpcy5mb3JtfV9jcmVhdGVQYWdlc0hlbHBlcigpe2NvbnN0IGU9dGhpcy5mb3JtW3RuXSgpO3JldHVybiBuZXcgUHJvbWlzZSgoKHQsaSk9Pntjb25zdCBuZXh0SXRlcmF0aW9uPSgpPT57dHJ5e2NvbnN0IGk9ZS5uZXh0KCk7aS5kb25lP3QoaS52YWx1ZSk6c2V0VGltZW91dChuZXh0SXRlcmF0aW9uLDApfWNhdGNoKGUpe2koZSl9fTtzZXRUaW1lb3V0KG5leHRJdGVyYXRpb24sMCl9KSl9YXN5bmMgX2NyZWF0ZVBhZ2VzKCl7dHJ5e3RoaXMucGFnZXM9YXdhaXQgdGhpcy5fY3JlYXRlUGFnZXNIZWxwZXIoKTt0aGlzLmRpbXM9dGhpcy5wYWdlcy5jaGlsZHJlbi5tYXAoKGU9Pntjb25zdHt3aWR0aDp0LGhlaWdodDppfT1lLmF0dHJpYnV0ZXMuc3R5bGU7cmV0dXJuWzAsMCxwYXJzZUludCh0KSxwYXJzZUludChpKV19KSl9Y2F0Y2goZSl7d2FybihgWEZBIC0gYW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGxheW91dDogJHtlfWApfX1nZXRCb3VuZGluZ0JveChlKXtyZXR1cm4gdGhpcy5kaW1zW2VdfWFzeW5jIGdldE51bVBhZ2VzKCl7dGhpcy5wYWdlc3x8YXdhaXQgdGhpcy5fY3JlYXRlUGFnZXMoKTtyZXR1cm4gdGhpcy5kaW1zLmxlbmd0aH1zZXRJbWFnZXMoZSl7dGhpcy5mb3JtW3lyXS5pbWFnZXM9ZX1zZXRGb250cyhlKXt0aGlzLmZvcm1beXJdLmZvbnRGaW5kZXI9bmV3IEZvbnRGaW5kZXIoZSk7Y29uc3QgdD1bXTtmb3IobGV0IGUgb2YgdGhpcy5mb3JtW3lyXS51c2VkVHlwZWZhY2VzKXtlPXN0cmlwUXVvdGVzKGUpO3RoaXMuZm9ybVt5cl0uZm9udEZpbmRlci5maW5kKGUpfHx0LnB1c2goZSl9cmV0dXJuIHQubGVuZ3RoPjA/dDpudWxsfWFwcGVuZEZvbnRzKGUsdCl7dGhpcy5mb3JtW3lyXS5mb250RmluZGVyLmFkZChlLHQpfWFzeW5jIGdldFBhZ2VzKCl7dGhpcy5wYWdlc3x8YXdhaXQgdGhpcy5fY3JlYXRlUGFnZXMoKTtjb25zdCBlPXRoaXMucGFnZXM7dGhpcy5wYWdlcz1udWxsO3JldHVybiBlfXNlcmlhbGl6ZURhdGEoZSl7cmV0dXJuIHRoaXMuZGF0YUhhbmRsZXIuc2VyaWFsaXplKGUpfXN0YXRpYyBfY3JlYXRlRG9jdW1lbnQoZSl7cmV0dXJuIGVbIi94ZHA6eGRwIl0/T2JqZWN0LnZhbHVlcyhlKS5qb2luKCIiKTplWyJ4ZHA6eGRwIl19c3RhdGljIGdldFJpY2hUZXh0QXNIdG1sKGUpe2lmKCFlfHwic3RyaW5nIiE9dHlwZW9mIGUpcmV0dXJuIG51bGw7dHJ5e2xldCB0PW5ldyBYRkFQYXJzZXIoWGh0bWxOYW1lc3BhY2UsITApLnBhcnNlKGUpO2lmKCFbImJvZHkiLCJ4aHRtbCJdLmluY2x1ZGVzKHRbWXJdKSl7Y29uc3QgZT1YaHRtbE5hbWVzcGFjZS5ib2R5KHt9KTtlW1hzXSh0KTt0PWV9Y29uc3QgaT10W2FuXSgpO2lmKCFpLnN1Y2Nlc3MpcmV0dXJuIG51bGw7Y29uc3R7aHRtbDphfT1pLHthdHRyaWJ1dGVzOnN9PWE7aWYocyl7cy5jbGFzcyYmKHMuY2xhc3M9cy5jbGFzcy5maWx0ZXIoKGU9PiFlLnN0YXJ0c1dpdGgoInhmYSIpKSkpO3MuZGlyPSJhdXRvIn1yZXR1cm57aHRtbDphLHN0cjp0W2VuXSgpfX1jYXRjaChlKXt3YXJuKGBYRkEgLSBhbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgcGFyc2luZyBvZiByaWNoIHRleHQ6ICR7ZX1gKX1yZXR1cm4gbnVsbH19Y2xhc3MgQW5ub3RhdGlvbkZhY3Rvcnl7c3RhdGljIGNyZWF0ZUdsb2JhbHMoZSl7cmV0dXJuIFByb21pc2UuYWxsKFtlLmVuc3VyZUNhdGFsb2coImFjcm9Gb3JtIiksZS5lbnN1cmVEb2MoInhmYURhdGFzZXRzIiksZS5lbnN1cmVDYXRhbG9nKCJzdHJ1Y3RUcmVlUm9vdCIpLGUuZW5zdXJlQ2F0YWxvZygiYmFzZVVybCIpLGUuZW5zdXJlQ2F0YWxvZygiYXR0YWNobWVudHMiKV0pLnRoZW4oKChbdCxpLGEscyxyXSk9Pih7cGRmTWFuYWdlcjplLGFjcm9Gb3JtOnQgaW5zdGFuY2VvZiBEaWN0P3Q6RGljdC5lbXB0eSx4ZmFEYXRhc2V0czppLHN0cnVjdFRyZWVSb290OmEsYmFzZVVybDpzLGF0dGFjaG1lbnRzOnJ9KSksKGU9Pnt3YXJuKGBjcmVhdGVHbG9iYWxzOiAiJHtlfSIuYCk7cmV0dXJuIG51bGx9KSl9c3RhdGljIGFzeW5jIGNyZWF0ZShlLHQsaSxhLHMscil7Y29uc3Qgbj1zP2F3YWl0IHRoaXMuX2dldFBhZ2VJbmRleChlLHQsaS5wZGZNYW5hZ2VyKTpudWxsO3JldHVybiBpLnBkZk1hbmFnZXIuZW5zdXJlKHRoaXMsIl9jcmVhdGUiLFtlLHQsaSxhLHMsbixyXSl9c3RhdGljIF9jcmVhdGUoZSx0LGksYSxzPSExLHI9bnVsbCxuPW51bGwpe2NvbnN0IG89ZS5mZXRjaElmUmVmKHQpO2lmKCEobyBpbnN0YW5jZW9mIERpY3QpKXJldHVybjtjb25zdHthY3JvRm9ybTpnLHBkZk1hbmFnZXI6Y309aSxDPXQgaW5zdGFuY2VvZiBSZWY/dC50b1N0cmluZygpOmBhbm5vdF8ke2EuY3JlYXRlT2JqSWQoKX1gO2xldCBoPW8uZ2V0KCJTdWJ0eXBlIik7aD1oIGluc3RhbmNlb2YgTmFtZT9oLm5hbWU6bnVsbDtjb25zdCBsPXt4cmVmOmUscmVmOnQsZGljdDpvLHN1YnR5cGU6aCxpZDpDLGFubm90YXRpb25HbG9iYWxzOmksY29sbGVjdEZpZWxkczpzLG5lZWRBcHBlYXJhbmNlczohcyYmITA9PT1nLmdldCgiTmVlZEFwcGVhcmFuY2VzIikscGFnZUluZGV4OnIsZXZhbHVhdG9yT3B0aW9uczpjLmV2YWx1YXRvck9wdGlvbnMscGFnZVJlZjpufTtzd2l0Y2goaCl7Y2FzZSJMaW5rIjpyZXR1cm4gbmV3IExpbmtBbm5vdGF0aW9uKGwpO2Nhc2UiVGV4dCI6cmV0dXJuIG5ldyBUZXh0QW5ub3RhdGlvbihsKTtjYXNlIldpZGdldCI6bGV0IGU9Z2V0SW5oZXJpdGFibGVQcm9wZXJ0eSh7ZGljdDpvLGtleToiRlQifSk7ZT1lIGluc3RhbmNlb2YgTmFtZT9lLm5hbWU6bnVsbDtzd2l0Y2goZSl7Y2FzZSJUeCI6cmV0dXJuIG5ldyBUZXh0V2lkZ2V0QW5ub3RhdGlvbihsKTtjYXNlIkJ0biI6cmV0dXJuIG5ldyBCdXR0b25XaWRnZXRBbm5vdGF0aW9uKGwpO2Nhc2UiQ2giOnJldHVybiBuZXcgQ2hvaWNlV2lkZ2V0QW5ub3RhdGlvbihsKTtjYXNlIlNpZyI6cmV0dXJuIG5ldyBTaWduYXR1cmVXaWRnZXRBbm5vdGF0aW9uKGwpfXdhcm4oYFVuaW1wbGVtZW50ZWQgd2lkZ2V0IGZpZWxkIHR5cGUgIiR7ZX0iLCBmYWxsaW5nIGJhY2sgdG8gYmFzZSBmaWVsZCB0eXBlLmApO3JldHVybiBuZXcgV2lkZ2V0QW5ub3RhdGlvbihsKTtjYXNlIlBvcHVwIjpyZXR1cm4gbmV3IFBvcHVwQW5ub3RhdGlvbihsKTtjYXNlIkZyZWVUZXh0IjpyZXR1cm4gbmV3IEZyZWVUZXh0QW5ub3RhdGlvbihsKTtjYXNlIkxpbmUiOnJldHVybiBuZXcgTGluZUFubm90YXRpb24obCk7Y2FzZSJTcXVhcmUiOnJldHVybiBuZXcgU3F1YXJlQW5ub3RhdGlvbihsKTtjYXNlIkNpcmNsZSI6cmV0dXJuIG5ldyBDaXJjbGVBbm5vdGF0aW9uKGwpO2Nhc2UiUG9seUxpbmUiOnJldHVybiBuZXcgUG9seWxpbmVBbm5vdGF0aW9uKGwpO2Nhc2UiUG9seWdvbiI6cmV0dXJuIG5ldyBQb2x5Z29uQW5ub3RhdGlvbihsKTtjYXNlIkNhcmV0IjpyZXR1cm4gbmV3IENhcmV0QW5ub3RhdGlvbihsKTtjYXNlIkluayI6cmV0dXJuIG5ldyBJbmtBbm5vdGF0aW9uKGwpO2Nhc2UiSGlnaGxpZ2h0IjpyZXR1cm4gbmV3IEhpZ2hsaWdodEFubm90YXRpb24obCk7Y2FzZSJVbmRlcmxpbmUiOnJldHVybiBuZXcgVW5kZXJsaW5lQW5ub3RhdGlvbihsKTtjYXNlIlNxdWlnZ2x5IjpyZXR1cm4gbmV3IFNxdWlnZ2x5QW5ub3RhdGlvbihsKTtjYXNlIlN0cmlrZU91dCI6cmV0dXJuIG5ldyBTdHJpa2VPdXRBbm5vdGF0aW9uKGwpO2Nhc2UiU3RhbXAiOnJldHVybiBuZXcgU3RhbXBBbm5vdGF0aW9uKGwpO2Nhc2UiRmlsZUF0dGFjaG1lbnQiOnJldHVybiBuZXcgRmlsZUF0dGFjaG1lbnRBbm5vdGF0aW9uKGwpO2RlZmF1bHQ6c3x8d2FybihoP2BVbmltcGxlbWVudGVkIGFubm90YXRpb24gdHlwZSAiJHtofSIsIGZhbGxpbmcgYmFjayB0byBiYXNlIGFubm90YXRpb24uYDoiQW5ub3RhdGlvbiBpcyBtaXNzaW5nIHRoZSByZXF1aXJlZCAvU3VidHlwZS4iKTtyZXR1cm4gbmV3IEFubm90YXRpb24obCl9fXN0YXRpYyBhc3luYyBfZ2V0UGFnZUluZGV4KGUsdCxpKXt0cnl7Y29uc3QgYT1hd2FpdCBlLmZldGNoSWZSZWZBc3luYyh0KTtpZighKGEgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm4tMTtjb25zdCBzPWEuZ2V0UmF3KCJQIik7aWYocyBpbnN0YW5jZW9mIFJlZil0cnl7cmV0dXJuIGF3YWl0IGkuZW5zdXJlQ2F0YWxvZygiZ2V0UGFnZUluZGV4Iixbc10pfWNhdGNoKGUpe2luZm8oYF9nZXRQYWdlSW5kZXggLS0gbm90IGEgdmFsaWQgcGFnZSByZWZlcmVuY2U6ICIke2V9Ii5gKX1pZihhLmhhcygiS2lkcyIpKXJldHVybi0xO2NvbnN0IHI9YXdhaXQgaS5lbnN1cmVEb2MoIm51bVBhZ2VzIik7Zm9yKGxldCBlPTA7ZTxyO2UrKyl7Y29uc3QgYT1hd2FpdCBpLmdldFBhZ2UoZSkscz1hd2FpdCBpLmVuc3VyZShhLCJhbm5vdGF0aW9ucyIpO2Zvcihjb25zdCBpIG9mIHMpaWYoaSBpbnN0YW5jZW9mIFJlZiYmaXNSZWZzRXF1YWwoaSx0KSlyZXR1cm4gZX19Y2F0Y2goZSl7d2FybihgX2dldFBhZ2VJbmRleDogIiR7ZX0iLmApfXJldHVybi0xfXN0YXRpYyBnZW5lcmF0ZUltYWdlcyhlLHQsaSl7aWYoIWkpe3dhcm4oImdlbmVyYXRlSW1hZ2VzOiBPZmZzY3JlZW5DYW52YXMgaXMgbm90IHN1cHBvcnRlZCwgY2Fubm90IHNhdmUgb3IgcHJpbnQgc29tZSBhbm5vdGF0aW9ucyB3aXRoIGltYWdlcy4iKTtyZXR1cm4gbnVsbH1sZXQgYTtmb3IoY29uc3R7Yml0bWFwSWQ6aSxiaXRtYXA6c31vZiBlKWlmKHMpe2F8fD1uZXcgTWFwO2Euc2V0KGksU3RhbXBBbm5vdGF0aW9uLmNyZWF0ZUltYWdlKHMsdCkpfXJldHVybiBhfXN0YXRpYyBhc3luYyBzYXZlTmV3QW5ub3RhdGlvbnMoZSx0LGksYSl7Y29uc3Qgcz1lLnhyZWY7bGV0IHI7Y29uc3Qgbj1bXSxvPVtdLHtpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZDpnfT1lLm9wdGlvbnM7Zm9yKGNvbnN0IGMgb2YgaSlpZighYy5kZWxldGVkKXN3aXRjaChjLmFubm90YXRpb25UeXBlKXtjYXNlIHU6aWYoIXIpe2NvbnN0IGU9bmV3IERpY3Qocyk7ZS5zZXQoIkJhc2VGb250IixOYW1lLmdldCgiSGVsdmV0aWNhIikpO2Uuc2V0KCJUeXBlIixOYW1lLmdldCgiRm9udCIpKTtlLnNldCgiU3VidHlwZSIsTmFtZS5nZXQoIlR5cGUxIikpO2Uuc2V0KCJFbmNvZGluZyIsTmFtZS5nZXQoIldpbkFuc2lFbmNvZGluZyIpKTtjb25zdCB0PVtdO3I9cy5nZXROZXdUZW1wb3JhcnlSZWYoKTthd2FpdCB3cml0ZU9iamVjdChyLGUsdCxzKTtuLnB1c2goe3JlZjpyLGRhdGE6dC5qb2luKCIiKX0pfW8ucHVzaChGcmVlVGV4dEFubm90YXRpb24uY3JlYXRlTmV3QW5ub3RhdGlvbihzLGMsbix7ZXZhbHVhdG9yOmUsdGFzazp0LGJhc2VGb250UmVmOnJ9KSk7YnJlYWs7Y2FzZSBkOmMucXVhZFBvaW50cz9vLnB1c2goSGlnaGxpZ2h0QW5ub3RhdGlvbi5jcmVhdGVOZXdBbm5vdGF0aW9uKHMsYyxuKSk6by5wdXNoKElua0Fubm90YXRpb24uY3JlYXRlTmV3QW5ub3RhdGlvbihzLGMsbikpO2JyZWFrO2Nhc2UgcDpvLnB1c2goSW5rQW5ub3RhdGlvbi5jcmVhdGVOZXdBbm5vdGF0aW9uKHMsYyxuKSk7YnJlYWs7Y2FzZSBmOmlmKCFnKWJyZWFrO2NvbnN0IGk9YXdhaXQgYS5nZXQoYy5iaXRtYXBJZCk7aWYoaS5pbWFnZVN0cmVhbSl7Y29uc3R7aW1hZ2VTdHJlYW06ZSxzbWFza1N0cmVhbTp0fT1pLGE9W107aWYodCl7Y29uc3QgaT1zLmdldE5ld1RlbXBvcmFyeVJlZigpO2F3YWl0IHdyaXRlT2JqZWN0KGksdCxhLHMpO24ucHVzaCh7cmVmOmksZGF0YTphLmpvaW4oIiIpfSk7ZS5kaWN0LnNldCgiU01hc2siLGkpO2EubGVuZ3RoPTB9Y29uc3Qgcj1pLmltYWdlUmVmPXMuZ2V0TmV3VGVtcG9yYXJ5UmVmKCk7YXdhaXQgd3JpdGVPYmplY3QocixlLGEscyk7bi5wdXNoKHtyZWY6cixkYXRhOmEuam9pbigiIil9KTtpLmltYWdlU3RyZWFtPWkuc21hc2tTdHJlYW09bnVsbH1vLnB1c2goU3RhbXBBbm5vdGF0aW9uLmNyZWF0ZU5ld0Fubm90YXRpb24ocyxjLG4se2ltYWdlOml9KSl9cmV0dXJue2Fubm90YXRpb25zOmF3YWl0IFByb21pc2UuYWxsKG8pLGRlcGVuZGVuY2llczpufX1zdGF0aWMgYXN5bmMgcHJpbnROZXdBbm5vdGF0aW9ucyhlLHQsaSxhLHMpe2lmKCFhKXJldHVybiBudWxsO2NvbnN0e29wdGlvbnM6cix4cmVmOm59PXQsbz1bXTtmb3IoY29uc3QgZyBvZiBhKWlmKCFnLmRlbGV0ZWQpc3dpdGNoKGcuYW5ub3RhdGlvblR5cGUpe2Nhc2UgdTpvLnB1c2goRnJlZVRleHRBbm5vdGF0aW9uLmNyZWF0ZU5ld1ByaW50QW5ub3RhdGlvbihlLG4sZyx7ZXZhbHVhdG9yOnQsdGFzazppLGV2YWx1YXRvck9wdGlvbnM6cn0pKTticmVhaztjYXNlIGQ6Zy5xdWFkUG9pbnRzP28ucHVzaChIaWdobGlnaHRBbm5vdGF0aW9uLmNyZWF0ZU5ld1ByaW50QW5ub3RhdGlvbihlLG4sZyx7ZXZhbHVhdG9yT3B0aW9uczpyfSkpOm8ucHVzaChJbmtBbm5vdGF0aW9uLmNyZWF0ZU5ld1ByaW50QW5ub3RhdGlvbihlLG4sZyx7ZXZhbHVhdG9yT3B0aW9uczpyfSkpO2JyZWFrO2Nhc2UgcDpvLnB1c2goSW5rQW5ub3RhdGlvbi5jcmVhdGVOZXdQcmludEFubm90YXRpb24oZSxuLGcse2V2YWx1YXRvck9wdGlvbnM6cn0pKTticmVhaztjYXNlIGY6aWYoIXIuaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQpYnJlYWs7Y29uc3QgYT1hd2FpdCBzLmdldChnLmJpdG1hcElkKTtpZihhLmltYWdlU3RyZWFtKXtjb25zdHtpbWFnZVN0cmVhbTplLHNtYXNrU3RyZWFtOnR9PWE7dCYmZS5kaWN0LnNldCgiU01hc2siLHQpO2EuaW1hZ2VSZWY9bmV3IEpwZWdTdHJlYW0oZSxlLmxlbmd0aCk7YS5pbWFnZVN0cmVhbT1hLnNtYXNrU3RyZWFtPW51bGx9by5wdXNoKFN0YW1wQW5ub3RhdGlvbi5jcmVhdGVOZXdQcmludEFubm90YXRpb24oZSxuLGcse2ltYWdlOmEsZXZhbHVhdG9yT3B0aW9uczpyfSkpfXJldHVybiBQcm9taXNlLmFsbChvKX19ZnVuY3Rpb24gZ2V0UmdiQ29sb3IoZSx0PW5ldyBVaW50OENsYW1wZWRBcnJheSgzKSl7aWYoIUFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIHQ7Y29uc3QgaT10fHxuZXcgVWludDhDbGFtcGVkQXJyYXkoMyk7c3dpdGNoKGUubGVuZ3RoKXtjYXNlIDA6cmV0dXJuIG51bGw7Y2FzZSAxOkNvbG9yU3BhY2Uuc2luZ2xldG9ucy5ncmF5LmdldFJnYkl0ZW0oZSwwLGksMCk7cmV0dXJuIGk7Y2FzZSAzOkNvbG9yU3BhY2Uuc2luZ2xldG9ucy5yZ2IuZ2V0UmdiSXRlbShlLDAsaSwwKTtyZXR1cm4gaTtjYXNlIDQ6Q29sb3JTcGFjZS5zaW5nbGV0b25zLmNteWsuZ2V0UmdiSXRlbShlLDAsaSwwKTtyZXR1cm4gaTtkZWZhdWx0OnJldHVybiB0fX1mdW5jdGlvbiBnZXRQZGZDb2xvckFycmF5KGUpe3JldHVybiBBcnJheS5mcm9tKGUsKGU9PmUvMjU1KSl9ZnVuY3Rpb24gZ2V0UXVhZFBvaW50cyhlLHQpe2NvbnN0IGk9ZS5nZXRBcnJheSgiUXVhZFBvaW50cyIpO2lmKCFBcnJheS5pc0FycmF5KGkpfHwwPT09aS5sZW5ndGh8fGkubGVuZ3RoJTg+MClyZXR1cm4gbnVsbDtjb25zdCBhPVtdO2ZvcihsZXQgZT0wLHM9aS5sZW5ndGgvODtlPHM7ZSsrKXtsZXQgcz0xLzAscj0tMS8wLG49MS8wLG89LTEvMDtmb3IobGV0IHQ9OCplLGE9OCplKzg7dDxhO3QrPTIpe2NvbnN0IGU9aVt0XSxhPWlbdCsxXTtzPU1hdGgubWluKGUscyk7cj1NYXRoLm1heChlLHIpO249TWF0aC5taW4oYSxuKTtvPU1hdGgubWF4KGEsbyl9aWYobnVsbCE9PXQmJihzPHRbMF18fHI+dFsyXXx8bjx0WzFdfHxvPnRbM10pKXJldHVybiBudWxsO2EucHVzaChbe3g6cyx5Om99LHt4OnIseTpvfSx7eDpzLHk6bn0se3g6cix5Om59XSl9cmV0dXJuIGF9ZnVuY3Rpb24gZ2V0VHJhbnNmb3JtTWF0cml4KGUsdCxpKXtjb25zdFthLHMscixuXT1VdGlsLmdldEF4aWFsQWxpZ25lZEJvdW5kaW5nQm94KHQsaSk7aWYoYT09PXJ8fHM9PT1uKXJldHVyblsxLDAsMCwxLGVbMF0sZVsxXV07Y29uc3Qgbz0oZVsyXS1lWzBdKS8oci1hKSxnPShlWzNdLWVbMV0pLyhuLXMpO3JldHVybltvLDAsMCxnLGVbMF0tYSpvLGVbMV0tcypnXX1jbGFzcyBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe2NvbnN0e2RpY3Q6dCx4cmVmOmksYW5ub3RhdGlvbkdsb2JhbHM6YX09ZTt0aGlzLnNldFRpdGxlKHQuZ2V0KCJUIikpO3RoaXMuc2V0Q29udGVudHModC5nZXQoIkNvbnRlbnRzIikpO3RoaXMuc2V0TW9kaWZpY2F0aW9uRGF0ZSh0LmdldCgiTSIpKTt0aGlzLnNldEZsYWdzKHQuZ2V0KCJGIikpO3RoaXMuc2V0UmVjdGFuZ2xlKHQuZ2V0QXJyYXkoIlJlY3QiKSk7dGhpcy5zZXRDb2xvcih0LmdldEFycmF5KCJDIikpO3RoaXMuc2V0Qm9yZGVyU3R5bGUodCk7dGhpcy5zZXRBcHBlYXJhbmNlKHQpO3RoaXMuc2V0T3B0aW9uYWxDb250ZW50KHQpO2NvbnN0IHM9dC5nZXQoIk1LIik7dGhpcy5zZXRCb3JkZXJBbmRCYWNrZ3JvdW5kQ29sb3JzKHMpO3RoaXMuc2V0Um90YXRpb24ocyx0KTt0aGlzLnJlZj1lLnJlZiBpbnN0YW5jZW9mIFJlZj9lLnJlZjpudWxsO3RoaXMuX3N0cmVhbXM9W107dGhpcy5hcHBlYXJhbmNlJiZ0aGlzLl9zdHJlYW1zLnB1c2godGhpcy5hcHBlYXJhbmNlKTtjb25zdCByPSEhKHRoaXMuZmxhZ3MmQUEpLG49ISEodGhpcy5mbGFncyZlQSk7aWYoYS5zdHJ1Y3RUcmVlUm9vdCl7bGV0IGk9dC5nZXQoIlN0cnVjdFBhcmVudCIpO2k9TnVtYmVyLmlzSW50ZWdlcihpKSYmaT49MD9pOi0xO2Euc3RydWN0VHJlZVJvb3QuYWRkQW5ub3RhdGlvbklkVG9QYWdlKGUucGFnZVJlZixpKX10aGlzLmRhdGE9e2Fubm90YXRpb25GbGFnczp0aGlzLmZsYWdzLGJvcmRlclN0eWxlOnRoaXMuYm9yZGVyU3R5bGUsY29sb3I6dGhpcy5jb2xvcixiYWNrZ3JvdW5kQ29sb3I6dGhpcy5iYWNrZ3JvdW5kQ29sb3IsYm9yZGVyQ29sb3I6dGhpcy5ib3JkZXJDb2xvcixyb3RhdGlvbjp0aGlzLnJvdGF0aW9uLGNvbnRlbnRzT2JqOnRoaXMuX2NvbnRlbnRzLGhhc0FwcGVhcmFuY2U6ISF0aGlzLmFwcGVhcmFuY2UsaWQ6ZS5pZCxtb2RpZmljYXRpb25EYXRlOnRoaXMubW9kaWZpY2F0aW9uRGF0ZSxyZWN0OnRoaXMucmVjdGFuZ2xlLHN1YnR5cGU6ZS5zdWJ0eXBlLGhhc093bkNhbnZhczohMSxub1JvdGF0ZTohISh0aGlzLmZsYWdzJl8pLG5vSFRNTDpyJiZufTtpZihlLmNvbGxlY3RGaWVsZHMpe2NvbnN0IGE9dC5nZXQoIktpZHMiKTtpZihBcnJheS5pc0FycmF5KGEpKXtjb25zdCBlPVtdO2Zvcihjb25zdCB0IG9mIGEpdCBpbnN0YW5jZW9mIFJlZiYmZS5wdXNoKHQudG9TdHJpbmcoKSk7MCE9PWUubGVuZ3RoJiYodGhpcy5kYXRhLmtpZElkcz1lKX10aGlzLmRhdGEuYWN0aW9ucz1jb2xsZWN0QWN0aW9ucyhpLHQsdUEpO3RoaXMuZGF0YS5maWVsZE5hbWU9dGhpcy5fY29uc3RydWN0RmllbGROYW1lKHQpO3RoaXMuZGF0YS5wYWdlSW5kZXg9ZS5wYWdlSW5kZXh9dGhpcy5faXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQ9ZS5ldmFsdWF0b3JPcHRpb25zLmlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkO3RoaXMuX2ZhbGxiYWNrRm9udERpY3Q9bnVsbDt0aGlzLl9uZWVkQXBwZWFyYW5jZXM9ITF9X2hhc0ZsYWcoZSx0KXtyZXR1cm4hIShlJnQpfV9pc1ZpZXdhYmxlKGUpe3JldHVybiF0aGlzLl9oYXNGbGFnKGUsWikmJiF0aGlzLl9oYXNGbGFnKGUsJCl9X2lzUHJpbnRhYmxlKGUpe3JldHVybiB0aGlzLl9oYXNGbGFnKGUseikmJiF0aGlzLl9oYXNGbGFnKGUsVikmJiF0aGlzLl9oYXNGbGFnKGUsWil9bXVzdEJlVmlld2VkKGUsdCl7Y29uc3QgaT1lPy5nZXQodGhpcy5kYXRhLmlkKT8ubm9WaWV3O3JldHVybiB2b2lkIDAhPT1pPyFpOnRoaXMudmlld2FibGUmJiF0aGlzLl9oYXNGbGFnKHRoaXMuZmxhZ3MsVil9bXVzdEJlUHJpbnRlZChlKXtjb25zdCB0PWU/LmdldCh0aGlzLmRhdGEuaWQpPy5ub1ByaW50O3JldHVybiB2b2lkIDAhPT10PyF0OnRoaXMucHJpbnRhYmxlfWdldCB2aWV3YWJsZSgpe3JldHVybiBudWxsIT09dGhpcy5kYXRhLnF1YWRQb2ludHMmJigwPT09dGhpcy5mbGFnc3x8dGhpcy5faXNWaWV3YWJsZSh0aGlzLmZsYWdzKSl9Z2V0IHByaW50YWJsZSgpe3JldHVybiBudWxsIT09dGhpcy5kYXRhLnF1YWRQb2ludHMmJigwIT09dGhpcy5mbGFncyYmdGhpcy5faXNQcmludGFibGUodGhpcy5mbGFncykpfV9wYXJzZVN0cmluZ0hlbHBlcihlKXtjb25zdCB0PSJzdHJpbmciPT10eXBlb2YgZT9zdHJpbmdUb1BERlN0cmluZyhlKToiIjtyZXR1cm57c3RyOnQsZGlyOnQmJiJydGwiPT09YmlkaSh0KS5kaXI/InJ0bCI6Imx0ciJ9fXNldERlZmF1bHRBcHBlYXJhbmNlKGUpe2NvbnN0e2RpY3Q6dCxhbm5vdGF0aW9uR2xvYmFsczppfT1lLGE9Z2V0SW5oZXJpdGFibGVQcm9wZXJ0eSh7ZGljdDp0LGtleToiREEifSl8fGkuYWNyb0Zvcm0uZ2V0KCJEQSIpO3RoaXMuX2RlZmF1bHRBcHBlYXJhbmNlPSJzdHJpbmciPT10eXBlb2YgYT9hOiIiO3RoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGE9cGFyc2VEZWZhdWx0QXBwZWFyYW5jZSh0aGlzLl9kZWZhdWx0QXBwZWFyYW5jZSl9c2V0VGl0bGUoZSl7dGhpcy5fdGl0bGU9dGhpcy5fcGFyc2VTdHJpbmdIZWxwZXIoZSl9c2V0Q29udGVudHMoZSl7dGhpcy5fY29udGVudHM9dGhpcy5fcGFyc2VTdHJpbmdIZWxwZXIoZSl9c2V0TW9kaWZpY2F0aW9uRGF0ZShlKXt0aGlzLm1vZGlmaWNhdGlvbkRhdGU9InN0cmluZyI9PXR5cGVvZiBlP2U6bnVsbH1zZXRGbGFncyhlKXt0aGlzLmZsYWdzPU51bWJlci5pc0ludGVnZXIoZSkmJmU+MD9lOjA7dGhpcy5mbGFncyZaJiYiQW5ub3RhdGlvbiIhPT10aGlzLmNvbnN0cnVjdG9yLm5hbWUmJih0aGlzLmZsYWdzXj1aKX1oYXNGbGFnKGUpe3JldHVybiB0aGlzLl9oYXNGbGFnKHRoaXMuZmxhZ3MsZSl9c2V0UmVjdGFuZ2xlKGUpe3RoaXMucmVjdGFuZ2xlPUFycmF5LmlzQXJyYXkoZSkmJjQ9PT1lLmxlbmd0aD9VdGlsLm5vcm1hbGl6ZVJlY3QoZSk6WzAsMCwwLDBdfXNldENvbG9yKGUpe3RoaXMuY29sb3I9Z2V0UmdiQ29sb3IoZSl9c2V0TGluZUVuZGluZ3MoZSl7dGhpcy5saW5lRW5kaW5ncz1bIk5vbmUiLCJOb25lIl07aWYoQXJyYXkuaXNBcnJheShlKSYmMj09PWUubGVuZ3RoKWZvcihsZXQgdD0wO3Q8Mjt0Kyspe2NvbnN0IGk9ZVt0XTtpZihpIGluc3RhbmNlb2YgTmFtZSlzd2l0Y2goaS5uYW1lKXtjYXNlIk5vbmUiOmNvbnRpbnVlO2Nhc2UiU3F1YXJlIjpjYXNlIkNpcmNsZSI6Y2FzZSJEaWFtb25kIjpjYXNlIk9wZW5BcnJvdyI6Y2FzZSJDbG9zZWRBcnJvdyI6Y2FzZSJCdXR0IjpjYXNlIlJPcGVuQXJyb3ciOmNhc2UiUkNsb3NlZEFycm93IjpjYXNlIlNsYXNoIjp0aGlzLmxpbmVFbmRpbmdzW3RdPWkubmFtZTtjb250aW51ZX13YXJuKGBJZ25vcmluZyBpbnZhbGlkIGxpbmVFbmRpbmc6ICR7aX1gKX19c2V0Um90YXRpb24oZSx0KXt0aGlzLnJvdGF0aW9uPTA7bGV0IGk9ZSBpbnN0YW5jZW9mIERpY3Q/ZS5nZXQoIlIiKXx8MDp0LmdldCgiUm90YXRlIil8fDA7aWYoTnVtYmVyLmlzSW50ZWdlcihpKSYmMCE9PWkpe2klPTM2MDtpPDAmJihpKz0zNjApO2klOTA9PTAmJih0aGlzLnJvdGF0aW9uPWkpfX1zZXRCb3JkZXJBbmRCYWNrZ3JvdW5kQ29sb3JzKGUpe2lmKGUgaW5zdGFuY2VvZiBEaWN0KXt0aGlzLmJvcmRlckNvbG9yPWdldFJnYkNvbG9yKGUuZ2V0QXJyYXkoIkJDIiksbnVsbCk7dGhpcy5iYWNrZ3JvdW5kQ29sb3I9Z2V0UmdiQ29sb3IoZS5nZXRBcnJheSgiQkciKSxudWxsKX1lbHNlIHRoaXMuYm9yZGVyQ29sb3I9dGhpcy5iYWNrZ3JvdW5kQ29sb3I9bnVsbH1zZXRCb3JkZXJTdHlsZShlKXt0aGlzLmJvcmRlclN0eWxlPW5ldyBBbm5vdGF0aW9uQm9yZGVyU3R5bGU7aWYoZSBpbnN0YW5jZW9mIERpY3QpaWYoZS5oYXMoIkJTIikpe2NvbnN0IHQ9ZS5nZXQoIkJTIik7aWYodCBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IGU9dC5nZXQoIlR5cGUiKTtpZighZXx8aXNOYW1lKGUsIkJvcmRlciIpKXt0aGlzLmJvcmRlclN0eWxlLnNldFdpZHRoKHQuZ2V0KCJXIiksdGhpcy5yZWN0YW5nbGUpO3RoaXMuYm9yZGVyU3R5bGUuc2V0U3R5bGUodC5nZXQoIlMiKSk7dGhpcy5ib3JkZXJTdHlsZS5zZXREYXNoQXJyYXkodC5nZXRBcnJheSgiRCIpKX19fWVsc2UgaWYoZS5oYXMoIkJvcmRlciIpKXtjb25zdCB0PWUuZ2V0QXJyYXkoIkJvcmRlciIpO2lmKEFycmF5LmlzQXJyYXkodCkmJnQubGVuZ3RoPj0zKXt0aGlzLmJvcmRlclN0eWxlLnNldEhvcml6b250YWxDb3JuZXJSYWRpdXModFswXSk7dGhpcy5ib3JkZXJTdHlsZS5zZXRWZXJ0aWNhbENvcm5lclJhZGl1cyh0WzFdKTt0aGlzLmJvcmRlclN0eWxlLnNldFdpZHRoKHRbMl0sdGhpcy5yZWN0YW5nbGUpOzQ9PT10Lmxlbmd0aCYmdGhpcy5ib3JkZXJTdHlsZS5zZXREYXNoQXJyYXkodFszXSwhMCl9fWVsc2UgdGhpcy5ib3JkZXJTdHlsZS5zZXRXaWR0aCgwKX1zZXRBcHBlYXJhbmNlKGUpe3RoaXMuYXBwZWFyYW5jZT1udWxsO2NvbnN0IHQ9ZS5nZXQoIkFQIik7aWYoISh0IGluc3RhbmNlb2YgRGljdCkpcmV0dXJuO2NvbnN0IGk9dC5nZXQoIk4iKTtpZihpIGluc3RhbmNlb2YgQmFzZVN0cmVhbSl7dGhpcy5hcHBlYXJhbmNlPWk7cmV0dXJufWlmKCEoaSBpbnN0YW5jZW9mIERpY3QpKXJldHVybjtjb25zdCBhPWUuZ2V0KCJBUyIpO2lmKCEoYSBpbnN0YW5jZW9mIE5hbWUmJmkuaGFzKGEubmFtZSkpKXJldHVybjtjb25zdCBzPWkuZ2V0KGEubmFtZSk7cyBpbnN0YW5jZW9mIEJhc2VTdHJlYW0mJih0aGlzLmFwcGVhcmFuY2U9cyl9c2V0T3B0aW9uYWxDb250ZW50KGUpe3RoaXMub2M9bnVsbDtjb25zdCB0PWUuZ2V0KCJPQyIpO3QgaW5zdGFuY2VvZiBOYW1lP3dhcm4oInNldE9wdGlvbmFsQ29udGVudDogU3VwcG9ydCBmb3IgL05hbWUtZW50cnkgaXMgbm90IGltcGxlbWVudGVkLiIpOnQgaW5zdGFuY2VvZiBEaWN0JiYodGhpcy5vYz10KX1sb2FkUmVzb3VyY2VzKGUsdCl7cmV0dXJuIHQuZGljdC5nZXRBc3luYygiUmVzb3VyY2VzIikudGhlbigodD0+e2lmKCF0KXJldHVybjtyZXR1cm4gbmV3IE9iamVjdExvYWRlcih0LGUsdC54cmVmKS5sb2FkKCkudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gdH0pKX0pKX1hc3luYyBnZXRPcGVyYXRvckxpc3QoZSx0LGksYSxzKXtjb25zdHtoYXNPd25DYW52YXM6cixpZDpuLHJlY3Q6b309dGhpcy5kYXRhO2xldCBjPXRoaXMuYXBwZWFyYW5jZTtjb25zdCBDPSEhKHImJmkmZyk7aWYoQyYmKG9bMF09PT1vWzJdfHxvWzFdPT09b1szXSkpe3RoaXMuZGF0YS5oYXNPd25DYW52YXM9ITE7cmV0dXJue29wTGlzdDpuZXcgT3BlcmF0b3JMaXN0LHNlcGFyYXRlRm9ybTohMSxzZXBhcmF0ZUNhbnZhczohMX19aWYoIWMpe2lmKCFDKXJldHVybntvcExpc3Q6bmV3IE9wZXJhdG9yTGlzdCxzZXBhcmF0ZUZvcm06ITEsc2VwYXJhdGVDYW52YXM6ITF9O2M9bmV3IFN0cmluZ1N0cmVhbSgiIik7Yy5kaWN0PW5ldyBEaWN0fWNvbnN0IGg9Yy5kaWN0LGw9YXdhaXQgdGhpcy5sb2FkUmVzb3VyY2VzKFsiRXh0R1N0YXRlIiwiQ29sb3JTcGFjZSIsIlBhdHRlcm4iLCJTaGFkaW5nIiwiWE9iamVjdCIsIkZvbnQiXSxjKSxRPWguZ2V0QXJyYXkoIkJCb3giKXx8WzAsMCwxLDFdLEU9aC5nZXRBcnJheSgiTWF0cml4Iil8fFsxLDAsMCwxLDAsMF0sdT1nZXRUcmFuc2Zvcm1NYXRyaXgobyxRLEUpLGQ9bmV3IE9wZXJhdG9yTGlzdDtsZXQgZjt0aGlzLm9jJiYoZj1hd2FpdCBlLnBhcnNlTWFya2VkQ29udGVudFByb3BzKHRoaXMub2MsbnVsbCkpO3ZvaWQgMCE9PWYmJmQuYWRkT3AoSmUsWyJPQyIsZl0pO2QuYWRkT3AoV2UsW24sbyx1LEUsQ10pO2F3YWl0IGUuZ2V0T3BlcmF0b3JMaXN0KHtzdHJlYW06Yyx0YXNrOnQscmVzb3VyY2VzOmwsb3BlcmF0b3JMaXN0OmQsZmFsbGJhY2tGb250RGljdDp0aGlzLl9mYWxsYmFja0ZvbnREaWN0fSk7ZC5hZGRPcChqZSxbXSk7dm9pZCAwIT09ZiYmZC5hZGRPcChZZSxbXSk7dGhpcy5yZXNldCgpO3JldHVybntvcExpc3Q6ZCxzZXBhcmF0ZUZvcm06ITEsc2VwYXJhdGVDYW52YXM6Q319YXN5bmMgc2F2ZShlLHQsaSl7cmV0dXJuIG51bGx9Z2V0IGhhc1RleHRDb250ZW50KCl7cmV0dXJuITF9YXN5bmMgZXh0cmFjdFRleHRDb250ZW50KGUsdCxpKXtpZighdGhpcy5hcHBlYXJhbmNlKXJldHVybjtjb25zdCBhPWF3YWl0IHRoaXMubG9hZFJlc291cmNlcyhbIkV4dEdTdGF0ZSIsIkZvbnQiLCJQcm9wZXJ0aWVzIiwiWE9iamVjdCJdLHRoaXMuYXBwZWFyYW5jZSkscz1bXSxyPVtdO2xldCBuPW51bGw7Y29uc3Qgbz17ZGVzaXJlZFNpemU6TWF0aC5JbmZpbml0eSxyZWFkeTohMCxlbnF1ZXVlKGUsdCl7Zm9yKGNvbnN0IHQgb2YgZS5pdGVtcylpZih2b2lkIDAhPT10LnN0cil7bnx8PXQudHJhbnNmb3JtLnNsaWNlKC0yKTtyLnB1c2godC5zdHIpO2lmKHQuaGFzRU9MKXtzLnB1c2goci5qb2luKCIiKS50cmltRW5kKCkpO3IubGVuZ3RoPTB9fX19O2F3YWl0IGUuZ2V0VGV4dENvbnRlbnQoe3N0cmVhbTp0aGlzLmFwcGVhcmFuY2UsdGFzazp0LHJlc291cmNlczphLGluY2x1ZGVNYXJrZWRDb250ZW50OiEwLGtlZXBXaGl0ZVNwYWNlOiEwLHNpbms6byx2aWV3Qm94Oml9KTt0aGlzLnJlc2V0KCk7ci5sZW5ndGgmJnMucHVzaChyLmpvaW4oIiIpLnRyaW1FbmQoKSk7aWYocy5sZW5ndGg+MXx8c1swXSl7Y29uc3QgZT10aGlzLmFwcGVhcmFuY2UuZGljdDt0aGlzLmRhdGEudGV4dFBvc2l0aW9uPXRoaXMuX3RyYW5zZm9ybVBvaW50KG4sZS5nZXRBcnJheSgiQkJveCIpLGUuZ2V0QXJyYXkoIk1hdHJpeCIpKTt0aGlzLmRhdGEudGV4dENvbnRlbnQ9c319X3RyYW5zZm9ybVBvaW50KGUsdCxpKXtjb25zdHtyZWN0OmF9PXRoaXMuZGF0YTt0fHw9WzAsMCwxLDFdO2l8fD1bMSwwLDAsMSwwLDBdO2NvbnN0IHM9Z2V0VHJhbnNmb3JtTWF0cml4KGEsdCxpKTtzWzRdLT1hWzBdO3NbNV0tPWFbMV07ZT1VdGlsLmFwcGx5VHJhbnNmb3JtKGUscyk7cmV0dXJuIFV0aWwuYXBwbHlUcmFuc2Zvcm0oZSxpKX1nZXRGaWVsZE9iamVjdCgpe3JldHVybiB0aGlzLmRhdGEua2lkSWRzP3tpZDp0aGlzLmRhdGEuaWQsYWN0aW9uczp0aGlzLmRhdGEuYWN0aW9ucyxuYW1lOnRoaXMuZGF0YS5maWVsZE5hbWUsc3Ryb2tlQ29sb3I6dGhpcy5kYXRhLmJvcmRlckNvbG9yLGZpbGxDb2xvcjp0aGlzLmRhdGEuYmFja2dyb3VuZENvbG9yLHR5cGU6IiIsa2lkSWRzOnRoaXMuZGF0YS5raWRJZHMscGFnZTp0aGlzLmRhdGEucGFnZUluZGV4LHJvdGF0aW9uOnRoaXMucm90YXRpb259Om51bGx9cmVzZXQoKXtmb3IoY29uc3QgZSBvZiB0aGlzLl9zdHJlYW1zKWUucmVzZXQoKX1fY29uc3RydWN0RmllbGROYW1lKGUpe2lmKCFlLmhhcygiVCIpJiYhZS5oYXMoIlBhcmVudCIpKXt3YXJuKCJVbmtub3duIGZpZWxkIG5hbWUsIGZhbGxpbmcgYmFjayB0byBlbXB0eSBmaWVsZCBuYW1lLiIpO3JldHVybiIifWlmKCFlLmhhcygiUGFyZW50IikpcmV0dXJuIHN0cmluZ1RvUERGU3RyaW5nKGUuZ2V0KCJUIikpO2NvbnN0IHQ9W107ZS5oYXMoIlQiKSYmdC51bnNoaWZ0KHN0cmluZ1RvUERGU3RyaW5nKGUuZ2V0KCJUIikpKTtsZXQgaT1lO2NvbnN0IGE9bmV3IFJlZlNldDtlLm9iaklkJiZhLnB1dChlLm9iaklkKTtmb3IoO2kuaGFzKCJQYXJlbnQiKTspe2k9aS5nZXQoIlBhcmVudCIpO2lmKCEoaSBpbnN0YW5jZW9mIERpY3QpfHxpLm9iaklkJiZhLmhhcyhpLm9iaklkKSlicmVhaztpLm9iaklkJiZhLnB1dChpLm9iaklkKTtpLmhhcygiVCIpJiZ0LnVuc2hpZnQoc3RyaW5nVG9QREZTdHJpbmcoaS5nZXQoIlQiKSkpfXJldHVybiB0LmpvaW4oIi4iKX19Y2xhc3MgQW5ub3RhdGlvbkJvcmRlclN0eWxle2NvbnN0cnVjdG9yKCl7dGhpcy53aWR0aD0xO3RoaXMuc3R5bGU9aEE7dGhpcy5kYXNoQXJyYXk9WzNdO3RoaXMuaG9yaXpvbnRhbENvcm5lclJhZGl1cz0wO3RoaXMudmVydGljYWxDb3JuZXJSYWRpdXM9MH1zZXRXaWR0aChlLHQ9WzAsMCwwLDBdKXtpZihlIGluc3RhbmNlb2YgTmFtZSl0aGlzLndpZHRoPTA7ZWxzZSBpZigibnVtYmVyIj09dHlwZW9mIGUpe2lmKGU+MCl7Y29uc3QgaT0odFsyXS10WzBdKS8yLGE9KHRbM10tdFsxXSkvMjtpZihpPjAmJmE+MCYmKGU+aXx8ZT5hKSl7d2FybihgQW5ub3RhdGlvbkJvcmRlclN0eWxlLnNldFdpZHRoIC0gaWdub3Jpbmcgd2lkdGg6ICR7ZX1gKTtlPTF9fXRoaXMud2lkdGg9ZX19c2V0U3R5bGUoZSl7aWYoZSBpbnN0YW5jZW9mIE5hbWUpc3dpdGNoKGUubmFtZSl7Y2FzZSJTIjp0aGlzLnN0eWxlPWhBO2JyZWFrO2Nhc2UiRCI6dGhpcy5zdHlsZT1sQTticmVhaztjYXNlIkIiOnRoaXMuc3R5bGU9QkE7YnJlYWs7Y2FzZSJJIjp0aGlzLnN0eWxlPVFBO2JyZWFrO2Nhc2UiVSI6dGhpcy5zdHlsZT1FQX19c2V0RGFzaEFycmF5KGUsdD0hMSl7aWYoQXJyYXkuaXNBcnJheShlKSl7bGV0IGk9ITAsYT0hMDtmb3IoY29uc3QgdCBvZiBlKXtpZighKCt0Pj0wKSl7aT0hMTticmVha310PjAmJihhPSExKX1pZigwPT09ZS5sZW5ndGh8fGkmJiFhKXt0aGlzLmRhc2hBcnJheT1lO3QmJnRoaXMuc2V0U3R5bGUoTmFtZS5nZXQoIkQiKSl9ZWxzZSB0aGlzLndpZHRoPTB9ZWxzZSBlJiYodGhpcy53aWR0aD0wKX1zZXRIb3Jpem9udGFsQ29ybmVyUmFkaXVzKGUpe051bWJlci5pc0ludGVnZXIoZSkmJih0aGlzLmhvcml6b250YWxDb3JuZXJSYWRpdXM9ZSl9c2V0VmVydGljYWxDb3JuZXJSYWRpdXMoZSl7TnVtYmVyLmlzSW50ZWdlcihlKSYmKHRoaXMudmVydGljYWxDb3JuZXJSYWRpdXM9ZSl9fWNsYXNzIE1hcmt1cEFubm90YXRpb24gZXh0ZW5kcyBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dH09ZTtpZih0LmhhcygiSVJUIikpe2NvbnN0IGU9dC5nZXRSYXcoIklSVCIpO3RoaXMuZGF0YS5pblJlcGx5VG89ZSBpbnN0YW5jZW9mIFJlZj9lLnRvU3RyaW5nKCk6bnVsbDtjb25zdCBpPXQuZ2V0KCJSVCIpO3RoaXMuZGF0YS5yZXBseVR5cGU9aSBpbnN0YW5jZW9mIE5hbWU/aS5uYW1lOlh9bGV0IGk9bnVsbDtpZih0aGlzLmRhdGEucmVwbHlUeXBlPT09ail7Y29uc3QgZT10LmdldCgiSVJUIik7dGhpcy5zZXRUaXRsZShlLmdldCgiVCIpKTt0aGlzLmRhdGEudGl0bGVPYmo9dGhpcy5fdGl0bGU7dGhpcy5zZXRDb250ZW50cyhlLmdldCgiQ29udGVudHMiKSk7dGhpcy5kYXRhLmNvbnRlbnRzT2JqPXRoaXMuX2NvbnRlbnRzO2lmKGUuaGFzKCJDcmVhdGlvbkRhdGUiKSl7dGhpcy5zZXRDcmVhdGlvbkRhdGUoZS5nZXQoIkNyZWF0aW9uRGF0ZSIpKTt0aGlzLmRhdGEuY3JlYXRpb25EYXRlPXRoaXMuY3JlYXRpb25EYXRlfWVsc2UgdGhpcy5kYXRhLmNyZWF0aW9uRGF0ZT1udWxsO2lmKGUuaGFzKCJNIikpe3RoaXMuc2V0TW9kaWZpY2F0aW9uRGF0ZShlLmdldCgiTSIpKTt0aGlzLmRhdGEubW9kaWZpY2F0aW9uRGF0ZT10aGlzLm1vZGlmaWNhdGlvbkRhdGV9ZWxzZSB0aGlzLmRhdGEubW9kaWZpY2F0aW9uRGF0ZT1udWxsO2k9ZS5nZXRSYXcoIlBvcHVwIik7aWYoZS5oYXMoIkMiKSl7dGhpcy5zZXRDb2xvcihlLmdldEFycmF5KCJDIikpO3RoaXMuZGF0YS5jb2xvcj10aGlzLmNvbG9yfWVsc2UgdGhpcy5kYXRhLmNvbG9yPW51bGx9ZWxzZXt0aGlzLmRhdGEudGl0bGVPYmo9dGhpcy5fdGl0bGU7dGhpcy5zZXRDcmVhdGlvbkRhdGUodC5nZXQoIkNyZWF0aW9uRGF0ZSIpKTt0aGlzLmRhdGEuY3JlYXRpb25EYXRlPXRoaXMuY3JlYXRpb25EYXRlO2k9dC5nZXRSYXcoIlBvcHVwIik7dC5oYXMoIkMiKXx8KHRoaXMuZGF0YS5jb2xvcj1udWxsKX10aGlzLmRhdGEucG9wdXBSZWY9aSBpbnN0YW5jZW9mIFJlZj9pLnRvU3RyaW5nKCk6bnVsbDt0LmhhcygiUkMiKSYmKHRoaXMuZGF0YS5yaWNoVGV4dD1YRkFGYWN0b3J5LmdldFJpY2hUZXh0QXNIdG1sKHQuZ2V0KCJSQyIpKSl9c2V0Q3JlYXRpb25EYXRlKGUpe3RoaXMuY3JlYXRpb25EYXRlPSJzdHJpbmciPT10eXBlb2YgZT9lOm51bGx9X3NldERlZmF1bHRBcHBlYXJhbmNlKHt4cmVmOmUsZXh0cmE6dCxzdHJva2VDb2xvcjppLGZpbGxDb2xvcjphLGJsZW5kTW9kZTpzLHN0cm9rZUFscGhhOnIsZmlsbEFscGhhOm4scG9pbnRzQ2FsbGJhY2s6b30pe2xldCBnPU51bWJlci5NQVhfVkFMVUUsYz1OdW1iZXIuTUFYX1ZBTFVFLEM9TnVtYmVyLk1JTl9WQUxVRSxoPU51bWJlci5NSU5fVkFMVUU7Y29uc3QgbD1bInEiXTt0JiZsLnB1c2godCk7aSYmbC5wdXNoKGAke2lbMF19ICR7aVsxXX0gJHtpWzJdfSBSR2ApO2EmJmwucHVzaChgJHthWzBdfSAke2FbMV19ICR7YVsyXX0gcmdgKTtsZXQgUT10aGlzLmRhdGEucXVhZFBvaW50cztRfHwoUT1bW3t4OnRoaXMucmVjdGFuZ2xlWzBdLHk6dGhpcy5yZWN0YW5nbGVbM119LHt4OnRoaXMucmVjdGFuZ2xlWzJdLHk6dGhpcy5yZWN0YW5nbGVbM119LHt4OnRoaXMucmVjdGFuZ2xlWzBdLHk6dGhpcy5yZWN0YW5nbGVbMV19LHt4OnRoaXMucmVjdGFuZ2xlWzJdLHk6dGhpcy5yZWN0YW5nbGVbMV19XV0pO2Zvcihjb25zdCBlIG9mIFEpe2NvbnN0W3QsaSxhLHNdPW8obCxlKTtnPU1hdGgubWluKGcsdCk7Qz1NYXRoLm1heChDLGkpO2M9TWF0aC5taW4oYyxhKTtoPU1hdGgubWF4KGgscyl9bC5wdXNoKCJRIik7Y29uc3QgRT1uZXcgRGljdChlKSx1PW5ldyBEaWN0KGUpO3Uuc2V0KCJTdWJ0eXBlIixOYW1lLmdldCgiRm9ybSIpKTtjb25zdCBkPW5ldyBTdHJpbmdTdHJlYW0obC5qb2luKCIgIikpO2QuZGljdD11O0Uuc2V0KCJGbTAiLGQpO2NvbnN0IGY9bmV3IERpY3QoZSk7cyYmZi5zZXQoIkJNIixOYW1lLmdldChzKSk7Im51bWJlciI9PXR5cGVvZiByJiZmLnNldCgiQ0EiLHIpOyJudW1iZXIiPT10eXBlb2YgbiYmZi5zZXQoImNhIixuKTtjb25zdCBwPW5ldyBEaWN0KGUpO3Auc2V0KCJHUzAiLGYpO2NvbnN0IG09bmV3IERpY3QoZSk7bS5zZXQoIkV4dEdTdGF0ZSIscCk7bS5zZXQoIlhPYmplY3QiLEUpO2NvbnN0IHk9bmV3IERpY3QoZSk7eS5zZXQoIlJlc291cmNlcyIsbSk7Y29uc3Qgdz10aGlzLmRhdGEucmVjdD1bZyxjLEMsaF07eS5zZXQoIkJCb3giLHcpO3RoaXMuYXBwZWFyYW5jZT1uZXcgU3RyaW5nU3RyZWFtKCIvR1MwIGdzIC9GbTAgRG8iKTt0aGlzLmFwcGVhcmFuY2UuZGljdD15O3RoaXMuX3N0cmVhbXMucHVzaCh0aGlzLmFwcGVhcmFuY2UsZCl9c3RhdGljIGFzeW5jIGNyZWF0ZU5ld0Fubm90YXRpb24oZSx0LGksYSl7Y29uc3Qgcz10LnJlZnx8PWUuZ2V0TmV3VGVtcG9yYXJ5UmVmKCkscj1hd2FpdCB0aGlzLmNyZWF0ZU5ld0FwcGVhcmFuY2VTdHJlYW0odCxlLGEpLG49W107bGV0IG87aWYocil7Y29uc3QgYT1lLmdldE5ld1RlbXBvcmFyeVJlZigpO289dGhpcy5jcmVhdGVOZXdEaWN0KHQsZSx7YXBSZWY6YX0pO2F3YWl0IHdyaXRlT2JqZWN0KGEscixuLGUpO2kucHVzaCh7cmVmOmEsZGF0YTpuLmpvaW4oIiIpfSl9ZWxzZSBvPXRoaXMuY3JlYXRlTmV3RGljdCh0LGUse30pO051bWJlci5pc0ludGVnZXIodC5wYXJlbnRUcmVlSWQpJiZvLnNldCgiU3RydWN0UGFyZW50Iix0LnBhcmVudFRyZWVJZCk7bi5sZW5ndGg9MDthd2FpdCB3cml0ZU9iamVjdChzLG8sbixlKTtyZXR1cm57cmVmOnMsZGF0YTpuLmpvaW4oIiIpfX1zdGF0aWMgYXN5bmMgY3JlYXRlTmV3UHJpbnRBbm5vdGF0aW9uKGUsdCxpLGEpe2NvbnN0IHM9YXdhaXQgdGhpcy5jcmVhdGVOZXdBcHBlYXJhbmNlU3RyZWFtKGksdCxhKSxyPXRoaXMuY3JlYXRlTmV3RGljdChpLHQse2FwOnN9KSxuPW5ldyB0aGlzLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcih7ZGljdDpyLHhyZWY6dCxhbm5vdGF0aW9uR2xvYmFsczplLGV2YWx1YXRvck9wdGlvbnM6YS5ldmFsdWF0b3JPcHRpb25zfSk7aS5yZWYmJihuLnJlZj1uLnJlZlRvUmVwbGFjZT1pLnJlZik7cmV0dXJuIG59fWNsYXNzIFdpZGdldEFubm90YXRpb24gZXh0ZW5kcyBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dCx4cmVmOmksYW5ub3RhdGlvbkdsb2JhbHM6YX09ZSxzPXRoaXMuZGF0YTt0aGlzLl9uZWVkQXBwZWFyYW5jZXM9ZS5uZWVkQXBwZWFyYW5jZXM7cy5hbm5vdGF0aW9uVHlwZT1XO3ZvaWQgMD09PXMuZmllbGROYW1lJiYocy5maWVsZE5hbWU9dGhpcy5fY29uc3RydWN0RmllbGROYW1lKHQpKTt2b2lkIDA9PT1zLmFjdGlvbnMmJihzLmFjdGlvbnM9Y29sbGVjdEFjdGlvbnMoaSx0LHVBKSk7bGV0IHI9Z2V0SW5oZXJpdGFibGVQcm9wZXJ0eSh7ZGljdDp0LGtleToiViIsZ2V0QXJyYXk6ITB9KTtzLmZpZWxkVmFsdWU9dGhpcy5fZGVjb2RlRm9ybVZhbHVlKHIpO2NvbnN0IG49Z2V0SW5oZXJpdGFibGVQcm9wZXJ0eSh7ZGljdDp0LGtleToiRFYiLGdldEFycmF5OiEwfSk7cy5kZWZhdWx0RmllbGRWYWx1ZT10aGlzLl9kZWNvZGVGb3JtVmFsdWUobik7aWYodm9pZCAwPT09ciYmYS54ZmFEYXRhc2V0cyl7Y29uc3QgZT10aGlzLl90aXRsZS5zdHI7aWYoZSl7dGhpcy5faGFzVmFsdWVGcm9tWEZBPSEwO3MuZmllbGRWYWx1ZT1yPWEueGZhRGF0YXNldHMuZ2V0VmFsdWUoZSl9fXZvaWQgMD09PXImJm51bGwhPT1zLmRlZmF1bHRGaWVsZFZhbHVlJiYocy5maWVsZFZhbHVlPXMuZGVmYXVsdEZpZWxkVmFsdWUpO3MuYWx0ZXJuYXRpdmVUZXh0PXN0cmluZ1RvUERGU3RyaW5nKHQuZ2V0KCJUVSIpfHwiIik7dGhpcy5zZXREZWZhdWx0QXBwZWFyYW5jZShlKTtzLmhhc0FwcGVhcmFuY2V8fD10aGlzLl9uZWVkQXBwZWFyYW5jZXMmJnZvaWQgMCE9PXMuZmllbGRWYWx1ZSYmbnVsbCE9PXMuZmllbGRWYWx1ZTtjb25zdCBvPWdldEluaGVyaXRhYmxlUHJvcGVydHkoe2RpY3Q6dCxrZXk6IkZUIn0pO3MuZmllbGRUeXBlPW8gaW5zdGFuY2VvZiBOYW1lP28ubmFtZTpudWxsO2NvbnN0IGc9Z2V0SW5oZXJpdGFibGVQcm9wZXJ0eSh7ZGljdDp0LGtleToiRFIifSksYz1hLmFjcm9Gb3JtLmdldCgiRFIiKSxDPXRoaXMuYXBwZWFyYW5jZT8uZGljdC5nZXQoIlJlc291cmNlcyIpO3RoaXMuX2ZpZWxkUmVzb3VyY2VzPXtsb2NhbFJlc291cmNlczpnLGFjcm9Gb3JtUmVzb3VyY2VzOmMsYXBwZWFyYW5jZVJlc291cmNlczpDLG1lcmdlZFJlc291cmNlczpEaWN0Lm1lcmdlKHt4cmVmOmksZGljdEFycmF5OltnLEMsY10sbWVyZ2VTdWJEaWN0czohMH0pfTtzLmZpZWxkRmxhZ3M9Z2V0SW5oZXJpdGFibGVQcm9wZXJ0eSh7ZGljdDp0LGtleToiRmYifSk7KCFOdW1iZXIuaXNJbnRlZ2VyKHMuZmllbGRGbGFncyl8fHMuZmllbGRGbGFnczwwKSYmKHMuZmllbGRGbGFncz0wKTtzLnJlYWRPbmx5PXRoaXMuaGFzRmllbGRGbGFnKHRBKTtzLnJlcXVpcmVkPXRoaXMuaGFzRmllbGRGbGFnKGlBKTtzLmhpZGRlbj10aGlzLl9oYXNGbGFnKHMuYW5ub3RhdGlvbkZsYWdzLFYpfHx0aGlzLl9oYXNGbGFnKHMuYW5ub3RhdGlvbkZsYWdzLCQpfV9kZWNvZGVGb3JtVmFsdWUoZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/ZS5maWx0ZXIoKGU9PiJzdHJpbmciPT10eXBlb2YgZSkpLm1hcCgoZT0+c3RyaW5nVG9QREZTdHJpbmcoZSkpKTplIGluc3RhbmNlb2YgTmFtZT9zdHJpbmdUb1BERlN0cmluZyhlLm5hbWUpOiJzdHJpbmciPT10eXBlb2YgZT9zdHJpbmdUb1BERlN0cmluZyhlKTpudWxsfWhhc0ZpZWxkRmxhZyhlKXtyZXR1cm4hISh0aGlzLmRhdGEuZmllbGRGbGFncyZlKX1faXNWaWV3YWJsZShlKXtyZXR1cm4hMH1tdXN0QmVWaWV3ZWQoZSx0KXtyZXR1cm4gdD90aGlzLnZpZXdhYmxlOnN1cGVyLm11c3RCZVZpZXdlZChlLHQpJiYhdGhpcy5faGFzRmxhZyh0aGlzLmZsYWdzLCQpfWdldFJvdGF0aW9uTWF0cml4KGUpe2xldCB0PWU/LmdldCh0aGlzLmRhdGEuaWQpPy5yb3RhdGlvbjt2b2lkIDA9PT10JiYodD10aGlzLnJvdGF0aW9uKTtpZigwPT09dClyZXR1cm4gaTtyZXR1cm4gZ2V0Um90YXRpb25NYXRyaXgodCx0aGlzLmRhdGEucmVjdFsyXS10aGlzLmRhdGEucmVjdFswXSx0aGlzLmRhdGEucmVjdFszXS10aGlzLmRhdGEucmVjdFsxXSl9Z2V0Qm9yZGVyQW5kQmFja2dyb3VuZEFwcGVhcmFuY2VzKGUpe2xldCB0PWU/LmdldCh0aGlzLmRhdGEuaWQpPy5yb3RhdGlvbjt2b2lkIDA9PT10JiYodD10aGlzLnJvdGF0aW9uKTtpZighdGhpcy5iYWNrZ3JvdW5kQ29sb3ImJiF0aGlzLmJvcmRlckNvbG9yKXJldHVybiIiO2NvbnN0IGk9dGhpcy5kYXRhLnJlY3RbMl0tdGhpcy5kYXRhLnJlY3RbMF0sYT10aGlzLmRhdGEucmVjdFszXS10aGlzLmRhdGEucmVjdFsxXSxzPTA9PT10fHwxODA9PT10P2AwIDAgJHtpfSAke2F9IHJlYDpgMCAwICR7YX0gJHtpfSByZWA7bGV0IHI9IiI7dGhpcy5iYWNrZ3JvdW5kQ29sb3ImJihyPWAke2dldFBkZkNvbG9yKHRoaXMuYmFja2dyb3VuZENvbG9yLCEwKX0gJHtzfSBmIGApO2lmKHRoaXMuYm9yZGVyQ29sb3Ipe3IrPWAke3RoaXMuYm9yZGVyU3R5bGUud2lkdGh8fDF9IHcgJHtnZXRQZGZDb2xvcih0aGlzLmJvcmRlckNvbG9yLCExKX0gJHtzfSBTIGB9cmV0dXJuIHJ9YXN5bmMgZ2V0T3BlcmF0b3JMaXN0KGUsdCxpLGEscyl7aWYoYSYmISh0aGlzIGluc3RhbmNlb2YgU2lnbmF0dXJlV2lkZ2V0QW5ub3RhdGlvbikmJiF0aGlzLmRhdGEubm9IVE1MJiYhdGhpcy5kYXRhLmhhc093bkNhbnZhcylyZXR1cm57b3BMaXN0Om5ldyBPcGVyYXRvckxpc3Qsc2VwYXJhdGVGb3JtOiEwLHNlcGFyYXRlQ2FudmFzOiExfTtpZighdGhpcy5faGFzVGV4dClyZXR1cm4gc3VwZXIuZ2V0T3BlcmF0b3JMaXN0KGUsdCxpLGEscyk7Y29uc3Qgcj1hd2FpdCB0aGlzLl9nZXRBcHBlYXJhbmNlKGUsdCxpLHMpO2lmKHRoaXMuYXBwZWFyYW5jZSYmbnVsbD09PXIpcmV0dXJuIHN1cGVyLmdldE9wZXJhdG9yTGlzdChlLHQsaSxhLHMpO2NvbnN0IG49bmV3IE9wZXJhdG9yTGlzdDtpZighdGhpcy5fZGVmYXVsdEFwcGVhcmFuY2V8fG51bGw9PT1yKXJldHVybntvcExpc3Q6bixzZXBhcmF0ZUZvcm06ITEsc2VwYXJhdGVDYW52YXM6ITF9O2NvbnN0IG89ISEodGhpcy5kYXRhLmhhc093bkNhbnZhcyYmaSZnKSxjPVswLDAsdGhpcy5kYXRhLnJlY3RbMl0tdGhpcy5kYXRhLnJlY3RbMF0sdGhpcy5kYXRhLnJlY3RbM10tdGhpcy5kYXRhLnJlY3RbMV1dLEM9Z2V0VHJhbnNmb3JtTWF0cml4KHRoaXMuZGF0YS5yZWN0LGMsWzEsMCwwLDEsMCwwXSk7bGV0IGg7dGhpcy5vYyYmKGg9YXdhaXQgZS5wYXJzZU1hcmtlZENvbnRlbnRQcm9wcyh0aGlzLm9jLG51bGwpKTt2b2lkIDAhPT1oJiZuLmFkZE9wKEplLFsiT0MiLGhdKTtuLmFkZE9wKFdlLFt0aGlzLmRhdGEuaWQsdGhpcy5kYXRhLnJlY3QsQyx0aGlzLmdldFJvdGF0aW9uTWF0cml4KHMpLG9dKTtjb25zdCBsPW5ldyBTdHJpbmdTdHJlYW0ocik7YXdhaXQgZS5nZXRPcGVyYXRvckxpc3Qoe3N0cmVhbTpsLHRhc2s6dCxyZXNvdXJjZXM6dGhpcy5fZmllbGRSZXNvdXJjZXMubWVyZ2VkUmVzb3VyY2VzLG9wZXJhdG9yTGlzdDpufSk7bi5hZGRPcChqZSxbXSk7dm9pZCAwIT09aCYmbi5hZGRPcChZZSxbXSk7cmV0dXJue29wTGlzdDpuLHNlcGFyYXRlRm9ybTohMSxzZXBhcmF0ZUNhbnZhczpvfX1fZ2V0TUtEaWN0KGUpe2NvbnN0IHQ9bmV3IERpY3QobnVsbCk7ZSYmdC5zZXQoIlIiLGUpO3RoaXMuYm9yZGVyQ29sb3ImJnQuc2V0KCJCQyIsZ2V0UGRmQ29sb3JBcnJheSh0aGlzLmJvcmRlckNvbG9yKSk7dGhpcy5iYWNrZ3JvdW5kQ29sb3ImJnQuc2V0KCJCRyIsZ2V0UGRmQ29sb3JBcnJheSh0aGlzLmJhY2tncm91bmRDb2xvcikpO3JldHVybiB0LnNpemU+MD90Om51bGx9YW1lbmRTYXZlZERpY3QoZSx0KXt9YXN5bmMgc2F2ZShlLHQsYSl7Y29uc3Qgcz1hPy5nZXQodGhpcy5kYXRhLmlkKTtsZXQgcj1zPy52YWx1ZSxuPXM/LnJvdGF0aW9uO2lmKHI9PT10aGlzLmRhdGEuZmllbGRWYWx1ZXx8dm9pZCAwPT09cil7aWYoIXRoaXMuX2hhc1ZhbHVlRnJvbVhGQSYmdm9pZCAwPT09bilyZXR1cm4gbnVsbDtyfHw9dGhpcy5kYXRhLmZpZWxkVmFsdWV9aWYodm9pZCAwPT09biYmIXRoaXMuX2hhc1ZhbHVlRnJvbVhGQSYmQXJyYXkuaXNBcnJheShyKSYmQXJyYXkuaXNBcnJheSh0aGlzLmRhdGEuZmllbGRWYWx1ZSkmJnIubGVuZ3RoPT09dGhpcy5kYXRhLmZpZWxkVmFsdWUubGVuZ3RoJiZyLmV2ZXJ5KCgoZSx0KT0+ZT09PXRoaXMuZGF0YS5maWVsZFZhbHVlW3RdKSkpcmV0dXJuIG51bGw7dm9pZCAwPT09biYmKG49dGhpcy5yb3RhdGlvbik7bGV0IG89bnVsbDtpZighdGhpcy5fbmVlZEFwcGVhcmFuY2VzKXtvPWF3YWl0IHRoaXMuX2dldEFwcGVhcmFuY2UoZSx0LEMsYSk7aWYobnVsbD09PW8pcmV0dXJuIG51bGx9bGV0IGc9ITE7aWYobz8ubmVlZEFwcGVhcmFuY2VzKXtnPSEwO289bnVsbH1jb25zdHt4cmVmOmN9PWUsaD1jLmZldGNoSWZSZWYodGhpcy5yZWYpO2lmKCEoaCBpbnN0YW5jZW9mIERpY3QpKXJldHVybiBudWxsO2NvbnN0IGw9bmV3IERpY3QoYyk7Zm9yKGNvbnN0IGUgb2YgaC5nZXRLZXlzKCkpIkFQIiE9PWUmJmwuc2V0KGUsaC5nZXRSYXcoZSkpO2NvbnN0IFE9e3BhdGg6dGhpcy5kYXRhLmZpZWxkTmFtZSx2YWx1ZTpyfSxlbmNvZGVyPWU9PmlzQXNjaWkoZSk/ZTpzdHJpbmdUb1VURjE2U3RyaW5nKGUsITApO2wuc2V0KCJWIixBcnJheS5pc0FycmF5KHIpP3IubWFwKGVuY29kZXIpOmVuY29kZXIocikpO3RoaXMuYW1lbmRTYXZlZERpY3QoYSxsKTtjb25zdCBFPXRoaXMuX2dldE1LRGljdChuKTtFJiZsLnNldCgiTUsiLEUpO2NvbnN0IHU9W10sZD1be3JlZjp0aGlzLnJlZixkYXRhOiIiLHhmYTpRLG5lZWRBcHBlYXJhbmNlczpnfV07aWYobnVsbCE9PW8pe2NvbnN0IGU9Yy5nZXROZXdUZW1wb3JhcnlSZWYoKSx0PW5ldyBEaWN0KGMpO2wuc2V0KCJBUCIsdCk7dC5zZXQoIk4iLGUpO2NvbnN0IHM9dGhpcy5fZ2V0U2F2ZUZpZWxkUmVzb3VyY2VzKGMpLHI9bmV3IFN0cmluZ1N0cmVhbShvKSxuPXIuZGljdD1uZXcgRGljdChjKTtuLnNldCgiU3VidHlwZSIsTmFtZS5nZXQoIkZvcm0iKSk7bi5zZXQoIlJlc291cmNlcyIscyk7bi5zZXQoIkJCb3giLFswLDAsdGhpcy5kYXRhLnJlY3RbMl0tdGhpcy5kYXRhLnJlY3RbMF0sdGhpcy5kYXRhLnJlY3RbM10tdGhpcy5kYXRhLnJlY3RbMV1dKTtjb25zdCBnPXRoaXMuZ2V0Um90YXRpb25NYXRyaXgoYSk7ZyE9PWkmJm4uc2V0KCJNYXRyaXgiLGcpO2F3YWl0IHdyaXRlT2JqZWN0KGUscix1LGMpO2QucHVzaCh7cmVmOmUsZGF0YTp1LmpvaW4oIiIpLHhmYTpudWxsLG5lZWRBcHBlYXJhbmNlczohMX0pO3UubGVuZ3RoPTB9bC5zZXQoIk0iLGBEOiR7Z2V0TW9kaWZpY2F0aW9uRGF0ZSgpfWApO2F3YWl0IHdyaXRlT2JqZWN0KHRoaXMucmVmLGwsdSxjKTtkWzBdLmRhdGE9dS5qb2luKCIiKTtyZXR1cm4gZH1hc3luYyBfZ2V0QXBwZWFyYW5jZShlLHQsaSxhKXtpZih0aGlzLmhhc0ZpZWxkRmxhZyhzQSkpcmV0dXJuIG51bGw7Y29uc3Qgcz1hPy5nZXQodGhpcy5kYXRhLmlkKTtsZXQgcixvO2lmKHMpe3I9cy5mb3JtYXR0ZWRWYWx1ZXx8cy52YWx1ZTtvPXMucm90YXRpb259aWYodm9pZCAwPT09byYmdm9pZCAwPT09ciYmIXRoaXMuX25lZWRBcHBlYXJhbmNlcyYmKCF0aGlzLl9oYXNWYWx1ZUZyb21YRkF8fHRoaXMuYXBwZWFyYW5jZSkpcmV0dXJuIG51bGw7Y29uc3QgZz10aGlzLmdldEJvcmRlckFuZEJhY2tncm91bmRBcHBlYXJhbmNlcyhhKTtpZih2b2lkIDA9PT1yKXtyPXRoaXMuZGF0YS5maWVsZFZhbHVlO2lmKCFyKXJldHVybmAvVHggQk1DIHEgJHtnfVEgRU1DYH1BcnJheS5pc0FycmF5KHIpJiYxPT09ci5sZW5ndGgmJihyPXJbMF0pO2Fzc2VydCgic3RyaW5nIj09dHlwZW9mIHIsIkV4cGVjdGVkIGB2YWx1ZWAgdG8gYmUgYSBzdHJpbmcuIik7cj1yLnRyaW0oKTtpZih0aGlzLmRhdGEuY29tYm8pe2NvbnN0IGU9dGhpcy5kYXRhLm9wdGlvbnMuZmluZCgoKHtleHBvcnRWYWx1ZTplfSk9PnI9PT1lKSk7cj1lPy5kaXNwbGF5VmFsdWV8fHJ9aWYoIiI9PT1yKXJldHVybmAvVHggQk1DIHEgJHtnfVEgRU1DYDt2b2lkIDA9PT1vJiYobz10aGlzLnJvdGF0aW9uKTtsZXQgYyxoPS0xO2lmKHRoaXMuZGF0YS5tdWx0aUxpbmUpe2M9ci5zcGxpdCgvXHJcbj98XG4vKS5tYXAoKGU9PmUubm9ybWFsaXplKCJORkMiKSkpO2g9Yy5sZW5ndGh9ZWxzZSBjPVtyLnJlcGxhY2UoL1xyXG4/fFxuLywiIikubm9ybWFsaXplKCJORkMiKV07bGV0IGw9dGhpcy5kYXRhLnJlY3RbM10tdGhpcy5kYXRhLnJlY3RbMV0sUT10aGlzLmRhdGEucmVjdFsyXS10aGlzLmRhdGEucmVjdFswXTs5MCE9PW8mJjI3MCE9PW98fChbUSxsXT1bbCxRXSk7dGhpcy5fZGVmYXVsdEFwcGVhcmFuY2V8fCh0aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhPXBhcnNlRGVmYXVsdEFwcGVhcmFuY2UodGhpcy5fZGVmYXVsdEFwcGVhcmFuY2U9Ii9IZWx2ZXRpY2EgMCBUZiAwIGciKSk7bGV0IEUsdSxkLGY9YXdhaXQgV2lkZ2V0QW5ub3RhdGlvbi5fZ2V0Rm9udERhdGEoZSx0LHRoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGEsdGhpcy5fZmllbGRSZXNvdXJjZXMubWVyZ2VkUmVzb3VyY2VzKTtjb25zdCBwPVtdO2xldCBtPSExO2Zvcihjb25zdCBlIG9mIGMpe2NvbnN0IHQ9Zi5lbmNvZGVTdHJpbmcoZSk7dC5sZW5ndGg+MSYmKG09ITApO3AucHVzaCh0LmpvaW4oIiIpKX1pZihtJiZpJkMpcmV0dXJue25lZWRBcHBlYXJhbmNlczohMH07aWYobSYmdGhpcy5faXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQpe2NvbnN0IGk9dGhpcy5kYXRhLmNvbWI/Im1vbm9zcGFjZSI6InNhbnMtc2VyaWYiLGE9bmV3IEZha2VVbmljb2RlRm9udChlLnhyZWYsaSkscz1hLmNyZWF0ZUZvbnRSZXNvdXJjZXMoYy5qb2luKCIiKSksbj1zLmdldFJhdygiRm9udCIpO2lmKHRoaXMuX2ZpZWxkUmVzb3VyY2VzLm1lcmdlZFJlc291cmNlcy5oYXMoIkZvbnQiKSl7Y29uc3QgZT10aGlzLl9maWVsZFJlc291cmNlcy5tZXJnZWRSZXNvdXJjZXMuZ2V0KCJGb250Iik7Zm9yKGNvbnN0IHQgb2Ygbi5nZXRLZXlzKCkpZS5zZXQodCxuLmdldFJhdyh0KSl9ZWxzZSB0aGlzLl9maWVsZFJlc291cmNlcy5tZXJnZWRSZXNvdXJjZXMuc2V0KCJGb250IixuKTtjb25zdCBvPWEuZm9udE5hbWUubmFtZTtmPWF3YWl0IFdpZGdldEFubm90YXRpb24uX2dldEZvbnREYXRhKGUsdCx7Zm9udE5hbWU6byxmb250U2l6ZTowfSxzKTtmb3IobGV0IGU9MCx0PXAubGVuZ3RoO2U8dDtlKyspcFtlXT1zdHJpbmdUb1VURjE2U3RyaW5nKGNbZV0pO2NvbnN0IGc9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKG51bGwpLHRoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGEpO3RoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGEuZm9udFNpemU9MDt0aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhLmZvbnROYW1lPW87W0UsdSxkXT10aGlzLl9jb21wdXRlRm9udFNpemUobC0yLFEtNCxyLGYsaCk7dGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YT1nfWVsc2V7dGhpcy5faXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWR8fHdhcm4oIl9nZXRBcHBlYXJhbmNlOiBPZmZzY3JlZW5DYW52YXMgaXMgbm90IHN1cHBvcnRlZCwgYW5ub3RhdGlvbiBtYXkgbm90IHJlbmRlciBjb3JyZWN0bHkuIik7W0UsdSxkXT10aGlzLl9jb21wdXRlRm9udFNpemUobC0yLFEtNCxyLGYsaCl9bGV0IHk9Zi5kZXNjZW50O3k9aXNOYU4oeSk/bipkOk1hdGgubWF4KG4qZCxNYXRoLmFicyh5KSp1KTtjb25zdCB3PU1hdGgubWluKE1hdGguZmxvb3IoKGwtdSkvMiksMSksYj10aGlzLmRhdGEudGV4dEFsaWdubWVudDtpZih0aGlzLmRhdGEubXVsdGlMaW5lKXJldHVybiB0aGlzLl9nZXRNdWx0aWxpbmVBcHBlYXJhbmNlKEUscCxmLHUsUSxsLGIsMix3LHksZCxhKTtpZih0aGlzLmRhdGEuY29tYilyZXR1cm4gdGhpcy5fZ2V0Q29tYkFwcGVhcmFuY2UoRSxmLHBbMF0sdSxRLGwsMix3LHksZCxhKTtjb25zdCBEPXcreTtpZigwPT09Ynx8Yj4yKXJldHVybmAvVHggQk1DIHEgJHtnfUJUIGArRStgIDEgMCAwIDEgJHtudW1iZXJUb1N0cmluZygyKX0gJHtudW1iZXJUb1N0cmluZyhEKX0gVG0gKCR7ZXNjYXBlU3RyaW5nKHBbMF0pfSkgVGogRVQgUSBFTUNgO3JldHVybmAvVHggQk1DIHEgJHtnfUJUIGArRStgIDEgMCAwIDEgMCAwIFRtICR7dGhpcy5fcmVuZGVyVGV4dChwWzBdLGYsdSxRLGIse3NoaWZ0OjB9LDIsRCl9IEVUIFEgRU1DYH1zdGF0aWMgYXN5bmMgX2dldEZvbnREYXRhKGUsdCxpLGEpe2NvbnN0IHM9bmV3IE9wZXJhdG9yTGlzdCxyPXtmb250Om51bGwsY2xvbmUoKXtyZXR1cm4gdGhpc319LHtmb250TmFtZTpuLGZvbnRTaXplOm99PWk7YXdhaXQgZS5oYW5kbGVTZXRGb250KGEsW24mJk5hbWUuZ2V0KG4pLG9dLG51bGwscyx0LHIsbnVsbCk7cmV0dXJuIHIuZm9udH1fZ2V0VGV4dFdpZHRoKGUsdCl7cmV0dXJuIHQuY2hhcnNUb0dseXBocyhlKS5yZWR1Y2UoKChlLHQpPT5lK3Qud2lkdGgpLDApLzFlM31fY29tcHV0ZUZvbnRTaXplKGUsdCxpLGEscil7bGV0e2ZvbnRTaXplOm59PXRoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGEsbz0obnx8MTIpKnMsZz1NYXRoLnJvdW5kKGUvbyk7aWYoIW4pe2NvbnN0IHJvdW5kV2l0aFR3b0RpZ2l0cz1lPT5NYXRoLmZsb29yKDEwMCplKS8xMDA7aWYoLTE9PT1yKXtjb25zdCByPXRoaXMuX2dldFRleHRXaWR0aChpLGEpO249cm91bmRXaXRoVHdvRGlnaXRzKE1hdGgubWluKGUvcyxyPnQ/dC9yOjEvMCkpO2c9MX1lbHNle2NvbnN0IGM9aS5zcGxpdCgvXHJcbj98XG4vKSxDPVtdO2Zvcihjb25zdCBlIG9mIGMpe2NvbnN0IHQ9YS5lbmNvZGVTdHJpbmcoZSkuam9pbigiIiksaT1hLmNoYXJzVG9HbHlwaHModCkscz1hLmdldENoYXJQb3NpdGlvbnModCk7Qy5wdXNoKHtsaW5lOnQsZ2x5cGhzOmkscG9zaXRpb25zOnN9KX1jb25zdCBpc1Rvb0JpZz1pPT57bGV0IHM9MDtmb3IoY29uc3QgciBvZiBDKXtzKz10aGlzLl9zcGxpdExpbmUobnVsbCxhLGksdCxyKS5sZW5ndGgqaTtpZihzPmUpcmV0dXJuITB9cmV0dXJuITF9O2c9TWF0aC5tYXgoZyxyKTtmb3IoOzspe289ZS9nO249cm91bmRXaXRoVHdvRGlnaXRzKG8vcyk7aWYoIWlzVG9vQmlnKG4pKWJyZWFrO2crK319Y29uc3R7Zm9udE5hbWU6Yyxmb250Q29sb3I6Q309dGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YTt0aGlzLl9kZWZhdWx0QXBwZWFyYW5jZT1mdW5jdGlvbiBjcmVhdGVEZWZhdWx0QXBwZWFyYW5jZSh7Zm9udFNpemU6ZSxmb250TmFtZTp0LGZvbnRDb2xvcjppfSl7cmV0dXJuYC8ke2VzY2FwZVBERk5hbWUodCl9ICR7ZX0gVGYgJHtnZXRQZGZDb2xvcihpLCEwKX1gfSh7Zm9udFNpemU6bixmb250TmFtZTpjLGZvbnRDb2xvcjpDfSl9cmV0dXJuW3RoaXMuX2RlZmF1bHRBcHBlYXJhbmNlLG4sZS9nXX1fcmVuZGVyVGV4dChlLHQsaSxhLHMscixuLG8pe2xldCBnO2lmKDE9PT1zKXtnPShhLXRoaXMuX2dldFRleHRXaWR0aChlLHQpKmkpLzJ9ZWxzZSBpZigyPT09cyl7Zz1hLXRoaXMuX2dldFRleHRXaWR0aChlLHQpKmktbn1lbHNlIGc9bjtjb25zdCBjPW51bWJlclRvU3RyaW5nKGctci5zaGlmdCk7ci5zaGlmdD1nO3JldHVybmAke2N9ICR7bz1udW1iZXJUb1N0cmluZyhvKX0gVGQgKCR7ZXNjYXBlU3RyaW5nKGUpfSkgVGpgfV9nZXRTYXZlRmllbGRSZXNvdXJjZXMoZSl7Y29uc3R7bG9jYWxSZXNvdXJjZXM6dCxhcHBlYXJhbmNlUmVzb3VyY2VzOmksYWNyb0Zvcm1SZXNvdXJjZXM6YX09dGhpcy5fZmllbGRSZXNvdXJjZXMscz10aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhPy5mb250TmFtZTtpZighcylyZXR1cm4gdHx8RGljdC5lbXB0eTtmb3IoY29uc3QgZSBvZlt0LGldKWlmKGUgaW5zdGFuY2VvZiBEaWN0KXtjb25zdCB0PWUuZ2V0KCJGb250Iik7aWYodCBpbnN0YW5jZW9mIERpY3QmJnQuaGFzKHMpKXJldHVybiBlfWlmKGEgaW5zdGFuY2VvZiBEaWN0KXtjb25zdCBpPWEuZ2V0KCJGb250Iik7aWYoaSBpbnN0YW5jZW9mIERpY3QmJmkuaGFzKHMpKXtjb25zdCBhPW5ldyBEaWN0KGUpO2Euc2V0KHMsaS5nZXRSYXcocykpO2NvbnN0IHI9bmV3IERpY3QoZSk7ci5zZXQoIkZvbnQiLGEpO3JldHVybiBEaWN0Lm1lcmdlKHt4cmVmOmUsZGljdEFycmF5OltyLHRdLG1lcmdlU3ViRGljdHM6ITB9KX19cmV0dXJuIHR8fERpY3QuZW1wdHl9Z2V0RmllbGRPYmplY3QoKXtyZXR1cm4gbnVsbH19Y2xhc3MgVGV4dFdpZGdldEFubm90YXRpb24gZXh0ZW5kcyBXaWRnZXRBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuZGF0YS5oYXNPd25DYW52YXM9dGhpcy5kYXRhLnJlYWRPbmx5JiYhdGhpcy5kYXRhLm5vSFRNTDt0aGlzLl9oYXNUZXh0PSEwO2NvbnN0IHQ9ZS5kaWN0OyJzdHJpbmciIT10eXBlb2YgdGhpcy5kYXRhLmZpZWxkVmFsdWUmJih0aGlzLmRhdGEuZmllbGRWYWx1ZT0iIik7bGV0IGk9Z2V0SW5oZXJpdGFibGVQcm9wZXJ0eSh7ZGljdDp0LGtleToiUSJ9KTsoIU51bWJlci5pc0ludGVnZXIoaSl8fGk8MHx8aT4yKSYmKGk9bnVsbCk7dGhpcy5kYXRhLnRleHRBbGlnbm1lbnQ9aTtsZXQgYT1nZXRJbmhlcml0YWJsZVByb3BlcnR5KHtkaWN0OnQsa2V5OiJNYXhMZW4ifSk7KCFOdW1iZXIuaXNJbnRlZ2VyKGEpfHxhPDApJiYoYT0wKTt0aGlzLmRhdGEubWF4TGVuPWE7dGhpcy5kYXRhLm11bHRpTGluZT10aGlzLmhhc0ZpZWxkRmxhZyhhQSk7dGhpcy5kYXRhLmNvbWI9dGhpcy5oYXNGaWVsZEZsYWcoQ0EpJiYhdGhpcy5oYXNGaWVsZEZsYWcoYUEpJiYhdGhpcy5oYXNGaWVsZEZsYWcoc0EpJiYhdGhpcy5oYXNGaWVsZEZsYWcoZ0EpJiYwIT09dGhpcy5kYXRhLm1heExlbjt0aGlzLmRhdGEuZG9Ob3RTY3JvbGw9dGhpcy5oYXNGaWVsZEZsYWcoY0EpfWdldCBoYXNUZXh0Q29udGVudCgpe3JldHVybiEhdGhpcy5hcHBlYXJhbmNlJiYhdGhpcy5fbmVlZEFwcGVhcmFuY2VzfV9nZXRDb21iQXBwZWFyYW5jZShlLHQsaSxhLHMscixuLG8sZyxjLEMpe2NvbnN0IGg9cy90aGlzLmRhdGEubWF4TGVuLGw9dGhpcy5nZXRCb3JkZXJBbmRCYWNrZ3JvdW5kQXBwZWFyYW5jZXMoQyksUT1bXSxFPXQuZ2V0Q2hhclBvc2l0aW9ucyhpKTtmb3IoY29uc3RbZSx0XW9mIEUpUS5wdXNoKGAoJHtlc2NhcGVTdHJpbmcoaS5zdWJzdHJpbmcoZSx0KSl9KSBUamApO2NvbnN0IHU9US5qb2luKGAgJHtudW1iZXJUb1N0cmluZyhoKX0gMCBUZCBgKTtyZXR1cm5gL1R4IEJNQyBxICR7bH1CVCBgK2UrYCAxIDAgMCAxICR7bnVtYmVyVG9TdHJpbmcobil9ICR7bnVtYmVyVG9TdHJpbmcobytnKX0gVG0gJHt1fSBFVCBRIEVNQ2B9X2dldE11bHRpbGluZUFwcGVhcmFuY2UoZSx0LGksYSxzLHIsbixvLGcsYyxDLGgpe2NvbnN0IGw9W10sUT1zLTIqbyxFPXtzaGlmdDowfTtmb3IobGV0IGU9MCxyPXQubGVuZ3RoO2U8cjtlKyspe2NvbnN0IHI9dFtlXSxoPXRoaXMuX3NwbGl0TGluZShyLGksYSxRKTtmb3IobGV0IHQ9MCxyPWgubGVuZ3RoO3Q8cjt0Kyspe2NvbnN0IHI9aFt0XSxRPTA9PT1lJiYwPT09dD8tZy0oQy1jKTotQztsLnB1c2godGhpcy5fcmVuZGVyVGV4dChyLGksYSxzLG4sRSxvLFEpKX19Y29uc3QgdT10aGlzLmdldEJvcmRlckFuZEJhY2tncm91bmRBcHBlYXJhbmNlcyhoKSxkPWwuam9pbigiXG4iKTtyZXR1cm5gL1R4IEJNQyBxICR7dX1CVCBgK2UrYCAxIDAgMCAxIDAgJHtudW1iZXJUb1N0cmluZyhyKX0gVG0gJHtkfSBFVCBRIEVNQ2B9X3NwbGl0TGluZShlLHQsaSxhLHM9e30pe2U9cy5saW5lfHxlO2NvbnN0IHI9cy5nbHlwaHN8fHQuY2hhcnNUb0dseXBocyhlKTtpZihyLmxlbmd0aDw9MSlyZXR1cm5bZV07Y29uc3Qgbj1zLnBvc2l0aW9uc3x8dC5nZXRDaGFyUG9zaXRpb25zKGUpLG89aS8xZTMsZz1bXTtsZXQgYz0tMSxDPS0xLGg9LTEsbD0wLFE9MDtmb3IobGV0IHQ9MCxpPXIubGVuZ3RoO3Q8aTt0Kyspe2NvbnN0W2ksc109blt0XSxFPXJbdF0sdT1FLndpZHRoKm87aWYoIiAiPT09RS51bmljb2RlKWlmKFErdT5hKXtnLnB1c2goZS5zdWJzdHJpbmcobCxpKSk7bD1pO1E9dTtjPS0xO2g9LTF9ZWxzZXtRKz11O2M9aTtDPXM7aD10fWVsc2UgaWYoUSt1PmEpaWYoLTEhPT1jKXtnLnB1c2goZS5zdWJzdHJpbmcobCxDKSk7bD1DO3Q9aCsxO2M9LTE7UT0wfWVsc2V7Zy5wdXNoKGUuc3Vic3RyaW5nKGwsaSkpO2w9aTtRPXV9ZWxzZSBRKz11fWw8ZS5sZW5ndGgmJmcucHVzaChlLnN1YnN0cmluZyhsLGUubGVuZ3RoKSk7cmV0dXJuIGd9Z2V0RmllbGRPYmplY3QoKXtyZXR1cm57aWQ6dGhpcy5kYXRhLmlkLHZhbHVlOnRoaXMuZGF0YS5maWVsZFZhbHVlLGRlZmF1bHRWYWx1ZTp0aGlzLmRhdGEuZGVmYXVsdEZpZWxkVmFsdWV8fCIiLG11bHRpbGluZTp0aGlzLmRhdGEubXVsdGlMaW5lLHBhc3N3b3JkOnRoaXMuaGFzRmllbGRGbGFnKHNBKSxjaGFyTGltaXQ6dGhpcy5kYXRhLm1heExlbixjb21iOnRoaXMuZGF0YS5jb21iLGVkaXRhYmxlOiF0aGlzLmRhdGEucmVhZE9ubHksaGlkZGVuOnRoaXMuZGF0YS5oaWRkZW4sbmFtZTp0aGlzLmRhdGEuZmllbGROYW1lLHJlY3Q6dGhpcy5kYXRhLnJlY3QsYWN0aW9uczp0aGlzLmRhdGEuYWN0aW9ucyxwYWdlOnRoaXMuZGF0YS5wYWdlSW5kZXgsc3Ryb2tlQ29sb3I6dGhpcy5kYXRhLmJvcmRlckNvbG9yLGZpbGxDb2xvcjp0aGlzLmRhdGEuYmFja2dyb3VuZENvbG9yLHJvdGF0aW9uOnRoaXMucm90YXRpb24sdHlwZToidGV4dCJ9fX1jbGFzcyBCdXR0b25XaWRnZXRBbm5vdGF0aW9uIGV4dGVuZHMgV2lkZ2V0QW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTt0aGlzLmNoZWNrZWRBcHBlYXJhbmNlPW51bGw7dGhpcy51bmNoZWNrZWRBcHBlYXJhbmNlPW51bGw7dGhpcy5kYXRhLmNoZWNrQm94PSF0aGlzLmhhc0ZpZWxkRmxhZyhyQSkmJiF0aGlzLmhhc0ZpZWxkRmxhZyhuQSk7dGhpcy5kYXRhLnJhZGlvQnV0dG9uPXRoaXMuaGFzRmllbGRGbGFnKHJBKSYmIXRoaXMuaGFzRmllbGRGbGFnKG5BKTt0aGlzLmRhdGEucHVzaEJ1dHRvbj10aGlzLmhhc0ZpZWxkRmxhZyhuQSk7dGhpcy5kYXRhLmlzVG9vbHRpcE9ubHk9ITE7aWYodGhpcy5kYXRhLmNoZWNrQm94KXRoaXMuX3Byb2Nlc3NDaGVja0JveChlKTtlbHNlIGlmKHRoaXMuZGF0YS5yYWRpb0J1dHRvbil0aGlzLl9wcm9jZXNzUmFkaW9CdXR0b24oZSk7ZWxzZSBpZih0aGlzLmRhdGEucHVzaEJ1dHRvbil7dGhpcy5kYXRhLmhhc093bkNhbnZhcz0hMDt0aGlzLmRhdGEubm9IVE1MPSExO3RoaXMuX3Byb2Nlc3NQdXNoQnV0dG9uKGUpfWVsc2Ugd2FybigiSW52YWxpZCBmaWVsZCBmbGFncyBmb3IgYnV0dG9uIHdpZGdldCBhbm5vdGF0aW9uIil9YXN5bmMgZ2V0T3BlcmF0b3JMaXN0KGUsdCxhLHMscil7aWYodGhpcy5kYXRhLnB1c2hCdXR0b24pcmV0dXJuIHN1cGVyLmdldE9wZXJhdG9yTGlzdChlLHQsYSwhMSxyKTtsZXQgbj1udWxsLG89bnVsbDtpZihyKXtjb25zdCBlPXIuZ2V0KHRoaXMuZGF0YS5pZCk7bj1lP2UudmFsdWU6bnVsbDtvPWU/ZS5yb3RhdGlvbjpudWxsfWlmKG51bGw9PT1uJiZ0aGlzLmFwcGVhcmFuY2UpcmV0dXJuIHN1cGVyLmdldE9wZXJhdG9yTGlzdChlLHQsYSxzLHIpO251bGw9PW4mJihuPXRoaXMuZGF0YS5jaGVja0JveD90aGlzLmRhdGEuZmllbGRWYWx1ZT09PXRoaXMuZGF0YS5leHBvcnRWYWx1ZTp0aGlzLmRhdGEuZmllbGRWYWx1ZT09PXRoaXMuZGF0YS5idXR0b25WYWx1ZSk7Y29uc3QgZz1uP3RoaXMuY2hlY2tlZEFwcGVhcmFuY2U6dGhpcy51bmNoZWNrZWRBcHBlYXJhbmNlO2lmKGcpe2NvbnN0IG49dGhpcy5hcHBlYXJhbmNlLGM9Zy5kaWN0LmdldEFycmF5KCJNYXRyaXgiKXx8aTtvJiZnLmRpY3Quc2V0KCJNYXRyaXgiLHRoaXMuZ2V0Um90YXRpb25NYXRyaXgocikpO3RoaXMuYXBwZWFyYW5jZT1nO2NvbnN0IEM9c3VwZXIuZ2V0T3BlcmF0b3JMaXN0KGUsdCxhLHMscik7dGhpcy5hcHBlYXJhbmNlPW47Zy5kaWN0LnNldCgiTWF0cml4IixjKTtyZXR1cm4gQ31yZXR1cm57b3BMaXN0Om5ldyBPcGVyYXRvckxpc3Qsc2VwYXJhdGVGb3JtOiExLHNlcGFyYXRlQ2FudmFzOiExfX1hc3luYyBzYXZlKGUsdCxpKXtyZXR1cm4gdGhpcy5kYXRhLmNoZWNrQm94P3RoaXMuX3NhdmVDaGVja2JveChlLHQsaSk6dGhpcy5kYXRhLnJhZGlvQnV0dG9uP3RoaXMuX3NhdmVSYWRpb0J1dHRvbihlLHQsaSk6bnVsbH1hc3luYyBfc2F2ZUNoZWNrYm94KGUsdCxpKXtpZighaSlyZXR1cm4gbnVsbDtjb25zdCBhPWkuZ2V0KHRoaXMuZGF0YS5pZCk7bGV0IHM9YT8ucm90YXRpb24scj1hPy52YWx1ZTtpZih2b2lkIDA9PT1zKXtpZih2b2lkIDA9PT1yKXJldHVybiBudWxsO2lmKHRoaXMuZGF0YS5maWVsZFZhbHVlPT09dGhpcy5kYXRhLmV4cG9ydFZhbHVlPT09cilyZXR1cm4gbnVsbH1jb25zdCBuPWUueHJlZi5mZXRjaElmUmVmKHRoaXMucmVmKTtpZighKG4gaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm4gbnVsbDt2b2lkIDA9PT1zJiYocz10aGlzLnJvdGF0aW9uKTt2b2lkIDA9PT1yJiYocj10aGlzLmRhdGEuZmllbGRWYWx1ZT09PXRoaXMuZGF0YS5leHBvcnRWYWx1ZSk7Y29uc3Qgbz17cGF0aDp0aGlzLmRhdGEuZmllbGROYW1lLHZhbHVlOnI/dGhpcy5kYXRhLmV4cG9ydFZhbHVlOiIifSxnPU5hbWUuZ2V0KHI/dGhpcy5kYXRhLmV4cG9ydFZhbHVlOiJPZmYiKTtuLnNldCgiViIsZyk7bi5zZXQoIkFTIixnKTtuLnNldCgiTSIsYEQ6JHtnZXRNb2RpZmljYXRpb25EYXRlKCl9YCk7Y29uc3QgYz10aGlzLl9nZXRNS0RpY3Qocyk7YyYmbi5zZXQoIk1LIixjKTtjb25zdCBDPVtdO2F3YWl0IHdyaXRlT2JqZWN0KHRoaXMucmVmLG4sQyxlLnhyZWYpO3JldHVyblt7cmVmOnRoaXMucmVmLGRhdGE6Qy5qb2luKCIiKSx4ZmE6b31dfWFzeW5jIF9zYXZlUmFkaW9CdXR0b24oZSx0LGkpe2lmKCFpKXJldHVybiBudWxsO2NvbnN0IGE9aS5nZXQodGhpcy5kYXRhLmlkKTtsZXQgcz1hPy5yb3RhdGlvbixyPWE/LnZhbHVlO2lmKHZvaWQgMD09PXMpe2lmKHZvaWQgMD09PXIpcmV0dXJuIG51bGw7aWYodGhpcy5kYXRhLmZpZWxkVmFsdWU9PT10aGlzLmRhdGEuYnV0dG9uVmFsdWU9PT1yKXJldHVybiBudWxsfWNvbnN0IG49ZS54cmVmLmZldGNoSWZSZWYodGhpcy5yZWYpO2lmKCEobiBpbnN0YW5jZW9mIERpY3QpKXJldHVybiBudWxsO3ZvaWQgMD09PXImJihyPXRoaXMuZGF0YS5maWVsZFZhbHVlPT09dGhpcy5kYXRhLmJ1dHRvblZhbHVlKTt2b2lkIDA9PT1zJiYocz10aGlzLnJvdGF0aW9uKTtjb25zdCBvPXtwYXRoOnRoaXMuZGF0YS5maWVsZE5hbWUsdmFsdWU6cj90aGlzLmRhdGEuYnV0dG9uVmFsdWU6IiJ9LGc9TmFtZS5nZXQocj90aGlzLmRhdGEuYnV0dG9uVmFsdWU6Ik9mZiIpLGM9W107bGV0IEM9bnVsbDtpZihyKWlmKHRoaXMucGFyZW50IGluc3RhbmNlb2YgUmVmKXtjb25zdCB0PWUueHJlZi5mZXRjaCh0aGlzLnBhcmVudCk7dC5zZXQoIlYiLGcpO2F3YWl0IHdyaXRlT2JqZWN0KHRoaXMucGFyZW50LHQsYyxlLnhyZWYpO0M9Yy5qb2luKCIiKTtjLmxlbmd0aD0wfWVsc2UgdGhpcy5wYXJlbnQgaW5zdGFuY2VvZiBEaWN0JiZ0aGlzLnBhcmVudC5zZXQoIlYiLGcpO24uc2V0KCJBUyIsZyk7bi5zZXQoIk0iLGBEOiR7Z2V0TW9kaWZpY2F0aW9uRGF0ZSgpfWApO2NvbnN0IGg9dGhpcy5fZ2V0TUtEaWN0KHMpO2gmJm4uc2V0KCJNSyIsaCk7YXdhaXQgd3JpdGVPYmplY3QodGhpcy5yZWYsbixjLGUueHJlZik7Y29uc3QgbD1be3JlZjp0aGlzLnJlZixkYXRhOmMuam9pbigiIikseGZhOm99XTtDJiZsLnB1c2goe3JlZjp0aGlzLnBhcmVudCxkYXRhOkMseGZhOm51bGx9KTtyZXR1cm4gbH1fZ2V0RGVmYXVsdENoZWNrZWRBcHBlYXJhbmNlKGUsdCl7Y29uc3QgaT10aGlzLmRhdGEucmVjdFsyXS10aGlzLmRhdGEucmVjdFswXSxhPXRoaXMuZGF0YS5yZWN0WzNdLXRoaXMuZGF0YS5yZWN0WzFdLHM9WzAsMCxpLGFdLHI9LjgqTWF0aC5taW4oaSxhKTtsZXQgbixvO2lmKCJjaGVjayI9PT10KXtuPXt3aWR0aDouNzU1KnIsaGVpZ2h0Oi43MDUqcn07bz0iMyJ9ZWxzZSBpZigiZGlzYyI9PT10KXtuPXt3aWR0aDouNzkxKnIsaGVpZ2h0Oi43MDUqcn07bz0ibCJ9ZWxzZSB1bnJlYWNoYWJsZShgX2dldERlZmF1bHRDaGVja2VkQXBwZWFyYW5jZSAtIHVuc3VwcG9ydGVkIHR5cGU6ICR7dH1gKTtjb25zdCBnPWBxIEJUIC9QZGZKc1phRGIgJHtyfSBUZiAwIGcgJHtudW1iZXJUb1N0cmluZygoaS1uLndpZHRoKS8yKX0gJHtudW1iZXJUb1N0cmluZygoYS1uLmhlaWdodCkvMil9IFRkICgke299KSBUaiBFVCBRYCxjPW5ldyBEaWN0KGUueHJlZik7Yy5zZXQoIkZvcm1UeXBlIiwxKTtjLnNldCgiU3VidHlwZSIsTmFtZS5nZXQoIkZvcm0iKSk7Yy5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJYT2JqZWN0IikpO2Muc2V0KCJCQm94IixzKTtjLnNldCgiTWF0cml4IixbMSwwLDAsMSwwLDBdKTtjLnNldCgiTGVuZ3RoIixnLmxlbmd0aCk7Y29uc3QgQz1uZXcgRGljdChlLnhyZWYpLGg9bmV3IERpY3QoZS54cmVmKTtoLnNldCgiUGRmSnNaYURiIix0aGlzLmZhbGxiYWNrRm9udERpY3QpO0Muc2V0KCJGb250IixoKTtjLnNldCgiUmVzb3VyY2VzIixDKTt0aGlzLmNoZWNrZWRBcHBlYXJhbmNlPW5ldyBTdHJpbmdTdHJlYW0oZyk7dGhpcy5jaGVja2VkQXBwZWFyYW5jZS5kaWN0PWM7dGhpcy5fc3RyZWFtcy5wdXNoKHRoaXMuY2hlY2tlZEFwcGVhcmFuY2UpfV9wcm9jZXNzQ2hlY2tCb3goZSl7Y29uc3QgdD1lLmRpY3QuZ2V0KCJBUCIpO2lmKCEodCBpbnN0YW5jZW9mIERpY3QpKXJldHVybjtjb25zdCBpPXQuZ2V0KCJOIik7aWYoIShpIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuO2NvbnN0IGE9dGhpcy5fZGVjb2RlRm9ybVZhbHVlKGUuZGljdC5nZXQoIkFTIikpOyJzdHJpbmciPT10eXBlb2YgYSYmKHRoaXMuZGF0YS5maWVsZFZhbHVlPWEpO2NvbnN0IHM9bnVsbCE9PXRoaXMuZGF0YS5maWVsZFZhbHVlJiYiT2ZmIiE9PXRoaXMuZGF0YS5maWVsZFZhbHVlP3RoaXMuZGF0YS5maWVsZFZhbHVlOiJZZXMiLHI9aS5nZXRLZXlzKCk7aWYoMD09PXIubGVuZ3RoKXIucHVzaCgiT2ZmIixzKTtlbHNlIGlmKDE9PT1yLmxlbmd0aCkiT2ZmIj09PXJbMF0/ci5wdXNoKHMpOnIudW5zaGlmdCgiT2ZmIik7ZWxzZSBpZihyLmluY2x1ZGVzKHMpKXtyLmxlbmd0aD0wO3IucHVzaCgiT2ZmIixzKX1lbHNle2NvbnN0IGU9ci5maW5kKChlPT4iT2ZmIiE9PWUpKTtyLmxlbmd0aD0wO3IucHVzaCgiT2ZmIixlKX1yLmluY2x1ZGVzKHRoaXMuZGF0YS5maWVsZFZhbHVlKXx8KHRoaXMuZGF0YS5maWVsZFZhbHVlPSJPZmYiKTt0aGlzLmRhdGEuZXhwb3J0VmFsdWU9clsxXTtjb25zdCBuPWkuZ2V0KHRoaXMuZGF0YS5leHBvcnRWYWx1ZSk7dGhpcy5jaGVja2VkQXBwZWFyYW5jZT1uIGluc3RhbmNlb2YgQmFzZVN0cmVhbT9uOm51bGw7Y29uc3Qgbz1pLmdldCgiT2ZmIik7dGhpcy51bmNoZWNrZWRBcHBlYXJhbmNlPW8gaW5zdGFuY2VvZiBCYXNlU3RyZWFtP286bnVsbDt0aGlzLmNoZWNrZWRBcHBlYXJhbmNlP3RoaXMuX3N0cmVhbXMucHVzaCh0aGlzLmNoZWNrZWRBcHBlYXJhbmNlKTp0aGlzLl9nZXREZWZhdWx0Q2hlY2tlZEFwcGVhcmFuY2UoZSwiY2hlY2siKTt0aGlzLnVuY2hlY2tlZEFwcGVhcmFuY2UmJnRoaXMuX3N0cmVhbXMucHVzaCh0aGlzLnVuY2hlY2tlZEFwcGVhcmFuY2UpO3RoaXMuX2ZhbGxiYWNrRm9udERpY3Q9dGhpcy5mYWxsYmFja0ZvbnREaWN0O251bGw9PT10aGlzLmRhdGEuZGVmYXVsdEZpZWxkVmFsdWUmJih0aGlzLmRhdGEuZGVmYXVsdEZpZWxkVmFsdWU9Ik9mZiIpfV9wcm9jZXNzUmFkaW9CdXR0b24oZSl7dGhpcy5kYXRhLmJ1dHRvblZhbHVlPW51bGw7Y29uc3QgdD1lLmRpY3QuZ2V0KCJQYXJlbnQiKTtpZih0IGluc3RhbmNlb2YgRGljdCl7dGhpcy5wYXJlbnQ9ZS5kaWN0LmdldFJhdygiUGFyZW50Iik7Y29uc3QgaT10LmdldCgiViIpO2kgaW5zdGFuY2VvZiBOYW1lJiYodGhpcy5kYXRhLmZpZWxkVmFsdWU9dGhpcy5fZGVjb2RlRm9ybVZhbHVlKGkpKX1jb25zdCBpPWUuZGljdC5nZXQoIkFQIik7aWYoIShpIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuO2NvbnN0IGE9aS5nZXQoIk4iKTtpZighKGEgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm47Zm9yKGNvbnN0IGUgb2YgYS5nZXRLZXlzKCkpaWYoIk9mZiIhPT1lKXt0aGlzLmRhdGEuYnV0dG9uVmFsdWU9dGhpcy5fZGVjb2RlRm9ybVZhbHVlKGUpO2JyZWFrfWNvbnN0IHM9YS5nZXQodGhpcy5kYXRhLmJ1dHRvblZhbHVlKTt0aGlzLmNoZWNrZWRBcHBlYXJhbmNlPXMgaW5zdGFuY2VvZiBCYXNlU3RyZWFtP3M6bnVsbDtjb25zdCByPWEuZ2V0KCJPZmYiKTt0aGlzLnVuY2hlY2tlZEFwcGVhcmFuY2U9ciBpbnN0YW5jZW9mIEJhc2VTdHJlYW0/cjpudWxsO3RoaXMuY2hlY2tlZEFwcGVhcmFuY2U/dGhpcy5fc3RyZWFtcy5wdXNoKHRoaXMuY2hlY2tlZEFwcGVhcmFuY2UpOnRoaXMuX2dldERlZmF1bHRDaGVja2VkQXBwZWFyYW5jZShlLCJkaXNjIik7dGhpcy51bmNoZWNrZWRBcHBlYXJhbmNlJiZ0aGlzLl9zdHJlYW1zLnB1c2godGhpcy51bmNoZWNrZWRBcHBlYXJhbmNlKTt0aGlzLl9mYWxsYmFja0ZvbnREaWN0PXRoaXMuZmFsbGJhY2tGb250RGljdDtudWxsPT09dGhpcy5kYXRhLmRlZmF1bHRGaWVsZFZhbHVlJiYodGhpcy5kYXRhLmRlZmF1bHRGaWVsZFZhbHVlPSJPZmYiKX1fcHJvY2Vzc1B1c2hCdXR0b24oZSl7Y29uc3R7ZGljdDp0LGFubm90YXRpb25HbG9iYWxzOml9PWU7aWYodC5oYXMoIkEiKXx8dC5oYXMoIkFBIil8fHRoaXMuZGF0YS5hbHRlcm5hdGl2ZVRleHQpe3RoaXMuZGF0YS5pc1Rvb2x0aXBPbmx5PSF0LmhhcygiQSIpJiYhdC5oYXMoIkFBIik7Q2F0YWxvZy5wYXJzZURlc3REaWN0aW9uYXJ5KHtkZXN0RGljdDp0LHJlc3VsdE9iajp0aGlzLmRhdGEsZG9jQmFzZVVybDppLmJhc2VVcmwsZG9jQXR0YWNobWVudHM6aS5hdHRhY2htZW50c30pfWVsc2Ugd2FybigiUHVzaCBidXR0b25zIHdpdGhvdXQgYWN0aW9uIGRpY3Rpb25hcmllcyBhcmUgbm90IHN1cHBvcnRlZCIpfWdldEZpZWxkT2JqZWN0KCl7bGV0IGUsdD0iYnV0dG9uIjtpZih0aGlzLmRhdGEuY2hlY2tCb3gpe3Q9ImNoZWNrYm94IjtlPXRoaXMuZGF0YS5leHBvcnRWYWx1ZX1lbHNlIGlmKHRoaXMuZGF0YS5yYWRpb0J1dHRvbil7dD0icmFkaW9idXR0b24iO2U9dGhpcy5kYXRhLmJ1dHRvblZhbHVlfXJldHVybntpZDp0aGlzLmRhdGEuaWQsdmFsdWU6dGhpcy5kYXRhLmZpZWxkVmFsdWV8fCJPZmYiLGRlZmF1bHRWYWx1ZTp0aGlzLmRhdGEuZGVmYXVsdEZpZWxkVmFsdWUsZXhwb3J0VmFsdWVzOmUsZWRpdGFibGU6IXRoaXMuZGF0YS5yZWFkT25seSxuYW1lOnRoaXMuZGF0YS5maWVsZE5hbWUscmVjdDp0aGlzLmRhdGEucmVjdCxoaWRkZW46dGhpcy5kYXRhLmhpZGRlbixhY3Rpb25zOnRoaXMuZGF0YS5hY3Rpb25zLHBhZ2U6dGhpcy5kYXRhLnBhZ2VJbmRleCxzdHJva2VDb2xvcjp0aGlzLmRhdGEuYm9yZGVyQ29sb3IsZmlsbENvbG9yOnRoaXMuZGF0YS5iYWNrZ3JvdW5kQ29sb3Iscm90YXRpb246dGhpcy5yb3RhdGlvbix0eXBlOnR9fWdldCBmYWxsYmFja0ZvbnREaWN0KCl7Y29uc3QgZT1uZXcgRGljdDtlLnNldCgiQmFzZUZvbnQiLE5hbWUuZ2V0KCJaYXBmRGluZ2JhdHMiKSk7ZS5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJGYWxsYmFja1R5cGUiKSk7ZS5zZXQoIlN1YnR5cGUiLE5hbWUuZ2V0KCJGYWxsYmFja1R5cGUiKSk7ZS5zZXQoIkVuY29kaW5nIixOYW1lLmdldCgiWmFwZkRpbmdiYXRzRW5jb2RpbmciKSk7cmV0dXJuIHNoYWRvdyh0aGlzLCJmYWxsYmFja0ZvbnREaWN0IixlKX19Y2xhc3MgQ2hvaWNlV2lkZ2V0QW5ub3RhdGlvbiBleHRlbmRzIFdpZGdldEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0LHhyZWY6aX09ZTt0aGlzLmluZGljZXM9dC5nZXRBcnJheSgiSSIpO3RoaXMuaGFzSW5kaWNlcz1BcnJheS5pc0FycmF5KHRoaXMuaW5kaWNlcykmJnRoaXMuaW5kaWNlcy5sZW5ndGg+MDt0aGlzLmRhdGEub3B0aW9ucz1bXTtjb25zdCBhPWdldEluaGVyaXRhYmxlUHJvcGVydHkoe2RpY3Q6dCxrZXk6Ik9wdCJ9KTtpZihBcnJheS5pc0FycmF5KGEpKWZvcihsZXQgZT0wLHQ9YS5sZW5ndGg7ZTx0O2UrKyl7Y29uc3QgdD1pLmZldGNoSWZSZWYoYVtlXSkscz1BcnJheS5pc0FycmF5KHQpO3RoaXMuZGF0YS5vcHRpb25zW2VdPXtleHBvcnRWYWx1ZTp0aGlzLl9kZWNvZGVGb3JtVmFsdWUocz9pLmZldGNoSWZSZWYodFswXSk6dCksZGlzcGxheVZhbHVlOnRoaXMuX2RlY29kZUZvcm1WYWx1ZShzP2kuZmV0Y2hJZlJlZih0WzFdKTp0KX19aWYodGhpcy5oYXNJbmRpY2VzKXt0aGlzLmRhdGEuZmllbGRWYWx1ZT1bXTtjb25zdCBlPXRoaXMuZGF0YS5vcHRpb25zLmxlbmd0aDtmb3IoY29uc3QgdCBvZiB0aGlzLmluZGljZXMpTnVtYmVyLmlzSW50ZWdlcih0KSYmdD49MCYmdDxlJiZ0aGlzLmRhdGEuZmllbGRWYWx1ZS5wdXNoKHRoaXMuZGF0YS5vcHRpb25zW3RdLmV4cG9ydFZhbHVlKX1lbHNlInN0cmluZyI9PXR5cGVvZiB0aGlzLmRhdGEuZmllbGRWYWx1ZT90aGlzLmRhdGEuZmllbGRWYWx1ZT1bdGhpcy5kYXRhLmZpZWxkVmFsdWVdOnRoaXMuZGF0YS5maWVsZFZhbHVlfHwodGhpcy5kYXRhLmZpZWxkVmFsdWU9W10pO3RoaXMuZGF0YS5jb21ibz10aGlzLmhhc0ZpZWxkRmxhZyhvQSk7dGhpcy5kYXRhLm11bHRpU2VsZWN0PXRoaXMuaGFzRmllbGRGbGFnKElBKTt0aGlzLl9oYXNUZXh0PSEwfWdldEZpZWxkT2JqZWN0KCl7Y29uc3QgZT10aGlzLmRhdGEuY29tYm8/ImNvbWJvYm94IjoibGlzdGJveCIsdD10aGlzLmRhdGEuZmllbGRWYWx1ZS5sZW5ndGg+MD90aGlzLmRhdGEuZmllbGRWYWx1ZVswXTpudWxsO3JldHVybntpZDp0aGlzLmRhdGEuaWQsdmFsdWU6dCxkZWZhdWx0VmFsdWU6dGhpcy5kYXRhLmRlZmF1bHRGaWVsZFZhbHVlLGVkaXRhYmxlOiF0aGlzLmRhdGEucmVhZE9ubHksbmFtZTp0aGlzLmRhdGEuZmllbGROYW1lLHJlY3Q6dGhpcy5kYXRhLnJlY3QsbnVtSXRlbXM6dGhpcy5kYXRhLmZpZWxkVmFsdWUubGVuZ3RoLG11bHRpcGxlU2VsZWN0aW9uOnRoaXMuZGF0YS5tdWx0aVNlbGVjdCxoaWRkZW46dGhpcy5kYXRhLmhpZGRlbixhY3Rpb25zOnRoaXMuZGF0YS5hY3Rpb25zLGl0ZW1zOnRoaXMuZGF0YS5vcHRpb25zLHBhZ2U6dGhpcy5kYXRhLnBhZ2VJbmRleCxzdHJva2VDb2xvcjp0aGlzLmRhdGEuYm9yZGVyQ29sb3IsZmlsbENvbG9yOnRoaXMuZGF0YS5iYWNrZ3JvdW5kQ29sb3Iscm90YXRpb246dGhpcy5yb3RhdGlvbix0eXBlOmV9fWFtZW5kU2F2ZWREaWN0KGUsdCl7aWYoIXRoaXMuaGFzSW5kaWNlcylyZXR1cm47bGV0IGk9ZT8uZ2V0KHRoaXMuZGF0YS5pZCk/LnZhbHVlO0FycmF5LmlzQXJyYXkoaSl8fChpPVtpXSk7Y29uc3QgYT1bXSx7b3B0aW9uczpzfT10aGlzLmRhdGE7Zm9yKGxldCBlPTAsdD0wLHI9cy5sZW5ndGg7ZTxyO2UrKylpZihzW2VdLmV4cG9ydFZhbHVlPT09aVt0XSl7YS5wdXNoKGUpO3QrPTF9dC5zZXQoIkkiLGEpfWFzeW5jIF9nZXRBcHBlYXJhbmNlKGUsdCxpLGEpe2lmKHRoaXMuZGF0YS5jb21ibylyZXR1cm4gc3VwZXIuX2dldEFwcGVhcmFuY2UoZSx0LGksYSk7bGV0IHIsbjtjb25zdCBvPWE/LmdldCh0aGlzLmRhdGEuaWQpO2lmKG8pe249by5yb3RhdGlvbjtyPW8udmFsdWV9aWYodm9pZCAwPT09biYmdm9pZCAwPT09ciYmIXRoaXMuX25lZWRBcHBlYXJhbmNlcylyZXR1cm4gbnVsbDt2b2lkIDA9PT1yP3I9dGhpcy5kYXRhLmZpZWxkVmFsdWU6QXJyYXkuaXNBcnJheShyKXx8KHI9W3JdKTtsZXQgZz10aGlzLmRhdGEucmVjdFszXS10aGlzLmRhdGEucmVjdFsxXSxjPXRoaXMuZGF0YS5yZWN0WzJdLXRoaXMuZGF0YS5yZWN0WzBdOzkwIT09biYmMjcwIT09bnx8KFtjLGddPVtnLGNdKTtjb25zdCBDPXRoaXMuZGF0YS5vcHRpb25zLmxlbmd0aCxoPVtdO2ZvcihsZXQgZT0wO2U8QztlKyspe2NvbnN0e2V4cG9ydFZhbHVlOnR9PXRoaXMuZGF0YS5vcHRpb25zW2VdO3IuaW5jbHVkZXModCkmJmgucHVzaChlKX10aGlzLl9kZWZhdWx0QXBwZWFyYW5jZXx8KHRoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGE9cGFyc2VEZWZhdWx0QXBwZWFyYW5jZSh0aGlzLl9kZWZhdWx0QXBwZWFyYW5jZT0iL0hlbHZldGljYSAwIFRmIDAgZyIpKTtjb25zdCBsPWF3YWl0IFdpZGdldEFubm90YXRpb24uX2dldEZvbnREYXRhKGUsdCx0aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhLHRoaXMuX2ZpZWxkUmVzb3VyY2VzLm1lcmdlZFJlc291cmNlcyk7bGV0IFEse2ZvbnRTaXplOkV9PXRoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGE7aWYoRSlRPXRoaXMuX2RlZmF1bHRBcHBlYXJhbmNlO2Vsc2V7Y29uc3QgZT0oZy0xKS9DO2xldCB0LGk9LTE7Zm9yKGNvbnN0e2Rpc3BsYXlWYWx1ZTplfW9mIHRoaXMuZGF0YS5vcHRpb25zKXtjb25zdCBhPXRoaXMuX2dldFRleHRXaWR0aChlLGwpO2lmKGE+aSl7aT1hO3Q9ZX19W1EsRV09dGhpcy5fY29tcHV0ZUZvbnRTaXplKGUsYy00LHQsbCwtMSl9Y29uc3QgdT1FKnMsZD0odS1FKS8yLGY9TWF0aC5mbG9vcihnL3UpO2xldCBwPTA7aWYoaC5sZW5ndGg+MCl7Y29uc3QgZT1NYXRoLm1pbiguLi5oKSx0PU1hdGgubWF4KC4uLmgpO3A9TWF0aC5tYXgoMCx0LWYrMSk7cD5lJiYocD1lKX1jb25zdCBtPU1hdGgubWluKHArZisxLEMpLHk9WyIvVHggQk1DIHEiLGAxIDEgJHtjfSAke2d9IHJlIFcgbmBdO2lmKGgubGVuZ3RoKXt5LnB1c2goIjAuNjAwMDA2IDAuNzU2ODY2IDAuODU0OTA0IHJnIik7Zm9yKGNvbnN0IGUgb2YgaClwPD1lJiZlPG0mJnkucHVzaChgMSAke2ctKGUtcCsxKSp1fSAke2N9ICR7dX0gcmUgZmApfXkucHVzaCgiQlQiLFEsYDEgMCAwIDEgMCAke2d9IFRtYCk7Y29uc3Qgdz17c2hpZnQ6MH07Zm9yKGxldCBlPXA7ZTxtO2UrKyl7Y29uc3R7ZGlzcGxheVZhbHVlOnR9PXRoaXMuZGF0YS5vcHRpb25zW2VdLGk9ZT09PXA/ZDowO3kucHVzaCh0aGlzLl9yZW5kZXJUZXh0KHQsbCxFLGMsMCx3LDIsLXUraSkpfXkucHVzaCgiRVQgUSBFTUMiKTtyZXR1cm4geS5qb2luKCJcbiIpfX1jbGFzcyBTaWduYXR1cmVXaWRnZXRBbm5vdGF0aW9uIGV4dGVuZHMgV2lkZ2V0QW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTt0aGlzLmRhdGEuZmllbGRWYWx1ZT1udWxsO3RoaXMuZGF0YS5oYXNPd25DYW52YXM9dGhpcy5kYXRhLm5vUm90YXRlO3RoaXMuZGF0YS5ub0hUTUw9IXRoaXMuZGF0YS5oYXNPd25DYW52YXN9Z2V0RmllbGRPYmplY3QoKXtyZXR1cm57aWQ6dGhpcy5kYXRhLmlkLHZhbHVlOm51bGwscGFnZTp0aGlzLmRhdGEucGFnZUluZGV4LHR5cGU6InNpZ25hdHVyZSJ9fX1jbGFzcyBUZXh0QW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5kYXRhLm5vUm90YXRlPSEwO3RoaXMuZGF0YS5oYXNPd25DYW52YXM9dGhpcy5kYXRhLm5vUm90YXRlO3RoaXMuZGF0YS5ub0hUTUw9ITE7Y29uc3R7ZGljdDp0fT1lO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1TO2lmKHRoaXMuZGF0YS5oYXNBcHBlYXJhbmNlKXRoaXMuZGF0YS5uYW1lPSJOb0ljb24iO2Vsc2V7dGhpcy5kYXRhLnJlY3RbMV09dGhpcy5kYXRhLnJlY3RbM10tMjI7dGhpcy5kYXRhLnJlY3RbMl09dGhpcy5kYXRhLnJlY3RbMF0rMjI7dGhpcy5kYXRhLm5hbWU9dC5oYXMoIk5hbWUiKT90LmdldCgiTmFtZSIpLm5hbWU6Ik5vdGUifWlmKHQuaGFzKCJTdGF0ZSIpKXt0aGlzLmRhdGEuc3RhdGU9dC5nZXQoIlN0YXRlIil8fG51bGw7dGhpcy5kYXRhLnN0YXRlTW9kZWw9dC5nZXQoIlN0YXRlTW9kZWwiKXx8bnVsbH1lbHNle3RoaXMuZGF0YS5zdGF0ZT1udWxsO3RoaXMuZGF0YS5zdGF0ZU1vZGVsPW51bGx9fX1jbGFzcyBMaW5rQW5ub3RhdGlvbiBleHRlbmRzIEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0LGFubm90YXRpb25HbG9iYWxzOml9PWU7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPWs7dGhpcy5kYXRhLm5vSFRNTD0hMTtjb25zdCBhPWdldFF1YWRQb2ludHModCx0aGlzLnJlY3RhbmdsZSk7YSYmKHRoaXMuZGF0YS5xdWFkUG9pbnRzPWEpO3RoaXMuZGF0YS5ib3JkZXJDb2xvcnx8PXRoaXMuZGF0YS5jb2xvcjtDYXRhbG9nLnBhcnNlRGVzdERpY3Rpb25hcnkoe2Rlc3REaWN0OnQscmVzdWx0T2JqOnRoaXMuZGF0YSxkb2NCYXNlVXJsOmkuYmFzZVVybCxkb2NBdHRhY2htZW50czppLmF0dGFjaG1lbnRzfSl9fWNsYXNzIFBvcHVwQW5ub3RhdGlvbiBleHRlbmRzIEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0fT1lO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1xO3RoaXMuZGF0YS5ub0hUTUw9ITE7dGhpcy5kYXRhLnJlY3RbMF0hPT10aGlzLmRhdGEucmVjdFsyXSYmdGhpcy5kYXRhLnJlY3RbMV0hPT10aGlzLmRhdGEucmVjdFszXXx8KHRoaXMuZGF0YS5yZWN0PW51bGwpO2xldCBpPXQuZ2V0KCJQYXJlbnQiKTtpZighaSl7d2FybigiUG9wdXAgYW5ub3RhdGlvbiBoYXMgYSBtaXNzaW5nIG9yIGludmFsaWQgcGFyZW50IGFubm90YXRpb24uIik7cmV0dXJufWNvbnN0IGE9aS5nZXRBcnJheSgiUmVjdCIpO3RoaXMuZGF0YS5wYXJlbnRSZWN0PUFycmF5LmlzQXJyYXkoYSkmJjQ9PT1hLmxlbmd0aD9VdGlsLm5vcm1hbGl6ZVJlY3QoYSk6bnVsbDtpc05hbWUoaS5nZXQoIlJUIiksaikmJihpPWkuZ2V0KCJJUlQiKSk7aWYoaS5oYXMoIk0iKSl7dGhpcy5zZXRNb2RpZmljYXRpb25EYXRlKGkuZ2V0KCJNIikpO3RoaXMuZGF0YS5tb2RpZmljYXRpb25EYXRlPXRoaXMubW9kaWZpY2F0aW9uRGF0ZX1lbHNlIHRoaXMuZGF0YS5tb2RpZmljYXRpb25EYXRlPW51bGw7aWYoaS5oYXMoIkMiKSl7dGhpcy5zZXRDb2xvcihpLmdldEFycmF5KCJDIikpO3RoaXMuZGF0YS5jb2xvcj10aGlzLmNvbG9yfWVsc2UgdGhpcy5kYXRhLmNvbG9yPW51bGw7aWYoIXRoaXMudmlld2FibGUpe2NvbnN0IGU9aS5nZXQoIkYiKTt0aGlzLl9pc1ZpZXdhYmxlKGUpJiZ0aGlzLnNldEZsYWdzKGUpfXRoaXMuc2V0VGl0bGUoaS5nZXQoIlQiKSk7dGhpcy5kYXRhLnRpdGxlT2JqPXRoaXMuX3RpdGxlO3RoaXMuc2V0Q29udGVudHMoaS5nZXQoIkNvbnRlbnRzIikpO3RoaXMuZGF0YS5jb250ZW50c09iaj10aGlzLl9jb250ZW50cztpLmhhcygiUkMiKSYmKHRoaXMuZGF0YS5yaWNoVGV4dD1YRkFGYWN0b3J5LmdldFJpY2hUZXh0QXNIdG1sKGkuZ2V0KCJSQyIpKSk7dGhpcy5kYXRhLm9wZW49ISF0LmdldCgiT3BlbiIpfX1jbGFzcyBGcmVlVGV4dEFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuZGF0YS5oYXNPd25DYW52YXM9IXRoaXMuZGF0YS5ub0hUTUw7dGhpcy5kYXRhLm5vSFRNTD0hMTtjb25zdHtldmFsdWF0b3JPcHRpb25zOnQseHJlZjppfT1lO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1OO3RoaXMuc2V0RGVmYXVsdEFwcGVhcmFuY2UoZSk7dGhpcy5faGFzQXBwZWFyYW5jZT0hIXRoaXMuYXBwZWFyYW5jZTtpZih0aGlzLl9oYXNBcHBlYXJhbmNlKXtjb25zdHtmb250Q29sb3I6ZSxmb250U2l6ZTphfT1mdW5jdGlvbiBwYXJzZUFwcGVhcmFuY2VTdHJlYW0oZSx0LGkpe3JldHVybiBuZXcgQXBwZWFyYW5jZVN0cmVhbUV2YWx1YXRvcihlLHQsaSkucGFyc2UoKX0odGhpcy5hcHBlYXJhbmNlLHQsaSk7dGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YS5mb250Q29sb3I9ZTt0aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhLmZvbnRTaXplPWF8fDEwfWVsc2V7dGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YS5mb250U2l6ZXx8PTEwO2NvbnN0e2ZvbnRDb2xvcjp0LGZvbnRTaXplOmF9PXRoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGE7aWYodGhpcy5fY29udGVudHMuc3RyKXt0aGlzLmRhdGEudGV4dENvbnRlbnQ9dGhpcy5fY29udGVudHMuc3RyLnNwbGl0KC9cclxuP3xcbi8pLm1hcCgoZT0+ZS50cmltRW5kKCkpKTtjb25zdHtjb29yZHM6ZSxiYm94OnQsbWF0cml4Oml9PUZha2VVbmljb2RlRm9udC5nZXRGaXJzdFBvc2l0aW9uSW5mbyh0aGlzLnJlY3RhbmdsZSx0aGlzLnJvdGF0aW9uLGEpO3RoaXMuZGF0YS50ZXh0UG9zaXRpb249dGhpcy5fdHJhbnNmb3JtUG9pbnQoZSx0LGkpfWlmKHRoaXMuX2lzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkKXtjb25zdCBzPWUuZGljdC5nZXQoIkNBIikscj1uZXcgRmFrZVVuaWNvZGVGb250KGksInNhbnMtc2VyaWYiKTt0aGlzLmFwcGVhcmFuY2U9ci5jcmVhdGVBcHBlYXJhbmNlKHRoaXMuX2NvbnRlbnRzLnN0cix0aGlzLnJlY3RhbmdsZSx0aGlzLnJvdGF0aW9uLGEsdCxzKTt0aGlzLl9zdHJlYW1zLnB1c2godGhpcy5hcHBlYXJhbmNlKX1lbHNlIHdhcm4oIkZyZWVUZXh0QW5ub3RhdGlvbjogT2Zmc2NyZWVuQ2FudmFzIGlzIG5vdCBzdXBwb3J0ZWQsIGFubm90YXRpb24gbWF5IG5vdCByZW5kZXIgY29ycmVjdGx5LiIpfX1nZXQgaGFzVGV4dENvbnRlbnQoKXtyZXR1cm4gdGhpcy5faGFzQXBwZWFyYW5jZX1zdGF0aWMgY3JlYXRlTmV3RGljdChlLHQse2FwUmVmOmksYXA6YX0pe2NvbnN0e2NvbG9yOnMsZm9udFNpemU6cixyZWN0Om4scm90YXRpb246byx1c2VyOmcsdmFsdWU6Y309ZSxDPW5ldyBEaWN0KHQpO0Muc2V0KCJUeXBlIixOYW1lLmdldCgiQW5ub3QiKSk7Qy5zZXQoIlN1YnR5cGUiLE5hbWUuZ2V0KCJGcmVlVGV4dCIpKTtDLnNldCgiQ3JlYXRpb25EYXRlIixgRDoke2dldE1vZGlmaWNhdGlvbkRhdGUoKX1gKTtDLnNldCgiUmVjdCIsbik7Y29uc3QgaD1gL0hlbHYgJHtyfSBUZiAke2dldFBkZkNvbG9yKHMsITApfWA7Qy5zZXQoIkRBIixoKTtDLnNldCgiQ29udGVudHMiLGlzQXNjaWkoYyk/YzpzdHJpbmdUb1VURjE2U3RyaW5nKGMsITApKTtDLnNldCgiRiIsNCk7Qy5zZXQoIkJvcmRlciIsWzAsMCwwXSk7Qy5zZXQoIlJvdGF0ZSIsbyk7ZyYmQy5zZXQoIlQiLGlzQXNjaWkoZyk/ZzpzdHJpbmdUb1VURjE2U3RyaW5nKGcsITApKTtpZihpfHxhKXtjb25zdCBlPW5ldyBEaWN0KHQpO0Muc2V0KCJBUCIsZSk7aT9lLnNldCgiTiIsaSk6ZS5zZXQoIk4iLGEpfXJldHVybiBDfXN0YXRpYyBhc3luYyBjcmVhdGVOZXdBcHBlYXJhbmNlU3RyZWFtKGUsdCxpKXtjb25zdHtiYXNlRm9udFJlZjphLGV2YWx1YXRvcjpyLHRhc2s6bn09aSx7Y29sb3I6byxmb250U2l6ZTpnLHJlY3Q6Yyxyb3RhdGlvbjpDLHZhbHVlOmh9PWUsbD1uZXcgRGljdCh0KSxRPW5ldyBEaWN0KHQpO2lmKGEpUS5zZXQoIkhlbHYiLGEpO2Vsc2V7Y29uc3QgZT1uZXcgRGljdCh0KTtlLnNldCgiQmFzZUZvbnQiLE5hbWUuZ2V0KCJIZWx2ZXRpY2EiKSk7ZS5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJGb250IikpO2Uuc2V0KCJTdWJ0eXBlIixOYW1lLmdldCgiVHlwZTEiKSk7ZS5zZXQoIkVuY29kaW5nIixOYW1lLmdldCgiV2luQW5zaUVuY29kaW5nIikpO1Euc2V0KCJIZWx2IixlKX1sLnNldCgiRm9udCIsUSk7Y29uc3QgRT1hd2FpdCBXaWRnZXRBbm5vdGF0aW9uLl9nZXRGb250RGF0YShyLG4se2ZvbnROYW1lOiJIZWx2Iixmb250U2l6ZTpnfSxsKSxbdSxkLGYscF09YztsZXQgbT1mLXUseT1wLWQ7QyUxODAhPTAmJihbbSx5XT1beSxtXSk7Y29uc3Qgdz1oLnNwbGl0KCJcbiIpLGI9Zy8xZTM7bGV0IEQ9LTEvMDtjb25zdCBGPVtdO2ZvcihsZXQgZSBvZiB3KXtjb25zdCB0PUUuZW5jb2RlU3RyaW5nKGUpO2lmKHQubGVuZ3RoPjEpcmV0dXJuIG51bGw7ZT10LmpvaW4oIiIpO0YucHVzaChlKTtsZXQgaT0wO2NvbnN0IGE9RS5jaGFyc1RvR2x5cGhzKGUpO2Zvcihjb25zdCBlIG9mIGEpaSs9ZS53aWR0aCpiO0Q9TWF0aC5tYXgoRCxpKX1sZXQgUz0xO0Q+bSYmKFM9bS9EKTtsZXQgaz0xO2NvbnN0IE49cypnLFI9MSpnLEc9Tip3Lmxlbmd0aDtHPnkmJihrPXkvRyk7Y29uc3QgeD1nKk1hdGgubWluKFMsayk7bGV0IFUsTSxMO3N3aXRjaChDKXtjYXNlIDA6TD1bMSwwLDAsMV07TT1bY1swXSxjWzFdLG0seV07VT1bY1swXSxjWzNdLVJdO2JyZWFrO2Nhc2UgOTA6TD1bMCwxLC0xLDBdO009W2NbMV0sLWNbMl0sbSx5XTtVPVtjWzFdLC1jWzBdLVJdO2JyZWFrO2Nhc2UgMTgwOkw9Wy0xLDAsMCwtMV07TT1bLWNbMl0sLWNbM10sbSx5XTtVPVstY1syXSwtY1sxXS1SXTticmVhaztjYXNlIDI3MDpMPVswLC0xLDEsMF07TT1bLWNbM10sY1swXSxtLHldO1U9Wy1jWzNdLGNbMl0tUl19Y29uc3QgSD1bInEiLGAke0wuam9pbigiICIpfSAwIDAgY21gLGAke00uam9pbigiICIpfSByZSBXIG5gLCJCVCIsYCR7Z2V0UGRmQ29sb3IobywhMCl9YCxgMCBUYyAvSGVsdiAke251bWJlclRvU3RyaW5nKHgpfSBUZmBdO0gucHVzaChgJHtVLmpvaW4oIiAiKX0gVGQgKCR7ZXNjYXBlU3RyaW5nKEZbMF0pfSkgVGpgKTtjb25zdCBKPW51bWJlclRvU3RyaW5nKE4pO2ZvcihsZXQgZT0xLHQ9Ri5sZW5ndGg7ZTx0O2UrKyl7Y29uc3QgdD1GW2VdO0gucHVzaChgMCAtJHtKfSBUZCAoJHtlc2NhcGVTdHJpbmcodCl9KSBUamApfUgucHVzaCgiRVQiLCJRIik7Y29uc3QgWT1ILmpvaW4oIlxuIiksdj1uZXcgRGljdCh0KTt2LnNldCgiRm9ybVR5cGUiLDEpO3Yuc2V0KCJTdWJ0eXBlIixOYW1lLmdldCgiRm9ybSIpKTt2LnNldCgiVHlwZSIsTmFtZS5nZXQoIlhPYmplY3QiKSk7di5zZXQoIkJCb3giLGMpO3Yuc2V0KCJSZXNvdXJjZXMiLGwpO3Yuc2V0KCJNYXRyaXgiLFsxLDAsMCwxLC1jWzBdLC1jWzFdXSk7Y29uc3QgSz1uZXcgU3RyaW5nU3RyZWFtKFkpO0suZGljdD12O3JldHVybiBLfX1jbGFzcyBMaW5lQW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0LHhyZWY6aX09ZTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9Ujt0aGlzLmRhdGEuaGFzT3duQ2FudmFzPXRoaXMuZGF0YS5ub1JvdGF0ZTt0aGlzLmRhdGEubm9IVE1MPSExO2NvbnN0IGE9dC5nZXRBcnJheSgiTCIpO3RoaXMuZGF0YS5saW5lQ29vcmRpbmF0ZXM9VXRpbC5ub3JtYWxpemVSZWN0KGEpO3RoaXMuc2V0TGluZUVuZGluZ3ModC5nZXRBcnJheSgiTEUiKSk7dGhpcy5kYXRhLmxpbmVFbmRpbmdzPXRoaXMubGluZUVuZGluZ3M7aWYoIXRoaXMuYXBwZWFyYW5jZSl7Y29uc3QgZT10aGlzLmNvbG9yP2dldFBkZkNvbG9yQXJyYXkodGhpcy5jb2xvcik6WzAsMCwwXSxzPXQuZ2V0KCJDQSIpLHI9Z2V0UmdiQ29sb3IodC5nZXRBcnJheSgiSUMiKSxudWxsKSxuPXI/Z2V0UGRmQ29sb3JBcnJheShyKTpudWxsLG89bj9zOm51bGwsZz10aGlzLmJvcmRlclN0eWxlLndpZHRofHwxLGM9MipnLEM9W3RoaXMuZGF0YS5saW5lQ29vcmRpbmF0ZXNbMF0tYyx0aGlzLmRhdGEubGluZUNvb3JkaW5hdGVzWzFdLWMsdGhpcy5kYXRhLmxpbmVDb29yZGluYXRlc1syXStjLHRoaXMuZGF0YS5saW5lQ29vcmRpbmF0ZXNbM10rY107VXRpbC5pbnRlcnNlY3QodGhpcy5yZWN0YW5nbGUsQyl8fCh0aGlzLnJlY3RhbmdsZT1DKTt0aGlzLl9zZXREZWZhdWx0QXBwZWFyYW5jZSh7eHJlZjppLGV4dHJhOmAke2d9IHdgLHN0cm9rZUNvbG9yOmUsZmlsbENvbG9yOm4sc3Ryb2tlQWxwaGE6cyxmaWxsQWxwaGE6byxwb2ludHNDYWxsYmFjazooZSx0KT0+e2UucHVzaChgJHthWzBdfSAke2FbMV19IG1gLGAke2FbMl19ICR7YVszXX0gbGAsIlMiKTtyZXR1cm5bdFswXS54LWcsdFsxXS54K2csdFszXS55LWcsdFsxXS55K2ddfX0pfX19Y2xhc3MgU3F1YXJlQW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0LHhyZWY6aX09ZTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9Rzt0aGlzLmRhdGEuaGFzT3duQ2FudmFzPXRoaXMuZGF0YS5ub1JvdGF0ZTt0aGlzLmRhdGEubm9IVE1MPSExO2lmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IGU9dGhpcy5jb2xvcj9nZXRQZGZDb2xvckFycmF5KHRoaXMuY29sb3IpOlswLDAsMF0sYT10LmdldCgiQ0EiKSxzPWdldFJnYkNvbG9yKHQuZ2V0QXJyYXkoIklDIiksbnVsbCkscj1zP2dldFBkZkNvbG9yQXJyYXkocyk6bnVsbCxuPXI/YTpudWxsO2lmKDA9PT10aGlzLmJvcmRlclN0eWxlLndpZHRoJiYhcilyZXR1cm47dGhpcy5fc2V0RGVmYXVsdEFwcGVhcmFuY2Uoe3hyZWY6aSxleHRyYTpgJHt0aGlzLmJvcmRlclN0eWxlLndpZHRofSB3YCxzdHJva2VDb2xvcjplLGZpbGxDb2xvcjpyLHN0cm9rZUFscGhhOmEsZmlsbEFscGhhOm4scG9pbnRzQ2FsbGJhY2s6KGUsdCk9Pntjb25zdCBpPXRbMl0ueCt0aGlzLmJvcmRlclN0eWxlLndpZHRoLzIsYT10WzJdLnkrdGhpcy5ib3JkZXJTdHlsZS53aWR0aC8yLHM9dFszXS54LXRbMl0ueC10aGlzLmJvcmRlclN0eWxlLndpZHRoLG49dFsxXS55LXRbM10ueS10aGlzLmJvcmRlclN0eWxlLndpZHRoO2UucHVzaChgJHtpfSAke2F9ICR7c30gJHtufSByZWApO3I/ZS5wdXNoKCJCIik6ZS5wdXNoKCJTIik7cmV0dXJuW3RbMF0ueCx0WzFdLngsdFszXS55LHRbMV0ueV19fSl9fX1jbGFzcyBDaXJjbGVBbm5vdGF0aW9uIGV4dGVuZHMgTWFya3VwQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdHtkaWN0OnQseHJlZjppfT1lO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT14O2lmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IGU9dGhpcy5jb2xvcj9nZXRQZGZDb2xvckFycmF5KHRoaXMuY29sb3IpOlswLDAsMF0sYT10LmdldCgiQ0EiKSxzPWdldFJnYkNvbG9yKHQuZ2V0QXJyYXkoIklDIiksbnVsbCkscj1zP2dldFBkZkNvbG9yQXJyYXkocyk6bnVsbCxuPXI/YTpudWxsO2lmKDA9PT10aGlzLmJvcmRlclN0eWxlLndpZHRoJiYhcilyZXR1cm47Y29uc3Qgbz00LzMqTWF0aC50YW4oTWF0aC5QSS84KTt0aGlzLl9zZXREZWZhdWx0QXBwZWFyYW5jZSh7eHJlZjppLGV4dHJhOmAke3RoaXMuYm9yZGVyU3R5bGUud2lkdGh9IHdgLHN0cm9rZUNvbG9yOmUsZmlsbENvbG9yOnIsc3Ryb2tlQWxwaGE6YSxmaWxsQWxwaGE6bixwb2ludHNDYWxsYmFjazooZSx0KT0+e2NvbnN0IGk9dFswXS54K3RoaXMuYm9yZGVyU3R5bGUud2lkdGgvMixhPXRbMF0ueS10aGlzLmJvcmRlclN0eWxlLndpZHRoLzIscz10WzNdLngtdGhpcy5ib3JkZXJTdHlsZS53aWR0aC8yLG49dFszXS55K3RoaXMuYm9yZGVyU3R5bGUud2lkdGgvMixnPWkrKHMtaSkvMixjPWErKG4tYSkvMixDPShzLWkpLzIqbyxoPShuLWEpLzIqbztlLnB1c2goYCR7Z30gJHtufSBtYCxgJHtnK0N9ICR7bn0gJHtzfSAke2MraH0gJHtzfSAke2N9IGNgLGAke3N9ICR7Yy1ofSAke2crQ30gJHthfSAke2d9ICR7YX0gY2AsYCR7Zy1DfSAke2F9ICR7aX0gJHtjLWh9ICR7aX0gJHtjfSBjYCxgJHtpfSAke2MraH0gJHtnLUN9ICR7bn0gJHtnfSAke259IGNgLCJoIik7cj9lLnB1c2goIkIiKTplLnB1c2goIlMiKTtyZXR1cm5bdFswXS54LHRbMV0ueCx0WzNdLnksdFsxXS55XX19KX19fWNsYXNzIFBvbHlsaW5lQW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0LHhyZWY6aX09ZTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9TTt0aGlzLmRhdGEuaGFzT3duQ2FudmFzPXRoaXMuZGF0YS5ub1JvdGF0ZTt0aGlzLmRhdGEubm9IVE1MPSExO3RoaXMuZGF0YS52ZXJ0aWNlcz1bXTtpZighKHRoaXMgaW5zdGFuY2VvZiBQb2x5Z29uQW5ub3RhdGlvbikpe3RoaXMuc2V0TGluZUVuZGluZ3ModC5nZXRBcnJheSgiTEUiKSk7dGhpcy5kYXRhLmxpbmVFbmRpbmdzPXRoaXMubGluZUVuZGluZ3N9Y29uc3QgYT10LmdldEFycmF5KCJWZXJ0aWNlcyIpO2lmKEFycmF5LmlzQXJyYXkoYSkpe2ZvcihsZXQgZT0wLHQ9YS5sZW5ndGg7ZTx0O2UrPTIpdGhpcy5kYXRhLnZlcnRpY2VzLnB1c2goe3g6YVtlXSx5OmFbZSsxXX0pO2lmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IGU9dGhpcy5jb2xvcj9nZXRQZGZDb2xvckFycmF5KHRoaXMuY29sb3IpOlswLDAsMF0sYT10LmdldCgiQ0EiKSxzPXRoaXMuYm9yZGVyU3R5bGUud2lkdGh8fDEscj0yKnMsbj1bMS8wLDEvMCwtMS8wLC0xLzBdO2Zvcihjb25zdCBlIG9mIHRoaXMuZGF0YS52ZXJ0aWNlcyl7blswXT1NYXRoLm1pbihuWzBdLGUueC1yKTtuWzFdPU1hdGgubWluKG5bMV0sZS55LXIpO25bMl09TWF0aC5tYXgoblsyXSxlLngrcik7blszXT1NYXRoLm1heChuWzNdLGUueStyKX1VdGlsLmludGVyc2VjdCh0aGlzLnJlY3RhbmdsZSxuKXx8KHRoaXMucmVjdGFuZ2xlPW4pO3RoaXMuX3NldERlZmF1bHRBcHBlYXJhbmNlKHt4cmVmOmksZXh0cmE6YCR7c30gd2Asc3Ryb2tlQ29sb3I6ZSxzdHJva2VBbHBoYTphLHBvaW50c0NhbGxiYWNrOihlLHQpPT57Y29uc3QgaT10aGlzLmRhdGEudmVydGljZXM7Zm9yKGxldCB0PTAsYT1pLmxlbmd0aDt0PGE7dCsrKWUucHVzaChgJHtpW3RdLnh9ICR7aVt0XS55fSAkezA9PT10PyJtIjoibCJ9YCk7ZS5wdXNoKCJTIik7cmV0dXJuW3RbMF0ueCx0WzFdLngsdFszXS55LHRbMV0ueV19fSl9fX19Y2xhc3MgUG9seWdvbkFubm90YXRpb24gZXh0ZW5kcyBQb2x5bGluZUFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPVV9fWNsYXNzIENhcmV0QW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPUt9fWNsYXNzIElua0Fubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuZGF0YS5oYXNPd25DYW52YXM9dGhpcy5kYXRhLm5vUm90YXRlO3RoaXMuZGF0YS5ub0hUTUw9ITE7Y29uc3R7ZGljdDp0LHhyZWY6aX09ZTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9VDt0aGlzLmRhdGEuaW5rTGlzdHM9W107Y29uc3QgYT10LmdldEFycmF5KCJJbmtMaXN0Iik7aWYoQXJyYXkuaXNBcnJheShhKSl7Zm9yKGxldCBlPTAsdD1hLmxlbmd0aDtlPHQ7KytlKXt0aGlzLmRhdGEuaW5rTGlzdHMucHVzaChbXSk7Zm9yKGxldCB0PTAscz1hW2VdLmxlbmd0aDt0PHM7dCs9Mil0aGlzLmRhdGEuaW5rTGlzdHNbZV0ucHVzaCh7eDppLmZldGNoSWZSZWYoYVtlXVt0XSkseTppLmZldGNoSWZSZWYoYVtlXVt0KzFdKX0pfWlmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IGU9dGhpcy5jb2xvcj9nZXRQZGZDb2xvckFycmF5KHRoaXMuY29sb3IpOlswLDAsMF0sYT10LmdldCgiQ0EiKSxzPXRoaXMuYm9yZGVyU3R5bGUud2lkdGh8fDEscj0yKnMsbj1bMS8wLDEvMCwtMS8wLC0xLzBdO2Zvcihjb25zdCBlIG9mIHRoaXMuZGF0YS5pbmtMaXN0cylmb3IoY29uc3QgdCBvZiBlKXtuWzBdPU1hdGgubWluKG5bMF0sdC54LXIpO25bMV09TWF0aC5taW4oblsxXSx0Lnktcik7blsyXT1NYXRoLm1heChuWzJdLHQueCtyKTtuWzNdPU1hdGgubWF4KG5bM10sdC55K3IpfVV0aWwuaW50ZXJzZWN0KHRoaXMucmVjdGFuZ2xlLG4pfHwodGhpcy5yZWN0YW5nbGU9bik7dGhpcy5fc2V0RGVmYXVsdEFwcGVhcmFuY2Uoe3hyZWY6aSxleHRyYTpgJHtzfSB3YCxzdHJva2VDb2xvcjplLHN0cm9rZUFscGhhOmEscG9pbnRzQ2FsbGJhY2s6KGUsdCk9Pntmb3IoY29uc3QgdCBvZiB0aGlzLmRhdGEuaW5rTGlzdHMpe2ZvcihsZXQgaT0wLGE9dC5sZW5ndGg7aTxhO2krKyllLnB1c2goYCR7dFtpXS54fSAke3RbaV0ueX0gJHswPT09aT8ibSI6ImwifWApO2UucHVzaCgiUyIpfXJldHVyblt0WzBdLngsdFsxXS54LHRbM10ueSx0WzFdLnldfX0pfX19c3RhdGljIGNyZWF0ZU5ld0RpY3QoZSx0LHthcFJlZjppLGFwOmF9KXtjb25zdHtjb2xvcjpzLG9wYWNpdHk6cixwYXRoczpuLG91dGxpbmVzOm8scmVjdDpnLHJvdGF0aW9uOmMsdGhpY2tuZXNzOkN9PWUsaD1uZXcgRGljdCh0KTtoLnNldCgiVHlwZSIsTmFtZS5nZXQoIkFubm90IikpO2guc2V0KCJTdWJ0eXBlIixOYW1lLmdldCgiSW5rIikpO2guc2V0KCJDcmVhdGlvbkRhdGUiLGBEOiR7Z2V0TW9kaWZpY2F0aW9uRGF0ZSgpfWApO2guc2V0KCJSZWN0IixnKTtoLnNldCgiSW5rTGlzdCIsbz8ucG9pbnRzfHxuLm1hcCgoZT0+ZS5wb2ludHMpKSk7aC5zZXQoIkYiLDQpO2guc2V0KCJSb3RhdGUiLGMpO28mJmguc2V0KCJJVCIsTmFtZS5nZXQoIklua0hpZ2hsaWdodCIpKTtjb25zdCBsPW5ldyBEaWN0KHQpO2guc2V0KCJCUyIsbCk7bC5zZXQoIlciLEMpO2guc2V0KCJDIixBcnJheS5mcm9tKHMsKGU9PmUvMjU1KSkpO2guc2V0KCJDQSIscik7Y29uc3QgUT1uZXcgRGljdCh0KTtoLnNldCgiQVAiLFEpO2k/US5zZXQoIk4iLGkpOlEuc2V0KCJOIixhKTtyZXR1cm4gaH1zdGF0aWMgYXN5bmMgY3JlYXRlTmV3QXBwZWFyYW5jZVN0cmVhbShlLHQsaSl7aWYoZS5vdXRsaW5lcylyZXR1cm4gdGhpcy5jcmVhdGVOZXdBcHBlYXJhbmNlU3RyZWFtRm9ySGlnaGxpZ2h0KGUsdCxpKTtjb25zdHtjb2xvcjphLHJlY3Q6cyxwYXRoczpyLHRoaWNrbmVzczpuLG9wYWNpdHk6b309ZSxnPVtgJHtufSB3IDEgSiAxIGpgLGAke2dldFBkZkNvbG9yKGEsITEpfWBdOzEhPT1vJiZnLnB1c2goIi9SMCBncyIpO2NvbnN0IGM9W107Zm9yKGNvbnN0e2JlemllcjplfW9mIHIpe2MubGVuZ3RoPTA7Yy5wdXNoKGAke251bWJlclRvU3RyaW5nKGVbMF0pfSAke251bWJlclRvU3RyaW5nKGVbMV0pfSBtYCk7aWYoMj09PWUubGVuZ3RoKWMucHVzaChgJHtudW1iZXJUb1N0cmluZyhlWzBdKX0gJHtudW1iZXJUb1N0cmluZyhlWzFdKX0gbCBTYCk7ZWxzZXtmb3IobGV0IHQ9MixpPWUubGVuZ3RoO3Q8aTt0Kz02KXtjb25zdCBpPWUuc2xpY2UodCx0KzYpLm1hcChudW1iZXJUb1N0cmluZykuam9pbigiICIpO2MucHVzaChgJHtpfSBjYCl9Yy5wdXNoKCJTIil9Zy5wdXNoKGMuam9pbigiXG4iKSl9Y29uc3QgQz1nLmpvaW4oIlxuIiksaD1uZXcgRGljdCh0KTtoLnNldCgiRm9ybVR5cGUiLDEpO2guc2V0KCJTdWJ0eXBlIixOYW1lLmdldCgiRm9ybSIpKTtoLnNldCgiVHlwZSIsTmFtZS5nZXQoIlhPYmplY3QiKSk7aC5zZXQoIkJCb3giLHMpO2guc2V0KCJMZW5ndGgiLEMubGVuZ3RoKTtpZigxIT09byl7Y29uc3QgZT1uZXcgRGljdCh0KSxpPW5ldyBEaWN0KHQpLGE9bmV3IERpY3QodCk7YS5zZXQoIkNBIixvKTthLnNldCgiVHlwZSIsTmFtZS5nZXQoIkV4dEdTdGF0ZSIpKTtpLnNldCgiUjAiLGEpO2Uuc2V0KCJFeHRHU3RhdGUiLGkpO2guc2V0KCJSZXNvdXJjZXMiLGUpfWNvbnN0IGw9bmV3IFN0cmluZ1N0cmVhbShDKTtsLmRpY3Q9aDtyZXR1cm4gbH1zdGF0aWMgYXN5bmMgY3JlYXRlTmV3QXBwZWFyYW5jZVN0cmVhbUZvckhpZ2hsaWdodChlLHQsaSl7Y29uc3R7Y29sb3I6YSxyZWN0OnMsb3V0bGluZXM6e291dGxpbmU6cn0sb3BhY2l0eTpufT1lLG89W2Ake2dldFBkZkNvbG9yKGEsITApfWAsIi9SMCBncyJdO28ucHVzaChgJHtudW1iZXJUb1N0cmluZyhyWzRdKX0gJHtudW1iZXJUb1N0cmluZyhyWzVdKX0gbWApO2ZvcihsZXQgZT02LHQ9ci5sZW5ndGg7ZTx0O2UrPTYpaWYoaXNOYU4ocltlXSl8fG51bGw9PT1yW2VdKW8ucHVzaChgJHtudW1iZXJUb1N0cmluZyhyW2UrNF0pfSAke251bWJlclRvU3RyaW5nKHJbZSs1XSl9IGxgKTtlbHNle2NvbnN0IHQ9ci5zbGljZShlLGUrNikubWFwKG51bWJlclRvU3RyaW5nKS5qb2luKCIgIik7by5wdXNoKGAke3R9IGNgKX1vLnB1c2goImggZiIpO2NvbnN0IGc9by5qb2luKCJcbiIpLGM9bmV3IERpY3QodCk7Yy5zZXQoIkZvcm1UeXBlIiwxKTtjLnNldCgiU3VidHlwZSIsTmFtZS5nZXQoIkZvcm0iKSk7Yy5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJYT2JqZWN0IikpO2Muc2V0KCJCQm94IixzKTtjLnNldCgiTGVuZ3RoIixnLmxlbmd0aCk7Y29uc3QgQz1uZXcgRGljdCh0KSxoPW5ldyBEaWN0KHQpO0Muc2V0KCJFeHRHU3RhdGUiLGgpO2Muc2V0KCJSZXNvdXJjZXMiLEMpO2NvbnN0IGw9bmV3IERpY3QodCk7aC5zZXQoIlIwIixsKTtsLnNldCgiQk0iLE5hbWUuZ2V0KCJNdWx0aXBseSIpKTtpZigxIT09bil7bC5zZXQoImNhIixuKTtsLnNldCgiVHlwZSIsTmFtZS5nZXQoIkV4dEdTdGF0ZSIpKX1jb25zdCBRPW5ldyBTdHJpbmdTdHJlYW0oZyk7US5kaWN0PWM7cmV0dXJuIFF9fWNsYXNzIEhpZ2hsaWdodEFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dCx4cmVmOml9PWU7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPUw7aWYodGhpcy5kYXRhLnF1YWRQb2ludHM9Z2V0UXVhZFBvaW50cyh0LG51bGwpKXtjb25zdCBlPXRoaXMuYXBwZWFyYW5jZT8uZGljdC5nZXQoIlJlc291cmNlcyIpO2lmKCF0aGlzLmFwcGVhcmFuY2V8fCFlPy5oYXMoIkV4dEdTdGF0ZSIpKXt0aGlzLmFwcGVhcmFuY2UmJndhcm4oIkhpZ2hsaWdodEFubm90YXRpb24gLSBpZ25vcmluZyBidWlsdC1pbiBhcHBlYXJhbmNlIHN0cmVhbS4iKTtjb25zdCBlPXRoaXMuY29sb3I/Z2V0UGRmQ29sb3JBcnJheSh0aGlzLmNvbG9yKTpbMSwxLDBdLGE9dC5nZXQoIkNBIik7dGhpcy5fc2V0RGVmYXVsdEFwcGVhcmFuY2Uoe3hyZWY6aSxmaWxsQ29sb3I6ZSxibGVuZE1vZGU6Ik11bHRpcGx5IixmaWxsQWxwaGE6YSxwb2ludHNDYWxsYmFjazooZSx0KT0+e2UucHVzaChgJHt0WzBdLnh9ICR7dFswXS55fSBtYCxgJHt0WzFdLnh9ICR7dFsxXS55fSBsYCxgJHt0WzNdLnh9ICR7dFszXS55fSBsYCxgJHt0WzJdLnh9ICR7dFsyXS55fSBsYCwiZiIpO3JldHVyblt0WzBdLngsdFsxXS54LHRbM10ueSx0WzFdLnldfX0pfX1lbHNlIHRoaXMuZGF0YS5wb3B1cFJlZj1udWxsfXN0YXRpYyBjcmVhdGVOZXdEaWN0KGUsdCx7YXBSZWY6aSxhcDphfSl7Y29uc3R7Y29sb3I6cyxvcGFjaXR5OnIscmVjdDpuLHJvdGF0aW9uOm8sdXNlcjpnLHF1YWRQb2ludHM6Y309ZSxDPW5ldyBEaWN0KHQpO0Muc2V0KCJUeXBlIixOYW1lLmdldCgiQW5ub3QiKSk7Qy5zZXQoIlN1YnR5cGUiLE5hbWUuZ2V0KCJIaWdobGlnaHQiKSk7Qy5zZXQoIkNyZWF0aW9uRGF0ZSIsYEQ6JHtnZXRNb2RpZmljYXRpb25EYXRlKCl9YCk7Qy5zZXQoIlJlY3QiLG4pO0Muc2V0KCJGIiw0KTtDLnNldCgiQm9yZGVyIixbMCwwLDBdKTtDLnNldCgiUm90YXRlIixvKTtDLnNldCgiUXVhZFBvaW50cyIsYyk7Qy5zZXQoIkMiLEFycmF5LmZyb20ocywoZT0+ZS8yNTUpKSk7Qy5zZXQoIkNBIixyKTtnJiZDLnNldCgiVCIsaXNBc2NpaShnKT9nOnN0cmluZ1RvVVRGMTZTdHJpbmcoZywhMCkpO2lmKGl8fGEpe2NvbnN0IGU9bmV3IERpY3QodCk7Qy5zZXQoIkFQIixlKTtlLnNldCgiTiIsaXx8YSl9cmV0dXJuIEN9c3RhdGljIGFzeW5jIGNyZWF0ZU5ld0FwcGVhcmFuY2VTdHJlYW0oZSx0LGkpe2NvbnN0e2NvbG9yOmEscmVjdDpzLG91dGxpbmVzOnIsb3BhY2l0eTpufT1lLG89W2Ake2dldFBkZkNvbG9yKGEsITApfWAsIi9SMCBncyJdLGc9W107Zm9yKGNvbnN0IGUgb2Ygcil7Zy5sZW5ndGg9MDtnLnB1c2goYCR7bnVtYmVyVG9TdHJpbmcoZVswXSl9ICR7bnVtYmVyVG9TdHJpbmcoZVsxXSl9IG1gKTtmb3IobGV0IHQ9MixpPWUubGVuZ3RoO3Q8aTt0Kz0yKWcucHVzaChgJHtudW1iZXJUb1N0cmluZyhlW3RdKX0gJHtudW1iZXJUb1N0cmluZyhlW3QrMV0pfSBsYCk7Zy5wdXNoKCJoIik7by5wdXNoKGcuam9pbigiXG4iKSl9by5wdXNoKCJmKiIpO2NvbnN0IGM9by5qb2luKCJcbiIpLEM9bmV3IERpY3QodCk7Qy5zZXQoIkZvcm1UeXBlIiwxKTtDLnNldCgiU3VidHlwZSIsTmFtZS5nZXQoIkZvcm0iKSk7Qy5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJYT2JqZWN0IikpO0Muc2V0KCJCQm94IixzKTtDLnNldCgiTGVuZ3RoIixjLmxlbmd0aCk7Y29uc3QgaD1uZXcgRGljdCh0KSxsPW5ldyBEaWN0KHQpO2guc2V0KCJFeHRHU3RhdGUiLGwpO0Muc2V0KCJSZXNvdXJjZXMiLGgpO2NvbnN0IFE9bmV3IERpY3QodCk7bC5zZXQoIlIwIixRKTtRLnNldCgiQk0iLE5hbWUuZ2V0KCJNdWx0aXBseSIpKTtpZigxIT09bil7US5zZXQoImNhIixuKTtRLnNldCgiVHlwZSIsTmFtZS5nZXQoIkV4dEdTdGF0ZSIpKX1jb25zdCBFPW5ldyBTdHJpbmdTdHJlYW0oYyk7RS5kaWN0PUM7cmV0dXJuIEV9fWNsYXNzIFVuZGVybGluZUFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dCx4cmVmOml9PWU7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPUg7aWYodGhpcy5kYXRhLnF1YWRQb2ludHM9Z2V0UXVhZFBvaW50cyh0LG51bGwpKXtpZighdGhpcy5hcHBlYXJhbmNlKXtjb25zdCBlPXRoaXMuY29sb3I/Z2V0UGRmQ29sb3JBcnJheSh0aGlzLmNvbG9yKTpbMCwwLDBdLGE9dC5nZXQoIkNBIik7dGhpcy5fc2V0RGVmYXVsdEFwcGVhcmFuY2Uoe3hyZWY6aSxleHRyYToiW10gMCBkIDAuNTcxIHciLHN0cm9rZUNvbG9yOmUsc3Ryb2tlQWxwaGE6YSxwb2ludHNDYWxsYmFjazooZSx0KT0+e2UucHVzaChgJHt0WzJdLnh9ICR7dFsyXS55KzEuM30gbWAsYCR7dFszXS54fSAke3RbM10ueSsxLjN9IGxgLCJTIik7cmV0dXJuW3RbMF0ueCx0WzFdLngsdFszXS55LHRbMV0ueV19fSl9fWVsc2UgdGhpcy5kYXRhLnBvcHVwUmVmPW51bGx9fWNsYXNzIFNxdWlnZ2x5QW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0LHhyZWY6aX09ZTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9SjtpZih0aGlzLmRhdGEucXVhZFBvaW50cz1nZXRRdWFkUG9pbnRzKHQsbnVsbCkpe2lmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IGU9dGhpcy5jb2xvcj9nZXRQZGZDb2xvckFycmF5KHRoaXMuY29sb3IpOlswLDAsMF0sYT10LmdldCgiQ0EiKTt0aGlzLl9zZXREZWZhdWx0QXBwZWFyYW5jZSh7eHJlZjppLGV4dHJhOiJbXSAwIGQgMSB3IixzdHJva2VDb2xvcjplLHN0cm9rZUFscGhhOmEscG9pbnRzQ2FsbGJhY2s6KGUsdCk9Pntjb25zdCBpPSh0WzBdLnktdFsyXS55KS82O2xldCBhPWkscz10WzJdLng7Y29uc3Qgcj10WzJdLnksbj10WzNdLng7ZS5wdXNoKGAke3N9ICR7cithfSBtYCk7ZG97cys9MjthPTA9PT1hP2k6MDtlLnB1c2goYCR7c30gJHtyK2F9IGxgKX13aGlsZShzPG4pO2UucHVzaCgiUyIpO3JldHVyblt0WzJdLngsbixyLTIqaSxyKzIqaV19fSl9fWVsc2UgdGhpcy5kYXRhLnBvcHVwUmVmPW51bGx9fWNsYXNzIFN0cmlrZU91dEFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dCx4cmVmOml9PWU7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPVk7aWYodGhpcy5kYXRhLnF1YWRQb2ludHM9Z2V0UXVhZFBvaW50cyh0LG51bGwpKXtpZighdGhpcy5hcHBlYXJhbmNlKXtjb25zdCBlPXRoaXMuY29sb3I/Z2V0UGRmQ29sb3JBcnJheSh0aGlzLmNvbG9yKTpbMCwwLDBdLGE9dC5nZXQoIkNBIik7dGhpcy5fc2V0RGVmYXVsdEFwcGVhcmFuY2Uoe3hyZWY6aSxleHRyYToiW10gMCBkIDEgdyIsc3Ryb2tlQ29sb3I6ZSxzdHJva2VBbHBoYTphLHBvaW50c0NhbGxiYWNrOihlLHQpPT57ZS5wdXNoKCh0WzBdLngrdFsyXS54KS8yKyIgIisodFswXS55K3RbMl0ueSkvMisiIG0iLCh0WzFdLngrdFszXS54KS8yKyIgIisodFsxXS55K3RbM10ueSkvMisiIGwiLCJTIik7cmV0dXJuW3RbMF0ueCx0WzFdLngsdFszXS55LHRbMV0ueV19fSl9fWVsc2UgdGhpcy5kYXRhLnBvcHVwUmVmPW51bGx9fWNsYXNzIFN0YW1wQW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPXY7dGhpcy5kYXRhLmhhc093bkNhbnZhcz10aGlzLmRhdGEubm9Sb3RhdGU7dGhpcy5kYXRhLm5vSFRNTD0hMX1zdGF0aWMgYXN5bmMgY3JlYXRlSW1hZ2UoZSx0KXtjb25zdHt3aWR0aDppLGhlaWdodDphfT1lLHM9bmV3IE9mZnNjcmVlbkNhbnZhcyhpLGEpLHI9cy5nZXRDb250ZXh0KCIyZCIse2FscGhhOiEwfSk7ci5kcmF3SW1hZ2UoZSwwLDApO2NvbnN0IG49ci5nZXRJbWFnZURhdGEoMCwwLGksYSkuZGF0YSxvPW5ldyBVaW50MzJBcnJheShuLmJ1ZmZlciksZz1vLnNvbWUoRmVhdHVyZVRlc3QuaXNMaXR0bGVFbmRpYW4/ZT0+ZT4+PjI0IT0yNTU6ZT0+MjU1IT0oMjU1JmUpKTtpZihnKXtyLmZpbGxTdHlsZT0id2hpdGUiO3IuZmlsbFJlY3QoMCwwLGksYSk7ci5kcmF3SW1hZ2UoZSwwLDApfWNvbnN0IGM9cy5jb252ZXJ0VG9CbG9iKHt0eXBlOiJpbWFnZS9qcGVnIixxdWFsaXR5OjF9KS50aGVuKChlPT5lLmFycmF5QnVmZmVyKCkpKSxDPU5hbWUuZ2V0KCJYT2JqZWN0IiksaD1OYW1lLmdldCgiSW1hZ2UiKSxsPW5ldyBEaWN0KHQpO2wuc2V0KCJUeXBlIixDKTtsLnNldCgiU3VidHlwZSIsaCk7bC5zZXQoIkJpdHNQZXJDb21wb25lbnQiLDgpO2wuc2V0KCJDb2xvclNwYWNlIixOYW1lLmdldCgiRGV2aWNlUkdCIikpO2wuc2V0KCJGaWx0ZXIiLE5hbWUuZ2V0KCJEQ1REZWNvZGUiKSk7bC5zZXQoIkJCb3giLFswLDAsaSxhXSk7bC5zZXQoIldpZHRoIixpKTtsLnNldCgiSGVpZ2h0IixhKTtsZXQgUT1udWxsO2lmKGcpe2NvbnN0IGU9bmV3IFVpbnQ4QXJyYXkoby5sZW5ndGgpO2lmKEZlYXR1cmVUZXN0LmlzTGl0dGxlRW5kaWFuKWZvcihsZXQgdD0wLGk9by5sZW5ndGg7dDxpO3QrKyllW3RdPW9bdF0+Pj4yNDtlbHNlIGZvcihsZXQgdD0wLGk9by5sZW5ndGg7dDxpO3QrKyllW3RdPTI1NSZvW3RdO2NvbnN0IHM9bmV3IERpY3QodCk7cy5zZXQoIlR5cGUiLEMpO3Muc2V0KCJTdWJ0eXBlIixoKTtzLnNldCgiQml0c1BlckNvbXBvbmVudCIsOCk7cy5zZXQoIkNvbG9yU3BhY2UiLE5hbWUuZ2V0KCJEZXZpY2VHcmF5IikpO3Muc2V0KCJXaWR0aCIsaSk7cy5zZXQoIkhlaWdodCIsYSk7UT1uZXcgU3RyZWFtKGUsMCwwLHMpfXJldHVybntpbWFnZVN0cmVhbTpuZXcgU3RyZWFtKGF3YWl0IGMsMCwwLGwpLHNtYXNrU3RyZWFtOlEsd2lkdGg6aSxoZWlnaHQ6YX19c3RhdGljIGNyZWF0ZU5ld0RpY3QoZSx0LHthcFJlZjppLGFwOmF9KXtjb25zdHtyZWN0OnMscm90YXRpb246cix1c2VyOm59PWUsbz1uZXcgRGljdCh0KTtvLnNldCgiVHlwZSIsTmFtZS5nZXQoIkFubm90IikpO28uc2V0KCJTdWJ0eXBlIixOYW1lLmdldCgiU3RhbXAiKSk7by5zZXQoIkNyZWF0aW9uRGF0ZSIsYEQ6JHtnZXRNb2RpZmljYXRpb25EYXRlKCl9YCk7by5zZXQoIlJlY3QiLHMpO28uc2V0KCJGIiw0KTtvLnNldCgiQm9yZGVyIixbMCwwLDBdKTtvLnNldCgiUm90YXRlIixyKTtuJiZvLnNldCgiVCIsaXNBc2NpaShuKT9uOnN0cmluZ1RvVVRGMTZTdHJpbmcobiwhMCkpO2lmKGl8fGEpe2NvbnN0IGU9bmV3IERpY3QodCk7by5zZXQoIkFQIixlKTtpP2Uuc2V0KCJOIixpKTplLnNldCgiTiIsYSl9cmV0dXJuIG99c3RhdGljIGFzeW5jIGNyZWF0ZU5ld0FwcGVhcmFuY2VTdHJlYW0oZSx0LGkpe2NvbnN0e3JvdGF0aW9uOmF9PWUse2ltYWdlUmVmOnMsd2lkdGg6cixoZWlnaHQ6bn09aS5pbWFnZSxvPW5ldyBEaWN0KHQpLGc9bmV3IERpY3QodCk7by5zZXQoIlhPYmplY3QiLGcpO2cuc2V0KCJJbTAiLHMpO2NvbnN0IGM9YHEgJHtyfSAwIDAgJHtufSAwIDAgY20gL0ltMCBEbyBRYCxDPW5ldyBEaWN0KHQpO0Muc2V0KCJGb3JtVHlwZSIsMSk7Qy5zZXQoIlN1YnR5cGUiLE5hbWUuZ2V0KCJGb3JtIikpO0Muc2V0KCJUeXBlIixOYW1lLmdldCgiWE9iamVjdCIpKTtDLnNldCgiQkJveCIsWzAsMCxyLG5dKTtDLnNldCgiUmVzb3VyY2VzIixvKTtpZihhKXtjb25zdCBlPWdldFJvdGF0aW9uTWF0cml4KGEscixuKTtDLnNldCgiTWF0cml4IixlKX1jb25zdCBoPW5ldyBTdHJpbmdTdHJlYW0oYyk7aC5kaWN0PUM7cmV0dXJuIGh9fWNsYXNzIEZpbGVBdHRhY2htZW50QW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0LHhyZWY6aX09ZSxhPW5ldyBGaWxlU3BlYyh0LmdldCgiRlMiKSxpKTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9Tzt0aGlzLmRhdGEuaGFzT3duQ2FudmFzPXRoaXMuZGF0YS5ub1JvdGF0ZTt0aGlzLmRhdGEubm9IVE1MPSExO3RoaXMuZGF0YS5maWxlPWEuc2VyaWFsaXphYmxlO2NvbnN0IHM9dC5nZXQoIk5hbWUiKTt0aGlzLmRhdGEubmFtZT1zIGluc3RhbmNlb2YgTmFtZT9zdHJpbmdUb1BERlN0cmluZyhzLm5hbWUpOiJQdXNoUGluIjtjb25zdCByPXQuZ2V0KCJjYSIpO3RoaXMuZGF0YS5maWxsQWxwaGE9Im51bWJlciI9PXR5cGVvZiByJiZyPj0wJiZyPD0xP3I6bnVsbH19ZnVuY3Rpb24gZGVjb2RlU3RyaW5nKGUpe3RyeXtyZXR1cm4gc3RyaW5nVG9VVEY4U3RyaW5nKGUpfWNhdGNoKHQpe3dhcm4oYFVURi04IGRlY29kaW5nIGZhaWxlZDogIiR7dH0iLmApO3JldHVybiBlfX1jbGFzcyBEYXRhc2V0WE1MUGFyc2VyIGV4dGVuZHMgU2ltcGxlWE1MUGFyc2Vye2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMubm9kZT1udWxsfW9uRW5kRWxlbWVudChlKXtjb25zdCB0PXN1cGVyLm9uRW5kRWxlbWVudChlKTtpZih0JiYieGZhOmRhdGFzZXRzIj09PWUpe3RoaXMubm9kZT10O3Rocm93IG5ldyBFcnJvcigiQWJvcnRpbmcgRGF0YXNldFhNTFBhcnNlci4iKX19fWNsYXNzIERhdGFzZXRSZWFkZXJ7Y29uc3RydWN0b3IoZSl7aWYoZS5kYXRhc2V0cyl0aGlzLm5vZGU9bmV3IFNpbXBsZVhNTFBhcnNlcih7aGFzQXR0cmlidXRlczohMH0pLnBhcnNlRnJvbVN0cmluZyhlLmRhdGFzZXRzKS5kb2N1bWVudEVsZW1lbnQ7ZWxzZXtjb25zdCB0PW5ldyBEYXRhc2V0WE1MUGFyc2VyKHtoYXNBdHRyaWJ1dGVzOiEwfSk7dHJ5e3QucGFyc2VGcm9tU3RyaW5nKGVbInhkcDp4ZHAiXSl9Y2F0Y2h7fXRoaXMubm9kZT10Lm5vZGV9fWdldFZhbHVlKGUpe2lmKCF0aGlzLm5vZGV8fCFlKXJldHVybiIiO2NvbnN0IHQ9dGhpcy5ub2RlLnNlYXJjaE5vZGUocGFyc2VYRkFQYXRoKGUpLDApO2lmKCF0KXJldHVybiIiO2NvbnN0IGk9dC5maXJzdENoaWxkO3JldHVybiJ2YWx1ZSI9PT1pPy5ub2RlTmFtZT90LmNoaWxkcmVuLm1hcCgoZT0+ZGVjb2RlU3RyaW5nKGUudGV4dENvbnRlbnQpKSk6ZGVjb2RlU3RyaW5nKHQudGV4dENvbnRlbnQpfX1jbGFzcyBYUmVmeyNIPW51bGw7Y29uc3RydWN0b3IoZSx0KXt0aGlzLnN0cmVhbT1lO3RoaXMucGRmTWFuYWdlcj10O3RoaXMuZW50cmllcz1bXTt0aGlzLl94cmVmU3Rtcz1uZXcgU2V0O3RoaXMuX2NhY2hlTWFwPW5ldyBNYXA7dGhpcy5fcGVuZGluZ1JlZnM9bmV3IFJlZlNldDt0aGlzLl9uZXdQZXJzaXN0ZW50UmVmTnVtPW51bGw7dGhpcy5fbmV3VGVtcG9yYXJ5UmVmTnVtPW51bGw7dGhpcy5fcGVyc2lzdGVudFJlZnNDYWNoZT1udWxsfWdldE5ld1BlcnNpc3RlbnRSZWYoZSl7bnVsbD09PXRoaXMuX25ld1BlcnNpc3RlbnRSZWZOdW0mJih0aGlzLl9uZXdQZXJzaXN0ZW50UmVmTnVtPXRoaXMuZW50cmllcy5sZW5ndGh8fDEpO2NvbnN0IHQ9dGhpcy5fbmV3UGVyc2lzdGVudFJlZk51bSsrO3RoaXMuX2NhY2hlTWFwLnNldCh0LGUpO3JldHVybiBSZWYuZ2V0KHQsMCl9Z2V0TmV3VGVtcG9yYXJ5UmVmKCl7aWYobnVsbD09PXRoaXMuX25ld1RlbXBvcmFyeVJlZk51bSl7dGhpcy5fbmV3VGVtcG9yYXJ5UmVmTnVtPXRoaXMuZW50cmllcy5sZW5ndGh8fDE7aWYodGhpcy5fbmV3UGVyc2lzdGVudFJlZk51bSl7dGhpcy5fcGVyc2lzdGVudFJlZnNDYWNoZT1uZXcgTWFwO2ZvcihsZXQgZT10aGlzLl9uZXdUZW1wb3JhcnlSZWZOdW07ZTx0aGlzLl9uZXdQZXJzaXN0ZW50UmVmTnVtO2UrKyl7dGhpcy5fcGVyc2lzdGVudFJlZnNDYWNoZS5zZXQoZSx0aGlzLl9jYWNoZU1hcC5nZXQoZSkpO3RoaXMuX2NhY2hlTWFwLmRlbGV0ZShlKX19fXJldHVybiBSZWYuZ2V0KHRoaXMuX25ld1RlbXBvcmFyeVJlZk51bSsrLDApfXJlc2V0TmV3VGVtcG9yYXJ5UmVmKCl7dGhpcy5fbmV3VGVtcG9yYXJ5UmVmTnVtPW51bGw7aWYodGhpcy5fcGVyc2lzdGVudFJlZnNDYWNoZSlmb3IoY29uc3RbZSx0XW9mIHRoaXMuX3BlcnNpc3RlbnRSZWZzQ2FjaGUpdGhpcy5fY2FjaGVNYXAuc2V0KGUsdCk7dGhpcy5fcGVyc2lzdGVudFJlZnNDYWNoZT1udWxsfXNldFN0YXJ0WFJlZihlKXt0aGlzLnN0YXJ0WFJlZlF1ZXVlPVtlXX1wYXJzZShlPSExKXtsZXQgdCxpLGE7aWYoZSl7d2FybigiSW5kZXhpbmcgYWxsIFBERiBvYmplY3RzIik7dD10aGlzLmluZGV4T2JqZWN0cygpfWVsc2UgdD10aGlzLnJlYWRYUmVmKCk7dC5hc3NpZ25YcmVmKHRoaXMpO3RoaXMudHJhaWxlcj10O3RyeXtpPXQuZ2V0KCJFbmNyeXB0Iil9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7d2FybihgWFJlZi5wYXJzZSAtIEludmFsaWQgIkVuY3J5cHQiIHJlZmVyZW5jZTogIiR7ZX0iLmApfWlmKGkgaW5zdGFuY2VvZiBEaWN0KXtjb25zdCBlPXQuZ2V0KCJJRCIpLGE9ZT8ubGVuZ3RoP2VbMF06IiI7aS5zdXBwcmVzc0VuY3J5cHRpb249ITA7dGhpcy5lbmNyeXB0PW5ldyBDaXBoZXJUcmFuc2Zvcm1GYWN0b3J5KGksYSx0aGlzLnBkZk1hbmFnZXIucGFzc3dvcmQpfXRyeXthPXQuZ2V0KCJSb290Iil9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7d2FybihgWFJlZi5wYXJzZSAtIEludmFsaWQgIlJvb3QiIHJlZmVyZW5jZTogIiR7ZX0iLmApfWlmKGEgaW5zdGFuY2VvZiBEaWN0KXRyeXtpZihhLmdldCgiUGFnZXMiKWluc3RhbmNlb2YgRGljdCl7dGhpcy5yb290PWE7cmV0dXJufX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTt3YXJuKGBYUmVmLnBhcnNlIC0gSW52YWxpZCAiUGFnZXMiIHJlZmVyZW5jZTogIiR7ZX0iLmApfWlmKCFlKXRocm93IG5ldyBYUmVmUGFyc2VFeGNlcHRpb247dGhyb3cgbmV3IEludmFsaWRQREZFeGNlcHRpb24oIkludmFsaWQgUm9vdCByZWZlcmVuY2UuIil9cHJvY2Vzc1hSZWZUYWJsZShlKXsidGFibGVTdGF0ZSJpbiB0aGlzfHwodGhpcy50YWJsZVN0YXRlPXtlbnRyeU51bTowLHN0cmVhbVBvczplLmxleGVyLnN0cmVhbS5wb3MscGFyc2VyQnVmMTplLmJ1ZjEscGFyc2VyQnVmMjplLmJ1ZjJ9KTtpZighaXNDbWQodGhpcy5yZWFkWFJlZlRhYmxlKGUpLCJ0cmFpbGVyIikpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgdGFibGU6IGNvdWxkIG5vdCBmaW5kIHRyYWlsZXIgZGljdGlvbmFyeSIpO2xldCB0PWUuZ2V0T2JqKCk7dCBpbnN0YW5jZW9mIERpY3R8fCF0LmRpY3R8fCh0PXQuZGljdCk7aWYoISh0IGluc3RhbmNlb2YgRGljdCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgdGFibGU6IGNvdWxkIG5vdCBwYXJzZSB0cmFpbGVyIGRpY3Rpb25hcnkiKTtkZWxldGUgdGhpcy50YWJsZVN0YXRlO3JldHVybiB0fXJlYWRYUmVmVGFibGUoZSl7Y29uc3QgdD1lLmxleGVyLnN0cmVhbSxpPXRoaXMudGFibGVTdGF0ZTt0LnBvcz1pLnN0cmVhbVBvcztlLmJ1ZjE9aS5wYXJzZXJCdWYxO2UuYnVmMj1pLnBhcnNlckJ1ZjI7bGV0IGE7Zm9yKDs7KXtpZighKCJmaXJzdEVudHJ5TnVtImluIGkpfHwhKCJlbnRyeUNvdW50ImluIGkpKXtpZihpc0NtZChhPWUuZ2V0T2JqKCksInRyYWlsZXIiKSlicmVhaztpLmZpcnN0RW50cnlOdW09YTtpLmVudHJ5Q291bnQ9ZS5nZXRPYmooKX1sZXQgcz1pLmZpcnN0RW50cnlOdW07Y29uc3Qgcj1pLmVudHJ5Q291bnQ7aWYoIU51bWJlci5pc0ludGVnZXIocyl8fCFOdW1iZXIuaXNJbnRlZ2VyKHIpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBYUmVmIHRhYmxlOiB3cm9uZyB0eXBlcyBpbiBzdWJzZWN0aW9uIGhlYWRlciIpO2ZvcihsZXQgYT1pLmVudHJ5TnVtO2E8cjthKyspe2kuc3RyZWFtUG9zPXQucG9zO2kuZW50cnlOdW09YTtpLnBhcnNlckJ1ZjE9ZS5idWYxO2kucGFyc2VyQnVmMj1lLmJ1ZjI7Y29uc3Qgbj17fTtuLm9mZnNldD1lLmdldE9iaigpO24uZ2VuPWUuZ2V0T2JqKCk7Y29uc3Qgbz1lLmdldE9iaigpO2lmKG8gaW5zdGFuY2VvZiBDbWQpc3dpdGNoKG8uY21kKXtjYXNlImYiOm4uZnJlZT0hMDticmVhaztjYXNlIm4iOm4udW5jb21wcmVzc2VkPSEwfWlmKCFOdW1iZXIuaXNJbnRlZ2VyKG4ub2Zmc2V0KXx8IU51bWJlci5pc0ludGVnZXIobi5nZW4pfHwhbi5mcmVlJiYhbi51bmNvbXByZXNzZWQpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbnZhbGlkIGVudHJ5IGluIFhSZWYgc3Vic2VjdGlvbjogJHtzfSwgJHtyfWApOzA9PT1hJiZuLmZyZWUmJjE9PT1zJiYocz0wKTt0aGlzLmVudHJpZXNbYStzXXx8KHRoaXMuZW50cmllc1thK3NdPW4pfWkuZW50cnlOdW09MDtpLnN0cmVhbVBvcz10LnBvcztpLnBhcnNlckJ1ZjE9ZS5idWYxO2kucGFyc2VyQnVmMj1lLmJ1ZjI7ZGVsZXRlIGkuZmlyc3RFbnRyeU51bTtkZWxldGUgaS5lbnRyeUNvdW50fWlmKHRoaXMuZW50cmllc1swXSYmIXRoaXMuZW50cmllc1swXS5mcmVlKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBYUmVmIHRhYmxlOiB1bmV4cGVjdGVkIGZpcnN0IG9iamVjdCIpO3JldHVybiBhfXByb2Nlc3NYUmVmU3RyZWFtKGUpe2lmKCEoInN0cmVhbVN0YXRlImluIHRoaXMpKXtjb25zdCB0PWUuZGljdCxpPXQuZ2V0KCJXIik7bGV0IGE9dC5nZXQoIkluZGV4Iik7YXx8KGE9WzAsdC5nZXQoIlNpemUiKV0pO3RoaXMuc3RyZWFtU3RhdGU9e2VudHJ5UmFuZ2VzOmEsYnl0ZVdpZHRoczppLGVudHJ5TnVtOjAsc3RyZWFtUG9zOmUucG9zfX10aGlzLnJlYWRYUmVmU3RyZWFtKGUpO2RlbGV0ZSB0aGlzLnN0cmVhbVN0YXRlO3JldHVybiBlLmRpY3R9cmVhZFhSZWZTdHJlYW0oZSl7Y29uc3QgdD10aGlzLnN0cmVhbVN0YXRlO2UucG9zPXQuc3RyZWFtUG9zO2NvbnN0W2ksYSxzXT10LmJ5dGVXaWR0aHMscj10LmVudHJ5UmFuZ2VzO2Zvcig7ci5sZW5ndGg+MDspe2NvbnN0W24sb109cjtpZighTnVtYmVyLmlzSW50ZWdlcihuKXx8IU51bWJlci5pc0ludGVnZXIobykpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbnZhbGlkIFhSZWYgcmFuZ2UgZmllbGRzOiAke259LCAke299YCk7aWYoIU51bWJlci5pc0ludGVnZXIoaSl8fCFOdW1iZXIuaXNJbnRlZ2VyKGEpfHwhTnVtYmVyLmlzSW50ZWdlcihzKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEludmFsaWQgWFJlZiBlbnRyeSBmaWVsZHMgbGVuZ3RoOiAke259LCAke299YCk7Zm9yKGxldCByPXQuZW50cnlOdW07cjxvOysrcil7dC5lbnRyeU51bT1yO3Quc3RyZWFtUG9zPWUucG9zO2xldCBvPTAsZz0wLGM9MDtmb3IobGV0IHQ9MDt0PGk7Kyt0KXtjb25zdCB0PWUuZ2V0Qnl0ZSgpO2lmKC0xPT09dCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgWFJlZiBieXRlV2lkdGhzICd0eXBlJy4iKTtvPW88PDh8dH0wPT09aSYmKG89MSk7Zm9yKGxldCB0PTA7dDxhOysrdCl7Y29uc3QgdD1lLmdldEJ5dGUoKTtpZigtMT09PXQpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgYnl0ZVdpZHRocyAnb2Zmc2V0Jy4iKTtnPWc8PDh8dH1mb3IobGV0IHQ9MDt0PHM7Kyt0KXtjb25zdCB0PWUuZ2V0Qnl0ZSgpO2lmKC0xPT09dCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgWFJlZiBieXRlV2lkdGhzICdnZW5lcmF0aW9uJy4iKTtjPWM8PDh8dH1jb25zdCBDPXt9O0Mub2Zmc2V0PWc7Qy5nZW49Yztzd2l0Y2gobyl7Y2FzZSAwOkMuZnJlZT0hMDticmVhaztjYXNlIDE6Qy51bmNvbXByZXNzZWQ9ITA7YnJlYWs7Y2FzZSAyOmJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbnZhbGlkIFhSZWYgZW50cnkgdHlwZTogJHtvfWApfXRoaXMuZW50cmllc1tuK3JdfHwodGhpcy5lbnRyaWVzW24rcl09Qyl9dC5lbnRyeU51bT0wO3Quc3RyZWFtUG9zPWUucG9zO3Iuc3BsaWNlKDAsMil9fWluZGV4T2JqZWN0cygpe2Z1bmN0aW9uIHJlYWRUb2tlbihlLHQpe2xldCBpPSIiLGE9ZVt0XTtmb3IoOzEwIT09YSYmMTMhPT1hJiY2MCE9PWEmJiEoKyt0Pj1lLmxlbmd0aCk7KXtpKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGEpO2E9ZVt0XX1yZXR1cm4gaX1mdW5jdGlvbiBza2lwVW50aWwoZSx0LGkpe2NvbnN0IGE9aS5sZW5ndGgscz1lLmxlbmd0aDtsZXQgcj0wO2Zvcig7dDxzOyl7bGV0IHM9MDtmb3IoO3M8YSYmZVt0K3NdPT09aVtzXTspKytzO2lmKHM+PWEpYnJlYWs7dCsrO3IrK31yZXR1cm4gcn1jb25zdCBlPS9cYihlbmRvYmp8XGQrXHMrXGQrXHMrb2JqfHhyZWZ8dHJhaWxlclxzKjw8KVxiL2csdD0vXGIoc3RhcnR4cmVmfFxkK1xzK1xkK1xzK29iailcYi9nLGk9L14oXGQrKVxzKyhcZCspXHMrb2JqXGIvLGE9bmV3IFVpbnQ4QXJyYXkoWzExNiwxMTQsOTcsMTA1LDEwOCwxMDEsMTE0XSkscz1uZXcgVWludDhBcnJheShbMTE1LDExNiw5NywxMTQsMTE2LDEyMCwxMTQsMTAxLDEwMl0pLHI9bmV3IFVpbnQ4QXJyYXkoWzQ3LDg4LDgyLDEwMSwxMDJdKTt0aGlzLmVudHJpZXMubGVuZ3RoPTA7dGhpcy5fY2FjaGVNYXAuY2xlYXIoKTtjb25zdCBuPXRoaXMuc3RyZWFtO24ucG9zPTA7Y29uc3Qgbz1uLmdldEJ5dGVzKCksZz1ieXRlc1RvU3RyaW5nKG8pLGM9by5sZW5ndGg7bGV0IEM9bi5zdGFydDtjb25zdCBoPVtdLGw9W107Zm9yKDtDPGM7KXtsZXQgUT1vW0NdO2lmKDk9PT1RfHwxMD09PVF8fDEzPT09UXx8MzI9PT1RKXsrK0M7Y29udGludWV9aWYoMzc9PT1RKXtkb3srK0M7aWYoQz49YylicmVhaztRPW9bQ119d2hpbGUoMTAhPT1RJiYxMyE9PVEpO2NvbnRpbnVlfWNvbnN0IEU9cmVhZFRva2VuKG8sQyk7bGV0IHU7aWYoRS5zdGFydHNXaXRoKCJ4cmVmIikmJig0PT09RS5sZW5ndGh8fC9ccy8udGVzdChFWzRdKSkpe0MrPXNraXBVbnRpbChvLEMsYSk7aC5wdXNoKEMpO0MrPXNraXBVbnRpbChvLEMscyl9ZWxzZSBpZih1PWkuZXhlYyhFKSl7Y29uc3QgdD0wfHVbMV0saT0wfHVbMl0sYT1DK0UubGVuZ3RoO2xldCBzLGg9ITE7aWYodGhpcy5lbnRyaWVzW3RdKXtpZih0aGlzLmVudHJpZXNbdF0uZ2VuPT09aSl0cnl7bmV3IFBhcnNlcih7bGV4ZXI6bmV3IExleGVyKG4ubWFrZVN1YlN0cmVhbShhKSl9KS5nZXRPYmooKTtoPSEwfWNhdGNoKGUpe2UgaW5zdGFuY2VvZiBQYXJzZXJFT0ZFeGNlcHRpb24/d2FybihgaW5kZXhPYmplY3RzIC0tIGNoZWNraW5nIG9iamVjdCAoJHtFfSk6ICIke2V9Ii5gKTpoPSEwfX1lbHNlIGg9ITA7aCYmKHRoaXMuZW50cmllc1t0XT17b2Zmc2V0OkMtbi5zdGFydCxnZW46aSx1bmNvbXByZXNzZWQ6ITB9KTtlLmxhc3RJbmRleD1hO2NvbnN0IFE9ZS5leGVjKGcpO2lmKFEpe3M9ZS5sYXN0SW5kZXgrMS1DO2lmKCJlbmRvYmoiIT09UVsxXSl7d2FybihgaW5kZXhPYmplY3RzOiBGb3VuZCAiJHtRWzFdfSIgaW5zaWRlIG9mIGFub3RoZXIgIm9iaiIsIGNhdXNlZCBieSBtaXNzaW5nICJlbmRvYmoiIC0tIHRyeWluZyB0byByZWNvdmVyLmApO3MtPVFbMV0ubGVuZ3RoKzF9fWVsc2Ugcz1jLUM7Y29uc3QgZD1vLnN1YmFycmF5KEMsQytzKSxmPXNraXBVbnRpbChkLDAscik7aWYoZjxzJiZkW2YrNV08NjQpe2wucHVzaChDLW4uc3RhcnQpO3RoaXMuX3hyZWZTdG1zLmFkZChDLW4uc3RhcnQpfUMrPXN9ZWxzZSBpZihFLnN0YXJ0c1dpdGgoInRyYWlsZXIiKSYmKDc9PT1FLmxlbmd0aHx8L1xzLy50ZXN0KEVbN10pKSl7aC5wdXNoKEMpO2NvbnN0IGU9QytFLmxlbmd0aDtsZXQgaTt0Lmxhc3RJbmRleD1lO2NvbnN0IGE9dC5leGVjKGcpO2lmKGEpe2k9dC5sYXN0SW5kZXgrMS1DO2lmKCJzdGFydHhyZWYiIT09YVsxXSl7d2FybihgaW5kZXhPYmplY3RzOiBGb3VuZCAiJHthWzFdfSIgYWZ0ZXIgInRyYWlsZXIiLCBjYXVzZWQgYnkgbWlzc2luZyAic3RhcnR4cmVmIiAtLSB0cnlpbmcgdG8gcmVjb3Zlci5gKTtpLT1hWzFdLmxlbmd0aCsxfX1lbHNlIGk9Yy1DO0MrPWl9ZWxzZSBDKz1FLmxlbmd0aCsxfWZvcihjb25zdCBlIG9mIGwpe3RoaXMuc3RhcnRYUmVmUXVldWUucHVzaChlKTt0aGlzLnJlYWRYUmVmKCEwKX1jb25zdCBRPVtdO2xldCBFLHUsZD0hMTtmb3IoY29uc3QgZSBvZiBoKXtuLnBvcz1lO2NvbnN0IHQ9bmV3IFBhcnNlcih7bGV4ZXI6bmV3IExleGVyKG4pLHhyZWY6dGhpcyxhbGxvd1N0cmVhbXM6ITAscmVjb3ZlcnlNb2RlOiEwfSk7aWYoIWlzQ21kKHQuZ2V0T2JqKCksInRyYWlsZXIiKSljb250aW51ZTtjb25zdCBpPXQuZ2V0T2JqKCk7aWYoaSBpbnN0YW5jZW9mIERpY3Qpe1EucHVzaChpKTtpLmhhcygiRW5jcnlwdCIpJiYoZD0hMCl9fWZvcihjb25zdCBlIG9mWy4uLlEsImdlbkZhbGxiYWNrIiwuLi5RXSl7aWYoImdlbkZhbGxiYWNrIj09PWUpe2lmKCF1KWJyZWFrO3RoaXMuX2dlbmVyYXRpb25GYWxsYmFjaz0hMDtjb250aW51ZX1sZXQgdD0hMTt0cnl7Y29uc3QgaT1lLmdldCgiUm9vdCIpO2lmKCEoaSBpbnN0YW5jZW9mIERpY3QpKWNvbnRpbnVlO2NvbnN0IGE9aS5nZXQoIlBhZ2VzIik7aWYoIShhIGluc3RhbmNlb2YgRGljdCkpY29udGludWU7Y29uc3Qgcz1hLmdldCgiQ291bnQiKTtOdW1iZXIuaXNJbnRlZ2VyKHMpJiYodD0hMCl9Y2F0Y2goZSl7dT1lO2NvbnRpbnVlfWlmKHQmJighZHx8ZS5oYXMoIkVuY3J5cHQiKSkmJmUuaGFzKCJJRCIpKXJldHVybiBlO0U9ZX1pZihFKXJldHVybiBFO2lmKHRoaXMudG9wRGljdClyZXR1cm4gdGhpcy50b3BEaWN0O3Rocm93IG5ldyBJbnZhbGlkUERGRXhjZXB0aW9uKCJJbnZhbGlkIFBERiBzdHJ1Y3R1cmUuIil9cmVhZFhSZWYoZT0hMSl7Y29uc3QgdD10aGlzLnN0cmVhbSxpPW5ldyBTZXQ7Zm9yKDt0aGlzLnN0YXJ0WFJlZlF1ZXVlLmxlbmd0aDspe3RyeXtjb25zdCBlPXRoaXMuc3RhcnRYUmVmUXVldWVbMF07aWYoaS5oYXMoZSkpe3dhcm4oInJlYWRYUmVmIC0gc2tpcHBpbmcgWFJlZiB0YWJsZSBzaW5jZSBpdCB3YXMgYWxyZWFkeSBwYXJzZWQuIik7dGhpcy5zdGFydFhSZWZRdWV1ZS5zaGlmdCgpO2NvbnRpbnVlfWkuYWRkKGUpO3QucG9zPWUrdC5zdGFydDtjb25zdCBhPW5ldyBQYXJzZXIoe2xleGVyOm5ldyBMZXhlcih0KSx4cmVmOnRoaXMsYWxsb3dTdHJlYW1zOiEwfSk7bGV0IHMscj1hLmdldE9iaigpO2lmKGlzQ21kKHIsInhyZWYiKSl7cz10aGlzLnByb2Nlc3NYUmVmVGFibGUoYSk7dGhpcy50b3BEaWN0fHwodGhpcy50b3BEaWN0PXMpO3I9cy5nZXQoIlhSZWZTdG0iKTtpZihOdW1iZXIuaXNJbnRlZ2VyKHIpJiYhdGhpcy5feHJlZlN0bXMuaGFzKHIpKXt0aGlzLl94cmVmU3Rtcy5hZGQocik7dGhpcy5zdGFydFhSZWZRdWV1ZS5wdXNoKHIpO3RoaXMuI0g/Pz1yfX1lbHNle2lmKCFOdW1iZXIuaXNJbnRlZ2VyKHIpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBYUmVmIHN0cmVhbSBoZWFkZXIiKTtpZighKE51bWJlci5pc0ludGVnZXIoYS5nZXRPYmooKSkmJmlzQ21kKGEuZ2V0T2JqKCksIm9iaiIpJiYocj1hLmdldE9iaigpKWluc3RhbmNlb2YgQmFzZVN0cmVhbSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgc3RyZWFtIik7cz10aGlzLnByb2Nlc3NYUmVmU3RyZWFtKHIpO3RoaXMudG9wRGljdHx8KHRoaXMudG9wRGljdD1zKTtpZighcyl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkZhaWxlZCB0byByZWFkIFhSZWYgc3RyZWFtIil9cj1zLmdldCgiUHJldiIpO051bWJlci5pc0ludGVnZXIocik/dGhpcy5zdGFydFhSZWZRdWV1ZS5wdXNoKHIpOnIgaW5zdGFuY2VvZiBSZWYmJnRoaXMuc3RhcnRYUmVmUXVldWUucHVzaChyLm51bSl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7aW5mbygiKHdoaWxlIHJlYWRpbmcgWFJlZik6ICIrZSl9dGhpcy5zdGFydFhSZWZRdWV1ZS5zaGlmdCgpfWlmKHRoaXMudG9wRGljdClyZXR1cm4gdGhpcy50b3BEaWN0O2lmKCFlKXRocm93IG5ldyBYUmVmUGFyc2VFeGNlcHRpb259Z2V0IGxhc3RYUmVmU3RyZWFtUG9zKCl7cmV0dXJuIHRoaXMuI0g/Pyh0aGlzLl94cmVmU3Rtcy5zaXplPjA/TWF0aC5tYXgoLi4udGhpcy5feHJlZlN0bXMpOm51bGwpfWdldEVudHJ5KGUpe2NvbnN0IHQ9dGhpcy5lbnRyaWVzW2VdO3JldHVybiB0JiYhdC5mcmVlJiZ0Lm9mZnNldD90Om51bGx9ZmV0Y2hJZlJlZihlLHQ9ITEpe3JldHVybiBlIGluc3RhbmNlb2YgUmVmP3RoaXMuZmV0Y2goZSx0KTplfWZldGNoKGUsdD0hMSl7aWYoIShlIGluc3RhbmNlb2YgUmVmKSl0aHJvdyBuZXcgRXJyb3IoInJlZiBvYmplY3QgaXMgbm90IGEgcmVmZXJlbmNlIik7Y29uc3QgaT1lLm51bSxhPXRoaXMuX2NhY2hlTWFwLmdldChpKTtpZih2b2lkIDAhPT1hKXthIGluc3RhbmNlb2YgRGljdCYmIWEub2JqSWQmJihhLm9iaklkPWUudG9TdHJpbmcoKSk7cmV0dXJuIGF9bGV0IHM9dGhpcy5nZXRFbnRyeShpKTtpZihudWxsPT09cyl7dGhpcy5fY2FjaGVNYXAuc2V0KGkscyk7cmV0dXJuIHN9aWYodGhpcy5fcGVuZGluZ1JlZnMuaGFzKGUpKXt0aGlzLl9wZW5kaW5nUmVmcy5yZW1vdmUoZSk7d2FybihgSWdub3JpbmcgY2lyY3VsYXIgcmVmZXJlbmNlOiAke2V9LmApO3JldHVybiBmdH10aGlzLl9wZW5kaW5nUmVmcy5wdXQoZSk7dHJ5e3M9cy51bmNvbXByZXNzZWQ/dGhpcy5mZXRjaFVuY29tcHJlc3NlZChlLHMsdCk6dGhpcy5mZXRjaENvbXByZXNzZWQoZSxzLHQpO3RoaXMuX3BlbmRpbmdSZWZzLnJlbW92ZShlKX1jYXRjaCh0KXt0aGlzLl9wZW5kaW5nUmVmcy5yZW1vdmUoZSk7dGhyb3cgdH1zIGluc3RhbmNlb2YgRGljdD9zLm9iaklkPWUudG9TdHJpbmcoKTpzIGluc3RhbmNlb2YgQmFzZVN0cmVhbSYmKHMuZGljdC5vYmpJZD1lLnRvU3RyaW5nKCkpO3JldHVybiBzfWZldGNoVW5jb21wcmVzc2VkKGUsdCxpPSExKXtjb25zdCBhPWUuZ2VuO2xldCBzPWUubnVtO2lmKHQuZ2VuIT09YSl7Y29uc3Qgcj1gSW5jb25zaXN0ZW50IGdlbmVyYXRpb24gaW4gWFJlZjogJHtlfWA7aWYodGhpcy5fZ2VuZXJhdGlvbkZhbGxiYWNrJiZ0LmdlbjxhKXt3YXJuKHIpO3JldHVybiB0aGlzLmZldGNoVW5jb21wcmVzc2VkKFJlZi5nZXQocyx0LmdlbiksdCxpKX10aHJvdyBuZXcgWFJlZkVudHJ5RXhjZXB0aW9uKHIpfWNvbnN0IHI9dGhpcy5zdHJlYW0ubWFrZVN1YlN0cmVhbSh0Lm9mZnNldCt0aGlzLnN0cmVhbS5zdGFydCksbj1uZXcgUGFyc2VyKHtsZXhlcjpuZXcgTGV4ZXIocikseHJlZjp0aGlzLGFsbG93U3RyZWFtczohMH0pLG89bi5nZXRPYmooKSxnPW4uZ2V0T2JqKCksYz1uLmdldE9iaigpO2lmKG8hPT1zfHxnIT09YXx8IShjIGluc3RhbmNlb2YgQ21kKSl0aHJvdyBuZXcgWFJlZkVudHJ5RXhjZXB0aW9uKGBCYWQgKHVuY29tcHJlc3NlZCkgWFJlZiBlbnRyeTogJHtlfWApO2lmKCJvYmoiIT09Yy5jbWQpe2lmKGMuY21kLnN0YXJ0c1dpdGgoIm9iaiIpKXtzPXBhcnNlSW50KGMuY21kLnN1YnN0cmluZygzKSwxMCk7aWYoIU51bWJlci5pc05hTihzKSlyZXR1cm4gc310aHJvdyBuZXcgWFJlZkVudHJ5RXhjZXB0aW9uKGBCYWQgKHVuY29tcHJlc3NlZCkgWFJlZiBlbnRyeTogJHtlfWApfSh0PXRoaXMuZW5jcnlwdCYmIWk/bi5nZXRPYmoodGhpcy5lbmNyeXB0LmNyZWF0ZUNpcGhlclRyYW5zZm9ybShzLGEpKTpuLmdldE9iaigpKWluc3RhbmNlb2YgQmFzZVN0cmVhbXx8dGhpcy5fY2FjaGVNYXAuc2V0KHMsdCk7cmV0dXJuIHR9ZmV0Y2hDb21wcmVzc2VkKGUsdCxpPSExKXtjb25zdCBhPXQub2Zmc2V0LHM9dGhpcy5mZXRjaChSZWYuZ2V0KGEsMCkpO2lmKCEocyBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pKXRocm93IG5ldyBGb3JtYXRFcnJvcigiYmFkIE9ialN0bSBzdHJlYW0iKTtjb25zdCByPXMuZGljdC5nZXQoIkZpcnN0Iiksbj1zLmRpY3QuZ2V0KCJOIik7aWYoIU51bWJlci5pc0ludGVnZXIocil8fCFOdW1iZXIuaXNJbnRlZ2VyKG4pKXRocm93IG5ldyBGb3JtYXRFcnJvcigiaW52YWxpZCBmaXJzdCBhbmQgbiBwYXJhbWV0ZXJzIGZvciBPYmpTdG0gc3RyZWFtIik7bGV0IG89bmV3IFBhcnNlcih7bGV4ZXI6bmV3IExleGVyKHMpLHhyZWY6dGhpcyxhbGxvd1N0cmVhbXM6ITB9KTtjb25zdCBnPW5ldyBBcnJheShuKSxjPW5ldyBBcnJheShuKTtmb3IobGV0IGU9MDtlPG47KytlKXtjb25zdCB0PW8uZ2V0T2JqKCk7aWYoIU51bWJlci5pc0ludGVnZXIodCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBpbnZhbGlkIG9iamVjdCBudW1iZXIgaW4gdGhlIE9ialN0bSBzdHJlYW06ICR7dH1gKTtjb25zdCBpPW8uZ2V0T2JqKCk7aWYoIU51bWJlci5pc0ludGVnZXIoaSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBpbnZhbGlkIG9iamVjdCBvZmZzZXQgaW4gdGhlIE9ialN0bSBzdHJlYW06ICR7aX1gKTtnW2VdPXQ7Y1tlXT1pfWNvbnN0IEM9KHMuc3RhcnR8fDApK3IsaD1uZXcgQXJyYXkobik7Zm9yKGxldCBlPTA7ZTxuOysrZSl7Y29uc3QgdD1lPG4tMT9jW2UrMV0tY1tlXTp2b2lkIDA7aWYodDwwKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBvZmZzZXQgaW4gdGhlIE9ialN0bSBzdHJlYW0uIik7bz1uZXcgUGFyc2VyKHtsZXhlcjpuZXcgTGV4ZXIocy5tYWtlU3ViU3RyZWFtKEMrY1tlXSx0LHMuZGljdCkpLHhyZWY6dGhpcyxhbGxvd1N0cmVhbXM6ITB9KTtjb25zdCBpPW8uZ2V0T2JqKCk7aFtlXT1pO2lmKGkgaW5zdGFuY2VvZiBCYXNlU3RyZWFtKWNvbnRpbnVlO2NvbnN0IHI9Z1tlXSxsPXRoaXMuZW50cmllc1tyXTtsJiZsLm9mZnNldD09PWEmJmwuZ2VuPT09ZSYmdGhpcy5fY2FjaGVNYXAuc2V0KHIsaSl9aWYodm9pZCAwPT09KHQ9aFt0Lmdlbl0pKXRocm93IG5ldyBYUmVmRW50cnlFeGNlcHRpb24oYEJhZCAoY29tcHJlc3NlZCkgWFJlZiBlbnRyeTogJHtlfWApO3JldHVybiB0fWFzeW5jIGZldGNoSWZSZWZBc3luYyhlLHQpe3JldHVybiBlIGluc3RhbmNlb2YgUmVmP3RoaXMuZmV0Y2hBc3luYyhlLHQpOmV9YXN5bmMgZmV0Y2hBc3luYyhlLHQpe3RyeXtyZXR1cm4gdGhpcy5mZXRjaChlLHQpfWNhdGNoKGkpe2lmKCEoaSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKSl0aHJvdyBpO2F3YWl0IHRoaXMucGRmTWFuYWdlci5yZXF1ZXN0UmFuZ2UoaS5iZWdpbixpLmVuZCk7cmV0dXJuIHRoaXMuZmV0Y2hBc3luYyhlLHQpfX1nZXRDYXRhbG9nT2JqKCl7cmV0dXJuIHRoaXMucm9vdH19Y29uc3Qgc289WzAsMCw2MTIsNzkyXTtjbGFzcyBQYWdle2NvbnN0cnVjdG9yKHtwZGZNYW5hZ2VyOmUseHJlZjp0LHBhZ2VJbmRleDppLHBhZ2VEaWN0OmEscmVmOnMsZ2xvYmFsSWRGYWN0b3J5OnIsZm9udENhY2hlOm4sYnVpbHRJbkNNYXBDYWNoZTpvLHN0YW5kYXJkRm9udERhdGFDYWNoZTpnLGdsb2JhbEltYWdlQ2FjaGU6YyxzeXN0ZW1Gb250Q2FjaGU6Qyxub25CbGVuZE1vZGVzU2V0OmgseGZhRmFjdG9yeTpsfSl7dGhpcy5wZGZNYW5hZ2VyPWU7dGhpcy5wYWdlSW5kZXg9aTt0aGlzLnBhZ2VEaWN0PWE7dGhpcy54cmVmPXQ7dGhpcy5yZWY9czt0aGlzLmZvbnRDYWNoZT1uO3RoaXMuYnVpbHRJbkNNYXBDYWNoZT1vO3RoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlPWc7dGhpcy5nbG9iYWxJbWFnZUNhY2hlPWM7dGhpcy5zeXN0ZW1Gb250Q2FjaGU9Qzt0aGlzLm5vbkJsZW5kTW9kZXNTZXQ9aDt0aGlzLmV2YWx1YXRvck9wdGlvbnM9ZS5ldmFsdWF0b3JPcHRpb25zO3RoaXMucmVzb3VyY2VzUHJvbWlzZT1udWxsO3RoaXMueGZhRmFjdG9yeT1sO2NvbnN0IFE9e29iajowfTt0aGlzLl9sb2NhbElkRmFjdG9yeT1jbGFzcyBleHRlbmRzIHJ7c3RhdGljIGNyZWF0ZU9iaklkKCl7cmV0dXJuYHAke2l9XyR7KytRLm9ian1gfXN0YXRpYyBnZXRQYWdlT2JqSWQoKXtyZXR1cm5gcCR7cy50b1N0cmluZygpfWB9fX1fZ2V0SW5oZXJpdGFibGVQcm9wZXJ0eShlLHQ9ITEpe2NvbnN0IGk9Z2V0SW5oZXJpdGFibGVQcm9wZXJ0eSh7ZGljdDp0aGlzLnBhZ2VEaWN0LGtleTplLGdldEFycmF5OnQsc3RvcFdoZW5Gb3VuZDohMX0pO3JldHVybiBBcnJheS5pc0FycmF5KGkpPzEhPT1pLmxlbmd0aCYmaVswXWluc3RhbmNlb2YgRGljdD9EaWN0Lm1lcmdlKHt4cmVmOnRoaXMueHJlZixkaWN0QXJyYXk6aX0pOmlbMF06aX1nZXQgY29udGVudCgpe3JldHVybiB0aGlzLnBhZ2VEaWN0LmdldEFycmF5KCJDb250ZW50cyIpfWdldCByZXNvdXJjZXMoKXtjb25zdCBlPXRoaXMuX2dldEluaGVyaXRhYmxlUHJvcGVydHkoIlJlc291cmNlcyIpO3JldHVybiBzaGFkb3codGhpcywicmVzb3VyY2VzIixlIGluc3RhbmNlb2YgRGljdD9lOkRpY3QuZW1wdHkpfV9nZXRCb3VuZGluZ0JveChlKXtpZih0aGlzLnhmYURhdGEpcmV0dXJuIHRoaXMueGZhRGF0YS5iYm94O2xldCB0PXRoaXMuX2dldEluaGVyaXRhYmxlUHJvcGVydHkoZSwhMCk7aWYoQXJyYXkuaXNBcnJheSh0KSYmND09PXQubGVuZ3RoKXt0PVV0aWwubm9ybWFsaXplUmVjdCh0KTtpZih0WzJdLXRbMF0+MCYmdFszXS10WzFdPjApcmV0dXJuIHQ7d2FybihgRW1wdHksIG9yIGludmFsaWQsIC8ke2V9IGVudHJ5LmApfXJldHVybiBudWxsfWdldCBtZWRpYUJveCgpe3JldHVybiBzaGFkb3codGhpcywibWVkaWFCb3giLHRoaXMuX2dldEJvdW5kaW5nQm94KCJNZWRpYUJveCIpfHxzbyl9Z2V0IGNyb3BCb3goKXtyZXR1cm4gc2hhZG93KHRoaXMsImNyb3BCb3giLHRoaXMuX2dldEJvdW5kaW5nQm94KCJDcm9wQm94Iil8fHRoaXMubWVkaWFCb3gpfWdldCB1c2VyVW5pdCgpe2xldCBlPXRoaXMucGFnZURpY3QuZ2V0KCJVc2VyVW5pdCIpOygibnVtYmVyIiE9dHlwZW9mIGV8fGU8PTApJiYoZT0xKTtyZXR1cm4gc2hhZG93KHRoaXMsInVzZXJVbml0IixlKX1nZXQgdmlldygpe2NvbnN0e2Nyb3BCb3g6ZSxtZWRpYUJveDp0fT10aGlzO2lmKGUhPT10JiYhaXNBcnJheUVxdWFsKGUsdCkpe2NvbnN0IGk9VXRpbC5pbnRlcnNlY3QoZSx0KTtpZihpJiZpWzJdLWlbMF0+MCYmaVszXS1pWzFdPjApcmV0dXJuIHNoYWRvdyh0aGlzLCJ2aWV3IixpKTt3YXJuKCJFbXB0eSAvQ3JvcEJveCBhbmQgL01lZGlhQm94IGludGVyc2VjdGlvbi4iKX1yZXR1cm4gc2hhZG93KHRoaXMsInZpZXciLHQpfWdldCByb3RhdGUoKXtsZXQgZT10aGlzLl9nZXRJbmhlcml0YWJsZVByb3BlcnR5KCJSb3RhdGUiKXx8MDtlJTkwIT0wP2U9MDplPj0zNjA/ZSU9MzYwOmU8MCYmKGU9KGUlMzYwKzM2MCklMzYwKTtyZXR1cm4gc2hhZG93KHRoaXMsInJvdGF0ZSIsZSl9X29uU3ViU3RyZWFtRXJyb3IoZSx0KXtpZighdGhpcy5ldmFsdWF0b3JPcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlO3dhcm4oYGdldENvbnRlbnRTdHJlYW0gLSBpZ25vcmluZyBzdWItc3RyZWFtICgke3R9KTogIiR7ZX0iLmApfWdldENvbnRlbnRTdHJlYW0oKXtyZXR1cm4gdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZSh0aGlzLCJjb250ZW50IikudGhlbigoZT0+ZSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0/ZTpBcnJheS5pc0FycmF5KGUpP25ldyBTdHJlYW1zU2VxdWVuY2VTdHJlYW0oZSx0aGlzLl9vblN1YlN0cmVhbUVycm9yLmJpbmQodGhpcykpOm5ldyBOdWxsU3RyZWFtKSl9Z2V0IHhmYURhdGEoKXtyZXR1cm4gc2hhZG93KHRoaXMsInhmYURhdGEiLHRoaXMueGZhRmFjdG9yeT97YmJveDp0aGlzLnhmYUZhY3RvcnkuZ2V0Qm91bmRpbmdCb3godGhpcy5wYWdlSW5kZXgpfTpudWxsKX0jSihlLHQsaSl7Zm9yKGNvbnN0IGEgb2YgZSlpZihhLmlkKXtjb25zdCBlPVJlZi5mcm9tU3RyaW5nKGEuaWQpO2lmKCFlKXt3YXJuKGBBIG5vbi1saW5rZWQgYW5ub3RhdGlvbiBjYW5ub3QgYmUgbW9kaWZpZWQ6ICR7YS5pZH1gKTtjb250aW51ZX1pZihhLmRlbGV0ZWQpe3QucHV0KGUsZSk7Y29udGludWV9aT8ucHV0KGUpO2EucmVmPWU7ZGVsZXRlIGEuaWR9fWFzeW5jIHNhdmVOZXdBbm5vdGF0aW9ucyhlLHQsaSxhKXtpZih0aGlzLnhmYUZhY3RvcnkpdGhyb3cgbmV3IEVycm9yKCJYRkE6IENhbm5vdCBzYXZlIG5ldyBhbm5vdGF0aW9ucy4iKTtjb25zdCBzPW5ldyBQYXJ0aWFsRXZhbHVhdG9yKHt4cmVmOnRoaXMueHJlZixoYW5kbGVyOmUscGFnZUluZGV4OnRoaXMucGFnZUluZGV4LGlkRmFjdG9yeTp0aGlzLl9sb2NhbElkRmFjdG9yeSxmb250Q2FjaGU6dGhpcy5mb250Q2FjaGUsYnVpbHRJbkNNYXBDYWNoZTp0aGlzLmJ1aWx0SW5DTWFwQ2FjaGUsc3RhbmRhcmRGb250RGF0YUNhY2hlOnRoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlLGdsb2JhbEltYWdlQ2FjaGU6dGhpcy5nbG9iYWxJbWFnZUNhY2hlLHN5c3RlbUZvbnRDYWNoZTp0aGlzLnN5c3RlbUZvbnRDYWNoZSxvcHRpb25zOnRoaXMuZXZhbHVhdG9yT3B0aW9uc30pLHI9bmV3IFJlZlNldENhY2hlLG49bmV3IFJlZlNldDt0aGlzLiNKKGkscixuKTtjb25zdCBvPXRoaXMucGFnZURpY3QsZz10aGlzLmFubm90YXRpb25zLmZpbHRlcigoZT0+IShlIGluc3RhbmNlb2YgUmVmJiZyLmhhcyhlKSkpKSxjPWF3YWl0IEFubm90YXRpb25GYWN0b3J5LnNhdmVOZXdBbm5vdGF0aW9ucyhzLHQsaSxhKTtmb3IoY29uc3R7cmVmOmV9b2YgYy5hbm5vdGF0aW9ucyllIGluc3RhbmNlb2YgUmVmJiYhbi5oYXMoZSkmJmcucHVzaChlKTtjb25zdCBDPW8uZ2V0KCJBbm5vdHMiKTtvLnNldCgiQW5ub3RzIixnKTtjb25zdCBoPVtdO2F3YWl0IHdyaXRlT2JqZWN0KHRoaXMucmVmLG8saCx0aGlzLnhyZWYpO0MmJm8uc2V0KCJBbm5vdHMiLEMpO2NvbnN0IGw9Yy5kZXBlbmRlbmNpZXM7bC5wdXNoKHtyZWY6dGhpcy5yZWYsZGF0YTpoLmpvaW4oIiIpfSwuLi5jLmFubm90YXRpb25zKTtmb3IoY29uc3QgZSBvZiByKWwucHVzaCh7cmVmOmUsZGF0YTpudWxsfSk7cmV0dXJuIGx9c2F2ZShlLHQsaSl7Y29uc3QgYT1uZXcgUGFydGlhbEV2YWx1YXRvcih7eHJlZjp0aGlzLnhyZWYsaGFuZGxlcjplLHBhZ2VJbmRleDp0aGlzLnBhZ2VJbmRleCxpZEZhY3Rvcnk6dGhpcy5fbG9jYWxJZEZhY3RvcnksZm9udENhY2hlOnRoaXMuZm9udENhY2hlLGJ1aWx0SW5DTWFwQ2FjaGU6dGhpcy5idWlsdEluQ01hcENhY2hlLHN0YW5kYXJkRm9udERhdGFDYWNoZTp0aGlzLnN0YW5kYXJkRm9udERhdGFDYWNoZSxnbG9iYWxJbWFnZUNhY2hlOnRoaXMuZ2xvYmFsSW1hZ2VDYWNoZSxzeXN0ZW1Gb250Q2FjaGU6dGhpcy5zeXN0ZW1Gb250Q2FjaGUsb3B0aW9uczp0aGlzLmV2YWx1YXRvck9wdGlvbnN9KTtyZXR1cm4gdGhpcy5fcGFyc2VkQW5ub3RhdGlvbnMudGhlbigoZnVuY3Rpb24oZSl7Y29uc3Qgcz1bXTtmb3IoY29uc3QgciBvZiBlKXIubXVzdEJlUHJpbnRlZChpKSYmcy5wdXNoKHIuc2F2ZShhLHQsaSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3dhcm4oYHNhdmUgLSBpZ25vcmluZyBhbm5vdGF0aW9uIGRhdGEgZHVyaW5nICIke3QubmFtZX0iIHRhc2s6ICIke2V9Ii5gKTtyZXR1cm4gbnVsbH0pKSk7cmV0dXJuIFByb21pc2UuYWxsKHMpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBlLmZpbHRlcigoZT0+ISFlKSl9KSl9KSl9bG9hZFJlc291cmNlcyhlKXt0aGlzLnJlc291cmNlc1Byb21pc2V8fCh0aGlzLnJlc291cmNlc1Byb21pc2U9dGhpcy5wZGZNYW5hZ2VyLmVuc3VyZSh0aGlzLCJyZXNvdXJjZXMiKSk7cmV0dXJuIHRoaXMucmVzb3VyY2VzUHJvbWlzZS50aGVuKCgoKT0+bmV3IE9iamVjdExvYWRlcih0aGlzLnJlc291cmNlcyxlLHRoaXMueHJlZikubG9hZCgpKSl9Z2V0T3BlcmF0b3JMaXN0KHtoYW5kbGVyOmUsc2luazp0LHRhc2s6aSxpbnRlbnQ6YSxjYWNoZUtleTpzLGFubm90YXRpb25TdG9yYWdlOnI9bnVsbH0pe2NvbnN0IG49dGhpcy5nZXRDb250ZW50U3RyZWFtKCksQz10aGlzLmxvYWRSZXNvdXJjZXMoWyJDb2xvclNwYWNlIiwiRXh0R1N0YXRlIiwiRm9udCIsIlBhdHRlcm4iLCJQcm9wZXJ0aWVzIiwiU2hhZGluZyIsIlhPYmplY3QiXSksUT1uZXcgUGFydGlhbEV2YWx1YXRvcih7eHJlZjp0aGlzLnhyZWYsaGFuZGxlcjplLHBhZ2VJbmRleDp0aGlzLnBhZ2VJbmRleCxpZEZhY3Rvcnk6dGhpcy5fbG9jYWxJZEZhY3RvcnksZm9udENhY2hlOnRoaXMuZm9udENhY2hlLGJ1aWx0SW5DTWFwQ2FjaGU6dGhpcy5idWlsdEluQ01hcENhY2hlLHN0YW5kYXJkRm9udERhdGFDYWNoZTp0aGlzLnN0YW5kYXJkRm9udERhdGFDYWNoZSxnbG9iYWxJbWFnZUNhY2hlOnRoaXMuZ2xvYmFsSW1hZ2VDYWNoZSxzeXN0ZW1Gb250Q2FjaGU6dGhpcy5zeXN0ZW1Gb250Q2FjaGUsb3B0aW9uczp0aGlzLmV2YWx1YXRvck9wdGlvbnN9KSx1PXRoaXMueGZhRmFjdG9yeT9udWxsOmdldE5ld0Fubm90YXRpb25zTWFwKHIpO2xldCBkPW51bGwsZj1Qcm9taXNlLnJlc29sdmUobnVsbCk7aWYodSl7Y29uc3QgZT11LmdldCh0aGlzLnBhZ2VJbmRleCk7aWYoZSl7Y29uc3QgdD10aGlzLnBkZk1hbmFnZXIuZW5zdXJlRG9jKCJhbm5vdGF0aW9uR2xvYmFscyIpO2xldCBhO2NvbnN0IHM9bmV3IFNldDtmb3IoY29uc3R7Yml0bWFwSWQ6dCxiaXRtYXA6aX1vZiBlKSF0fHxpfHxzLmhhcyh0KXx8cy5hZGQodCk7Y29uc3R7aXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQ6bn09dGhpcy5ldmFsdWF0b3JPcHRpb25zO2lmKHMuc2l6ZT4wKXtjb25zdCB0PWUuc2xpY2UoKTtmb3IoY29uc3RbZSxpXW9mIHIpZS5zdGFydHNXaXRoKEUpJiZpLmJpdG1hcCYmcy5oYXMoaS5iaXRtYXBJZCkmJnQucHVzaChpKTthPUFubm90YXRpb25GYWN0b3J5LmdlbmVyYXRlSW1hZ2VzKHQsdGhpcy54cmVmLG4pfWVsc2UgYT1Bbm5vdGF0aW9uRmFjdG9yeS5nZW5lcmF0ZUltYWdlcyhlLHRoaXMueHJlZixuKTtkPW5ldyBSZWZTZXQ7dGhpcy4jSihlLGQsbnVsbCk7Zj10LnRoZW4oKHQ9PnQ/QW5ub3RhdGlvbkZhY3RvcnkucHJpbnROZXdBbm5vdGF0aW9ucyh0LFEsaSxlLGEpOm51bGwpKX19Y29uc3QgcD1Qcm9taXNlLmFsbChbbixDXSkudGhlbigoKFtyXSk9Pntjb25zdCBuPW5ldyBPcGVyYXRvckxpc3QoYSx0KTtlLnNlbmQoIlN0YXJ0UmVuZGVyUGFnZSIse3RyYW5zcGFyZW5jeTpRLmhhc0JsZW5kTW9kZXModGhpcy5yZXNvdXJjZXMsdGhpcy5ub25CbGVuZE1vZGVzU2V0KSxwYWdlSW5kZXg6dGhpcy5wYWdlSW5kZXgsY2FjaGVLZXk6c30pO3JldHVybiBRLmdldE9wZXJhdG9yTGlzdCh7c3RyZWFtOnIsdGFzazppLHJlc291cmNlczp0aGlzLnJlc291cmNlcyxvcGVyYXRvckxpc3Q6bn0pLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIG59KSl9KSk7cmV0dXJuIFByb21pc2UuYWxsKFtwLHRoaXMuX3BhcnNlZEFubm90YXRpb25zLGZdKS50aGVuKChmdW5jdGlvbihbZSx0LHNdKXtpZihzKXt0PXQuZmlsdGVyKChlPT4hKGUucmVmJiZkLmhhcyhlLnJlZikpKSk7Zm9yKGxldCBlPTAsaT1zLmxlbmd0aDtlPGk7ZSsrKXtjb25zdCBhPXNbZV07aWYoYS5yZWZUb1JlcGxhY2Upe2NvbnN0IHI9dC5maW5kSW5kZXgoKGU9PmUucmVmJiZpc1JlZnNFcXVhbChlLnJlZixhLnJlZlRvUmVwbGFjZSkpKTtpZihyPj0wKXt0LnNwbGljZShyLDEsYSk7cy5zcGxpY2UoZS0tLDEpO2ktLX19fXQ9dC5jb25jYXQocyl9aWYoMD09PXQubGVuZ3RofHxhJmwpe2UuZmx1c2goITApO3JldHVybntsZW5ndGg6ZS50b3RhbExlbmd0aH19Y29uc3Qgbj0hIShhJmgpLEM9ISEoYSZvKSxFPSEhKGEmZyksdT0hIShhJmMpLGY9W107Zm9yKGNvbnN0IGUgb2YgdCkoQ3x8RSYmZS5tdXN0QmVWaWV3ZWQocixuKXx8dSYmZS5tdXN0QmVQcmludGVkKHIpKSYmZi5wdXNoKGUuZ2V0T3BlcmF0b3JMaXN0KFEsaSxhLG4scikuY2F0Y2goKGZ1bmN0aW9uKGUpe3dhcm4oYGdldE9wZXJhdG9yTGlzdCAtIGlnbm9yaW5nIGFubm90YXRpb24gZGF0YSBkdXJpbmcgIiR7aS5uYW1lfSIgdGFzazogIiR7ZX0iLmApO3JldHVybntvcExpc3Q6bnVsbCxzZXBhcmF0ZUZvcm06ITEsc2VwYXJhdGVDYW52YXM6ITF9fSkpKTtyZXR1cm4gUHJvbWlzZS5hbGwoZikudGhlbigoZnVuY3Rpb24odCl7bGV0IGk9ITEsYT0hMTtmb3IoY29uc3R7b3BMaXN0OnMsc2VwYXJhdGVGb3JtOnIsc2VwYXJhdGVDYW52YXM6bn1vZiB0KXtlLmFkZE9wTGlzdChzKTtpfHw9cjthfHw9bn1lLmZsdXNoKCEwLHtmb3JtOmksY2FudmFzOmF9KTtyZXR1cm57bGVuZ3RoOmUudG90YWxMZW5ndGh9fSkpfSkpfWV4dHJhY3RUZXh0Q29udGVudCh7aGFuZGxlcjplLHRhc2s6dCxpbmNsdWRlTWFya2VkQ29udGVudDppLGRpc2FibGVOb3JtYWxpemF0aW9uOmEsc2luazpzfSl7Y29uc3Qgcj10aGlzLmdldENvbnRlbnRTdHJlYW0oKSxuPXRoaXMubG9hZFJlc291cmNlcyhbIkV4dEdTdGF0ZSIsIkZvbnQiLCJQcm9wZXJ0aWVzIiwiWE9iamVjdCJdKTtyZXR1cm4gUHJvbWlzZS5hbGwoW3Isbl0pLnRoZW4oKChbcl0pPT5uZXcgUGFydGlhbEV2YWx1YXRvcih7eHJlZjp0aGlzLnhyZWYsaGFuZGxlcjplLHBhZ2VJbmRleDp0aGlzLnBhZ2VJbmRleCxpZEZhY3Rvcnk6dGhpcy5fbG9jYWxJZEZhY3RvcnksZm9udENhY2hlOnRoaXMuZm9udENhY2hlLGJ1aWx0SW5DTWFwQ2FjaGU6dGhpcy5idWlsdEluQ01hcENhY2hlLHN0YW5kYXJkRm9udERhdGFDYWNoZTp0aGlzLnN0YW5kYXJkRm9udERhdGFDYWNoZSxnbG9iYWxJbWFnZUNhY2hlOnRoaXMuZ2xvYmFsSW1hZ2VDYWNoZSxzeXN0ZW1Gb250Q2FjaGU6dGhpcy5zeXN0ZW1Gb250Q2FjaGUsb3B0aW9uczp0aGlzLmV2YWx1YXRvck9wdGlvbnN9KS5nZXRUZXh0Q29udGVudCh7c3RyZWFtOnIsdGFzazp0LHJlc291cmNlczp0aGlzLnJlc291cmNlcyxpbmNsdWRlTWFya2VkQ29udGVudDppLGRpc2FibGVOb3JtYWxpemF0aW9uOmEsc2luazpzLHZpZXdCb3g6dGhpcy52aWV3fSkpKX1hc3luYyBnZXRTdHJ1Y3RUcmVlKCl7Y29uc3QgZT1hd2FpdCB0aGlzLnBkZk1hbmFnZXIuZW5zdXJlQ2F0YWxvZygic3RydWN0VHJlZVJvb3QiKTtpZighZSlyZXR1cm4gbnVsbDthd2FpdCB0aGlzLl9wYXJzZWRBbm5vdGF0aW9ucztyZXR1cm4oYXdhaXQgdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZSh0aGlzLCJfcGFyc2VTdHJ1Y3RUcmVlIixbZV0pKS5zZXJpYWxpemFibGV9X3BhcnNlU3RydWN0VHJlZShlKXtjb25zdCB0PW5ldyBTdHJ1Y3RUcmVlUGFnZShlLHRoaXMucGFnZURpY3QpO3QucGFyc2UodGhpcy5yZWYpO3JldHVybiB0fWFzeW5jIGdldEFubm90YXRpb25zRGF0YShlLHQsaSl7Y29uc3QgYT1hd2FpdCB0aGlzLl9wYXJzZWRBbm5vdGF0aW9ucztpZigwPT09YS5sZW5ndGgpcmV0dXJuIGE7Y29uc3Qgcz1bXSxyPVtdO2xldCBuO2NvbnN0IEM9ISEoaSZvKSxoPSEhKGkmZyksbD0hIShpJmMpO2Zvcihjb25zdCBpIG9mIGEpe2NvbnN0IGE9Q3x8aCYmaS52aWV3YWJsZTsoYXx8bCYmaS5wcmludGFibGUpJiZzLnB1c2goaS5kYXRhKTtpZihpLmhhc1RleHRDb250ZW50JiZhKXtufHw9bmV3IFBhcnRpYWxFdmFsdWF0b3Ioe3hyZWY6dGhpcy54cmVmLGhhbmRsZXI6ZSxwYWdlSW5kZXg6dGhpcy5wYWdlSW5kZXgsaWRGYWN0b3J5OnRoaXMuX2xvY2FsSWRGYWN0b3J5LGZvbnRDYWNoZTp0aGlzLmZvbnRDYWNoZSxidWlsdEluQ01hcENhY2hlOnRoaXMuYnVpbHRJbkNNYXBDYWNoZSxzdGFuZGFyZEZvbnREYXRhQ2FjaGU6dGhpcy5zdGFuZGFyZEZvbnREYXRhQ2FjaGUsZ2xvYmFsSW1hZ2VDYWNoZTp0aGlzLmdsb2JhbEltYWdlQ2FjaGUsc3lzdGVtRm9udENhY2hlOnRoaXMuc3lzdGVtRm9udENhY2hlLG9wdGlvbnM6dGhpcy5ldmFsdWF0b3JPcHRpb25zfSk7ci5wdXNoKGkuZXh0cmFjdFRleHRDb250ZW50KG4sdCxbLTEvMCwtMS8wLDEvMCwxLzBdKS5jYXRjaCgoZnVuY3Rpb24oZSl7d2FybihgZ2V0QW5ub3RhdGlvbnNEYXRhIC0gaWdub3JpbmcgdGV4dENvbnRlbnQgZHVyaW5nICIke3QubmFtZX0iIHRhc2s6ICIke2V9Ii5gKX0pKSl9fWF3YWl0IFByb21pc2UuYWxsKHIpO3JldHVybiBzfWdldCBhbm5vdGF0aW9ucygpe2NvbnN0IGU9dGhpcy5fZ2V0SW5oZXJpdGFibGVQcm9wZXJ0eSgiQW5ub3RzIik7cmV0dXJuIHNoYWRvdyh0aGlzLCJhbm5vdGF0aW9ucyIsQXJyYXkuaXNBcnJheShlKT9lOltdKX1nZXQgX3BhcnNlZEFubm90YXRpb25zKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJfcGFyc2VkQW5ub3RhdGlvbnMiLHRoaXMucGRmTWFuYWdlci5lbnN1cmUodGhpcywiYW5ub3RhdGlvbnMiKS50aGVuKChhc3luYyBlPT57aWYoMD09PWUubGVuZ3RoKXJldHVybiBlO2NvbnN0IHQ9YXdhaXQgdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZURvYygiYW5ub3RhdGlvbkdsb2JhbHMiKTtpZighdClyZXR1cm5bXTtjb25zdCBpPVtdO2Zvcihjb25zdCBhIG9mIGUpaS5wdXNoKEFubm90YXRpb25GYWN0b3J5LmNyZWF0ZSh0aGlzLnhyZWYsYSx0LHRoaXMuX2xvY2FsSWRGYWN0b3J5LCExLHRoaXMucmVmKS5jYXRjaCgoZnVuY3Rpb24oZSl7d2FybihgX3BhcnNlZEFubm90YXRpb25zOiAiJHtlfSIuYCk7cmV0dXJuIG51bGx9KSkpO2NvbnN0IGE9W107bGV0IHMscjtmb3IoY29uc3QgZSBvZiBhd2FpdCBQcm9taXNlLmFsbChpKSllJiYoZSBpbnN0YW5jZW9mIFdpZGdldEFubm90YXRpb24/KHJ8fD1bXSkucHVzaChlKTplIGluc3RhbmNlb2YgUG9wdXBBbm5vdGF0aW9uPyhzfHw9W10pLnB1c2goZSk6YS5wdXNoKGUpKTtyJiZhLnB1c2goLi4ucik7cyYmYS5wdXNoKC4uLnMpO3JldHVybiBhfSkpKX1nZXQganNBY3Rpb25zKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJqc0FjdGlvbnMiLGNvbGxlY3RBY3Rpb25zKHRoaXMueHJlZix0aGlzLnBhZ2VEaWN0LGZBKSl9fWNvbnN0IHJvPW5ldyBVaW50OEFycmF5KFszNyw4MCw2OCw3MCw0NV0pLG5vPW5ldyBVaW50OEFycmF5KFsxMTUsMTE2LDk3LDExNCwxMTYsMTIwLDExNCwxMDEsMTAyXSksb289bmV3IFVpbnQ4QXJyYXkoWzEwMSwxMTAsMTAwLDExMSw5OCwxMDZdKTtmdW5jdGlvbiBmaW5kKGUsdCxpPTEwMjQsYT0hMSl7Y29uc3Qgcz10Lmxlbmd0aCxyPWUucGVla0J5dGVzKGkpLG49ci5sZW5ndGgtcztpZihuPD0wKXJldHVybiExO2lmKGEpe2NvbnN0IGk9cy0xO2xldCBhPXIubGVuZ3RoLTE7Zm9yKDthPj1pOyl7bGV0IG49MDtmb3IoO248cyYmclthLW5dPT09dFtpLW5dOyluKys7aWYobj49cyl7ZS5wb3MrPWEtaTtyZXR1cm4hMH1hLS19fWVsc2V7bGV0IGk9MDtmb3IoO2k8PW47KXtsZXQgYT0wO2Zvcig7YTxzJiZyW2krYV09PT10W2FdOylhKys7aWYoYT49cyl7ZS5wb3MrPWk7cmV0dXJuITB9aSsrfX1yZXR1cm4hMX1jbGFzcyBQREZEb2N1bWVudHtjb25zdHJ1Y3RvcihlLHQpe2lmKHQubGVuZ3RoPD0wKXRocm93IG5ldyBJbnZhbGlkUERGRXhjZXB0aW9uKCJUaGUgUERGIGZpbGUgaXMgZW1wdHksIGkuZS4gaXRzIHNpemUgaXMgemVybyBieXRlcy4iKTt0aGlzLnBkZk1hbmFnZXI9ZTt0aGlzLnN0cmVhbT10O3RoaXMueHJlZj1uZXcgWFJlZih0LGUpO3RoaXMuX3BhZ2VQcm9taXNlcz1uZXcgTWFwO3RoaXMuX3ZlcnNpb249bnVsbDtjb25zdCBpPXtmb250OjB9O3RoaXMuX2dsb2JhbElkRmFjdG9yeT1jbGFzc3tzdGF0aWMgZ2V0RG9jSWQoKXtyZXR1cm5gZ18ke2UuZG9jSWR9YH1zdGF0aWMgY3JlYXRlRm9udElkKCl7cmV0dXJuImYiKyArK2kuZm9udH1zdGF0aWMgY3JlYXRlT2JqSWQoKXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgbWV0aG9kIGBjcmVhdGVPYmpJZGAgY2FsbGVkLiIpfXN0YXRpYyBnZXRQYWdlT2JqSWQoKXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgbWV0aG9kIGBnZXRQYWdlT2JqSWRgIGNhbGxlZC4iKX19fXBhcnNlKGUpe3RoaXMueHJlZi5wYXJzZShlKTt0aGlzLmNhdGFsb2c9bmV3IENhdGFsb2codGhpcy5wZGZNYW5hZ2VyLHRoaXMueHJlZil9Z2V0IGxpbmVhcml6YXRpb24oKXtsZXQgZT1udWxsO3RyeXtlPUxpbmVhcml6YXRpb24uY3JlYXRlKHRoaXMuc3RyZWFtKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTtpbmZvKGUpfXJldHVybiBzaGFkb3codGhpcywibGluZWFyaXphdGlvbiIsZSl9Z2V0IHN0YXJ0WFJlZigpe2NvbnN0IGU9dGhpcy5zdHJlYW07bGV0IHQ9MDtpZih0aGlzLmxpbmVhcml6YXRpb24pe2UucmVzZXQoKTtpZihmaW5kKGUsb28pKXtlLnNraXAoNik7bGV0IGk9ZS5wZWVrQnl0ZSgpO2Zvcig7aXNXaGl0ZVNwYWNlKGkpOyl7ZS5wb3MrKztpPWUucGVla0J5dGUoKX10PWUucG9zLWUuc3RhcnR9fWVsc2V7Y29uc3QgaT0xMDI0LGE9bm8ubGVuZ3RoO2xldCBzPSExLHI9ZS5lbmQ7Zm9yKDshcyYmcj4wOyl7ci09aS1hO3I8MCYmKHI9MCk7ZS5wb3M9cjtzPWZpbmQoZSxubyxpLCEwKX1pZihzKXtlLnNraXAoOSk7bGV0IGk7ZG97aT1lLmdldEJ5dGUoKX13aGlsZShpc1doaXRlU3BhY2UoaSkpO2xldCBhPSIiO2Zvcig7aT49MzImJmk8PTU3Oyl7YSs9U3RyaW5nLmZyb21DaGFyQ29kZShpKTtpPWUuZ2V0Qnl0ZSgpfXQ9cGFyc2VJbnQoYSwxMCk7aXNOYU4odCkmJih0PTApfX1yZXR1cm4gc2hhZG93KHRoaXMsInN0YXJ0WFJlZiIsdCl9Y2hlY2tIZWFkZXIoKXtjb25zdCBlPXRoaXMuc3RyZWFtO2UucmVzZXQoKTtpZighZmluZChlLHJvKSlyZXR1cm47ZS5tb3ZlU3RhcnQoKTtlLnNraXAocm8ubGVuZ3RoKTtsZXQgdCxpPSIiO2Zvcig7KHQ9ZS5nZXRCeXRlKCkpPjMyJiZpLmxlbmd0aDw3OylpKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHQpO0R0LnRlc3QoaSk/dGhpcy5fdmVyc2lvbj1pOndhcm4oYEludmFsaWQgUERGIGhlYWRlciB2ZXJzaW9uOiAke2l9YCl9cGFyc2VTdGFydFhSZWYoKXt0aGlzLnhyZWYuc2V0U3RhcnRYUmVmKHRoaXMuc3RhcnRYUmVmKX1nZXQgbnVtUGFnZXMoKXtsZXQgZT0wO2U9dGhpcy5jYXRhbG9nLmhhc0FjdHVhbE51bVBhZ2VzP3RoaXMuY2F0YWxvZy5udW1QYWdlczp0aGlzLnhmYUZhY3Rvcnk/dGhpcy54ZmFGYWN0b3J5LmdldE51bVBhZ2VzKCk6dGhpcy5saW5lYXJpemF0aW9uP3RoaXMubGluZWFyaXphdGlvbi5udW1QYWdlczp0aGlzLmNhdGFsb2cubnVtUGFnZXM7cmV0dXJuIHNoYWRvdyh0aGlzLCJudW1QYWdlcyIsZSl9X2hhc09ubHlEb2N1bWVudFNpZ25hdHVyZXMoZSx0PTApe3JldHVybiEhQXJyYXkuaXNBcnJheShlKSYmZS5ldmVyeSgoZT0+e2lmKCEoKGU9dGhpcy54cmVmLmZldGNoSWZSZWYoZSkpaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm4hMTtpZihlLmhhcygiS2lkcyIpKXtpZigrK3Q+MTApe3dhcm4oIl9oYXNPbmx5RG9jdW1lbnRTaWduYXR1cmVzOiBtYXhpbXVtIHJlY3Vyc2lvbiBkZXB0aCByZWFjaGVkIik7cmV0dXJuITF9cmV0dXJuIHRoaXMuX2hhc09ubHlEb2N1bWVudFNpZ25hdHVyZXMoZS5nZXQoIktpZHMiKSx0KX1jb25zdCBpPWlzTmFtZShlLmdldCgiRlQiKSwiU2lnIiksYT1lLmdldCgiUmVjdCIpLHM9QXJyYXkuaXNBcnJheShhKSYmYS5ldmVyeSgoZT0+MD09PWUpKTtyZXR1cm4gaSYmc30pKX1nZXQgX3hmYVN0cmVhbXMoKXtjb25zdCBlPXRoaXMuY2F0YWxvZy5hY3JvRm9ybTtpZighZSlyZXR1cm4gbnVsbDtjb25zdCB0PWUuZ2V0KCJYRkEiKSxpPXsieGRwOnhkcCI6IiIsdGVtcGxhdGU6IiIsZGF0YXNldHM6IiIsY29uZmlnOiIiLGNvbm5lY3Rpb25TZXQ6IiIsbG9jYWxlU2V0OiIiLHN0eWxlc2hlZXQ6IiIsIi94ZHA6eGRwIjoiIn07aWYodCBpbnN0YW5jZW9mIEJhc2VTdHJlYW0mJiF0LmlzRW1wdHkpe2lbInhkcDp4ZHAiXT10O3JldHVybiBpfWlmKCFBcnJheS5pc0FycmF5KHQpfHwwPT09dC5sZW5ndGgpcmV0dXJuIG51bGw7Zm9yKGxldCBlPTAsYT10Lmxlbmd0aDtlPGE7ZSs9Mil7bGV0IHM7cz0wPT09ZT8ieGRwOnhkcCI6ZT09PWEtMj8iL3hkcDp4ZHAiOnRbZV07aWYoIWkuaGFzT3duUHJvcGVydHkocykpY29udGludWU7Y29uc3Qgcj10aGlzLnhyZWYuZmV0Y2hJZlJlZih0W2UrMV0pO3IgaW5zdGFuY2VvZiBCYXNlU3RyZWFtJiYhci5pc0VtcHR5JiYoaVtzXT1yKX1yZXR1cm4gaX1nZXQgeGZhRGF0YXNldHMoKXtjb25zdCBlPXRoaXMuX3hmYVN0cmVhbXM7aWYoIWUpcmV0dXJuIHNoYWRvdyh0aGlzLCJ4ZmFEYXRhc2V0cyIsbnVsbCk7Zm9yKGNvbnN0IHQgb2ZbImRhdGFzZXRzIiwieGRwOnhkcCJdKXtjb25zdCBpPWVbdF07aWYoaSl0cnl7Y29uc3QgZT1zdHJpbmdUb1VURjhTdHJpbmcoaS5nZXRTdHJpbmcoKSk7cmV0dXJuIHNoYWRvdyh0aGlzLCJ4ZmFEYXRhc2V0cyIsbmV3IERhdGFzZXRSZWFkZXIoe1t0XTplfSkpfWNhdGNoe3dhcm4oIlhGQSAtIEludmFsaWQgdXRmLTggc3RyaW5nLiIpO2JyZWFrfX1yZXR1cm4gc2hhZG93KHRoaXMsInhmYURhdGFzZXRzIixudWxsKX1nZXQgeGZhRGF0YSgpe2NvbnN0IGU9dGhpcy5feGZhU3RyZWFtcztpZighZSlyZXR1cm4gbnVsbDtjb25zdCB0PU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGNvbnN0W2ksYV1vZiBPYmplY3QuZW50cmllcyhlKSlpZihhKXRyeXt0W2ldPXN0cmluZ1RvVVRGOFN0cmluZyhhLmdldFN0cmluZygpKX1jYXRjaHt3YXJuKCJYRkEgLSBJbnZhbGlkIHV0Zi04IHN0cmluZy4iKTtyZXR1cm4gbnVsbH1yZXR1cm4gdH1nZXQgeGZhRmFjdG9yeSgpe2xldCBlO3RoaXMucGRmTWFuYWdlci5lbmFibGVYZmEmJnRoaXMuY2F0YWxvZy5uZWVkc1JlbmRlcmluZyYmdGhpcy5mb3JtSW5mby5oYXNYZmEmJiF0aGlzLmZvcm1JbmZvLmhhc0Fjcm9Gb3JtJiYoZT10aGlzLnhmYURhdGEpO3JldHVybiBzaGFkb3codGhpcywieGZhRmFjdG9yeSIsZT9uZXcgWEZBRmFjdG9yeShlKTpudWxsKX1nZXQgaXNQdXJlWGZhKCl7cmV0dXJuISF0aGlzLnhmYUZhY3RvcnkmJnRoaXMueGZhRmFjdG9yeS5pc1ZhbGlkKCl9Z2V0IGh0bWxGb3JYZmEoKXtyZXR1cm4gdGhpcy54ZmFGYWN0b3J5P3RoaXMueGZhRmFjdG9yeS5nZXRQYWdlcygpOm51bGx9YXN5bmMgbG9hZFhmYUltYWdlcygpe2NvbnN0IGU9YXdhaXQgdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZUNhdGFsb2coInhmYUltYWdlcyIpO2lmKCFlKXJldHVybjtjb25zdCB0PWUuZ2V0S2V5cygpLGk9bmV3IE9iamVjdExvYWRlcihlLHQsdGhpcy54cmVmKTthd2FpdCBpLmxvYWQoKTtjb25zdCBhPW5ldyBNYXA7Zm9yKGNvbnN0IGkgb2YgdCl7Y29uc3QgdD1lLmdldChpKTt0IGluc3RhbmNlb2YgQmFzZVN0cmVhbSYmYS5zZXQoaSx0LmdldEJ5dGVzKCkpfXRoaXMueGZhRmFjdG9yeS5zZXRJbWFnZXMoYSl9YXN5bmMgbG9hZFhmYUZvbnRzKGUsdCl7Y29uc3QgaT1hd2FpdCB0aGlzLnBkZk1hbmFnZXIuZW5zdXJlQ2F0YWxvZygiYWNyb0Zvcm0iKTtpZighaSlyZXR1cm47Y29uc3QgYT1hd2FpdCBpLmdldEFzeW5jKCJEUiIpO2lmKCEoYSBpbnN0YW5jZW9mIERpY3QpKXJldHVybjtjb25zdCBzPW5ldyBPYmplY3RMb2FkZXIoYSxbIkZvbnQiXSx0aGlzLnhyZWYpO2F3YWl0IHMubG9hZCgpO2NvbnN0IHI9YS5nZXQoIkZvbnQiKTtpZighKHIgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm47Y29uc3Qgbj1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5wZGZNYW5hZ2VyLmV2YWx1YXRvck9wdGlvbnMpO24udXNlU3lzdGVtRm9udHM9ITE7Y29uc3Qgbz1uZXcgUGFydGlhbEV2YWx1YXRvcih7eHJlZjp0aGlzLnhyZWYsaGFuZGxlcjplLHBhZ2VJbmRleDotMSxpZEZhY3Rvcnk6dGhpcy5fZ2xvYmFsSWRGYWN0b3J5LGZvbnRDYWNoZTp0aGlzLmNhdGFsb2cuZm9udENhY2hlLGJ1aWx0SW5DTWFwQ2FjaGU6dGhpcy5jYXRhbG9nLmJ1aWx0SW5DTWFwQ2FjaGUsc3RhbmRhcmRGb250RGF0YUNhY2hlOnRoaXMuY2F0YWxvZy5zdGFuZGFyZEZvbnREYXRhQ2FjaGUsb3B0aW9uczpufSksZz1uZXcgT3BlcmF0b3JMaXN0LGM9W10sQz17Z2V0IGZvbnQoKXtyZXR1cm4gYy5hdCgtMSl9LHNldCBmb250KGUpe2MucHVzaChlKX0sY2xvbmUoKXtyZXR1cm4gdGhpc319LGg9bmV3IE1hcDtyLmZvckVhY2goKChlLHQpPT57aC5zZXQoZSx0KX0pKTtjb25zdCBsPVtdO2Zvcihjb25zdFtlLGldb2YgaCl7Y29uc3Qgcz1pLmdldCgiRm9udERlc2NyaXB0b3IiKTtpZighKHMgaW5zdGFuY2VvZiBEaWN0KSljb250aW51ZTtsZXQgcj1zLmdldCgiRm9udEZhbWlseSIpO3I9ci5yZXBsYWNlQWxsKC9bIF0rKFxkKS9nLCIkMSIpO2NvbnN0IG49e2ZvbnRGYW1pbHk6cixmb250V2VpZ2h0OnMuZ2V0KCJGb250V2VpZ2h0IiksaXRhbGljQW5nbGU6LXMuZ2V0KCJJdGFsaWNBbmdsZSIpfTt2YWxpZGF0ZUNTU0ZvbnQobikmJmwucHVzaChvLmhhbmRsZVNldEZvbnQoYSxbTmFtZS5nZXQoZSksMV0sbnVsbCxnLHQsQyxudWxsLG4pLmNhdGNoKChmdW5jdGlvbihlKXt3YXJuKGBsb2FkWGZhRm9udHM6ICIke2V9Ii5gKTtyZXR1cm4gbnVsbH0pKSl9YXdhaXQgUHJvbWlzZS5hbGwobCk7Y29uc3QgUT10aGlzLnhmYUZhY3Rvcnkuc2V0Rm9udHMoYyk7aWYoIVEpcmV0dXJuO24uaWdub3JlRXJyb3JzPSEwO2wubGVuZ3RoPTA7Yy5sZW5ndGg9MDtjb25zdCBFPW5ldyBTZXQ7Zm9yKGNvbnN0IGUgb2YgUSlnZXRYZmFGb250TmFtZShgJHtlfS1SZWd1bGFyYCl8fEUuYWRkKGUpO0Uuc2l6ZSYmUS5wdXNoKCJQZGZKUy1GYWxsYmFjayIpO2Zvcihjb25zdCBlIG9mIFEpaWYoIUUuaGFzKGUpKWZvcihjb25zdCBpIG9mW3tuYW1lOiJSZWd1bGFyIixmb250V2VpZ2h0OjQwMCxpdGFsaWNBbmdsZTowfSx7bmFtZToiQm9sZCIsZm9udFdlaWdodDo3MDAsaXRhbGljQW5nbGU6MH0se25hbWU6Ikl0YWxpYyIsZm9udFdlaWdodDo0MDAsaXRhbGljQW5nbGU6MTJ9LHtuYW1lOiJCb2xkSXRhbGljIixmb250V2VpZ2h0OjcwMCxpdGFsaWNBbmdsZToxMn1dKXtjb25zdCBzPWAke2V9LSR7aS5uYW1lfWAscj1nZXRYZmFGb250RGljdChzKTtsLnB1c2goby5oYW5kbGVTZXRGb250KGEsW05hbWUuZ2V0KHMpLDFdLG51bGwsZyx0LEMscix7Zm9udEZhbWlseTplLGZvbnRXZWlnaHQ6aS5mb250V2VpZ2h0LGl0YWxpY0FuZ2xlOmkuaXRhbGljQW5nbGV9KS5jYXRjaCgoZnVuY3Rpb24oZSl7d2FybihgbG9hZFhmYUZvbnRzOiAiJHtlfSIuYCk7cmV0dXJuIG51bGx9KSkpfWF3YWl0IFByb21pc2UuYWxsKGwpO3RoaXMueGZhRmFjdG9yeS5hcHBlbmRGb250cyhjLEUpfWFzeW5jIHNlcmlhbGl6ZVhmYURhdGEoZSl7cmV0dXJuIHRoaXMueGZhRmFjdG9yeT90aGlzLnhmYUZhY3Rvcnkuc2VyaWFsaXplRGF0YShlKTpudWxsfWdldCB2ZXJzaW9uKCl7cmV0dXJuIHRoaXMuY2F0YWxvZy52ZXJzaW9ufHx0aGlzLl92ZXJzaW9ufWdldCBmb3JtSW5mbygpe2NvbnN0IGU9e2hhc0ZpZWxkczohMSxoYXNBY3JvRm9ybTohMSxoYXNYZmE6ITEsaGFzU2lnbmF0dXJlczohMX0sdD10aGlzLmNhdGFsb2cuYWNyb0Zvcm07aWYoIXQpcmV0dXJuIHNoYWRvdyh0aGlzLCJmb3JtSW5mbyIsZSk7dHJ5e2NvbnN0IGk9dC5nZXQoIkZpZWxkcyIpLGE9QXJyYXkuaXNBcnJheShpKSYmaS5sZW5ndGg+MDtlLmhhc0ZpZWxkcz1hO2NvbnN0IHM9dC5nZXQoIlhGQSIpO2UuaGFzWGZhPUFycmF5LmlzQXJyYXkocykmJnMubGVuZ3RoPjB8fHMgaW5zdGFuY2VvZiBCYXNlU3RyZWFtJiYhcy5pc0VtcHR5O2NvbnN0IHI9ISEoMSZ0LmdldCgiU2lnRmxhZ3MiKSksbj1yJiZ0aGlzLl9oYXNPbmx5RG9jdW1lbnRTaWduYXR1cmVzKGkpO2UuaGFzQWNyb0Zvcm09YSYmIW47ZS5oYXNTaWduYXR1cmVzPXJ9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7d2FybihgQ2Fubm90IGZldGNoIGZvcm0gaW5mb3JtYXRpb246ICIke2V9Ii5gKX1yZXR1cm4gc2hhZG93KHRoaXMsImZvcm1JbmZvIixlKX1nZXQgZG9jdW1lbnRJbmZvKCl7Y29uc3QgZT17UERGRm9ybWF0VmVyc2lvbjp0aGlzLnZlcnNpb24sTGFuZ3VhZ2U6dGhpcy5jYXRhbG9nLmxhbmcsRW5jcnlwdEZpbHRlck5hbWU6dGhpcy54cmVmLmVuY3J5cHQ/dGhpcy54cmVmLmVuY3J5cHQuZmlsdGVyTmFtZTpudWxsLElzTGluZWFyaXplZDohIXRoaXMubGluZWFyaXphdGlvbixJc0Fjcm9Gb3JtUHJlc2VudDp0aGlzLmZvcm1JbmZvLmhhc0Fjcm9Gb3JtLElzWEZBUHJlc2VudDp0aGlzLmZvcm1JbmZvLmhhc1hmYSxJc0NvbGxlY3Rpb25QcmVzZW50OiEhdGhpcy5jYXRhbG9nLmNvbGxlY3Rpb24sSXNTaWduYXR1cmVzUHJlc2VudDp0aGlzLmZvcm1JbmZvLmhhc1NpZ25hdHVyZXN9O2xldCB0O3RyeXt0PXRoaXMueHJlZi50cmFpbGVyLmdldCgiSW5mbyIpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO2luZm8oIlRoZSBkb2N1bWVudCBpbmZvcm1hdGlvbiBkaWN0aW9uYXJ5IGlzIGludmFsaWQuIil9aWYoISh0IGluc3RhbmNlb2YgRGljdCkpcmV0dXJuIHNoYWRvdyh0aGlzLCJkb2N1bWVudEluZm8iLGUpO2Zvcihjb25zdCBpIG9mIHQuZ2V0S2V5cygpKXtjb25zdCBhPXQuZ2V0KGkpO3N3aXRjaChpKXtjYXNlIlRpdGxlIjpjYXNlIkF1dGhvciI6Y2FzZSJTdWJqZWN0IjpjYXNlIktleXdvcmRzIjpjYXNlIkNyZWF0b3IiOmNhc2UiUHJvZHVjZXIiOmNhc2UiQ3JlYXRpb25EYXRlIjpjYXNlIk1vZERhdGUiOmlmKCJzdHJpbmciPT10eXBlb2YgYSl7ZVtpXT1zdHJpbmdUb1BERlN0cmluZyhhKTtjb250aW51ZX1icmVhaztjYXNlIlRyYXBwZWQiOmlmKGEgaW5zdGFuY2VvZiBOYW1lKXtlW2ldPWE7Y29udGludWV9YnJlYWs7ZGVmYXVsdDpsZXQgdDtzd2l0Y2godHlwZW9mIGEpe2Nhc2Uic3RyaW5nIjp0PXN0cmluZ1RvUERGU3RyaW5nKGEpO2JyZWFrO2Nhc2UibnVtYmVyIjpjYXNlImJvb2xlYW4iOnQ9YTticmVhaztkZWZhdWx0OmEgaW5zdGFuY2VvZiBOYW1lJiYodD1hKX1pZih2b2lkIDA9PT10KXt3YXJuKGBCYWQgdmFsdWUsIGZvciBjdXN0b20ga2V5ICIke2l9IiwgaW4gSW5mbzogJHthfS5gKTtjb250aW51ZX1lLkN1c3RvbXx8KGUuQ3VzdG9tPU9iamVjdC5jcmVhdGUobnVsbCkpO2UuQ3VzdG9tW2ldPXQ7Y29udGludWV9d2FybihgQmFkIHZhbHVlLCBmb3Iga2V5ICIke2l9IiwgaW4gSW5mbzogJHthfS5gKX1yZXR1cm4gc2hhZG93KHRoaXMsImRvY3VtZW50SW5mbyIsZSl9Z2V0IGZpbmdlcnByaW50cygpe2Z1bmN0aW9uIHZhbGlkYXRlKGUpe3JldHVybiJzdHJpbmciPT10eXBlb2YgZSYmZS5sZW5ndGg+MCYmIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIiE9PWV9ZnVuY3Rpb24gaGV4U3RyaW5nKGUpe2NvbnN0IHQ9W107Zm9yKGNvbnN0IGkgb2YgZSl7Y29uc3QgZT1pLnRvU3RyaW5nKDE2KTt0LnB1c2goZS5wYWRTdGFydCgyLCIwIikpfXJldHVybiB0LmpvaW4oIiIpfWNvbnN0IGU9dGhpcy54cmVmLnRyYWlsZXIuZ2V0KCJJRCIpO2xldCB0LGk7aWYoQXJyYXkuaXNBcnJheShlKSYmdmFsaWRhdGUoZVswXSkpe3Q9c3RyaW5nVG9CeXRlcyhlWzBdKTtlWzFdIT09ZVswXSYmdmFsaWRhdGUoZVsxXSkmJihpPXN0cmluZ1RvQnl0ZXMoZVsxXSkpfWVsc2UgdD1Icyh0aGlzLnN0cmVhbS5nZXRCeXRlUmFuZ2UoMCwxMDI0KSwwLDEwMjQpO3JldHVybiBzaGFkb3codGhpcywiZmluZ2VycHJpbnRzIixbaGV4U3RyaW5nKHQpLGk/aGV4U3RyaW5nKGkpOm51bGxdKX1hc3luYyBfZ2V0TGluZWFyaXphdGlvblBhZ2UoZSl7Y29uc3R7Y2F0YWxvZzp0LGxpbmVhcml6YXRpb246aSx4cmVmOmF9PXRoaXMscz1SZWYuZ2V0KGkub2JqZWN0TnVtYmVyRmlyc3QsMCk7dHJ5e2NvbnN0IGU9YXdhaXQgYS5mZXRjaEFzeW5jKHMpO2lmKGUgaW5zdGFuY2VvZiBEaWN0KXtsZXQgaT1lLmdldFJhdygiVHlwZSIpO2kgaW5zdGFuY2VvZiBSZWYmJihpPWF3YWl0IGEuZmV0Y2hBc3luYyhpKSk7aWYoaXNOYW1lKGksIlBhZ2UiKXx8IWUuaGFzKCJUeXBlIikmJiFlLmhhcygiS2lkcyIpKXt0LnBhZ2VLaWRzQ291bnRDYWNoZS5oYXMocyl8fHQucGFnZUtpZHNDb3VudENhY2hlLnB1dChzLDEpO3QucGFnZUluZGV4Q2FjaGUuaGFzKHMpfHx0LnBhZ2VJbmRleENhY2hlLnB1dChzLDApO3JldHVybltlLHNdfX10aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlRoZSBMaW5lYXJpemF0aW9uIGRpY3Rpb25hcnkgZG9lc24ndCBwb2ludCB0byBhIHZhbGlkIFBhZ2UgZGljdGlvbmFyeS4iKX1jYXRjaChpKXt3YXJuKGBfZ2V0TGluZWFyaXphdGlvblBhZ2U6ICIke2kubWVzc2FnZX0iLmApO3JldHVybiB0LmdldFBhZ2VEaWN0KGUpfX1nZXRQYWdlKGUpe2NvbnN0IHQ9dGhpcy5fcGFnZVByb21pc2VzLmdldChlKTtpZih0KXJldHVybiB0O2NvbnN0e2NhdGFsb2c6aSxsaW5lYXJpemF0aW9uOmEseGZhRmFjdG9yeTpzfT10aGlzO2xldCByO3I9cz9Qcm9taXNlLnJlc29sdmUoW0RpY3QuZW1wdHksbnVsbF0pOmE/LnBhZ2VGaXJzdD09PWU/dGhpcy5fZ2V0TGluZWFyaXphdGlvblBhZ2UoZSk6aS5nZXRQYWdlRGljdChlKTtyPXIudGhlbigoKFt0LGFdKT0+bmV3IFBhZ2Uoe3BkZk1hbmFnZXI6dGhpcy5wZGZNYW5hZ2VyLHhyZWY6dGhpcy54cmVmLHBhZ2VJbmRleDplLHBhZ2VEaWN0OnQscmVmOmEsZ2xvYmFsSWRGYWN0b3J5OnRoaXMuX2dsb2JhbElkRmFjdG9yeSxmb250Q2FjaGU6aS5mb250Q2FjaGUsYnVpbHRJbkNNYXBDYWNoZTppLmJ1aWx0SW5DTWFwQ2FjaGUsc3RhbmRhcmRGb250RGF0YUNhY2hlOmkuc3RhbmRhcmRGb250RGF0YUNhY2hlLGdsb2JhbEltYWdlQ2FjaGU6aS5nbG9iYWxJbWFnZUNhY2hlLHN5c3RlbUZvbnRDYWNoZTppLnN5c3RlbUZvbnRDYWNoZSxub25CbGVuZE1vZGVzU2V0Omkubm9uQmxlbmRNb2Rlc1NldCx4ZmFGYWN0b3J5OnN9KSkpO3RoaXMuX3BhZ2VQcm9taXNlcy5zZXQoZSxyKTtyZXR1cm4gcn1hc3luYyBjaGVja0ZpcnN0UGFnZShlPSExKXtpZighZSl0cnl7YXdhaXQgdGhpcy5nZXRQYWdlKDApfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBYUmVmRW50cnlFeGNlcHRpb24pe3RoaXMuX3BhZ2VQcm9taXNlcy5kZWxldGUoMCk7YXdhaXQgdGhpcy5jbGVhbnVwKCk7dGhyb3cgbmV3IFhSZWZQYXJzZUV4Y2VwdGlvbn19fWFzeW5jIGNoZWNrTGFzdFBhZ2UoZT0hMSl7Y29uc3R7Y2F0YWxvZzp0LHBkZk1hbmFnZXI6aX09dGhpczt0LnNldEFjdHVhbE51bVBhZ2VzKCk7bGV0IGE7dHJ5e2F3YWl0IFByb21pc2UuYWxsKFtpLmVuc3VyZURvYygieGZhRmFjdG9yeSIpLGkuZW5zdXJlRG9jKCJsaW5lYXJpemF0aW9uIiksaS5lbnN1cmVDYXRhbG9nKCJudW1QYWdlcyIpXSk7aWYodGhpcy54ZmFGYWN0b3J5KXJldHVybjthPXRoaXMubGluZWFyaXphdGlvbj90aGlzLmxpbmVhcml6YXRpb24ubnVtUGFnZXM6dC5udW1QYWdlcztpZighTnVtYmVyLmlzSW50ZWdlcihhKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlBhZ2UgY291bnQgaXMgbm90IGFuIGludGVnZXIuIik7aWYoYTw9MSlyZXR1cm47YXdhaXQgdGhpcy5nZXRQYWdlKGEtMSl9Y2F0Y2gocyl7dGhpcy5fcGFnZVByb21pc2VzLmRlbGV0ZShhLTEpO2F3YWl0IHRoaXMuY2xlYW51cCgpO2lmKHMgaW5zdGFuY2VvZiBYUmVmRW50cnlFeGNlcHRpb24mJiFlKXRocm93IG5ldyBYUmVmUGFyc2VFeGNlcHRpb247d2FybihgY2hlY2tMYXN0UGFnZSAtIGludmFsaWQgL1BhZ2VzIHRyZWUgL0NvdW50OiAke2F9LmApO2xldCByO3RyeXtyPWF3YWl0IHQuZ2V0QWxsUGFnZURpY3RzKGUpfWNhdGNoKGkpe2lmKGkgaW5zdGFuY2VvZiBYUmVmRW50cnlFeGNlcHRpb24mJiFlKXRocm93IG5ldyBYUmVmUGFyc2VFeGNlcHRpb247dC5zZXRBY3R1YWxOdW1QYWdlcygxKTtyZXR1cm59Zm9yKGNvbnN0W2UsW2Esc11db2Ygcil7bGV0IHI7aWYoYSBpbnN0YW5jZW9mIEVycm9yKXtyPVByb21pc2UucmVqZWN0KGEpO3IuY2F0Y2goKCgpPT57fSkpfWVsc2Ugcj1Qcm9taXNlLnJlc29sdmUobmV3IFBhZ2Uoe3BkZk1hbmFnZXI6aSx4cmVmOnRoaXMueHJlZixwYWdlSW5kZXg6ZSxwYWdlRGljdDphLHJlZjpzLGdsb2JhbElkRmFjdG9yeTp0aGlzLl9nbG9iYWxJZEZhY3RvcnksZm9udENhY2hlOnQuZm9udENhY2hlLGJ1aWx0SW5DTWFwQ2FjaGU6dC5idWlsdEluQ01hcENhY2hlLHN0YW5kYXJkRm9udERhdGFDYWNoZTp0LnN0YW5kYXJkRm9udERhdGFDYWNoZSxnbG9iYWxJbWFnZUNhY2hlOnQuZ2xvYmFsSW1hZ2VDYWNoZSxzeXN0ZW1Gb250Q2FjaGU6dC5zeXN0ZW1Gb250Q2FjaGUsbm9uQmxlbmRNb2Rlc1NldDp0Lm5vbkJsZW5kTW9kZXNTZXQseGZhRmFjdG9yeTpudWxsfSkpO3RoaXMuX3BhZ2VQcm9taXNlcy5zZXQoZSxyKX10LnNldEFjdHVhbE51bVBhZ2VzKHIuc2l6ZSl9fWZvbnRGYWxsYmFjayhlLHQpe3JldHVybiB0aGlzLmNhdGFsb2cuZm9udEZhbGxiYWNrKGUsdCl9YXN5bmMgY2xlYW51cChlPSExKXtyZXR1cm4gdGhpcy5jYXRhbG9nP3RoaXMuY2F0YWxvZy5jbGVhbnVwKGUpOmNsZWFyR2xvYmFsQ2FjaGVzKCl9YXN5bmMjWShlLHQsaSxhLHMpe2NvbnN0e3hyZWY6cn09dGhpcztpZighKHQgaW5zdGFuY2VvZiBSZWYpfHxzLmhhcyh0KSlyZXR1cm47cy5wdXQodCk7Y29uc3Qgbj1hd2FpdCByLmZldGNoQXN5bmModCk7aWYoIShuIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuO2lmKG4uaGFzKCJUIikpe2NvbnN0IHQ9c3RyaW5nVG9QREZTdHJpbmcoYXdhaXQgbi5nZXRBc3luYygiVCIpKTtlPSIiPT09ZT90OmAke2V9LiR7dH1gfWVsc2V7bGV0IHQ9bjtmb3IoOzspe3Q9dC5nZXRSYXcoIlBhcmVudCIpO2lmKHQgaW5zdGFuY2VvZiBSZWYpe2lmKHMuaGFzKHQpKWJyZWFrO3Q9YXdhaXQgci5mZXRjaEFzeW5jKHQpfWlmKCEodCBpbnN0YW5jZW9mIERpY3QpKWJyZWFrO2lmKHQuaGFzKCJUIikpe2NvbnN0IGk9c3RyaW5nVG9QREZTdHJpbmcoYXdhaXQgdC5nZXRBc3luYygiVCIpKTtlPSIiPT09ZT9pOmAke2V9LiR7aX1gO2JyZWFrfX19aS5oYXMoZSl8fGkuc2V0KGUsW10pO2kuZ2V0KGUpLnB1c2goQW5ub3RhdGlvbkZhY3RvcnkuY3JlYXRlKHIsdCxhLG51bGwsITAsbnVsbCkudGhlbigoZT0+ZT8uZ2V0RmllbGRPYmplY3QoKSkpLmNhdGNoKChmdW5jdGlvbihlKXt3YXJuKGAjY29sbGVjdEZpZWxkT2JqZWN0czogIiR7ZX0iLmApO3JldHVybiBudWxsfSkpKTtpZighbi5oYXMoIktpZHMiKSlyZXR1cm47Y29uc3Qgbz1hd2FpdCBuLmdldEFzeW5jKCJLaWRzIik7aWYoQXJyYXkuaXNBcnJheShvKSlmb3IoY29uc3QgdCBvZiBvKWF3YWl0IHRoaXMuI1koZSx0LGksYSxzKX1nZXQgZmllbGRPYmplY3RzKCl7aWYoIXRoaXMuZm9ybUluZm8uaGFzRmllbGRzKXJldHVybiBzaGFkb3codGhpcywiZmllbGRPYmplY3RzIixQcm9taXNlLnJlc29sdmUobnVsbCkpO3JldHVybiBzaGFkb3codGhpcywiZmllbGRPYmplY3RzIixQcm9taXNlLmFsbChbdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZURvYygiYW5ub3RhdGlvbkdsb2JhbHMiKSx0aGlzLnBkZk1hbmFnZXIuZW5zdXJlQ2F0YWxvZygiYWNyb0Zvcm0iKV0pLnRoZW4oKGFzeW5jKFtlLHRdKT0+e2lmKCFlKXJldHVybiBudWxsO2NvbnN0IGk9bmV3IFJlZlNldCxhPU9iamVjdC5jcmVhdGUobnVsbCkscz1uZXcgTWFwO2Zvcihjb25zdCBhIG9mIGF3YWl0IHQuZ2V0QXN5bmMoIkZpZWxkcyIpKWF3YWl0IHRoaXMuI1koIiIsYSxzLGUsaSk7Y29uc3Qgcj1bXTtmb3IoY29uc3RbZSx0XW9mIHMpci5wdXNoKFByb21pc2UuYWxsKHQpLnRoZW4oKHQ9PnsodD10LmZpbHRlcigoZT0+ISFlKSkpLmxlbmd0aD4wJiYoYVtlXT10KX0pKSk7YXdhaXQgUHJvbWlzZS5hbGwocik7cmV0dXJuIGF9KSkpfWdldCBoYXNKU0FjdGlvbnMoKXtyZXR1cm4gc2hhZG93KHRoaXMsImhhc0pTQWN0aW9ucyIsdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZURvYygiX3BhcnNlSGFzSlNBY3Rpb25zIikpfWFzeW5jIF9wYXJzZUhhc0pTQWN0aW9ucygpe2NvbnN0W2UsdF09YXdhaXQgUHJvbWlzZS5hbGwoW3RoaXMucGRmTWFuYWdlci5lbnN1cmVDYXRhbG9nKCJqc0FjdGlvbnMiKSx0aGlzLnBkZk1hbmFnZXIuZW5zdXJlRG9jKCJmaWVsZE9iamVjdHMiKV0pO3JldHVybiEhZXx8ISF0JiZPYmplY3QudmFsdWVzKHQpLnNvbWUoKGU9PmUuc29tZSgoZT0+bnVsbCE9PWUuYWN0aW9ucykpKSl9Z2V0IGNhbGN1bGF0aW9uT3JkZXJJZHMoKXtjb25zdCBlPXRoaXMuY2F0YWxvZy5hY3JvRm9ybTtpZighZT8uaGFzKCJDTyIpKXJldHVybiBzaGFkb3codGhpcywiY2FsY3VsYXRpb25PcmRlcklkcyIsbnVsbCk7Y29uc3QgdD1lLmdldCgiQ08iKTtpZighQXJyYXkuaXNBcnJheSh0KXx8MD09PXQubGVuZ3RoKXJldHVybiBzaGFkb3codGhpcywiY2FsY3VsYXRpb25PcmRlcklkcyIsbnVsbCk7Y29uc3QgaT1bXTtmb3IoY29uc3QgZSBvZiB0KWUgaW5zdGFuY2VvZiBSZWYmJmkucHVzaChlLnRvU3RyaW5nKCkpO3JldHVybiAwPT09aS5sZW5ndGg/c2hhZG93KHRoaXMsImNhbGN1bGF0aW9uT3JkZXJJZHMiLG51bGwpOnNoYWRvdyh0aGlzLCJjYWxjdWxhdGlvbk9yZGVySWRzIixpKX1nZXQgYW5ub3RhdGlvbkdsb2JhbHMoKXtyZXR1cm4gc2hhZG93KHRoaXMsImFubm90YXRpb25HbG9iYWxzIixBbm5vdGF0aW9uRmFjdG9yeS5jcmVhdGVHbG9iYWxzKHRoaXMucGRmTWFuYWdlcikpfX1jbGFzcyBCYXNlUGRmTWFuYWdlcntjb25zdHJ1Y3RvcihlKXt0aGlzLmNvbnN0cnVjdG9yPT09QmFzZVBkZk1hbmFnZXImJnVucmVhY2hhYmxlKCJDYW5ub3QgaW5pdGlhbGl6ZSBCYXNlUGRmTWFuYWdlci4iKTt0aGlzLl9kb2NCYXNlVXJsPWZ1bmN0aW9uIHBhcnNlRG9jQmFzZVVybChlKXtpZihlKXtjb25zdCB0PWNyZWF0ZVZhbGlkQWJzb2x1dGVVcmwoZSk7aWYodClyZXR1cm4gdC5ocmVmO3dhcm4oYEludmFsaWQgYWJzb2x1dGUgZG9jQmFzZVVybDogIiR7ZX0iLmApfXJldHVybiBudWxsfShlLmRvY0Jhc2VVcmwpO3RoaXMuX2RvY0lkPWUuZG9jSWQ7dGhpcy5fcGFzc3dvcmQ9ZS5wYXNzd29yZDt0aGlzLmVuYWJsZVhmYT1lLmVuYWJsZVhmYTtlLmV2YWx1YXRvck9wdGlvbnMuaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQmJj1GZWF0dXJlVGVzdC5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZDt0aGlzLmV2YWx1YXRvck9wdGlvbnM9ZS5ldmFsdWF0b3JPcHRpb25zfWdldCBkb2NJZCgpe3JldHVybiB0aGlzLl9kb2NJZH1nZXQgcGFzc3dvcmQoKXtyZXR1cm4gdGhpcy5fcGFzc3dvcmR9Z2V0IGRvY0Jhc2VVcmwoKXtyZXR1cm4gdGhpcy5fZG9jQmFzZVVybH1nZXQgY2F0YWxvZygpe3JldHVybiB0aGlzLnBkZkRvY3VtZW50LmNhdGFsb2d9ZW5zdXJlRG9jKGUsdCl7cmV0dXJuIHRoaXMuZW5zdXJlKHRoaXMucGRmRG9jdW1lbnQsZSx0KX1lbnN1cmVYUmVmKGUsdCl7cmV0dXJuIHRoaXMuZW5zdXJlKHRoaXMucGRmRG9jdW1lbnQueHJlZixlLHQpfWVuc3VyZUNhdGFsb2coZSx0KXtyZXR1cm4gdGhpcy5lbnN1cmUodGhpcy5wZGZEb2N1bWVudC5jYXRhbG9nLGUsdCl9Z2V0UGFnZShlKXtyZXR1cm4gdGhpcy5wZGZEb2N1bWVudC5nZXRQYWdlKGUpfWZvbnRGYWxsYmFjayhlLHQpe3JldHVybiB0aGlzLnBkZkRvY3VtZW50LmZvbnRGYWxsYmFjayhlLHQpfWxvYWRYZmFGb250cyhlLHQpe3JldHVybiB0aGlzLnBkZkRvY3VtZW50LmxvYWRYZmFGb250cyhlLHQpfWxvYWRYZmFJbWFnZXMoKXtyZXR1cm4gdGhpcy5wZGZEb2N1bWVudC5sb2FkWGZhSW1hZ2VzKCl9c2VyaWFsaXplWGZhRGF0YShlKXtyZXR1cm4gdGhpcy5wZGZEb2N1bWVudC5zZXJpYWxpemVYZmFEYXRhKGUpfWNsZWFudXAoZT0hMSl7cmV0dXJuIHRoaXMucGRmRG9jdW1lbnQuY2xlYW51cChlKX1hc3luYyBlbnN1cmUoZSx0LGkpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYGVuc3VyZWAgY2FsbGVkIil9cmVxdWVzdFJhbmdlKGUsdCl7dW5yZWFjaGFibGUoIkFic3RyYWN0IG1ldGhvZCBgcmVxdWVzdFJhbmdlYCBjYWxsZWQiKX1yZXF1ZXN0TG9hZGVkU3RyZWFtKGU9ITEpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYHJlcXVlc3RMb2FkZWRTdHJlYW1gIGNhbGxlZCIpfXNlbmRQcm9ncmVzc2l2ZURhdGEoZSl7dW5yZWFjaGFibGUoIkFic3RyYWN0IG1ldGhvZCBgc2VuZFByb2dyZXNzaXZlRGF0YWAgY2FsbGVkIil9dXBkYXRlUGFzc3dvcmQoZSl7dGhpcy5fcGFzc3dvcmQ9ZX10ZXJtaW5hdGUoZSl7dW5yZWFjaGFibGUoIkFic3RyYWN0IG1ldGhvZCBgdGVybWluYXRlYCBjYWxsZWQiKX19Y2xhc3MgTG9jYWxQZGZNYW5hZ2VyIGV4dGVuZHMgQmFzZVBkZk1hbmFnZXJ7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3QgdD1uZXcgU3RyZWFtKGUuc291cmNlKTt0aGlzLnBkZkRvY3VtZW50PW5ldyBQREZEb2N1bWVudCh0aGlzLHQpO3RoaXMuX2xvYWRlZFN0cmVhbVByb21pc2U9UHJvbWlzZS5yZXNvbHZlKHQpfWFzeW5jIGVuc3VyZShlLHQsaSl7Y29uc3QgYT1lW3RdO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBhP2EuYXBwbHkoZSxpKTphfXJlcXVlc3RSYW5nZShlLHQpe3JldHVybiBQcm9taXNlLnJlc29sdmUoKX1yZXF1ZXN0TG9hZGVkU3RyZWFtKGU9ITEpe3JldHVybiB0aGlzLl9sb2FkZWRTdHJlYW1Qcm9taXNlfXRlcm1pbmF0ZShlKXt9fWNsYXNzIE5ldHdvcmtQZGZNYW5hZ2VyIGV4dGVuZHMgQmFzZVBkZk1hbmFnZXJ7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5zdHJlYW1NYW5hZ2VyPW5ldyBDaHVua2VkU3RyZWFtTWFuYWdlcihlLnNvdXJjZSx7bXNnSGFuZGxlcjplLmhhbmRsZXIsbGVuZ3RoOmUubGVuZ3RoLGRpc2FibGVBdXRvRmV0Y2g6ZS5kaXNhYmxlQXV0b0ZldGNoLHJhbmdlQ2h1bmtTaXplOmUucmFuZ2VDaHVua1NpemV9KTt0aGlzLnBkZkRvY3VtZW50PW5ldyBQREZEb2N1bWVudCh0aGlzLHRoaXMuc3RyZWFtTWFuYWdlci5nZXRTdHJlYW0oKSl9YXN5bmMgZW5zdXJlKGUsdCxpKXt0cnl7Y29uc3QgYT1lW3RdO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBhP2EuYXBwbHkoZSxpKTphfWNhdGNoKGEpe2lmKCEoYSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKSl0aHJvdyBhO2F3YWl0IHRoaXMucmVxdWVzdFJhbmdlKGEuYmVnaW4sYS5lbmQpO3JldHVybiB0aGlzLmVuc3VyZShlLHQsaSl9fXJlcXVlc3RSYW5nZShlLHQpe3JldHVybiB0aGlzLnN0cmVhbU1hbmFnZXIucmVxdWVzdFJhbmdlKGUsdCl9cmVxdWVzdExvYWRlZFN0cmVhbShlPSExKXtyZXR1cm4gdGhpcy5zdHJlYW1NYW5hZ2VyLnJlcXVlc3RBbGxDaHVua3MoZSl9c2VuZFByb2dyZXNzaXZlRGF0YShlKXt0aGlzLnN0cmVhbU1hbmFnZXIub25SZWNlaXZlRGF0YSh7Y2h1bms6ZX0pfXRlcm1pbmF0ZShlKXt0aGlzLnN0cmVhbU1hbmFnZXIuYWJvcnQoZSl9fWNvbnN0IGdvPTEsSW89Mixjbz0xLENvPTIsaG89Myxsbz00LEJvPTUsUW89NixFbz03LHVvPTg7ZnVuY3Rpb24gd3JhcFJlYXNvbihlKXtlIGluc3RhbmNlb2YgRXJyb3J8fCJvYmplY3QiPT10eXBlb2YgZSYmbnVsbCE9PWV8fHVucmVhY2hhYmxlKCd3cmFwUmVhc29uOiBFeHBlY3RlZCAicmVhc29uIiB0byBiZSBhIChwb3NzaWJseSBjbG9uZWQpIEVycm9yLicpO3N3aXRjaChlLm5hbWUpe2Nhc2UiQWJvcnRFeGNlcHRpb24iOnJldHVybiBuZXcgQWJvcnRFeGNlcHRpb24oZS5tZXNzYWdlKTtjYXNlIk1pc3NpbmdQREZFeGNlcHRpb24iOnJldHVybiBuZXcgTWlzc2luZ1BERkV4Y2VwdGlvbihlLm1lc3NhZ2UpO2Nhc2UiUGFzc3dvcmRFeGNlcHRpb24iOnJldHVybiBuZXcgUGFzc3dvcmRFeGNlcHRpb24oZS5tZXNzYWdlLGUuY29kZSk7Y2FzZSJVbmV4cGVjdGVkUmVzcG9uc2VFeGNlcHRpb24iOnJldHVybiBuZXcgVW5leHBlY3RlZFJlc3BvbnNlRXhjZXB0aW9uKGUubWVzc2FnZSxlLnN0YXR1cyk7Y2FzZSJVbmtub3duRXJyb3JFeGNlcHRpb24iOnJldHVybiBuZXcgVW5rbm93bkVycm9yRXhjZXB0aW9uKGUubWVzc2FnZSxlLmRldGFpbHMpO2RlZmF1bHQ6cmV0dXJuIG5ldyBVbmtub3duRXJyb3JFeGNlcHRpb24oZS5tZXNzYWdlLGUudG9TdHJpbmcoKSl9fWNsYXNzIE1lc3NhZ2VIYW5kbGVye2NvbnN0cnVjdG9yKGUsdCxpKXt0aGlzLnNvdXJjZU5hbWU9ZTt0aGlzLnRhcmdldE5hbWU9dDt0aGlzLmNvbU9iaj1pO3RoaXMuY2FsbGJhY2tJZD0xO3RoaXMuc3RyZWFtSWQ9MTt0aGlzLnN0cmVhbVNpbmtzPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy5zdHJlYW1Db250cm9sbGVycz1PYmplY3QuY3JlYXRlKG51bGwpO3RoaXMuY2FsbGJhY2tDYXBhYmlsaXRpZXM9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLmFjdGlvbkhhbmRsZXI9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLl9vbkNvbU9iak9uTWVzc2FnZT1lPT57Y29uc3QgdD1lLmRhdGE7aWYodC50YXJnZXROYW1lIT09dGhpcy5zb3VyY2VOYW1lKXJldHVybjtpZih0LnN0cmVhbSl7dGhpcy4jdih0KTtyZXR1cm59aWYodC5jYWxsYmFjayl7Y29uc3QgZT10LmNhbGxiYWNrSWQsaT10aGlzLmNhbGxiYWNrQ2FwYWJpbGl0aWVzW2VdO2lmKCFpKXRocm93IG5ldyBFcnJvcihgQ2Fubm90IHJlc29sdmUgY2FsbGJhY2sgJHtlfWApO2RlbGV0ZSB0aGlzLmNhbGxiYWNrQ2FwYWJpbGl0aWVzW2VdO2lmKHQuY2FsbGJhY2s9PT1nbylpLnJlc29sdmUodC5kYXRhKTtlbHNle2lmKHQuY2FsbGJhY2shPT1Jbyl0aHJvdyBuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgY2FsbGJhY2sgY2FzZSIpO2kucmVqZWN0KHdyYXBSZWFzb24odC5yZWFzb24pKX1yZXR1cm59Y29uc3QgYT10aGlzLmFjdGlvbkhhbmRsZXJbdC5hY3Rpb25dO2lmKCFhKXRocm93IG5ldyBFcnJvcihgVW5rbm93biBhY3Rpb24gZnJvbSB3b3JrZXI6ICR7dC5hY3Rpb259YCk7aWYodC5jYWxsYmFja0lkKXtjb25zdCBlPXRoaXMuc291cmNlTmFtZSxzPXQuc291cmNlTmFtZTtuZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSl7ZShhKHQuZGF0YSkpfSkpLnRoZW4oKGZ1bmN0aW9uKGEpe2kucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6ZSx0YXJnZXROYW1lOnMsY2FsbGJhY2s6Z28sY2FsbGJhY2tJZDp0LmNhbGxiYWNrSWQsZGF0YTphfSl9KSwoZnVuY3Rpb24oYSl7aS5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTplLHRhcmdldE5hbWU6cyxjYWxsYmFjazpJbyxjYWxsYmFja0lkOnQuY2FsbGJhY2tJZCxyZWFzb246d3JhcFJlYXNvbihhKX0pfSkpfWVsc2UgdC5zdHJlYW1JZD90aGlzLiNLKHQpOmEodC5kYXRhKX07aS5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIix0aGlzLl9vbkNvbU9iak9uTWVzc2FnZSl9b24oZSx0KXtjb25zdCBpPXRoaXMuYWN0aW9uSGFuZGxlcjtpZihpW2VdKXRocm93IG5ldyBFcnJvcihgVGhlcmUgaXMgYWxyZWFkeSBhbiBhY3Rpb25OYW1lIGNhbGxlZCAiJHtlfSJgKTtpW2VdPXR9c2VuZChlLHQsaSl7dGhpcy5jb21PYmoucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6dGhpcy5zb3VyY2VOYW1lLHRhcmdldE5hbWU6dGhpcy50YXJnZXROYW1lLGFjdGlvbjplLGRhdGE6dH0saSl9c2VuZFdpdGhQcm9taXNlKGUsdCxpKXtjb25zdCBhPXRoaXMuY2FsbGJhY2tJZCsrLHM9UHJvbWlzZS53aXRoUmVzb2x2ZXJzKCk7dGhpcy5jYWxsYmFja0NhcGFiaWxpdGllc1thXT1zO3RyeXt0aGlzLmNvbU9iai5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTp0aGlzLnNvdXJjZU5hbWUsdGFyZ2V0TmFtZTp0aGlzLnRhcmdldE5hbWUsYWN0aW9uOmUsY2FsbGJhY2tJZDphLGRhdGE6dH0saSl9Y2F0Y2goZSl7cy5yZWplY3QoZSl9cmV0dXJuIHMucHJvbWlzZX1zZW5kV2l0aFN0cmVhbShlLHQsaSxhKXtjb25zdCBzPXRoaXMuc3RyZWFtSWQrKyxyPXRoaXMuc291cmNlTmFtZSxuPXRoaXMudGFyZ2V0TmFtZSxvPXRoaXMuY29tT2JqO3JldHVybiBuZXcgUmVhZGFibGVTdHJlYW0oe3N0YXJ0Omk9Pntjb25zdCBnPVByb21pc2Uud2l0aFJlc29sdmVycygpO3RoaXMuc3RyZWFtQ29udHJvbGxlcnNbc109e2NvbnRyb2xsZXI6aSxzdGFydENhbGw6ZyxwdWxsQ2FsbDpudWxsLGNhbmNlbENhbGw6bnVsbCxpc0Nsb3NlZDohMX07by5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTpyLHRhcmdldE5hbWU6bixhY3Rpb246ZSxzdHJlYW1JZDpzLGRhdGE6dCxkZXNpcmVkU2l6ZTppLmRlc2lyZWRTaXplfSxhKTtyZXR1cm4gZy5wcm9taXNlfSxwdWxsOmU9Pntjb25zdCB0PVByb21pc2Uud2l0aFJlc29sdmVycygpO3RoaXMuc3RyZWFtQ29udHJvbGxlcnNbc10ucHVsbENhbGw9dDtvLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOnIsdGFyZ2V0TmFtZTpuLHN0cmVhbTpRbyxzdHJlYW1JZDpzLGRlc2lyZWRTaXplOmUuZGVzaXJlZFNpemV9KTtyZXR1cm4gdC5wcm9taXNlfSxjYW5jZWw6ZT0+e2Fzc2VydChlIGluc3RhbmNlb2YgRXJyb3IsImNhbmNlbCBtdXN0IGhhdmUgYSB2YWxpZCByZWFzb24iKTtjb25zdCB0PVByb21pc2Uud2l0aFJlc29sdmVycygpO3RoaXMuc3RyZWFtQ29udHJvbGxlcnNbc10uY2FuY2VsQ2FsbD10O3RoaXMuc3RyZWFtQ29udHJvbGxlcnNbc10uaXNDbG9zZWQ9ITA7by5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTpyLHRhcmdldE5hbWU6bixzdHJlYW06Y28sc3RyZWFtSWQ6cyxyZWFzb246d3JhcFJlYXNvbihlKX0pO3JldHVybiB0LnByb21pc2V9fSxpKX0jSyhlKXtjb25zdCB0PWUuc3RyZWFtSWQsaT10aGlzLnNvdXJjZU5hbWUsYT1lLnNvdXJjZU5hbWUscz10aGlzLmNvbU9iaixyPXRoaXMsbj10aGlzLmFjdGlvbkhhbmRsZXJbZS5hY3Rpb25dLG89e2VucXVldWUoZSxyPTEsbil7aWYodGhpcy5pc0NhbmNlbGxlZClyZXR1cm47Y29uc3Qgbz10aGlzLmRlc2lyZWRTaXplO3RoaXMuZGVzaXJlZFNpemUtPXI7aWYobz4wJiZ0aGlzLmRlc2lyZWRTaXplPD0wKXt0aGlzLnNpbmtDYXBhYmlsaXR5PVByb21pc2Uud2l0aFJlc29sdmVycygpO3RoaXMucmVhZHk9dGhpcy5zaW5rQ2FwYWJpbGl0eS5wcm9taXNlfXMucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6aSx0YXJnZXROYW1lOmEsc3RyZWFtOmxvLHN0cmVhbUlkOnQsY2h1bms6ZX0sbil9LGNsb3NlKCl7aWYoIXRoaXMuaXNDYW5jZWxsZWQpe3RoaXMuaXNDYW5jZWxsZWQ9ITA7cy5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTppLHRhcmdldE5hbWU6YSxzdHJlYW06aG8sc3RyZWFtSWQ6dH0pO2RlbGV0ZSByLnN0cmVhbVNpbmtzW3RdfX0sZXJyb3IoZSl7YXNzZXJ0KGUgaW5zdGFuY2VvZiBFcnJvciwiZXJyb3IgbXVzdCBoYXZlIGEgdmFsaWQgcmVhc29uIik7aWYoIXRoaXMuaXNDYW5jZWxsZWQpe3RoaXMuaXNDYW5jZWxsZWQ9ITA7cy5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTppLHRhcmdldE5hbWU6YSxzdHJlYW06Qm8sc3RyZWFtSWQ6dCxyZWFzb246d3JhcFJlYXNvbihlKX0pfX0sc2lua0NhcGFiaWxpdHk6UHJvbWlzZS53aXRoUmVzb2x2ZXJzKCksb25QdWxsOm51bGwsb25DYW5jZWw6bnVsbCxpc0NhbmNlbGxlZDohMSxkZXNpcmVkU2l6ZTplLmRlc2lyZWRTaXplLHJlYWR5Om51bGx9O28uc2lua0NhcGFiaWxpdHkucmVzb2x2ZSgpO28ucmVhZHk9by5zaW5rQ2FwYWJpbGl0eS5wcm9taXNlO3RoaXMuc3RyZWFtU2lua3NbdF09bztuZXcgUHJvbWlzZSgoZnVuY3Rpb24odCl7dChuKGUuZGF0YSxvKSl9KSkudGhlbigoZnVuY3Rpb24oKXtzLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOmksdGFyZ2V0TmFtZTphLHN0cmVhbTp1byxzdHJlYW1JZDp0LHN1Y2Nlc3M6ITB9KX0pLChmdW5jdGlvbihlKXtzLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOmksdGFyZ2V0TmFtZTphLHN0cmVhbTp1byxzdHJlYW1JZDp0LHJlYXNvbjp3cmFwUmVhc29uKGUpfSl9KSl9I3YoZSl7Y29uc3QgdD1lLnN0cmVhbUlkLGk9dGhpcy5zb3VyY2VOYW1lLGE9ZS5zb3VyY2VOYW1lLHM9dGhpcy5jb21PYmoscj10aGlzLnN0cmVhbUNvbnRyb2xsZXJzW3RdLG49dGhpcy5zdHJlYW1TaW5rc1t0XTtzd2l0Y2goZS5zdHJlYW0pe2Nhc2UgdW86ZS5zdWNjZXNzP3Iuc3RhcnRDYWxsLnJlc29sdmUoKTpyLnN0YXJ0Q2FsbC5yZWplY3Qod3JhcFJlYXNvbihlLnJlYXNvbikpO2JyZWFrO2Nhc2UgRW86ZS5zdWNjZXNzP3IucHVsbENhbGwucmVzb2x2ZSgpOnIucHVsbENhbGwucmVqZWN0KHdyYXBSZWFzb24oZS5yZWFzb24pKTticmVhaztjYXNlIFFvOmlmKCFuKXtzLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOmksdGFyZ2V0TmFtZTphLHN0cmVhbTpFbyxzdHJlYW1JZDp0LHN1Y2Nlc3M6ITB9KTticmVha31uLmRlc2lyZWRTaXplPD0wJiZlLmRlc2lyZWRTaXplPjAmJm4uc2lua0NhcGFiaWxpdHkucmVzb2x2ZSgpO24uZGVzaXJlZFNpemU9ZS5kZXNpcmVkU2l6ZTtuZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSl7ZShuLm9uUHVsbD8uKCkpfSkpLnRoZW4oKGZ1bmN0aW9uKCl7cy5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTppLHRhcmdldE5hbWU6YSxzdHJlYW06RW8sc3RyZWFtSWQ6dCxzdWNjZXNzOiEwfSl9KSwoZnVuY3Rpb24oZSl7cy5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTppLHRhcmdldE5hbWU6YSxzdHJlYW06RW8sc3RyZWFtSWQ6dCxyZWFzb246d3JhcFJlYXNvbihlKX0pfSkpO2JyZWFrO2Nhc2UgbG86YXNzZXJ0KHIsImVucXVldWUgc2hvdWxkIGhhdmUgc3RyZWFtIGNvbnRyb2xsZXIiKTtpZihyLmlzQ2xvc2VkKWJyZWFrO3IuY29udHJvbGxlci5lbnF1ZXVlKGUuY2h1bmspO2JyZWFrO2Nhc2UgaG86YXNzZXJ0KHIsImNsb3NlIHNob3VsZCBoYXZlIHN0cmVhbSBjb250cm9sbGVyIik7aWYoci5pc0Nsb3NlZClicmVhaztyLmlzQ2xvc2VkPSEwO3IuY29udHJvbGxlci5jbG9zZSgpO3RoaXMuI1Qocix0KTticmVhaztjYXNlIEJvOmFzc2VydChyLCJlcnJvciBzaG91bGQgaGF2ZSBzdHJlYW0gY29udHJvbGxlciIpO3IuY29udHJvbGxlci5lcnJvcih3cmFwUmVhc29uKGUucmVhc29uKSk7dGhpcy4jVChyLHQpO2JyZWFrO2Nhc2UgQ286ZS5zdWNjZXNzP3IuY2FuY2VsQ2FsbC5yZXNvbHZlKCk6ci5jYW5jZWxDYWxsLnJlamVjdCh3cmFwUmVhc29uKGUucmVhc29uKSk7dGhpcy4jVChyLHQpO2JyZWFrO2Nhc2UgY286aWYoIW4pYnJlYWs7bmV3IFByb21pc2UoKGZ1bmN0aW9uKHQpe3Qobi5vbkNhbmNlbD8uKHdyYXBSZWFzb24oZS5yZWFzb24pKSl9KSkudGhlbigoZnVuY3Rpb24oKXtzLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOmksdGFyZ2V0TmFtZTphLHN0cmVhbTpDbyxzdHJlYW1JZDp0LHN1Y2Nlc3M6ITB9KX0pLChmdW5jdGlvbihlKXtzLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOmksdGFyZ2V0TmFtZTphLHN0cmVhbTpDbyxzdHJlYW1JZDp0LHJlYXNvbjp3cmFwUmVhc29uKGUpfSl9KSk7bi5zaW5rQ2FwYWJpbGl0eS5yZWplY3Qod3JhcFJlYXNvbihlLnJlYXNvbikpO24uaXNDYW5jZWxsZWQ9ITA7ZGVsZXRlIHRoaXMuc3RyZWFtU2lua3NbdF07YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgc3RyZWFtIGNhc2UiKX19YXN5bmMjVChlLHQpe2F3YWl0IFByb21pc2UuYWxsU2V0dGxlZChbZS5zdGFydENhbGw/LnByb21pc2UsZS5wdWxsQ2FsbD8ucHJvbWlzZSxlLmNhbmNlbENhbGw/LnByb21pc2VdKTtkZWxldGUgdGhpcy5zdHJlYW1Db250cm9sbGVyc1t0XX1kZXN0cm95KCl7dGhpcy5jb21PYmoucmVtb3ZlRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsdGhpcy5fb25Db21PYmpPbk1lc3NhZ2UpfX1jbGFzcyBQREZXb3JrZXJTdHJlYW17Y29uc3RydWN0b3IoZSl7dGhpcy5fbXNnSGFuZGxlcj1lO3RoaXMuX2NvbnRlbnRMZW5ndGg9bnVsbDt0aGlzLl9mdWxsUmVxdWVzdFJlYWRlcj1udWxsO3RoaXMuX3JhbmdlUmVxdWVzdFJlYWRlcnM9W119Z2V0RnVsbFJlYWRlcigpe2Fzc2VydCghdGhpcy5fZnVsbFJlcXVlc3RSZWFkZXIsIlBERldvcmtlclN0cmVhbS5nZXRGdWxsUmVhZGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbmNlLiIpO3RoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyPW5ldyBQREZXb3JrZXJTdHJlYW1SZWFkZXIodGhpcy5fbXNnSGFuZGxlcik7cmV0dXJuIHRoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyfWdldFJhbmdlUmVhZGVyKGUsdCl7Y29uc3QgaT1uZXcgUERGV29ya2VyU3RyZWFtUmFuZ2VSZWFkZXIoZSx0LHRoaXMuX21zZ0hhbmRsZXIpO3RoaXMuX3JhbmdlUmVxdWVzdFJlYWRlcnMucHVzaChpKTtyZXR1cm4gaX1jYW5jZWxBbGxSZXF1ZXN0cyhlKXt0aGlzLl9mdWxsUmVxdWVzdFJlYWRlcj8uY2FuY2VsKGUpO2Zvcihjb25zdCB0IG9mIHRoaXMuX3JhbmdlUmVxdWVzdFJlYWRlcnMuc2xpY2UoMCkpdC5jYW5jZWwoZSl9fWNsYXNzIFBERldvcmtlclN0cmVhbVJlYWRlcntjb25zdHJ1Y3RvcihlKXt0aGlzLl9tc2dIYW5kbGVyPWU7dGhpcy5vblByb2dyZXNzPW51bGw7dGhpcy5fY29udGVudExlbmd0aD1udWxsO3RoaXMuX2lzUmFuZ2VTdXBwb3J0ZWQ9ITE7dGhpcy5faXNTdHJlYW1pbmdTdXBwb3J0ZWQ9ITE7Y29uc3QgdD10aGlzLl9tc2dIYW5kbGVyLnNlbmRXaXRoU3RyZWFtKCJHZXRSZWFkZXIiKTt0aGlzLl9yZWFkZXI9dC5nZXRSZWFkZXIoKTt0aGlzLl9oZWFkZXJzUmVhZHk9dGhpcy5fbXNnSGFuZGxlci5zZW5kV2l0aFByb21pc2UoIlJlYWRlckhlYWRlcnNSZWFkeSIpLnRoZW4oKGU9Pnt0aGlzLl9pc1N0cmVhbWluZ1N1cHBvcnRlZD1lLmlzU3RyZWFtaW5nU3VwcG9ydGVkO3RoaXMuX2lzUmFuZ2VTdXBwb3J0ZWQ9ZS5pc1JhbmdlU3VwcG9ydGVkO3RoaXMuX2NvbnRlbnRMZW5ndGg9ZS5jb250ZW50TGVuZ3RofSkpfWdldCBoZWFkZXJzUmVhZHkoKXtyZXR1cm4gdGhpcy5faGVhZGVyc1JlYWR5fWdldCBjb250ZW50TGVuZ3RoKCl7cmV0dXJuIHRoaXMuX2NvbnRlbnRMZW5ndGh9Z2V0IGlzU3RyZWFtaW5nU3VwcG9ydGVkKCl7cmV0dXJuIHRoaXMuX2lzU3RyZWFtaW5nU3VwcG9ydGVkfWdldCBpc1JhbmdlU3VwcG9ydGVkKCl7cmV0dXJuIHRoaXMuX2lzUmFuZ2VTdXBwb3J0ZWR9YXN5bmMgcmVhZCgpe2NvbnN0e3ZhbHVlOmUsZG9uZTp0fT1hd2FpdCB0aGlzLl9yZWFkZXIucmVhZCgpO3JldHVybiB0P3t2YWx1ZTp2b2lkIDAsZG9uZTohMH06e3ZhbHVlOmUuYnVmZmVyLGRvbmU6ITF9fWNhbmNlbChlKXt0aGlzLl9yZWFkZXIuY2FuY2VsKGUpfX1jbGFzcyBQREZXb3JrZXJTdHJlYW1SYW5nZVJlYWRlcntjb25zdHJ1Y3RvcihlLHQsaSl7dGhpcy5fbXNnSGFuZGxlcj1pO3RoaXMub25Qcm9ncmVzcz1udWxsO2NvbnN0IGE9dGhpcy5fbXNnSGFuZGxlci5zZW5kV2l0aFN0cmVhbSgiR2V0UmFuZ2VSZWFkZXIiLHtiZWdpbjplLGVuZDp0fSk7dGhpcy5fcmVhZGVyPWEuZ2V0UmVhZGVyKCl9Z2V0IGlzU3RyZWFtaW5nU3VwcG9ydGVkKCl7cmV0dXJuITF9YXN5bmMgcmVhZCgpe2NvbnN0e3ZhbHVlOmUsZG9uZTp0fT1hd2FpdCB0aGlzLl9yZWFkZXIucmVhZCgpO3JldHVybiB0P3t2YWx1ZTp2b2lkIDAsZG9uZTohMH06e3ZhbHVlOmUuYnVmZmVyLGRvbmU6ITF9fWNhbmNlbChlKXt0aGlzLl9yZWFkZXIuY2FuY2VsKGUpfX1jbGFzcyBXb3JrZXJUYXNre2NvbnN0cnVjdG9yKGUpe3RoaXMubmFtZT1lO3RoaXMudGVybWluYXRlZD0hMTt0aGlzLl9jYXBhYmlsaXR5PVByb21pc2Uud2l0aFJlc29sdmVycygpfWdldCBmaW5pc2hlZCgpe3JldHVybiB0aGlzLl9jYXBhYmlsaXR5LnByb21pc2V9ZmluaXNoKCl7dGhpcy5fY2FwYWJpbGl0eS5yZXNvbHZlKCl9dGVybWluYXRlKCl7dGhpcy50ZXJtaW5hdGVkPSEwfWVuc3VyZU5vdFRlcm1pbmF0ZWQoKXtpZih0aGlzLnRlcm1pbmF0ZWQpdGhyb3cgbmV3IEVycm9yKCJXb3JrZXIgdGFzayB3YXMgdGVybWluYXRlZCIpfX1jbGFzcyBXb3JrZXJNZXNzYWdlSGFuZGxlcntzdGF0aWMgc2V0dXAoZSx0KXtsZXQgaT0hMTtlLm9uKCJ0ZXN0IiwoZnVuY3Rpb24odCl7aWYoIWkpe2k9ITA7ZS5zZW5kKCJ0ZXN0Iix0IGluc3RhbmNlb2YgVWludDhBcnJheSl9fSkpO2Uub24oImNvbmZpZ3VyZSIsKGZ1bmN0aW9uKGUpeyFmdW5jdGlvbiBzZXRWZXJib3NpdHlMZXZlbChlKXtOdW1iZXIuaXNJbnRlZ2VyKGUpJiYoc3Q9ZSl9KGUudmVyYm9zaXR5KX0pKTtlLm9uKCJHZXREb2NSZXF1ZXN0IiwoZnVuY3Rpb24oZSl7cmV0dXJuIFdvcmtlck1lc3NhZ2VIYW5kbGVyLmNyZWF0ZURvY3VtZW50SGFuZGxlcihlLHQpfSkpfXN0YXRpYyBjcmVhdGVEb2N1bWVudEhhbmRsZXIoZSx0KXtsZXQgaSxhPSExLHM9bnVsbDtjb25zdCByPW5ldyBTZXQsbj1nZXRWZXJib3NpdHlMZXZlbCgpLHtkb2NJZDpvLGFwaVZlcnNpb246Z309ZSxjPSI0LjIuNjciO2lmKGchPT1jKXRocm93IG5ldyBFcnJvcihgVGhlIEFQSSB2ZXJzaW9uICIke2d9IiBkb2VzIG5vdCBtYXRjaCB0aGUgV29ya2VyIHZlcnNpb24gIiR7Y30iLmApO2NvbnN0IEM9W107Zm9yKGNvbnN0IGUgaW5bXSlDLnB1c2goZSk7aWYoQy5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJUaGUgYEFycmF5LnByb3RvdHlwZWAgY29udGFpbnMgdW5leHBlY3RlZCBlbnVtZXJhYmxlIHByb3BlcnRpZXM6ICIrQy5qb2luKCIsICIpKyI7IHRodXMgYnJlYWtpbmcgZS5nLiBgZm9yLi4uaW5gIGl0ZXJhdGlvbiBvZiBgQXJyYXlgcy4iKTtjb25zdCBoPW8rIl93b3JrZXIiO2xldCBsPW5ldyBNZXNzYWdlSGFuZGxlcihoLG8sdCk7ZnVuY3Rpb24gZW5zdXJlTm90VGVybWluYXRlZCgpe2lmKGEpdGhyb3cgbmV3IEVycm9yKCJXb3JrZXIgd2FzIHRlcm1pbmF0ZWQiKX1mdW5jdGlvbiBzdGFydFdvcmtlclRhc2soZSl7ci5hZGQoZSl9ZnVuY3Rpb24gZmluaXNoV29ya2VyVGFzayhlKXtlLmZpbmlzaCgpO3IuZGVsZXRlKGUpfWFzeW5jIGZ1bmN0aW9uIGxvYWREb2N1bWVudChlKXthd2FpdCBpLmVuc3VyZURvYygiY2hlY2tIZWFkZXIiKTthd2FpdCBpLmVuc3VyZURvYygicGFyc2VTdGFydFhSZWYiKTthd2FpdCBpLmVuc3VyZURvYygicGFyc2UiLFtlXSk7YXdhaXQgaS5lbnN1cmVEb2MoImNoZWNrRmlyc3RQYWdlIixbZV0pO2F3YWl0IGkuZW5zdXJlRG9jKCJjaGVja0xhc3RQYWdlIixbZV0pO2NvbnN0IHQ9YXdhaXQgaS5lbnN1cmVEb2MoImlzUHVyZVhmYSIpO2lmKHQpe2NvbnN0IGU9bmV3IFdvcmtlclRhc2soImxvYWRYZmFGb250cyIpO3N0YXJ0V29ya2VyVGFzayhlKTthd2FpdCBQcm9taXNlLmFsbChbaS5sb2FkWGZhRm9udHMobCxlKS5jYXRjaCgoZT0+e30pKS50aGVuKCgoKT0+ZmluaXNoV29ya2VyVGFzayhlKSkpLGkubG9hZFhmYUltYWdlcygpXSl9Y29uc3RbYSxzXT1hd2FpdCBQcm9taXNlLmFsbChbaS5lbnN1cmVEb2MoIm51bVBhZ2VzIiksaS5lbnN1cmVEb2MoImZpbmdlcnByaW50cyIpXSk7cmV0dXJue251bVBhZ2VzOmEsZmluZ2VycHJpbnRzOnMsaHRtbEZvclhmYTp0P2F3YWl0IGkuZW5zdXJlRG9jKCJodG1sRm9yWGZhIik6bnVsbH19ZnVuY3Rpb24gZ2V0UGRmTWFuYWdlcih7ZGF0YTplLHBhc3N3b3JkOnQsZGlzYWJsZUF1dG9GZXRjaDppLHJhbmdlQ2h1bmtTaXplOmEsbGVuZ3RoOnIsZG9jQmFzZVVybDpuLGVuYWJsZVhmYTpnLGV2YWx1YXRvck9wdGlvbnM6Y30pe2NvbnN0IEM9e3NvdXJjZTpudWxsLGRpc2FibGVBdXRvRmV0Y2g6aSxkb2NCYXNlVXJsOm4sZG9jSWQ6byxlbmFibGVYZmE6ZyxldmFsdWF0b3JPcHRpb25zOmMsaGFuZGxlcjpsLGxlbmd0aDpyLHBhc3N3b3JkOnQscmFuZ2VDaHVua1NpemU6YX0saD1Qcm9taXNlLndpdGhSZXNvbHZlcnMoKTtsZXQgUTtpZihlKXt0cnl7Qy5zb3VyY2U9ZTtRPW5ldyBMb2NhbFBkZk1hbmFnZXIoQyk7aC5yZXNvbHZlKFEpfWNhdGNoKGUpe2gucmVqZWN0KGUpfXJldHVybiBoLnByb21pc2V9bGV0IEUsdT1bXTt0cnl7RT1uZXcgUERGV29ya2VyU3RyZWFtKGwpfWNhdGNoKGUpe2gucmVqZWN0KGUpO3JldHVybiBoLnByb21pc2V9Y29uc3QgZD1FLmdldEZ1bGxSZWFkZXIoKTtkLmhlYWRlcnNSZWFkeS50aGVuKChmdW5jdGlvbigpe2lmKGQuaXNSYW5nZVN1cHBvcnRlZCl7Qy5zb3VyY2U9RTtDLmxlbmd0aD1kLmNvbnRlbnRMZW5ndGg7Qy5kaXNhYmxlQXV0b0ZldGNofHw9ZC5pc1N0cmVhbWluZ1N1cHBvcnRlZDtRPW5ldyBOZXR3b3JrUGRmTWFuYWdlcihDKTtmb3IoY29uc3QgZSBvZiB1KVEuc2VuZFByb2dyZXNzaXZlRGF0YShlKTt1PVtdO2gucmVzb2x2ZShRKTtzPW51bGx9fSkpLmNhdGNoKChmdW5jdGlvbihlKXtoLnJlamVjdChlKTtzPW51bGx9KSk7bGV0IGY9MDtuZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSx0KXtjb25zdCByZWFkQ2h1bms9ZnVuY3Rpb24oe3ZhbHVlOmUsZG9uZTppfSl7dHJ5e2Vuc3VyZU5vdFRlcm1pbmF0ZWQoKTtpZihpKXtRfHxmdW5jdGlvbigpe2NvbnN0IGU9YXJyYXlCdWZmZXJzVG9CeXRlcyh1KTtyJiZlLmxlbmd0aCE9PXImJndhcm4oInJlcG9ydGVkIEhUVFAgbGVuZ3RoIGlzIGRpZmZlcmVudCBmcm9tIGFjdHVhbCIpO3RyeXtDLnNvdXJjZT1lO1E9bmV3IExvY2FsUGRmTWFuYWdlcihDKTtoLnJlc29sdmUoUSl9Y2F0Y2goZSl7aC5yZWplY3QoZSl9dT1bXX0oKTtzPW51bGw7cmV0dXJufWYrPWUuYnl0ZUxlbmd0aDtkLmlzU3RyZWFtaW5nU3VwcG9ydGVkfHxsLnNlbmQoIkRvY1Byb2dyZXNzIix7bG9hZGVkOmYsdG90YWw6TWF0aC5tYXgoZixkLmNvbnRlbnRMZW5ndGh8fDApfSk7UT9RLnNlbmRQcm9ncmVzc2l2ZURhdGEoZSk6dS5wdXNoKGUpO2QucmVhZCgpLnRoZW4ocmVhZENodW5rLHQpfWNhdGNoKGUpe3QoZSl9fTtkLnJlYWQoKS50aGVuKHJlYWRDaHVuayx0KX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7aC5yZWplY3QoZSk7cz1udWxsfSkpO3M9ZnVuY3Rpb24oZSl7RS5jYW5jZWxBbGxSZXF1ZXN0cyhlKX07cmV0dXJuIGgucHJvbWlzZX1sLm9uKCJHZXRQYWdlIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGkuZ2V0UGFnZShlLnBhZ2VJbmRleCkudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIFByb21pc2UuYWxsKFtpLmVuc3VyZShlLCJyb3RhdGUiKSxpLmVuc3VyZShlLCJyZWYiKSxpLmVuc3VyZShlLCJ1c2VyVW5pdCIpLGkuZW5zdXJlKGUsInZpZXciKV0pLnRoZW4oKGZ1bmN0aW9uKFtlLHQsaSxhXSl7cmV0dXJue3JvdGF0ZTplLHJlZjp0LHJlZlN0cjp0Py50b1N0cmluZygpPz9udWxsLHVzZXJVbml0OmksdmlldzphfX0pKX0pKX0pKTtsLm9uKCJHZXRQYWdlSW5kZXgiLChmdW5jdGlvbihlKXtjb25zdCB0PVJlZi5nZXQoZS5udW0sZS5nZW4pO3JldHVybiBpLmVuc3VyZUNhdGFsb2coImdldFBhZ2VJbmRleCIsW3RdKX0pKTtsLm9uKCJHZXREZXN0aW5hdGlvbnMiLChmdW5jdGlvbihlKXtyZXR1cm4gaS5lbnN1cmVDYXRhbG9nKCJkZXN0aW5hdGlvbnMiKX0pKTtsLm9uKCJHZXREZXN0aW5hdGlvbiIsKGZ1bmN0aW9uKGUpe3JldHVybiBpLmVuc3VyZUNhdGFsb2coImdldERlc3RpbmF0aW9uIixbZS5pZF0pfSkpO2wub24oIkdldFBhZ2VMYWJlbHMiLChmdW5jdGlvbihlKXtyZXR1cm4gaS5lbnN1cmVDYXRhbG9nKCJwYWdlTGFiZWxzIil9KSk7bC5vbigiR2V0UGFnZUxheW91dCIsKGZ1bmN0aW9uKGUpe3JldHVybiBpLmVuc3VyZUNhdGFsb2coInBhZ2VMYXlvdXQiKX0pKTtsLm9uKCJHZXRQYWdlTW9kZSIsKGZ1bmN0aW9uKGUpe3JldHVybiBpLmVuc3VyZUNhdGFsb2coInBhZ2VNb2RlIil9KSk7bC5vbigiR2V0Vmlld2VyUHJlZmVyZW5jZXMiLChmdW5jdGlvbihlKXtyZXR1cm4gaS5lbnN1cmVDYXRhbG9nKCJ2aWV3ZXJQcmVmZXJlbmNlcyIpfSkpO2wub24oIkdldE9wZW5BY3Rpb24iLChmdW5jdGlvbihlKXtyZXR1cm4gaS5lbnN1cmVDYXRhbG9nKCJvcGVuQWN0aW9uIil9KSk7bC5vbigiR2V0QXR0YWNobWVudHMiLChmdW5jdGlvbihlKXtyZXR1cm4gaS5lbnN1cmVDYXRhbG9nKCJhdHRhY2htZW50cyIpfSkpO2wub24oIkdldERvY0pTQWN0aW9ucyIsKGZ1bmN0aW9uKGUpe3JldHVybiBpLmVuc3VyZUNhdGFsb2coImpzQWN0aW9ucyIpfSkpO2wub24oIkdldFBhZ2VKU0FjdGlvbnMiLChmdW5jdGlvbih7cGFnZUluZGV4OmV9KXtyZXR1cm4gaS5nZXRQYWdlKGUpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBpLmVuc3VyZShlLCJqc0FjdGlvbnMiKX0pKX0pKTtsLm9uKCJHZXRPdXRsaW5lIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGkuZW5zdXJlQ2F0YWxvZygiZG9jdW1lbnRPdXRsaW5lIil9KSk7bC5vbigiR2V0T3B0aW9uYWxDb250ZW50Q29uZmlnIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGkuZW5zdXJlQ2F0YWxvZygib3B0aW9uYWxDb250ZW50Q29uZmlnIil9KSk7bC5vbigiR2V0UGVybWlzc2lvbnMiLChmdW5jdGlvbihlKXtyZXR1cm4gaS5lbnN1cmVDYXRhbG9nKCJwZXJtaXNzaW9ucyIpfSkpO2wub24oIkdldE1ldGFkYXRhIiwoZnVuY3Rpb24oZSl7cmV0dXJuIFByb21pc2UuYWxsKFtpLmVuc3VyZURvYygiZG9jdW1lbnRJbmZvIiksaS5lbnN1cmVDYXRhbG9nKCJtZXRhZGF0YSIpXSl9KSk7bC5vbigiR2V0TWFya0luZm8iLChmdW5jdGlvbihlKXtyZXR1cm4gaS5lbnN1cmVDYXRhbG9nKCJtYXJrSW5mbyIpfSkpO2wub24oIkdldERhdGEiLChmdW5jdGlvbihlKXtyZXR1cm4gaS5yZXF1ZXN0TG9hZGVkU3RyZWFtKCkudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIGUuYnl0ZXN9KSl9KSk7bC5vbigiR2V0QW5ub3RhdGlvbnMiLChmdW5jdGlvbih7cGFnZUluZGV4OmUsaW50ZW50OnR9KXtyZXR1cm4gaS5nZXRQYWdlKGUpLnRoZW4oKGZ1bmN0aW9uKGkpe2NvbnN0IGE9bmV3IFdvcmtlclRhc2soYEdldEFubm90YXRpb25zOiBwYWdlICR7ZX1gKTtzdGFydFdvcmtlclRhc2soYSk7cmV0dXJuIGkuZ2V0QW5ub3RhdGlvbnNEYXRhKGwsYSx0KS50aGVuKChlPT57ZmluaXNoV29ya2VyVGFzayhhKTtyZXR1cm4gZX0pLChlPT57ZmluaXNoV29ya2VyVGFzayhhKTt0aHJvdyBlfSkpfSkpfSkpO2wub24oIkdldEZpZWxkT2JqZWN0cyIsKGZ1bmN0aW9uKGUpe3JldHVybiBpLmVuc3VyZURvYygiZmllbGRPYmplY3RzIil9KSk7bC5vbigiSGFzSlNBY3Rpb25zIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGkuZW5zdXJlRG9jKCJoYXNKU0FjdGlvbnMiKX0pKTtsLm9uKCJHZXRDYWxjdWxhdGlvbk9yZGVySWRzIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGkuZW5zdXJlRG9jKCJjYWxjdWxhdGlvbk9yZGVySWRzIil9KSk7bC5vbigiU2F2ZURvY3VtZW50IiwoYXN5bmMgZnVuY3Rpb24oe2lzUHVyZVhmYTplLG51bVBhZ2VzOnQsYW5ub3RhdGlvblN0b3JhZ2U6YSxmaWxlbmFtZTpzfSl7Y29uc3Qgcj1baS5yZXF1ZXN0TG9hZGVkU3RyZWFtKCksaS5lbnN1cmVDYXRhbG9nKCJhY3JvRm9ybSIpLGkuZW5zdXJlQ2F0YWxvZygiYWNyb0Zvcm1SZWYiKSxpLmVuc3VyZURvYygic3RhcnRYUmVmIiksaS5lbnN1cmVEb2MoInhyZWYiKSxpLmVuc3VyZURvYygibGluZWFyaXphdGlvbiIpLGkuZW5zdXJlQ2F0YWxvZygic3RydWN0VHJlZVJvb3QiKV0sbj1bXSxvPWU/bnVsbDpnZXROZXdBbm5vdGF0aW9uc01hcChhKSxbZyxjLEMsaCxRLEUsdV09YXdhaXQgUHJvbWlzZS5hbGwociksZD1RLnRyYWlsZXIuZ2V0UmF3KCJSb290Iil8fG51bGw7bGV0IGY7aWYobyl7dT9hd2FpdCB1LmNhblVwZGF0ZVN0cnVjdFRyZWUoe3BkZk1hbmFnZXI6aSx4cmVmOlEsbmV3QW5ub3RhdGlvbnNCeVBhZ2U6b30pJiYoZj11KTphd2FpdCBTdHJ1Y3RUcmVlUm9vdC5jYW5DcmVhdGVTdHJ1Y3R1cmVUcmVlKHtjYXRhbG9nUmVmOmQscGRmTWFuYWdlcjppLG5ld0Fubm90YXRpb25zQnlQYWdlOm99KSYmKGY9bnVsbCk7Y29uc3QgZT1Bbm5vdGF0aW9uRmFjdG9yeS5nZW5lcmF0ZUltYWdlcyhhLnZhbHVlcygpLFEsaS5ldmFsdWF0b3JPcHRpb25zLmlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkKSx0PXZvaWQgMD09PWY/bjpbXTtmb3IoY29uc3RbYSxzXW9mIG8pdC5wdXNoKGkuZ2V0UGFnZShhKS50aGVuKCh0PT57Y29uc3QgaT1uZXcgV29ya2VyVGFzayhgU2F2ZSAoZWRpdG9yKTogcGFnZSAke2F9YCk7cmV0dXJuIHQuc2F2ZU5ld0Fubm90YXRpb25zKGwsaSxzLGUpLmZpbmFsbHkoKGZ1bmN0aW9uKCl7ZmluaXNoV29ya2VyVGFzayhpKX0pKX0pKSk7bnVsbD09PWY/bi5wdXNoKFByb21pc2UuYWxsKHQpLnRoZW4oKGFzeW5jIGU9Pnthd2FpdCBTdHJ1Y3RUcmVlUm9vdC5jcmVhdGVTdHJ1Y3R1cmVUcmVlKHtuZXdBbm5vdGF0aW9uc0J5UGFnZTpvLHhyZWY6USxjYXRhbG9nUmVmOmQscGRmTWFuYWdlcjppLG5ld1JlZnM6ZX0pO3JldHVybiBlfSkpKTpmJiZuLnB1c2goUHJvbWlzZS5hbGwodCkudGhlbigoYXN5bmMgZT0+e2F3YWl0IGYudXBkYXRlU3RydWN0dXJlVHJlZSh7bmV3QW5ub3RhdGlvbnNCeVBhZ2U6byxwZGZNYW5hZ2VyOmksbmV3UmVmczplfSk7cmV0dXJuIGV9KSkpfWlmKGUpbi5wdXNoKGkuc2VyaWFsaXplWGZhRGF0YShhKSk7ZWxzZSBmb3IobGV0IGU9MDtlPHQ7ZSsrKW4ucHVzaChpLmdldFBhZ2UoZSkudGhlbigoZnVuY3Rpb24odCl7Y29uc3QgaT1uZXcgV29ya2VyVGFzayhgU2F2ZTogcGFnZSAke2V9YCk7cmV0dXJuIHQuc2F2ZShsLGksYSkuZmluYWxseSgoZnVuY3Rpb24oKXtmaW5pc2hXb3JrZXJUYXNrKGkpfSkpfSkpKTtjb25zdCBwPWF3YWl0IFByb21pc2UuYWxsKG4pO2xldCBtPVtdLHk9bnVsbDtpZihlKXt5PXBbMF07aWYoIXkpcmV0dXJuIGcuYnl0ZXN9ZWxzZXttPXAuZmxhdCgyKTtpZigwPT09bS5sZW5ndGgpcmV0dXJuIGcuYnl0ZXN9Y29uc3Qgdz1DJiZjIGluc3RhbmNlb2YgRGljdCYmbS5zb21lKChlPT5lLm5lZWRBcHBlYXJhbmNlcykpLGI9YyBpbnN0YW5jZW9mIERpY3QmJmMuZ2V0KCJYRkEiKXx8bnVsbDtsZXQgRD1udWxsLEY9ITE7aWYoQXJyYXkuaXNBcnJheShiKSl7Zm9yKGxldCBlPTAsdD1iLmxlbmd0aDtlPHQ7ZSs9MilpZigiZGF0YXNldHMiPT09YltlXSl7RD1iW2UrMV07Rj0hMH1udWxsPT09RCYmKEQ9US5nZXROZXdUZW1wb3JhcnlSZWYoKSl9ZWxzZSBiJiZ3YXJuKCJVbnN1cHBvcnRlZCBYRkEgdHlwZS4iKTtsZXQgUz1PYmplY3QuY3JlYXRlKG51bGwpO2lmKFEudHJhaWxlcil7Y29uc3QgZT1PYmplY3QuY3JlYXRlKG51bGwpLHQ9US50cmFpbGVyLmdldCgiSW5mbyIpfHxudWxsO3QgaW5zdGFuY2VvZiBEaWN0JiZ0LmZvckVhY2goKCh0LGkpPT57InN0cmluZyI9PXR5cGVvZiBpJiYoZVt0XT1zdHJpbmdUb1BERlN0cmluZyhpKSl9KSk7Uz17cm9vdFJlZjpkLGVuY3J5cHRSZWY6US50cmFpbGVyLmdldFJhdygiRW5jcnlwdCIpfHxudWxsLG5ld1JlZjpRLmdldE5ld1RlbXBvcmFyeVJlZigpLGluZm9SZWY6US50cmFpbGVyLmdldFJhdygiSW5mbyIpfHxudWxsLGluZm86ZSxmaWxlSWRzOlEudHJhaWxlci5nZXQoIklEIil8fG51bGwsc3RhcnRYUmVmOkU/aDpRLmxhc3RYUmVmU3RyZWFtUG9zPz9oLGZpbGVuYW1lOnN9fXJldHVybiBpbmNyZW1lbnRhbFVwZGF0ZSh7b3JpZ2luYWxEYXRhOmcuYnl0ZXMseHJlZkluZm86UyxuZXdSZWZzOm0seHJlZjpRLGhhc1hmYTohIWIseGZhRGF0YXNldHNSZWY6RCxoYXNYZmFEYXRhc2V0c0VudHJ5OkYsbmVlZEFwcGVhcmFuY2VzOncsYWNyb0Zvcm1SZWY6QyxhY3JvRm9ybTpjLHhmYURhdGE6eSx1c2VYcmVmU3RyZWFtOmlzRGljdChRLnRvcERpY3QsIlhSZWYiKX0pLmZpbmFsbHkoKCgpPT57US5yZXNldE5ld1RlbXBvcmFyeVJlZigpfSkpfSkpO2wub24oIkdldE9wZXJhdG9yTGlzdCIsKGZ1bmN0aW9uKGUsdCl7Y29uc3QgYT1lLnBhZ2VJbmRleDtpLmdldFBhZ2UoYSkudGhlbigoZnVuY3Rpb24oaSl7Y29uc3Qgcz1uZXcgV29ya2VyVGFzayhgR2V0T3BlcmF0b3JMaXN0OiBwYWdlICR7YX1gKTtzdGFydFdvcmtlclRhc2socyk7Y29uc3Qgcj1uPj1wQS5JTkZPUz9EYXRlLm5vdygpOjA7aS5nZXRPcGVyYXRvckxpc3Qoe2hhbmRsZXI6bCxzaW5rOnQsdGFzazpzLGludGVudDplLmludGVudCxjYWNoZUtleTplLmNhY2hlS2V5LGFubm90YXRpb25TdG9yYWdlOmUuYW5ub3RhdGlvblN0b3JhZ2V9KS50aGVuKChmdW5jdGlvbihlKXtmaW5pc2hXb3JrZXJUYXNrKHMpO3ImJmluZm8oYHBhZ2U9JHthKzF9IC0gZ2V0T3BlcmF0b3JMaXN0OiB0aW1lPSR7RGF0ZS5ub3coKS1yfW1zLCBsZW49JHtlLmxlbmd0aH1gKTt0LmNsb3NlKCl9KSwoZnVuY3Rpb24oZSl7ZmluaXNoV29ya2VyVGFzayhzKTtzLnRlcm1pbmF0ZWR8fHQuZXJyb3IoZSl9KSl9KSl9KSk7bC5vbigiR2V0VGV4dENvbnRlbnQiLChmdW5jdGlvbihlLHQpe2NvbnN0e3BhZ2VJbmRleDphLGluY2x1ZGVNYXJrZWRDb250ZW50OnMsZGlzYWJsZU5vcm1hbGl6YXRpb246cn09ZTtpLmdldFBhZ2UoYSkudGhlbigoZnVuY3Rpb24oZSl7Y29uc3QgaT1uZXcgV29ya2VyVGFzaygiR2V0VGV4dENvbnRlbnQ6IHBhZ2UgIithKTtzdGFydFdvcmtlclRhc2soaSk7Y29uc3Qgbz1uPj1wQS5JTkZPUz9EYXRlLm5vdygpOjA7ZS5leHRyYWN0VGV4dENvbnRlbnQoe2hhbmRsZXI6bCx0YXNrOmksc2luazp0LGluY2x1ZGVNYXJrZWRDb250ZW50OnMsZGlzYWJsZU5vcm1hbGl6YXRpb246cn0pLnRoZW4oKGZ1bmN0aW9uKCl7ZmluaXNoV29ya2VyVGFzayhpKTtvJiZpbmZvKGBwYWdlPSR7YSsxfSAtIGdldFRleHRDb250ZW50OiB0aW1lPWArKERhdGUubm93KCktbykrIm1zIik7dC5jbG9zZSgpfSksKGZ1bmN0aW9uKGUpe2ZpbmlzaFdvcmtlclRhc2soaSk7aS50ZXJtaW5hdGVkfHx0LmVycm9yKGUpfSkpfSkpfSkpO2wub24oIkdldFN0cnVjdFRyZWUiLChmdW5jdGlvbihlKXtyZXR1cm4gaS5nZXRQYWdlKGUucGFnZUluZGV4KS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gaS5lbnN1cmUoZSwiZ2V0U3RydWN0VHJlZSIpfSkpfSkpO2wub24oIkZvbnRGYWxsYmFjayIsKGZ1bmN0aW9uKGUpe3JldHVybiBpLmZvbnRGYWxsYmFjayhlLmlkLGwpfSkpO2wub24oIkNsZWFudXAiLChmdW5jdGlvbihlKXtyZXR1cm4gaS5jbGVhbnVwKCEwKX0pKTtsLm9uKCJUZXJtaW5hdGUiLChmdW5jdGlvbihlKXthPSEwO2NvbnN0IHQ9W107aWYoaSl7aS50ZXJtaW5hdGUobmV3IEFib3J0RXhjZXB0aW9uKCJXb3JrZXIgd2FzIHRlcm1pbmF0ZWQuIikpO2NvbnN0IGU9aS5jbGVhbnVwKCk7dC5wdXNoKGUpO2k9bnVsbH1lbHNlIGNsZWFyR2xvYmFsQ2FjaGVzKCk7cyYmcyhuZXcgQWJvcnRFeGNlcHRpb24oIldvcmtlciB3YXMgdGVybWluYXRlZC4iKSk7Zm9yKGNvbnN0IGUgb2Ygcil7dC5wdXNoKGUuZmluaXNoZWQpO2UudGVybWluYXRlKCl9cmV0dXJuIFByb21pc2UuYWxsKHQpLnRoZW4oKGZ1bmN0aW9uKCl7bC5kZXN0cm95KCk7bD1udWxsfSkpfSkpO2wub24oIlJlYWR5IiwoZnVuY3Rpb24odCl7IWZ1bmN0aW9uIHNldHVwRG9jKGUpe2Z1bmN0aW9uIG9uU3VjY2VzcyhlKXtlbnN1cmVOb3RUZXJtaW5hdGVkKCk7bC5zZW5kKCJHZXREb2MiLHtwZGZJbmZvOmV9KX1mdW5jdGlvbiBvbkZhaWx1cmUoZSl7ZW5zdXJlTm90VGVybWluYXRlZCgpO2lmKGUgaW5zdGFuY2VvZiBQYXNzd29yZEV4Y2VwdGlvbil7Y29uc3QgdD1uZXcgV29ya2VyVGFzayhgUGFzc3dvcmRFeGNlcHRpb246IHJlc3BvbnNlICR7ZS5jb2RlfWApO3N0YXJ0V29ya2VyVGFzayh0KTtsLnNlbmRXaXRoUHJvbWlzZSgiUGFzc3dvcmRSZXF1ZXN0IixlKS50aGVuKChmdW5jdGlvbih7cGFzc3dvcmQ6ZX0pe2ZpbmlzaFdvcmtlclRhc2sodCk7aS51cGRhdGVQYXNzd29yZChlKTtwZGZNYW5hZ2VyUmVhZHkoKX0pKS5jYXRjaCgoZnVuY3Rpb24oKXtmaW5pc2hXb3JrZXJUYXNrKHQpO2wuc2VuZCgiRG9jRXhjZXB0aW9uIixlKX0pKX1lbHNlIGUgaW5zdGFuY2VvZiBJbnZhbGlkUERGRXhjZXB0aW9ufHxlIGluc3RhbmNlb2YgTWlzc2luZ1BERkV4Y2VwdGlvbnx8ZSBpbnN0YW5jZW9mIFVuZXhwZWN0ZWRSZXNwb25zZUV4Y2VwdGlvbnx8ZSBpbnN0YW5jZW9mIFVua25vd25FcnJvckV4Y2VwdGlvbj9sLnNlbmQoIkRvY0V4Y2VwdGlvbiIsZSk6bC5zZW5kKCJEb2NFeGNlcHRpb24iLG5ldyBVbmtub3duRXJyb3JFeGNlcHRpb24oZS5tZXNzYWdlLGUudG9TdHJpbmcoKSkpfWZ1bmN0aW9uIHBkZk1hbmFnZXJSZWFkeSgpe2Vuc3VyZU5vdFRlcm1pbmF0ZWQoKTtsb2FkRG9jdW1lbnQoITEpLnRoZW4ob25TdWNjZXNzLChmdW5jdGlvbihlKXtlbnN1cmVOb3RUZXJtaW5hdGVkKCk7ZSBpbnN0YW5jZW9mIFhSZWZQYXJzZUV4Y2VwdGlvbj9pLnJlcXVlc3RMb2FkZWRTdHJlYW0oKS50aGVuKChmdW5jdGlvbigpe2Vuc3VyZU5vdFRlcm1pbmF0ZWQoKTtsb2FkRG9jdW1lbnQoITApLnRoZW4ob25TdWNjZXNzLG9uRmFpbHVyZSl9KSk6b25GYWlsdXJlKGUpfSkpfWVuc3VyZU5vdFRlcm1pbmF0ZWQoKTtnZXRQZGZNYW5hZ2VyKGUpLnRoZW4oKGZ1bmN0aW9uKGUpe2lmKGEpe2UudGVybWluYXRlKG5ldyBBYm9ydEV4Y2VwdGlvbigiV29ya2VyIHdhcyB0ZXJtaW5hdGVkLiIpKTt0aHJvdyBuZXcgRXJyb3IoIldvcmtlciB3YXMgdGVybWluYXRlZCIpfWk9ZTtpLnJlcXVlc3RMb2FkZWRTdHJlYW0oITApLnRoZW4oKGU9PntsLnNlbmQoIkRhdGFMb2FkZWQiLHtsZW5ndGg6ZS5ieXRlcy5ieXRlTGVuZ3RofSl9KSl9KSkudGhlbihwZGZNYW5hZ2VyUmVhZHksb25GYWlsdXJlKX0oZSk7ZT1udWxsfSkpO3JldHVybiBofXN0YXRpYyBpbml0aWFsaXplRnJvbVBvcnQoZSl7Y29uc3QgdD1uZXcgTWVzc2FnZUhhbmRsZXIoIndvcmtlciIsIm1haW4iLGUpO1dvcmtlck1lc3NhZ2VIYW5kbGVyLnNldHVwKHQsZSk7dC5zZW5kKCJyZWFkeSIsbnVsbCl9fSJ1bmRlZmluZWQiPT10eXBlb2Ygd2luZG93JiYhdCYmInVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmJiZmdW5jdGlvbiBpc01lc3NhZ2VQb3J0KGUpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBlLnBvc3RNZXNzYWdlJiYib25tZXNzYWdlImluIGV9KHNlbGYpJiZXb3JrZXJNZXNzYWdlSGFuZGxlci5pbml0aWFsaXplRnJvbVBvcnQoc2VsZik7dmFyIGZvPV9fd2VicGFja19leHBvcnRzX18uV29ya2VyTWVzc2FnZUhhbmRsZXI7ZXhwb3J0e2ZvIGFzIFdvcmtlck1lc3NhZ2VIYW5kbGVyfTs=";function SQ(T){return!!(typeof T=="object"&&T&&"gen"in T&&"num"in T)}async function XQ(T,N){return typeof N=="string"?T.getDestination(N):N}async function YQ(T,N){return N&&SQ(N[0])?N[0]:null}const BQ=T=>T.type==="XYZ"&&T.spec.length===3,uQ=T=>T.type==="Fit"&&T.spec.length===0,pQ=T=>T.type==="FitH"&&T.spec.length===1,oQ=T=>T.type==="FitV"&&T.spec.length===1,yQ=T=>T.type==="FitR"&&T.spec.length===4,zQ=T=>T.type==="FitB"&&T.spec.length===0,LQ=T=>T.type==="FitBH"&&T.spec.length===1,kQ=T=>T.type==="FitBV"&&T.spec.length===1;function DQ(T,N){const t={type:T,spec:N};return BQ(t)||uQ(t)||pQ(t)||oQ(t)||yQ(t)||zQ(t)||LQ(t)||kQ(t)?t:(console.warn("no location type found for ",T,N),null)}const IQ=T=>T&&T.every(N=>!isNaN(N));async function EQ(){return new Promise((T,N)=>{const t=document.createElement("iframe");t.width="0px",t.height="0px",t.style.cssText="position: absolute; top:0; left:0",t.style.display="none",t.onload=function(){T(t)},document.body.appendChild(t)})}function CQ(T,N,t){const U=T.document.createElement("style");U.textContent=` + @page { + margin: 0; + size: ${N}pt ${t}pt; + } + body { + margin: 0; + width: 100%; + } + canvas { + width: 100%; + page-break-after: always; + page-break-before: avoid; + page-break-inside: avoid; + } + `,T.document.head.appendChild(U)}function wQ(T){ed.workerSrc=T}function El(T,N={onProgress:void 0,onPassword:void 0,onError:void 0,password:""}){var t;(t=ed)!=null&&t.workerSrc||wQ(TQ);const U=bU(),n=bU(),m=bU(0),z=bU({});function Y(F){n.value&&n.value.destroy();const R=Ud(F);if(N.onProgress&&(R.onProgress=N.onProgress),N.onPassword)R.onPassword=N.onPassword;else if(N.password){const W=(J,d)=>{J(N.password??"")};R.onPassword=W}R.promise.then(async W=>{n.value=W,U.value=W.loadingTask,m.value=W.numPages;const J=await W.getMetadata(),d=await W.getAttachments(),a=await W.getJSActions(),l=await W.getOutline();z.value={metadata:J,attachments:d,javascript:a,outline:l}},W=>{typeof N.onError=="function"&&N.onError(W)})}async function S(F){var R;const W=await((R=U.value)==null?void 0:R.promise);if(!W)return null;const J=await XQ(W,F),d=await YQ(W,J);if(!d||!J)return null;const a=await W.getPageIndex(d),l=J[1].name,c=J.slice(2),s=IQ(c)?DQ(l,c):null;return{pageIndex:a,location:s??{type:"Fit",spec:[]}}}async function p(F="filename"){var R;if(!n.value)throw new Error("Current PDFDocumentProxy have not loaded yet");const W=await((R=n.value)==null?void 0:R.saveDocument()),J=new Blob([W],{type:"application/pdf"}),d=URL.createObjectURL(J),a=document.createElement("a");document.body.appendChild(a),a.href=d,a.download=F,a.style.display="none",a.click(),setTimeout(()=>{URL.revokeObjectURL(d),document.body.removeChild(a)},10)}async function e(F=150,R="filename"){var W,J;if(!n.value)throw new Error("Current PDFDocumentProxy have not loaded yet");const d=await((W=n.value)==null?void 0:W.saveDocument()),a=await Ud(d.buffer).promise,l=F/72,c=96/72,s=await EQ(),h=s.contentWindow;h.document.title=R;const o=[...Array(a.numPages).keys()].map(u=>u+1);for(const u of o){const L=await a.getPage(u),I=L.getViewport({scale:1});u===1&&CQ(h,I.width*l/c,I.height*l/c);const x=document.createElement("canvas");x.width=I.width*l,x.height=I.height*l;const O=x.cloneNode();h?.document.body.appendChild(O),await L?.render({canvasContext:x.getContext("2d"),intent:"print",transform:[l,0,0,l,0,0],viewport:I}).promise,(J=O.getContext("2d"))==null||J.drawImage(x,0,0)}h?.focus(),h?.print(),document.body.removeChild(s)}return Ed(T)?(T.value&&Y(T.value),Hl(T,()=>{T.value&&Y(T.value)})):T&&Y(T),{pdf:U,pages:m,info:z,print:e,download:p,getPDFDestination:S}}const xQ={__name:"AllPages",setup(T){const{pdf:N,pages:t}=El("https://raw.githubusercontent.com/mozilla/pdf.js/ba2edeae/web/compressed.tracemonkey-pldi-09.pdf");return(U,n)=>(K(!0),A(zl,null,xl(H(t),m=>(K(),A("div",{key:m,class:"vue-pdf-container"},[Rl(H(Il),{pdf:H(N),page:m},null,8,["pdf","page"])]))),128))}},jQ={class:"language-json","data-ext":"json"},OQ={class:"language-json"},rQ=g("br",null,null,-1),gQ={class:"vue-pdf-container"},KQ={__name:"AnnoAttachment",setup(T){const{pdf:N}=El(gl("/example_041.pdf")),t=bl({});function U(n){console.log(n),t.value=n}return(n,m)=>(K(),A(zl,null,[g("div",jQ,[g("pre",OQ,[g("code",null,[fl('// "content" is a uint8Array'),rQ,fl(Bl(t.value),1)])])]),g("div",gQ,[Rl(H(Il),{pdf:H(N),"annotation-layer":"","image-resources-path":"https://unpkg.com/pdfjs-dist@latest/web/images/",onAnnotation:U},null,8,["pdf"])])],64))}},HQ={class:"language-json","data-ext":"json"},vQ={class:"language-json"},PQ={class:"vue-pdf-container"},fQ={__name:"AnnoForms",setup(T){const{pdf:N}=El(gl("/example_014.pdf")),t=bl({});function U(n){console.log(n),t.value=n}return(n,m)=>(K(),A(zl,null,[g("div",HQ,[g("pre",vQ,[g("code",null,Bl(t.value),1)])]),g("div",PQ,[Rl(H(Il),{pdf:H(N),"annotation-layer":"",onAnnotation:U},null,8,["pdf"])])],64))}},AQ={class:"language-json","data-ext":"json"},_Q={class:"language-json"},qQ={class:"vue-pdf-container"},$Q={__name:"AnnoLinks",setup(T){const{pdf:N}=El(gl("/example_045.pdf")),t=bl({});function U(n){console.log(n),t.value=n}return(n,m)=>(K(),A(zl,null,[g("div",AQ,[g("pre",_Q,[g("code",null,Bl(t.value),1)])]),g("div",qQ,[Rl(H(Il),{pdf:H(N),"annotation-layer":"",onAnnotation:U},null,8,["pdf"]),Rl(H(Il),{pdf:H(N),page:6,"annotation-layer":"",onAnnotation:U},null,8,["pdf"])])],64))}},lV={class:"vue-pdf-container"},UV=["value"],dV={__name:"AnnotationFilter",setup(T){const{pdf:N}=El(gl("/example_014.pdf")),t=bl(["Widget","Widget.Tx","Widget.Btn","Widget.Ch"]),U=bl(["Widget"]),n=bl(null);function m(){n.value.reload()}return(z,Y)=>(K(),A("div",lV,[g("div",null,[_l(g("select",{"onUpdate:modelValue":Y[0]||(Y[0]=S=>U.value[0]=S),class:"select-example",onChange:m},[(K(!0),A(zl,null,xl(t.value,S=>(K(),A("option",{key:S,value:S},Bl(S),9,UV))),128))],544),[[wd,U.value[0]]])]),Rl(H(Il),{ref_key:"vuePDFRef",ref:n,pdf:H(N),"annotation-layer":"","annotations-filter":U.value},null,8,["pdf","annotations-filter"])]))}},ZV={class:"vue-pdf-container"},FV={__name:"AnnotationLayer",setup(T){const N=bl(!1),{pdf:t}=El(gl("/example_014.pdf"));return(U,n)=>(K(),A("div",ZV,[g("div",null,[g("button",{class:"button-example",onClick:n[0]||(n[0]=m=>N.value=!N.value)},[fl(" Change to "),g("strong",null,Bl(!N.value),1)])]),Rl(H(Il),{pdf:H(t),"annotation-layer":N.value},null,8,["pdf","annotation-layer"])]))}},tV={class:"vue-pdf-container"},cV={__name:"FitParent",setup(T){const{pdf:N}=El("https://raw.githubusercontent.com/mozilla/pdf.js/ba2edeae/web/compressed.tracemonkey-pldi-09.pdf"),t=bl(null),U=bl(300);function n(m){U.value=U.value+m,t.value.reload()}return(m,z)=>(K(),A("div",tV,[g("div",null,[g("button",{class:"button-example",onClick:z[0]||(z[0]=Y=>n(-50))}," Remove 50px "),g("span",null,"Parent width: "+Bl(U.value)+"px",1),g("button",{class:"button-example",onClick:z[1]||(z[1]=Y=>n(50))}," Add 50px ")]),g("div",{style:gU(`width: ${U.value}px`)},[Rl(H(Il),{ref_key:"vuePDFRef",ref:t,pdf:H(N),"fit-parent":""},null,8,["pdf"])],4)]))}},QV={class:"language-json","data-ext":"json"},VV={class:"language-json"},WV={class:"vue-pdf-container"},RV={__name:"Loaded",setup(T){const{pdf:N}=El("https://raw.githubusercontent.com/mozilla/pdf.js/ba2edeae/web/compressed.tracemonkey-pldi-09.pdf"),t=bl({});function U(n){console.log(n),t.value=n}return(n,m)=>(K(),A(zl,null,[g("div",QV,[g("pre",VV,[g("code",null,Bl(t.value),1)])]),g("div",WV,[Rl(H(Il),{pdf:H(N),onLoaded:U},null,8,["pdf"])])],64))}},NV={class:"vue-pdf-container"},nV={__name:"MultiplePDF",setup(T){const N=[gl("/example_014.pdf"),gl("/example_036.pdf"),gl("/example_041.pdf"),gl("/example_045.pdf"),"https://raw.githubusercontent.com/mozilla/pdf.js/ba2edeae/web/compressed.tracemonkey-pldi-09.pdf"],t=bl(0),U=bl(N[0]),{pdf:n}=El(U);function m(){t.value+=1,t.value>=N.length&&(t.value=0),U.value=N[t.value]}return(z,Y)=>(K(),A("div",NV,[g("div",null,[g("button",{class:"button-example",onClick:m}," Next PDF (Current index: "+Bl(t.value)+") ",1)]),Rl(H(Il),{pdf:H(n)},null,8,["pdf"])]))}},sV={class:"vue-pdf-container"},aV={style:{width:"500px"}},bV={__name:"OnePage",setup(T){const N=bl(1),{pdf:t,pages:U}=El("https://raw.githubusercontent.com/mozilla/pdf.js/ba2edeae/web/compressed.tracemonkey-pldi-09.pdf");return(n,m)=>(K(),A("div",sV,[g("div",null,[g("button",{class:"button-example",onClick:m[0]||(m[0]=z=>N.value=N.value>1?N.value-1:N.value)}," PREV "),g("span",null,Bl(N.value)+"/"+Bl(H(U)),1),g("button",{class:"button-example",onClick:m[1]||(m[1]=z=>N.value=N.value(K(),A("div",iV,[g("div",null,[g("button",{class:"button-example",onClick:n[0]||(n[0]=m=>N.value=N.value-90)}," - 90° "),g("span",null,Bl(N.value)+"°",1),g("button",{class:"button-example",onClick:n[1]||(n[1]=m=>N.value=N.value+90)}," + 90° ")]),Rl(H(Il),{pdf:H(t),rotation:N.value},null,8,["pdf","rotation"])]))}},mV={class:"vue-pdf-container"},MV={__name:"Scale",setup(T){const N=bl(1),{pdf:t}=El("https://raw.githubusercontent.com/mozilla/pdf.js/ba2edeae/web/compressed.tracemonkey-pldi-09.pdf");return(U,n)=>(K(),A("div",mV,[g("div",null,[g("button",{class:"button-example",onClick:n[0]||(n[0]=m=>N.value=N.value>.25?N.value-.25:N.value)}," - "),g("span",null,Bl(N.value*100)+"%",1),g("button",{class:"button-example",onClick:n[1]||(n[1]=m=>N.value=N.value<2?N.value+.25:N.value)}," + ")]),Rl(H(Il),{pdf:H(t),scale:N.value},null,8,["pdf","scale"])]))}},GV={class:"vue-pdf-container"},JV={__name:"TextLayer",setup(T){const N=bl(!1),{pdf:t}=El("https://raw.githubusercontent.com/mozilla/pdf.js/ba2edeae/web/compressed.tracemonkey-pldi-09.pdf");return(U,n)=>(K(),A("div",GV,[g("div",null,[g("button",{class:"button-example",onClick:n[0]||(n[0]=m=>N.value=!N.value)},[fl(" Change to "),g("strong",null,Bl(!N.value),1)])]),Rl(H(Il),{pdf:H(t),"text-layer":N.value},null,8,["pdf","text-layer"])]))}},eV={class:"vue-pdf-container"},TV={__name:"XFALayer",setup(T){const{pdf:N}=El({url:gl("/example_xfa.pdf"),enableXfa:!0});return(t,U)=>(K(),A("div",eV,[Rl(H(Il),{pdf:H(N)},null,8,["pdf"])]))}},SV={class:"vue-pdf-container"},XV=g("td",{colspan:"2"}," Text ",-1),YV={colspan:"2"},BV=g("td",{colspan:"2"}," Color ",-1),uV={colspan:"2"},pV=g("td",null,"Columns",-1),oV=g("td",null,"Rows",-1),yV=g("td",null,"Rotation",-1),zV=g("td",null,"FontSize",-1),LV={__name:"Watermark",setup(T){const{pdf:N}=El("https://raw.githubusercontent.com/mozilla/pdf.js/ba2edeae/web/compressed.tracemonkey-pldi-09.pdf"),t=bl(null),U=bl("sample"),n=bl({columns:4,rows:4,color:"rgba(211, 210, 211, 0.4)",rotation:45,fontSize:18});function m(){t.value.reload()}return(z,Y)=>(K(),A("div",SV,[g("table",null,[g("tr",null,[XV,g("td",YV,[_l(g("input",{"onUpdate:modelValue":Y[0]||(Y[0]=S=>U.value=S),class:"input-example"},null,512),[[cU,U.value]])])]),g("tr",null,[BV,g("td",uV,[_l(g("input",{"onUpdate:modelValue":Y[1]||(Y[1]=S=>n.value.color=S),class:"input-example"},null,512),[[cU,n.value.color]])])]),g("tr",null,[pV,g("td",null,[_l(g("input",{"onUpdate:modelValue":Y[2]||(Y[2]=S=>n.value.columns=S),class:"input-example"},null,512),[[cU,n.value.columns]])]),oV,g("td",null,[_l(g("input",{"onUpdate:modelValue":Y[3]||(Y[3]=S=>n.value.rows=S),class:"input-example"},null,512),[[cU,n.value.rows]])])]),g("tr",null,[yV,g("td",null,[_l(g("input",{"onUpdate:modelValue":Y[4]||(Y[4]=S=>n.value.rotation=S),class:"input-example"},null,512),[[cU,n.value.rotation]])]),zV,g("td",null,[_l(g("input",{"onUpdate:modelValue":Y[5]||(Y[5]=S=>n.value.fontSize=S),class:"input-example"},null,512),[[cU,n.value.fontSize]])])])]),g("div",null,[g("button",{class:"button-example",onClick:m}," Reload ")]),Rl(H(Il),{ref_key:"pdfRef",ref:t,pdf:H(N),"watermark-text":U.value,"watermark-options":n.value},null,8,["pdf","watermark-text","watermark-options"])]))}},kV={name:"ChaptersList",props:{items:Array},methods:{onChapterClick:function(T){this.$emit("chapterClick",T)}}},DV=["onClick"],IV={key:0};function EV(T,N,t,U,n,m){const z=QU("ChaptersList",!0);return K(),A("ol",null,[(K(!0),A(zl,null,xl(t.items,Y=>(K(),A("li",null,[g("a",{href:"#",onClick:Rd(S=>T.$emit("chapterClick",Y.destination),["prevent"])},Bl(Y.title),9,DV),Y.items.length?(K(),A("div",IV,[Rl(z,{items:Y.items,onChapterClick:m.onChapterClick},null,8,["items","onChapterClick"])])):al("",!0)]))),256))])}const CV=el(kV,[["render",EV]]),wV={id:"toc_wrapper"},xV={class:"toc"},jV={class:"language-json","data-ext":"json"},OV={class:"language-json"},rV={class:"vue-pdf-container"},gV={__name:"TOC",setup(T){const{pdf:N,info:t,getPDFDestination:U}=El(gl("/example_045.pdf")),n=bl({}),m=bl([]);TU(()=>{t.value.outline!==void 0&&(m.value=t.value.outline.map(function Y(S){return{title:S.title,destination:U(S.dest),items:S.items.map(p=>Y(p))}}))}),xd(t);function z(Y){Y.then(S=>{console.log(S),n.value=S})}return(Y,S)=>(K(),A("div",wV,[g("div",xV,[Rl(CV,{items:m.value,onChapterClick:z},null,8,["items"])]),g("div",null,[g("div",jV,[g("pre",OV,[g("code",null,Bl(n.value),1)])]),g("div",rV,[Rl(H(Il),{pdf:H(N),scale:.75},null,8,["pdf"])])])]))}},KV={class:"vue-pdf-container"},HV=g("td",{colspan:"2"}," Text ",-1),vV={colspan:"2"},PV=g("td",null,"Complete words",-1),fV=g("td",null,"Ignore case",-1),AV={__name:"HighlightText",setup(T){const{pdf:N}=El("https://raw.githubusercontent.com/mozilla/pdf.js/ba2edeae/web/compressed.tracemonkey-pldi-09.pdf"),t=bl("javascript"),U=bl({completeWords:!1,ignoreCase:!0});return(n,m)=>(K(),A("div",KV,[g("table",null,[g("tr",null,[HV,g("td",vV,[_l(g("input",{"onUpdate:modelValue":m[0]||(m[0]=z=>t.value=z),class:"input-example"},null,512),[[cU,t.value]])])]),g("tr",null,[PV,g("td",null,[_l(g("input",{"onUpdate:modelValue":m[1]||(m[1]=z=>U.value.completeWords=z),type:"checkbox",class:"checkbox-example"},null,512),[[_U,U.value.completeWords]])]),fV,g("td",null,[_l(g("input",{"onUpdate:modelValue":m[2]||(m[2]=z=>U.value.ignoreCase=z),type:"checkbox",class:"checkbox-example"},null,512),[[_U,U.value.ignoreCase]])])])]),Rl(H(Il),{scale:1.1,pdf:H(N),"text-layer":"","highlight-text":t.value,"highlight-options":U.value},null,8,["pdf","highlight-text","highlight-options"])]))}},_V={class:"vue-pdf-container"},qV=g("td",{colspan:"2"}," Text ",-1),$V={colspan:"2"},lW={__name:"TextHighlight",setup(T){const{pdf:N}=El("https://raw.githubusercontent.com/mozilla/pdf.js/ba2edeae/web/compressed.tracemonkey-pldi-09.pdf"),t=bl("Trace-based"),U=bl({completeWords:!1,ignoreCase:!0}),n=bl({});function m(z){console.log(z),n.value=z}return(z,Y)=>(K(),A("div",_V,[g("table",null,[g("tr",null,[qV,g("td",$V,[_l(g("input",{"onUpdate:modelValue":Y[0]||(Y[0]=S=>t.value=S),class:"input-example"},null,512),[[cU,t.value]])])])]),Rl(H(Il),{scale:1.1,pdf:H(N),"text-layer":"","highlight-text":t.value,"highlight-options":U.value,onHighlight:m},null,8,["pdf","highlight-text","highlight-options"])]))}},UW={class:"vue-pdf-container"},dW={__name:"TextLoaded",setup(T){const{pdf:N}=El("https://raw.githubusercontent.com/mozilla/pdf.js/ba2edeae/web/compressed.tracemonkey-pldi-09.pdf");function t(U){console.log(U)}return(U,n)=>(K(),A("div",UW,[Rl(H(Il),{pdf:H(N),"text-layer":"",onTextLoaded:t},null,8,["pdf"])]))}},ZW={class:"vue-pdf-container"},FW={__name:"AnnotationLoaded",setup(T){const{pdf:N}=El(gl("/example_014.pdf"));function t(U){console.log(U)}return(U,n)=>(K(),A("div",ZW,[Rl(H(Il),{pdf:H(N),"annotation-layer":"",onAnnotationLoaded:t},null,8,["pdf"])]))}},tW={class:"language-json","data-ext":"json"},cW={class:"language-json"},QW={class:"vue-pdf-container"},VW={__name:"XFALoaded",setup(T){const{pdf:N}=El({url:gl("/example_xfa.pdf"),enableXfa:!0}),t=bl("Rendering pending");function U(){t.value="XFA loaded"}return(n,m)=>(K(),A(zl,null,[g("div",tW,[g("pre",cW,[g("code",null,Bl(t.value),1)])]),g("div",QW,[Rl(H(Il),{pdf:H(N),onXfaLoaded:U},null,8,["pdf"])])],64))}},NW={extends:Ac,enhanceApp({app:T}){T.component("OnePage",bV),T.component("Watermark",LV),T.component("AllPages",xQ),T.component("Scale",MV),T.component("Rotation",hV),T.component("TextLayer",JV),T.component("AnnotationLayer",FV),T.component("XFALayer",TV),T.component("FitParent",cV),T.component("AnnotationFilter",dV),T.component("MultiplePDF",nV),T.component("AnnoAttachment",KQ),T.component("AnnoForms",fQ),T.component("AnnoLinks",$Q),T.component("Loaded",RV),T.component("TOC",gV),T.component("HighlightText",AV),T.component("TextHighlight",lW),T.component("TextLoaded",dW),T.component("AnnotationLoaded",FW),T.component("XFALoaded",VW)}};export{NW as R,Xt as c,pl as u}; diff --git a/assets/chunks/vite-browser-external.BIHI7g3E.js b/assets/chunks/vite-browser-external.BIHI7g3E.js new file mode 100644 index 0000000..b480ffe --- /dev/null +++ b/assets/chunks/vite-browser-external.BIHI7g3E.js @@ -0,0 +1 @@ +const e={};export{e as default}; diff --git a/assets/examples_README.md.xUNjoHVR.js b/assets/examples_README.md.xUNjoHVR.js new file mode 100644 index 0000000..766e838 --- /dev/null +++ b/assets/examples_README.md.xUNjoHVR.js @@ -0,0 +1 @@ +import{_ as a,c as t,o as s,j as e,a as o}from"./chunks/framework.uxIHJ7Q2.js";const h=JSON.parse('{"title":"Examples List","description":"","frontmatter":{},"headers":[],"relativePath":"examples/README.md","filePath":"examples/README.md","lastUpdated":1684702721000}'),r={name:"examples/README.md"},l=e("h1",{id:"examples-list",tabindex:"-1"},[o("Examples List "),e("a",{class:"header-anchor",href:"#examples-list","aria-label":'Permalink to "Examples List"'},"​")],-1),c=[l];function i(n,p,d,m,_,x){return s(),t("div",null,c)}const f=a(r,[["render",i]]);export{h as __pageData,f as default}; diff --git a/assets/examples_README.md.xUNjoHVR.lean.js b/assets/examples_README.md.xUNjoHVR.lean.js new file mode 100644 index 0000000..766e838 --- /dev/null +++ b/assets/examples_README.md.xUNjoHVR.lean.js @@ -0,0 +1 @@ +import{_ as a,c as t,o as s,j as e,a as o}from"./chunks/framework.uxIHJ7Q2.js";const h=JSON.parse('{"title":"Examples List","description":"","frontmatter":{},"headers":[],"relativePath":"examples/README.md","filePath":"examples/README.md","lastUpdated":1684702721000}'),r={name:"examples/README.md"},l=e("h1",{id:"examples-list",tabindex:"-1"},[o("Examples List "),e("a",{class:"header-anchor",href:"#examples-list","aria-label":'Permalink to "Examples List"'},"​")],-1),c=[l];function i(n,p,d,m,_,x){return s(),t("div",null,c)}const f=a(r,[["render",i]]);export{h as __pageData,f as default}; diff --git a/assets/examples_advanced_annotation_filter.md.CS2HpK38.js b/assets/examples_advanced_annotation_filter.md.CS2HpK38.js new file mode 100644 index 0000000..4b52260 --- /dev/null +++ b/assets/examples_advanced_annotation_filter.md.CS2HpK38.js @@ -0,0 +1,27 @@ +import{_ as t,D as s,c as h,I as i,w as k,ab as l,o as p}from"./chunks/framework.uxIHJ7Q2.js";const B=JSON.parse('{"title":"Annotations Filter","description":"","frontmatter":{},"headers":[],"relativePath":"examples/advanced/annotation_filter.md","filePath":"examples/advanced/annotation_filter.md","lastUpdated":1688955190000}'),e={name:"examples/advanced/annotation_filter.md"},E=l(`

Annotations Filter

vue
<script setup>
+import { ref } from 'vue'
+import { VuePDF, usePDF } from '@tato30/vue-pdf'
+
+const { pdf } = usePDF('/example_014.pdf')
+
+const filters = ref(['Widget', 'Widget.Tx', 'Widget.Btn', 'Widget.Ch'])
+const selectedFilter = ref(['Widget'])
+const vuePDFRef = ref(null)
+
+function reloadPage() {
+  vuePDFRef.value.reload()
+}
+</script>
+
+<template>
+  <div>
+    <div>
+      <select v-model="selectedFilter[0]" class="select-example" @change="reloadPage">
+        <option v-for="flt in filters" :key="flt" :value="flt">
+          {{ flt }}
+        </option>
+      </select>
+    </div>
+    <VuePDF ref="vuePDFRef" :pdf="pdf" annotation-layer :annotations-filter="selectedFilter" />
+  </div>
+</template>
`,2);function r(d,g,y,F,o,c){const a=s("AnnotationFilter"),n=s("ClientOnly");return p(),h("div",null,[E,i(n,null,{default:k(()=>[i(a)]),_:1})])}const u=t(e,[["render",r]]);export{B as __pageData,u as default}; diff --git a/assets/examples_advanced_annotation_filter.md.CS2HpK38.lean.js b/assets/examples_advanced_annotation_filter.md.CS2HpK38.lean.js new file mode 100644 index 0000000..f5c5327 --- /dev/null +++ b/assets/examples_advanced_annotation_filter.md.CS2HpK38.lean.js @@ -0,0 +1 @@ +import{_ as t,D as s,c as h,I as i,w as k,ab as l,o as p}from"./chunks/framework.uxIHJ7Q2.js";const B=JSON.parse('{"title":"Annotations Filter","description":"","frontmatter":{},"headers":[],"relativePath":"examples/advanced/annotation_filter.md","filePath":"examples/advanced/annotation_filter.md","lastUpdated":1688955190000}'),e={name:"examples/advanced/annotation_filter.md"},E=l("",2);function r(d,g,y,F,o,c){const a=s("AnnotationFilter"),n=s("ClientOnly");return p(),h("div",null,[E,i(n,null,{default:k(()=>[i(a)]),_:1})])}const u=t(e,[["render",r]]);export{B as __pageData,u as default}; diff --git a/assets/examples_advanced_fit_parent.md.CdTQz1kl.js b/assets/examples_advanced_fit_parent.md.CdTQz1kl.js new file mode 100644 index 0000000..4c6b702 --- /dev/null +++ b/assets/examples_advanced_fit_parent.md.CdTQz1kl.js @@ -0,0 +1,31 @@ +import{_ as t,D as s,c as h,I as i,w as k,ab as p,o as l}from"./chunks/framework.uxIHJ7Q2.js";const u=JSON.parse('{"title":"Fit parent","description":"","frontmatter":{},"headers":[],"relativePath":"examples/advanced/fit_parent.md","filePath":"examples/advanced/fit_parent.md","lastUpdated":1688955190000}'),E={name:"examples/advanced/fit_parent.md"},e=p(`

Fit parent

vue
<script setup>
+import { ref } from 'vue'
+import { VuePDF, usePDF } from '@tato30/vue-pdf'
+
+const { pdf } = usePDF('https://raw.githubusercontent.com/mozilla/pdf.js/ba2edeae/web/compressed.tracemonkey-pldi-09.pdf')
+
+const vuePDFRef = ref(null)
+const parentWidth = ref(300)
+
+function fitParentWidth(pxs) {
+  parentWidth.value = parentWidth.value + pxs
+  vuePDFRef.value.reload()
+}
+</script>
+
+<template>
+  <div>
+    <div>
+      <button @click="fitParentWidth(-50)">
+        Remove 50px
+      </button>
+      <span>Parent width: {{ parentWidth }}px</span>
+      <button @click="fitParentWidth(50)">
+        Add 50px
+      </button>
+    </div>
+    <div :style="\`width: \${parentWidth}px\`">
+      <VuePDF ref="vuePDFRef" :pdf="pdf" fit-parent />
+    </div>
+  </div>
+</template>
`,2);function r(d,g,y,F,c,o){const a=s("FitParent"),n=s("ClientOnly");return l(),h("div",null,[e,i(n,null,{default:k(()=>[i(a)]),_:1})])}const D=t(E,[["render",r]]);export{u as __pageData,D as default}; diff --git a/assets/examples_advanced_fit_parent.md.CdTQz1kl.lean.js b/assets/examples_advanced_fit_parent.md.CdTQz1kl.lean.js new file mode 100644 index 0000000..371228d --- /dev/null +++ b/assets/examples_advanced_fit_parent.md.CdTQz1kl.lean.js @@ -0,0 +1 @@ +import{_ as t,D as s,c as h,I as i,w as k,ab as p,o as l}from"./chunks/framework.uxIHJ7Q2.js";const u=JSON.parse('{"title":"Fit parent","description":"","frontmatter":{},"headers":[],"relativePath":"examples/advanced/fit_parent.md","filePath":"examples/advanced/fit_parent.md","lastUpdated":1688955190000}'),E={name:"examples/advanced/fit_parent.md"},e=p("",2);function r(d,g,y,F,c,o){const a=s("FitParent"),n=s("ClientOnly");return l(),h("div",null,[e,i(n,null,{default:k(()=>[i(a)]),_:1})])}const D=t(E,[["render",r]]);export{u as __pageData,D as default}; diff --git a/assets/examples_advanced_highlight_text.md.E_oQuIkG.js b/assets/examples_advanced_highlight_text.md.E_oQuIkG.js new file mode 100644 index 0000000..2d1a425 --- /dev/null +++ b/assets/examples_advanced_highlight_text.md.E_oQuIkG.js @@ -0,0 +1,24 @@ +import{_ as t,D as s,c as n,I as i,w as k,ab as l,o as p}from"./chunks/framework.uxIHJ7Q2.js";const u=JSON.parse('{"title":"Highlight Text","description":"","frontmatter":{},"headers":[],"relativePath":"examples/advanced/highlight_text.md","filePath":"examples/advanced/highlight_text.md","lastUpdated":1702772292000}'),e={name:"examples/advanced/highlight_text.md"},E=l(`

Highlight Text

vue
<script setup>
+import { VuePDF, usePDF } from '@tato30/vue-pdf';
+import '@tato30/vue-pdf/style.css';
+import { ref } from 'vue';
+
+const { pdf } = usePDF('https://raw.githubusercontent.com/mozilla/pdf.js/ba2edeae/web/compressed.tracemonkey-pldi-09.pdf')
+
+const highlightText = ref('javascript')
+const highlightOptions = ref({
+  completeWords: false,
+  ignoreCase: true,
+})
+</script>
+
+<template>
+  <div>
+    <div>
+      <input v-model="highlightText">
+      <input v-model="highlightOptions.completeWords" type="checkbox">
+      <input v-model="highlightOptions.ignoreCase" type="checkbox">
+    </div>
+    <VuePDF :pdf="pdf" text-layer :highlight-text="highlightText" :highlight-options="highlightOptions" />
+  </div>
+</template>
`,2);function g(d,r,y,F,o,c){const a=s("HighlightText"),h=s("ClientOnly");return p(),n("div",null,[E,i(h,null,{default:k(()=>[i(a)]),_:1})])}const B=t(e,[["render",g]]);export{u as __pageData,B as default}; diff --git a/assets/examples_advanced_highlight_text.md.E_oQuIkG.lean.js b/assets/examples_advanced_highlight_text.md.E_oQuIkG.lean.js new file mode 100644 index 0000000..0ff3c7c --- /dev/null +++ b/assets/examples_advanced_highlight_text.md.E_oQuIkG.lean.js @@ -0,0 +1 @@ +import{_ as t,D as s,c as n,I as i,w as k,ab as l,o as p}from"./chunks/framework.uxIHJ7Q2.js";const u=JSON.parse('{"title":"Highlight Text","description":"","frontmatter":{},"headers":[],"relativePath":"examples/advanced/highlight_text.md","filePath":"examples/advanced/highlight_text.md","lastUpdated":1702772292000}'),e={name:"examples/advanced/highlight_text.md"},E=l("",2);function g(d,r,y,F,o,c){const a=s("HighlightText"),h=s("ClientOnly");return p(),n("div",null,[E,i(h,null,{default:k(()=>[i(a)]),_:1})])}const B=t(e,[["render",g]]);export{u as __pageData,B as default}; diff --git a/assets/examples_advanced_multiple_pdf.md.CPe21CiY.js b/assets/examples_advanced_multiple_pdf.md.CPe21CiY.js new file mode 100644 index 0000000..25946e6 --- /dev/null +++ b/assets/examples_advanced_multiple_pdf.md.CPe21CiY.js @@ -0,0 +1,35 @@ +import{_ as l,D as s,c as p,I as i,w as t,ab as h,o as k}from"./chunks/framework.uxIHJ7Q2.js";const f=JSON.parse('{"title":"Multiples PDF","description":"","frontmatter":{},"headers":[],"relativePath":"examples/advanced/multiple_pdf.md","filePath":"examples/advanced/multiple_pdf.md","lastUpdated":1700166862000}'),e={name:"examples/advanced/multiple_pdf.md"},E=h(`

Multiples PDF

vue
<script setup>
+import { VuePDF, usePDF } from '@tato30/vue-pdf'
+import { ref } from 'vue'
+
+const pdfSources = [
+  '/example_014.pdf',
+  '/example_036.pdf',
+  '/example_041.pdf',
+  '/example_045.pdf',
+  'https://raw.githubusercontent.com/mozilla/pdf.js/ba2edeae/web/compressed.tracemonkey-pldi-09.pdf',
+]
+// Setting the first (or default) PDF
+const pdfSource = ref(pdfSources[0])
+const pdfSourceIdx = ref(0)
+
+const { pdf } = usePDF(pdfSource)
+
+function nextPdf() {
+  pdfSourceIdx.value += 1
+  if (pdfSourceIdx.value >= pdfSources.length)
+    pdfSourceIdx.value = 0
+  pdfSource.value = pdfSources[pdfSourceIdx.value]
+}
+</script>
+
+<template>
+  <div>
+    <div>
+      <button @click="nextPdf">
+        Next PDF (Current index: {{ pdfSourceIdx }})
+      </button>
+    </div>
+    <VuePDF :pdf="pdf" />
+  </div>
+</template>
`,2);function d(r,g,y,c,F,o){const a=s("MultiplePDF"),n=s("ClientOnly");return k(),p("div",null,[E,i(n,null,{default:t(()=>[i(a)]),_:1})])}const C=l(e,[["render",d]]);export{f as __pageData,C as default}; diff --git a/assets/examples_advanced_multiple_pdf.md.CPe21CiY.lean.js b/assets/examples_advanced_multiple_pdf.md.CPe21CiY.lean.js new file mode 100644 index 0000000..867d084 --- /dev/null +++ b/assets/examples_advanced_multiple_pdf.md.CPe21CiY.lean.js @@ -0,0 +1 @@ +import{_ as l,D as s,c as p,I as i,w as t,ab as h,o as k}from"./chunks/framework.uxIHJ7Q2.js";const f=JSON.parse('{"title":"Multiples PDF","description":"","frontmatter":{},"headers":[],"relativePath":"examples/advanced/multiple_pdf.md","filePath":"examples/advanced/multiple_pdf.md","lastUpdated":1700166862000}'),e={name:"examples/advanced/multiple_pdf.md"},E=h("",2);function d(r,g,y,c,F,o){const a=s("MultiplePDF"),n=s("ClientOnly");return k(),p("div",null,[E,i(n,null,{default:t(()=>[i(a)]),_:1})])}const C=l(e,[["render",d]]);export{f as __pageData,C as default}; diff --git a/assets/examples_advanced_toc.md.D4_TAtJH.js b/assets/examples_advanced_toc.md.D4_TAtJH.js new file mode 100644 index 0000000..d8633ab --- /dev/null +++ b/assets/examples_advanced_toc.md.D4_TAtJH.js @@ -0,0 +1,45 @@ +import{_ as h,D as s,c as t,I as i,w as k,ab as l,o as p}from"./chunks/framework.uxIHJ7Q2.js";const u=JSON.parse('{"title":"Table of content","description":"","frontmatter":{},"headers":[],"relativePath":"examples/advanced/toc.md","filePath":"examples/advanced/toc.md","lastUpdated":1716762738000}'),E={name:"examples/advanced/toc.md"},e=l(`

Table of content

vue
<script setup>
+import { ref, triggerRef, watchEffect } from 'vue'
+
+import { VuePDF, usePDF } from '@tato30/vue-pdf'
+
+import ChaptersList from './ChaptersList.vue'
+
+const { pdf, info, getPDFDestination } = usePDF('/example_045.pdf')
+const outlineTree = ref([])
+
+watchEffect(() => {
+  if (info.value.outline !== undefined) {
+    outlineTree.value = info.value.outline.map(function convert(node) {
+      return {
+        title: node.title,
+        destination: getPDFDestination(node.dest),
+        items: node.items.map((item) => {
+          return convert(item)
+        }),
+      }
+    })
+  }
+})
+triggerRef(info)
+
+function onChapterClick(value) {
+  value.then((v) => {
+    console.log(v)
+  })
+}
+</script>
+
+<template>
+  <div id="toc_wrapper">
+    <div class="toc">
+      <ChaptersList
+        :items="outlineTree"
+        @chapterClick="onChapterClick"
+      />
+    </div>
+    <div class="container">
+      <VuePDF :pdf="pdf" />
+    </div>
+  </div>
+</template>
`,2);function r(d,g,y,F,c,o){const a=s("TOC"),n=s("ClientOnly");return p(),t("div",null,[e,i(n,null,{default:k(()=>[i(a)]),_:1})])}const B=h(E,[["render",r]]);export{u as __pageData,B as default}; diff --git a/assets/examples_advanced_toc.md.D4_TAtJH.lean.js b/assets/examples_advanced_toc.md.D4_TAtJH.lean.js new file mode 100644 index 0000000..93be5e0 --- /dev/null +++ b/assets/examples_advanced_toc.md.D4_TAtJH.lean.js @@ -0,0 +1 @@ +import{_ as h,D as s,c as t,I as i,w as k,ab as l,o as p}from"./chunks/framework.uxIHJ7Q2.js";const u=JSON.parse('{"title":"Table of content","description":"","frontmatter":{},"headers":[],"relativePath":"examples/advanced/toc.md","filePath":"examples/advanced/toc.md","lastUpdated":1716762738000}'),E={name:"examples/advanced/toc.md"},e=l("",2);function r(d,g,y,F,c,o){const a=s("TOC"),n=s("ClientOnly");return p(),t("div",null,[e,i(n,null,{default:k(()=>[i(a)]),_:1})])}const B=h(E,[["render",r]]);export{u as __pageData,B as default}; diff --git a/assets/examples_advanced_watermark.md.D5LdRjgD.js b/assets/examples_advanced_watermark.md.D5LdRjgD.js new file mode 100644 index 0000000..573f745 --- /dev/null +++ b/assets/examples_advanced_watermark.md.D5LdRjgD.js @@ -0,0 +1,34 @@ +import{_ as t,D as s,c as k,I as i,w as h,ab as l,o as p}from"./chunks/framework.uxIHJ7Q2.js";const m=JSON.parse('{"title":"Watermark Text","description":"","frontmatter":{},"headers":[],"relativePath":"examples/advanced/watermark.md","filePath":"examples/advanced/watermark.md","lastUpdated":1700166862000}'),E={name:"examples/advanced/watermark.md"},e=l(`

Watermark Text

vue
<script setup>
+import { VuePDF, usePDF } from '@tato30/vue-pdf'
+import { ref } from 'vue'
+
+const { pdf } = usePDF('https://raw.githubusercontent.com/mozilla/pdf.js/ba2edeae/web/compressed.tracemonkey-pldi-09.pdf')
+
+const pdfRef = ref(null)
+const watermarkText = ref('sample')
+const watermarkOptions = ref({
+  columns: 4,
+  rows: 4,
+  color: 'rgba(211, 210, 211, 0.8)',
+  rotation: 45,
+  fontSize: 18,
+})
+
+function reload() {
+  pdfRef.value.reload()
+}
+</script>
+
+<template>
+  <div>
+    <div>
+      <input v-model="watermarkText">
+      <input v-model="watermarkOptions.color">
+      <input v-model="watermarkOptions.columns">
+      <input v-model="watermarkOptions.rows">
+      <input v-model="watermarkOptions.rotation">
+      <input v-model="watermarkOptions.fontSize">
+    </div>
+    <VuePDF ref="pdfRef" :pdf="pdf" :watermark-text="watermarkText" :watermark-options="watermarkOptions" />
+  </div>
+</template>
`,2);function r(d,g,y,F,o,c){const a=s("Watermark",!0),n=s("ClientOnly");return p(),k("div",null,[e,i(n,null,{default:h(()=>[i(a)]),_:1})])}const u=t(E,[["render",r]]);export{m as __pageData,u as default}; diff --git a/assets/examples_advanced_watermark.md.D5LdRjgD.lean.js b/assets/examples_advanced_watermark.md.D5LdRjgD.lean.js new file mode 100644 index 0000000..0e3654f --- /dev/null +++ b/assets/examples_advanced_watermark.md.D5LdRjgD.lean.js @@ -0,0 +1 @@ +import{_ as t,D as s,c as k,I as i,w as h,ab as l,o as p}from"./chunks/framework.uxIHJ7Q2.js";const m=JSON.parse('{"title":"Watermark Text","description":"","frontmatter":{},"headers":[],"relativePath":"examples/advanced/watermark.md","filePath":"examples/advanced/watermark.md","lastUpdated":1700166862000}'),E={name:"examples/advanced/watermark.md"},e=l("",2);function r(d,g,y,F,o,c){const a=s("Watermark",!0),n=s("ClientOnly");return p(),k("div",null,[e,i(n,null,{default:h(()=>[i(a)]),_:1})])}const u=t(E,[["render",r]]);export{m as __pageData,u as default}; diff --git a/assets/examples_annotation_events_annotation_attachment.md.BW7DyZWL.js b/assets/examples_annotation_events_annotation_attachment.md.BW7DyZWL.js new file mode 100644 index 0000000..670e66e --- /dev/null +++ b/assets/examples_annotation_events_annotation_attachment.md.BW7DyZWL.js @@ -0,0 +1,15 @@ +import{_ as t,D as s,c as h,I as i,w as l,ab as p,o as k}from"./chunks/framework.uxIHJ7Q2.js";const _=JSON.parse('{"title":"File attachment","description":"","frontmatter":{},"headers":[],"relativePath":"examples/annotation_events/annotation_attachment.md","filePath":"examples/annotation_events/annotation_attachment.md","lastUpdated":1688955190000}'),e={name:"examples/annotation_events/annotation_attachment.md"},E=p(`

File attachment

vue
<script setup>
+import { ref } from 'vue'
+import { VuePDF, usePDF } from '@tato30/vue-pdf'
+
+const { pdf } = usePDF('/example_041.pdf')
+function onAnnotation(value) {
+  console.log(value)
+}
+</script>
+
+<template>
+  <div>
+    <VuePDF :pdf="pdf" annotation-layer image-resources-path="https://unpkg.com/pdfjs-dist@latest/web/images/" @annotation="onAnnotation" />
+  </div>
+</template>
`,2);function r(d,o,g,y,c,F){const a=s("AnnoAttachment"),n=s("ClientOnly");return k(),h("div",null,[E,i(n,null,{default:l(()=>[i(a)]),_:1})])}const u=t(e,[["render",r]]);export{_ as __pageData,u as default}; diff --git a/assets/examples_annotation_events_annotation_attachment.md.BW7DyZWL.lean.js b/assets/examples_annotation_events_annotation_attachment.md.BW7DyZWL.lean.js new file mode 100644 index 0000000..acb3db3 --- /dev/null +++ b/assets/examples_annotation_events_annotation_attachment.md.BW7DyZWL.lean.js @@ -0,0 +1 @@ +import{_ as t,D as s,c as h,I as i,w as l,ab as p,o as k}from"./chunks/framework.uxIHJ7Q2.js";const _=JSON.parse('{"title":"File attachment","description":"","frontmatter":{},"headers":[],"relativePath":"examples/annotation_events/annotation_attachment.md","filePath":"examples/annotation_events/annotation_attachment.md","lastUpdated":1688955190000}'),e={name:"examples/annotation_events/annotation_attachment.md"},E=p("",2);function r(d,o,g,y,c,F){const a=s("AnnoAttachment"),n=s("ClientOnly");return k(),h("div",null,[E,i(n,null,{default:l(()=>[i(a)]),_:1})])}const u=t(e,[["render",r]]);export{_ as __pageData,u as default}; diff --git a/assets/examples_annotation_events_annotation_forms.md.MU92Ovv6.js b/assets/examples_annotation_events_annotation_forms.md.MU92Ovv6.js new file mode 100644 index 0000000..4b5c001 --- /dev/null +++ b/assets/examples_annotation_events_annotation_forms.md.MU92Ovv6.js @@ -0,0 +1,15 @@ +import{_ as t,D as s,c as l,I as i,w as h,ab as p,o as k}from"./chunks/framework.uxIHJ7Q2.js";const m=JSON.parse('{"title":"Forms fields","description":"","frontmatter":{},"headers":[],"relativePath":"examples/annotation_events/annotation_forms.md","filePath":"examples/annotation_events/annotation_forms.md","lastUpdated":1688955190000}'),e={name:"examples/annotation_events/annotation_forms.md"},E=p(`

Forms fields

vue
<script setup>
+import { ref } from 'vue'
+import { VuePDF, usePDF } from '@tato30/vue-pdf'
+
+const { pdf } = usePDF('/example_014.pdf')
+function onAnnotation(value) {
+  console.log(value)
+}
+</script>
+
+<template>
+  <div>
+    <VuePDF :pdf="pdf" annotation-layer @annotation="onAnnotation" />
+  </div>
+</template>
`,2);function r(d,o,g,y,F,c){const a=s("AnnoForms"),n=s("ClientOnly");return k(),l("div",null,[E,i(n,null,{default:h(()=>[i(a)]),_:1})])}const f=t(e,[["render",r]]);export{m as __pageData,f as default}; diff --git a/assets/examples_annotation_events_annotation_forms.md.MU92Ovv6.lean.js b/assets/examples_annotation_events_annotation_forms.md.MU92Ovv6.lean.js new file mode 100644 index 0000000..165bd24 --- /dev/null +++ b/assets/examples_annotation_events_annotation_forms.md.MU92Ovv6.lean.js @@ -0,0 +1 @@ +import{_ as t,D as s,c as l,I as i,w as h,ab as p,o as k}from"./chunks/framework.uxIHJ7Q2.js";const m=JSON.parse('{"title":"Forms fields","description":"","frontmatter":{},"headers":[],"relativePath":"examples/annotation_events/annotation_forms.md","filePath":"examples/annotation_events/annotation_forms.md","lastUpdated":1688955190000}'),e={name:"examples/annotation_events/annotation_forms.md"},E=p("",2);function r(d,o,g,y,F,c){const a=s("AnnoForms"),n=s("ClientOnly");return k(),l("div",null,[E,i(n,null,{default:h(()=>[i(a)]),_:1})])}const f=t(e,[["render",r]]);export{m as __pageData,f as default}; diff --git a/assets/examples_annotation_events_annotation_links.md.CZ5CLImb.js b/assets/examples_annotation_events_annotation_links.md.CZ5CLImb.js new file mode 100644 index 0000000..466bcd3 --- /dev/null +++ b/assets/examples_annotation_events_annotation_links.md.CZ5CLImb.js @@ -0,0 +1,15 @@ +import{_ as t,D as s,c as l,I as i,w as h,ab as k,o as p}from"./chunks/framework.uxIHJ7Q2.js";const u=JSON.parse('{"title":"Links","description":"","frontmatter":{},"headers":[],"relativePath":"examples/annotation_events/annotation_links.md","filePath":"examples/annotation_events/annotation_links.md","lastUpdated":1688955190000}'),e={name:"examples/annotation_events/annotation_links.md"},E=k(`

Links

vue
<script setup>
+import { ref } from 'vue'
+import { VuePDF, usePDF } from '@tato30/vue-pdf'
+
+const { pdf } = usePDF('/example_045.pdf')
+function onAnnotation(value) {
+  console.log(value)
+}
+</script>
+
+<template>
+  <div>
+    <VuePDF :pdf="pdf" annotation-layer @annotation="onAnnotation" />
+  </div>
+</template>
`,2);function r(d,o,g,y,c,F){const a=s("AnnoLinks"),n=s("ClientOnly");return p(),l("div",null,[E,i(n,null,{default:h(()=>[i(a)]),_:1})])}const m=t(e,[["render",r]]);export{u as __pageData,m as default}; diff --git a/assets/examples_annotation_events_annotation_links.md.CZ5CLImb.lean.js b/assets/examples_annotation_events_annotation_links.md.CZ5CLImb.lean.js new file mode 100644 index 0000000..95d0c75 --- /dev/null +++ b/assets/examples_annotation_events_annotation_links.md.CZ5CLImb.lean.js @@ -0,0 +1 @@ +import{_ as t,D as s,c as l,I as i,w as h,ab as k,o as p}from"./chunks/framework.uxIHJ7Q2.js";const u=JSON.parse('{"title":"Links","description":"","frontmatter":{},"headers":[],"relativePath":"examples/annotation_events/annotation_links.md","filePath":"examples/annotation_events/annotation_links.md","lastUpdated":1688955190000}'),e={name:"examples/annotation_events/annotation_links.md"},E=k("",2);function r(d,o,g,y,c,F){const a=s("AnnoLinks"),n=s("ClientOnly");return p(),l("div",null,[E,i(n,null,{default:h(()=>[i(a)]),_:1})])}const m=t(e,[["render",r]]);export{u as __pageData,m as default}; diff --git a/assets/examples_basic_all_pages.md.Bgiz8YKO.js b/assets/examples_basic_all_pages.md.Bgiz8YKO.js new file mode 100644 index 0000000..5eae724 --- /dev/null +++ b/assets/examples_basic_all_pages.md.Bgiz8YKO.js @@ -0,0 +1,11 @@ +import{_ as l,D as s,c as n,I as i,w as h,ab as p,o as k}from"./chunks/framework.uxIHJ7Q2.js";const u=JSON.parse('{"title":"All pages","description":"","frontmatter":{},"headers":[],"relativePath":"examples/basic/all_pages.md","filePath":"examples/basic/all_pages.md","lastUpdated":1688955190000}'),e={name:"examples/basic/all_pages.md"},E=p(`

All pages

vue
<script setup>
+import { VuePDF, usePDF } from '@tato30/vue-pdf'
+
+const { pdf, pages } = usePDF('https://raw.githubusercontent.com/mozilla/pdf.js/ba2edeae/web/compressed.tracemonkey-pldi-09.pdf')
+</script>
+
+<template>
+  <div v-for="page in pages" :key="page">
+    <VuePDF :pdf="pdf" :page="page" />
+  </div>
+</template>
`,2);function d(r,g,y,o,c,F){const a=s("AllPages"),t=s("ClientOnly");return k(),n("div",null,[E,i(t,null,{default:h(()=>[i(a)]),_:1})])}const C=l(e,[["render",d]]);export{u as __pageData,C as default}; diff --git a/assets/examples_basic_all_pages.md.Bgiz8YKO.lean.js b/assets/examples_basic_all_pages.md.Bgiz8YKO.lean.js new file mode 100644 index 0000000..0afd4be --- /dev/null +++ b/assets/examples_basic_all_pages.md.Bgiz8YKO.lean.js @@ -0,0 +1 @@ +import{_ as l,D as s,c as n,I as i,w as h,ab as p,o as k}from"./chunks/framework.uxIHJ7Q2.js";const u=JSON.parse('{"title":"All pages","description":"","frontmatter":{},"headers":[],"relativePath":"examples/basic/all_pages.md","filePath":"examples/basic/all_pages.md","lastUpdated":1688955190000}'),e={name:"examples/basic/all_pages.md"},E=p("",2);function d(r,g,y,o,c,F){const a=s("AllPages"),t=s("ClientOnly");return k(),n("div",null,[E,i(t,null,{default:h(()=>[i(a)]),_:1})])}const C=l(e,[["render",d]]);export{u as __pageData,C as default}; diff --git a/assets/examples_basic_annotation_layer.md.bRERWQrF.js b/assets/examples_basic_annotation_layer.md.bRERWQrF.js new file mode 100644 index 0000000..0f20a0b --- /dev/null +++ b/assets/examples_basic_annotation_layer.md.bRERWQrF.js @@ -0,0 +1,19 @@ +import{_ as t,D as s,c as h,I as i,w as l,ab as k,o as p}from"./chunks/framework.uxIHJ7Q2.js";const u=JSON.parse('{"title":"Annotation Layer","description":"","frontmatter":{},"headers":[],"relativePath":"examples/basic/annotation_layer.md","filePath":"examples/basic/annotation_layer.md","lastUpdated":1690323794000}'),e={name:"examples/basic/annotation_layer.md"},E=k(`

Annotation Layer

vue
<script setup>
+import { ref } from 'vue'
+import { VuePDF, usePDF } from '@tato30/vue-pdf'
+import '@tato30/vue-pdf/style.css'
+
+const annotation_layer = ref(false)
+const { pdf } = usePDF('example_014.pdf')
+</script>
+
+<template>
+  <div>
+    <div>
+      <button @click="annotation_layer = !annotation_layer">
+        Change to {{ !annotation_layer }}
+      </button>
+    </div>
+    <VuePDF :pdf="pdf" :annotation-layer="annotation_layer" />
+  </div>
+</template>
`,2);function r(d,y,g,o,F,c){const a=s("AnnotationLayer"),n=s("ClientOnly");return p(),h("div",null,[E,i(n,null,{default:l(()=>[i(a)]),_:1})])}const A=t(e,[["render",r]]);export{u as __pageData,A as default}; diff --git a/assets/examples_basic_annotation_layer.md.bRERWQrF.lean.js b/assets/examples_basic_annotation_layer.md.bRERWQrF.lean.js new file mode 100644 index 0000000..21dce03 --- /dev/null +++ b/assets/examples_basic_annotation_layer.md.bRERWQrF.lean.js @@ -0,0 +1 @@ +import{_ as t,D as s,c as h,I as i,w as l,ab as k,o as p}from"./chunks/framework.uxIHJ7Q2.js";const u=JSON.parse('{"title":"Annotation Layer","description":"","frontmatter":{},"headers":[],"relativePath":"examples/basic/annotation_layer.md","filePath":"examples/basic/annotation_layer.md","lastUpdated":1690323794000}'),e={name:"examples/basic/annotation_layer.md"},E=k("",2);function r(d,y,g,o,F,c){const a=s("AnnotationLayer"),n=s("ClientOnly");return p(),h("div",null,[E,i(n,null,{default:l(()=>[i(a)]),_:1})])}const A=t(e,[["render",r]]);export{u as __pageData,A as default}; diff --git a/assets/examples_basic_one_page.md.BQJ5PNC5.js b/assets/examples_basic_one_page.md.BQJ5PNC5.js new file mode 100644 index 0000000..4699444 --- /dev/null +++ b/assets/examples_basic_one_page.md.BQJ5PNC5.js @@ -0,0 +1,22 @@ +import{_ as h,D as s,c as k,I as i,w as t,ab as p,o as l}from"./chunks/framework.uxIHJ7Q2.js";const D=JSON.parse('{"title":"One page","description":"","frontmatter":{},"headers":[],"relativePath":"examples/basic/one_page.md","filePath":"examples/basic/one_page.md","lastUpdated":1688955190000}'),e={name:"examples/basic/one_page.md"},E=p(`

One page

vue
<script setup>
+import { ref } from 'vue'
+import { VuePDF, usePDF } from '@tato30/vue-pdf'
+
+const page = ref(1)
+const { pdf, pages } = usePDF('https://mozilla.github.io/pdf.js/web/compressed.tracemonkey-pldi-09.pdf')
+</script>
+
+<template>
+  <div>
+    <div>
+      <button @click="page = page > 1 ? page - 1 : page">
+        Prev
+      </button>
+      <span>{{ page }} / {{ pages }}</span>
+      <button @click="page = page < pages ? page + 1 : page">
+        Next
+      </button>
+    </div>
+    <VuePDF :pdf="pdf" :page="page" />
+  </div>
+</template>
`,2);function g(d,r,y,F,o,c){const a=s("OnePage"),n=s("ClientOnly");return l(),k("div",null,[E,i(n,null,{default:t(()=>[i(a)]),_:1})])}const u=h(e,[["render",g]]);export{D as __pageData,u as default}; diff --git a/assets/examples_basic_one_page.md.BQJ5PNC5.lean.js b/assets/examples_basic_one_page.md.BQJ5PNC5.lean.js new file mode 100644 index 0000000..a01c641 --- /dev/null +++ b/assets/examples_basic_one_page.md.BQJ5PNC5.lean.js @@ -0,0 +1 @@ +import{_ as h,D as s,c as k,I as i,w as t,ab as p,o as l}from"./chunks/framework.uxIHJ7Q2.js";const D=JSON.parse('{"title":"One page","description":"","frontmatter":{},"headers":[],"relativePath":"examples/basic/one_page.md","filePath":"examples/basic/one_page.md","lastUpdated":1688955190000}'),e={name:"examples/basic/one_page.md"},E=p("",2);function g(d,r,y,F,o,c){const a=s("OnePage"),n=s("ClientOnly");return l(),k("div",null,[E,i(n,null,{default:t(()=>[i(a)]),_:1})])}const u=h(e,[["render",g]]);export{D as __pageData,u as default}; diff --git a/assets/examples_basic_rotation.md.hLcYj0sL.js b/assets/examples_basic_rotation.md.hLcYj0sL.js new file mode 100644 index 0000000..b26865d --- /dev/null +++ b/assets/examples_basic_rotation.md.hLcYj0sL.js @@ -0,0 +1,22 @@ +import{_ as n,D as s,c as h,I as i,w as k,ab as l,o as p}from"./chunks/framework.uxIHJ7Q2.js";const C=JSON.parse('{"title":"Rotation","description":"","frontmatter":{},"headers":[],"relativePath":"examples/basic/rotation.md","filePath":"examples/basic/rotation.md","lastUpdated":1688955190000}'),E={name:"examples/basic/rotation.md"},e=l(`

Rotation

vue
<script setup>
+import { ref } from 'vue'
+import { VuePDF, usePDF } from '@tato30/vue-pdf'
+
+const rotation = ref(1)
+const { pdf } = usePDF('https://raw.githubusercontent.com/mozilla/pdf.js/ba2edeae/web/compressed.tracemonkey-pldi-09.pdf')
+</script>
+
+<template>
+  <div>
+    <div>
+      <button @click="rotation = rotation - 90">
+        -90
+      </button>
+      <span>{{ rotation }}</span>
+      <button @click="rotation = rotation + 90">
+        +90
+      </button>
+    </div>
+    <VuePDF :pdf="pdf" :rotation="rotation" />
+  </div>
+</template>
`,2);function r(d,g,y,o,F,c){const a=s("Rotation",!0),t=s("ClientOnly");return p(),h("div",null,[e,i(t,null,{default:k(()=>[i(a)]),_:1})])}const D=n(E,[["render",r]]);export{C as __pageData,D as default}; diff --git a/assets/examples_basic_rotation.md.hLcYj0sL.lean.js b/assets/examples_basic_rotation.md.hLcYj0sL.lean.js new file mode 100644 index 0000000..884e025 --- /dev/null +++ b/assets/examples_basic_rotation.md.hLcYj0sL.lean.js @@ -0,0 +1 @@ +import{_ as n,D as s,c as h,I as i,w as k,ab as l,o as p}from"./chunks/framework.uxIHJ7Q2.js";const C=JSON.parse('{"title":"Rotation","description":"","frontmatter":{},"headers":[],"relativePath":"examples/basic/rotation.md","filePath":"examples/basic/rotation.md","lastUpdated":1688955190000}'),E={name:"examples/basic/rotation.md"},e=l("",2);function r(d,g,y,o,F,c){const a=s("Rotation",!0),t=s("ClientOnly");return p(),h("div",null,[e,i(t,null,{default:k(()=>[i(a)]),_:1})])}const D=n(E,[["render",r]]);export{C as __pageData,D as default}; diff --git a/assets/examples_basic_scale.md.zG8witMG.js b/assets/examples_basic_scale.md.zG8witMG.js new file mode 100644 index 0000000..ff3d88b --- /dev/null +++ b/assets/examples_basic_scale.md.zG8witMG.js @@ -0,0 +1,22 @@ +import{_ as n,D as s,c as t,I as i,w as k,ab as l,o as p}from"./chunks/framework.uxIHJ7Q2.js";const D=JSON.parse('{"title":"Scale","description":"","frontmatter":{},"headers":[],"relativePath":"examples/basic/scale.md","filePath":"examples/basic/scale.md","lastUpdated":1688955190000}'),E={name:"examples/basic/scale.md"},e=l(`

Scale

vue
<script setup>
+import { ref } from 'vue'
+import { VuePDF, usePDF } from '@tato30/vue-pdf'
+
+const scale = ref(1)
+const { pdf } = usePDF('https://raw.githubusercontent.com/mozilla/pdf.js/ba2edeae/web/compressed.tracemonkey-pldi-09.pdf')
+</script>
+
+<template>
+  <div>
+    <div>
+      <button @click="scale = scale > 0.25 ? scale - 0.25 : scale">
+        -
+      </button>
+      <span>{{ scale * 100 }}%</span>
+      <button @click="scale = scale < 2 ? scale + 0.25 : scale">
+        +
+      </button>
+    </div>
+    <VuePDF :pdf="pdf" :scale="scale" />
+  </div>
+</template>
`,2);function r(d,g,y,c,F,o){const a=s("Scale",!0),h=s("ClientOnly");return p(),t("div",null,[e,i(h,null,{default:k(()=>[i(a)]),_:1})])}const u=n(E,[["render",r]]);export{D as __pageData,u as default}; diff --git a/assets/examples_basic_scale.md.zG8witMG.lean.js b/assets/examples_basic_scale.md.zG8witMG.lean.js new file mode 100644 index 0000000..dc86a12 --- /dev/null +++ b/assets/examples_basic_scale.md.zG8witMG.lean.js @@ -0,0 +1 @@ +import{_ as n,D as s,c as t,I as i,w as k,ab as l,o as p}from"./chunks/framework.uxIHJ7Q2.js";const D=JSON.parse('{"title":"Scale","description":"","frontmatter":{},"headers":[],"relativePath":"examples/basic/scale.md","filePath":"examples/basic/scale.md","lastUpdated":1688955190000}'),E={name:"examples/basic/scale.md"},e=l("",2);function r(d,g,y,c,F,o){const a=s("Scale",!0),h=s("ClientOnly");return p(),t("div",null,[e,i(h,null,{default:k(()=>[i(a)]),_:1})])}const u=n(E,[["render",r]]);export{D as __pageData,u as default}; diff --git a/assets/examples_basic_text_layer.md.CvqCS7X4.js b/assets/examples_basic_text_layer.md.CvqCS7X4.js new file mode 100644 index 0000000..1d5ee9c --- /dev/null +++ b/assets/examples_basic_text_layer.md.CvqCS7X4.js @@ -0,0 +1,19 @@ +import{_ as n,D as s,c as h,I as i,w as l,ab as k,o as p}from"./chunks/framework.uxIHJ7Q2.js";const u=JSON.parse('{"title":"Text Layer","description":"","frontmatter":{},"headers":[],"relativePath":"examples/basic/text_layer.md","filePath":"examples/basic/text_layer.md","lastUpdated":1690323794000}'),e={name:"examples/basic/text_layer.md"},E=k(`

Text Layer

vue
<script setup>
+import { ref } from 'vue'
+import { VuePDF, usePDF } from '@tato30/vue-pdf'
+import '@tato30/vue-pdf/style.css'
+
+const text_layer = ref(false)
+const { pdf } = usePDF('https://raw.githubusercontent.com/mozilla/pdf.js/ba2edeae/web/compressed.tracemonkey-pldi-09.pdf')
+</script>
+
+<template>
+  <div>
+    <div>
+      <button @click="text_layer = !text_layer">
+        Change to {{ !text_layer }}
+      </button>
+    </div>
+    <VuePDF :pdf="pdf" :text-layer="text_layer" />
+  </div>
+</template>
`,2);function r(d,y,g,c,o,F){const a=s("TextLayer"),t=s("ClientOnly");return p(),h("div",null,[E,i(t,null,{default:l(()=>[i(a)]),_:1})])}const C=n(e,[["render",r]]);export{u as __pageData,C as default}; diff --git a/assets/examples_basic_text_layer.md.CvqCS7X4.lean.js b/assets/examples_basic_text_layer.md.CvqCS7X4.lean.js new file mode 100644 index 0000000..9739250 --- /dev/null +++ b/assets/examples_basic_text_layer.md.CvqCS7X4.lean.js @@ -0,0 +1 @@ +import{_ as n,D as s,c as h,I as i,w as l,ab as k,o as p}from"./chunks/framework.uxIHJ7Q2.js";const u=JSON.parse('{"title":"Text Layer","description":"","frontmatter":{},"headers":[],"relativePath":"examples/basic/text_layer.md","filePath":"examples/basic/text_layer.md","lastUpdated":1690323794000}'),e={name:"examples/basic/text_layer.md"},E=k("",2);function r(d,y,g,c,o,F){const a=s("TextLayer"),t=s("ClientOnly");return p(),h("div",null,[E,i(t,null,{default:l(()=>[i(a)]),_:1})])}const C=n(e,[["render",r]]);export{u as __pageData,C as default}; diff --git a/assets/examples_basic_xfa_layer.md.41D_gXwR.js b/assets/examples_basic_xfa_layer.md.41D_gXwR.js new file mode 100644 index 0000000..e0997b8 --- /dev/null +++ b/assets/examples_basic_xfa_layer.md.41D_gXwR.js @@ -0,0 +1,15 @@ +import{_ as t,D as s,c as l,I as i,w as p,ab as h,o as e}from"./chunks/framework.uxIHJ7Q2.js";const m=JSON.parse('{"title":"XFA Forms","description":"","frontmatter":{},"headers":[],"relativePath":"examples/basic/xfa_layer.md","filePath":"examples/basic/xfa_layer.md","lastUpdated":1690323794000}'),k={name:"examples/basic/xfa_layer.md"},E=h(`

XFA Forms

vue
<script setup>
+import { VuePDF, usePDF } from '@tato30/vue-pdf'
+import '@tato30/vue-pdf/style.css'
+
+const { pdf } = usePDF({
+  url: '/example_xfa.pdf',
+  enableXfa: true,
+})
+</script>
+
+<template>
+  <div class="container">
+    <VuePDF :pdf="pdf" />
+  </div>
+</template>
`,2);function r(d,g,y,o,c,F){const a=s("XFALayer"),n=s("ClientOnly");return e(),l("div",null,[E,i(n,null,{default:p(()=>[i(a)]),_:1})])}const u=t(k,[["render",r]]);export{m as __pageData,u as default}; diff --git a/assets/examples_basic_xfa_layer.md.41D_gXwR.lean.js b/assets/examples_basic_xfa_layer.md.41D_gXwR.lean.js new file mode 100644 index 0000000..d32c652 --- /dev/null +++ b/assets/examples_basic_xfa_layer.md.41D_gXwR.lean.js @@ -0,0 +1 @@ +import{_ as t,D as s,c as l,I as i,w as p,ab as h,o as e}from"./chunks/framework.uxIHJ7Q2.js";const m=JSON.parse('{"title":"XFA Forms","description":"","frontmatter":{},"headers":[],"relativePath":"examples/basic/xfa_layer.md","filePath":"examples/basic/xfa_layer.md","lastUpdated":1690323794000}'),k={name:"examples/basic/xfa_layer.md"},E=h("",2);function r(d,g,y,o,c,F){const a=s("XFALayer"),n=s("ClientOnly");return e(),l("div",null,[E,i(n,null,{default:p(()=>[i(a)]),_:1})])}const u=t(k,[["render",r]]);export{m as __pageData,u as default}; diff --git a/assets/examples_loaded_events_annotation_loaded.md.CvtWpCf6.js b/assets/examples_loaded_events_annotation_loaded.md.CvtWpCf6.js new file mode 100644 index 0000000..ee55536 --- /dev/null +++ b/assets/examples_loaded_events_annotation_loaded.md.CvtWpCf6.js @@ -0,0 +1,14 @@ +import{_ as t,D as s,c as l,I as i,w as e,ab as h,o as p}from"./chunks/framework.uxIHJ7Q2.js";const u=JSON.parse('{"title":"Annotation Loaded Event","description":"","frontmatter":{},"headers":[],"relativePath":"examples/loaded_events/annotation_loaded.md","filePath":"examples/loaded_events/annotation_loaded.md","lastUpdated":1716762738000}'),k={name:"examples/loaded_events/annotation_loaded.md"},E=h(`

Annotation Loaded Event

WARNING

Annotation loaded event's payload has too many data to display on screen, open the console to see the results.

vue
<script setup>
+import { VuePDF, usePDF } from '@tato30/vue-pdf'
+
+const { pdf } = usePDF('/example_014.pdf')
+function onLoaded(value) {
+  console.log(value)
+}
+</script>
+
+<template>
+  <div>
+    <VuePDF :pdf="pdf" annotation-layer @annotation-loaded="onLoaded" />
+  </div>
+</template>
`,3);function d(o,r,g,y,c,F){const a=s("AnnotationLoaded"),n=s("ClientOnly");return p(),l("div",null,[E,i(n,null,{default:e(()=>[i(a)]),_:1})])}const m=t(k,[["render",d]]);export{u as __pageData,m as default}; diff --git a/assets/examples_loaded_events_annotation_loaded.md.CvtWpCf6.lean.js b/assets/examples_loaded_events_annotation_loaded.md.CvtWpCf6.lean.js new file mode 100644 index 0000000..187bc5a --- /dev/null +++ b/assets/examples_loaded_events_annotation_loaded.md.CvtWpCf6.lean.js @@ -0,0 +1 @@ +import{_ as t,D as s,c as l,I as i,w as e,ab as h,o as p}from"./chunks/framework.uxIHJ7Q2.js";const u=JSON.parse('{"title":"Annotation Loaded Event","description":"","frontmatter":{},"headers":[],"relativePath":"examples/loaded_events/annotation_loaded.md","filePath":"examples/loaded_events/annotation_loaded.md","lastUpdated":1716762738000}'),k={name:"examples/loaded_events/annotation_loaded.md"},E=h("",3);function d(o,r,g,y,c,F){const a=s("AnnotationLoaded"),n=s("ClientOnly");return p(),l("div",null,[E,i(n,null,{default:e(()=>[i(a)]),_:1})])}const m=t(k,[["render",d]]);export{u as __pageData,m as default}; diff --git a/assets/examples_loaded_events_loaded.md.ClUowwGY.js b/assets/examples_loaded_events_loaded.md.ClUowwGY.js new file mode 100644 index 0000000..c750e95 --- /dev/null +++ b/assets/examples_loaded_events_loaded.md.ClUowwGY.js @@ -0,0 +1,15 @@ +import{_ as t,D as s,c as l,I as i,w as e,ab as h,o as p}from"./chunks/framework.uxIHJ7Q2.js";const _=JSON.parse('{"title":"Loaded Event","description":"","frontmatter":{},"headers":[],"relativePath":"examples/loaded_events/loaded.md","filePath":"examples/loaded_events/loaded.md","lastUpdated":1708915106000}'),k={name:"examples/loaded_events/loaded.md"},E=h(`

Loaded Event

vue
<script setup>
+import { ref } from 'vue'
+import { VuePDF, usePDF } from '@tato30/vue-pdf'
+
+const { pdf } = usePDF('https://raw.githubusercontent.com/mozilla/pdf.js/ba2edeae/web/compressed.tracemonkey-pldi-09.pdf')
+function onLoaded(value) {
+  console.log(value)
+}
+</script>
+
+<template>
+  <div>
+    <VuePDF :pdf="pdf" @loaded="onLoaded" />
+  </div>
+</template>
`,2);function d(r,o,g,y,c,F){const a=s("Loaded",!0),n=s("ClientOnly");return p(),l("div",null,[E,i(n,null,{default:e(()=>[i(a)]),_:1})])}const m=t(k,[["render",d]]);export{_ as __pageData,m as default}; diff --git a/assets/examples_loaded_events_loaded.md.ClUowwGY.lean.js b/assets/examples_loaded_events_loaded.md.ClUowwGY.lean.js new file mode 100644 index 0000000..20f54c0 --- /dev/null +++ b/assets/examples_loaded_events_loaded.md.ClUowwGY.lean.js @@ -0,0 +1 @@ +import{_ as t,D as s,c as l,I as i,w as e,ab as h,o as p}from"./chunks/framework.uxIHJ7Q2.js";const _=JSON.parse('{"title":"Loaded Event","description":"","frontmatter":{},"headers":[],"relativePath":"examples/loaded_events/loaded.md","filePath":"examples/loaded_events/loaded.md","lastUpdated":1708915106000}'),k={name:"examples/loaded_events/loaded.md"},E=h("",2);function d(r,o,g,y,c,F){const a=s("Loaded",!0),n=s("ClientOnly");return p(),l("div",null,[E,i(n,null,{default:e(()=>[i(a)]),_:1})])}const m=t(k,[["render",d]]);export{_ as __pageData,m as default}; diff --git a/assets/examples_loaded_events_text_loaded.md.BfjqVtQx.js b/assets/examples_loaded_events_text_loaded.md.BfjqVtQx.js new file mode 100644 index 0000000..d6afaeb --- /dev/null +++ b/assets/examples_loaded_events_text_loaded.md.BfjqVtQx.js @@ -0,0 +1,14 @@ +import{_ as n,D as s,c as e,I as i,w as l,ab as h,o as p}from"./chunks/framework.uxIHJ7Q2.js";const u=JSON.parse('{"title":"Text Loaded Event","description":"","frontmatter":{},"headers":[],"relativePath":"examples/loaded_events/text_loaded.md","filePath":"examples/loaded_events/text_loaded.md","lastUpdated":1716762738000}'),k={name:"examples/loaded_events/text_loaded.md"},E=h(`

Text Loaded Event

WARNING

Text loaded event's payload has too many data to display on screen, open the console to see the results.

vue
<script setup>
+import { VuePDF, usePDF } from '@tato30/vue-pdf'
+
+const { pdf } = usePDF('https://raw.githubusercontent.com/mozilla/pdf.js/ba2edeae/web/compressed.tracemonkey-pldi-09.pdf')
+function onLoaded(value) {
+  console.log(value)
+}
+</script>
+
+<template>
+  <div>
+    <VuePDF :pdf="pdf" text-layer @text-loaded="onLoaded" />
+  </div>
+</template>
`,3);function d(r,o,g,y,c,F){const a=s("TextLoaded"),t=s("ClientOnly");return p(),e("div",null,[E,i(t,null,{default:l(()=>[i(a)]),_:1})])}const m=n(k,[["render",d]]);export{u as __pageData,m as default}; diff --git a/assets/examples_loaded_events_text_loaded.md.BfjqVtQx.lean.js b/assets/examples_loaded_events_text_loaded.md.BfjqVtQx.lean.js new file mode 100644 index 0000000..caa989a --- /dev/null +++ b/assets/examples_loaded_events_text_loaded.md.BfjqVtQx.lean.js @@ -0,0 +1 @@ +import{_ as n,D as s,c as e,I as i,w as l,ab as h,o as p}from"./chunks/framework.uxIHJ7Q2.js";const u=JSON.parse('{"title":"Text Loaded Event","description":"","frontmatter":{},"headers":[],"relativePath":"examples/loaded_events/text_loaded.md","filePath":"examples/loaded_events/text_loaded.md","lastUpdated":1716762738000}'),k={name:"examples/loaded_events/text_loaded.md"},E=h("",3);function d(r,o,g,y,c,F){const a=s("TextLoaded"),t=s("ClientOnly");return p(),e("div",null,[E,i(t,null,{default:l(()=>[i(a)]),_:1})])}const m=n(k,[["render",d]]);export{u as __pageData,m as default}; diff --git a/assets/examples_loaded_events_xfa_loaded.md.0fevCerE.js b/assets/examples_loaded_events_xfa_loaded.md.0fevCerE.js new file mode 100644 index 0000000..520be77 --- /dev/null +++ b/assets/examples_loaded_events_xfa_loaded.md.0fevCerE.js @@ -0,0 +1,18 @@ +import{_ as t,D as s,c as l,I as i,w as h,ab as p,o as e}from"./chunks/framework.uxIHJ7Q2.js";const u=JSON.parse('{"title":"XFA Loaded Event","description":"","frontmatter":{},"headers":[],"relativePath":"examples/loaded_events/xfa_loaded.md","filePath":"examples/loaded_events/xfa_loaded.md","lastUpdated":1716762738000}'),k={name:"examples/loaded_events/xfa_loaded.md"},E=p(`

XFA Loaded Event

vue
<script setup>
+import { VuePDF, usePDF } from '@tato30/vue-pdf'
+import '@tato30/vue-pdf/style.css'
+
+const { pdf } = usePDF({
+  url: '/example_xfa.pdf',
+  enableXfa: true,
+})
+function onLoaded() {
+  console.log("XFA loaded")
+}
+</script>
+
+<template>
+  <div>
+    <VuePDF :pdf="pdf" @xfa-loaded="onLoaded" />
+  </div>
+</template>
`,2);function d(r,g,o,y,c,F){const a=s("XFALoaded"),n=s("ClientOnly");return e(),l("div",null,[E,i(n,null,{default:h(()=>[i(a)]),_:1})])}const f=t(k,[["render",d]]);export{u as __pageData,f as default}; diff --git a/assets/examples_loaded_events_xfa_loaded.md.0fevCerE.lean.js b/assets/examples_loaded_events_xfa_loaded.md.0fevCerE.lean.js new file mode 100644 index 0000000..b3219dc --- /dev/null +++ b/assets/examples_loaded_events_xfa_loaded.md.0fevCerE.lean.js @@ -0,0 +1 @@ +import{_ as t,D as s,c as l,I as i,w as h,ab as p,o as e}from"./chunks/framework.uxIHJ7Q2.js";const u=JSON.parse('{"title":"XFA Loaded Event","description":"","frontmatter":{},"headers":[],"relativePath":"examples/loaded_events/xfa_loaded.md","filePath":"examples/loaded_events/xfa_loaded.md","lastUpdated":1716762738000}'),k={name:"examples/loaded_events/xfa_loaded.md"},E=p("",2);function d(r,g,o,y,c,F){const a=s("XFALoaded"),n=s("ClientOnly");return e(),l("div",null,[E,i(n,null,{default:h(()=>[i(a)]),_:1})])}const f=t(k,[["render",d]]);export{u as __pageData,f as default}; diff --git a/assets/examples_text_events_text_highlight.md.DoaqSf0G.js b/assets/examples_text_events_text_highlight.md.DoaqSf0G.js new file mode 100644 index 0000000..37794c8 --- /dev/null +++ b/assets/examples_text_events_text_highlight.md.DoaqSf0G.js @@ -0,0 +1,24 @@ +import{_ as t,D as s,c as n,I as i,w as l,ab as k,o as p}from"./chunks/framework.uxIHJ7Q2.js";const u=JSON.parse('{"title":"Highlight Event","description":"","frontmatter":{},"headers":[],"relativePath":"examples/text_events/text_highlight.md","filePath":"examples/text_events/text_highlight.md","lastUpdated":1708306083000}'),e={name:"examples/text_events/text_highlight.md"},E=k(`

Highlight Event

WARNING

Highlight event's payload has too many data to display on screen, open the console to see the results.

vue
<script setup>
+import { VuePDF, usePDF } from '@tato30/vue-pdf'
+import '@tato30/vue-pdf/style.css'
+import { ref } from 'vue'
+
+const { pdf } = usePDF('https://raw.githubusercontent.com/mozilla/pdf.js/ba2edeae/web/compressed.tracemonkey-pldi-09.pdf')
+
+const highlightText = ref('Trace-based')
+const highlightOptions = ref({
+  completeWords: false,
+  ignoreCase: true,
+})
+
+function onHighlight(value) {
+  console.log(value)
+}
+</script>
+
+<template>
+  <div>
+    <input v-model="highlightText">
+    <VuePDF :pdf="pdf" text-layer :highlight-text="highlightText" :highlight-options="highlightOptions" @highlight="onHighlight" />
+  </div>
+</template>
`,3);function g(r,d,y,F,o,c){const a=s("TextHighlight"),h=s("ClientOnly");return p(),n("div",null,[E,i(h,null,{default:l(()=>[i(a)]),_:1})])}const _=t(e,[["render",g]]);export{u as __pageData,_ as default}; diff --git a/assets/examples_text_events_text_highlight.md.DoaqSf0G.lean.js b/assets/examples_text_events_text_highlight.md.DoaqSf0G.lean.js new file mode 100644 index 0000000..c2e6732 --- /dev/null +++ b/assets/examples_text_events_text_highlight.md.DoaqSf0G.lean.js @@ -0,0 +1 @@ +import{_ as t,D as s,c as n,I as i,w as l,ab as k,o as p}from"./chunks/framework.uxIHJ7Q2.js";const u=JSON.parse('{"title":"Highlight Event","description":"","frontmatter":{},"headers":[],"relativePath":"examples/text_events/text_highlight.md","filePath":"examples/text_events/text_highlight.md","lastUpdated":1708306083000}'),e={name:"examples/text_events/text_highlight.md"},E=k("",3);function g(r,d,y,F,o,c){const a=s("TextHighlight"),h=s("ClientOnly");return p(),n("div",null,[E,i(h,null,{default:l(()=>[i(a)]),_:1})])}const _=t(e,[["render",g]]);export{u as __pageData,_ as default}; diff --git a/assets/guide_composables.md.faNLVSlf.js b/assets/guide_composables.md.faNLVSlf.js new file mode 100644 index 0000000..820e0cb --- /dev/null +++ b/assets/guide_composables.md.faNLVSlf.js @@ -0,0 +1,71 @@ +import{_ as s,c as i,o as a,ab as n}from"./chunks/framework.uxIHJ7Q2.js";const c=JSON.parse('{"title":"Composables","description":"","frontmatter":{"outline":[2,3]},"headers":[],"relativePath":"guide/composables.md","filePath":"guide/composables.md","lastUpdated":1716762738000}'),t={name:"guide/composables.md"},e=n(`

Composables

usePDF

This package provides a default composable named usePDF that loads and prepare the PDF Document for it usage with VuePDF component, also let you get some basic information and properties about the document.

Keep in mind that usePDF use the same DocumentInitParameter as pdf.js, so you could decide how pdf.js should loads your PDF and then make use of more of pdf.js features that are not included in VuePDF by default.

vue
<script setup>
+import { VuePDF, usePDF } from '@tato30/vue-pdf'
+
+const { pdf, pages, info } = usePDF('sample.pdf')
+</script>
+
+<template>
+  <VuePDF :pdf="pdf" />
+</template>

Reactivity

usePDF is also reactive if you use a ref<src> instead of a plain src, when the value of ref changes the returned values also will chage.

vue
<script setup>
+import { VuePDF, usePDF } from '@tato30/vue-pdf'
+
+// Changing currentPdf value will change pdf, pages and info values
+const currentPdf = ref('sample.pdf')
+const { pdf, pages, info } = usePDF(currentPdf)
+</script>
+
+<template>
+  <VuePDF :pdf="pdf" />
+</template>

Parameters

src

Type: string | URL | TypedArray | DocumentInitParameters | ref<string> | ref<URL> | ref<TypedArray> | ref<DocumentInitParameters>
Required: True

This parameter is the same src of pdf.js

js
const { pdf, pages, info } = usePDF('sample.pdf')

options

Type: object

An object with the following properties:

  • onPassword: Callback function to request the document password if no password (or wrong password) was provided.
  • onProgress: Callback function to enable progress monitor.
  • onError: function to handle pdf loading errors
js
function onPassword(updatePassword, reason) {
+  console.log(\`Reason for callback: \${reason}\`)
+  updatePassword('password1234')
+}
+
+function onProgress({ loaded, total }) {
+  console.log(\`\${loaded / total * 100}% Loaded\`)
+}
+
+function onError(reason) {
+  console.error(\`PDF loading error: \${reason}\`)
+}
+
+const { pdf, pages, info } = usePDF('sample.pdf', {
+  onPassword,
+  onProgress,
+  onError
+})

Properties

All values returned by usePDF are shallowRef objects.

pdf

Type: PDFDocumentLoadingTask

Document's loading task, see PDFDocumentLoadingTask for more details.


pages

Type: int

Document's number pages.


info

Type: object

Document's information object.

json
{
+  "metadata": {...}, // Metadata object
+  "attachments": {...}, // File attachments object
+  "javascript": [...], // Array of embedded scripts
+  "outline": {...} // Outline objects
+}

getPDFDestination

Type: function

This function returns the page number referenced by dest object used by internal-links or outline object. Check the related example in Table of Content


print

Type: function

Open the browser's print dialog with current PDF loaded with the following parameters:

  • dpi: Pages resolution (default: 150).
  • filename: Filename of the printed file (default: 'filename').

download

Type: function

Trigger a downloading action using an HTMLAnchorElement with the following parameters:

  • filename: Filename of the downloaded file (default: 'filename')

Document API

You can access to PDFDocumentProxy through pdf's promise property and use its API methods to get more document's info like annotationStorage or use functions like saveDocument, cleanup, etc.

js
const { pdf } = usePDF('document.pdf')
+
+function doSomething() {
+  pdf.value.promise.then((doc) => {
+    // doc.annotationsStorage
+    // doc.saveDocument()
+    // doc.cleanup()
+    // doc.getData()
+    // ...
+  })
+}

Make your own composable

Using usePDF it's not required, you can use the pdf.js API in your components or build your own composable yourself. Just need to be sure to send on pdf prop a shallowRef | ref PDFDocumentLoadingTask object.

vue
<script setup>
+import { onMounted, ref } from 'vue'
+import * as PDFJS from 'pdfjs-dist'
+
+const pdf = ref()
+
+function loadPDF() {
+  const loadingTask = PDFJS.getDocument('https://raw.githubusercontent.com/mozilla/pdf.js/ba2edeae/web/compressed.tracemonkey-pldi-09.pdf')
+  pdf.value = loadingTask
+}
+
+onMounted(() => {
+  loadPDF()
+})
+</script>
+
+<template>
+  <div>
+    <VuePDF :pdf="pdf" />
+  </div>
+</template>
`,53),l=[e];function h(p,k,d,r,E,o){return a(),i("div",null,l)}const y=s(t,[["render",h]]);export{c as __pageData,y as default}; diff --git a/assets/guide_composables.md.faNLVSlf.lean.js b/assets/guide_composables.md.faNLVSlf.lean.js new file mode 100644 index 0000000..17d8efb --- /dev/null +++ b/assets/guide_composables.md.faNLVSlf.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,ab as n}from"./chunks/framework.uxIHJ7Q2.js";const c=JSON.parse('{"title":"Composables","description":"","frontmatter":{"outline":[2,3]},"headers":[],"relativePath":"guide/composables.md","filePath":"guide/composables.md","lastUpdated":1716762738000}'),t={name:"guide/composables.md"},e=n("",53),l=[e];function h(p,k,d,r,E,o){return a(),i("div",null,l)}const y=s(t,[["render",h]]);export{c as __pageData,y as default}; diff --git a/assets/guide_events.md.EJPsrau-.js b/assets/guide_events.md.EJPsrau-.js new file mode 100644 index 0000000..e75a2b4 --- /dev/null +++ b/assets/guide_events.md.EJPsrau-.js @@ -0,0 +1,115 @@ +import{_ as s,c as i,o as a,ab as t}from"./chunks/framework.uxIHJ7Q2.js";const y=JSON.parse('{"title":"Events","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"guide/events.md","filePath":"guide/events.md","lastUpdated":1708915106000}'),n={name:"guide/events.md"},h=t(`

Events

loaded

vue
<VuePDF :pdf="pdf" @loaded="onLoaded" />

Emitted when page has finished to render, the payload value contains the page's data.

Payload example:

json
{
+  "viewBox": [0, 0, 595.276, 841.89],
+  "scale": 1,
+  "rotation": 90,
+  "offsetX": 0,
+  "offsetY": 0,
+  "transform": [0, 1, 1, 0, 0, 0],
+  "width": 841.89,
+  "height": 595.276
+}

text-loaded

vue
<VuePDF :pdf="pdf" @text-loaded="onLoaded" />

Emitted when text layer has finished to render, the payload value contains the textDivs and textContent of the page.

Payload example:

json
{
+  "textContent": {
+    "items": [{
+      "dir": "ltr",
+      "fontName": "g_d3_f1",
+      "hasEOL": true,
+      "height": 17.9328,
+      "str": "Trace-based Just-in-Time Type Specialization for Dynamic",
+      "transform": [17.9328, 0, 0, 17.9328, 90.5159, 700.6706],
+      "width": 449.09111040000033
+    }], // ... more text items
+    "styles": {
+      "g_d3_f1": {
+        "fontFamily": "sans-serif",
+        "ascent": 0.69,
+        "descent": -0.209,
+        "vertical": false
+      } // ... more objects
+    }
+  },
+  "textDivs": ["<SPANElement>", "<SPANElement>", "..."]
+}

annotation-loaded

vue
<VuePDF :pdf="pdf" @annotation-loaded="onLoaded" />

Emitted when annotation layer has finished to render, the payload value contains the annotations of the page.

Payload example:

json
[
+  {
+    "annotationFlags": 4,
+    "annotationType": 20,
+    "rotation": 0,
+    "fieldType": "Tx",
+    "subType": "Widget"
+    // more properties...
+  }
+] // more annotations

xfa-loaded

vue
<VuePDF :pdf="pdf" @xfa-loaded="onLoaded" />

Emitted when XFA page has finished to render.

highlight

vue
<VuePDF :pdf="pdf" @highlight="onHighlight" />

Emitted when a text has been searched in page using highlight-text and highlight-options, this event return a list of matches and the page where the text was found with its textDivs and textContent.

Check the example: Highlight Event

annotation

vue
<VuePDF :pdf="pdf" @annotation="onAnnotation" />

Emitted when user has an interaction with any annotation.

Annotation event data depends on what type of annotation has triggered the event, in general, the events value follows this structure:

PropertyValue
typePossible values: internal-link, link, file-attachment, form-text, form-select, form-checkbox, form-radio, form-button
dataAnnotation's associated data

internal-link emitted when the user clicks on a link that redirects to another content within the document.

json
{
+  "type": "internal-link",
+  "data": {
+    "referencedPage": 3,
+    "offset": {
+      "left": 82,
+      "bottom": 716
+    }
+  }
+}

link emitted when the user clicks on an external link.

json
{
+  "type": "link",
+  "data": {
+    "url": "mailto:aor@testmail.com",
+    "unsafeUrl": "mailto:aor@testmail.com"
+  }
+}

file-attachment

file-attachment emitted when the user double-clicks an attachment annotation.

json
{
+  "type": "file-attachment",
+  "data": {
+    "filename": "utf8test.txt",
+    "content": [83, 101, 110] // Uint8Array
+  }
+}

form-text

form-text emitted when the user inputs a value in an text-field element.

json
{
+  "type": "form-text",
+  "data": {
+    "fieldName": "firstname",
+    "value": "Aldo Hernandez"
+  }
+}

form-select

form-select emitted when the user inputs a value in an one-select or multi-select element.

json
{
+  "type": "form-select",
+  "data": {
+    "fieldName": "gender",
+    "value": [
+      {
+        "value": "M",
+        "label": "Male"
+      }
+    ],
+    "options": [
+      {
+        "value": "",
+        "label": "-"
+      },
+      {
+        "value": "M",
+        "label": "Male"
+      },
+      {
+        "value": "F",
+        "label": "Female"
+      }
+    ]
+  }
+}

form-checkbox

form-checkbox emitted when the user changes a checkbox field element.

json
{
+  "type": "form-checkbox",
+  "data": {
+    "fieldName": "newsletter",
+    "checked": true
+  }
+}

form-radio

form-radio emitted when the user changes a radio field.

json
{
+  "type": "form-radio",
+  "data": {
+    "fieldName": "drink",
+    "value": "Wine",
+    "defaultValue": "Beer",
+    "options": ["Water", "Beer", "Wine", "Milk"]
+  }
+}

form-button

form-button emitted when the user clicks on a push button element.

json
{
+  "type": "form-button",
+  "data": {
+    "fieldName": "Print",
+    "actions": {
+      "Mouse Down": ["Print()"]
+    },
+    "reset": false
+  }
+}
`,52),l=[h];function k(p,e,E,d,o,r){return a(),i("div",null,l)}const F=s(n,[["render",k]]);export{y as __pageData,F as default}; diff --git a/assets/guide_events.md.EJPsrau-.lean.js b/assets/guide_events.md.EJPsrau-.lean.js new file mode 100644 index 0000000..fc7f67b --- /dev/null +++ b/assets/guide_events.md.EJPsrau-.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,ab as t}from"./chunks/framework.uxIHJ7Q2.js";const y=JSON.parse('{"title":"Events","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"guide/events.md","filePath":"guide/events.md","lastUpdated":1708915106000}'),n={name:"guide/events.md"},h=t("",52),l=[h];function k(p,e,E,d,o,r){return a(),i("div",null,l)}const F=s(n,[["render",k]]);export{y as __pageData,F as default}; diff --git a/assets/guide_introduction.md.CdL9bhWN.js b/assets/guide_introduction.md.CdL9bhWN.js new file mode 100644 index 0000000..85f4af1 --- /dev/null +++ b/assets/guide_introduction.md.CdL9bhWN.js @@ -0,0 +1,52 @@ +import{_ as s,c as i,o as a,ab as n}from"./chunks/framework.uxIHJ7Q2.js";const g=JSON.parse('{"title":"Introduction","description":"","frontmatter":{"outline":[2,3]},"headers":[],"relativePath":"guide/introduction.md","filePath":"guide/introduction.md","lastUpdated":1716701924000}'),t={name:"guide/introduction.md"},e=n(`

Introduction

VuePDF is a client-side component for Vue 3 that allows you to flexibly render PDF pages within your project. This library wraps pdf.js library so all main features of pdf.js are supported by VuePDF as well.

Installation

sh
npm i @tato30/vue-pdf
sh
yarn add @tato30/vue-pdf

Basic Usage

The most basic usage is as simple as import the VuePDF and usePDF and use them on your project 😃

vue
<script setup>
+import { VuePDF, usePDF } from '@tato30/vue-pdf'
+
+const { pdf } = usePDF('sample.pdf')
+</script>
+
+<template>
+  <VuePDF :pdf="pdf" />
+</template>

Working With Layers

Text and Annotations

This component supports text selection and annotation interaction by enabling them with text-layer and annotation-layer props respectively, but for this layers renders correctly is necessary set some css styles, it can be done by importing default styles from @tato30/vue-pdf/style.css.

vue
<script setup>
+import { VuePDF, usePDF } from '@tato30/vue-pdf'
+import '@tato30/vue-pdf/style.css'
+
+const { pdf } = usePDF('sample.pdf')
+</script>
+
+<template>
+  <VuePDF :pdf="pdf" text-layer annotation-layer />
+</template>

Check the examples:

You could create your own custom styles and set them in your project, use this styles as a guide:

XFA Forms

XFA forms also can be supported by enabling them from usePDF.

vue
<script setup>
+import { VuePDF, usePDF } from '@tato30/vue-pdf'
+import '@tato30/vue-pdf/style.css'
+
+const { pdf } = usePDF({
+  url: '/example_xfa.pdf',
+  enableXfa: true,
+})
+</script>
+
+<template>
+  <VuePDF :pdf="pdf" />
+</template>

Check the example:

Server-Side Rendering

VuePDF is a client-side library, so if you are working with a SSR framework like nuxt, surely it will throw an error during the building stage, if that is the case, you could wrap VuePDF in some sort of "client only" directive or component, also usePDF should be wrapped.

Supporting Non-Latin characters

If you are looking for display non-latin text or you are getting a warning like:

Warning: Error during font loading: CMapReaderFactory not initialized, see the useWorkerFetch parameter

you will probably need to copy the cmaps directory from node_modules/pdfjs-dist to your project's public directory, don't worry about no having pdfjs-dist it's installed alongside vue-pdf package.

.
+├─ node_modules
+│  ├─ pdfjs-dist
+│  │  └─ cmaps    <--- Copy this directory
+├─ src
+├─ public         
+|  ├─ *cmaps*     <--- Paste it here!
+├─ package.json
+|  ...

With that made the cmaps will be available on relative path /cmaps/, now you need the tell usePDF uses that cmaps url:

js
const { pdf } = usePDF({
+  url: pdfsource,
+  cMapUrl: '/cmaps/',
+})

Contributing

Any idea, suggestion or contribution to the code or documentation are very welcome.

sh
# Clone the repository
+git clone https://github.com/TaTo30/vue-pdf.git
+
+# Change to code folder
+cd vue-pdf
+cd vue-pdf/docs # In case you want to update docs
+
+# Install node_modules
+npm install
+
+# Run code with hot reload
+npm run dev
`,32),l=[e];function p(h,k,r,d,o,c){return a(),i("div",null,l)}const y=s(t,[["render",p]]);export{g as __pageData,y as default}; diff --git a/assets/guide_introduction.md.CdL9bhWN.lean.js b/assets/guide_introduction.md.CdL9bhWN.lean.js new file mode 100644 index 0000000..5f92ec7 --- /dev/null +++ b/assets/guide_introduction.md.CdL9bhWN.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,ab as n}from"./chunks/framework.uxIHJ7Q2.js";const g=JSON.parse('{"title":"Introduction","description":"","frontmatter":{"outline":[2,3]},"headers":[],"relativePath":"guide/introduction.md","filePath":"guide/introduction.md","lastUpdated":1716701924000}'),t={name:"guide/introduction.md"},e=n("",32),l=[e];function p(h,k,r,d,o,c){return a(),i("div",null,l)}const y=s(t,[["render",p]]);export{g as __pageData,y as default}; diff --git a/assets/guide_methods.md.BSqw95De.js b/assets/guide_methods.md.BSqw95De.js new file mode 100644 index 0000000..bba908b --- /dev/null +++ b/assets/guide_methods.md.BSqw95De.js @@ -0,0 +1,23 @@ +import{_ as s,c as i,o as a,ab as n}from"./chunks/framework.uxIHJ7Q2.js";const y=JSON.parse('{"title":"Methods","description":"","frontmatter":{},"headers":[],"relativePath":"guide/methods.md","filePath":"guide/methods.md","lastUpdated":1708306083000}'),t={name:"guide/methods.md"},h=n(`

Methods

reload

Reload page's render task, useful to update some props, for example, the parent width when fit-parent is used

vue
<script setup>
+import { ref } from 'vue'
+
+const VPDF = ref({})
+function someEvent() {
+  VPDF.value.reload()
+}
+</script>
+
+<template>
+  <VuePDF ref="VPDF" :pdf="pdf" />
+</template>

cancel

Cancel the render task if the page is currently rendering.

vue
<script setup>
+import { ref } from 'vue'
+
+const VPDF = ref({})
+function someEvent() {
+  VPDF.value.cancel()
+}
+</script>
+
+<template>
+  <VuePDF ref="VPDF" :pdf="pdf" />
+</template>
`,7),l=[h];function p(e,k,E,r,d,g){return a(),i("div",null,l)}const c=s(t,[["render",p]]);export{y as __pageData,c as default}; diff --git a/assets/guide_methods.md.BSqw95De.lean.js b/assets/guide_methods.md.BSqw95De.lean.js new file mode 100644 index 0000000..fcb87ef --- /dev/null +++ b/assets/guide_methods.md.BSqw95De.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,ab as n}from"./chunks/framework.uxIHJ7Q2.js";const y=JSON.parse('{"title":"Methods","description":"","frontmatter":{},"headers":[],"relativePath":"guide/methods.md","filePath":"guide/methods.md","lastUpdated":1708306083000}'),t={name:"guide/methods.md"},h=n("",7),l=[h];function p(e,k,E,r,d,g){return a(),i("div",null,l)}const c=s(t,[["render",p]]);export{y as __pageData,c as default}; diff --git a/assets/guide_props.md.Bj6ueBb0.js b/assets/guide_props.md.Bj6ueBb0.js new file mode 100644 index 0000000..a297adf --- /dev/null +++ b/assets/guide_props.md.Bj6ueBb0.js @@ -0,0 +1,34 @@ +import{_ as h,D as n,c as l,j as i,a as s,I as e,ab as a,o as p}from"./chunks/framework.uxIHJ7Q2.js";const q=JSON.parse('{"title":"Props","description":"","frontmatter":{},"headers":[],"relativePath":"guide/props.md","filePath":"guide/props.md","lastUpdated":1715571882000}'),k={name:"guide/props.md"},d=a('

Props

pdf

Type: PDFDocumentLoadingTask
Required: true

The PDFDocumentLoadingTask obtained from usePDF.

vue
<VuePDF :pdf="pdf" />

page

Type: int
Required: false
Default: 1

Page to render, this prop must be a page number starting at 1.

vue
<VuePDF :pdf="pdf" :page="1" />

intent

Type: string
Required: false
Default: display

Rendering intent, can be display, print, or any.

vue
<VuePDF :pdf="pdf" intent="print" />

scale

Type: int
Required: false
Default: 1

Page's scale.

vue
<VuePDF :pdf="pdf" :scale="0.5" />

fit-parent

Type: boolean
Required: false
Default: false

Fit the page's width with the parent width. This prop replace scale in size calculation and has more precedence than width.

vue
<VuePDF :pdf="pdf" fit-parent />

width

Type: number
Required: false
Default: null

Scale the page using a width in px. This prop replace scale in size calculation and has more precedence than height.

vue
<VuePDF :pdf="pdf" :width="500" />

height

Type: number
Required: false
Default: null

Scale the page using a height in px. This prop replace scale in size calculation.

vue
<VuePDF :pdf="pdf" :height="500" />

rotation

Type: int
Required: false
Default: Document's Default

Rotate the page in 90° multiples eg. (90, 180, 270)

vue
<VuePDF :pdf="pdf" :rotation="90" />

text-layer

Type: boolean
Required: false
Default: false

Enables text selection.

vue
<VuePDF :pdf="pdf" text-layer />
',37),E={id:"highlight-text",tabindex:"-1"},r=i("a",{class:"header-anchor",href:"#highlight-text","aria-label":'Permalink to "highlight-text "'},"​",-1),o=a(`

Type: string | string[]
Required: false
Default: null

Highlight on the page the searched text or the searched array of text.

vue
<VuePDF :pdf="pdf" text-layer hightlight-text="javascript" />
+
+<VuePDF :pdf="pdf" text-layer :hightlight-text="['javascript', 'trace-based']" />
`,3),g={id:"highlight-options",tabindex:"-1"},c=i("a",{class:"header-anchor",href:"#highlight-options","aria-label":'Permalink to "highlight-options "'},"​",-1),y=a(`

Type: object
Required: false
Default:

{
+  completeWords: false,
+  ignoreCase: true
+}

Settings for how to find the highlight-text on page's text.

vue
<VuePDF :pdf="pdf" text-layer hightlight-text="javascript" :highlight-options="{
+    completeWords: true,
+    ignoreCase: false
+  }"
+/>

annotation-layer

Type: boolean
Required: false
Default: false

Enables document annotations like links, popups, widgets, etc.

vue
<VuePDF :pdf="pdf" annotation-layer />

watermark-text

Type: string
Required: false
Default: null

Prints a watermark pattern over the canvas.

vue
<VuePDF :pdf="pdf" watermark-text="Sample" />

watermark-options

Type: object
Required: false
Default:

{
+  columns: 4,
+  rows: 4,
+  rotation: 45,
+  fontSize: 18,
+  color: 'rgba(211, 210, 211, 0.4)',
+}

Customize how watermark is printed over the canvas.

vue
<script setup>
+const watermarkOptions = ref({
+  columns: 1,
+  rows: 1,
+  color: '#23FFFF',
+  rotation: 45,
+  fontSize: 20,
+})
+</script>
+
+<VuePDF :pdf="pdf" watermark-text="Sample" :watermark-options="watermarkOptions" />

image-resources-path

Type: string
Required: false
Default: null

Path to image resources needed to render some graphics when required.

vue
<VuePDF :pdf="pdf" image-resources-path="https://unpkg.com/pdfjs-dist@latest/web/images/" />

hide-forms

Type: boolean
Required: false
Default: false

Hide AcroForms from annotation-layer.

vue
<VuePDF :pdf="pdf" annotation-layer hide-forms />

annotations-filter

Type: array
Required: false
Default: null

Allows to choose which annotations display on page, the following options are available:

  • Link
  • Text
  • Stamp
  • Popup
  • FreeText
  • Line
  • Square
  • Circle
  • PolyLine
  • Caret
  • Ink
  • Polygon
  • Highlight
  • Underline
  • Squiggly
  • StrikeOut
  • FileAttachment
  • Widget
    • Widget.Tx
    • Widget.Btn
    • Widget.Ch
    • Widget.Sig

NOTE: Widget shows all Widget subtypes like Widget.Tx, Widget.Btn, etc.

vue
<script setup>
+const filter = ref(['Link', 'Text', 'Widget'])
+</script>
+
+<VuePDF :pdf="pdf" annotation-layer :annotations-filter="filter" />

annotations-map

Type: object
Required: false
Default: null

Allows to map values to annotation's storage, useful for edit annotation's data before rendering.

vue
<script setup>
+const annotationMap = ref({ '7R': { value: 'Modified value' } })
+</script>
+
+<VuePDF :pdf="pdf" annotation-layer :annotations-map="annotationMap" />
`,35);function F(u,C,b,v,f,B){const t=n("badge");return p(),l("div",null,[d,i("h2",E,[s("highlight-text "),e(t,{type:"tip",text:"v1.9",vertical:"middle"}),s(),r]),o,i("h2",g,[s("highlight-options "),e(t,{type:"tip",text:"v1.9",vertical:"middle"}),s(),c]),y])}const x=h(k,[["render",F]]);export{q as __pageData,x as default}; diff --git a/assets/guide_props.md.Bj6ueBb0.lean.js b/assets/guide_props.md.Bj6ueBb0.lean.js new file mode 100644 index 0000000..dd99be3 --- /dev/null +++ b/assets/guide_props.md.Bj6ueBb0.lean.js @@ -0,0 +1 @@ +import{_ as h,D as n,c as l,j as i,a as s,I as e,ab as a,o as p}from"./chunks/framework.uxIHJ7Q2.js";const q=JSON.parse('{"title":"Props","description":"","frontmatter":{},"headers":[],"relativePath":"guide/props.md","filePath":"guide/props.md","lastUpdated":1715571882000}'),k={name:"guide/props.md"},d=a("",37),E={id:"highlight-text",tabindex:"-1"},r=i("a",{class:"header-anchor",href:"#highlight-text","aria-label":'Permalink to "highlight-text "'},"​",-1),o=a("",3),g={id:"highlight-options",tabindex:"-1"},c=i("a",{class:"header-anchor",href:"#highlight-options","aria-label":'Permalink to "highlight-options "'},"​",-1),y=a("",35);function F(u,C,b,v,f,B){const t=n("badge");return p(),l("div",null,[d,i("h2",E,[s("highlight-text "),e(t,{type:"tip",text:"v1.9",vertical:"middle"}),s(),r]),o,i("h2",g,[s("highlight-options "),e(t,{type:"tip",text:"v1.9",vertical:"middle"}),s(),c]),y])}const x=h(k,[["render",F]]);export{q as __pageData,x as default}; diff --git a/assets/guide_slots.md.CtDmd0rJ.js b/assets/guide_slots.md.CtDmd0rJ.js new file mode 100644 index 0000000..9732ef2 --- /dev/null +++ b/assets/guide_slots.md.CtDmd0rJ.js @@ -0,0 +1,7 @@ +import{_ as s,c as i,o as a,ab as t}from"./chunks/framework.uxIHJ7Q2.js";const c=JSON.parse('{"title":"Slots","description":"","frontmatter":{},"headers":[],"relativePath":"guide/slots.md","filePath":"guide/slots.md","lastUpdated":1708306083000}'),n={name:"guide/slots.md"},l=t(`

Slots

loading: default

Content to display when page is rendering

vue
<template>
+  <VuePDF :pdf="pdf">
+    <div>
+      Loading...
+    </div>
+  </VuePDF>
+</template>
`,4),e=[l];function h(p,k,E,d,r,o){return a(),i("div",null,e)}const y=s(n,[["render",h]]);export{c as __pageData,y as default}; diff --git a/assets/guide_slots.md.CtDmd0rJ.lean.js b/assets/guide_slots.md.CtDmd0rJ.lean.js new file mode 100644 index 0000000..fbad431 --- /dev/null +++ b/assets/guide_slots.md.CtDmd0rJ.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,ab as t}from"./chunks/framework.uxIHJ7Q2.js";const c=JSON.parse('{"title":"Slots","description":"","frontmatter":{},"headers":[],"relativePath":"guide/slots.md","filePath":"guide/slots.md","lastUpdated":1708306083000}'),n={name:"guide/slots.md"},l=t("",4),e=[l];function h(p,k,E,d,r,o){return a(),i("div",null,e)}const y=s(n,[["render",h]]);export{c as __pageData,y as default}; diff --git a/assets/index.md.Cn-5gwTH.js b/assets/index.md.Cn-5gwTH.js new file mode 100644 index 0000000..2c3310f --- /dev/null +++ b/assets/index.md.Cn-5gwTH.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a}from"./chunks/framework.uxIHJ7Q2.js";const m=JSON.parse('{"title":"Home","titleTemplate":"PDF component for Vue 3","description":"","frontmatter":{"layout":"home","sidebar":true,"title":"Home","titleTemplate":"PDF component for Vue 3","hero":{"name":"VuePDF","text":"Render PDF pages on your website","tagline":"An easy-to-use component for rendering PDF pages in a dynamically and customizable way","image":{"src":"/logo.png","alt":"VuePDF"},"actions":[{"text":"Get started","link":"/guide/introduction","theme":"brand"},{"text":"Examples","link":"/examples/basic/one_page","theme":"alt"},{"text":"Try on StackBlitz","link":"https://stackblitz.com/edit/vue-pdf-playground?file=src%2FApp.vue","theme":"alt"}]},"features":[{"icon":"↗️","title":"Sizing","details":"Set a scale, width, height or fit the PDF page with parent width"},{"icon":"🔆","title":"Highlight Text","details":"Search and hightlight text"},{"icon":"©️","title":"Watermark","details":"Watermark your pages to protect your content"},{"icon":"📖","title":"Content Layers","details":"Enable text selection, annotations and XFA forms"}]},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":1716701924000}'),n={name:"index.md"};function i(o,r,l,s,c,d){return a(),t("div")}const h=e(n,[["render",i]]);export{m as __pageData,h as default}; diff --git a/assets/index.md.Cn-5gwTH.lean.js b/assets/index.md.Cn-5gwTH.lean.js new file mode 100644 index 0000000..2c3310f --- /dev/null +++ b/assets/index.md.Cn-5gwTH.lean.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a}from"./chunks/framework.uxIHJ7Q2.js";const m=JSON.parse('{"title":"Home","titleTemplate":"PDF component for Vue 3","description":"","frontmatter":{"layout":"home","sidebar":true,"title":"Home","titleTemplate":"PDF component for Vue 3","hero":{"name":"VuePDF","text":"Render PDF pages on your website","tagline":"An easy-to-use component for rendering PDF pages in a dynamically and customizable way","image":{"src":"/logo.png","alt":"VuePDF"},"actions":[{"text":"Get started","link":"/guide/introduction","theme":"brand"},{"text":"Examples","link":"/examples/basic/one_page","theme":"alt"},{"text":"Try on StackBlitz","link":"https://stackblitz.com/edit/vue-pdf-playground?file=src%2FApp.vue","theme":"alt"}]},"features":[{"icon":"↗️","title":"Sizing","details":"Set a scale, width, height or fit the PDF page with parent width"},{"icon":"🔆","title":"Highlight Text","details":"Search and hightlight text"},{"icon":"©️","title":"Watermark","details":"Watermark your pages to protect your content"},{"icon":"📖","title":"Content Layers","details":"Enable text selection, annotations and XFA forms"}]},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":1716701924000}'),n={name:"index.md"};function i(o,r,l,s,c,d){return a(),t("div")}const h=e(n,[["render",i]]);export{m as __pageData,h as default}; diff --git a/assets/inter-italic-cyrillic-ext.r48I6akx.woff2 b/assets/inter-italic-cyrillic-ext.r48I6akx.woff2 new file mode 100644 index 0000000..b6b603d Binary files /dev/null and b/assets/inter-italic-cyrillic-ext.r48I6akx.woff2 differ diff --git a/assets/inter-italic-cyrillic.By2_1cv3.woff2 b/assets/inter-italic-cyrillic.By2_1cv3.woff2 new file mode 100644 index 0000000..def40a4 Binary files /dev/null and b/assets/inter-italic-cyrillic.By2_1cv3.woff2 differ diff --git a/assets/inter-italic-greek-ext.1u6EdAuj.woff2 b/assets/inter-italic-greek-ext.1u6EdAuj.woff2 new file mode 100644 index 0000000..e070c3d Binary files /dev/null and b/assets/inter-italic-greek-ext.1u6EdAuj.woff2 differ diff --git a/assets/inter-italic-greek.DJ8dCoTZ.woff2 b/assets/inter-italic-greek.DJ8dCoTZ.woff2 new file mode 100644 index 0000000..a3c16ca Binary files /dev/null and b/assets/inter-italic-greek.DJ8dCoTZ.woff2 differ diff --git a/assets/inter-italic-latin-ext.CN1xVJS-.woff2 b/assets/inter-italic-latin-ext.CN1xVJS-.woff2 new file mode 100644 index 0000000..2210a89 Binary files /dev/null and b/assets/inter-italic-latin-ext.CN1xVJS-.woff2 differ diff --git a/assets/inter-italic-latin.C2AdPX0b.woff2 b/assets/inter-italic-latin.C2AdPX0b.woff2 new file mode 100644 index 0000000..790d62d Binary files /dev/null and b/assets/inter-italic-latin.C2AdPX0b.woff2 differ diff --git a/assets/inter-italic-vietnamese.BSbpV94h.woff2 b/assets/inter-italic-vietnamese.BSbpV94h.woff2 new file mode 100644 index 0000000..1eec077 Binary files /dev/null and b/assets/inter-italic-vietnamese.BSbpV94h.woff2 differ diff --git a/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2 b/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2 new file mode 100644 index 0000000..2cfe615 Binary files /dev/null and b/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2 differ diff --git a/assets/inter-roman-cyrillic.C5lxZ8CY.woff2 b/assets/inter-roman-cyrillic.C5lxZ8CY.woff2 new file mode 100644 index 0000000..e3886dd Binary files /dev/null and b/assets/inter-roman-cyrillic.C5lxZ8CY.woff2 differ diff --git a/assets/inter-roman-greek-ext.CqjqNYQ-.woff2 b/assets/inter-roman-greek-ext.CqjqNYQ-.woff2 new file mode 100644 index 0000000..36d6748 Binary files /dev/null and b/assets/inter-roman-greek-ext.CqjqNYQ-.woff2 differ diff --git a/assets/inter-roman-greek.BBVDIX6e.woff2 b/assets/inter-roman-greek.BBVDIX6e.woff2 new file mode 100644 index 0000000..2bed1e8 Binary files /dev/null and b/assets/inter-roman-greek.BBVDIX6e.woff2 differ diff --git a/assets/inter-roman-latin-ext.4ZJIpNVo.woff2 b/assets/inter-roman-latin-ext.4ZJIpNVo.woff2 new file mode 100644 index 0000000..9a8d1e2 Binary files /dev/null and b/assets/inter-roman-latin-ext.4ZJIpNVo.woff2 differ diff --git a/assets/inter-roman-latin.Di8DUHzh.woff2 b/assets/inter-roman-latin.Di8DUHzh.woff2 new file mode 100644 index 0000000..07d3c53 Binary files /dev/null and b/assets/inter-roman-latin.Di8DUHzh.woff2 differ diff --git a/assets/inter-roman-vietnamese.BjW4sHH5.woff2 b/assets/inter-roman-vietnamese.BjW4sHH5.woff2 new file mode 100644 index 0000000..57bdc22 Binary files /dev/null and b/assets/inter-roman-vietnamese.BjW4sHH5.woff2 differ diff --git a/assets/style.CveKGxks.css b/assets/style.CveKGxks.css new file mode 100644 index 0000000..dab70ce --- /dev/null +++ b/assets/style.CveKGxks.css @@ -0,0 +1 @@ +@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/vue-pdf/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/vue-pdf/assets/inter-roman-cyrillic.C5lxZ8CY.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/vue-pdf/assets/inter-roman-greek-ext.CqjqNYQ-.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/vue-pdf/assets/inter-roman-greek.BBVDIX6e.woff2) format("woff2");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/vue-pdf/assets/inter-roman-vietnamese.BjW4sHH5.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/vue-pdf/assets/inter-roman-latin-ext.4ZJIpNVo.woff2) format("woff2");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/vue-pdf/assets/inter-roman-latin.Di8DUHzh.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/vue-pdf/assets/inter-italic-cyrillic-ext.r48I6akx.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/vue-pdf/assets/inter-italic-cyrillic.By2_1cv3.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/vue-pdf/assets/inter-italic-greek-ext.1u6EdAuj.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/vue-pdf/assets/inter-italic-greek.DJ8dCoTZ.woff2) format("woff2");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/vue-pdf/assets/inter-italic-vietnamese.BSbpV94h.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/vue-pdf/assets/inter-italic-latin-ext.CN1xVJS-.woff2) format("woff2");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/vue-pdf/assets/inter-italic-latin.C2AdPX0b.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Punctuation SC;font-weight:400;src:local("PingFang SC Regular"),local("Noto Sans CJK SC"),local("Microsoft YaHei");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:500;src:local("PingFang SC Medium"),local("Noto Sans CJK SC"),local("Microsoft YaHei");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:600;src:local("PingFang SC Semibold"),local("Noto Sans CJK SC Bold"),local("Microsoft YaHei Bold");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:700;src:local("PingFang SC Semibold"),local("Noto Sans CJK SC Bold"),local("Microsoft YaHei Bold");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}:root{--vp-c-white: #ffffff;--vp-c-black: #000000;--vp-c-neutral: var(--vp-c-black);--vp-c-neutral-inverse: var(--vp-c-white)}.dark{--vp-c-neutral: var(--vp-c-white);--vp-c-neutral-inverse: var(--vp-c-black)}:root{--vp-c-gray-1: #dddde3;--vp-c-gray-2: #e4e4e9;--vp-c-gray-3: #ebebef;--vp-c-gray-soft: rgba(142, 150, 170, .14);--vp-c-indigo-1: #3451b2;--vp-c-indigo-2: #3a5ccc;--vp-c-indigo-3: #5672cd;--vp-c-indigo-soft: rgba(100, 108, 255, .14);--vp-c-purple-1: #6f42c1;--vp-c-purple-2: #7e4cc9;--vp-c-purple-3: #8e5cd9;--vp-c-purple-soft: rgba(159, 122, 234, .14);--vp-c-green-1: #18794e;--vp-c-green-2: #299764;--vp-c-green-3: #30a46c;--vp-c-green-soft: rgba(16, 185, 129, .14);--vp-c-yellow-1: #915930;--vp-c-yellow-2: #946300;--vp-c-yellow-3: #9f6a00;--vp-c-yellow-soft: rgba(234, 179, 8, .14);--vp-c-red-1: #b8272c;--vp-c-red-2: #d5393e;--vp-c-red-3: #e0575b;--vp-c-red-soft: rgba(244, 63, 94, .14);--vp-c-sponsor: #db2777}.dark{--vp-c-gray-1: #515c67;--vp-c-gray-2: #414853;--vp-c-gray-3: #32363f;--vp-c-gray-soft: rgba(101, 117, 133, .16);--vp-c-indigo-1: #a8b1ff;--vp-c-indigo-2: #5c73e7;--vp-c-indigo-3: #3e63dd;--vp-c-indigo-soft: rgba(100, 108, 255, .16);--vp-c-purple-1: #c8abfa;--vp-c-purple-2: #a879e6;--vp-c-purple-3: #8e5cd9;--vp-c-purple-soft: rgba(159, 122, 234, .16);--vp-c-green-1: #3dd68c;--vp-c-green-2: #30a46c;--vp-c-green-3: #298459;--vp-c-green-soft: rgba(16, 185, 129, .16);--vp-c-yellow-1: #f9b44e;--vp-c-yellow-2: #da8b17;--vp-c-yellow-3: #a46a0a;--vp-c-yellow-soft: rgba(234, 179, 8, .16);--vp-c-red-1: #f66f81;--vp-c-red-2: #f14158;--vp-c-red-3: #b62a3c;--vp-c-red-soft: rgba(244, 63, 94, .16)}:root{--vp-c-bg: #ffffff;--vp-c-bg-alt: #f6f6f7;--vp-c-bg-elv: #ffffff;--vp-c-bg-soft: #f6f6f7}.dark{--vp-c-bg: #1b1b1f;--vp-c-bg-alt: #161618;--vp-c-bg-elv: #202127;--vp-c-bg-soft: #202127}:root{--vp-c-border: #c2c2c4;--vp-c-divider: #e2e2e3;--vp-c-gutter: #e2e2e3}.dark{--vp-c-border: #3c3f44;--vp-c-divider: #2e2e32;--vp-c-gutter: #000000}:root{--vp-c-text-1: rgba(60, 60, 67);--vp-c-text-2: rgba(60, 60, 67, .78);--vp-c-text-3: rgba(60, 60, 67, .56)}.dark{--vp-c-text-1: rgba(255, 255, 245, .86);--vp-c-text-2: rgba(235, 235, 245, .6);--vp-c-text-3: rgba(235, 235, 245, .38)}:root{--vp-c-default-1: var(--vp-c-gray-1);--vp-c-default-2: var(--vp-c-gray-2);--vp-c-default-3: var(--vp-c-gray-3);--vp-c-default-soft: var(--vp-c-gray-soft);--vp-c-brand-1: var(--vp-c-indigo-1);--vp-c-brand-2: var(--vp-c-indigo-2);--vp-c-brand-3: var(--vp-c-indigo-3);--vp-c-brand-soft: var(--vp-c-indigo-soft);--vp-c-brand: var(--vp-c-brand-1);--vp-c-tip-1: var(--vp-c-brand-1);--vp-c-tip-2: var(--vp-c-brand-2);--vp-c-tip-3: var(--vp-c-brand-3);--vp-c-tip-soft: var(--vp-c-brand-soft);--vp-c-note-1: var(--vp-c-brand-1);--vp-c-note-2: var(--vp-c-brand-2);--vp-c-note-3: var(--vp-c-brand-3);--vp-c-note-soft: var(--vp-c-brand-soft);--vp-c-success-1: var(--vp-c-green-1);--vp-c-success-2: var(--vp-c-green-2);--vp-c-success-3: var(--vp-c-green-3);--vp-c-success-soft: var(--vp-c-green-soft);--vp-c-important-1: var(--vp-c-purple-1);--vp-c-important-2: var(--vp-c-purple-2);--vp-c-important-3: var(--vp-c-purple-3);--vp-c-important-soft: var(--vp-c-purple-soft);--vp-c-warning-1: var(--vp-c-yellow-1);--vp-c-warning-2: var(--vp-c-yellow-2);--vp-c-warning-3: var(--vp-c-yellow-3);--vp-c-warning-soft: var(--vp-c-yellow-soft);--vp-c-danger-1: var(--vp-c-red-1);--vp-c-danger-2: var(--vp-c-red-2);--vp-c-danger-3: var(--vp-c-red-3);--vp-c-danger-soft: var(--vp-c-red-soft);--vp-c-caution-1: var(--vp-c-red-1);--vp-c-caution-2: var(--vp-c-red-2);--vp-c-caution-3: var(--vp-c-red-3);--vp-c-caution-soft: var(--vp-c-red-soft)}:root{--vp-font-family-base: "Inter", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--vp-font-family-mono: ui-monospace, "Menlo", "Monaco", "Consolas", "Liberation Mono", "Courier New", monospace;font-optical-sizing:auto}:root:where(:lang(zh)){--vp-font-family-base: "Punctuation SC", "Inter", ui-sans-serif, system-ui, "PingFang SC", "Noto Sans CJK SC", "Noto Sans SC", "Heiti SC", "Microsoft YaHei", "DengXian", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"}:root{--vp-shadow-1: 0 1px 2px rgba(0, 0, 0, .04), 0 1px 2px rgba(0, 0, 0, .06);--vp-shadow-2: 0 3px 12px rgba(0, 0, 0, .07), 0 1px 4px rgba(0, 0, 0, .07);--vp-shadow-3: 0 12px 32px rgba(0, 0, 0, .1), 0 2px 6px rgba(0, 0, 0, .08);--vp-shadow-4: 0 14px 44px rgba(0, 0, 0, .12), 0 3px 9px rgba(0, 0, 0, .12);--vp-shadow-5: 0 18px 56px rgba(0, 0, 0, .16), 0 4px 12px rgba(0, 0, 0, .16)}:root{--vp-z-index-footer: 10;--vp-z-index-local-nav: 20;--vp-z-index-nav: 30;--vp-z-index-layout-top: 40;--vp-z-index-backdrop: 50;--vp-z-index-sidebar: 60}@media (min-width: 960px){:root{--vp-z-index-sidebar: 25}}:root{--vp-layout-max-width: 1440px}:root{--vp-header-anchor-symbol: "#"}:root{--vp-code-line-height: 1.7;--vp-code-font-size: .875em;--vp-code-color: var(--vp-c-brand-1);--vp-code-link-color: var(--vp-c-brand-1);--vp-code-link-hover-color: var(--vp-c-brand-2);--vp-code-bg: var(--vp-c-default-soft);--vp-code-block-color: var(--vp-c-text-2);--vp-code-block-bg: var(--vp-c-bg-alt);--vp-code-block-divider-color: var(--vp-c-gutter);--vp-code-lang-color: var(--vp-c-text-3);--vp-code-line-highlight-color: var(--vp-c-default-soft);--vp-code-line-number-color: var(--vp-c-text-3);--vp-code-line-diff-add-color: var(--vp-c-success-soft);--vp-code-line-diff-add-symbol-color: var(--vp-c-success-1);--vp-code-line-diff-remove-color: var(--vp-c-danger-soft);--vp-code-line-diff-remove-symbol-color: var(--vp-c-danger-1);--vp-code-line-warning-color: var(--vp-c-warning-soft);--vp-code-line-error-color: var(--vp-c-danger-soft);--vp-code-copy-code-border-color: var(--vp-c-divider);--vp-code-copy-code-bg: var(--vp-c-bg-soft);--vp-code-copy-code-hover-border-color: var(--vp-c-divider);--vp-code-copy-code-hover-bg: var(--vp-c-bg);--vp-code-copy-code-active-text: var(--vp-c-text-2);--vp-code-copy-copied-text-content: "Copied";--vp-code-tab-divider: var(--vp-code-block-divider-color);--vp-code-tab-text-color: var(--vp-c-text-2);--vp-code-tab-bg: var(--vp-code-block-bg);--vp-code-tab-hover-text-color: var(--vp-c-text-1);--vp-code-tab-active-text-color: var(--vp-c-text-1);--vp-code-tab-active-bar-color: var(--vp-c-brand-1)}:root{--vp-button-brand-border: transparent;--vp-button-brand-text: var(--vp-c-white);--vp-button-brand-bg: var(--vp-c-brand-3);--vp-button-brand-hover-border: transparent;--vp-button-brand-hover-text: var(--vp-c-white);--vp-button-brand-hover-bg: var(--vp-c-brand-2);--vp-button-brand-active-border: transparent;--vp-button-brand-active-text: var(--vp-c-white);--vp-button-brand-active-bg: var(--vp-c-brand-1);--vp-button-alt-border: transparent;--vp-button-alt-text: var(--vp-c-text-1);--vp-button-alt-bg: var(--vp-c-default-3);--vp-button-alt-hover-border: transparent;--vp-button-alt-hover-text: var(--vp-c-text-1);--vp-button-alt-hover-bg: var(--vp-c-default-2);--vp-button-alt-active-border: transparent;--vp-button-alt-active-text: var(--vp-c-text-1);--vp-button-alt-active-bg: var(--vp-c-default-1);--vp-button-sponsor-border: var(--vp-c-text-2);--vp-button-sponsor-text: var(--vp-c-text-2);--vp-button-sponsor-bg: transparent;--vp-button-sponsor-hover-border: var(--vp-c-sponsor);--vp-button-sponsor-hover-text: var(--vp-c-sponsor);--vp-button-sponsor-hover-bg: transparent;--vp-button-sponsor-active-border: var(--vp-c-sponsor);--vp-button-sponsor-active-text: var(--vp-c-sponsor);--vp-button-sponsor-active-bg: transparent}:root{--vp-custom-block-font-size: 14px;--vp-custom-block-code-font-size: 13px;--vp-custom-block-info-border: transparent;--vp-custom-block-info-text: var(--vp-c-text-1);--vp-custom-block-info-bg: var(--vp-c-default-soft);--vp-custom-block-info-code-bg: var(--vp-c-default-soft);--vp-custom-block-note-border: transparent;--vp-custom-block-note-text: var(--vp-c-text-1);--vp-custom-block-note-bg: var(--vp-c-default-soft);--vp-custom-block-note-code-bg: var(--vp-c-default-soft);--vp-custom-block-tip-border: transparent;--vp-custom-block-tip-text: var(--vp-c-text-1);--vp-custom-block-tip-bg: var(--vp-c-tip-soft);--vp-custom-block-tip-code-bg: var(--vp-c-tip-soft);--vp-custom-block-important-border: transparent;--vp-custom-block-important-text: var(--vp-c-text-1);--vp-custom-block-important-bg: var(--vp-c-important-soft);--vp-custom-block-important-code-bg: var(--vp-c-important-soft);--vp-custom-block-warning-border: transparent;--vp-custom-block-warning-text: var(--vp-c-text-1);--vp-custom-block-warning-bg: var(--vp-c-warning-soft);--vp-custom-block-warning-code-bg: var(--vp-c-warning-soft);--vp-custom-block-danger-border: transparent;--vp-custom-block-danger-text: var(--vp-c-text-1);--vp-custom-block-danger-bg: var(--vp-c-danger-soft);--vp-custom-block-danger-code-bg: var(--vp-c-danger-soft);--vp-custom-block-caution-border: transparent;--vp-custom-block-caution-text: var(--vp-c-text-1);--vp-custom-block-caution-bg: var(--vp-c-caution-soft);--vp-custom-block-caution-code-bg: var(--vp-c-caution-soft);--vp-custom-block-details-border: var(--vp-custom-block-info-border);--vp-custom-block-details-text: var(--vp-custom-block-info-text);--vp-custom-block-details-bg: var(--vp-custom-block-info-bg);--vp-custom-block-details-code-bg: var(--vp-custom-block-info-code-bg)}:root{--vp-input-border-color: var(--vp-c-border);--vp-input-bg-color: var(--vp-c-bg-alt);--vp-input-switch-bg-color: var(--vp-c-default-soft)}:root{--vp-nav-height: 64px;--vp-nav-bg-color: var(--vp-c-bg);--vp-nav-screen-bg-color: var(--vp-c-bg);--vp-nav-logo-height: 24px}.hide-nav{--vp-nav-height: 0px}.hide-nav .VPSidebar{--vp-nav-height: 22px}:root{--vp-local-nav-bg-color: var(--vp-c-bg)}:root{--vp-sidebar-width: 272px;--vp-sidebar-bg-color: var(--vp-c-bg-alt)}:root{--vp-backdrop-bg-color: rgba(0, 0, 0, .6)}:root{--vp-home-hero-name-color: var(--vp-c-brand-1);--vp-home-hero-name-background: transparent;--vp-home-hero-image-background-image: none;--vp-home-hero-image-filter: none}:root{--vp-badge-info-border: transparent;--vp-badge-info-text: var(--vp-c-text-2);--vp-badge-info-bg: var(--vp-c-default-soft);--vp-badge-tip-border: transparent;--vp-badge-tip-text: var(--vp-c-tip-1);--vp-badge-tip-bg: var(--vp-c-tip-soft);--vp-badge-warning-border: transparent;--vp-badge-warning-text: var(--vp-c-warning-1);--vp-badge-warning-bg: var(--vp-c-warning-soft);--vp-badge-danger-border: transparent;--vp-badge-danger-text: var(--vp-c-danger-1);--vp-badge-danger-bg: var(--vp-c-danger-soft)}:root{--vp-carbon-ads-text-color: var(--vp-c-text-1);--vp-carbon-ads-poweredby-color: var(--vp-c-text-2);--vp-carbon-ads-bg-color: var(--vp-c-bg-soft);--vp-carbon-ads-hover-text-color: var(--vp-c-brand-1);--vp-carbon-ads-hover-poweredby-color: var(--vp-c-text-1)}:root{--vp-local-search-bg: var(--vp-c-bg);--vp-local-search-result-bg: var(--vp-c-bg);--vp-local-search-result-border: var(--vp-c-divider);--vp-local-search-result-selected-bg: var(--vp-c-bg);--vp-local-search-result-selected-border: var(--vp-c-brand-1);--vp-local-search-highlight-bg: var(--vp-c-brand-1);--vp-local-search-highlight-text: var(--vp-c-neutral-inverse)}@media (prefers-reduced-motion: reduce){*,:before,:after{animation-delay:-1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important;background-attachment:initial!important;scroll-behavior:auto!important;transition-duration:0s!important;transition-delay:0s!important}}*,:before,:after{box-sizing:border-box}html{line-height:1.4;font-size:16px;-webkit-text-size-adjust:100%}html.dark{color-scheme:dark}body{margin:0;width:100%;min-width:320px;min-height:100vh;line-height:24px;font-family:var(--vp-font-family-base);font-size:16px;font-weight:400;color:var(--vp-c-text-1);background-color:var(--vp-c-bg);font-synthesis:style;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}main{display:block}h1,h2,h3,h4,h5,h6{margin:0;line-height:24px;font-size:16px;font-weight:400}p{margin:0}strong,b{font-weight:600}a,area,button,[role=button],input,label,select,summary,textarea{touch-action:manipulation}a{color:inherit;text-decoration:inherit}ol,ul{list-style:none;margin:0;padding:0}blockquote{margin:0}pre,code,kbd,samp{font-family:var(--vp-font-family-mono)}img,svg,video,canvas,audio,iframe,embed,object{display:block}figure{margin:0}img,video{max-width:100%;height:auto}button,input,optgroup,select,textarea{border:0;padding:0;line-height:inherit;color:inherit}button{padding:0;font-family:inherit;background-color:transparent;background-image:none}button:enabled,[role=button]:enabled{cursor:pointer}button:focus,button:focus-visible{outline:1px dotted;outline:4px auto -webkit-focus-ring-color}button:focus:not(:focus-visible){outline:none!important}input:focus,textarea:focus,select:focus{outline:none}table{border-collapse:collapse}input{background-color:transparent}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:var(--vp-c-text-3)}input::-ms-input-placeholder,textarea::-ms-input-placeholder{color:var(--vp-c-text-3)}input::placeholder,textarea::placeholder{color:var(--vp-c-text-3)}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}textarea{resize:vertical}select{-webkit-appearance:none}fieldset{margin:0;padding:0}h1,h2,h3,h4,h5,h6,li,p{overflow-wrap:break-word}vite-error-overlay{z-index:9999}mjx-container{display:inline-block;margin:auto 2px -2px}mjx-container>svg{display:inline-block;margin:auto}[class^=vpi-],[class*=" vpi-"],.vp-icon{width:1em;height:1em}[class^=vpi-].bg,[class*=" vpi-"].bg,.vp-icon.bg{background-size:100% 100%;background-color:transparent}[class^=vpi-]:not(.bg),[class*=" vpi-"]:not(.bg),.vp-icon:not(.bg){-webkit-mask:var(--icon) no-repeat;mask:var(--icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit}.vpi-align-left{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M21 6H3M15 12H3M17 18H3'/%3E%3C/svg%3E")}.vpi-arrow-right,.vpi-arrow-down,.vpi-arrow-left,.vpi-arrow-up{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M5 12h14M12 5l7 7-7 7'/%3E%3C/svg%3E")}.vpi-chevron-right,.vpi-chevron-down,.vpi-chevron-left,.vpi-chevron-up{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m9 18 6-6-6-6'/%3E%3C/svg%3E")}.vpi-chevron-down,.vpi-arrow-down{transform:rotate(90deg)}.vpi-chevron-left,.vpi-arrow-left{transform:rotate(180deg)}.vpi-chevron-up,.vpi-arrow-up{transform:rotate(-90deg)}.vpi-square-pen{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7'/%3E%3Cpath d='M18.375 2.625a2.121 2.121 0 1 1 3 3L12 15l-4 1 1-4Z'/%3E%3C/svg%3E")}.vpi-plus{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M5 12h14M12 5v14'/%3E%3C/svg%3E")}.vpi-sun{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='4'/%3E%3Cpath d='M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M6.34 17.66l-1.41 1.41M19.07 4.93l-1.41 1.41'/%3E%3C/svg%3E")}.vpi-moon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z'/%3E%3C/svg%3E")}.vpi-more-horizontal{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='1'/%3E%3Ccircle cx='19' cy='12' r='1'/%3E%3Ccircle cx='5' cy='12' r='1'/%3E%3C/svg%3E")}.vpi-languages{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m5 8 6 6M4 14l6-6 2-3M2 5h12M7 2h1M22 22l-5-10-5 10M14 18h6'/%3E%3C/svg%3E")}.vpi-heart{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z'/%3E%3C/svg%3E")}.vpi-search{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cpath d='m21 21-4.3-4.3'/%3E%3C/svg%3E")}.vpi-layout-list{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='7' height='7' x='3' y='3' rx='1'/%3E%3Crect width='7' height='7' x='3' y='14' rx='1'/%3E%3Cpath d='M14 4h7M14 9h7M14 15h7M14 20h7'/%3E%3C/svg%3E")}.vpi-delete{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M20 5H9l-7 7 7 7h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2ZM18 9l-6 6M12 9l6 6'/%3E%3C/svg%3E")}.vpi-corner-down-left{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m9 10-5 5 5 5'/%3E%3Cpath d='M20 4v7a4 4 0 0 1-4 4H4'/%3E%3C/svg%3E")}:root{--vp-icon-copy: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='rgba(128,128,128,1)' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='8' height='4' x='8' y='2' rx='1' ry='1'/%3E%3Cpath d='M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2'/%3E%3C/svg%3E");--vp-icon-copied: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='rgba(128,128,128,1)' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='8' height='4' x='8' y='2' rx='1' ry='1'/%3E%3Cpath d='M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2'/%3E%3Cpath d='m9 14 2 2 4-4'/%3E%3C/svg%3E")}.vpi-social-discord{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M20.317 4.37a19.791 19.791 0 0 0-4.885-1.515.074.074 0 0 0-.079.037c-.21.375-.444.864-.608 1.25a18.27 18.27 0 0 0-5.487 0 12.64 12.64 0 0 0-.617-1.25.077.077 0 0 0-.079-.037A19.736 19.736 0 0 0 3.677 4.37a.07.07 0 0 0-.032.027C.533 9.046-.32 13.58.099 18.057a.082.082 0 0 0 .031.057 19.9 19.9 0 0 0 5.993 3.03.078.078 0 0 0 .084-.028c.462-.63.874-1.295 1.226-1.994a.076.076 0 0 0-.041-.106 13.107 13.107 0 0 1-1.872-.892.077.077 0 0 1-.008-.128 10.2 10.2 0 0 0 .372-.292.074.074 0 0 1 .077-.01c3.928 1.793 8.18 1.793 12.062 0a.074.074 0 0 1 .078.01c.12.098.246.198.373.292a.077.077 0 0 1-.006.127 12.299 12.299 0 0 1-1.873.892.077.077 0 0 0-.041.107c.36.698.772 1.362 1.225 1.993a.076.076 0 0 0 .084.028 19.839 19.839 0 0 0 6.002-3.03.077.077 0 0 0 .032-.054c.5-5.177-.838-9.674-3.549-13.66a.061.061 0 0 0-.031-.03zM8.02 15.33c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.956-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.956 2.418-2.157 2.418zm7.975 0c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.955-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.946 2.418-2.157 2.418Z'/%3E%3C/svg%3E")}.vpi-social-facebook{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M9.101 23.691v-7.98H6.627v-3.667h2.474v-1.58c0-4.085 1.848-5.978 5.858-5.978.401 0 .955.042 1.468.103a8.68 8.68 0 0 1 1.141.195v3.325a8.623 8.623 0 0 0-.653-.036 26.805 26.805 0 0 0-.733-.009c-.707 0-1.259.096-1.675.309a1.686 1.686 0 0 0-.679.622c-.258.42-.374.995-.374 1.752v1.297h3.919l-.386 2.103-.287 1.564h-3.246v8.245C19.396 23.238 24 18.179 24 12.044c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.628 3.874 10.35 9.101 11.647Z'/%3E%3C/svg%3E")}.vpi-social-github{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12'/%3E%3C/svg%3E")}.vpi-social-instagram{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M7.03.084c-1.277.06-2.149.264-2.91.563a5.874 5.874 0 0 0-2.124 1.388 5.878 5.878 0 0 0-1.38 2.127C.321 4.926.12 5.8.064 7.076.008 8.354-.005 8.764.001 12.023c.007 3.259.021 3.667.083 4.947.061 1.277.264 2.149.563 2.911.308.789.72 1.457 1.388 2.123a5.872 5.872 0 0 0 2.129 1.38c.763.295 1.636.496 2.913.552 1.278.056 1.689.069 4.947.063 3.257-.007 3.668-.021 4.947-.082 1.28-.06 2.147-.265 2.91-.563a5.881 5.881 0 0 0 2.123-1.388 5.881 5.881 0 0 0 1.38-2.129c.295-.763.496-1.636.551-2.912.056-1.28.07-1.69.063-4.948-.006-3.258-.02-3.667-.081-4.947-.06-1.28-.264-2.148-.564-2.911a5.892 5.892 0 0 0-1.387-2.123 5.857 5.857 0 0 0-2.128-1.38C19.074.322 18.202.12 16.924.066 15.647.009 15.236-.006 11.977 0 8.718.008 8.31.021 7.03.084m.14 21.693c-1.17-.05-1.805-.245-2.228-.408a3.736 3.736 0 0 1-1.382-.895 3.695 3.695 0 0 1-.9-1.378c-.165-.423-.363-1.058-.417-2.228-.06-1.264-.072-1.644-.08-4.848-.006-3.204.006-3.583.061-4.848.05-1.169.246-1.805.408-2.228.216-.561.477-.96.895-1.382a3.705 3.705 0 0 1 1.379-.9c.423-.165 1.057-.361 2.227-.417 1.265-.06 1.644-.072 4.848-.08 3.203-.006 3.583.006 4.85.062 1.168.05 1.804.244 2.227.408.56.216.96.475 1.382.895.421.42.681.817.9 1.378.165.422.362 1.056.417 2.227.06 1.265.074 1.645.08 4.848.005 3.203-.006 3.583-.061 4.848-.051 1.17-.245 1.805-.408 2.23-.216.56-.477.96-.896 1.38a3.705 3.705 0 0 1-1.378.9c-.422.165-1.058.362-2.226.418-1.266.06-1.645.072-4.85.079-3.204.007-3.582-.006-4.848-.06m9.783-16.192a1.44 1.44 0 1 0 1.437-1.442 1.44 1.44 0 0 0-1.437 1.442M5.839 12.012a6.161 6.161 0 1 0 12.323-.024 6.162 6.162 0 0 0-12.323.024M8 12.008A4 4 0 1 1 12.008 16 4 4 0 0 1 8 12.008'/%3E%3C/svg%3E")}.vpi-social-linkedin{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433a2.062 2.062 0 0 1-2.063-2.065 2.064 2.064 0 1 1 2.063 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z'/%3E%3C/svg%3E")}.vpi-social-mastodon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M23.268 5.313c-.35-2.578-2.617-4.61-5.304-5.004C17.51.242 15.792 0 11.813 0h-.03c-3.98 0-4.835.242-5.288.309C3.882.692 1.496 2.518.917 5.127.64 6.412.61 7.837.661 9.143c.074 1.874.088 3.745.26 5.611.118 1.24.325 2.47.62 3.68.55 2.237 2.777 4.098 4.96 4.857 2.336.792 4.849.923 7.256.38.265-.061.527-.132.786-.213.585-.184 1.27-.39 1.774-.753a.057.057 0 0 0 .023-.043v-1.809a.052.052 0 0 0-.02-.041.053.053 0 0 0-.046-.01 20.282 20.282 0 0 1-4.709.545c-2.73 0-3.463-1.284-3.674-1.818a5.593 5.593 0 0 1-.319-1.433.053.053 0 0 1 .066-.054c1.517.363 3.072.546 4.632.546.376 0 .75 0 1.125-.01 1.57-.044 3.224-.124 4.768-.422.038-.008.077-.015.11-.024 2.435-.464 4.753-1.92 4.989-5.604.008-.145.03-1.52.03-1.67.002-.512.167-3.63-.024-5.545zm-3.748 9.195h-2.561V8.29c0-1.309-.55-1.976-1.67-1.976-1.23 0-1.846.79-1.846 2.35v3.403h-2.546V8.663c0-1.56-.617-2.35-1.848-2.35-1.112 0-1.668.668-1.67 1.977v6.218H4.822V8.102c0-1.31.337-2.35 1.011-3.12.696-.77 1.608-1.164 2.74-1.164 1.311 0 2.302.5 2.962 1.498l.638 1.06.638-1.06c.66-.999 1.65-1.498 2.96-1.498 1.13 0 2.043.395 2.74 1.164.675.77 1.012 1.81 1.012 3.12z'/%3E%3C/svg%3E")}.vpi-social-npm{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M1.763 0C.786 0 0 .786 0 1.763v20.474C0 23.214.786 24 1.763 24h20.474c.977 0 1.763-.786 1.763-1.763V1.763C24 .786 23.214 0 22.237 0zM5.13 5.323l13.837.019-.009 13.836h-3.464l.01-10.382h-3.456L12.04 19.17H5.113z'/%3E%3C/svg%3E")}.vpi-social-slack{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M5.042 15.165a2.528 2.528 0 0 1-2.52 2.523A2.528 2.528 0 0 1 0 15.165a2.527 2.527 0 0 1 2.522-2.52h2.52v2.52zm1.271 0a2.527 2.527 0 0 1 2.521-2.52 2.527 2.527 0 0 1 2.521 2.52v6.313A2.528 2.528 0 0 1 8.834 24a2.528 2.528 0 0 1-2.521-2.522v-6.313zM8.834 5.042a2.528 2.528 0 0 1-2.521-2.52A2.528 2.528 0 0 1 8.834 0a2.528 2.528 0 0 1 2.521 2.522v2.52H8.834zm0 1.271a2.528 2.528 0 0 1 2.521 2.521 2.528 2.528 0 0 1-2.521 2.521H2.522A2.528 2.528 0 0 1 0 8.834a2.528 2.528 0 0 1 2.522-2.521h6.312zm10.122 2.521a2.528 2.528 0 0 1 2.522-2.521A2.528 2.528 0 0 1 24 8.834a2.528 2.528 0 0 1-2.522 2.521h-2.522V8.834zm-1.268 0a2.528 2.528 0 0 1-2.523 2.521 2.527 2.527 0 0 1-2.52-2.521V2.522A2.527 2.527 0 0 1 15.165 0a2.528 2.528 0 0 1 2.523 2.522v6.312zm-2.523 10.122a2.528 2.528 0 0 1 2.523 2.522A2.528 2.528 0 0 1 15.165 24a2.527 2.527 0 0 1-2.52-2.522v-2.522h2.52zm0-1.268a2.527 2.527 0 0 1-2.52-2.523 2.526 2.526 0 0 1 2.52-2.52h6.313A2.527 2.527 0 0 1 24 15.165a2.528 2.528 0 0 1-2.522 2.523h-6.313z'/%3E%3C/svg%3E")}.vpi-social-twitter,.vpi-social-x{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M18.901 1.153h3.68l-8.04 9.19L24 22.846h-7.406l-5.8-7.584-6.638 7.584H.474l8.6-9.83L0 1.154h7.594l5.243 6.932ZM17.61 20.644h2.039L6.486 3.24H4.298Z'/%3E%3C/svg%3E")}.vpi-social-youtube{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z'/%3E%3C/svg%3E")}.visually-hidden{position:absolute;width:1px;height:1px;white-space:nowrap;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden}.custom-block{border:1px solid transparent;border-radius:8px;padding:16px 16px 8px;line-height:24px;font-size:var(--vp-custom-block-font-size);color:var(--vp-c-text-2)}.custom-block.info{border-color:var(--vp-custom-block-info-border);color:var(--vp-custom-block-info-text);background-color:var(--vp-custom-block-info-bg)}.custom-block.info a,.custom-block.info code{color:var(--vp-c-brand-1)}.custom-block.info a:hover,.custom-block.info a:hover>code{color:var(--vp-c-brand-2)}.custom-block.info code{background-color:var(--vp-custom-block-info-code-bg)}.custom-block.note{border-color:var(--vp-custom-block-note-border);color:var(--vp-custom-block-note-text);background-color:var(--vp-custom-block-note-bg)}.custom-block.note a,.custom-block.note code{color:var(--vp-c-brand-1)}.custom-block.note a:hover,.custom-block.note a:hover>code{color:var(--vp-c-brand-2)}.custom-block.note code{background-color:var(--vp-custom-block-note-code-bg)}.custom-block.tip{border-color:var(--vp-custom-block-tip-border);color:var(--vp-custom-block-tip-text);background-color:var(--vp-custom-block-tip-bg)}.custom-block.tip a,.custom-block.tip code{color:var(--vp-c-tip-1)}.custom-block.tip a:hover,.custom-block.tip a:hover>code{color:var(--vp-c-tip-2)}.custom-block.tip code{background-color:var(--vp-custom-block-tip-code-bg)}.custom-block.important{border-color:var(--vp-custom-block-important-border);color:var(--vp-custom-block-important-text);background-color:var(--vp-custom-block-important-bg)}.custom-block.important a,.custom-block.important code{color:var(--vp-c-important-1)}.custom-block.important a:hover,.custom-block.important a:hover>code{color:var(--vp-c-important-2)}.custom-block.important code{background-color:var(--vp-custom-block-important-code-bg)}.custom-block.warning{border-color:var(--vp-custom-block-warning-border);color:var(--vp-custom-block-warning-text);background-color:var(--vp-custom-block-warning-bg)}.custom-block.warning a,.custom-block.warning code{color:var(--vp-c-warning-1)}.custom-block.warning a:hover,.custom-block.warning a:hover>code{color:var(--vp-c-warning-2)}.custom-block.warning code{background-color:var(--vp-custom-block-warning-code-bg)}.custom-block.danger{border-color:var(--vp-custom-block-danger-border);color:var(--vp-custom-block-danger-text);background-color:var(--vp-custom-block-danger-bg)}.custom-block.danger a,.custom-block.danger code{color:var(--vp-c-danger-1)}.custom-block.danger a:hover,.custom-block.danger a:hover>code{color:var(--vp-c-danger-2)}.custom-block.danger code{background-color:var(--vp-custom-block-danger-code-bg)}.custom-block.caution{border-color:var(--vp-custom-block-caution-border);color:var(--vp-custom-block-caution-text);background-color:var(--vp-custom-block-caution-bg)}.custom-block.caution a,.custom-block.caution code{color:var(--vp-c-caution-1)}.custom-block.caution a:hover,.custom-block.caution a:hover>code{color:var(--vp-c-caution-2)}.custom-block.caution code{background-color:var(--vp-custom-block-caution-code-bg)}.custom-block.details{border-color:var(--vp-custom-block-details-border);color:var(--vp-custom-block-details-text);background-color:var(--vp-custom-block-details-bg)}.custom-block.details a{color:var(--vp-c-brand-1)}.custom-block.details a:hover,.custom-block.details a:hover>code{color:var(--vp-c-brand-2)}.custom-block.details code{background-color:var(--vp-custom-block-details-code-bg)}.custom-block-title{font-weight:600}.custom-block p+p{margin:8px 0}.custom-block.details summary{margin:0 0 8px;font-weight:700;cursor:pointer;user-select:none}.custom-block.details summary+p{margin:8px 0}.custom-block a{color:inherit;font-weight:600;text-decoration:underline;text-underline-offset:2px;transition:opacity .25s}.custom-block a:hover{opacity:.75}.custom-block code{font-size:var(--vp-custom-block-code-font-size)}.custom-block.custom-block th,.custom-block.custom-block blockquote>p{font-size:var(--vp-custom-block-font-size);color:inherit}.dark .vp-code span{color:var(--shiki-dark, inherit)}html:not(.dark) .vp-code span{color:var(--shiki-light, inherit)}.vp-code-group{margin-top:16px}.vp-code-group .tabs{position:relative;display:flex;margin-right:-24px;margin-left:-24px;padding:0 12px;background-color:var(--vp-code-tab-bg);overflow-x:auto;overflow-y:hidden;box-shadow:inset 0 -1px var(--vp-code-tab-divider)}@media (min-width: 640px){.vp-code-group .tabs{margin-right:0;margin-left:0;border-radius:8px 8px 0 0}}.vp-code-group .tabs input{position:fixed;opacity:0;pointer-events:none}.vp-code-group .tabs label{position:relative;display:inline-block;border-bottom:1px solid transparent;padding:0 12px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-code-tab-text-color);white-space:nowrap;cursor:pointer;transition:color .25s}.vp-code-group .tabs label:after{position:absolute;right:8px;bottom:-1px;left:8px;z-index:1;height:2px;border-radius:2px;content:"";background-color:transparent;transition:background-color .25s}.vp-code-group label:hover{color:var(--vp-code-tab-hover-text-color)}.vp-code-group input:checked+label{color:var(--vp-code-tab-active-text-color)}.vp-code-group input:checked+label:after{background-color:var(--vp-code-tab-active-bar-color)}.vp-code-group div[class*=language-],.vp-block{display:none;margin-top:0!important;border-top-left-radius:0!important;border-top-right-radius:0!important}.vp-code-group div[class*=language-].active,.vp-block.active{display:block}.vp-block{padding:20px 24px}.vp-doc h1,.vp-doc h2,.vp-doc h3,.vp-doc h4,.vp-doc h5,.vp-doc h6{position:relative;font-weight:600;outline:none}.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:28px}.vp-doc h2{margin:48px 0 16px;border-top:1px solid var(--vp-c-divider);padding-top:24px;letter-spacing:-.02em;line-height:32px;font-size:24px}.vp-doc h3{margin:32px 0 0;letter-spacing:-.01em;line-height:28px;font-size:20px}.vp-doc .header-anchor{position:absolute;top:0;left:0;margin-left:-.87em;font-weight:500;user-select:none;opacity:0;text-decoration:none;transition:color .25s,opacity .25s}.vp-doc .header-anchor:before{content:var(--vp-header-anchor-symbol)}.vp-doc h1:hover .header-anchor,.vp-doc h1 .header-anchor:focus,.vp-doc h2:hover .header-anchor,.vp-doc h2 .header-anchor:focus,.vp-doc h3:hover .header-anchor,.vp-doc h3 .header-anchor:focus,.vp-doc h4:hover .header-anchor,.vp-doc h4 .header-anchor:focus,.vp-doc h5:hover .header-anchor,.vp-doc h5 .header-anchor:focus,.vp-doc h6:hover .header-anchor,.vp-doc h6 .header-anchor:focus{opacity:1}@media (min-width: 768px){.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:32px}}.vp-doc h2 .header-anchor{top:24px}.vp-doc p,.vp-doc summary{margin:16px 0}.vp-doc p{line-height:28px}.vp-doc blockquote{margin:16px 0;border-left:2px solid var(--vp-c-divider);padding-left:16px;transition:border-color .5s}.vp-doc blockquote>p{margin:0;font-size:16px;color:var(--vp-c-text-2);transition:color .5s}.vp-doc a{font-weight:500;color:var(--vp-c-brand-1);text-decoration:underline;text-underline-offset:2px;transition:color .25s,opacity .25s}.vp-doc a:hover{color:var(--vp-c-brand-2)}.vp-doc strong{font-weight:600}.vp-doc ul,.vp-doc ol{padding-left:1.25rem;margin:16px 0}.vp-doc ul{list-style:disc}.vp-doc ol{list-style:decimal}.vp-doc li+li{margin-top:8px}.vp-doc li>ol,.vp-doc li>ul{margin:8px 0 0}.vp-doc table{display:block;border-collapse:collapse;margin:20px 0;overflow-x:auto}.vp-doc tr{background-color:var(--vp-c-bg);border-top:1px solid var(--vp-c-divider);transition:background-color .5s}.vp-doc tr:nth-child(2n){background-color:var(--vp-c-bg-soft)}.vp-doc th,.vp-doc td{border:1px solid var(--vp-c-divider);padding:8px 16px}.vp-doc th{text-align:left;font-size:14px;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-doc td{font-size:14px}.vp-doc hr{margin:16px 0;border:none;border-top:1px solid var(--vp-c-divider)}.vp-doc .custom-block{margin:16px 0}.vp-doc .custom-block p{margin:8px 0;line-height:24px}.vp-doc .custom-block p:first-child{margin:0}.vp-doc .custom-block div[class*=language-]{margin:8px 0;border-radius:8px}.vp-doc .custom-block div[class*=language-] code{font-weight:400;background-color:transparent}.vp-doc .custom-block .vp-code-group .tabs{margin:0;border-radius:8px 8px 0 0}.vp-doc :not(pre,h1,h2,h3,h4,h5,h6)>code{font-size:var(--vp-code-font-size);color:var(--vp-code-color)}.vp-doc :not(pre)>code{border-radius:4px;padding:3px 6px;background-color:var(--vp-code-bg);transition:color .25s,background-color .5s}.vp-doc a>code{color:var(--vp-code-link-color)}.vp-doc a:hover>code{color:var(--vp-code-link-hover-color)}.vp-doc h1>code,.vp-doc h2>code,.vp-doc h3>code{font-size:.9em}.vp-doc div[class*=language-],.vp-block{position:relative;margin:16px -24px;background-color:var(--vp-code-block-bg);overflow-x:auto;transition:background-color .5s}@media (min-width: 640px){.vp-doc div[class*=language-],.vp-block{border-radius:8px;margin:16px 0}}@media (max-width: 639px){.vp-doc li div[class*=language-]{border-radius:8px 0 0 8px}}.vp-doc div[class*=language-]+div[class*=language-],.vp-doc div[class$=-api]+div[class*=language-],.vp-doc div[class*=language-]+div[class$=-api]>div[class*=language-]{margin-top:-8px}.vp-doc [class*=language-] pre,.vp-doc [class*=language-] code{direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}.vp-doc [class*=language-] pre{position:relative;z-index:1;margin:0;padding:20px 0;background:transparent;overflow-x:auto}.vp-doc [class*=language-] code{display:block;padding:0 24px;width:fit-content;min-width:100%;line-height:var(--vp-code-line-height);font-size:var(--vp-code-font-size);color:var(--vp-code-block-color);transition:color .5s}.vp-doc [class*=language-] code .highlighted{background-color:var(--vp-code-line-highlight-color);transition:background-color .5s;margin:0 -24px;padding:0 24px;width:calc(100% + 48px);display:inline-block}.vp-doc [class*=language-] code .highlighted.error{background-color:var(--vp-code-line-error-color)}.vp-doc [class*=language-] code .highlighted.warning{background-color:var(--vp-code-line-warning-color)}.vp-doc [class*=language-] code .diff{transition:background-color .5s;margin:0 -24px;padding:0 24px;width:calc(100% + 48px);display:inline-block}.vp-doc [class*=language-] code .diff:before{position:absolute;left:10px}.vp-doc [class*=language-] .has-focused-lines .line:not(.has-focus){filter:blur(.095rem);opacity:.4;transition:filter .35s,opacity .35s}.vp-doc [class*=language-] .has-focused-lines .line:not(.has-focus){opacity:.7;transition:filter .35s,opacity .35s}.vp-doc [class*=language-]:hover .has-focused-lines .line:not(.has-focus){filter:blur(0);opacity:1}.vp-doc [class*=language-] code .diff.remove{background-color:var(--vp-code-line-diff-remove-color);opacity:.7}.vp-doc [class*=language-] code .diff.remove:before{content:"-";color:var(--vp-code-line-diff-remove-symbol-color)}.vp-doc [class*=language-] code .diff.add{background-color:var(--vp-code-line-diff-add-color)}.vp-doc [class*=language-] code .diff.add:before{content:"+";color:var(--vp-code-line-diff-add-symbol-color)}.vp-doc div[class*=language-].line-numbers-mode{padding-left:32px}.vp-doc .line-numbers-wrapper{position:absolute;top:0;bottom:0;left:0;z-index:3;border-right:1px solid var(--vp-code-block-divider-color);padding-top:20px;width:32px;text-align:center;font-family:var(--vp-font-family-mono);line-height:var(--vp-code-line-height);font-size:var(--vp-code-font-size);color:var(--vp-code-line-number-color);transition:border-color .5s,color .5s}.vp-doc [class*=language-]>button.copy{direction:ltr;position:absolute;top:12px;right:12px;z-index:3;border:1px solid var(--vp-code-copy-code-border-color);border-radius:4px;width:40px;height:40px;background-color:var(--vp-code-copy-code-bg);opacity:0;cursor:pointer;background-image:var(--vp-icon-copy);background-position:50%;background-size:20px;background-repeat:no-repeat;transition:border-color .25s,background-color .25s,opacity .25s}.vp-doc [class*=language-]:hover>button.copy,.vp-doc [class*=language-]>button.copy:focus{opacity:1}.vp-doc [class*=language-]>button.copy:hover,.vp-doc [class*=language-]>button.copy.copied{border-color:var(--vp-code-copy-code-hover-border-color);background-color:var(--vp-code-copy-code-hover-bg)}.vp-doc [class*=language-]>button.copy.copied,.vp-doc [class*=language-]>button.copy:hover.copied{border-radius:0 4px 4px 0;background-color:var(--vp-code-copy-code-hover-bg);background-image:var(--vp-icon-copied)}.vp-doc [class*=language-]>button.copy.copied:before,.vp-doc [class*=language-]>button.copy:hover.copied:before{position:relative;top:-1px;transform:translate(calc(-100% - 1px));display:flex;justify-content:center;align-items:center;border:1px solid var(--vp-code-copy-code-hover-border-color);border-right:0;border-radius:4px 0 0 4px;padding:0 10px;width:fit-content;height:40px;text-align:center;font-size:12px;font-weight:500;color:var(--vp-code-copy-code-active-text);background-color:var(--vp-code-copy-code-hover-bg);white-space:nowrap;content:var(--vp-code-copy-copied-text-content)}.vp-doc [class*=language-]>span.lang{position:absolute;top:2px;right:8px;z-index:2;font-size:12px;font-weight:500;color:var(--vp-code-lang-color);transition:color .4s,opacity .4s}.vp-doc [class*=language-]:hover>button.copy+span.lang,.vp-doc [class*=language-]>button.copy:focus+span.lang{opacity:0}.vp-doc .VPTeamMembers{margin-top:24px}.vp-doc .VPTeamMembers.small.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}.vp-doc .VPTeamMembers.small.count-2 .container,.vp-doc .VPTeamMembers.small.count-3 .container{max-width:100%!important}.vp-doc .VPTeamMembers.medium.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}:is(.vp-external-link-icon,.vp-doc a[href*="://"],.vp-doc a[target=_blank]):not(.no-icon):after{display:inline-block;margin-top:-1px;margin-left:4px;width:11px;height:11px;background:currentColor;color:var(--vp-c-text-3);flex-shrink:0;--icon: url("data:image/svg+xml, %3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' %3E%3Cpath d='M0 0h24v24H0V0z' fill='none' /%3E%3Cpath d='M9 5v2h6.59L4 18.59 5.41 20 17 8.41V15h2V5H9z' /%3E%3C/svg%3E");-webkit-mask-image:var(--icon);mask-image:var(--icon)}.vp-external-link-icon:after{content:""}.external-link-icon-enabled :is(.vp-doc a[href*="://"],.vp-doc a[target=_blank]):after{content:"";color:currentColor}.vp-sponsor{border-radius:16px;overflow:hidden}.vp-sponsor.aside{border-radius:12px}.vp-sponsor-section+.vp-sponsor-section{margin-top:4px}.vp-sponsor-tier{margin:0 0 4px!important;text-align:center;letter-spacing:1px!important;line-height:24px;width:100%;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-sponsor.normal .vp-sponsor-tier{padding:13px 0 11px;font-size:14px}.vp-sponsor.aside .vp-sponsor-tier{padding:9px 0 7px;font-size:12px}.vp-sponsor-grid+.vp-sponsor-tier{margin-top:4px}.vp-sponsor-grid{display:flex;flex-wrap:wrap;gap:4px}.vp-sponsor-grid.xmini .vp-sponsor-grid-link{height:64px}.vp-sponsor-grid.xmini .vp-sponsor-grid-image{max-width:64px;max-height:22px}.vp-sponsor-grid.mini .vp-sponsor-grid-link{height:72px}.vp-sponsor-grid.mini .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.small .vp-sponsor-grid-link{height:96px}.vp-sponsor-grid.small .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.medium .vp-sponsor-grid-link{height:112px}.vp-sponsor-grid.medium .vp-sponsor-grid-image{max-width:120px;max-height:36px}.vp-sponsor-grid.big .vp-sponsor-grid-link{height:184px}.vp-sponsor-grid.big .vp-sponsor-grid-image{max-width:192px;max-height:56px}.vp-sponsor-grid[data-vp-grid="2"] .vp-sponsor-grid-item{width:calc((100% - 4px)/2)}.vp-sponsor-grid[data-vp-grid="3"] .vp-sponsor-grid-item{width:calc((100% - 4px * 2) / 3)}.vp-sponsor-grid[data-vp-grid="4"] .vp-sponsor-grid-item{width:calc((100% - 12px)/4)}.vp-sponsor-grid[data-vp-grid="5"] .vp-sponsor-grid-item{width:calc((100% - 16px)/5)}.vp-sponsor-grid[data-vp-grid="6"] .vp-sponsor-grid-item{width:calc((100% - 4px * 5) / 6)}.vp-sponsor-grid-item{flex-shrink:0;width:100%;background-color:var(--vp-c-bg-soft);transition:background-color .25s}.vp-sponsor-grid-item:hover{background-color:var(--vp-c-default-soft)}.vp-sponsor-grid-item:hover .vp-sponsor-grid-image{filter:grayscale(0) invert(0)}.vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.dark .vp-sponsor-grid-item:hover{background-color:var(--vp-c-white)}.dark .vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.vp-sponsor-grid-link{display:flex}.vp-sponsor-grid-box{display:flex;justify-content:center;align-items:center;width:100%}.vp-sponsor-grid-image{max-width:100%;filter:grayscale(1);transition:filter .25s}.dark .vp-sponsor-grid-image{filter:grayscale(1) invert(1)}.VPBadge{display:inline-block;margin-left:2px;border:1px solid transparent;border-radius:12px;padding:0 10px;line-height:22px;font-size:12px;font-weight:500;transform:translateY(-2px)}.VPBadge.small{padding:0 6px;line-height:18px;font-size:10px;transform:translateY(-8px)}.VPDocFooter .VPBadge{display:none}.vp-doc h1>.VPBadge{margin-top:4px;vertical-align:top}.vp-doc h2>.VPBadge{margin-top:3px;padding:0 8px;vertical-align:top}.vp-doc h3>.VPBadge{vertical-align:middle}.vp-doc h4>.VPBadge,.vp-doc h5>.VPBadge,.vp-doc h6>.VPBadge{vertical-align:middle;line-height:18px}.VPBadge.info{border-color:var(--vp-badge-info-border);color:var(--vp-badge-info-text);background-color:var(--vp-badge-info-bg)}.VPBadge.tip{border-color:var(--vp-badge-tip-border);color:var(--vp-badge-tip-text);background-color:var(--vp-badge-tip-bg)}.VPBadge.warning{border-color:var(--vp-badge-warning-border);color:var(--vp-badge-warning-text);background-color:var(--vp-badge-warning-bg)}.VPBadge.danger{border-color:var(--vp-badge-danger-border);color:var(--vp-badge-danger-text);background-color:var(--vp-badge-danger-bg)}.VPBackdrop[data-v-54a304ca]{position:fixed;inset:0;z-index:var(--vp-z-index-backdrop);background:var(--vp-backdrop-bg-color);transition:opacity .5s}.VPBackdrop.fade-enter-from[data-v-54a304ca],.VPBackdrop.fade-leave-to[data-v-54a304ca]{opacity:0}.VPBackdrop.fade-leave-active[data-v-54a304ca]{transition-duration:.25s}@media (min-width: 1280px){.VPBackdrop[data-v-54a304ca]{display:none}}.NotFound[data-v-6ff51ddd]{padding:64px 24px 96px;text-align:center}@media (min-width: 768px){.NotFound[data-v-6ff51ddd]{padding:96px 32px 168px}}.code[data-v-6ff51ddd]{line-height:64px;font-size:64px;font-weight:600}.title[data-v-6ff51ddd]{padding-top:12px;letter-spacing:2px;line-height:20px;font-size:20px;font-weight:700}.divider[data-v-6ff51ddd]{margin:24px auto 18px;width:64px;height:1px;background-color:var(--vp-c-divider)}.quote[data-v-6ff51ddd]{margin:0 auto;max-width:256px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.action[data-v-6ff51ddd]{padding-top:20px}.link[data-v-6ff51ddd]{display:inline-block;border:1px solid var(--vp-c-brand-1);border-radius:16px;padding:3px 16px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:border-color .25s,color .25s}.link[data-v-6ff51ddd]:hover{border-color:var(--vp-c-brand-2);color:var(--vp-c-brand-2)}.root[data-v-53c99d69]{position:relative;z-index:1}.nested[data-v-53c99d69]{padding-right:16px;padding-left:16px}.outline-link[data-v-53c99d69]{display:block;line-height:32px;font-size:14px;font-weight:400;color:var(--vp-c-text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .5s}.outline-link[data-v-53c99d69]:hover,.outline-link.active[data-v-53c99d69]{color:var(--vp-c-text-1);transition:color .25s}.outline-link.nested[data-v-53c99d69]{padding-left:13px}.VPDocAsideOutline[data-v-f610f197]{display:none}.VPDocAsideOutline.has-outline[data-v-f610f197]{display:block}.content[data-v-f610f197]{position:relative;border-left:1px solid var(--vp-c-divider);padding-left:16px;font-size:13px;font-weight:500}.outline-marker[data-v-f610f197]{position:absolute;top:32px;left:-1px;z-index:0;opacity:0;width:2px;border-radius:2px;height:18px;background-color:var(--vp-c-brand-1);transition:top .25s cubic-bezier(0,1,.5,1),background-color .5s,opacity .25s}.outline-title[data-v-f610f197]{line-height:32px;font-size:14px;font-weight:600}.VPDocAside[data-v-cb998dce]{display:flex;flex-direction:column;flex-grow:1}.spacer[data-v-cb998dce]{flex-grow:1}.VPDocAside[data-v-cb998dce] .spacer+.VPDocAsideSponsors,.VPDocAside[data-v-cb998dce] .spacer+.VPDocAsideCarbonAds{margin-top:24px}.VPDocAside[data-v-cb998dce] .VPDocAsideSponsors+.VPDocAsideCarbonAds{margin-top:16px}.VPLastUpdated[data-v-19a7ae4e]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 640px){.VPLastUpdated[data-v-19a7ae4e]{line-height:32px;font-size:14px;font-weight:500}}.VPDocFooter[data-v-5941af80]{margin-top:64px}.edit-info[data-v-5941af80]{padding-bottom:18px}@media (min-width: 640px){.edit-info[data-v-5941af80]{display:flex;justify-content:space-between;align-items:center;padding-bottom:14px}}.edit-link-button[data-v-5941af80]{display:flex;align-items:center;border:0;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:color .25s}.edit-link-button[data-v-5941af80]:hover{color:var(--vp-c-brand-2)}.edit-link-icon[data-v-5941af80]{margin-right:8px}.prev-next[data-v-5941af80]{border-top:1px solid var(--vp-c-divider);padding-top:24px;display:grid;grid-row-gap:8px}@media (min-width: 640px){.prev-next[data-v-5941af80]{grid-template-columns:repeat(2,1fr);grid-column-gap:16px}}.pager-link[data-v-5941af80]{display:block;border:1px solid var(--vp-c-divider);border-radius:8px;padding:11px 16px 13px;width:100%;height:100%;transition:border-color .25s}.pager-link[data-v-5941af80]:hover{border-color:var(--vp-c-brand-1)}.pager-link.next[data-v-5941af80]{margin-left:auto;text-align:right}.desc[data-v-5941af80]{display:block;line-height:20px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.title[data-v-5941af80]{display:block;line-height:20px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:color .25s}.VPDoc[data-v-e6f2a212]{padding:32px 24px 96px;width:100%}@media (min-width: 768px){.VPDoc[data-v-e6f2a212]{padding:48px 32px 128px}}@media (min-width: 960px){.VPDoc[data-v-e6f2a212]{padding:48px 32px 0}.VPDoc:not(.has-sidebar) .container[data-v-e6f2a212]{display:flex;justify-content:center;max-width:992px}.VPDoc:not(.has-sidebar) .content[data-v-e6f2a212]{max-width:752px}}@media (min-width: 1280px){.VPDoc .container[data-v-e6f2a212]{display:flex;justify-content:center}.VPDoc .aside[data-v-e6f2a212]{display:block}}@media (min-width: 1440px){.VPDoc:not(.has-sidebar) .content[data-v-e6f2a212]{max-width:784px}.VPDoc:not(.has-sidebar) .container[data-v-e6f2a212]{max-width:1104px}}.container[data-v-e6f2a212]{margin:0 auto;width:100%}.aside[data-v-e6f2a212]{position:relative;display:none;order:2;flex-grow:1;padding-left:32px;width:100%;max-width:256px}.left-aside[data-v-e6f2a212]{order:1;padding-left:unset;padding-right:32px}.aside-container[data-v-e6f2a212]{position:fixed;top:0;padding-top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + var(--vp-doc-top-height, 0px) + 48px);width:224px;height:100vh;overflow-x:hidden;overflow-y:auto;scrollbar-width:none}.aside-container[data-v-e6f2a212]::-webkit-scrollbar{display:none}.aside-curtain[data-v-e6f2a212]{position:fixed;bottom:0;z-index:10;width:224px;height:32px;background:linear-gradient(transparent,var(--vp-c-bg) 70%)}.aside-content[data-v-e6f2a212]{display:flex;flex-direction:column;min-height:calc(100vh - (var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 48px));padding-bottom:32px}.content[data-v-e6f2a212]{position:relative;margin:0 auto;width:100%}@media (min-width: 960px){.content[data-v-e6f2a212]{padding:0 32px 128px}}@media (min-width: 1280px){.content[data-v-e6f2a212]{order:1;margin:0;min-width:640px}}.content-container[data-v-e6f2a212]{margin:0 auto}.VPDoc.has-aside .content-container[data-v-e6f2a212]{max-width:688px}.VPButton[data-v-c9cf0e3c]{display:inline-block;border:1px solid transparent;text-align:center;font-weight:600;white-space:nowrap;transition:color .25s,border-color .25s,background-color .25s}.VPButton[data-v-c9cf0e3c]:active{transition:color .1s,border-color .1s,background-color .1s}.VPButton.medium[data-v-c9cf0e3c]{border-radius:20px;padding:0 20px;line-height:38px;font-size:14px}.VPButton.big[data-v-c9cf0e3c]{border-radius:24px;padding:0 24px;line-height:46px;font-size:16px}.VPButton.brand[data-v-c9cf0e3c]{border-color:var(--vp-button-brand-border);color:var(--vp-button-brand-text);background-color:var(--vp-button-brand-bg)}.VPButton.brand[data-v-c9cf0e3c]:hover{border-color:var(--vp-button-brand-hover-border);color:var(--vp-button-brand-hover-text);background-color:var(--vp-button-brand-hover-bg)}.VPButton.brand[data-v-c9cf0e3c]:active{border-color:var(--vp-button-brand-active-border);color:var(--vp-button-brand-active-text);background-color:var(--vp-button-brand-active-bg)}.VPButton.alt[data-v-c9cf0e3c]{border-color:var(--vp-button-alt-border);color:var(--vp-button-alt-text);background-color:var(--vp-button-alt-bg)}.VPButton.alt[data-v-c9cf0e3c]:hover{border-color:var(--vp-button-alt-hover-border);color:var(--vp-button-alt-hover-text);background-color:var(--vp-button-alt-hover-bg)}.VPButton.alt[data-v-c9cf0e3c]:active{border-color:var(--vp-button-alt-active-border);color:var(--vp-button-alt-active-text);background-color:var(--vp-button-alt-active-bg)}.VPButton.sponsor[data-v-c9cf0e3c]{border-color:var(--vp-button-sponsor-border);color:var(--vp-button-sponsor-text);background-color:var(--vp-button-sponsor-bg)}.VPButton.sponsor[data-v-c9cf0e3c]:hover{border-color:var(--vp-button-sponsor-hover-border);color:var(--vp-button-sponsor-hover-text);background-color:var(--vp-button-sponsor-hover-bg)}.VPButton.sponsor[data-v-c9cf0e3c]:active{border-color:var(--vp-button-sponsor-active-border);color:var(--vp-button-sponsor-active-text);background-color:var(--vp-button-sponsor-active-bg)}html:not(.dark) .VPImage.dark[data-v-ab19afbb]{display:none}.dark .VPImage.light[data-v-ab19afbb]{display:none}.VPHero[data-v-b10c5094]{margin-top:calc((var(--vp-nav-height) + var(--vp-layout-top-height, 0px)) * -1);padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 48px) 24px 48px}@media (min-width: 640px){.VPHero[data-v-b10c5094]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 48px 64px}}@media (min-width: 960px){.VPHero[data-v-b10c5094]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 64px 64px}}.container[data-v-b10c5094]{display:flex;flex-direction:column;margin:0 auto;max-width:1152px}@media (min-width: 960px){.container[data-v-b10c5094]{flex-direction:row}}.main[data-v-b10c5094]{position:relative;z-index:10;order:2;flex-grow:1;flex-shrink:0}.VPHero.has-image .container[data-v-b10c5094]{text-align:center}@media (min-width: 960px){.VPHero.has-image .container[data-v-b10c5094]{text-align:left}}@media (min-width: 960px){.main[data-v-b10c5094]{order:1;width:calc((100% / 3) * 2)}.VPHero.has-image .main[data-v-b10c5094]{max-width:592px}}.name[data-v-b10c5094],.text[data-v-b10c5094]{max-width:392px;letter-spacing:-.4px;line-height:40px;font-size:32px;font-weight:700;white-space:pre-wrap}.VPHero.has-image .name[data-v-b10c5094],.VPHero.has-image .text[data-v-b10c5094]{margin:0 auto}.name[data-v-b10c5094]{color:var(--vp-home-hero-name-color)}.clip[data-v-b10c5094]{background:var(--vp-home-hero-name-background);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:var(--vp-home-hero-name-color)}@media (min-width: 640px){.name[data-v-b10c5094],.text[data-v-b10c5094]{max-width:576px;line-height:56px;font-size:48px}}@media (min-width: 960px){.name[data-v-b10c5094],.text[data-v-b10c5094]{line-height:64px;font-size:56px}.VPHero.has-image .name[data-v-b10c5094],.VPHero.has-image .text[data-v-b10c5094]{margin:0}}.tagline[data-v-b10c5094]{padding-top:8px;max-width:392px;line-height:28px;font-size:18px;font-weight:500;white-space:pre-wrap;color:var(--vp-c-text-2)}.VPHero.has-image .tagline[data-v-b10c5094]{margin:0 auto}@media (min-width: 640px){.tagline[data-v-b10c5094]{padding-top:12px;max-width:576px;line-height:32px;font-size:20px}}@media (min-width: 960px){.tagline[data-v-b10c5094]{line-height:36px;font-size:24px}.VPHero.has-image .tagline[data-v-b10c5094]{margin:0}}.actions[data-v-b10c5094]{display:flex;flex-wrap:wrap;margin:-6px;padding-top:24px}.VPHero.has-image .actions[data-v-b10c5094]{justify-content:center}@media (min-width: 640px){.actions[data-v-b10c5094]{padding-top:32px}}@media (min-width: 960px){.VPHero.has-image .actions[data-v-b10c5094]{justify-content:flex-start}}.action[data-v-b10c5094]{flex-shrink:0;padding:6px}.image[data-v-b10c5094]{order:1;margin:-76px -24px -48px}@media (min-width: 640px){.image[data-v-b10c5094]{margin:-108px -24px -48px}}@media (min-width: 960px){.image[data-v-b10c5094]{flex-grow:1;order:2;margin:0;min-height:100%}}.image-container[data-v-b10c5094]{position:relative;margin:0 auto;width:320px;height:320px}@media (min-width: 640px){.image-container[data-v-b10c5094]{width:392px;height:392px}}@media (min-width: 960px){.image-container[data-v-b10c5094]{display:flex;justify-content:center;align-items:center;width:100%;height:100%;transform:translate(-32px,-32px)}}.image-bg[data-v-b10c5094]{position:absolute;top:50%;left:50%;border-radius:50%;width:192px;height:192px;background-image:var(--vp-home-hero-image-background-image);filter:var(--vp-home-hero-image-filter);transform:translate(-50%,-50%)}@media (min-width: 640px){.image-bg[data-v-b10c5094]{width:256px;height:256px}}@media (min-width: 960px){.image-bg[data-v-b10c5094]{width:320px;height:320px}}[data-v-b10c5094] .image-src{position:absolute;top:50%;left:50%;max-width:192px;max-height:192px;transform:translate(-50%,-50%)}@media (min-width: 640px){[data-v-b10c5094] .image-src{max-width:256px;max-height:256px}}@media (min-width: 960px){[data-v-b10c5094] .image-src{max-width:320px;max-height:320px}}.VPFeature[data-v-bd37d1a2]{display:block;border:1px solid var(--vp-c-bg-soft);border-radius:12px;height:100%;background-color:var(--vp-c-bg-soft);transition:border-color .25s,background-color .25s}.VPFeature.link[data-v-bd37d1a2]:hover{border-color:var(--vp-c-brand-1)}.box[data-v-bd37d1a2]{display:flex;flex-direction:column;padding:24px;height:100%}.box[data-v-bd37d1a2]>.VPImage{margin-bottom:20px}.icon[data-v-bd37d1a2]{display:flex;justify-content:center;align-items:center;margin-bottom:20px;border-radius:6px;background-color:var(--vp-c-default-soft);width:48px;height:48px;font-size:24px;transition:background-color .25s}.title[data-v-bd37d1a2]{line-height:24px;font-size:16px;font-weight:600}.details[data-v-bd37d1a2]{flex-grow:1;padding-top:8px;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.link-text[data-v-bd37d1a2]{padding-top:8px}.link-text-value[data-v-bd37d1a2]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.link-text-icon[data-v-bd37d1a2]{margin-left:6px}.VPFeatures[data-v-b1eea84a]{position:relative;padding:0 24px}@media (min-width: 640px){.VPFeatures[data-v-b1eea84a]{padding:0 48px}}@media (min-width: 960px){.VPFeatures[data-v-b1eea84a]{padding:0 64px}}.container[data-v-b1eea84a]{margin:0 auto;max-width:1152px}.items[data-v-b1eea84a]{display:flex;flex-wrap:wrap;margin:-8px}.item[data-v-b1eea84a]{padding:8px;width:100%}@media (min-width: 640px){.item.grid-2[data-v-b1eea84a],.item.grid-4[data-v-b1eea84a],.item.grid-6[data-v-b1eea84a]{width:50%}}@media (min-width: 768px){.item.grid-2[data-v-b1eea84a],.item.grid-4[data-v-b1eea84a]{width:50%}.item.grid-3[data-v-b1eea84a],.item.grid-6[data-v-b1eea84a]{width:calc(100% / 3)}}@media (min-width: 960px){.item.grid-4[data-v-b1eea84a]{width:25%}}.container[data-v-c141a4bd]{margin:auto;width:100%;max-width:1280px;padding:0 24px}@media (min-width: 640px){.container[data-v-c141a4bd]{padding:0 48px}}@media (min-width: 960px){.container[data-v-c141a4bd]{width:100%;padding:0 64px}}.vp-doc[data-v-c141a4bd] .VPHomeSponsors,.vp-doc[data-v-c141a4bd] .VPTeamPage{margin-left:var(--vp-offset, calc(50% - 50vw) );margin-right:var(--vp-offset, calc(50% - 50vw) )}.vp-doc[data-v-c141a4bd] .VPHomeSponsors h2{border-top:none;letter-spacing:normal}.vp-doc[data-v-c141a4bd] .VPHomeSponsors a,.vp-doc[data-v-c141a4bd] .VPTeamPage a{text-decoration:none}.VPHome[data-v-07b1ad08]{margin-bottom:96px}@media (min-width: 768px){.VPHome[data-v-07b1ad08]{margin-bottom:128px}}.VPContent[data-v-9a6c75ad]{flex-grow:1;flex-shrink:0;margin:var(--vp-layout-top-height, 0px) auto 0;width:100%}.VPContent.is-home[data-v-9a6c75ad]{width:100%;max-width:100%}.VPContent.has-sidebar[data-v-9a6c75ad]{margin:0}@media (min-width: 960px){.VPContent[data-v-9a6c75ad]{padding-top:var(--vp-nav-height)}.VPContent.has-sidebar[data-v-9a6c75ad]{margin:var(--vp-layout-top-height, 0px) 0 0;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPContent.has-sidebar[data-v-9a6c75ad]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.VPFooter[data-v-566314d4]{position:relative;z-index:var(--vp-z-index-footer);border-top:1px solid var(--vp-c-gutter);padding:32px 24px;background-color:var(--vp-c-bg)}.VPFooter.has-sidebar[data-v-566314d4]{display:none}.VPFooter[data-v-566314d4] a{text-decoration-line:underline;text-underline-offset:2px;transition:color .25s}.VPFooter[data-v-566314d4] a:hover{color:var(--vp-c-text-1)}@media (min-width: 768px){.VPFooter[data-v-566314d4]{padding:32px}}.container[data-v-566314d4]{margin:0 auto;max-width:var(--vp-layout-max-width);text-align:center}.message[data-v-566314d4],.copyright[data-v-566314d4]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.VPLocalNavOutlineDropdown[data-v-883964e0]{padding:12px 20px 11px}@media (min-width: 960px){.VPLocalNavOutlineDropdown[data-v-883964e0]{padding:12px 36px 11px}}.VPLocalNavOutlineDropdown button[data-v-883964e0]{display:block;font-size:12px;font-weight:500;line-height:24px;color:var(--vp-c-text-2);transition:color .5s;position:relative}.VPLocalNavOutlineDropdown button[data-v-883964e0]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPLocalNavOutlineDropdown button.open[data-v-883964e0]{color:var(--vp-c-text-1)}.icon[data-v-883964e0]{display:inline-block;vertical-align:middle;margin-left:2px;font-size:14px;transform:rotate(0);transition:transform .25s}@media (min-width: 960px){.VPLocalNavOutlineDropdown button[data-v-883964e0]{font-size:14px}.icon[data-v-883964e0]{font-size:16px}}.open>.icon[data-v-883964e0]{transform:rotate(90deg)}.items[data-v-883964e0]{position:absolute;top:40px;right:16px;left:16px;display:grid;gap:1px;border:1px solid var(--vp-c-border);border-radius:8px;background-color:var(--vp-c-gutter);max-height:calc(var(--vp-vh, 100vh) - 86px);overflow:hidden auto;box-shadow:var(--vp-shadow-3)}@media (min-width: 960px){.items[data-v-883964e0]{right:auto;left:calc(var(--vp-sidebar-width) + 32px);width:320px}}.header[data-v-883964e0]{background-color:var(--vp-c-bg-soft)}.top-link[data-v-883964e0]{display:block;padding:0 16px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.outline[data-v-883964e0]{padding:8px 0;background-color:var(--vp-c-bg-soft)}.flyout-enter-active[data-v-883964e0]{transition:all .2s ease-out}.flyout-leave-active[data-v-883964e0]{transition:all .15s ease-in}.flyout-enter-from[data-v-883964e0],.flyout-leave-to[data-v-883964e0]{opacity:0;transform:translateY(-16px)}.VPLocalNav[data-v-2488c25a]{position:sticky;top:0;left:0;z-index:var(--vp-z-index-local-nav);border-bottom:1px solid var(--vp-c-gutter);padding-top:var(--vp-layout-top-height, 0px);width:100%;background-color:var(--vp-local-nav-bg-color)}.VPLocalNav.fixed[data-v-2488c25a]{position:fixed}@media (min-width: 960px){.VPLocalNav[data-v-2488c25a]{top:var(--vp-nav-height)}.VPLocalNav.has-sidebar[data-v-2488c25a]{padding-left:var(--vp-sidebar-width)}.VPLocalNav.empty[data-v-2488c25a]{display:none}}@media (min-width: 1280px){.VPLocalNav[data-v-2488c25a]{display:none}}@media (min-width: 1440px){.VPLocalNav.has-sidebar[data-v-2488c25a]{padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.container[data-v-2488c25a]{display:flex;justify-content:space-between;align-items:center}.menu[data-v-2488c25a]{display:flex;align-items:center;padding:12px 24px 11px;line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.menu[data-v-2488c25a]:hover{color:var(--vp-c-text-1);transition:color .25s}@media (min-width: 768px){.menu[data-v-2488c25a]{padding:0 32px}}@media (min-width: 960px){.menu[data-v-2488c25a]{display:none}}.menu-icon[data-v-2488c25a]{margin-right:8px;font-size:14px}.VPOutlineDropdown[data-v-2488c25a]{padding:12px 24px 11px}@media (min-width: 768px){.VPOutlineDropdown[data-v-2488c25a]{padding:12px 32px 11px}}.VPSwitch[data-v-b4ccac88]{position:relative;border-radius:11px;display:block;width:40px;height:22px;flex-shrink:0;border:1px solid var(--vp-input-border-color);background-color:var(--vp-input-switch-bg-color);transition:border-color .25s!important}.VPSwitch[data-v-b4ccac88]:hover{border-color:var(--vp-c-brand-1)}.check[data-v-b4ccac88]{position:absolute;top:1px;left:1px;width:18px;height:18px;border-radius:50%;background-color:var(--vp-c-neutral-inverse);box-shadow:var(--vp-shadow-1);transition:transform .25s!important}.icon[data-v-b4ccac88]{position:relative;display:block;width:18px;height:18px;border-radius:50%;overflow:hidden}.icon[data-v-b4ccac88] [class^=vpi-]{position:absolute;top:3px;left:3px;width:12px;height:12px;color:var(--vp-c-text-2)}.dark .icon[data-v-b4ccac88] [class^=vpi-]{color:var(--vp-c-text-1);transition:opacity .25s!important}.sun[data-v-7df97737]{opacity:1}.moon[data-v-7df97737],.dark .sun[data-v-7df97737]{opacity:0}.dark .moon[data-v-7df97737]{opacity:1}.dark .VPSwitchAppearance[data-v-7df97737] .check{transform:translate(18px)}.VPNavBarAppearance[data-v-283b26e9]{display:none}@media (min-width: 1280px){.VPNavBarAppearance[data-v-283b26e9]{display:flex;align-items:center}}.VPMenuGroup+.VPMenuLink[data-v-f51f088d]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.link[data-v-f51f088d]{display:block;border-radius:6px;padding:0 12px;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);white-space:nowrap;transition:background-color .25s,color .25s}.link[data-v-f51f088d]:hover{color:var(--vp-c-brand-1);background-color:var(--vp-c-default-soft)}.link.active[data-v-f51f088d]{color:var(--vp-c-brand-1)}.VPMenuGroup[data-v-a6b0397c]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.VPMenuGroup[data-v-a6b0397c]:first-child{margin-top:0;border-top:0;padding-top:0}.VPMenuGroup+.VPMenuGroup[data-v-a6b0397c]{margin-top:12px;border-top:1px solid var(--vp-c-divider)}.title[data-v-a6b0397c]{padding:0 12px;line-height:32px;font-size:14px;font-weight:600;color:var(--vp-c-text-2);white-space:nowrap;transition:color .25s}.VPMenu[data-v-e42ed9b3]{border-radius:12px;padding:12px;min-width:128px;border:1px solid var(--vp-c-divider);background-color:var(--vp-c-bg-elv);box-shadow:var(--vp-shadow-3);transition:background-color .5s;max-height:calc(100vh - var(--vp-nav-height));overflow-y:auto}.VPMenu[data-v-e42ed9b3] .group{margin:0 -12px;padding:0 12px 12px}.VPMenu[data-v-e42ed9b3] .group+.group{border-top:1px solid var(--vp-c-divider);padding:11px 12px 12px}.VPMenu[data-v-e42ed9b3] .group:last-child{padding-bottom:0}.VPMenu[data-v-e42ed9b3] .group+.item{border-top:1px solid var(--vp-c-divider);padding:11px 16px 0}.VPMenu[data-v-e42ed9b3] .item{padding:0 16px;white-space:nowrap}.VPMenu[data-v-e42ed9b3] .label{flex-grow:1;line-height:28px;font-size:12px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.VPMenu[data-v-e42ed9b3] .action{padding-left:24px}.VPFlyout[data-v-af5898d3]{position:relative}.VPFlyout[data-v-af5898d3]:hover{color:var(--vp-c-brand-1);transition:color .25s}.VPFlyout:hover .text[data-v-af5898d3]{color:var(--vp-c-text-2)}.VPFlyout:hover .icon[data-v-af5898d3]{fill:var(--vp-c-text-2)}.VPFlyout.active .text[data-v-af5898d3]{color:var(--vp-c-brand-1)}.VPFlyout.active:hover .text[data-v-af5898d3]{color:var(--vp-c-brand-2)}.VPFlyout:hover .menu[data-v-af5898d3],.button[aria-expanded=true]+.menu[data-v-af5898d3]{opacity:1;visibility:visible;transform:translateY(0)}.button[aria-expanded=false]+.menu[data-v-af5898d3]{opacity:0;visibility:hidden;transform:translateY(0)}.button[data-v-af5898d3]{display:flex;align-items:center;padding:0 12px;height:var(--vp-nav-height);color:var(--vp-c-text-1);transition:color .5s}.text[data-v-af5898d3]{display:flex;align-items:center;line-height:var(--vp-nav-height);font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.option-icon[data-v-af5898d3]{margin-right:0;font-size:16px}.text-icon[data-v-af5898d3]{margin-left:4px;font-size:14px}.icon[data-v-af5898d3]{font-size:20px;transition:fill .25s}.menu[data-v-af5898d3]{position:absolute;top:calc(var(--vp-nav-height) / 2 + 20px);right:0;opacity:0;visibility:hidden;transition:opacity .25s,visibility .25s,transform .25s}.VPSocialLink[data-v-358b6670]{display:flex;justify-content:center;align-items:center;width:36px;height:36px;color:var(--vp-c-text-2);transition:color .5s}.VPSocialLink[data-v-358b6670]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPSocialLink[data-v-358b6670]>svg,.VPSocialLink[data-v-358b6670]>[class^=vpi-social-]{width:20px;height:20px;fill:currentColor}.VPSocialLinks[data-v-e71e869c]{display:flex;justify-content:center}.VPNavBarExtra[data-v-8e87c032]{display:none;margin-right:-12px}@media (min-width: 768px){.VPNavBarExtra[data-v-8e87c032]{display:block}}@media (min-width: 1280px){.VPNavBarExtra[data-v-8e87c032]{display:none}}.trans-title[data-v-8e87c032]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.item.appearance[data-v-8e87c032],.item.social-links[data-v-8e87c032]{display:flex;align-items:center;padding:0 12px}.item.appearance[data-v-8e87c032]{min-width:176px}.appearance-action[data-v-8e87c032]{margin-right:-2px}.social-links-list[data-v-8e87c032]{margin:-4px -8px}.VPNavBarHamburger[data-v-6bee1efd]{display:flex;justify-content:center;align-items:center;width:48px;height:var(--vp-nav-height)}@media (min-width: 768px){.VPNavBarHamburger[data-v-6bee1efd]{display:none}}.container[data-v-6bee1efd]{position:relative;width:16px;height:14px;overflow:hidden}.VPNavBarHamburger:hover .top[data-v-6bee1efd]{top:0;left:0;transform:translate(4px)}.VPNavBarHamburger:hover .middle[data-v-6bee1efd]{top:6px;left:0;transform:translate(0)}.VPNavBarHamburger:hover .bottom[data-v-6bee1efd]{top:12px;left:0;transform:translate(8px)}.VPNavBarHamburger.active .top[data-v-6bee1efd]{top:6px;transform:translate(0) rotate(225deg)}.VPNavBarHamburger.active .middle[data-v-6bee1efd]{top:6px;transform:translate(16px)}.VPNavBarHamburger.active .bottom[data-v-6bee1efd]{top:6px;transform:translate(0) rotate(135deg)}.VPNavBarHamburger.active:hover .top[data-v-6bee1efd],.VPNavBarHamburger.active:hover .middle[data-v-6bee1efd],.VPNavBarHamburger.active:hover .bottom[data-v-6bee1efd]{background-color:var(--vp-c-text-2);transition:top .25s,background-color .25s,transform .25s}.top[data-v-6bee1efd],.middle[data-v-6bee1efd],.bottom[data-v-6bee1efd]{position:absolute;width:16px;height:2px;background-color:var(--vp-c-text-1);transition:top .25s,background-color .5s,transform .25s}.top[data-v-6bee1efd]{top:0;left:0;transform:translate(0)}.middle[data-v-6bee1efd]{top:6px;left:0;transform:translate(8px)}.bottom[data-v-6bee1efd]{top:12px;left:0;transform:translate(4px)}.VPNavBarMenuLink[data-v-08fbf4b6]{display:flex;align-items:center;padding:0 12px;line-height:var(--vp-nav-height);font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.VPNavBarMenuLink.active[data-v-08fbf4b6],.VPNavBarMenuLink[data-v-08fbf4b6]:hover{color:var(--vp-c-brand-1)}.VPNavBarMenu[data-v-f732b5d0]{display:none}@media (min-width: 768px){.VPNavBarMenu[data-v-f732b5d0]{display:flex}}/*! @docsearch/css 3.6.0 | MIT License | © Algolia, Inc. and contributors | https://docsearch.algolia.com */:root{--docsearch-primary-color:#5468ff;--docsearch-text-color:#1c1e21;--docsearch-spacing:12px;--docsearch-icon-stroke-width:1.4;--docsearch-highlight-color:var(--docsearch-primary-color);--docsearch-muted-color:#969faf;--docsearch-container-background:rgba(101,108,133,.8);--docsearch-logo-color:#5468ff;--docsearch-modal-width:560px;--docsearch-modal-height:600px;--docsearch-modal-background:#f5f6f7;--docsearch-modal-shadow:inset 1px 1px 0 0 hsla(0,0%,100%,.5),0 3px 8px 0 #555a64;--docsearch-searchbox-height:56px;--docsearch-searchbox-background:#ebedf0;--docsearch-searchbox-focus-background:#fff;--docsearch-searchbox-shadow:inset 0 0 0 2px var(--docsearch-primary-color);--docsearch-hit-height:56px;--docsearch-hit-color:#444950;--docsearch-hit-active-color:#fff;--docsearch-hit-background:#fff;--docsearch-hit-shadow:0 1px 3px 0 #d4d9e1;--docsearch-key-gradient:linear-gradient(-225deg,#d5dbe4,#f8f8f8);--docsearch-key-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 2px 1px rgba(30,35,90,.4);--docsearch-key-pressed-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 1px 0 rgba(30,35,90,.4);--docsearch-footer-height:44px;--docsearch-footer-background:#fff;--docsearch-footer-shadow:0 -1px 0 0 #e0e3e8,0 -3px 6px 0 rgba(69,98,155,.12)}html[data-theme=dark]{--docsearch-text-color:#f5f6f7;--docsearch-container-background:rgba(9,10,17,.8);--docsearch-modal-background:#15172a;--docsearch-modal-shadow:inset 1px 1px 0 0 #2c2e40,0 3px 8px 0 #000309;--docsearch-searchbox-background:#090a11;--docsearch-searchbox-focus-background:#000;--docsearch-hit-color:#bec3c9;--docsearch-hit-shadow:none;--docsearch-hit-background:#090a11;--docsearch-key-gradient:linear-gradient(-26.5deg,#565872,#31355b);--docsearch-key-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 2px 2px 0 rgba(3,4,9,.3);--docsearch-key-pressed-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 1px 1px 0 rgba(3,4,9,.30196078431372547);--docsearch-footer-background:#1e2136;--docsearch-footer-shadow:inset 0 1px 0 0 rgba(73,76,106,.5),0 -4px 8px 0 rgba(0,0,0,.2);--docsearch-logo-color:#fff;--docsearch-muted-color:#7f8497}.DocSearch-Button{align-items:center;background:var(--docsearch-searchbox-background);border:0;border-radius:40px;color:var(--docsearch-muted-color);cursor:pointer;display:flex;font-weight:500;height:36px;justify-content:space-between;margin:0 0 0 16px;padding:0 8px;user-select:none}.DocSearch-Button:active,.DocSearch-Button:focus,.DocSearch-Button:hover{background:var(--docsearch-searchbox-focus-background);box-shadow:var(--docsearch-searchbox-shadow);color:var(--docsearch-text-color);outline:none}.DocSearch-Button-Container{align-items:center;display:flex}.DocSearch-Search-Icon{stroke-width:1.6}.DocSearch-Button .DocSearch-Search-Icon{color:var(--docsearch-text-color)}.DocSearch-Button-Placeholder{font-size:1rem;padding:0 12px 0 6px}.DocSearch-Button-Keys{display:flex;min-width:calc(40px + .8em)}.DocSearch-Button-Key{align-items:center;background:var(--docsearch-key-gradient);border-radius:3px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;position:relative;padding:0 0 2px;border:0;top:-1px;width:20px}.DocSearch-Button-Key--pressed{transform:translate3d(0,1px,0);box-shadow:var(--docsearch-key-pressed-shadow)}@media (max-width:768px){.DocSearch-Button-Keys,.DocSearch-Button-Placeholder{display:none}}.DocSearch--active{overflow:hidden!important}.DocSearch-Container,.DocSearch-Container *{box-sizing:border-box}.DocSearch-Container{background-color:var(--docsearch-container-background);height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:200}.DocSearch-Container a{text-decoration:none}.DocSearch-Link{appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;font:inherit;margin:0;padding:0}.DocSearch-Modal{background:var(--docsearch-modal-background);border-radius:6px;box-shadow:var(--docsearch-modal-shadow);flex-direction:column;margin:60px auto auto;max-width:var(--docsearch-modal-width);position:relative}.DocSearch-SearchBar{display:flex;padding:var(--docsearch-spacing) var(--docsearch-spacing) 0}.DocSearch-Form{align-items:center;background:var(--docsearch-searchbox-focus-background);border-radius:4px;box-shadow:var(--docsearch-searchbox-shadow);display:flex;height:var(--docsearch-searchbox-height);margin:0;padding:0 var(--docsearch-spacing);position:relative;width:100%}.DocSearch-Input{appearance:none;background:transparent;border:0;color:var(--docsearch-text-color);flex:1;font:inherit;font-size:1.2em;height:100%;outline:none;padding:0 0 0 8px;width:80%}.DocSearch-Input::placeholder{color:var(--docsearch-muted-color);opacity:1}.DocSearch-Input::-webkit-search-cancel-button,.DocSearch-Input::-webkit-search-decoration,.DocSearch-Input::-webkit-search-results-button,.DocSearch-Input::-webkit-search-results-decoration{display:none}.DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel,.DocSearch-Reset{margin:0;padding:0}.DocSearch-MagnifierLabel,.DocSearch-Reset{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}.DocSearch-Container--Stalled .DocSearch-MagnifierLabel,.DocSearch-LoadingIndicator{display:none}.DocSearch-Container--Stalled .DocSearch-LoadingIndicator{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Reset{animation:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;right:0;stroke-width:var(--docsearch-icon-stroke-width)}}.DocSearch-Reset{animation:fade-in .1s ease-in forwards;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;padding:2px;right:0;stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Reset[hidden]{display:none}.DocSearch-Reset:hover{color:var(--docsearch-highlight-color)}.DocSearch-LoadingIndicator svg,.DocSearch-MagnifierLabel svg{height:24px;width:24px}.DocSearch-Cancel{display:none}.DocSearch-Dropdown{max-height:calc(var(--docsearch-modal-height) - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height));min-height:var(--docsearch-spacing);overflow-y:auto;overflow-y:overlay;padding:0 var(--docsearch-spacing);scrollbar-color:var(--docsearch-muted-color) var(--docsearch-modal-background);scrollbar-width:thin}.DocSearch-Dropdown::-webkit-scrollbar{width:12px}.DocSearch-Dropdown::-webkit-scrollbar-track{background:transparent}.DocSearch-Dropdown::-webkit-scrollbar-thumb{background-color:var(--docsearch-muted-color);border:3px solid var(--docsearch-modal-background);border-radius:20px}.DocSearch-Dropdown ul{list-style:none;margin:0;padding:0}.DocSearch-Label{font-size:.75em;line-height:1.6em}.DocSearch-Help,.DocSearch-Label{color:var(--docsearch-muted-color)}.DocSearch-Help{font-size:.9em;margin:0;user-select:none}.DocSearch-Title{font-size:1.2em}.DocSearch-Logo a{display:flex}.DocSearch-Logo svg{color:var(--docsearch-logo-color);margin-left:8px}.DocSearch-Hits:last-of-type{margin-bottom:24px}.DocSearch-Hits mark{background:none;color:var(--docsearch-highlight-color)}.DocSearch-HitsFooter{color:var(--docsearch-muted-color);display:flex;font-size:.85em;justify-content:center;margin-bottom:var(--docsearch-spacing);padding:var(--docsearch-spacing)}.DocSearch-HitsFooter a{border-bottom:1px solid;color:inherit}.DocSearch-Hit{border-radius:4px;display:flex;padding-bottom:4px;position:relative}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--deleting{transition:none}}.DocSearch-Hit--deleting{opacity:0;transition:all .25s linear}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--favoriting{transition:none}}.DocSearch-Hit--favoriting{transform:scale(0);transform-origin:top center;transition:all .25s linear;transition-delay:.25s}.DocSearch-Hit a{background:var(--docsearch-hit-background);border-radius:4px;box-shadow:var(--docsearch-hit-shadow);display:block;padding-left:var(--docsearch-spacing);width:100%}.DocSearch-Hit-source{background:var(--docsearch-modal-background);color:var(--docsearch-highlight-color);font-size:.85em;font-weight:600;line-height:32px;margin:0 -4px;padding:8px 4px 0;position:sticky;top:0;z-index:10}.DocSearch-Hit-Tree{color:var(--docsearch-muted-color);height:var(--docsearch-hit-height);opacity:.5;stroke-width:var(--docsearch-icon-stroke-width);width:24px}.DocSearch-Hit[aria-selected=true] a{background-color:var(--docsearch-highlight-color)}.DocSearch-Hit[aria-selected=true] mark{text-decoration:underline}.DocSearch-Hit-Container{align-items:center;color:var(--docsearch-hit-color);display:flex;flex-direction:row;height:var(--docsearch-hit-height);padding:0 var(--docsearch-spacing) 0 0}.DocSearch-Hit-icon{height:20px;width:20px}.DocSearch-Hit-action,.DocSearch-Hit-icon{color:var(--docsearch-muted-color);stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Hit-action{align-items:center;display:flex;height:22px;width:22px}.DocSearch-Hit-action svg{display:block;height:18px;width:18px}.DocSearch-Hit-action+.DocSearch-Hit-action{margin-left:6px}.DocSearch-Hit-action-button{appearance:none;background:none;border:0;border-radius:50%;color:inherit;cursor:pointer;padding:2px}svg.DocSearch-Hit-Select-Icon{display:none}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Select-Icon{display:block}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:background-color .1s ease-in}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{transition:none}}.DocSearch-Hit-action-button:focus path,.DocSearch-Hit-action-button:hover path{fill:#fff}.DocSearch-Hit-content-wrapper{display:flex;flex:1 1 auto;flex-direction:column;font-weight:500;justify-content:center;line-height:1.2em;margin:0 8px;overflow-x:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap;width:80%}.DocSearch-Hit-title{font-size:.9em}.DocSearch-Hit-path{color:var(--docsearch-muted-color);font-size:.75em}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-action,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-icon,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-path,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-text,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-title,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Tree,.DocSearch-Hit[aria-selected=true] mark{color:var(--docsearch-hit-active-color)!important}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:none}}.DocSearch-ErrorScreen,.DocSearch-NoResults,.DocSearch-StartScreen{font-size:.9em;margin:0 auto;padding:36px 0;text-align:center;width:80%}.DocSearch-Screen-Icon{color:var(--docsearch-muted-color);padding-bottom:12px}.DocSearch-NoResults-Prefill-List{display:inline-block;padding-bottom:24px;text-align:left}.DocSearch-NoResults-Prefill-List ul{display:inline-block;padding:8px 0 0}.DocSearch-NoResults-Prefill-List li{list-style-position:inside;list-style-type:"» "}.DocSearch-Prefill{appearance:none;background:none;border:0;border-radius:1em;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;font-size:1em;font-weight:700;padding:0}.DocSearch-Prefill:focus,.DocSearch-Prefill:hover{outline:none;text-decoration:underline}.DocSearch-Footer{align-items:center;background:var(--docsearch-footer-background);border-radius:0 0 8px 8px;box-shadow:var(--docsearch-footer-shadow);display:flex;flex-direction:row-reverse;flex-shrink:0;height:var(--docsearch-footer-height);justify-content:space-between;padding:0 var(--docsearch-spacing);position:relative;user-select:none;width:100%;z-index:300}.DocSearch-Commands{color:var(--docsearch-muted-color);display:flex;list-style:none;margin:0;padding:0}.DocSearch-Commands li{align-items:center;display:flex}.DocSearch-Commands li:not(:last-of-type){margin-right:.8em}.DocSearch-Commands-Key{align-items:center;background:var(--docsearch-key-gradient);border-radius:2px;box-shadow:var(--docsearch-key-shadow);display:flex;height:18px;justify-content:center;margin-right:.4em;padding:0 0 1px;color:var(--docsearch-muted-color);border:0;width:20px}.DocSearch-VisuallyHiddenForAccessibility{clip:rect(0 0 0 0);clip-path:inset(50%);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}@media (max-width:768px){:root{--docsearch-spacing:10px;--docsearch-footer-height:40px}.DocSearch-Dropdown{height:100%}.DocSearch-Container{height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);position:absolute}.DocSearch-Footer{border-radius:0;bottom:0;position:absolute}.DocSearch-Hit-content-wrapper{display:flex;position:relative;width:80%}.DocSearch-Modal{border-radius:0;box-shadow:none;height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);margin:0;max-width:100%;width:100%}.DocSearch-Dropdown{max-height:calc(var(--docsearch-vh, 1vh)*100 - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height))}.DocSearch-Cancel{appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;flex:none;font:inherit;font-size:1em;font-weight:500;margin-left:var(--docsearch-spacing);outline:none;overflow:hidden;padding:0;user-select:none;white-space:nowrap}.DocSearch-Commands,.DocSearch-Hit-Tree{display:none}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}[class*=DocSearch]{--docsearch-primary-color: var(--vp-c-brand-1);--docsearch-highlight-color: var(--docsearch-primary-color);--docsearch-text-color: var(--vp-c-text-1);--docsearch-muted-color: var(--vp-c-text-2);--docsearch-searchbox-shadow: none;--docsearch-searchbox-background: transparent;--docsearch-searchbox-focus-background: transparent;--docsearch-key-gradient: transparent;--docsearch-key-shadow: none;--docsearch-modal-background: var(--vp-c-bg-soft);--docsearch-footer-background: var(--vp-c-bg)}.dark [class*=DocSearch]{--docsearch-modal-shadow: none;--docsearch-footer-shadow: none;--docsearch-logo-color: var(--vp-c-text-2);--docsearch-hit-background: var(--vp-c-default-soft);--docsearch-hit-color: var(--vp-c-text-2);--docsearch-hit-shadow: none}.DocSearch-Button{display:flex;justify-content:center;align-items:center;margin:0;padding:0;width:48px;height:55px;background:transparent;transition:border-color .25s}.DocSearch-Button:hover{background:transparent}.DocSearch-Button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}.DocSearch-Button-Key--pressed{transform:none;box-shadow:none}.DocSearch-Button:focus:not(:focus-visible){outline:none!important}@media (min-width: 768px){.DocSearch-Button{justify-content:flex-start;border:1px solid transparent;border-radius:8px;padding:0 10px 0 12px;width:100%;height:40px;background-color:var(--vp-c-bg-alt)}.DocSearch-Button:hover{border-color:var(--vp-c-brand-1);background:var(--vp-c-bg-alt)}}.DocSearch-Button .DocSearch-Button-Container{display:flex;align-items:center}.DocSearch-Button .DocSearch-Search-Icon{position:relative;width:16px;height:16px;color:var(--vp-c-text-1);fill:currentColor;transition:color .5s}.DocSearch-Button:hover .DocSearch-Search-Icon{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Search-Icon{top:1px;margin-right:8px;width:14px;height:14px;color:var(--vp-c-text-2)}}.DocSearch-Button .DocSearch-Button-Placeholder{display:none;margin-top:2px;padding:0 16px 0 0;font-size:13px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.DocSearch-Button:hover .DocSearch-Button-Placeholder{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Placeholder{display:inline-block}}.DocSearch-Button .DocSearch-Button-Keys{direction:ltr;display:none;min-width:auto}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Keys{display:flex;align-items:center}}.DocSearch-Button .DocSearch-Button-Key{display:block;margin:2px 0 0;border:1px solid var(--vp-c-divider);border-right:none;border-radius:4px 0 0 4px;padding-left:6px;min-width:0;width:auto;height:22px;line-height:22px;font-family:var(--vp-font-family-base);font-size:12px;font-weight:500;transition:color .5s,border-color .5s}.DocSearch-Button .DocSearch-Button-Key+.DocSearch-Button-Key{border-right:1px solid var(--vp-c-divider);border-left:none;border-radius:0 4px 4px 0;padding-left:2px;padding-right:6px}.DocSearch-Button .DocSearch-Button-Key:first-child{font-size:0!important}.DocSearch-Button .DocSearch-Button-Key:first-child:after{content:"Ctrl";font-size:12px;letter-spacing:normal;color:var(--docsearch-muted-color)}.mac .DocSearch-Button .DocSearch-Button-Key:first-child:after{content:"⌘"}.DocSearch-Button .DocSearch-Button-Key:first-child>*{display:none}.DocSearch-Search-Icon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke-width='1.6' viewBox='0 0 20 20'%3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' d='m14.386 14.386 4.088 4.088-4.088-4.088A7.533 7.533 0 1 1 3.733 3.733a7.533 7.533 0 0 1 10.653 10.653z'/%3E%3C/svg%3E")}.VPNavBarSearch{display:flex;align-items:center}@media (min-width: 768px){.VPNavBarSearch{flex-grow:1;padding-left:24px}}@media (min-width: 960px){.VPNavBarSearch{padding-left:32px}}.dark .DocSearch-Footer{border-top:1px solid var(--vp-c-divider)}.DocSearch-Form{border:1px solid var(--vp-c-brand-1);background-color:var(--vp-c-white)}.dark .DocSearch-Form{background-color:var(--vp-c-default-soft)}.DocSearch-Screen-Icon>svg{margin:auto}.VPNavBarSocialLinks[data-v-ef6192dc]{display:none}@media (min-width: 1280px){.VPNavBarSocialLinks[data-v-ef6192dc]{display:flex;align-items:center}}.title[data-v-0ad69264]{display:flex;align-items:center;border-bottom:1px solid transparent;width:100%;height:var(--vp-nav-height);font-size:16px;font-weight:600;color:var(--vp-c-text-1);transition:opacity .25s}@media (min-width: 960px){.title[data-v-0ad69264]{flex-shrink:0}.VPNavBarTitle.has-sidebar .title[data-v-0ad69264]{border-bottom-color:var(--vp-c-divider)}}[data-v-0ad69264] .logo{margin-right:8px;height:var(--vp-nav-logo-height)}.VPNavBarTranslations[data-v-acee064b]{display:none}@media (min-width: 1280px){.VPNavBarTranslations[data-v-acee064b]{display:flex;align-items:center}}.title[data-v-acee064b]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.VPNavBar[data-v-844edcde]{position:relative;height:var(--vp-nav-height);pointer-events:none;white-space:nowrap;transition:background-color .5s}.VPNavBar[data-v-844edcde]:not(.home){background-color:var(--vp-nav-bg-color)}@media (min-width: 960px){.VPNavBar[data-v-844edcde]:not(.home){background-color:transparent}.VPNavBar[data-v-844edcde]:not(.has-sidebar):not(.home.top){background-color:var(--vp-nav-bg-color)}}.wrapper[data-v-844edcde]{padding:0 8px 0 24px}@media (min-width: 768px){.wrapper[data-v-844edcde]{padding:0 32px}}@media (min-width: 960px){.VPNavBar.has-sidebar .wrapper[data-v-844edcde]{padding:0}}.container[data-v-844edcde]{display:flex;justify-content:space-between;margin:0 auto;max-width:calc(var(--vp-layout-max-width) - 64px);height:var(--vp-nav-height);pointer-events:none}.container>.title[data-v-844edcde],.container>.content[data-v-844edcde]{pointer-events:none}.container[data-v-844edcde] *{pointer-events:auto}@media (min-width: 960px){.VPNavBar.has-sidebar .container[data-v-844edcde]{max-width:100%}}.title[data-v-844edcde]{flex-shrink:0;height:calc(var(--vp-nav-height) - 1px);transition:background-color .5s}@media (min-width: 960px){.VPNavBar.has-sidebar .title[data-v-844edcde]{position:absolute;top:0;left:0;z-index:2;padding:0 32px;width:var(--vp-sidebar-width);height:var(--vp-nav-height);background-color:transparent}}@media (min-width: 1440px){.VPNavBar.has-sidebar .title[data-v-844edcde]{padding-left:max(32px,calc((100% - (var(--vp-layout-max-width) - 64px)) / 2));width:calc((100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px)}}.content[data-v-844edcde]{flex-grow:1}@media (min-width: 960px){.VPNavBar.has-sidebar .content[data-v-844edcde]{position:relative;z-index:1;padding-right:32px;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .content[data-v-844edcde]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2 + 32px);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.content-body[data-v-844edcde]{display:flex;justify-content:flex-end;align-items:center;height:var(--vp-nav-height);transition:background-color .5s}@media (min-width: 960px){.VPNavBar:not(.home.top) .content-body[data-v-844edcde]{position:relative;background-color:var(--vp-nav-bg-color)}.VPNavBar:not(.has-sidebar):not(.home.top) .content-body[data-v-844edcde]{background-color:transparent}}@media (max-width: 767px){.content-body[data-v-844edcde]{column-gap:.5rem}}.menu+.translations[data-v-844edcde]:before,.menu+.appearance[data-v-844edcde]:before,.menu+.social-links[data-v-844edcde]:before,.translations+.appearance[data-v-844edcde]:before,.appearance+.social-links[data-v-844edcde]:before{margin-right:8px;margin-left:8px;width:1px;height:24px;background-color:var(--vp-c-divider);content:""}.menu+.appearance[data-v-844edcde]:before,.translations+.appearance[data-v-844edcde]:before{margin-right:16px}.appearance+.social-links[data-v-844edcde]:before{margin-left:16px}.social-links[data-v-844edcde]{margin-right:-8px}.divider[data-v-844edcde]{width:100%;height:1px}@media (min-width: 960px){.VPNavBar.has-sidebar .divider[data-v-844edcde]{padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .divider[data-v-844edcde]{padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.divider-line[data-v-844edcde]{width:100%;height:1px;transition:background-color .5s}.VPNavBar:not(.home) .divider-line[data-v-844edcde]{background-color:var(--vp-c-gutter)}@media (min-width: 960px){.VPNavBar:not(.home.top) .divider-line[data-v-844edcde]{background-color:var(--vp-c-gutter)}.VPNavBar:not(.has-sidebar):not(.home.top) .divider[data-v-844edcde]{background-color:var(--vp-c-gutter)}}.VPNavScreenAppearance[data-v-338d9b48]{display:flex;justify-content:space-between;align-items:center;border-radius:8px;padding:12px 14px 12px 16px;background-color:var(--vp-c-bg-soft)}.text[data-v-338d9b48]{line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.VPNavScreenMenuLink[data-v-1a934d60]{display:block;border-bottom:1px solid var(--vp-c-divider);padding:12px 0 11px;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:border-color .25s,color .25s}.VPNavScreenMenuLink[data-v-1a934d60]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupLink[data-v-aea78dd1]{display:block;margin-left:12px;line-height:32px;font-size:14px;font-weight:400;color:var(--vp-c-text-1);transition:color .25s}.VPNavScreenMenuGroupLink[data-v-aea78dd1]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupSection[data-v-f60dbfa7]{display:block}.title[data-v-f60dbfa7]{line-height:32px;font-size:13px;font-weight:700;color:var(--vp-c-text-2);transition:color .25s}.VPNavScreenMenuGroup[data-v-d2212c70]{border-bottom:1px solid var(--vp-c-divider);height:48px;overflow:hidden;transition:border-color .5s}.VPNavScreenMenuGroup .items[data-v-d2212c70]{visibility:hidden}.VPNavScreenMenuGroup.open .items[data-v-d2212c70]{visibility:visible}.VPNavScreenMenuGroup.open[data-v-d2212c70]{padding-bottom:10px;height:auto}.VPNavScreenMenuGroup.open .button[data-v-d2212c70]{padding-bottom:6px;color:var(--vp-c-brand-1)}.VPNavScreenMenuGroup.open .button-icon[data-v-d2212c70]{transform:rotate(45deg)}.button[data-v-d2212c70]{display:flex;justify-content:space-between;align-items:center;padding:12px 4px 11px 0;width:100%;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.button[data-v-d2212c70]:hover{color:var(--vp-c-brand-1)}.button-icon[data-v-d2212c70]{transition:transform .25s}.group[data-v-d2212c70]:first-child{padding-top:0}.group+.group[data-v-d2212c70],.group+.item[data-v-d2212c70]{padding-top:4px}.VPNavScreenTranslations[data-v-516e4bc3]{height:24px;overflow:hidden}.VPNavScreenTranslations.open[data-v-516e4bc3]{height:auto}.title[data-v-516e4bc3]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-text-1)}.icon[data-v-516e4bc3]{font-size:16px}.icon.lang[data-v-516e4bc3]{margin-right:8px}.icon.chevron[data-v-516e4bc3]{margin-left:4px}.list[data-v-516e4bc3]{padding:4px 0 0 24px}.link[data-v-516e4bc3]{line-height:32px;font-size:13px;color:var(--vp-c-text-1)}.VPNavScreen[data-v-57cce842]{position:fixed;top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 1px);right:0;bottom:0;left:0;padding:0 32px;width:100%;background-color:var(--vp-nav-screen-bg-color);overflow-y:auto;transition:background-color .5s;pointer-events:auto}.VPNavScreen.fade-enter-active[data-v-57cce842],.VPNavScreen.fade-leave-active[data-v-57cce842]{transition:opacity .25s}.VPNavScreen.fade-enter-active .container[data-v-57cce842],.VPNavScreen.fade-leave-active .container[data-v-57cce842]{transition:transform .25s ease}.VPNavScreen.fade-enter-from[data-v-57cce842],.VPNavScreen.fade-leave-to[data-v-57cce842]{opacity:0}.VPNavScreen.fade-enter-from .container[data-v-57cce842],.VPNavScreen.fade-leave-to .container[data-v-57cce842]{transform:translateY(-8px)}@media (min-width: 768px){.VPNavScreen[data-v-57cce842]{display:none}}.container[data-v-57cce842]{margin:0 auto;padding:24px 0 96px;max-width:288px}.menu+.translations[data-v-57cce842],.menu+.appearance[data-v-57cce842],.translations+.appearance[data-v-57cce842]{margin-top:24px}.menu+.social-links[data-v-57cce842]{margin-top:16px}.appearance+.social-links[data-v-57cce842]{margin-top:16px}.VPNav[data-v-7ad780c2]{position:relative;top:var(--vp-layout-top-height, 0px);left:0;z-index:var(--vp-z-index-nav);width:100%;pointer-events:none;transition:background-color .5s}@media (min-width: 960px){.VPNav[data-v-7ad780c2]{position:fixed}}.VPSidebarItem.level-0[data-v-c24f735a]{padding-bottom:24px}.VPSidebarItem.collapsed.level-0[data-v-c24f735a]{padding-bottom:10px}.item[data-v-c24f735a]{position:relative;display:flex;width:100%}.VPSidebarItem.collapsible>.item[data-v-c24f735a]{cursor:pointer}.indicator[data-v-c24f735a]{position:absolute;top:6px;bottom:6px;left:-17px;width:2px;border-radius:2px;transition:background-color .25s}.VPSidebarItem.level-2.is-active>.item>.indicator[data-v-c24f735a],.VPSidebarItem.level-3.is-active>.item>.indicator[data-v-c24f735a],.VPSidebarItem.level-4.is-active>.item>.indicator[data-v-c24f735a],.VPSidebarItem.level-5.is-active>.item>.indicator[data-v-c24f735a]{background-color:var(--vp-c-brand-1)}.link[data-v-c24f735a]{display:flex;align-items:center;flex-grow:1}.text[data-v-c24f735a]{flex-grow:1;padding:4px 0;line-height:24px;font-size:14px;transition:color .25s}.VPSidebarItem.level-0 .text[data-v-c24f735a]{font-weight:700;color:var(--vp-c-text-1)}.VPSidebarItem.level-1 .text[data-v-c24f735a],.VPSidebarItem.level-2 .text[data-v-c24f735a],.VPSidebarItem.level-3 .text[data-v-c24f735a],.VPSidebarItem.level-4 .text[data-v-c24f735a],.VPSidebarItem.level-5 .text[data-v-c24f735a]{font-weight:500;color:var(--vp-c-text-2)}.VPSidebarItem.level-0.is-link>.item>.link:hover .text[data-v-c24f735a],.VPSidebarItem.level-1.is-link>.item>.link:hover .text[data-v-c24f735a],.VPSidebarItem.level-2.is-link>.item>.link:hover .text[data-v-c24f735a],.VPSidebarItem.level-3.is-link>.item>.link:hover .text[data-v-c24f735a],.VPSidebarItem.level-4.is-link>.item>.link:hover .text[data-v-c24f735a],.VPSidebarItem.level-5.is-link>.item>.link:hover .text[data-v-c24f735a]{color:var(--vp-c-brand-1)}.VPSidebarItem.level-0.has-active>.item>.text[data-v-c24f735a],.VPSidebarItem.level-1.has-active>.item>.text[data-v-c24f735a],.VPSidebarItem.level-2.has-active>.item>.text[data-v-c24f735a],.VPSidebarItem.level-3.has-active>.item>.text[data-v-c24f735a],.VPSidebarItem.level-4.has-active>.item>.text[data-v-c24f735a],.VPSidebarItem.level-5.has-active>.item>.text[data-v-c24f735a],.VPSidebarItem.level-0.has-active>.item>.link>.text[data-v-c24f735a],.VPSidebarItem.level-1.has-active>.item>.link>.text[data-v-c24f735a],.VPSidebarItem.level-2.has-active>.item>.link>.text[data-v-c24f735a],.VPSidebarItem.level-3.has-active>.item>.link>.text[data-v-c24f735a],.VPSidebarItem.level-4.has-active>.item>.link>.text[data-v-c24f735a],.VPSidebarItem.level-5.has-active>.item>.link>.text[data-v-c24f735a]{color:var(--vp-c-text-1)}.VPSidebarItem.level-0.is-active>.item .link>.text[data-v-c24f735a],.VPSidebarItem.level-1.is-active>.item .link>.text[data-v-c24f735a],.VPSidebarItem.level-2.is-active>.item .link>.text[data-v-c24f735a],.VPSidebarItem.level-3.is-active>.item .link>.text[data-v-c24f735a],.VPSidebarItem.level-4.is-active>.item .link>.text[data-v-c24f735a],.VPSidebarItem.level-5.is-active>.item .link>.text[data-v-c24f735a]{color:var(--vp-c-brand-1)}.caret[data-v-c24f735a]{display:flex;justify-content:center;align-items:center;margin-right:-7px;width:32px;height:32px;color:var(--vp-c-text-3);cursor:pointer;transition:color .25s;flex-shrink:0}.item:hover .caret[data-v-c24f735a]{color:var(--vp-c-text-2)}.item:hover .caret[data-v-c24f735a]:hover{color:var(--vp-c-text-1)}.caret-icon[data-v-c24f735a]{font-size:18px;transform:rotate(90deg);transition:transform .25s}.VPSidebarItem.collapsed .caret-icon[data-v-c24f735a]{transform:rotate(0)}.VPSidebarItem.level-1 .items[data-v-c24f735a],.VPSidebarItem.level-2 .items[data-v-c24f735a],.VPSidebarItem.level-3 .items[data-v-c24f735a],.VPSidebarItem.level-4 .items[data-v-c24f735a],.VPSidebarItem.level-5 .items[data-v-c24f735a]{border-left:1px solid var(--vp-c-divider);padding-left:16px}.VPSidebarItem.collapsed .items[data-v-c24f735a]{display:none}.VPSidebar[data-v-4871f9f5]{position:fixed;top:var(--vp-layout-top-height, 0px);bottom:0;left:0;z-index:var(--vp-z-index-sidebar);padding:32px 32px 96px;width:calc(100vw - 64px);max-width:320px;background-color:var(--vp-sidebar-bg-color);opacity:0;box-shadow:var(--vp-c-shadow-3);overflow-x:hidden;overflow-y:auto;transform:translate(-100%);transition:opacity .5s,transform .25s ease;overscroll-behavior:contain}.VPSidebar.open[data-v-4871f9f5]{opacity:1;visibility:visible;transform:translate(0);transition:opacity .25s,transform .5s cubic-bezier(.19,1,.22,1)}.dark .VPSidebar[data-v-4871f9f5]{box-shadow:var(--vp-shadow-1)}@media (min-width: 960px){.VPSidebar[data-v-4871f9f5]{padding-top:var(--vp-nav-height);width:var(--vp-sidebar-width);max-width:100%;background-color:var(--vp-sidebar-bg-color);opacity:1;visibility:visible;box-shadow:none;transform:translate(0)}}@media (min-width: 1440px){.VPSidebar[data-v-4871f9f5]{padding-left:max(32px,calc((100% - (var(--vp-layout-max-width) - 64px)) / 2));width:calc((100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px)}}@media (min-width: 960px){.curtain[data-v-4871f9f5]{position:sticky;top:-64px;left:0;z-index:1;margin-top:calc(var(--vp-nav-height) * -1);margin-right:-32px;margin-left:-32px;height:var(--vp-nav-height);background-color:var(--vp-sidebar-bg-color)}}.nav[data-v-4871f9f5]{outline:0}.group+.group[data-v-4871f9f5]{border-top:1px solid var(--vp-c-divider);padding-top:10px}@media (min-width: 960px){.group[data-v-4871f9f5]{padding-top:10px;width:calc(var(--vp-sidebar-width) - 64px)}}.VPSkipLink[data-v-c8291ffa]{top:8px;left:8px;padding:8px 16px;z-index:999;border-radius:8px;font-size:12px;font-weight:700;text-decoration:none;color:var(--vp-c-brand-1);box-shadow:var(--vp-shadow-3);background-color:var(--vp-c-bg)}.VPSkipLink[data-v-c8291ffa]:focus{height:auto;width:auto;clip:auto;clip-path:none}@media (min-width: 1280px){.VPSkipLink[data-v-c8291ffa]{top:14px;left:16px}}.Layout[data-v-d8b57b2d]{display:flex;flex-direction:column;min-height:100vh}.VPHomeSponsors[data-v-3dc26e1d]{border-top:1px solid var(--vp-c-gutter);padding-top:88px!important}.VPHomeSponsors[data-v-3dc26e1d]{margin:96px 0}@media (min-width: 768px){.VPHomeSponsors[data-v-3dc26e1d]{margin:128px 0}}.VPHomeSponsors[data-v-3dc26e1d]{padding:0 24px}@media (min-width: 768px){.VPHomeSponsors[data-v-3dc26e1d]{padding:0 48px}}@media (min-width: 960px){.VPHomeSponsors[data-v-3dc26e1d]{padding:0 64px}}.container[data-v-3dc26e1d]{margin:0 auto;max-width:1152px}.love[data-v-3dc26e1d]{margin:0 auto;width:fit-content;font-size:28px;color:var(--vp-c-text-3)}.icon[data-v-3dc26e1d]{display:inline-block}.message[data-v-3dc26e1d]{margin:0 auto;padding-top:10px;max-width:320px;text-align:center;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}.sponsors[data-v-3dc26e1d]{padding-top:32px}.action[data-v-3dc26e1d]{padding-top:40px;text-align:center}.VPTeamPage[data-v-a5329171]{margin:96px 0}@media (min-width: 768px){.VPTeamPage[data-v-a5329171]{margin:128px 0}}.VPHome .VPTeamPageTitle[data-v-a5329171-s]{border-top:1px solid var(--vp-c-gutter);padding-top:88px!important}.VPTeamPageSection+.VPTeamPageSection[data-v-a5329171-s],.VPTeamMembers+.VPTeamPageSection[data-v-a5329171-s]{margin-top:64px}.VPTeamMembers+.VPTeamMembers[data-v-a5329171-s]{margin-top:24px}@media (min-width: 768px){.VPTeamPageTitle+.VPTeamPageSection[data-v-a5329171-s]{margin-top:16px}.VPTeamPageSection+.VPTeamPageSection[data-v-a5329171-s],.VPTeamMembers+.VPTeamPageSection[data-v-a5329171-s]{margin-top:96px}}.VPTeamMembers[data-v-a5329171-s]{padding:0 24px}@media (min-width: 768px){.VPTeamMembers[data-v-a5329171-s]{padding:0 48px}}@media (min-width: 960px){.VPTeamMembers[data-v-a5329171-s]{padding:0 64px}}.VPTeamPageTitle[data-v-46c5e327]{padding:48px 32px;text-align:center}@media (min-width: 768px){.VPTeamPageTitle[data-v-46c5e327]{padding:64px 48px 48px}}@media (min-width: 960px){.VPTeamPageTitle[data-v-46c5e327]{padding:80px 64px 48px}}.title[data-v-46c5e327]{letter-spacing:0;line-height:44px;font-size:36px;font-weight:500}@media (min-width: 768px){.title[data-v-46c5e327]{letter-spacing:-.5px;line-height:56px;font-size:48px}}.lead[data-v-46c5e327]{margin:0 auto;max-width:512px;padding-top:12px;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 768px){.lead[data-v-46c5e327]{max-width:592px;letter-spacing:.15px;line-height:28px;font-size:20px}}.VPTeamPageSection[data-v-3bf2e850]{padding:0 32px}@media (min-width: 768px){.VPTeamPageSection[data-v-3bf2e850]{padding:0 48px}}@media (min-width: 960px){.VPTeamPageSection[data-v-3bf2e850]{padding:0 64px}}.title[data-v-3bf2e850]{position:relative;margin:0 auto;max-width:1152px;text-align:center;color:var(--vp-c-text-2)}.title-line[data-v-3bf2e850]{position:absolute;top:16px;left:0;width:100%;height:1px;background-color:var(--vp-c-divider)}.title-text[data-v-3bf2e850]{position:relative;display:inline-block;padding:0 24px;letter-spacing:0;line-height:32px;font-size:20px;font-weight:500;background-color:var(--vp-c-bg)}.lead[data-v-3bf2e850]{margin:0 auto;max-width:480px;padding-top:12px;text-align:center;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}.members[data-v-3bf2e850]{padding-top:40px}.VPTeamMembersItem[data-v-acff304e]{display:flex;flex-direction:column;gap:2px;border-radius:12px;width:100%;height:100%;overflow:hidden}.VPTeamMembersItem.small .profile[data-v-acff304e]{padding:32px}.VPTeamMembersItem.small .data[data-v-acff304e]{padding-top:20px}.VPTeamMembersItem.small .avatar[data-v-acff304e]{width:64px;height:64px}.VPTeamMembersItem.small .name[data-v-acff304e]{line-height:24px;font-size:16px}.VPTeamMembersItem.small .affiliation[data-v-acff304e]{padding-top:4px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .desc[data-v-acff304e]{padding-top:12px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .links[data-v-acff304e]{margin:0 -16px -20px;padding:10px 0 0}.VPTeamMembersItem.medium .profile[data-v-acff304e]{padding:48px 32px}.VPTeamMembersItem.medium .data[data-v-acff304e]{padding-top:24px;text-align:center}.VPTeamMembersItem.medium .avatar[data-v-acff304e]{width:96px;height:96px}.VPTeamMembersItem.medium .name[data-v-acff304e]{letter-spacing:.15px;line-height:28px;font-size:20px}.VPTeamMembersItem.medium .affiliation[data-v-acff304e]{padding-top:4px;font-size:16px}.VPTeamMembersItem.medium .desc[data-v-acff304e]{padding-top:16px;max-width:288px;font-size:16px}.VPTeamMembersItem.medium .links[data-v-acff304e]{margin:0 -16px -12px;padding:16px 12px 0}.profile[data-v-acff304e]{flex-grow:1;background-color:var(--vp-c-bg-soft)}.data[data-v-acff304e]{text-align:center}.avatar[data-v-acff304e]{position:relative;flex-shrink:0;margin:0 auto;border-radius:50%;box-shadow:var(--vp-shadow-3)}.avatar-img[data-v-acff304e]{position:absolute;inset:0;border-radius:50%;object-fit:cover}.name[data-v-acff304e]{margin:0;font-weight:600}.affiliation[data-v-acff304e]{margin:0;font-weight:500;color:var(--vp-c-text-2)}.org.link[data-v-acff304e]{color:var(--vp-c-text-2);transition:color .25s}.org.link[data-v-acff304e]:hover{color:var(--vp-c-brand-1)}.desc[data-v-acff304e]{margin:0 auto}.desc[data-v-acff304e] a{font-weight:500;color:var(--vp-c-brand-1);text-decoration-style:dotted;transition:color .25s}.links[data-v-acff304e]{display:flex;justify-content:center;height:56px}.sp-link[data-v-acff304e]{display:flex;justify-content:center;align-items:center;text-align:center;padding:16px;font-size:14px;font-weight:500;color:var(--vp-c-sponsor);background-color:var(--vp-c-bg-soft);transition:color .25s,background-color .25s}.sp .sp-link.link[data-v-acff304e]:hover,.sp .sp-link.link[data-v-acff304e]:focus{outline:none;color:var(--vp-c-white);background-color:var(--vp-c-sponsor)}.sp-icon[data-v-acff304e]{margin-right:8px;font-size:16px}.VPTeamMembers.small .container[data-v-bf782009]{grid-template-columns:repeat(auto-fit,minmax(224px,1fr))}.VPTeamMembers.small.count-1 .container[data-v-bf782009]{max-width:276px}.VPTeamMembers.small.count-2 .container[data-v-bf782009]{max-width:576px}.VPTeamMembers.small.count-3 .container[data-v-bf782009]{max-width:876px}.VPTeamMembers.medium .container[data-v-bf782009]{grid-template-columns:repeat(auto-fit,minmax(256px,1fr))}@media (min-width: 375px){.VPTeamMembers.medium .container[data-v-bf782009]{grid-template-columns:repeat(auto-fit,minmax(288px,1fr))}}.VPTeamMembers.medium.count-1 .container[data-v-bf782009]{max-width:368px}.VPTeamMembers.medium.count-2 .container[data-v-bf782009]{max-width:760px}.container[data-v-bf782009]{display:grid;gap:24px;margin:0 auto;max-width:1152px}:root{--vp-home-hero-image-filter: blur(100px);--vp-home-hero-image-background-image: url('data:image/svg+xml,')}.button-example{background-color:var(--vp-c-brand-2);color:#fff;padding:10px;margin:7px;border-radius:4px;border:none;cursor:pointer}.button-example:hover{background-color:var(--vp-c-brand-1)}.checkbox-example{width:15px;height:15px}.input-example{appearance:none;padding:7px 15px;border:1px solid transparent;border-radius:6px;outline:none}.input-example:focus{cursor:auto;border-color:var(--vp-c-brand-1)}.select-example{background-color:var(--vp-c-brand-2);color:#fff;padding:10px;margin:7px;border-radius:4px;border:none}.vue-pdf-container{display:flex;align-items:center;flex-direction:column}.textLayer{position:absolute;text-align:initial;inset:0;overflow:hidden;opacity:1;line-height:1;-webkit-text-size-adjust:none;-moz-text-size-adjust:none;text-size-adjust:none;forced-color-adjust:none;transform-origin:0 0;caret-color:CanvasText}.textLayer.highlighting{touch-action:none}.textLayer :is(span,br){color:transparent;position:absolute;white-space:pre;cursor:text;transform-origin:0% 0%}.textLayer span.markedContent{top:0;height:0}.textLayer .highlight{--highlight-bg-color:rgb(180 0 170 / .25);--highlight-selected-bg-color:rgb(0 100 0 / .25);--highlight-backdrop-filter:none;--highlight-selected-backdrop-filter:none;margin:-1px;padding:1px;background-color:var(--highlight-bg-color);-webkit-backdrop-filter:var(--highlight-backdrop-filter);backdrop-filter:var(--highlight-backdrop-filter);border-radius:4px}@media screen and (forced-colors: active){.textLayer .highlight{--highlight-bg-color:transparent;--highlight-selected-bg-color:transparent;--highlight-backdrop-filter:var(--hcm-highlight-filter);--highlight-selected-backdrop-filter:var( --hcm-highlight-selected-filter )}}.textLayer .highlight.appended{position:initial}.textLayer .highlight.begin{border-radius:4px 0 0 4px}.textLayer .highlight.end{border-radius:0 4px 4px 0}.textLayer .highlight.middle{border-radius:0}.textLayer .highlight.selected{background-color:var(--highlight-selected-bg-color);-webkit-backdrop-filter:var(--highlight-selected-backdrop-filter);backdrop-filter:var(--highlight-selected-backdrop-filter)}.textLayer ::-moz-selection{background:#0000ff40;background:color-mix(in srgb,AccentColor,transparent 75%)}.textLayer ::selection{background:#0000ff40;background:color-mix(in srgb,AccentColor,transparent 75%)}.textLayer br::-moz-selection{background:transparent}.textLayer br::selection{background:transparent}.textLayer .endOfContent{display:block;position:absolute;inset:100% 0 0;z-index:-1;cursor:default;-webkit-user-select:none;-moz-user-select:none;user-select:none}.textLayer .endOfContent.active{top:0}.annotationLayer{--annotation-unfocused-field-background:url("data:image/svg+xml;charset=UTF-8,");--input-focus-border-color:Highlight;--input-focus-outline:1px solid Canvas;--input-unfocused-border-color:transparent;--input-disabled-border-color:transparent;--input-hover-border-color:black;--link-outline:none;position:absolute;top:0;left:0;pointer-events:none;transform-origin:0 0}@media screen and (forced-colors: active){.annotationLayer{--input-focus-border-color:CanvasText;--input-unfocused-border-color:ActiveText;--input-disabled-border-color:GrayText;--input-hover-border-color:Highlight;--link-outline:1.5px solid LinkText}.annotationLayer .textWidgetAnnotation :is(input,textarea):required,.annotationLayer .choiceWidgetAnnotation select:required,.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input:required{outline:1.5px solid selectedItem}.annotationLayer .linkAnnotation{outline:var(--link-outline)}.annotationLayer .linkAnnotation:hover{-webkit-backdrop-filter:var(--hcm-highlight-filter);backdrop-filter:var(--hcm-highlight-filter)}.annotationLayer .linkAnnotation>a:hover{opacity:0!important;background:none!important;box-shadow:none}.annotationLayer .popupAnnotation .popup{outline:calc(1.5px * var(--scale-factor)) solid CanvasText!important;background-color:ButtonFace!important;color:ButtonText!important}.annotationLayer .highlightArea:hover:after{position:absolute;top:0;left:0;width:100%;height:100%;-webkit-backdrop-filter:var(--hcm-highlight-filter);backdrop-filter:var(--hcm-highlight-filter);content:"";pointer-events:none}.annotationLayer .popupAnnotation.focused .popup{outline:calc(3px * var(--scale-factor)) solid Highlight!important}}.annotationLayer[data-main-rotation="90"] .norotate{transform:rotate(270deg) translate(-100%)}.annotationLayer[data-main-rotation="180"] .norotate{transform:rotate(180deg) translate(-100%,-100%)}.annotationLayer[data-main-rotation="270"] .norotate{transform:rotate(90deg) translateY(-100%)}.annotationLayer.disabled section,.annotationLayer.disabled .popup{pointer-events:none}.annotationLayer .annotationContent{position:absolute;width:100%;height:100%;pointer-events:none}.annotationLayer .annotationContent.freetext{background:transparent;border:none;inset:0;overflow:visible;white-space:nowrap;font:10px sans-serif;line-height:1.35;-webkit-user-select:none;-moz-user-select:none;user-select:none}.annotationLayer section{position:absolute;text-align:initial;pointer-events:auto;box-sizing:border-box;transform-origin:0 0}.annotationLayer section:has(div.annotationContent) canvas.annotationContent{display:none}.annotationLayer :is(.linkAnnotation,.buttonWidgetAnnotation.pushButton)>a{position:absolute;font-size:1em;top:0;left:0;width:100%;height:100%}.annotationLayer :is(.linkAnnotation,.buttonWidgetAnnotation.pushButton):not(.hasBorder)>a:hover{opacity:.2;background-color:#ff0;box-shadow:0 2px 10px #ff0}.annotationLayer .linkAnnotation.hasBorder:hover{background-color:#ff03}.annotationLayer .hasBorder{background-size:100% 100%}.annotationLayer .textAnnotation img{position:absolute;cursor:pointer;width:100%;height:100%;top:0;left:0}.annotationLayer .textWidgetAnnotation :is(input,textarea),.annotationLayer .choiceWidgetAnnotation select,.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input{background-image:var(--annotation-unfocused-field-background);border:2px solid var(--input-unfocused-border-color);box-sizing:border-box;font:calc(9px * var(--scale-factor)) sans-serif;height:100%;margin:0;vertical-align:top;width:100%}.annotationLayer .textWidgetAnnotation :is(input,textarea):required,.annotationLayer .choiceWidgetAnnotation select:required,.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input:required{outline:1.5px solid red}.annotationLayer .choiceWidgetAnnotation select option{padding:0}.annotationLayer .buttonWidgetAnnotation.radioButton input{border-radius:50%}.annotationLayer .textWidgetAnnotation textarea{resize:none}.annotationLayer .textWidgetAnnotation [disabled]:is(input,textarea),.annotationLayer .choiceWidgetAnnotation select[disabled],.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input[disabled]{background:none;border:2px solid var(--input-disabled-border-color);cursor:not-allowed}.annotationLayer .textWidgetAnnotation :is(input,textarea):hover,.annotationLayer .choiceWidgetAnnotation select:hover,.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input:hover{border:2px solid var(--input-hover-border-color)}.annotationLayer .textWidgetAnnotation :is(input,textarea):hover,.annotationLayer .choiceWidgetAnnotation select:hover,.annotationLayer .buttonWidgetAnnotation.checkBox input:hover{border-radius:2px}.annotationLayer .textWidgetAnnotation :is(input,textarea):focus,.annotationLayer .choiceWidgetAnnotation select:focus{background:none;border:2px solid var(--input-focus-border-color);border-radius:2px;outline:var(--input-focus-outline)}.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) :focus{background-image:none;background-color:transparent}.annotationLayer .buttonWidgetAnnotation.checkBox :focus{border:2px solid var(--input-focus-border-color);border-radius:2px;outline:var(--input-focus-outline)}.annotationLayer .buttonWidgetAnnotation.radioButton :focus{border:2px solid var(--input-focus-border-color);outline:var(--input-focus-outline)}.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:before,.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:after,.annotationLayer .buttonWidgetAnnotation.radioButton input:checked:before{background-color:CanvasText;content:"";display:block;position:absolute}.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:before,.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:after{height:80%;left:45%;width:1px}.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:before{transform:rotate(45deg)}.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:after{transform:rotate(-45deg)}.annotationLayer .buttonWidgetAnnotation.radioButton input:checked:before{border-radius:50%;height:50%;left:25%;top:25%;width:50%}.annotationLayer .textWidgetAnnotation input.comb{font-family:monospace;padding-left:2px;padding-right:0}.annotationLayer .textWidgetAnnotation input.comb:focus{width:103%}.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input{-webkit-appearance:none;-moz-appearance:none;appearance:none}.annotationLayer .fileAttachmentAnnotation .popupTriggerArea{height:100%;width:100%}.annotationLayer .popupAnnotation{position:absolute;font-size:calc(9px * var(--scale-factor));pointer-events:none;width:-moz-max-content;width:max-content;max-width:45%;height:auto}.annotationLayer .popup{background-color:#ff9;box-shadow:0 calc(2px * var(--scale-factor)) calc(5px * var(--scale-factor)) #888;border-radius:calc(2px * var(--scale-factor));outline:1.5px solid rgb(255 255 74);padding:calc(6px * var(--scale-factor));cursor:pointer;font:message-box;white-space:normal;word-wrap:break-word;pointer-events:auto}.annotationLayer .popupAnnotation.focused .popup{outline-width:3px}.annotationLayer .popup *{font-size:calc(9px * var(--scale-factor))}.annotationLayer .popup>.header{display:inline-block}.annotationLayer .popup>.header h1{display:inline}.annotationLayer .popup>.header .popupDate{display:inline-block;margin-left:calc(5px * var(--scale-factor));width:-moz-fit-content;width:fit-content}.annotationLayer .popupContent{border-top:1px solid rgb(51 51 51);margin-top:calc(2px * var(--scale-factor));padding-top:calc(2px * var(--scale-factor))}.annotationLayer .richText>*{white-space:pre-wrap;font-size:calc(9px * var(--scale-factor))}.annotationLayer .popupTriggerArea{cursor:pointer}.annotationLayer section svg{position:absolute;width:100%;height:100%;top:0;left:0}.annotationLayer .annotationTextContent{position:absolute;width:100%;height:100%;opacity:0;color:transparent;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:none}.annotationLayer .annotationTextContent span{width:100%;display:inline-block}.annotationLayer svg.quadrilateralsContainer{contain:strict;width:0;height:0;position:absolute;top:0;left:0;z-index:-1}:root{--xfa-unfocused-field-background:url("data:image/svg+xml;charset=UTF-8,");--xfa-focus-outline:auto}@media screen and (forced-colors: active){:root{--xfa-focus-outline:2px solid CanvasText}.xfaLayer *:required{outline:1.5px solid selectedItem}}.xfaLayer{background-color:transparent}.xfaLayer .highlight{margin:-1px;padding:1px;background-color:#efcbed;border-radius:4px}.xfaLayer .highlight.appended{position:initial}.xfaLayer .highlight.begin{border-radius:4px 0 0 4px}.xfaLayer .highlight.end{border-radius:0 4px 4px 0}.xfaLayer .highlight.middle{border-radius:0}.xfaLayer .highlight.selected{background-color:#cbdfcb}.xfaPage{overflow:hidden;position:relative}.xfaContentarea{position:absolute}.xfaPrintOnly{display:none}.xfaLayer{position:absolute;text-align:initial;top:0;left:0;transform-origin:0 0;line-height:1.2}.xfaLayer *{color:inherit;font:inherit;font-style:inherit;font-weight:inherit;font-kerning:inherit;letter-spacing:-.01px;text-align:inherit;text-decoration:inherit;box-sizing:border-box;background-color:transparent;padding:0;margin:0;pointer-events:auto;line-height:inherit}.xfaLayer *:required{outline:1.5px solid red}.xfaLayer div,.xfaLayer svg,.xfaLayer svg *{pointer-events:none}.xfaLayer a{color:#00f}.xfaRich li{margin-left:3em}.xfaFont{color:#000;font-weight:400;font-kerning:none;font-size:10px;font-style:normal;letter-spacing:0;text-decoration:none;vertical-align:0}.xfaCaption{overflow:hidden;flex:0 0 auto}.xfaCaptionForCheckButton{overflow:hidden;flex:1 1 auto}.xfaLabel{height:100%;width:100%}.xfaLeft{display:flex;flex-direction:row;align-items:center}.xfaRight{display:flex;flex-direction:row-reverse;align-items:center}:is(.xfaLeft,.xfaRight)>:is(.xfaCaption,.xfaCaptionForCheckButton){max-height:100%}.xfaTop{display:flex;flex-direction:column;align-items:flex-start}.xfaBottom{display:flex;flex-direction:column-reverse;align-items:flex-start}:is(.xfaTop,.xfaBottom)>:is(.xfaCaption,.xfaCaptionForCheckButton){width:100%}.xfaBorder{background-color:transparent;position:absolute;pointer-events:none}.xfaWrapped{width:100%;height:100%}:is(.xfaTextfield,.xfaSelect):focus{background-image:none;background-color:transparent;outline:var(--xfa-focus-outline);outline-offset:-1px}:is(.xfaCheckbox,.xfaRadio):focus{outline:var(--xfa-focus-outline)}.xfaTextfield,.xfaSelect{height:100%;width:100%;flex:1 1 auto;border:none;resize:none;background-image:var(--xfa-unfocused-field-background)}.xfaSelect{padding-inline:2px}:is(.xfaTop,.xfaBottom)>:is(.xfaTextfield,.xfaSelect){flex:0 1 auto}.xfaButton{cursor:pointer;width:100%;height:100%;border:none;text-align:center}.xfaLink{width:100%;height:100%;position:absolute;top:0;left:0}.xfaCheckbox,.xfaRadio{width:100%;height:100%;flex:0 0 auto;border:none}.xfaRich{white-space:pre-wrap;width:100%;height:100%}.xfaImage{-o-object-position:left top;object-position:left top;-o-object-fit:contain;object-fit:contain;width:100%;height:100%}.xfaLrTb,.xfaRlTb,.xfaTb{display:flex;flex-direction:column;align-items:stretch}.xfaLr{display:flex;flex-direction:row;align-items:stretch}.xfaRl{display:flex;flex-direction:row-reverse;align-items:stretch}.xfaTb>div{justify-content:left}.xfaPosition,.xfaArea{position:relative}.xfaValignMiddle{display:flex;align-items:center}.xfaTable{display:flex;flex-direction:column;align-items:stretch}.xfaTable .xfaRow{display:flex;flex-direction:row;align-items:stretch}.xfaTable .xfaRlRow{display:flex;flex-direction:row-reverse;align-items:stretch;flex:1}.xfaTable .xfaRlRow>div{flex:1}:is(.xfaNonInteractive,.xfaDisabled,.xfaReadOnly) :is(input,textarea){background:initial}@media print{.xfaTextfield,.xfaSelect{background:transparent}.xfaSelect{-webkit-appearance:none;-moz-appearance:none;appearance:none;text-indent:1px;text-overflow:""}}.canvasWrapper svg{transform:none}.canvasWrapper svg[data-main-rotation="90"] mask,.canvasWrapper svg[data-main-rotation="90"] use:not(.clip,.mask){transform:matrix(0,1,-1,0,1,0)}.canvasWrapper svg[data-main-rotation="180"] mask,.canvasWrapper svg[data-main-rotation="180"] use:not(.clip,.mask){transform:matrix(-1,0,0,-1,1,1)}.canvasWrapper svg[data-main-rotation="270"] mask,.canvasWrapper svg[data-main-rotation="270"] use:not(.clip,.mask){transform:matrix(0,-1,1,0,0,1)}.canvasWrapper svg.highlight{--blend-mode:multiply;position:absolute;mix-blend-mode:var(--blend-mode)}@media screen and (forced-colors: active){.canvasWrapper svg.highlight{--blend-mode:difference}}.canvasWrapper svg.highlight:not(.free){fill-rule:evenodd}.canvasWrapper svg.highlightOutline{position:absolute;mix-blend-mode:normal;fill-rule:evenodd;fill:none}.canvasWrapper svg.highlightOutline.hovered:not(.free):not(.selected){stroke:var(--hover-outline-color);stroke-width:var(--outline-width)}.canvasWrapper svg.highlightOutline.selected:not(.free) .mainOutline{stroke:var(--outline-around-color);stroke-width:calc(var(--outline-width) + 2 * var(--outline-around-width))}.canvasWrapper svg.highlightOutline.selected:not(.free) .secondaryOutline{stroke:var(--outline-color);stroke-width:var(--outline-width)}.canvasWrapper svg.highlightOutline.free.hovered:not(.selected){stroke:var(--hover-outline-color);stroke-width:calc(2 * var(--outline-width))}.canvasWrapper svg.highlightOutline.free.selected .mainOutline{stroke:var(--outline-around-color);stroke-width:calc(2 * (var(--outline-width) + var(--outline-around-width)))}.canvasWrapper svg.highlightOutline.free.selected .secondaryOutline{stroke:var(--outline-color);stroke-width:calc(2 * var(--outline-width))}.toggle-button{--button-background-color:#f0f0f4;--button-background-color-hover:#e0e0e6;--button-background-color-active:#cfcfd8;--color-accent-primary:#0060df;--color-accent-primary-hover:#0250bb;--color-accent-primary-active:#054096;--border-interactive-color:#8f8f9d;--border-radius-circle:9999px;--border-width:1px;--size-item-small:16px;--size-item-large:32px;--color-canvas:white;--toggle-background-color:var(--button-background-color);--toggle-background-color-hover:var(--button-background-color-hover);--toggle-background-color-active:var(--button-background-color-active);--toggle-background-color-pressed:var(--color-accent-primary);--toggle-background-color-pressed-hover:var(--color-accent-primary-hover);--toggle-background-color-pressed-active:var(--color-accent-primary-active);--toggle-border-color:var(--border-interactive-color);--toggle-border-color-hover:var(--toggle-border-color);--toggle-border-color-active:var(--toggle-border-color);--toggle-border-radius:var(--border-radius-circle);--toggle-border-width:var(--border-width);--toggle-height:var(--size-item-small);--toggle-width:var(--size-item-large);--toggle-dot-background-color:var(--toggle-border-color);--toggle-dot-background-color-hover:var(--toggle-dot-background-color);--toggle-dot-background-color-active:var(--toggle-dot-background-color);--toggle-dot-background-color-on-pressed:var(--color-canvas);--toggle-dot-margin:1px;--toggle-dot-height:calc( var(--toggle-height) - 2 * var(--toggle-dot-margin) - 2 * var(--toggle-border-width) );--toggle-dot-width:var(--toggle-dot-height);--toggle-dot-transform-x:calc( var(--toggle-width) - 4 * var(--toggle-dot-margin) - var(--toggle-dot-width) );-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:0;margin:0;border:var(--toggle-border-width) solid var(--toggle-border-color);height:var(--toggle-height);width:var(--toggle-width);border-radius:var(--toggle-border-radius);background:var(--toggle-background-color);box-sizing:border-box;flex-shrink:0}@media (prefers-color-scheme: dark){.toggle-button{--button-background-color:color-mix(in srgb, currentColor 7%, transparent);--button-background-color-hover:color-mix( in srgb, currentColor 14%, transparent );--button-background-color-active:color-mix( in srgb, currentColor 21%, transparent );--color-accent-primary:#0df;--color-accent-primary-hover:#80ebff;--color-accent-primary-active:#aaf2ff;--border-interactive-color:#bfbfc9;--color-canvas:#1c1b22}}@media (forced-colors: active){.toggle-button{--color-accent-primary:ButtonText;--color-accent-primary-hover:SelectedItem;--color-accent-primary-active:SelectedItem;--border-interactive-color:ButtonText;--button-background-color:ButtonFace;--border-interactive-color-hover:SelectedItem;--border-interactive-color-active:SelectedItem;--border-interactive-color-disabled:GrayText;--color-canvas:ButtonText}}.toggle-button:focus-visible{outline:var(--focus-outline);outline-offset:var(--focus-outline-offset)}.toggle-button:enabled:hover{background:var(--toggle-background-color-hover);border-color:var(--toggle-border-color)}.toggle-button:enabled:active{background:var(--toggle-background-color-active);border-color:var(--toggle-border-color)}.toggle-button[aria-pressed=true]{background:var(--toggle-background-color-pressed);border-color:transparent}.toggle-button[aria-pressed=true]:enabled:hover{background:var(--toggle-background-color-pressed-hover);border-color:transparent}.toggle-button[aria-pressed=true]:enabled:active{background:var(--toggle-background-color-pressed-active);border-color:transparent}.toggle-button:before{display:block;content:"";background-color:var(--toggle-dot-background-color);height:var(--toggle-dot-height);width:var(--toggle-dot-width);margin:var(--toggle-dot-margin);border-radius:var(--toggle-border-radius);translate:0}.toggle-button[aria-pressed=true]:before{translate:var(--toggle-dot-transform-x);background-color:var(--toggle-dot-background-color-on-pressed)}.toggle-button[aria-pressed=true]:enabled:hover:before,.toggle-button[aria-pressed=true]:enabled:active:before{background-color:var(--toggle-dot-background-color-on-pressed)}[dir=rtl] .toggle-button[aria-pressed=true]:before{translate:calc(-1 * var(--toggle-dot-transform-x))}@media (prefers-reduced-motion: no-preference){.toggle-button:before{transition:translate .1s}}@media (prefers-contrast){.toggle-button:enabled:hover{border-color:var(--toggle-border-color-hover)}.toggle-button:enabled:active{border-color:var(--toggle-border-color-active)}.toggle-button[aria-pressed=true]:enabled{border-color:var(--toggle-border-color);position:relative}.toggle-button[aria-pressed=true]:enabled:hover,.toggle-button[aria-pressed=true]:enabled:hover:active{border-color:var(--toggle-border-color-hover)}.toggle-button[aria-pressed=true]:enabled:active{background-color:var(--toggle-dot-background-color-active);border-color:var(--toggle-dot-background-color-hover)}.toggle-button:hover:before,.toggle-button:active:before{background-color:var(--toggle-dot-background-color-hover)}}@media (forced-colors){.toggle-button{--toggle-dot-background-color:var(--color-accent-primary);--toggle-dot-background-color-hover:var(--color-accent-primary-hover);--toggle-dot-background-color-active:var(--color-accent-primary-active);--toggle-dot-background-color-on-pressed:var(--button-background-color);--toggle-background-color-disabled:var(--button-background-color-disabled);--toggle-border-color-hover:var(--border-interactive-color-hover);--toggle-border-color-active:var(--border-interactive-color-active);--toggle-border-color-disabled:var(--border-interactive-color-disabled)}.toggle-button[aria-pressed=true]:enabled:after{border:1px solid var(--button-background-color);content:"";position:absolute;height:var(--toggle-height);width:var(--toggle-width);display:block;border-radius:var(--toggle-border-radius);inset:-2px}.toggle-button[aria-pressed=true]:enabled:active:after{border-color:var(--toggle-border-color-active)}}:root{--outline-width:2px;--outline-color:#0060df;--outline-around-width:1px;--outline-around-color:#f0f0f4;--hover-outline-around-color:var(--outline-around-color);--focus-outline:solid var(--outline-width) var(--outline-color);--unfocus-outline:solid var(--outline-width) transparent;--focus-outline-around:solid var(--outline-around-width) var(--outline-around-color);--hover-outline-color:#8f8f9d;--hover-outline:solid var(--outline-width) var(--hover-outline-color);--hover-outline-around:solid var(--outline-around-width) var(--hover-outline-around-color);--freetext-line-height:1.35;--freetext-padding:2px;--resizer-bg-color:var(--outline-color);--resizer-size:6px;--resizer-shift:calc( 0px - (var(--outline-width) + var(--resizer-size)) / 2 - var(--outline-around-width) );--editorFreeText-editing-cursor:text;--editorInk-editing-cursor:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTAuMDE4OTg3NyAxMy42NjQ1TDAuNjEyOTg5IDEwLjQ2MzVDMC42ODc5ODkgMTAuMDU0NSAwLjg4NDk4OSA5LjY4MDUgMS4xODA5OSA5LjM4MjVMOS45ODE5OSAwLjU4MDVDMTAuNzU2IC0wLjE5MjUgMTIuMDE1IC0wLjE5NDUgMTIuNzkyIDAuNTgwNUwxNC40MiAyLjIwODVDMTUuMTk0IDIuOTgzNSAxNS4xOTQgNC4yNDM1IDE0LjQyIDUuMDE4NUw1LjYxNTk5IDEzLjgyMTVDNS4zMTk5OSAxNC4xMTY1IDQuOTQ1OTkgMTQuMzEyNSA0LjUzNzk5IDE0LjM4NzVMMS4zMzU5OSAxNC45ODE1QzEuMjY1OTkgMTQuOTkzNSAxLjE5Nzk5IDE1LjAwMDUgMS4xMjk5OSAxNS4wMDA1QzAuODMyOTg5IDE1LjAwMDUgMC41NDQ5ODggMTQuODgzNSAwLjMzMDk4OCAxNC42Njk1QzAuMDY3OTg3NCAxNC40MDU1IC0wLjA0OTAxMjIgMTQuMDMwNSAwLjAxODk4NzcgMTMuNjY0NVoiIGZpbGw9IndoaXRlIi8+CjxwYXRoIGQ9Ik0wLjAxODk4NzcgMTMuNjY0NUwwLjYxMjk4OSAxMC40NjM1QzAuNjg3OTg5IDEwLjA1NDUgMC44ODQ5ODkgOS42ODA1IDEuMTgwOTkgOS4zODI1TDkuOTgxOTkgMC41ODA1QzEwLjc1NiAtMC4xOTI1IDEyLjAxNSAtMC4xOTQ1IDEyLjc5MiAwLjU4MDVMMTQuNDIgMi4yMDg1QzE1LjE5NCAyLjk4MzUgMTUuMTk0IDQuMjQzNSAxNC40MiA1LjAxODVMNS42MTU5OSAxMy44MjE1QzUuMzE5OTkgMTQuMTE2NSA0Ljk0NTk5IDE0LjMxMjUgNC41Mzc5OSAxNC4zODc1TDEuMzM1OTkgMTQuOTgxNUMxLjI2NTk5IDE0Ljk5MzUgMS4xOTc5OSAxNS4wMDA1IDEuMTI5OTkgMTUuMDAwNUMwLjgzMjk4OSAxNS4wMDA1IDAuNTQ0OTg4IDE0Ljg4MzUgMC4zMzA5ODggMTQuNjY5NUMwLjA2Nzk4NzQgMTQuNDA1NSAtMC4wNDkwMTIyIDE0LjAzMDUgMC4wMTg5ODc3IDEzLjY2NDVaTTEyLjQ3MiA1LjE5NjVMMTMuNjMyIDQuMDM2NUwxMy42MzEgMy4xODg1TDExLjgxMSAxLjM2NzVMMTAuOTYzIDEuMzY4NUw5LjgwMjk5IDIuNTI4NUwxMi40NzIgNS4xOTY1Wk00LjMxMDk5IDEzLjE1ODVDNC40NzA5OSAxMy4xMjg1IDQuNjE3OTkgMTMuMDUxNSA0LjczMzk5IDEyLjkzNDVMMTEuNTg3IDYuMDgxNUw4LjkxODk5IDMuNDEzNUwyLjA2NTk5IDEwLjI2NTVDMS45NDg5OSAxMC4zODM1IDEuODcxOTkgMTAuNTMwNSAxLjg0MDk5IDEwLjY5MTVMMS4zNjY5OSAxMy4yNDg1TDEuNzUxOTkgMTMuNjMzNUw0LjMxMDk5IDEzLjE1ODVaIiBmaWxsPSJibGFjayIvPgo8L3N2Zz4K) 0 16, pointer;--editorHighlight-editing-cursor:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjkiIGhlaWdodD0iMzIiIHZpZXdCb3g9IjAgMCAyOSAzMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTI4IDE2Ljc1QzI4LjI3NjEgMTYuNzUgMjguNSAxNi41MjYxIDI4LjUgMTYuMjVWMTVDMjguNSAxNC43MjM5IDI4LjI3NjEgMTQuNSAyOCAxNC41SDI2LjM1OEMyNS45MTE3IDE0LjUgMjUuNDc3MyAxNC42MjU3IDI1LjA5OTkgMTQuODYwNEwyNS4wOTg5IDE0Ljg2MTFMMjQgMTUuNTQ4NEwyMi45IDE0Ljg2MUwyMi44OTkxIDE0Ljg2MDRDMjIuNTIxOCAxNC42MjU3IDIyLjA4NzUgMTQuNSAyMS42NDIgMTQuNUgyMEMxOS43MjM5IDE0LjUgMTkuNSAxNC43MjM5IDE5LjUgMTVWMTYuMjVDMTkuNSAxNi41MjYxIDE5LjcyMzkgMTYuNzUgMjAgMTYuNzVIMjEuNjQyQzIxLjY2NDggMTYuNzUgMjEuNjg4NSAxNi43NTY0IDIxLjcxMDEgMTYuNzY5N0MyMS43MTAyIDE2Ljc2OTggMjEuNzEwNCAxNi43Njk5IDIxLjcxMDUgMTYuNzdMMjIuODE3IDE3LjQ2MUMyMi44MTcgMTcuNDYxIDIyLjgxNzEgMTcuNDYxMSAyMi44MTcxIDE3LjQ2MTFDMjIuODE3MSAxNy40NjExIDIyLjgxNzEgMTcuNDYxMSAyMi44MTcxIDE3LjQ2MTFDMjIuODU1MiAxNy40ODQ5IDIyLjg3NiAxNy41MjI5IDIyLjg3NiAxNy41NjdWMjIuNjI1VjI3LjY4M0MyMi44NzYgMjcuNzI3MSAyMi44NTUyIDI3Ljc2NSAyMi44MTcyIDI3Ljc4ODlDMjIuODE3MSAyNy43ODg5IDIyLjgxNzEgMjcuNzg5IDIyLjgxNyAyNy43ODlMMjEuNzA5NSAyOC40OEMyMS43MDk0IDI4LjQ4MDEgMjEuNzA5MyAyOC40ODAyIDIxLjcwOTIgMjguNDgwM0MyMS42ODcyIDI4LjQ5MzggMjEuNjY0NCAyOC41IDIxLjY0MSAyOC41SDIwQzE5LjcyMzkgMjguNSAxOS41IDI4LjcyMzkgMTkuNSAyOVYzMC4yNUMxOS41IDMwLjUyNjEgMTkuNzIzOSAzMC43NSAyMCAzMC43NUgyMS42NDJDMjIuMDg4MyAzMC43NSAyMi41MjI3IDMwLjYyNDMgMjIuOTAwMSAzMC4zODk2TDIyLjkwMDkgMzAuMzg5MUwyNCAyOS43MDI2TDI1LjEgMzAuMzlMMjUuMTAwOSAzMC4zOTA2QzI1LjQ3ODMgMzAuNjI1MyAyNS45MTI3IDMwLjc1MSAyNi4zNTkgMzAuNzUxSDI4QzI4LjI3NjEgMzAuNzUxIDI4LjUgMzAuNTI3MSAyOC41IDMwLjI1MVYyOS4wMDFDMjguNSAyOC43MjQ5IDI4LjI3NjEgMjguNTAxIDI4IDI4LjUwMUgyNi4zNThDMjYuMzM1MiAyOC41MDEgMjYuMzExNSAyOC40OTQ2IDI2LjI4OTkgMjguNDgxM0MyNi4yODk3IDI4LjQ4MTIgMjYuMjg5NiAyOC40ODExIDI2LjI4OTUgMjguNDgxTDI1LjE4MyAyNy43OUMyNS4xODMgMjcuNzkgMjUuMTgzIDI3Ljc5IDI1LjE4MjkgMjcuNzlDMjUuMTgyOSAyNy43ODk5IDI1LjE4MjkgMjcuNzg5OSAyNS4xODI5IDI3Ljc4OTlDMjUuMTQ2MiAyNy43NjY5IDI1LjEyNSAyNy43Mjk3IDI1LjEyNSAyNy42ODRWMjIuNjI1VjE3LjU2N0MyNS4xMjUgMTcuNTIyNyAyNS4xNDYgMTcuNDg0NCAyNS4xODM2IDE3LjQ2MDZDMjUuMTgzOCAxNy40NjA1IDI1LjE4MzkgMTcuNDYwNCAyNS4xODQgMTcuNDYwM0wyNi4yODk1IDE2Ljc3QzI2LjI4OTYgMTYuNzY5OSAyNi4yODk4IDE2Ljc2OTggMjYuMjg5OSAxNi43Njk3QzI2LjMxMTkgMTYuNzU2MiAyNi4zMzQ2IDE2Ljc1IDI2LjM1OCAxNi43NUgyOFoiIGZpbGw9ImJsYWNrIiBzdHJva2U9IiNGQkZCRkUiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPHBhdGggZD0iTTI0LjYyNSAxNy41NjdDMjQuNjI1IDE3LjM1IDI0LjczNSAxNy4xNTIgMjQuOTE4IDE3LjAzN0wyNi4wMjYgMTYuMzQ1QzI2LjEyNiAxNi4yODMgMjYuMjQgMTYuMjUgMjYuMzU4IDE2LjI1SDI4VjE1SDI2LjM1OEMyNi4wMDYgMTUgMjUuNjYzIDE1LjA5OSAyNS4zNjQgMTUuMjg1TDI0LjI1NiAxNS45NzhDMjQuMTYxIDE2LjAzNyAyNC4wODEgMTYuMTEzIDI0IDE2LjE4N0MyMy45MTggMTYuMTEzIDIzLjgzOSAxNi4wMzcgMjMuNzQ0IDE1Ljk3OEwyMi42MzUgMTUuMjg1QzIyLjMzNiAxNS4wOTkgMjEuOTkzIDE1IDIxLjY0MiAxNUgyMFYxNi4yNUgyMS42NDJDMjEuNzU5IDE2LjI1IDIxLjg3NCAxNi4yODMgMjEuOTc0IDE2LjM0NUwyMy4wODIgMTcuMDM3QzIzLjI2NiAxNy4xNTIgMjMuMzc2IDE3LjM1IDIzLjM3NiAxNy41NjdWMjIuNjI1VjI3LjY4M0MyMy4zNzYgMjcuOSAyMy4yNjYgMjguMDk4IDIzLjA4MiAyOC4yMTNMMjEuOTczIDI4LjkwNUMyMS44NzMgMjguOTY3IDIxLjc1OSAyOSAyMS42NDEgMjlIMjBWMzAuMjVIMjEuNjQyQzIxLjk5NCAzMC4yNSAyMi4zMzcgMzAuMTUxIDIyLjYzNiAyOS45NjVMMjMuNzQ0IDI5LjI3M0MyMy44NCAyOS4yMTMgMjMuOTE5IDI5LjEzNyAyNCAyOS4wNjRDMjQuMDgxIDI5LjEzNyAyNC4xNjEgMjkuMjEzIDI0LjI1NiAyOS4yNzNMMjUuMzY1IDI5Ljk2NkMyNS42NjQgMzAuMTUyIDI2LjAwNyAzMC4yNTEgMjYuMzU5IDMwLjI1MUgyOFYyOS4wMDFIMjYuMzU4QzI2LjI0MSAyOS4wMDEgMjYuMTI2IDI4Ljk2OCAyNi4wMjYgMjguOTA2TDI0LjkxOCAyOC4yMTRDMjQuNzM0IDI4LjA5OSAyNC42MjUgMjcuOTAxIDI0LjYyNSAyNy42ODRWMjIuNjI1VjE3LjU2N1oiIGZpbGw9ImJsYWNrIi8+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMTIuMiAyLjU5QzEyLjI4IDIuNTEgMTIuNDMgMi41IDEyLjQzIDIuNUMxMi40OCAyLjUgMTIuNTggMi41MiAxMi42NiAyLjZMMTQuNDUgNC4zOUMxNC41OCA0LjUyIDE0LjU4IDQuNzIgMTQuNDUgNC44NUwxMS43NzEzIDcuNTI4NzJMOS41MTYyOCA1LjI3MzcyTDEyLjIgMi41OVpNMTMuMjY1OCA0LjYyTDExLjc3MTMgNi4xMTQ1TDEwLjkzMDUgNS4yNzM3MkwxMi40MjUgMy43NzkyMUwxMy4yNjU4IDQuNjJaIiBmaWxsPSIjRkJGQkZFIi8+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNNS45OCA4LjgyTDguMjMgMTEuMDdMMTAuNzEwNiA4LjU4OTM4TDguNDU1NjIgNi4zMzQzOEw1Ljk4IDguODFWOC44MlpNOC4yMyA5LjY1NTc5TDkuMjk2NDEgOC41ODkzOEw4LjQ1NTYyIDcuNzQ4NTlMNy4zODkyMSA4LjgxNUw4LjIzIDkuNjU1NzlaIiBmaWxsPSIjRkJGQkZFIi8+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMTAuMTUyNiAxMi42ODE2TDE2LjIxMjUgNi42MjE3QzE2Ljc1NzYgNi4wODkxOSAxNy4wNSA1LjM3MDcgMTcuMDUgNC42MkMxNy4wNSAzLjg2OTMxIDE2Ljc1NzYgMy4xNTA4NCAxNi4yMTI2IDIuNjE4MzRMMTQuNDMxNyAwLjgzNzQ3NEMxMy44OTkyIDAuMjkyNDIgMTMuMTgwNyAwIDEyLjQzIDBDMTEuNjY0MyAwIDEwLjk1MjkgMC4zMTI5MjkgMTAuNDMyOSAwLjgzMjg5M0wzLjY4Mjg5IDcuNTgyODlDMy4wNDEyNyA4LjIyNDUyIDMuMDA0NTkgOS4yNTA3NSAzLjU3Mjg4IDkuOTM2MzRMMS4yOTE4NyAxMi4yMjM5QzEuMDkxODYgMTIuNDI0NSAwLjk5MDI2MyAxMi42OTU3IDEuMDAwNyAxMi45Njg1TDEgMTRDMC40NDc3MTUgMTQgMCAxNC40NDc3IDAgMTVWMTdDMCAxNy41NTIzIDAuNDQ3NzE1IDE4IDEgMThIMTZDMTYuNTUyMyAxOCAxNyAxNy41NTIzIDE3IDE3VjE1QzE3IDE0LjQ0NzcgMTYuNTUyMyAxNCAxNiAxNEgxMC4yMzI1QzkuODM1OTQgMTQgOS4zOTk1MyAxMy40MzQ3IDEwLjE1MjYgMTIuNjgxNlpNNC4zOSA5LjM1TDQuOTgwNyA5Ljk0MDdMMi4zOTc2MiAxMi41MzEySDYuNjM4NzdMNy4xMDUwMSAxMi4wNjVMNy41NzEyNSAxMi41MzEySDguODg4NzVMMTUuNTEgNS45MUMxNS44NiA1LjU3IDE2LjA1IDUuMTEgMTYuMDUgNC42MkMxNi4wNSA0LjEzIDE1Ljg2IDMuNjcgMTUuNTEgMy4zM0wxMy43MiAxLjU0QzEzLjM4IDEuMTkgMTIuOTIgMSAxMi40MyAxQzExLjk0IDEgMTEuNDggMS4yIDExLjE0IDEuNTRMNC4zOSA4LjI5QzQuMSA4LjU4IDQuMSA5LjA2IDQuMzkgOS4zNVpNMTYgMTdWMTVIMVYxN0gxNloiIGZpbGw9IiNGQkZCRkUiLz4KPHBhdGggZD0iTTE1LjE2MTYgNS41NTEzNkwxNS4xNjE2IDUuNTUxMzJMMTUuMTU2NCA1LjU1NjQ1TDguNDA2NDUgMTIuMzA2NEM4LjM1OTE1IDEyLjM1MzcgOC4yOTU4OSAxMi4zOCA4LjIzIDEyLjM4QzguMTY0MTEgMTIuMzggOC4xMDA4NSAxMi4zNTM3IDguMDUzNTUgMTIuMzA2NEw3LjQ1ODU3IDExLjcxMTVMNy4xMDUwMSAxMS4zNTc5TDYuNzUxNDYgMTEuNzExNUw2LjAzMjg5IDEyLjQzSDMuMjA0NjVMNS4zMzQ3NyAxMC4yOTM3TDUuNjg3MyA5Ljk0MDE5TDUuMzM0MjYgOS41ODcxNUw0Ljc0MzU1IDguOTk2NDVDNC42NDg4MiA4LjkwMTcxIDQuNjQ4ODIgOC43MzgyOSA0Ljc0MzU1IDguNjQzNTVMMTEuNDkzNiAxLjg5MzU1QzExLjc0MzYgMS42NDM1NCAxMi4wNzc5IDEuNSAxMi40MyAxLjVDMTIuNzg4MyAxLjUgMTMuMTE3OSAxLjYzNzc2IDEzLjM2MTQgMS44ODgzOUwxMy4zNjEzIDEuODg4NDNMMTMuMzY2NCAxLjg5MzU1TDE1LjE1NjQgMy42ODM1NUwxNS4xNTY0IDMuNjgzNTlMMTUuMTYxNiAzLjY4ODY0QzE1LjQxMjIgMy45MzIxMSAxNS41NSA0LjI2MTY2IDE1LjU1IDQuNjJDMTUuNTUgNC45NzgzNCAxNS40MTIyIDUuMzA3ODkgMTUuMTYxNiA1LjU1MTM2Wk01LjQ4IDguODJWOS4wMjcxMUw1LjYyNjQ1IDkuMTczNTVMNy44NzY0NSAxMS40MjM2TDguMjMgMTEuNzc3MUw4LjU4MzU1IDExLjQyMzZMMTEuMDY0MiA4Ljk0MjkzTDExLjQxNzcgOC41ODkzOEwxMS4wNjQyIDguMjM1ODJMOC44MDkxOCA1Ljk4MDgyTDguNDU1NjIgNS42MjcyN0w4LjEwMjA3IDUuOTgwODJMNS42MjY0NSA4LjQ1NjQ1TDUuNDggOC42MDI4OVY4LjgxVjguODJaTTExLjQxNzcgNy44ODIyN0wxMS43NzEzIDguMjM1ODJMMTIuMTI0OCA3Ljg4MjI3TDE0LjgwMzYgNS4yMDM1NUMxNS4xMjg4IDQuODc4MjkgMTUuMTI4OCA0LjM2MTcxIDE0LjgwMzYgNC4wMzY0NUwxMy4wMTM2IDIuMjQ2NDVDMTIuODE4NiAyLjA1MTQ2IDEyLjU3OTIgMiAxMi40MyAySDEyLjQxMzRMMTIuMzk2NyAyLjAwMTExTDEyLjQzIDIuNUMxMi4zOTY3IDIuMDAxMTEgMTIuMzk2NiAyLjAwMTEyIDEyLjM5NjUgMi4wMDExMkwxMi4zOTYzIDIuMDAxMTRMMTIuMzk1NyAyLjAwMTE3TDEyLjM5NDcgMi4wMDEyNUwxMi4zOTI0IDIuMDAxNDJMMTIuMzg3IDIuMDAxODRMMTIuMzczMiAyLjAwMzExQzEyLjM2MjggMi4wMDQxNiAxMi4zNDk4IDIuMDA1NjcgMTIuMzM0NiAyLjAwNzg0QzEyLjMwNDkgMi4wMTIwOCAxMi4yNjQyIDIuMDE5MjUgMTIuMjE3OCAyLjAzMTQ2QzEyLjEzOTYgMi4wNTIwMiAxMS45Nzk3IDIuMTAzMTcgMTEuODQ2NCAyLjIzNjQ1TDkuMTYyNzMgNC45MjAxNkw4LjgwOTE4IDUuMjczNzJMOS4xNjI3MyA1LjYyNzI3TDExLjQxNzcgNy44ODIyN1pNMS41IDE2LjVWMTUuNUgxNS41VjE2LjVIMS41WiIgc3Ryb2tlPSIjMTUxNDFBIi8+Cjwvc3ZnPgo=) 24 24, text;--editorFreeHighlight-editing-cursor:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTgiIGhlaWdodD0iMTkiIHZpZXdCb3g9IjAgMCAxOCAxOSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMi4yIDMuMDlDMTIuMjggMy4wMSAxMi40MyAzIDEyLjQzIDNDMTIuNDggMyAxMi41OCAzLjAyIDEyLjY2IDMuMUwxNC40NSA0Ljg5QzE0LjU4IDUuMDIgMTQuNTggNS4yMiAxNC40NSA1LjM1TDExLjc3MTMgOC4wMjg3Mkw5LjUxNjI4IDUuNzczNzJMMTIuMiAzLjA5Wk0xMy4yNjU4IDUuMTJMMTEuNzcxMyA2LjYxNDVMMTAuOTMwNSA1Ljc3MzcyTDEyLjQyNSA0LjI3OTIxTDEzLjI2NTggNS4xMloiIGZpbGw9IiNGQkZCRkUiLz4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik01Ljk4IDkuMzJMOC4yMyAxMS41N0wxMC43MTA2IDkuMDg5MzhMOC40NTU2MiA2LjgzNDM4TDUuOTggOS4zMVY5LjMyWk04LjIzIDEwLjE1NThMOS4yOTY0MSA5LjA4OTM4TDguNDU1NjIgOC4yNDg1OUw3LjM4OTIxIDkuMzE1TDguMjMgMTAuMTU1OFoiIGZpbGw9IiNGQkZCRkUiLz4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMC4xNTI2IDEzLjE4MTZMMTYuMjEyNSA3LjEyMTdDMTYuNzU3NiA2LjU4OTE5IDE3LjA1IDUuODcwNyAxNy4wNSA1LjEyQzE3LjA1IDQuMzY5MzEgMTYuNzU3NiAzLjY1MDg0IDE2LjIxMjYgMy4xMTgzNEwxNC40MzE3IDEuMzM3NDdDMTMuODk5MiAwLjc5MjQyIDEzLjE4MDcgMC41IDEyLjQzIDAuNUMxMS42NjQzIDAuNSAxMC45NTI5IDAuODEyOTI5IDEwLjQzMjkgMS4zMzI4OUwzLjY4Mjg5IDguMDgyODlDMy4wNDEyNyA4LjcyNDUyIDMuMDA0NTkgOS43NTA3NSAzLjU3Mjg4IDEwLjQzNjNMMS4yOTE4NyAxMi43MjM5QzEuMDkxODYgMTIuOTI0NSAwLjk5MDI2MyAxMy4xOTU3IDEuMDAwNyAxMy40Njg1TDEgMTQuNUMwLjQ0NzcxNSAxNC41IDAgMTQuOTQ3NyAwIDE1LjVWMTcuNUMwIDE4LjA1MjMgMC40NDc3MTUgMTguNSAxIDE4LjVIMTZDMTYuNTUyMyAxOC41IDE3IDE4LjA1MjMgMTcgMTcuNVYxNS41QzE3IDE0Ljk0NzcgMTYuNTUyMyAxNC41IDE2IDE0LjVIMTAuMjMyNUM5LjgzNTk0IDE0LjUgOS4zOTk1MyAxMy45MzQ3IDEwLjE1MjYgMTMuMTgxNlpNNC4zOSA5Ljg1TDQuOTgwNyAxMC40NDA3TDIuMzk3NjIgMTMuMDMxMkg2LjYzODc3TDcuMTA1MDEgMTIuNTY1TDcuNTcxMjUgMTMuMDMxMkg4Ljg4ODc1TDE1LjUxIDYuNDFDMTUuODYgNi4wNyAxNi4wNSA1LjYxIDE2LjA1IDUuMTJDMTYuMDUgNC42MyAxNS44NiA0LjE3IDE1LjUxIDMuODNMMTMuNzIgMi4wNEMxMy4zOCAxLjY5IDEyLjkyIDEuNSAxMi40MyAxLjVDMTEuOTQgMS41IDExLjQ4IDEuNyAxMS4xNCAyLjA0TDQuMzkgOC43OUM0LjEgOS4wOCA0LjEgOS41NiA0LjM5IDkuODVaTTE2IDE3LjVWMTUuNUgxVjE3LjVIMTZaIiBmaWxsPSIjRkJGQkZFIi8+CjxwYXRoIGQ9Ik0xNS4xNjE2IDYuMDUxMzZMMTUuMTYxNiA2LjA1MTMyTDE1LjE1NjQgNi4wNTY0NUw4LjQwNjQ1IDEyLjgwNjRDOC4zNTkxNSAxMi44NTM3IDguMjk1ODkgMTIuODggOC4yMyAxMi44OEM4LjE2NDExIDEyLjg4IDguMTAwODUgMTIuODUzNyA4LjA1MzU1IDEyLjgwNjRMNy40NTg1NyAxMi4yMTE1TDcuMTA1MDEgMTEuODU3OUw2Ljc1MTQ2IDEyLjIxMTVMNi4wMzI4OSAxMi45M0gzLjIwNDY1TDUuMzM0NzcgMTAuNzkzN0w1LjY4NzMgMTAuNDQwMkw1LjMzNDI2IDEwLjA4NzFMNC43NDM1NSA5LjQ5NjQ1QzQuNjQ4ODIgOS40MDE3MSA0LjY0ODgyIDkuMjM4MjkgNC43NDM1NSA5LjE0MzU1TDExLjQ5MzYgMi4zOTM1NUMxMS43NDM2IDIuMTQzNTQgMTIuMDc3OSAyIDEyLjQzIDJDMTIuNzg4MyAyIDEzLjExNzkgMi4xMzc3NiAxMy4zNjE0IDIuMzg4MzlMMTMuMzYxMyAyLjM4ODQzTDEzLjM2NjQgMi4zOTM1NUwxNS4xNTY0IDQuMTgzNTVMMTUuMTU2NCA0LjE4MzU5TDE1LjE2MTYgNC4xODg2NEMxNS40MTIyIDQuNDMyMTEgMTUuNTUgNC43NjE2NiAxNS41NSA1LjEyQzE1LjU1IDUuNDc4MzQgMTUuNDEyMiA1LjgwNzg5IDE1LjE2MTYgNi4wNTEzNlpNNy44NzY0NSAxMS45MjM2TDguMjMgMTIuMjc3MUw4LjU4MzU1IDExLjkyMzZMMTEuMDY0MiA5LjQ0MjkzTDExLjQxNzcgOS4wODkzOEwxMS4wNjQyIDguNzM1ODJMOC44MDkxOCA2LjQ4MDgyTDguNDU1NjIgNi4xMjcyN0w4LjEwMjA3IDYuNDgwODJMNS42MjY0NSA4Ljk1NjQ1TDUuNDggOS4xMDI4OVY5LjMxVjkuMzJWOS41MjcxMUw1LjYyNjQ1IDkuNjczNTVMNy44NzY0NSAxMS45MjM2Wk0xMS40MTc3IDguMzgyMjdMMTEuNzcxMyA4LjczNTgyTDEyLjEyNDggOC4zODIyN0wxNC44MDM2IDUuNzAzNTVDMTUuMTI4OCA1LjM3ODI5IDE1LjEyODggNC44NjE3MSAxNC44MDM2IDQuNTM2NDVMMTMuMDEzNiAyLjc0NjQ1QzEyLjgxODYgMi41NTE0NiAxMi41NzkyIDIuNSAxMi40MyAyLjVIMTIuNDEzNEwxMi4zOTY3IDIuNTAxMTFMMTIuNDMgM0MxMi4zOTY3IDIuNTAxMTEgMTIuMzk2NiAyLjUwMTEyIDEyLjM5NjUgMi41MDExMkwxMi4zOTYzIDIuNTAxMTRMMTIuMzk1NyAyLjUwMTE3TDEyLjM5NDcgMi41MDEyNUwxMi4zOTI0IDIuNTAxNDJMMTIuMzg3IDIuNTAxODRMMTIuMzczMiAyLjUwMzExQzEyLjM2MjggMi41MDQxNiAxMi4zNDk4IDIuNTA1NjcgMTIuMzM0NiAyLjUwNzg0QzEyLjMwNDkgMi41MTIwOCAxMi4yNjQyIDIuNTE5MjUgMTIuMjE3OCAyLjUzMTQ2QzEyLjEzOTYgMi41NTIwMiAxMS45Nzk3IDIuNjAzMTcgMTEuODQ2NCAyLjczNjQ1TDkuMTYyNzMgNS40MjAxNkw4LjgwOTE4IDUuNzczNzJMOS4xNjI3MyA2LjEyNzI3TDExLjQxNzcgOC4zODIyN1pNMS41IDE2SDE1LjVWMTdIMS41VjE2WiIgc3Ryb2tlPSIjMTUxNDFBIi8+Cjwvc3ZnPgo=) 1 18, pointer}.visuallyHidden{position:absolute;top:0;left:0;border:0;margin:0;padding:0;width:0;height:0;overflow:hidden;white-space:nowrap;font-size:0}.textLayer.highlighting{cursor:var(--editorFreeHighlight-editing-cursor)}.textLayer.highlighting:not(.free) span{cursor:var(--editorHighlight-editing-cursor)}.textLayer.highlighting.free span{cursor:var(--editorFreeHighlight-editing-cursor)}@media (min-resolution: 1.1dppx){:root{--editorFreeText-editing-cursor:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTEyIDIuNzVIMTIuNVYyLjI1VjFWMC41SDEySDEwLjM1OEM5LjkxMTY1IDAuNSA5LjQ3NzMxIDAuNjI1NjYxIDkuMDk5ODkgMC44NjA0NDJMOS4wOTg4NiAwLjg2MTA4N0w4IDEuNTQ4MzdMNi44OTk5NyAwLjg2MDk3OUw2Ljg5OTExIDAuODYwNDQzQzYuNTIxOCAwLjYyNTczNCA2LjA4NzQ4IDAuNSA1LjY0MiAwLjVINEgzLjVWMVYyLjI1VjIuNzVINEg1LjY0MkM1LjY2NDc4IDIuNzUgNS42ODg1IDIuNzU2NDEgNS43MTAwOCAyLjc2OTY4QzUuNzEwMjMgMi43Njk3NyA1LjcxMDM4IDIuNzY5ODYgNS43MTA1MyAyLjc2OTk1TDYuODE3IDMuNDYxQzYuODE3MDQgMy40NjEwMyA2LjgxNzA5IDMuNDYxMDUgNi44MTcxMyAzLjQ2MTA4QzYuODE3MTMgMy40NjEwOCA2LjgxNzEzIDMuNDYxMDggNi44MTcxNCAzLjQ2MTA5QzYuODU1MiAzLjQ4NDk0IDYuODc2IDMuNTIyODUgNi44NzYgMy41NjdWOFYxMi40MzNDNi44NzYgMTIuNDc3MSA2Ljg1NTIzIDEyLjUxNSA2LjgxNzIyIDEyLjUzODlDNi44MTcxNSAxMi41Mzg5IDYuODE3MDcgMTIuNTM5IDYuODE3IDEyLjUzOUw1LjcwOTUzIDEzLjIzQzUuNzA5NDEgMTMuMjMwMSA1LjcwOTI5IDEzLjIzMDIgNS43MDkxNyAxMy4yMzAzQzUuNjg3MjMgMTMuMjQzOCA1LjY2NDQgMTMuMjUgNS42NDEgMTMuMjVINEgzLjVWMTMuNzVWMTVWMTUuNUg0SDUuNjQyQzYuMDg4MzUgMTUuNSA2LjUyMjY5IDE1LjM3NDMgNi45MDAxMSAxNS4xMzk2TDYuOTAwODYgMTUuMTM5MUw4IDE0LjQ1MjZMOS4xMDAwMyAxNS4xNEw5LjEwMDg5IDE1LjE0MDZDOS40NzgzMSAxNS4zNzUzIDkuOTEyNjUgMTUuNTAxIDEwLjM1OSAxNS41MDFIMTJIMTIuNVYxNS4wMDFWMTMuNzUxVjEzLjI1MUgxMkgxMC4zNThDMTAuMzM1MiAxMy4yNTEgMTAuMzExNSAxMy4yNDQ2IDEwLjI4OTkgMTMuMjMxM0MxMC4yODk3IDEzLjIzMTIgMTAuMjg5NiAxMy4yMzExIDEwLjI4OTUgMTMuMjMxTDkuMTgzIDEyLjU0QzkuMTgyOTggMTIuNTQgOS4xODI5NSAxMi41NCA5LjE4MjkzIDEyLjU0QzkuMTgyOTEgMTIuNTM5OSA5LjE4Mjg4IDEyLjUzOTkgOS4xODI4NiAxMi41Mzk5QzkuMTQ2MTUgMTIuNTE2OSA5LjEyNSAxMi40Nzk3IDkuMTI1IDEyLjQzNFY4VjMuNTY3QzkuMTI1IDMuNTIyNjYgOS4xNDYwMyAzLjQ4NDQxIDkuMTgzNjQgMy40NjA2QzkuMTgzNzcgMy40NjA1MiA5LjE4MzkgMy40NjA0MyA5LjE4NDA0IDMuNDYwMzVMMTAuMjg5NSAyLjc2OTk1QzEwLjI4OTYgMi43Njk4NSAxMC4yODk4IDIuNzY5NzUgMTAuMjg5OSAyLjc2OTY2QzEwLjMxMTkgMi43NTYxOSAxMC4zMzQ2IDIuNzUgMTAuMzU4IDIuNzVIMTJaIiBmaWxsPSJibGFjayIgc3Ryb2tlPSJ3aGl0ZSIvPgo8L3N2Zz4K) 0 16, text}}@media screen and (forced-colors: active){:root{--outline-color:CanvasText;--outline-around-color:ButtonFace;--resizer-bg-color:ButtonText;--hover-outline-color:Highlight;--hover-outline-around-color:SelectedItemText}}[data-editor-rotation="90"]{transform:rotate(90deg)}[data-editor-rotation="180"]{transform:rotate(180deg)}[data-editor-rotation="270"]{transform:rotate(270deg)}.annotationEditorLayer{background:transparent;position:absolute;inset:0;font-size:calc(100px * var(--scale-factor));transform-origin:0 0;cursor:auto}.annotationEditorLayer.waiting{content:"";cursor:wait;position:absolute;inset:0;width:100%;height:100%}.annotationEditorLayer.disabled{pointer-events:none}.annotationEditorLayer.freetextEditing{cursor:var(--editorFreeText-editing-cursor)}.annotationEditorLayer.inkEditing{cursor:var(--editorInk-editing-cursor)}.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor){position:absolute;background:transparent;z-index:1;transform-origin:0 0;cursor:auto;max-width:100%;max-height:100%;border:var(--unfocus-outline)}.annotationEditorLayer .draggable.selectedEditor:is(.freeTextEditor,.inkEditor,.stampEditor){cursor:move}.annotationEditorLayer .moving:is(.freeTextEditor,.inkEditor,.stampEditor){touch-action:none}.annotationEditorLayer .selectedEditor:is(.freeTextEditor,.inkEditor,.stampEditor){border:var(--focus-outline);outline:var(--focus-outline-around)}.annotationEditorLayer .selectedEditor:is(.freeTextEditor,.inkEditor,.stampEditor):before{content:"";position:absolute;inset:0;border:var(--focus-outline-around);pointer-events:none}.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor):hover:not(.selectedEditor){border:var(--hover-outline);outline:var(--hover-outline-around)}.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor):hover:not(.selectedEditor):before{content:"";position:absolute;inset:0;border:var(--focus-outline-around)}:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar{--editor-toolbar-delete-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIgogICAgICAgIGQ9Ik0xMSAzSDEzLjZDMTQgMyAxNC4zIDMuMyAxNC4zIDMuNkMxNC4zIDMuOSAxNCA0LjIgMTMuNyA0LjJIMTMuM1YxNEMxMy4zIDE1LjEgMTIuNCAxNiAxMS4zIDE2SDQuODAwMDVDMy43MDAwNSAxNiAyLjgwMDA1IDE1LjEgMi44MDAwNSAxNFY0LjJIMi40MDAwNUMyLjAwMDA1IDQuMiAxLjgwMDA1IDQgMS44MDAwNSAzLjZDMS44MDAwNSAzLjIgMi4wMDAwNSAzIDIuNDAwMDUgM0g1LjAwMDA1VjJDNS4wMDAwNSAwLjkgNS45MDAwNSAwIDcuMDAwMDUgMEg5LjAwMDA1QzEwLjEgMCAxMSAwLjkgMTEgMlYzWk02LjkwMDA1IDEuMkw2LjMwMDA1IDEuOFYzSDkuODAwMDVWMS44TDkuMjAwMDUgMS4ySDYuOTAwMDVaTTExLjQgMTQuN0wxMiAxNC4xVjQuMkg0LjAwMDA1VjE0LjFMNC42MDAwNSAxNC43SDExLjRaTTcuMDAwMDUgMTIuNEM3LjAwMDA1IDEyLjcgNi43MDAwNSAxMyA2LjQwMDA1IDEzQzYuMTAwMDUgMTMgNS44MDAwNSAxMi43IDUuODAwMDUgMTIuNFY3LjZDNS43MDAwNSA3LjMgNi4wMDAwNSA3IDYuNDAwMDUgN0M2LjgwMDA1IDcgNy4wMDAwNSA3LjMgNy4wMDAwNSA3LjZWMTIuNFpNMTAuMjAwMSAxMi40QzEwLjIwMDEgMTIuNyA5LjkwMDA2IDEzIDkuNjAwMDYgMTNDOS4zMDAwNiAxMyA5LjAwMDA2IDEyLjcgOS4wMDAwNiAxMi40VjcuNkM5LjAwMDA2IDcuMyA5LjMwMDA2IDcgOS42MDAwNiA3QzkuOTAwMDYgNyAxMC4yMDAxIDcuMyAxMC4yMDAxIDcuNlYxMi40WiIKICAgICAgICBmaWxsPSJibGFjayIgLz4KPC9zdmc+);--editor-toolbar-bg-color:#f0f0f4;--editor-toolbar-highlight-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTciIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNyAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnPgogICAgICA8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTcuMTA5MTggMTEuNjZDNy4yNDkxOCAxMS44IDcuNDM5MTggMTEuODggNy42MzkxOCAxMS44OEM3LjgzOTE4IDExLjg4IDguMDI5MTggMTEuOCA4LjE2OTE4IDExLjY2TDE0LjkxOTIgNC45MUMxNS4yNjkyIDQuNTcgMTUuNDU5MiA0LjExIDE1LjQ1OTIgMy42MkMxNS40NTkyIDMuMTMgMTUuMjY5MiAyLjY3IDE0LjkxOTIgMi4zM0wxMy4xMjkyIDAuNTRDMTIuNzg5MiAwLjE5IDEyLjMyOTIgMCAxMS44MzkyIDBDMTEuMzQ5MiAwIDEwLjg4OTIgMC4yIDEwLjU0OTIgMC41NEwzLjc5OTE4IDcuMjlDMy41MDkxOCA3LjU4IDMuNTA5MTggOC4wNiAzLjc5OTE4IDguMzVMNC4zODk4OCA4Ljk0MDdMMS40MDkxOCAxMS45M0g1LjY0OTE4TDYuNTE0MTkgMTEuMDY1TDcuMTA5MTggMTEuNjZaTTcuNjM5MTggMTAuMDdMNS4zODkxOCA3LjgyVjcuODFMNy44NjQ4IDUuMzM0MzhMMTAuMTE5OCA3LjU4OTM4TDcuNjM5MTggMTAuMDdaTTExLjE4MDUgNi41Mjg3MkwxMy44NTkyIDMuODVDMTMuOTg5MiAzLjcyIDEzLjk4OTIgMy41MiAxMy44NTkyIDMuMzlMMTIuMDY5MiAxLjZDMTEuOTg5MiAxLjUyIDExLjg4OTIgMS41IDExLjgzOTIgMS41QzExLjgzOTIgMS41IDExLjY4OTIgMS41MSAxMS42MDkyIDEuNTlMOC45MjU0NiA0LjI3MzcyTDExLjE4MDUgNi41Mjg3MloiIGZpbGw9IiMwMDAiLz4KICAgICAgPHBhdGggZD0iTTAuNDA5MTggMTRIMTUuNDA5MlYxNkgwLjQwOTE4VjE0WiIgZmlsbD0iIzAwMCIvPgogICAgPC9nPgogIDwvc3ZnPg==);--editor-toolbar-fg-color:#2e2e56;--editor-toolbar-border-color:#8f8f9d;--editor-toolbar-hover-border-color:var(--editor-toolbar-border-color);--editor-toolbar-hover-bg-color:#e0e0e6;--editor-toolbar-hover-fg-color:var(--editor-toolbar-fg-color);--editor-toolbar-hover-outline:none;--editor-toolbar-focus-outline-color:#0060df;--editor-toolbar-shadow:0 2px 6px 0 rgb(58 57 68 / .2);--editor-toolbar-vert-offset:6px;--editor-toolbar-height:28px;--editor-toolbar-padding:2px;display:flex;width:-moz-fit-content;width:fit-content;height:var(--editor-toolbar-height);flex-direction:column;justify-content:center;align-items:center;cursor:default;pointer-events:auto;box-sizing:content-box;padding:var(--editor-toolbar-padding);position:absolute;inset-inline-end:0;inset-block-start:calc(100% + var(--editor-toolbar-vert-offset));border-radius:6px;background-color:var(--editor-toolbar-bg-color);border:1px solid var(--editor-toolbar-border-color);box-shadow:var(--editor-toolbar-shadow)}@media (prefers-color-scheme: dark){:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar{--editor-toolbar-bg-color:#2b2a33;--editor-toolbar-fg-color:#fbfbfe;--editor-toolbar-hover-bg-color:#52525e;--editor-toolbar-focus-outline-color:#0df}}@media screen and (forced-colors: active){:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar{--editor-toolbar-bg-color:ButtonFace;--editor-toolbar-fg-color:ButtonText;--editor-toolbar-border-color:ButtonText;--editor-toolbar-hover-border-color:AccentColor;--editor-toolbar-hover-bg-color:ButtonFace;--editor-toolbar-hover-fg-color:AccentColor;--editor-toolbar-hover-outline:2px solid var(--editor-toolbar-hover-border-color);--editor-toolbar-focus-outline-color:ButtonBorder;--editor-toolbar-shadow:none}}:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar.hidden{display:none}:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar:has(:focus-visible){border-color:transparent}[dir=ltr] :is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar{transform-origin:100% 0}[dir=rtl] :is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar{transform-origin:0 0}:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar .buttons{display:flex;justify-content:center;align-items:center;gap:0;height:100%}:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar .buttons .divider{width:1px;height:calc(2 * var(--editor-toolbar-padding) + var(--editor-toolbar-height));background-color:var(--editor-toolbar-border-color);display:inline-block;margin-inline:2px}:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar .buttons .highlightButton{width:var(--editor-toolbar-height)}:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar .buttons .highlightButton:before{content:"";-webkit-mask-image:var(--editor-toolbar-highlight-image);mask-image:var(--editor-toolbar-highlight-image);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;display:inline-block;background-color:var(--editor-toolbar-fg-color);width:100%;height:100%}:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar .buttons .highlightButton:hover:before{background-color:var(--editor-toolbar-hover-fg-color)}:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar .buttons .delete{width:var(--editor-toolbar-height)}:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar .buttons .delete:before{content:"";-webkit-mask-image:var(--editor-toolbar-delete-image);mask-image:var(--editor-toolbar-delete-image);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;display:inline-block;background-color:var(--editor-toolbar-fg-color);width:100%;height:100%}:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar .buttons .delete:hover:before{background-color:var(--editor-toolbar-hover-fg-color)}:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar .buttons>*{height:var(--editor-toolbar-height)}:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar .buttons>:not(.divider){border:none;background-color:transparent;cursor:pointer}:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar .buttons>:not(.divider):hover{border-radius:2px;background-color:var(--editor-toolbar-hover-bg-color);color:var(--editor-toolbar-hover-fg-color);outline:var(--editor-toolbar-hover-outline);outline-offset:1px}:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar .buttons>:not(.divider):hover:active{outline:none}:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar .buttons>:not(.divider):focus-visible{border-radius:2px;outline:2px solid var(--editor-toolbar-focus-outline-color)}:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar .buttons .altText{--alt-text-add-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTMiIHZpZXdCb3g9IjAgMCAxMiAxMyIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgPHBhdGggZD0iTTUuMzc1IDcuNjI1VjExLjg3NUM1LjM3NSAxMi4wNDA4IDUuNDQwODUgMTIuMTk5NyA1LjU1ODA2IDEyLjMxNjlDNS42NzUyNyAxMi40MzQyIDUuODM0MjQgMTIuNSA2IDEyLjVDNi4xNjU3NiAxMi41IDYuMzI0NzMgMTIuNDM0MiA2LjQ0MTk0IDEyLjMxNjlDNi41NTkxNSAxMi4xOTk3IDYuNjI1IDEyLjA0MDggNi42MjUgMTEuODc1VjcuNjI1TDcuMTI1IDcuMTI1SDExLjM3NUMxMS41NDA4IDcuMTI1IDExLjY5OTcgNy4wNTkxNSAxMS44MTY5IDYuOTQxOTRDMTEuOTM0MiA2LjgyNDczIDEyIDYuNjY1NzYgMTIgNi41QzEyIDYuMzM0MjQgMTEuOTM0MiA2LjE3NTI3IDExLjgxNjkgNi4wNTgwNkMxMS42OTk3IDUuOTQwODUgMTEuNTQwOCA1Ljg3NSAxMS4zNzUgNS44NzVINy4xMjVMNi42MjUgNS4zNzVWMS4xMjVDNi42MjUgMC45NTkyNCA2LjU1OTE1IDAuODAwMjY5IDYuNDQxOTQgMC42ODMwNThDNi4zMjQ3MyAwLjU2NTg0OCA2LjE2NTc2IDAuNSA2IDAuNUM1LjgzNDI0IDAuNSA1LjY3NTI3IDAuNTY1ODQ4IDUuNTU4MDYgMC42ODMwNThDNS40NDA4NSAwLjgwMDI2OSA1LjM3NSAwLjk1OTI0IDUuMzc1IDEuMTI1VjUuMzc1TDQuODc1IDUuODc1SDAuNjI1QzAuNDU5MjQgNS44NzUgMC4zMDAyNjkgNS45NDA4NSAwLjE4MzA1OCA2LjA1ODA2QzAuMDY1ODQ4IDYuMTc1MjcgMCA2LjMzNDI0IDAgNi41QzAgNi42NjU3NiAwLjA2NTg0OCA2LjgyNDczIDAuMTgzMDU4IDYuOTQxOTRDMC4zMDAyNjkgNy4wNTkxNSAwLjQ1OTI0IDcuMTI1IDAuNjI1IDcuMTI1SDQuNzYyTDUuMzc1IDcuNjI1WiIgZmlsbD0iYmxhY2siLz4KPC9zdmc+IAo=);--alt-text-done-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTMiIHZpZXdCb3g9IjAgMCAxMiAxMyIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8cGF0aCBkPSJNNiAwLjVDNS4yMTIwNyAwLjUgNC40MzE4NSAwLjY1NTE5NSAzLjcwMzkgMC45NTY3MjNDMi45NzU5NSAxLjI1ODI1IDIuMzE0NTEgMS43MDAyMSAxLjc1NzM2IDIuMjU3MzZDMS4yMDAyMSAyLjgxNDUxIDAuNzU4MjUxIDMuNDc1OTUgMC40NTY3MjMgNC4yMDM5QzAuMTU1MTk1IDQuOTMxODUgMCA1LjcxMjA3IDAgNi41QzAgNy4yODc5MyAwLjE1NTE5NSA4LjA2ODE1IDAuNDU2NzIzIDguNzk2MUMwLjc1ODI1MSA5LjUyNDA1IDEuMjAwMjEgMTAuMTg1NSAxLjc1NzM2IDEwLjc0MjZDMi4zMTQ1MSAxMS4yOTk4IDIuOTc1OTUgMTEuNzQxNyAzLjcwMzkgMTIuMDQzM0M0LjQzMTg1IDEyLjM0NDggNS4yMTIwNyAxMi41IDYgMTIuNUM3LjU5MTMgMTIuNSA5LjExNzQyIDExLjg2NzkgMTAuMjQyNiAxMC43NDI2QzExLjM2NzkgOS42MTc0MiAxMiA4LjA5MTMgMTIgNi41QzEyIDQuOTA4NyAxMS4zNjc5IDMuMzgyNTggMTAuMjQyNiAyLjI1NzM2QzkuMTE3NDIgMS4xMzIxNCA3LjU5MTMgMC41IDYgMC41Wk01LjA2IDguOUwyLjk0NjQgNi43ODU2QzIuODUyNzMgNi42OTE3MSAyLjgwMDE4IDYuNTY0NDYgMi44MDAzMyA2LjQzMTgzQzIuODAwNDggNi4yOTkyMSAyLjg1MzMxIDYuMTcyMDcgMi45NDcyIDYuMDc4NEMzLjA0MTA5IDUuOTg0NzMgMy4xNjgzNCA1LjkzMjE4IDMuMzAwOTcgNS45MzIzM0MzLjQzMzU5IDUuOTMyNDggMy41NjA3MyA1Ljk4NTMxIDMuNjU0NCA2LjA3OTJMNS4zMTEyIDcuNzM2OEw4LjM0NjQgNC43MDA4QzguNDQxMDkgNC42MTA5IDguNTY3MTUgNC41NjE1MyA4LjY5NzcxIDQuNTYzMjJDOC44MjgyNyA0LjU2NDkyIDguOTUzMDEgNC42MTc1NCA5LjA0NTM0IDQuNzA5ODZDOS4xMzc2NiA0LjgwMjE5IDkuMTkwMjggNC45MjY5MyA5LjE5MTk4IDUuMDU3NDlDOS4xOTM2NyA1LjE4ODA1IDkuMTQ0MyA1LjMxNDExIDkuMDU0NCA1LjQwODhMNS41NjI0IDguOUg1LjA2WiIgZmlsbD0iI0ZCRkJGRSIvPgo8L3N2Zz4gCg==);display:flex;align-items:center;justify-content:center;width:-moz-max-content;width:max-content;padding-inline:8px;pointer-events:all;font:menu;font-weight:590;font-size:12px;color:var(--editor-toolbar-fg-color)}:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar .buttons .altText:disabled{pointer-events:none}:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar .buttons .altText:before{content:"";-webkit-mask-image:var(--alt-text-add-image);mask-image:var(--alt-text-add-image);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;display:inline-block;width:12px;height:13px;background-color:var(--editor-toolbar-fg-color);margin-inline-end:4px}:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar .buttons .altText:hover:before{background-color:var(--editor-toolbar-hover-fg-color)}:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar .buttons .altText.done:before{-webkit-mask-image:var(--alt-text-done-image);mask-image:var(--alt-text-done-image)}:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar .buttons .altText .tooltip{display:none}:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar .buttons .altText .tooltip.show{--alt-text-tooltip-bg:#f0f0f4;--alt-text-tooltip-fg:#15141a;--alt-text-tooltip-border:#8f8f9d;--alt-text-tooltip-shadow:0px 2px 6px 0px rgb(58 57 68 / .2);display:inline-flex;flex-direction:column;align-items:center;justify-content:center;position:absolute;top:calc(100% + 2px);inset-inline-start:0;padding-block:2px 3px;padding-inline:3px;max-width:300px;width:-moz-max-content;width:max-content;height:auto;font-size:12px;border:.5px solid var(--alt-text-tooltip-border);background:var(--alt-text-tooltip-bg);box-shadow:var(--alt-text-tooltip-shadow);color:var(--alt-text-tooltip-fg);pointer-events:none}@media (prefers-color-scheme: dark){:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar .buttons .altText .tooltip.show{--alt-text-tooltip-bg:#1c1b22;--alt-text-tooltip-fg:#fbfbfe;--alt-text-tooltip-shadow:0px 2px 6px 0px #15141a}}@media screen and (forced-colors: active){:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor),.textLayer) .editToolbar .buttons .altText .tooltip.show{--alt-text-tooltip-bg:Canvas;--alt-text-tooltip-fg:CanvasText;--alt-text-tooltip-border:CanvasText;--alt-text-tooltip-shadow:none}}.annotationEditorLayer .freeTextEditor{padding:calc(var(--freetext-padding) * var(--scale-factor));width:auto;height:auto;touch-action:none}.annotationEditorLayer .freeTextEditor .internal{background:transparent;border:none;inset:0;overflow:visible;white-space:nowrap;font:10px sans-serif;line-height:var(--freetext-line-height);-webkit-user-select:none;-moz-user-select:none;user-select:none}.annotationEditorLayer .freeTextEditor .overlay{position:absolute;display:none;background:transparent;inset:0;width:100%;height:100%}.annotationEditorLayer freeTextEditor .overlay.enabled{display:block}.annotationEditorLayer .freeTextEditor .internal:empty:before{content:attr(default-content);color:gray}.annotationEditorLayer .freeTextEditor .internal:focus{outline:none;-webkit-user-select:auto;-moz-user-select:auto;user-select:auto}.annotationEditorLayer .inkEditor{width:100%;height:100%}.annotationEditorLayer .inkEditor.editing{cursor:inherit}.annotationEditorLayer .inkEditor .inkEditorCanvas{position:absolute;inset:0;width:100%;height:100%;touch-action:none}.annotationEditorLayer .stampEditor{width:auto;height:auto}.annotationEditorLayer .stampEditor canvas{width:100%;height:100%}.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor)>.resizers{position:absolute;inset:0}.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor)>.resizers.hidden{display:none}.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor)>.resizers>.resizer{width:var(--resizer-size);height:var(--resizer-size);background:content-box var(--resizer-bg-color);border:var(--focus-outline-around);border-radius:2px;position:absolute}.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor)>.resizers>.resizer.topLeft{top:var(--resizer-shift);left:var(--resizer-shift)}.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor)>.resizers>.resizer.topMiddle{top:var(--resizer-shift);left:calc(50% + var(--resizer-shift))}.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor)>.resizers>.resizer.topRight{top:var(--resizer-shift);right:var(--resizer-shift)}.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor)>.resizers>.resizer.middleRight{top:calc(50% + var(--resizer-shift));right:var(--resizer-shift)}.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor)>.resizers>.resizer.bottomRight{bottom:var(--resizer-shift);right:var(--resizer-shift)}.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor)>.resizers>.resizer.bottomMiddle{bottom:var(--resizer-shift);left:calc(50% + var(--resizer-shift))}.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor)>.resizers>.resizer.bottomLeft{bottom:var(--resizer-shift);left:var(--resizer-shift)}.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor)>.resizers>.resizer.middleLeft{top:calc(50% + var(--resizer-shift));left:var(--resizer-shift)}.annotationEditorLayer[data-main-rotation="0"] :is([data-editor-rotation="0"],[data-editor-rotation="180"])>.resizers>.resizer.topLeft,.annotationEditorLayer[data-main-rotation="90"] :is([data-editor-rotation="270"],[data-editor-rotation="90"])>.resizers>.resizer.topLeft,.annotationEditorLayer[data-main-rotation="180"] :is([data-editor-rotation="180"],[data-editor-rotation="0"])>.resizers>.resizer.topLeft,.annotationEditorLayer[data-main-rotation="270"] :is([data-editor-rotation="90"],[data-editor-rotation="270"])>.resizers>.resizer.topLeft,.annotationEditorLayer[data-main-rotation="0"] :is([data-editor-rotation="0"],[data-editor-rotation="180"])>.resizers>.resizer.bottomRight,.annotationEditorLayer[data-main-rotation="90"] :is([data-editor-rotation="270"],[data-editor-rotation="90"])>.resizers>.resizer.bottomRight,.annotationEditorLayer[data-main-rotation="180"] :is([data-editor-rotation="180"],[data-editor-rotation="0"])>.resizers>.resizer.bottomRight,.annotationEditorLayer[data-main-rotation="270"] :is([data-editor-rotation="90"],[data-editor-rotation="270"])>.resizers>.resizer.bottomRight{cursor:nwse-resize}.annotationEditorLayer[data-main-rotation="0"] :is([data-editor-rotation="0"],[data-editor-rotation="180"])>.resizers>.resizer.topMiddle,.annotationEditorLayer[data-main-rotation="90"] :is([data-editor-rotation="270"],[data-editor-rotation="90"])>.resizers>.resizer.topMiddle,.annotationEditorLayer[data-main-rotation="180"] :is([data-editor-rotation="180"],[data-editor-rotation="0"])>.resizers>.resizer.topMiddle,.annotationEditorLayer[data-main-rotation="270"] :is([data-editor-rotation="90"],[data-editor-rotation="270"])>.resizers>.resizer.topMiddle,.annotationEditorLayer[data-main-rotation="0"] :is([data-editor-rotation="0"],[data-editor-rotation="180"])>.resizers>.resizer.bottomMiddle,.annotationEditorLayer[data-main-rotation="90"] :is([data-editor-rotation="270"],[data-editor-rotation="90"])>.resizers>.resizer.bottomMiddle,.annotationEditorLayer[data-main-rotation="180"] :is([data-editor-rotation="180"],[data-editor-rotation="0"])>.resizers>.resizer.bottomMiddle,.annotationEditorLayer[data-main-rotation="270"] :is([data-editor-rotation="90"],[data-editor-rotation="270"])>.resizers>.resizer.bottomMiddle{cursor:ns-resize}.annotationEditorLayer[data-main-rotation="0"] :is([data-editor-rotation="0"],[data-editor-rotation="180"])>.resizers>.resizer.topRight,.annotationEditorLayer[data-main-rotation="90"] :is([data-editor-rotation="270"],[data-editor-rotation="90"])>.resizers>.resizer.topRight,.annotationEditorLayer[data-main-rotation="180"] :is([data-editor-rotation="180"],[data-editor-rotation="0"])>.resizers>.resizer.topRight,.annotationEditorLayer[data-main-rotation="270"] :is([data-editor-rotation="90"],[data-editor-rotation="270"])>.resizers>.resizer.topRight,.annotationEditorLayer[data-main-rotation="0"] :is([data-editor-rotation="0"],[data-editor-rotation="180"])>.resizers>.resizer.bottomLeft,.annotationEditorLayer[data-main-rotation="90"] :is([data-editor-rotation="270"],[data-editor-rotation="90"])>.resizers>.resizer.bottomLeft,.annotationEditorLayer[data-main-rotation="180"] :is([data-editor-rotation="180"],[data-editor-rotation="0"])>.resizers>.resizer.bottomLeft,.annotationEditorLayer[data-main-rotation="270"] :is([data-editor-rotation="90"],[data-editor-rotation="270"])>.resizers>.resizer.bottomLeft{cursor:nesw-resize}.annotationEditorLayer[data-main-rotation="0"] :is([data-editor-rotation="0"],[data-editor-rotation="180"])>.resizers>.resizer.middleRight,.annotationEditorLayer[data-main-rotation="90"] :is([data-editor-rotation="270"],[data-editor-rotation="90"])>.resizers>.resizer.middleRight,.annotationEditorLayer[data-main-rotation="180"] :is([data-editor-rotation="180"],[data-editor-rotation="0"])>.resizers>.resizer.middleRight,.annotationEditorLayer[data-main-rotation="270"] :is([data-editor-rotation="90"],[data-editor-rotation="270"])>.resizers>.resizer.middleRight,.annotationEditorLayer[data-main-rotation="0"] :is([data-editor-rotation="0"],[data-editor-rotation="180"])>.resizers>.resizer.middleLeft,.annotationEditorLayer[data-main-rotation="90"] :is([data-editor-rotation="270"],[data-editor-rotation="90"])>.resizers>.resizer.middleLeft,.annotationEditorLayer[data-main-rotation="180"] :is([data-editor-rotation="180"],[data-editor-rotation="0"])>.resizers>.resizer.middleLeft,.annotationEditorLayer[data-main-rotation="270"] :is([data-editor-rotation="90"],[data-editor-rotation="270"])>.resizers>.resizer.middleLeft{cursor:ew-resize}.annotationEditorLayer[data-main-rotation="0"] :is([data-editor-rotation="90"],[data-editor-rotation="270"])>.resizers>.resizer.topLeft,.annotationEditorLayer[data-main-rotation="90"] :is([data-editor-rotation="0"],[data-editor-rotation="180"])>.resizers>.resizer.topLeft,.annotationEditorLayer[data-main-rotation="180"] :is([data-editor-rotation="270"],[data-editor-rotation="90"])>.resizers>.resizer.topLeft,.annotationEditorLayer[data-main-rotation="270"] :is([data-editor-rotation="180"],[data-editor-rotation="0"])>.resizers>.resizer.topLeft,.annotationEditorLayer[data-main-rotation="0"] :is([data-editor-rotation="90"],[data-editor-rotation="270"])>.resizers>.resizer.bottomRight,.annotationEditorLayer[data-main-rotation="90"] :is([data-editor-rotation="0"],[data-editor-rotation="180"])>.resizers>.resizer.bottomRight,.annotationEditorLayer[data-main-rotation="180"] :is([data-editor-rotation="270"],[data-editor-rotation="90"])>.resizers>.resizer.bottomRight,.annotationEditorLayer[data-main-rotation="270"] :is([data-editor-rotation="180"],[data-editor-rotation="0"])>.resizers>.resizer.bottomRight{cursor:nesw-resize}.annotationEditorLayer[data-main-rotation="0"] :is([data-editor-rotation="90"],[data-editor-rotation="270"])>.resizers>.resizer.topMiddle,.annotationEditorLayer[data-main-rotation="90"] :is([data-editor-rotation="0"],[data-editor-rotation="180"])>.resizers>.resizer.topMiddle,.annotationEditorLayer[data-main-rotation="180"] :is([data-editor-rotation="270"],[data-editor-rotation="90"])>.resizers>.resizer.topMiddle,.annotationEditorLayer[data-main-rotation="270"] :is([data-editor-rotation="180"],[data-editor-rotation="0"])>.resizers>.resizer.topMiddle,.annotationEditorLayer[data-main-rotation="0"] :is([data-editor-rotation="90"],[data-editor-rotation="270"])>.resizers>.resizer.bottomMiddle,.annotationEditorLayer[data-main-rotation="90"] :is([data-editor-rotation="0"],[data-editor-rotation="180"])>.resizers>.resizer.bottomMiddle,.annotationEditorLayer[data-main-rotation="180"] :is([data-editor-rotation="270"],[data-editor-rotation="90"])>.resizers>.resizer.bottomMiddle,.annotationEditorLayer[data-main-rotation="270"] :is([data-editor-rotation="180"],[data-editor-rotation="0"])>.resizers>.resizer.bottomMiddle{cursor:ew-resize}.annotationEditorLayer[data-main-rotation="0"] :is([data-editor-rotation="90"],[data-editor-rotation="270"])>.resizers>.resizer.topRight,.annotationEditorLayer[data-main-rotation="90"] :is([data-editor-rotation="0"],[data-editor-rotation="180"])>.resizers>.resizer.topRight,.annotationEditorLayer[data-main-rotation="180"] :is([data-editor-rotation="270"],[data-editor-rotation="90"])>.resizers>.resizer.topRight,.annotationEditorLayer[data-main-rotation="270"] :is([data-editor-rotation="180"],[data-editor-rotation="0"])>.resizers>.resizer.topRight,.annotationEditorLayer[data-main-rotation="0"] :is([data-editor-rotation="90"],[data-editor-rotation="270"])>.resizers>.resizer.bottomLeft,.annotationEditorLayer[data-main-rotation="90"] :is([data-editor-rotation="0"],[data-editor-rotation="180"])>.resizers>.resizer.bottomLeft,.annotationEditorLayer[data-main-rotation="180"] :is([data-editor-rotation="270"],[data-editor-rotation="90"])>.resizers>.resizer.bottomLeft,.annotationEditorLayer[data-main-rotation="270"] :is([data-editor-rotation="180"],[data-editor-rotation="0"])>.resizers>.resizer.bottomLeft{cursor:nwse-resize}.annotationEditorLayer[data-main-rotation="0"] :is([data-editor-rotation="90"],[data-editor-rotation="270"])>.resizers>.resizer.middleRight,.annotationEditorLayer[data-main-rotation="90"] :is([data-editor-rotation="0"],[data-editor-rotation="180"])>.resizers>.resizer.middleRight,.annotationEditorLayer[data-main-rotation="180"] :is([data-editor-rotation="270"],[data-editor-rotation="90"])>.resizers>.resizer.middleRight,.annotationEditorLayer[data-main-rotation="270"] :is([data-editor-rotation="180"],[data-editor-rotation="0"])>.resizers>.resizer.middleRight,.annotationEditorLayer[data-main-rotation="0"] :is([data-editor-rotation="90"],[data-editor-rotation="270"])>.resizers>.resizer.middleLeft,.annotationEditorLayer[data-main-rotation="90"] :is([data-editor-rotation="0"],[data-editor-rotation="180"])>.resizers>.resizer.middleLeft,.annotationEditorLayer[data-main-rotation="180"] :is([data-editor-rotation="270"],[data-editor-rotation="90"])>.resizers>.resizer.middleLeft,.annotationEditorLayer[data-main-rotation="270"] :is([data-editor-rotation="180"],[data-editor-rotation="0"])>.resizers>.resizer.middleLeft{cursor:ns-resize}.annotationEditorLayer :is([data-main-rotation="0"] [data-editor-rotation="90"],[data-main-rotation="90"] [data-editor-rotation="0"],[data-main-rotation="180"] [data-editor-rotation="270"],[data-main-rotation="270"] [data-editor-rotation="180"]) .editToolbar{rotate:270deg}[dir=ltr] .annotationEditorLayer :is([data-main-rotation="0"] [data-editor-rotation="90"],[data-main-rotation="90"] [data-editor-rotation="0"],[data-main-rotation="180"] [data-editor-rotation="270"],[data-main-rotation="270"] [data-editor-rotation="180"]) .editToolbar{inset-inline-end:calc(0px - var(--editor-toolbar-vert-offset));inset-block-start:0}[dir=rtl] .annotationEditorLayer :is([data-main-rotation="0"] [data-editor-rotation="90"],[data-main-rotation="90"] [data-editor-rotation="0"],[data-main-rotation="180"] [data-editor-rotation="270"],[data-main-rotation="270"] [data-editor-rotation="180"]) .editToolbar{inset-inline-end:calc(100% + var(--editor-toolbar-vert-offset));inset-block-start:0}.annotationEditorLayer :is([data-main-rotation="0"] [data-editor-rotation="180"],[data-main-rotation="90"] [data-editor-rotation="90"],[data-main-rotation="180"] [data-editor-rotation="0"],[data-main-rotation="270"] [data-editor-rotation="270"]) .editToolbar{rotate:180deg;inset-inline-end:100%;inset-block-start:calc(0pc - var(--editor-toolbar-vert-offset))}.annotationEditorLayer :is([data-main-rotation="0"] [data-editor-rotation="270"],[data-main-rotation="90"] [data-editor-rotation="180"],[data-main-rotation="180"] [data-editor-rotation="90"],[data-main-rotation="270"] [data-editor-rotation="0"]) .editToolbar{rotate:90deg}[dir=ltr] .annotationEditorLayer :is([data-main-rotation="0"] [data-editor-rotation="270"],[data-main-rotation="90"] [data-editor-rotation="180"],[data-main-rotation="180"] [data-editor-rotation="90"],[data-main-rotation="270"] [data-editor-rotation="0"]) .editToolbar{inset-inline-end:calc(100% + var(--editor-toolbar-vert-offset));inset-block-start:100%}[dir=rtl] .annotationEditorLayer :is([data-main-rotation="0"] [data-editor-rotation="270"],[data-main-rotation="90"] [data-editor-rotation="180"],[data-main-rotation="180"] [data-editor-rotation="90"],[data-main-rotation="270"] [data-editor-rotation="0"]) .editToolbar{inset-inline-start:calc(0px - var(--editor-toolbar-vert-offset));inset-block-start:0}#altTextDialog{--dialog-bg-color:white;--dialog-border-color:white;--dialog-shadow:0 2px 14px 0 rgb(58 57 68 / .2);--text-primary-color:#15141a;--text-secondary-color:#5b5b66;--hover-filter:brightness(.9);--focus-ring-color:#0060df;--focus-ring-outline:2px solid var(--focus-ring-color);--textarea-border-color:#8f8f9d;--textarea-bg-color:white;--textarea-fg-color:var(--text-secondary-color);--radio-bg-color:#f0f0f4;--radio-checked-bg-color:#fbfbfe;--radio-border-color:#8f8f9d;--radio-checked-border-color:#0060df;--button-cancel-bg-color:#f0f0f4;--button-cancel-fg-color:var(--text-primary-color);--button-cancel-border-color:var(--button-cancel-bg-color);--button-cancel-hover-bg-color:var(--button-cancel-bg-color);--button-cancel-hover-fg-color:var(--button-cancel-fg-color);--button-cancel-hover-border-color:var(--button-cancel-hover-bg-color);--button-save-bg-color:#0060df;--button-save-fg-color:#fbfbfe;--button-save-hover-bg-color:var(--button-save-bg-color);--button-save-hover-fg-color:var(--button-save-fg-color);--button-save-hover-border-color:var(--button-save-hover-bg-color);font:message-box;font-size:13px;font-weight:400;line-height:150%;border-radius:4px;padding:12px 16px;border:1px solid var(--dialog-border-color);background:var(--dialog-bg-color);color:var(--text-primary-color);box-shadow:var(--dialog-shadow)}@media (prefers-color-scheme: dark){#altTextDialog{--dialog-bg-color:#1c1b22;--dialog-border-color:#1c1b22;--dialog-shadow:0 2px 14px 0 #15141a;--text-primary-color:#fbfbfe;--text-secondary-color:#cfcfd8;--focus-ring-color:#0df;--hover-filter:brightness(1.4);--textarea-bg-color:#42414d;--radio-bg-color:#2b2a33;--radio-checked-bg-color:#15141a;--radio-checked-border-color:#0df;--button-cancel-bg-color:#2b2a33;--button-save-bg-color:#0df;--button-save-fg-color:#15141a}}@media screen and (forced-colors: active){#altTextDialog{--dialog-bg-color:Canvas;--dialog-border-color:CanvasText;--dialog-shadow:none;--text-primary-color:CanvasText;--text-secondary-color:CanvasText;--hover-filter:none;--focus-ring-color:ButtonBorder;--textarea-border-color:ButtonBorder;--textarea-bg-color:Field;--textarea-fg-color:ButtonText;--radio-bg-color:ButtonFace;--radio-checked-bg-color:ButtonFace;--radio-border-color:ButtonText;--radio-checked-border-color:ButtonText;--button-cancel-bg-color:ButtonFace;--button-cancel-fg-color:ButtonText;--button-cancel-border-color:ButtonText;--button-cancel-hover-bg-color:AccentColor;--button-cancel-hover-fg-color:AccentColorText;--button-save-bg-color:ButtonText;--button-save-fg-color:ButtonFace;--button-save-hover-bg-color:AccentColor;--button-save-hover-fg-color:AccentColorText}}#altTextDialog::backdrop{-webkit-mask:url(#alttext-manager-mask);mask:url(#alttext-manager-mask)}#altTextDialog.positioned{margin:0}#altTextDialog #altTextContainer{width:300px;height:-moz-fit-content;height:fit-content;display:inline-flex;flex-direction:column;align-items:flex-start;gap:16px}#altTextDialog #altTextContainer *:focus-visible{outline:var(--focus-ring-outline);outline-offset:2px}#altTextDialog #altTextContainer .radio{display:flex;flex-direction:column;align-items:flex-start;gap:4px}#altTextDialog #altTextContainer .radio .radioButton{display:flex;gap:8px;align-self:stretch;align-items:center}#altTextDialog #altTextContainer .radio .radioButton input{-webkit-appearance:none;-moz-appearance:none;appearance:none;box-sizing:border-box;width:16px;height:16px;border-radius:50%;background-color:var(--radio-bg-color);border:1px solid var(--radio-border-color)}#altTextDialog #altTextContainer .radio .radioButton input:hover{filter:var(--hover-filter)}#altTextDialog #altTextContainer .radio .radioButton input:checked{background-color:var(--radio-checked-bg-color);border:4px solid var(--radio-checked-border-color)}#altTextDialog #altTextContainer .radio .radioLabel{display:flex;padding-inline-start:24px;align-items:flex-start;gap:10px;align-self:stretch}#altTextDialog #altTextContainer .radio .radioLabel span{flex:1 0 0;font-size:11px;color:var(--text-secondary-color)}#altTextDialog #altTextContainer #overallDescription{display:flex;flex-direction:column;align-items:flex-start;gap:4px;align-self:stretch}#altTextDialog #altTextContainer #overallDescription span{align-self:stretch}#altTextDialog #altTextContainer #overallDescription .title{font-size:13px;font-style:normal;font-weight:590}#altTextDialog #altTextContainer #addDescription{display:flex;flex-direction:column;align-items:stretch;gap:8px}#altTextDialog #altTextContainer #addDescription .descriptionArea{flex:1;padding-inline:24px 10px}#altTextDialog #altTextContainer #addDescription .descriptionArea textarea{font:inherit;width:100%;min-height:75px;padding:8px;resize:none;margin:0;box-sizing:border-box;border-radius:4px;border:1px solid var(--textarea-border-color);background:var(--textarea-bg-color);color:var(--textarea-fg-color)}#altTextDialog #altTextContainer #addDescription .descriptionArea textarea:focus{outline-offset:0;border-color:transparent}#altTextDialog #altTextContainer #addDescription .descriptionArea textarea:disabled{pointer-events:none;opacity:.4}#altTextDialog #altTextContainer #buttons{display:flex;justify-content:flex-end;align-items:flex-start;gap:8px;align-self:stretch}#altTextDialog #altTextContainer #buttons button{border-radius:4px;border:1px solid;font:menu;font-weight:600;padding:4px 16px;width:auto;height:32px}#altTextDialog #altTextContainer #buttons button:hover{cursor:pointer;filter:var(--hover-filter)}#altTextDialog #altTextContainer #buttons button#altTextCancel{color:var(--button-cancel-fg-color);background-color:var(--button-cancel-bg-color);border-color:var(--button-cancel-border-color)}#altTextDialog #altTextContainer #buttons button#altTextCancel:hover{color:var(--button-cancel-hover-fg-color);background-color:var(--button-cancel-hover-bg-color);border-color:var(--button-cancel-hover-border-color)}#altTextDialog #altTextContainer #buttons button#altTextSave{color:var(--button-save-hover-fg-color);background-color:var(--button-save-hover-bg-color);border-color:var(--button-save-hover-border-color);opacity:1}#altTextDialog #altTextContainer #buttons button#altTextSave:hover{color:var(--button-save-hover-fg-color);background-color:var(--button-save-hover-bg-color);border-color:var(--button-save-hover-border-color)}.colorPicker{--hover-outline-color:#0250bb;--selected-outline-color:#0060df;--swatch-border-color:#cfcfd8}@media (prefers-color-scheme: dark){.colorPicker{--hover-outline-color:#80ebff;--selected-outline-color:#aaf2ff;--swatch-border-color:#52525e}}@media screen and (forced-colors: active){.colorPicker{--hover-outline-color:Highlight;--selected-outline-color:var(--hover-outline-color);--swatch-border-color:ButtonText}}.colorPicker .swatch{width:16px;height:16px;border:1px solid var(--swatch-border-color);border-radius:100%;outline-offset:2px;box-sizing:border-box;forced-color-adjust:none}.colorPicker button:is(:hover,.selected)>.swatch{border:none}.annotationEditorLayer[data-main-rotation="0"] .highlightEditor:not(.free)>.editToolbar{rotate:0deg}.annotationEditorLayer[data-main-rotation="90"] .highlightEditor:not(.free)>.editToolbar{rotate:270deg}.annotationEditorLayer[data-main-rotation="180"] .highlightEditor:not(.free)>.editToolbar{rotate:180deg}.annotationEditorLayer[data-main-rotation="270"] .highlightEditor:not(.free)>.editToolbar{rotate:90deg}.annotationEditorLayer .highlightEditor{position:absolute;background:transparent;z-index:1;cursor:auto;max-width:100%;max-height:100%;border:none;outline:none;pointer-events:none;transform-origin:0 0}.annotationEditorLayer .highlightEditor:not(.free){transform:none}.annotationEditorLayer .highlightEditor .internal{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:auto}.annotationEditorLayer .highlightEditor.disabled .internal{pointer-events:none}.annotationEditorLayer .highlightEditor.selectedEditor .internal{cursor:pointer}.annotationEditorLayer .highlightEditor .editToolbar{--editor-toolbar-colorpicker-arrow-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTguMjMzMzYgMTAuNDY2NEwxMS44NDc0IDYuODUzMzlDMTEuODk0IDYuODA3MSAxMS45MzEgNi43NTIwMyAxMS45NTYzIDYuNjkxMzZDMTEuOTgxNiA2LjYzMDY5IDExLjk5NDYgNi41NjU2MiAxMS45OTQ2IDYuNDk5ODlDMTEuOTk0NiA2LjQzNDE3IDExLjk4MTYgNi4zNjkxIDExLjk1NjMgNi4zMDg0M0MxMS45MzEgNi4yNDc3NiAxMS44OTQgNi4xOTI2OSAxMS44NDc0IDYuMTQ2MzlDMTEuNzUzNiA2LjA1MjY2IDExLjYyNjQgNiAxMS40OTM5IDZDMTEuMzYxMyA2IDExLjIzNDEgNi4wNTI2NiAxMS4xNDA0IDYuMTQ2MzlMNy45OTIzNiA5LjI5MzM5TDQuODQ3MzYgNi4xNDczOUM0Ljc1MzA1IDYuMDU2MzEgNC42MjY3NSA2LjAwNTkyIDQuNDk1NjYgNi4wMDcwNkM0LjM2NDU2IDYuMDA4MiA0LjIzOTE1IDYuMDYwNzggNC4xNDY0NSA2LjE1MzQ4QzQuMDUzNzQgNi4yNDYxOSA0LjAwMTE2IDYuMzcxNTkgNC4wMDAwMiA2LjUwMjY5QzMuOTk4ODggNi42MzM3OSA0LjA0OTI4IDYuNzYwMDkgNC4xNDAzNiA2Ljg1NDM5TDcuNzUyMzYgMTAuNDY3NEw4LjIzMzM2IDEwLjQ2NjRaIiBmaWxsPSJibGFjayIvPgo8L3N2Zz4K);transform-origin:center!important}.annotationEditorLayer .highlightEditor .editToolbar .buttons .colorPicker{position:relative;width:auto;display:flex;justify-content:center;align-items:center;gap:4px;padding:4px}.annotationEditorLayer .highlightEditor .editToolbar .buttons .colorPicker:after{content:"";-webkit-mask-image:var(--editor-toolbar-colorpicker-arrow-image);mask-image:var(--editor-toolbar-colorpicker-arrow-image);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;display:inline-block;background-color:var(--editor-toolbar-fg-color);width:12px;height:12px}.annotationEditorLayer .highlightEditor .editToolbar .buttons .colorPicker:hover:after{background-color:var(--editor-toolbar-hover-fg-color)}.annotationEditorLayer .highlightEditor .editToolbar .buttons .colorPicker:has(.dropdown:not(.hidden)){background-color:var(--editor-toolbar-hover-bg-color)}.annotationEditorLayer .highlightEditor .editToolbar .buttons .colorPicker:has(.dropdown:not(.hidden)):after{scale:-1}.annotationEditorLayer .highlightEditor .editToolbar .buttons .colorPicker .dropdown{position:absolute;display:flex;justify-content:center;align-items:center;flex-direction:column;gap:11px;padding-block:8px;border-radius:6px;background-color:var(--editor-toolbar-bg-color);border:1px solid var(--editor-toolbar-border-color);box-shadow:var(--editor-toolbar-shadow);inset-block-start:calc(100% + 4px);width:calc(100% + 2 * var(--editor-toolbar-padding))}.annotationEditorLayer .highlightEditor .editToolbar .buttons .colorPicker .dropdown button{width:100%;height:auto;border:none;cursor:pointer;display:flex;justify-content:center;align-items:center;background:none}.annotationEditorLayer .highlightEditor .editToolbar .buttons .colorPicker .dropdown button:is(:active,:focus-visible){outline:none}.annotationEditorLayer .highlightEditor .editToolbar .buttons .colorPicker .dropdown button>.swatch{outline-offset:2px}.annotationEditorLayer .highlightEditor .editToolbar .buttons .colorPicker .dropdown button[aria-selected=true]>.swatch{outline:2px solid var(--selected-outline-color)}.annotationEditorLayer .highlightEditor .editToolbar .buttons .colorPicker .dropdown button:is(:hover,:active,:focus-visible)>.swatch{outline:2px solid var(--hover-outline-color)}.editorParamsToolbar:has(#highlightParamsToolbarContainer){padding:unset}#highlightParamsToolbarContainer{height:auto;padding-inline:10px;padding-block:10px 16px;gap:16px;display:flex;flex-direction:column;box-sizing:border-box}#highlightParamsToolbarContainer .editorParamsLabel{width:-moz-fit-content;width:fit-content;inset-inline-start:0}#highlightParamsToolbarContainer .colorPicker{display:flex;flex-direction:column;gap:8px}#highlightParamsToolbarContainer .colorPicker .dropdown{display:flex;justify-content:space-between;align-items:center;flex-direction:row;height:auto}#highlightParamsToolbarContainer .colorPicker .dropdown button{width:auto;height:auto;border:none;cursor:pointer;display:flex;justify-content:center;align-items:center;background:none;flex:0 0 auto}#highlightParamsToolbarContainer .colorPicker .dropdown button .swatch{width:24px;height:24px}#highlightParamsToolbarContainer .colorPicker .dropdown button:is(:active,:focus-visible){outline:none}#highlightParamsToolbarContainer .colorPicker .dropdown button[aria-selected=true]>.swatch{outline:2px solid var(--selected-outline-color)}#highlightParamsToolbarContainer .colorPicker .dropdown button:is(:hover,:active,:focus-visible)>.swatch{outline:2px solid var(--hover-outline-color)}#highlightParamsToolbarContainer #editorHighlightThickness{display:flex;flex-direction:column;align-items:center;gap:4px;align-self:stretch}#highlightParamsToolbarContainer #editorHighlightThickness .editorParamsLabel{width:100%;height:auto;align-self:stretch}#highlightParamsToolbarContainer #editorHighlightThickness .thicknessPicker{display:flex;justify-content:space-between;align-items:center;align-self:stretch;--example-color:#bfbfc9}@media (prefers-color-scheme: dark){#highlightParamsToolbarContainer #editorHighlightThickness .thicknessPicker{--example-color:#80808e}}@media screen and (forced-colors: active){#highlightParamsToolbarContainer #editorHighlightThickness .thicknessPicker{--example-color:CanvasText}}:is(#highlightParamsToolbarContainer #editorHighlightThickness .thicknessPicker>.editorParamsSlider[disabled]){opacity:.4}#highlightParamsToolbarContainer #editorHighlightThickness .thicknessPicker:before,#highlightParamsToolbarContainer #editorHighlightThickness .thicknessPicker:after{content:"";width:8px;aspect-ratio:1;display:block;border-radius:100%;background-color:var(--example-color)}#highlightParamsToolbarContainer #editorHighlightThickness .thicknessPicker:after{width:24px}#highlightParamsToolbarContainer #editorHighlightThickness .thicknessPicker .editorParamsSlider{width:unset;height:14px}#highlightParamsToolbarContainer #editorHighlightVisibility{display:flex;flex-direction:column;align-items:flex-start;gap:8px;align-self:stretch}#highlightParamsToolbarContainer #editorHighlightVisibility .divider{--divider-color:#d7d7db;margin-block:4px;width:100%;height:1px;background-color:var(--divider-color)}@media (prefers-color-scheme: dark){#highlightParamsToolbarContainer #editorHighlightVisibility .divider{--divider-color:#8f8f9d}}@media screen and (forced-colors: active){#highlightParamsToolbarContainer #editorHighlightVisibility .divider{--divider-color:CanvasText}}#highlightParamsToolbarContainer #editorHighlightVisibility .toggler{display:flex;justify-content:space-between;align-items:center;align-self:stretch}:root{--viewer-container-height:0;--pdfViewer-padding-bottom:0;--page-margin:1px auto -8px;--page-border:9px solid transparent;--spreadHorizontalWrapped-margin-LR:-3.5px;--loading-icon-delay:.4s}@media screen and (forced-colors: active){:root{--pdfViewer-padding-bottom:9px;--page-margin:8px auto -1px;--page-border:1px solid CanvasText;--spreadHorizontalWrapped-margin-LR:3.5px}}[data-main-rotation="90"]{transform:rotate(90deg) translateY(-100%)}[data-main-rotation="180"]{transform:rotate(180deg) translate(-100%,-100%)}[data-main-rotation="270"]{transform:rotate(270deg) translate(-100%)}#hiddenCopyElement,.hiddenCanvasElement{position:absolute;top:0;left:0;width:0;height:0;display:none}.pdfViewer{--scale-factor:1;padding-bottom:var(--pdfViewer-padding-bottom);--hcm-highlight-filter:none;--hcm-highlight-selected-filter:none}@media screen and (forced-colors: active){.pdfViewer{--hcm-highlight-filter:invert(100%)}}.pdfViewer .canvasWrapper{overflow:hidden;width:100%;height:100%}.pdfViewer .page{direction:ltr;width:816px;height:1056px;margin:var(--page-margin);position:relative;overflow:visible;border:var(--page-border);background-clip:content-box;background-color:#fff}.pdfViewer .dummyPage{position:relative;width:0;height:var(--viewer-container-height)}.pdfViewer.noUserSelect{-webkit-user-select:none;-moz-user-select:none;user-select:none}.pdfViewer.removePageBorders .page{margin:0 auto 10px;border:none}.pdfViewer.singlePageView{display:inline-block}.pdfViewer.singlePageView .page{margin:0;border:none}.pdfViewer:is(.scrollHorizontal,.scrollWrapped),.spread{margin-inline:3.5px;text-align:center}.pdfViewer.scrollHorizontal,.spread{white-space:nowrap}.pdfViewer.removePageBorders,.pdfViewer:is(.scrollHorizontal,.scrollWrapped) .spread{margin-inline:0}.spread :is(.page,.dummyPage),.pdfViewer:is(.scrollHorizontal,.scrollWrapped) :is(.page,.spread){display:inline-block;vertical-align:middle}.spread .page,.pdfViewer:is(.scrollHorizontal,.scrollWrapped) .page{margin-inline:var(--spreadHorizontalWrapped-margin-LR)}.pdfViewer.removePageBorders .spread .page,.pdfViewer.removePageBorders:is(.scrollHorizontal,.scrollWrapped) .page{margin-inline:5px}.pdfViewer .page canvas{margin:0;display:block}.pdfViewer .page canvas .structTree{contain:strict}.pdfViewer .page canvas[hidden]{display:none}.pdfViewer .page canvas[zooming]{width:100%;height:100%}.pdfViewer .page.loadingIcon:after{position:absolute;top:0;left:0;content:"";width:100%;height:100%;background:url(data:image/gif;base64,R0lGODlhGAAYAPQAAP///wAAAM7Ozvr6+uDg4LCwsOjo6I6OjsjIyJycnNjY2KioqMDAwPLy8nZ2doaGhri4uGhoaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJBwAAACwAAAAAGAAYAAAFriAgjiQAQWVaDgr5POSgkoTDjFE0NoQ8iw8HQZQTDQjDn4jhSABhAAOhoTqSDg7qSUQwxEaEwwFhXHhHgzOA1xshxAnfTzotGRaHglJqkJcaVEqCgyoCBQkJBQKDDXQGDYaIioyOgYSXA36XIgYMBWRzXZoKBQUMmil0lgalLSIClgBpO0g+s26nUWddXyoEDIsACq5SsTMMDIECwUdJPw0Mzsu0qHYkw72bBmozIQAh+QQJBwAAACwAAAAAGAAYAAAFsCAgjiTAMGVaDgR5HKQwqKNxIKPjjFCk0KNXC6ATKSI7oAhxWIhezwhENTCQEoeGCdWIPEgzESGxEIgGBWstEW4QCGGAIJEoxGmGt5ZkgCRQQHkGd2CESoeIIwoMBQUMP4cNeQQGDYuNj4iSb5WJnmeGng0CDGaBlIQEJziHk3sABidDAHBgagButSKvAAoyuHuUYHgCkAZqebw0AgLBQyyzNKO3byNuoSS8x8OfwIchACH5BAkHAAAALAAAAAAYABgAAAW4ICCOJIAgZVoOBJkkpDKoo5EI43GMjNPSokXCINKJCI4HcCRIQEQvqIOhGhBHhUTDhGo4diOZyFAoKEQDxra2mAEgjghOpCgz3LTBIxJ5kgwMBShACREHZ1V4Kg1rS44pBAgMDAg/Sw0GBAQGDZGTlY+YmpyPpSQDiqYiDQoCliqZBqkGAgKIS5kEjQ21VwCyp76dBHiNvz+MR74AqSOdVwbQuo+abppo10ssjdkAnc0rf8vgl8YqIQAh+QQJBwAAACwAAAAAGAAYAAAFrCAgjiQgCGVaDgZZFCQxqKNRKGOSjMjR0qLXTyciHA7AkaLACMIAiwOC1iAxCrMToHHYjWQiA4NBEA0Q1RpWxHg4cMXxNDk4OBxNUkPAQAEXDgllKgMzQA1pSYopBgonCj9JEA8REQ8QjY+RQJOVl4ugoYssBJuMpYYjDQSliwasiQOwNakALKqsqbWvIohFm7V6rQAGP6+JQLlFg7KDQLKJrLjBKbvAor3IKiEAIfkECQcAAAAsAAAAABgAGAAABbUgII4koChlmhokw5DEoI4NQ4xFMQoJO4uuhignMiQWvxGBIQC+AJBEUyUcIRiyE6CR0CllW4HABxBURTUw4nC4FcWo5CDBRpQaCoF7VjgsyCUDYDMNZ0mHdwYEBAaGMwwHDg4HDA2KjI4qkJKUiJ6faJkiA4qAKQkRB3E0i6YpAw8RERAjA4tnBoMApCMQDhFTuySKoSKMJAq6rD4GzASiJYtgi6PUcs9Kew0xh7rNJMqIhYchACH5BAkHAAAALAAAAAAYABgAAAW0ICCOJEAQZZo2JIKQxqCOjWCMDDMqxT2LAgELkBMZCoXfyCBQiFwiRsGpku0EshNgUNAtrYPT0GQVNRBWwSKBMp98P24iISgNDAS4ipGA6JUpA2WAhDR4eWM/CAkHBwkIDYcGiTOLjY+FmZkNlCN3eUoLDmwlDW+AAwcODl5bYl8wCVYMDw5UWzBtnAANEQ8kBIM0oAAGPgcREIQnVloAChEOqARjzgAQEbczg8YkWJq8nSUhACH5BAkHAAAALAAAAAAYABgAAAWtICCOJGAYZZoOpKKQqDoORDMKwkgwtiwSBBYAJ2owGL5RgxBziQQMgkwoMkhNqAEDARPSaiMDFdDIiRSFQowMXE8Z6RdpYHWnEAWGPVkajPmARVZMPUkCBQkJBQINgwaFPoeJi4GVlQ2Qc3VJBQcLV0ptfAMJBwdcIl+FYjALQgimoGNWIhAQZA4HXSpLMQ8PIgkOSHxAQhERPw7ASTSFyCMMDqBTJL8tf3y2fCEAIfkECQcAAAAsAAAAABgAGAAABa8gII4k0DRlmg6kYZCoOg5EDBDEaAi2jLO3nEkgkMEIL4BLpBAkVy3hCTAQKGAznM0AFNFGBAbj2cA9jQixcGZAGgECBu/9HnTp+FGjjezJFAwFBQwKe2Z+KoCChHmNjVMqA21nKQwJEJRlbnUFCQlFXlpeCWcGBUACCwlrdw8RKGImBwktdyMQEQciB7oACwcIeA4RVwAODiIGvHQKERAjxyMIB5QlVSTLYLZ0sW8hACH5BAkHAAAALAAAAAAYABgAAAW0ICCOJNA0ZZoOpGGQrDoOBCoSxNgQsQzgMZyIlvOJdi+AS2SoyXrK4umWPM5wNiV0UDUIBNkdoepTfMkA7thIECiyRtUAGq8fm2O4jIBgMBA1eAZ6Knx+gHaJR4QwdCMKBxEJRggFDGgQEREPjjAMBQUKIwIRDhBDC2QNDDEKoEkDoiMHDigICGkJBS2dDA6TAAnAEAkCdQ8ORQcHTAkLcQQODLPMIgIJaCWxJMIkPIoAt3EhACH5BAkHAAAALAAAAAAYABgAAAWtICCOJNA0ZZoOpGGQrDoOBCoSxNgQsQzgMZyIlvOJdi+AS2SoyXrK4umWHM5wNiV0UN3xdLiqr+mENcWpM9TIbrsBkEck8oC0DQqBQGGIz+t3eXtob0ZTPgNrIwQJDgtGAgwCWSIMDg4HiiUIDAxFAAoODwxDBWINCEGdSTQkCQcoegADBaQ6MggHjwAFBZUFCm0HB0kJCUy9bAYHCCPGIwqmRq0jySMGmj6yRiEAIfkECQcAAAAsAAAAABgAGAAABbIgII4k0DRlmg6kYZCsOg4EKhLE2BCxDOAxnIiW84l2L4BLZKipBopW8XRLDkeCiAMyMvQAA+uON4JEIo+vqukkKQ6RhLHplVGN+LyKcXA4Dgx5DWwGDXx+gIKENnqNdzIDaiMECwcFRgQCCowiCAcHCZIlCgICVgSfCEMMnA0CXaU2YSQFoQAKUQMMqjoyAglcAAyBAAIMRUYLCUkFlybDeAYJryLNk6xGNCTQXY0juHghACH5BAkHAAAALAAAAAAYABgAAAWzICCOJNA0ZVoOAmkY5KCSSgSNBDE2hDyLjohClBMNij8RJHIQvZwEVOpIekRQJyJs5AMoHA+GMbE1lnm9EcPhOHRnhpwUl3AsknHDm5RN+v8qCAkHBwkIfw1xBAYNgoSGiIqMgJQifZUjBhAJYj95ewIJCQV7KYpzBAkLLQADCHOtOpY5PgNlAAykAEUsQ1wzCgWdCIdeArczBQVbDJ0NAqyeBb64nQAGArBTt8R8mLuyPyEAOwAAAAAAAAAAAA==) center no-repeat;display:none;transition-property:display;transition-delay:var(--loading-icon-delay);z-index:5;contain:strict}.pdfViewer .page.loading:after{display:block}.pdfViewer .page:not(.loading):after{transition-property:none;display:none}.pdfPresentationMode .pdfViewer{padding-bottom:0}.pdfPresentationMode .spread{margin:0}.pdfPresentationMode .pdfViewer .page{margin:0 auto;border:2px solid transparent}.annotationLayer{right:0;bottom:0}.annotationLayer section{z-index:1!important}.xfaLayer{z-index:5}#toc_wrapper{display:flex;flex-direction:row}#toc_wrapper .toc{width:300px;background-color:#eaeaea}#toc_wrapper ol ol{padding-left:20px}#toc_wrapper ol{padding-left:2em}#toc_wrapper a{color:#000}.VPLocalSearchBox[data-v-cb4e1afe]{position:fixed;z-index:100;inset:0;display:flex}.backdrop[data-v-cb4e1afe]{position:absolute;inset:0;background:var(--vp-backdrop-bg-color);transition:opacity .5s}.shell[data-v-cb4e1afe]{position:relative;padding:12px;margin:64px auto;display:flex;flex-direction:column;gap:16px;background:var(--vp-local-search-bg);width:min(100vw - 60px,900px);height:min-content;max-height:min(100vh - 128px,900px);border-radius:6px}@media (max-width: 767px){.shell[data-v-cb4e1afe]{margin:0;width:100vw;height:100vh;max-height:none;border-radius:0}}.search-bar[data-v-cb4e1afe]{border:1px solid var(--vp-c-divider);border-radius:4px;display:flex;align-items:center;padding:0 12px;cursor:text}@media (max-width: 767px){.search-bar[data-v-cb4e1afe]{padding:0 8px}}.search-bar[data-v-cb4e1afe]:focus-within{border-color:var(--vp-c-brand-1)}.local-search-icon[data-v-cb4e1afe]{display:block;font-size:18px}.navigate-icon[data-v-cb4e1afe]{display:block;font-size:14px}.search-icon[data-v-cb4e1afe]{margin:8px}@media (max-width: 767px){.search-icon[data-v-cb4e1afe]{display:none}}.search-input[data-v-cb4e1afe]{padding:6px 12px;font-size:inherit;width:100%}@media (max-width: 767px){.search-input[data-v-cb4e1afe]{padding:6px 4px}}.search-actions[data-v-cb4e1afe]{display:flex;gap:4px}@media (any-pointer: coarse){.search-actions[data-v-cb4e1afe]{gap:8px}}@media (min-width: 769px){.search-actions.before[data-v-cb4e1afe]{display:none}}.search-actions button[data-v-cb4e1afe]{padding:8px}.search-actions button[data-v-cb4e1afe]:not([disabled]):hover,.toggle-layout-button.detailed-list[data-v-cb4e1afe]{color:var(--vp-c-brand-1)}.search-actions button.clear-button[data-v-cb4e1afe]:disabled{opacity:.37}.search-keyboard-shortcuts[data-v-cb4e1afe]{font-size:.8rem;opacity:75%;display:flex;flex-wrap:wrap;gap:16px;line-height:14px}.search-keyboard-shortcuts span[data-v-cb4e1afe]{display:flex;align-items:center;gap:4px}@media (max-width: 767px){.search-keyboard-shortcuts[data-v-cb4e1afe]{display:none}}.search-keyboard-shortcuts kbd[data-v-cb4e1afe]{background:#8080801a;border-radius:4px;padding:3px 6px;min-width:24px;display:inline-block;text-align:center;vertical-align:middle;border:1px solid rgba(128,128,128,.15);box-shadow:0 2px 2px #0000001a}.results[data-v-cb4e1afe]{display:flex;flex-direction:column;gap:6px;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain}.result[data-v-cb4e1afe]{display:flex;align-items:center;gap:8px;border-radius:4px;transition:none;line-height:1rem;border:solid 2px var(--vp-local-search-result-border);outline:none}.result>div[data-v-cb4e1afe]{margin:12px;width:100%;overflow:hidden}@media (max-width: 767px){.result>div[data-v-cb4e1afe]{margin:8px}}.titles[data-v-cb4e1afe]{display:flex;flex-wrap:wrap;gap:4px;position:relative;z-index:1001;padding:2px 0}.title[data-v-cb4e1afe]{display:flex;align-items:center;gap:4px}.title.main[data-v-cb4e1afe]{font-weight:500}.title-icon[data-v-cb4e1afe]{opacity:.5;font-weight:500;color:var(--vp-c-brand-1)}.title svg[data-v-cb4e1afe]{opacity:.5}.result.selected[data-v-cb4e1afe]{--vp-local-search-result-bg: var(--vp-local-search-result-selected-bg);border-color:var(--vp-local-search-result-selected-border)}.excerpt-wrapper[data-v-cb4e1afe]{position:relative}.excerpt[data-v-cb4e1afe]{opacity:75%;pointer-events:none;max-height:140px;overflow:hidden;position:relative;opacity:.5;margin-top:4px}.result.selected .excerpt[data-v-cb4e1afe]{opacity:1}.excerpt[data-v-cb4e1afe] *{font-size:.8rem!important;line-height:130%!important}.titles[data-v-cb4e1afe] mark,.excerpt[data-v-cb4e1afe] mark{background-color:var(--vp-local-search-highlight-bg);color:var(--vp-local-search-highlight-text);border-radius:2px;padding:0 2px}.excerpt[data-v-cb4e1afe] .vp-code-group .tabs{display:none}.excerpt[data-v-cb4e1afe] .vp-code-group div[class*=language-]{border-radius:8px!important}.excerpt-gradient-bottom[data-v-cb4e1afe]{position:absolute;bottom:-1px;left:0;width:100%;height:8px;background:linear-gradient(transparent,var(--vp-local-search-result-bg));z-index:1000}.excerpt-gradient-top[data-v-cb4e1afe]{position:absolute;top:-1px;left:0;width:100%;height:8px;background:linear-gradient(var(--vp-local-search-result-bg),transparent);z-index:1000}.result.selected .titles[data-v-cb4e1afe],.result.selected .title-icon[data-v-cb4e1afe]{color:var(--vp-c-brand-1)!important}.no-results[data-v-cb4e1afe]{font-size:.9rem;text-align:center;padding:12px}svg[data-v-cb4e1afe]{flex:none} diff --git a/example_014.pdf b/example_014.pdf new file mode 100644 index 0000000..75dde5c Binary files /dev/null and b/example_014.pdf differ diff --git a/example_036.pdf b/example_036.pdf new file mode 100644 index 0000000..3deb29b Binary files /dev/null and b/example_036.pdf differ diff --git a/example_041.pdf b/example_041.pdf new file mode 100644 index 0000000..c4eb8ab Binary files /dev/null and b/example_041.pdf differ diff --git a/example_045.pdf b/example_045.pdf new file mode 100644 index 0000000..4d64e9a Binary files /dev/null and b/example_045.pdf differ diff --git a/example_xfa.pdf b/example_xfa.pdf new file mode 100644 index 0000000..29e6bbe Binary files /dev/null and b/example_xfa.pdf differ diff --git a/examples/README.html b/examples/README.html new file mode 100644 index 0000000..ac3216e --- /dev/null +++ b/examples/README.html @@ -0,0 +1,25 @@ + + + + + + Examples List | VuePDF + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/advanced/annotation_filter.html b/examples/advanced/annotation_filter.html new file mode 100644 index 0000000..7a71feb --- /dev/null +++ b/examples/advanced/annotation_filter.html @@ -0,0 +1,51 @@ + + + + + + Annotations Filter | VuePDF + + + + + + + + + + + + + + +
Skip to content

Annotations Filter

vue
<script setup>
+import { ref } from 'vue'
+import { VuePDF, usePDF } from '@tato30/vue-pdf'
+
+const { pdf } = usePDF('/example_014.pdf')
+
+const filters = ref(['Widget', 'Widget.Tx', 'Widget.Btn', 'Widget.Ch'])
+const selectedFilter = ref(['Widget'])
+const vuePDFRef = ref(null)
+
+function reloadPage() {
+  vuePDFRef.value.reload()
+}
+</script>
+
+<template>
+  <div>
+    <div>
+      <select v-model="selectedFilter[0]" class="select-example" @change="reloadPage">
+        <option v-for="flt in filters" :key="flt" :value="flt">
+          {{ flt }}
+        </option>
+      </select>
+    </div>
+    <VuePDF ref="vuePDFRef" :pdf="pdf" annotation-layer :annotations-filter="selectedFilter" />
+  </div>
+</template>
+ + + + \ No newline at end of file diff --git a/examples/advanced/fit_parent.html b/examples/advanced/fit_parent.html new file mode 100644 index 0000000..184f08b --- /dev/null +++ b/examples/advanced/fit_parent.html @@ -0,0 +1,55 @@ + + + + + + Fit parent | VuePDF + + + + + + + + + + + + + + +
Skip to content

Fit parent

vue
<script setup>
+import { ref } from 'vue'
+import { VuePDF, usePDF } from '@tato30/vue-pdf'
+
+const { pdf } = usePDF('https://raw.githubusercontent.com/mozilla/pdf.js/ba2edeae/web/compressed.tracemonkey-pldi-09.pdf')
+
+const vuePDFRef = ref(null)
+const parentWidth = ref(300)
+
+function fitParentWidth(pxs) {
+  parentWidth.value = parentWidth.value + pxs
+  vuePDFRef.value.reload()
+}
+</script>
+
+<template>
+  <div>
+    <div>
+      <button @click="fitParentWidth(-50)">
+        Remove 50px
+      </button>
+      <span>Parent width: {{ parentWidth }}px</span>
+      <button @click="fitParentWidth(50)">
+        Add 50px
+      </button>
+    </div>
+    <div :style="`width: ${parentWidth}px`">
+      <VuePDF ref="vuePDFRef" :pdf="pdf" fit-parent />
+    </div>
+  </div>
+</template>
+ + + + \ No newline at end of file diff --git a/examples/advanced/highlight_text.html b/examples/advanced/highlight_text.html new file mode 100644 index 0000000..ae24fd7 --- /dev/null +++ b/examples/advanced/highlight_text.html @@ -0,0 +1,48 @@ + + + + + + Highlight Text | VuePDF + + + + + + + + + + + + + + +
Skip to content

Highlight Text

vue
<script setup>
+import { VuePDF, usePDF } from '@tato30/vue-pdf';
+import '@tato30/vue-pdf/style.css';
+import { ref } from 'vue';
+
+const { pdf } = usePDF('https://raw.githubusercontent.com/mozilla/pdf.js/ba2edeae/web/compressed.tracemonkey-pldi-09.pdf')
+
+const highlightText = ref('javascript')
+const highlightOptions = ref({
+  completeWords: false,
+  ignoreCase: true,
+})
+</script>
+
+<template>
+  <div>
+    <div>
+      <input v-model="highlightText">
+      <input v-model="highlightOptions.completeWords" type="checkbox">
+      <input v-model="highlightOptions.ignoreCase" type="checkbox">
+    </div>
+    <VuePDF :pdf="pdf" text-layer :highlight-text="highlightText" :highlight-options="highlightOptions" />
+  </div>
+</template>
+ + + + \ No newline at end of file diff --git a/examples/advanced/multiple_pdf.html b/examples/advanced/multiple_pdf.html new file mode 100644 index 0000000..78a0d0a --- /dev/null +++ b/examples/advanced/multiple_pdf.html @@ -0,0 +1,59 @@ + + + + + + Multiples PDF | VuePDF + + + + + + + + + + + + + + +
Skip to content

Multiples PDF

vue
<script setup>
+import { VuePDF, usePDF } from '@tato30/vue-pdf'
+import { ref } from 'vue'
+
+const pdfSources = [
+  '/example_014.pdf',
+  '/example_036.pdf',
+  '/example_041.pdf',
+  '/example_045.pdf',
+  'https://raw.githubusercontent.com/mozilla/pdf.js/ba2edeae/web/compressed.tracemonkey-pldi-09.pdf',
+]
+// Setting the first (or default) PDF
+const pdfSource = ref(pdfSources[0])
+const pdfSourceIdx = ref(0)
+
+const { pdf } = usePDF(pdfSource)
+
+function nextPdf() {
+  pdfSourceIdx.value += 1
+  if (pdfSourceIdx.value >= pdfSources.length)
+    pdfSourceIdx.value = 0
+  pdfSource.value = pdfSources[pdfSourceIdx.value]
+}
+</script>
+
+<template>
+  <div>
+    <div>
+      <button @click="nextPdf">
+        Next PDF (Current index: {{ pdfSourceIdx }})
+      </button>
+    </div>
+    <VuePDF :pdf="pdf" />
+  </div>
+</template>
+ + + + \ No newline at end of file diff --git a/examples/advanced/toc.html b/examples/advanced/toc.html new file mode 100644 index 0000000..6031208 --- /dev/null +++ b/examples/advanced/toc.html @@ -0,0 +1,69 @@ + + + + + + Table of content | VuePDF + + + + + + + + + + + + + + +
Skip to content

Table of content

vue
<script setup>
+import { ref, triggerRef, watchEffect } from 'vue'
+
+import { VuePDF, usePDF } from '@tato30/vue-pdf'
+
+import ChaptersList from './ChaptersList.vue'
+
+const { pdf, info, getPDFDestination } = usePDF('/example_045.pdf')
+const outlineTree = ref([])
+
+watchEffect(() => {
+  if (info.value.outline !== undefined) {
+    outlineTree.value = info.value.outline.map(function convert(node) {
+      return {
+        title: node.title,
+        destination: getPDFDestination(node.dest),
+        items: node.items.map((item) => {
+          return convert(item)
+        }),
+      }
+    })
+  }
+})
+triggerRef(info)
+
+function onChapterClick(value) {
+  value.then((v) => {
+    console.log(v)
+  })
+}
+</script>
+
+<template>
+  <div id="toc_wrapper">
+    <div class="toc">
+      <ChaptersList
+        :items="outlineTree"
+        @chapterClick="onChapterClick"
+      />
+    </div>
+    <div class="container">
+      <VuePDF :pdf="pdf" />
+    </div>
+  </div>
+</template>
+ + + + \ No newline at end of file diff --git a/examples/advanced/watermark.html b/examples/advanced/watermark.html new file mode 100644 index 0000000..b32d2b7 --- /dev/null +++ b/examples/advanced/watermark.html @@ -0,0 +1,58 @@ + + + + + + Watermark Text | VuePDF + + + + + + + + + + + + + + +
Skip to content

Watermark Text

vue
<script setup>
+import { VuePDF, usePDF } from '@tato30/vue-pdf'
+import { ref } from 'vue'
+
+const { pdf } = usePDF('https://raw.githubusercontent.com/mozilla/pdf.js/ba2edeae/web/compressed.tracemonkey-pldi-09.pdf')
+
+const pdfRef = ref(null)
+const watermarkText = ref('sample')
+const watermarkOptions = ref({
+  columns: 4,
+  rows: 4,
+  color: 'rgba(211, 210, 211, 0.8)',
+  rotation: 45,
+  fontSize: 18,
+})
+
+function reload() {
+  pdfRef.value.reload()
+}
+</script>
+
+<template>
+  <div>
+    <div>
+      <input v-model="watermarkText">
+      <input v-model="watermarkOptions.color">
+      <input v-model="watermarkOptions.columns">
+      <input v-model="watermarkOptions.rows">
+      <input v-model="watermarkOptions.rotation">
+      <input v-model="watermarkOptions.fontSize">
+    </div>
+    <VuePDF ref="pdfRef" :pdf="pdf" :watermark-text="watermarkText" :watermark-options="watermarkOptions" />
+  </div>
+</template>
+ + + + \ No newline at end of file diff --git a/examples/annotation_events/annotation_attachment.html b/examples/annotation_events/annotation_attachment.html new file mode 100644 index 0000000..b95cdf3 --- /dev/null +++ b/examples/annotation_events/annotation_attachment.html @@ -0,0 +1,39 @@ + + + + + + File attachment | VuePDF + + + + + + + + + + + + + + +
Skip to content

File attachment

vue
<script setup>
+import { ref } from 'vue'
+import { VuePDF, usePDF } from '@tato30/vue-pdf'
+
+const { pdf } = usePDF('/example_041.pdf')
+function onAnnotation(value) {
+  console.log(value)
+}
+</script>
+
+<template>
+  <div>
+    <VuePDF :pdf="pdf" annotation-layer image-resources-path="https://unpkg.com/pdfjs-dist@latest/web/images/" @annotation="onAnnotation" />
+  </div>
+</template>
+ + + + \ No newline at end of file diff --git a/examples/annotation_events/annotation_forms.html b/examples/annotation_events/annotation_forms.html new file mode 100644 index 0000000..fe422be --- /dev/null +++ b/examples/annotation_events/annotation_forms.html @@ -0,0 +1,39 @@ + + + + + + Forms fields | VuePDF + + + + + + + + + + + + + + +
Skip to content

Forms fields

vue
<script setup>
+import { ref } from 'vue'
+import { VuePDF, usePDF } from '@tato30/vue-pdf'
+
+const { pdf } = usePDF('/example_014.pdf')
+function onAnnotation(value) {
+  console.log(value)
+}
+</script>
+
+<template>
+  <div>
+    <VuePDF :pdf="pdf" annotation-layer @annotation="onAnnotation" />
+  </div>
+</template>
+ + + + \ No newline at end of file diff --git a/examples/annotation_events/annotation_links.html b/examples/annotation_events/annotation_links.html new file mode 100644 index 0000000..9de4315 --- /dev/null +++ b/examples/annotation_events/annotation_links.html @@ -0,0 +1,39 @@ + + + + + + Links | VuePDF + + + + + + + + + + + + + + +
Skip to content
+ + + + \ No newline at end of file diff --git a/examples/basic/all_pages.html b/examples/basic/all_pages.html new file mode 100644 index 0000000..af443d8 --- /dev/null +++ b/examples/basic/all_pages.html @@ -0,0 +1,35 @@ + + + + + + All pages | VuePDF + + + + + + + + + + + + + + +
Skip to content

All pages

vue
<script setup>
+import { VuePDF, usePDF } from '@tato30/vue-pdf'
+
+const { pdf, pages } = usePDF('https://raw.githubusercontent.com/mozilla/pdf.js/ba2edeae/web/compressed.tracemonkey-pldi-09.pdf')
+</script>
+
+<template>
+  <div v-for="page in pages" :key="page">
+    <VuePDF :pdf="pdf" :page="page" />
+  </div>
+</template>
+ + + + \ No newline at end of file diff --git a/examples/basic/annotation_layer.html b/examples/basic/annotation_layer.html new file mode 100644 index 0000000..3bfbad8 --- /dev/null +++ b/examples/basic/annotation_layer.html @@ -0,0 +1,43 @@ + + + + + + Annotation Layer | VuePDF + + + + + + + + + + + + + + +
Skip to content

Annotation Layer

vue
<script setup>
+import { ref } from 'vue'
+import { VuePDF, usePDF } from '@tato30/vue-pdf'
+import '@tato30/vue-pdf/style.css'
+
+const annotation_layer = ref(false)
+const { pdf } = usePDF('example_014.pdf')
+</script>
+
+<template>
+  <div>
+    <div>
+      <button @click="annotation_layer = !annotation_layer">
+        Change to {{ !annotation_layer }}
+      </button>
+    </div>
+    <VuePDF :pdf="pdf" :annotation-layer="annotation_layer" />
+  </div>
+</template>
+ + + + \ No newline at end of file diff --git a/examples/basic/one_page.html b/examples/basic/one_page.html new file mode 100644 index 0000000..7b08ba8 --- /dev/null +++ b/examples/basic/one_page.html @@ -0,0 +1,46 @@ + + + + + + One page | VuePDF + + + + + + + + + + + + + + +
Skip to content

One page

vue
<script setup>
+import { ref } from 'vue'
+import { VuePDF, usePDF } from '@tato30/vue-pdf'
+
+const page = ref(1)
+const { pdf, pages } = usePDF('https://mozilla.github.io/pdf.js/web/compressed.tracemonkey-pldi-09.pdf')
+</script>
+
+<template>
+  <div>
+    <div>
+      <button @click="page = page > 1 ? page - 1 : page">
+        Prev
+      </button>
+      <span>{{ page }} / {{ pages }}</span>
+      <button @click="page = page < pages ? page + 1 : page">
+        Next
+      </button>
+    </div>
+    <VuePDF :pdf="pdf" :page="page" />
+  </div>
+</template>
+ + + + \ No newline at end of file diff --git a/examples/basic/rotation.html b/examples/basic/rotation.html new file mode 100644 index 0000000..4bfa4a2 --- /dev/null +++ b/examples/basic/rotation.html @@ -0,0 +1,46 @@ + + + + + + Rotation | VuePDF + + + + + + + + + + + + + + +
Skip to content

Rotation

vue
<script setup>
+import { ref } from 'vue'
+import { VuePDF, usePDF } from '@tato30/vue-pdf'
+
+const rotation = ref(1)
+const { pdf } = usePDF('https://raw.githubusercontent.com/mozilla/pdf.js/ba2edeae/web/compressed.tracemonkey-pldi-09.pdf')
+</script>
+
+<template>
+  <div>
+    <div>
+      <button @click="rotation = rotation - 90">
+        -90
+      </button>
+      <span>{{ rotation }}</span>
+      <button @click="rotation = rotation + 90">
+        +90
+      </button>
+    </div>
+    <VuePDF :pdf="pdf" :rotation="rotation" />
+  </div>
+</template>
+ + + + \ No newline at end of file diff --git a/examples/basic/scale.html b/examples/basic/scale.html new file mode 100644 index 0000000..9b42b7d --- /dev/null +++ b/examples/basic/scale.html @@ -0,0 +1,46 @@ + + + + + + Scale | VuePDF + + + + + + + + + + + + + + +
Skip to content

Scale

vue
<script setup>
+import { ref } from 'vue'
+import { VuePDF, usePDF } from '@tato30/vue-pdf'
+
+const scale = ref(1)
+const { pdf } = usePDF('https://raw.githubusercontent.com/mozilla/pdf.js/ba2edeae/web/compressed.tracemonkey-pldi-09.pdf')
+</script>
+
+<template>
+  <div>
+    <div>
+      <button @click="scale = scale > 0.25 ? scale - 0.25 : scale">
+        -
+      </button>
+      <span>{{ scale * 100 }}%</span>
+      <button @click="scale = scale < 2 ? scale + 0.25 : scale">
+        +
+      </button>
+    </div>
+    <VuePDF :pdf="pdf" :scale="scale" />
+  </div>
+</template>
+ + + + \ No newline at end of file diff --git a/examples/basic/text_layer.html b/examples/basic/text_layer.html new file mode 100644 index 0000000..d91405a --- /dev/null +++ b/examples/basic/text_layer.html @@ -0,0 +1,43 @@ + + + + + + Text Layer | VuePDF + + + + + + + + + + + + + + +
Skip to content

Text Layer

vue
<script setup>
+import { ref } from 'vue'
+import { VuePDF, usePDF } from '@tato30/vue-pdf'
+import '@tato30/vue-pdf/style.css'
+
+const text_layer = ref(false)
+const { pdf } = usePDF('https://raw.githubusercontent.com/mozilla/pdf.js/ba2edeae/web/compressed.tracemonkey-pldi-09.pdf')
+</script>
+
+<template>
+  <div>
+    <div>
+      <button @click="text_layer = !text_layer">
+        Change to {{ !text_layer }}
+      </button>
+    </div>
+    <VuePDF :pdf="pdf" :text-layer="text_layer" />
+  </div>
+</template>
+ + + + \ No newline at end of file diff --git a/examples/basic/xfa_layer.html b/examples/basic/xfa_layer.html new file mode 100644 index 0000000..f42a81d --- /dev/null +++ b/examples/basic/xfa_layer.html @@ -0,0 +1,39 @@ + + + + + + XFA Forms | VuePDF + + + + + + + + + + + + + + +
Skip to content

XFA Forms

vue
<script setup>
+import { VuePDF, usePDF } from '@tato30/vue-pdf'
+import '@tato30/vue-pdf/style.css'
+
+const { pdf } = usePDF({
+  url: '/example_xfa.pdf',
+  enableXfa: true,
+})
+</script>
+
+<template>
+  <div class="container">
+    <VuePDF :pdf="pdf" />
+  </div>
+</template>
+ + + + \ No newline at end of file diff --git a/examples/loaded_events/annotation_loaded.html b/examples/loaded_events/annotation_loaded.html new file mode 100644 index 0000000..697fc29 --- /dev/null +++ b/examples/loaded_events/annotation_loaded.html @@ -0,0 +1,38 @@ + + + + + + Annotation Loaded Event | VuePDF + + + + + + + + + + + + + + +
Skip to content

Annotation Loaded Event

WARNING

Annotation loaded event's payload has too many data to display on screen, open the console to see the results.

vue
<script setup>
+import { VuePDF, usePDF } from '@tato30/vue-pdf'
+
+const { pdf } = usePDF('/example_014.pdf')
+function onLoaded(value) {
+  console.log(value)
+}
+</script>
+
+<template>
+  <div>
+    <VuePDF :pdf="pdf" annotation-layer @annotation-loaded="onLoaded" />
+  </div>
+</template>
+ + + + \ No newline at end of file diff --git a/examples/loaded_events/loaded.html b/examples/loaded_events/loaded.html new file mode 100644 index 0000000..6f56b75 --- /dev/null +++ b/examples/loaded_events/loaded.html @@ -0,0 +1,39 @@ + + + + + + Loaded Event | VuePDF + + + + + + + + + + + + + + +
Skip to content

Loaded Event

vue
<script setup>
+import { ref } from 'vue'
+import { VuePDF, usePDF } from '@tato30/vue-pdf'
+
+const { pdf } = usePDF('https://raw.githubusercontent.com/mozilla/pdf.js/ba2edeae/web/compressed.tracemonkey-pldi-09.pdf')
+function onLoaded(value) {
+  console.log(value)
+}
+</script>
+
+<template>
+  <div>
+    <VuePDF :pdf="pdf" @loaded="onLoaded" />
+  </div>
+</template>
+ + + + \ No newline at end of file diff --git a/examples/loaded_events/text_loaded.html b/examples/loaded_events/text_loaded.html new file mode 100644 index 0000000..7066758 --- /dev/null +++ b/examples/loaded_events/text_loaded.html @@ -0,0 +1,38 @@ + + + + + + Text Loaded Event | VuePDF + + + + + + + + + + + + + + +
Skip to content

Text Loaded Event

WARNING

Text loaded event's payload has too many data to display on screen, open the console to see the results.

vue
<script setup>
+import { VuePDF, usePDF } from '@tato30/vue-pdf'
+
+const { pdf } = usePDF('https://raw.githubusercontent.com/mozilla/pdf.js/ba2edeae/web/compressed.tracemonkey-pldi-09.pdf')
+function onLoaded(value) {
+  console.log(value)
+}
+</script>
+
+<template>
+  <div>
+    <VuePDF :pdf="pdf" text-layer @text-loaded="onLoaded" />
+  </div>
+</template>
+ + + + \ No newline at end of file diff --git a/examples/loaded_events/xfa_loaded.html b/examples/loaded_events/xfa_loaded.html new file mode 100644 index 0000000..ea8dc59 --- /dev/null +++ b/examples/loaded_events/xfa_loaded.html @@ -0,0 +1,42 @@ + + + + + + XFA Loaded Event | VuePDF + + + + + + + + + + + + + + +
Skip to content

XFA Loaded Event

vue
<script setup>
+import { VuePDF, usePDF } from '@tato30/vue-pdf'
+import '@tato30/vue-pdf/style.css'
+
+const { pdf } = usePDF({
+  url: '/example_xfa.pdf',
+  enableXfa: true,
+})
+function onLoaded() {
+  console.log("XFA loaded")
+}
+</script>
+
+<template>
+  <div>
+    <VuePDF :pdf="pdf" @xfa-loaded="onLoaded" />
+  </div>
+</template>
+ + + + \ No newline at end of file diff --git a/examples/text_events/text_highlight.html b/examples/text_events/text_highlight.html new file mode 100644 index 0000000..bad9317 --- /dev/null +++ b/examples/text_events/text_highlight.html @@ -0,0 +1,48 @@ + + + + + + Highlight Event | VuePDF + + + + + + + + + + + + + + +
Skip to content

Highlight Event

WARNING

Highlight event's payload has too many data to display on screen, open the console to see the results.

vue
<script setup>
+import { VuePDF, usePDF } from '@tato30/vue-pdf'
+import '@tato30/vue-pdf/style.css'
+import { ref } from 'vue'
+
+const { pdf } = usePDF('https://raw.githubusercontent.com/mozilla/pdf.js/ba2edeae/web/compressed.tracemonkey-pldi-09.pdf')
+
+const highlightText = ref('Trace-based')
+const highlightOptions = ref({
+  completeWords: false,
+  ignoreCase: true,
+})
+
+function onHighlight(value) {
+  console.log(value)
+}
+</script>
+
+<template>
+  <div>
+    <input v-model="highlightText">
+    <VuePDF :pdf="pdf" text-layer :highlight-text="highlightText" :highlight-options="highlightOptions" @highlight="onHighlight" />
+  </div>
+</template>
+ + + + \ No newline at end of file diff --git a/guide/composables.html b/guide/composables.html new file mode 100644 index 0000000..bd609b5 --- /dev/null +++ b/guide/composables.html @@ -0,0 +1,95 @@ + + + + + + Composables | VuePDF + + + + + + + + + + + + + + +
Skip to content

Composables

usePDF

This package provides a default composable named usePDF that loads and prepare the PDF Document for it usage with VuePDF component, also let you get some basic information and properties about the document.

Keep in mind that usePDF use the same DocumentInitParameter as pdf.js, so you could decide how pdf.js should loads your PDF and then make use of more of pdf.js features that are not included in VuePDF by default.

vue
<script setup>
+import { VuePDF, usePDF } from '@tato30/vue-pdf'
+
+const { pdf, pages, info } = usePDF('sample.pdf')
+</script>
+
+<template>
+  <VuePDF :pdf="pdf" />
+</template>

Reactivity

usePDF is also reactive if you use a ref<src> instead of a plain src, when the value of ref changes the returned values also will chage.

vue
<script setup>
+import { VuePDF, usePDF } from '@tato30/vue-pdf'
+
+// Changing currentPdf value will change pdf, pages and info values
+const currentPdf = ref('sample.pdf')
+const { pdf, pages, info } = usePDF(currentPdf)
+</script>
+
+<template>
+  <VuePDF :pdf="pdf" />
+</template>

Parameters

src

Type: string | URL | TypedArray | DocumentInitParameters | ref<string> | ref<URL> | ref<TypedArray> | ref<DocumentInitParameters>
Required: True

This parameter is the same src of pdf.js

js
const { pdf, pages, info } = usePDF('sample.pdf')

options

Type: object

An object with the following properties:

  • onPassword: Callback function to request the document password if no password (or wrong password) was provided.
  • onProgress: Callback function to enable progress monitor.
  • onError: function to handle pdf loading errors
js
function onPassword(updatePassword, reason) {
+  console.log(`Reason for callback: ${reason}`)
+  updatePassword('password1234')
+}
+
+function onProgress({ loaded, total }) {
+  console.log(`${loaded / total * 100}% Loaded`)
+}
+
+function onError(reason) {
+  console.error(`PDF loading error: ${reason}`)
+}
+
+const { pdf, pages, info } = usePDF('sample.pdf', {
+  onPassword,
+  onProgress,
+  onError
+})

Properties

All values returned by usePDF are shallowRef objects.

pdf

Type: PDFDocumentLoadingTask

Document's loading task, see PDFDocumentLoadingTask for more details.


pages

Type: int

Document's number pages.


info

Type: object

Document's information object.

json
{
+  "metadata": {...}, // Metadata object
+  "attachments": {...}, // File attachments object
+  "javascript": [...], // Array of embedded scripts
+  "outline": {...} // Outline objects
+}

getPDFDestination

Type: function

This function returns the page number referenced by dest object used by internal-links or outline object. Check the related example in Table of Content


print

Type: function

Open the browser's print dialog with current PDF loaded with the following parameters:

  • dpi: Pages resolution (default: 150).
  • filename: Filename of the printed file (default: 'filename').

download

Type: function

Trigger a downloading action using an HTMLAnchorElement with the following parameters:

  • filename: Filename of the downloaded file (default: 'filename')

Document API

You can access to PDFDocumentProxy through pdf's promise property and use its API methods to get more document's info like annotationStorage or use functions like saveDocument, cleanup, etc.

js
const { pdf } = usePDF('document.pdf')
+
+function doSomething() {
+  pdf.value.promise.then((doc) => {
+    // doc.annotationsStorage
+    // doc.saveDocument()
+    // doc.cleanup()
+    // doc.getData()
+    // ...
+  })
+}

Make your own composable

Using usePDF it's not required, you can use the pdf.js API in your components or build your own composable yourself. Just need to be sure to send on pdf prop a shallowRef | ref PDFDocumentLoadingTask object.

vue
<script setup>
+import { onMounted, ref } from 'vue'
+import * as PDFJS from 'pdfjs-dist'
+
+const pdf = ref()
+
+function loadPDF() {
+  const loadingTask = PDFJS.getDocument('https://raw.githubusercontent.com/mozilla/pdf.js/ba2edeae/web/compressed.tracemonkey-pldi-09.pdf')
+  pdf.value = loadingTask
+}
+
+onMounted(() => {
+  loadPDF()
+})
+</script>
+
+<template>
+  <div>
+    <VuePDF :pdf="pdf" />
+  </div>
+</template>
+ + + + \ No newline at end of file diff --git a/guide/events.html b/guide/events.html new file mode 100644 index 0000000..9f1036f --- /dev/null +++ b/guide/events.html @@ -0,0 +1,139 @@ + + + + + + Events | VuePDF + + + + + + + + + + + + + + +
Skip to content

Events

loaded

vue
<VuePDF :pdf="pdf" @loaded="onLoaded" />

Emitted when page has finished to render, the payload value contains the page's data.

Payload example:

json
{
+  "viewBox": [0, 0, 595.276, 841.89],
+  "scale": 1,
+  "rotation": 90,
+  "offsetX": 0,
+  "offsetY": 0,
+  "transform": [0, 1, 1, 0, 0, 0],
+  "width": 841.89,
+  "height": 595.276
+}

text-loaded

vue
<VuePDF :pdf="pdf" @text-loaded="onLoaded" />

Emitted when text layer has finished to render, the payload value contains the textDivs and textContent of the page.

Payload example:

json
{
+  "textContent": {
+    "items": [{
+      "dir": "ltr",
+      "fontName": "g_d3_f1",
+      "hasEOL": true,
+      "height": 17.9328,
+      "str": "Trace-based Just-in-Time Type Specialization for Dynamic",
+      "transform": [17.9328, 0, 0, 17.9328, 90.5159, 700.6706],
+      "width": 449.09111040000033
+    }], // ... more text items
+    "styles": {
+      "g_d3_f1": {
+        "fontFamily": "sans-serif",
+        "ascent": 0.69,
+        "descent": -0.209,
+        "vertical": false
+      } // ... more objects
+    }
+  },
+  "textDivs": ["<SPANElement>", "<SPANElement>", "..."]
+}

annotation-loaded

vue
<VuePDF :pdf="pdf" @annotation-loaded="onLoaded" />

Emitted when annotation layer has finished to render, the payload value contains the annotations of the page.

Payload example:

json
[
+  {
+    "annotationFlags": 4,
+    "annotationType": 20,
+    "rotation": 0,
+    "fieldType": "Tx",
+    "subType": "Widget"
+    // more properties...
+  }
+] // more annotations

xfa-loaded

vue
<VuePDF :pdf="pdf" @xfa-loaded="onLoaded" />

Emitted when XFA page has finished to render.

highlight

vue
<VuePDF :pdf="pdf" @highlight="onHighlight" />

Emitted when a text has been searched in page using highlight-text and highlight-options, this event return a list of matches and the page where the text was found with its textDivs and textContent.

Check the example: Highlight Event

annotation

vue
<VuePDF :pdf="pdf" @annotation="onAnnotation" />

Emitted when user has an interaction with any annotation.

Annotation event data depends on what type of annotation has triggered the event, in general, the events value follows this structure:

PropertyValue
typePossible values: internal-link, link, file-attachment, form-text, form-select, form-checkbox, form-radio, form-button
dataAnnotation's associated data

internal-link emitted when the user clicks on a link that redirects to another content within the document.

json
{
+  "type": "internal-link",
+  "data": {
+    "referencedPage": 3,
+    "offset": {
+      "left": 82,
+      "bottom": 716
+    }
+  }
+}

link emitted when the user clicks on an external link.

json
{
+  "type": "link",
+  "data": {
+    "url": "mailto:aor@testmail.com",
+    "unsafeUrl": "mailto:aor@testmail.com"
+  }
+}

file-attachment

file-attachment emitted when the user double-clicks an attachment annotation.

json
{
+  "type": "file-attachment",
+  "data": {
+    "filename": "utf8test.txt",
+    "content": [83, 101, 110] // Uint8Array
+  }
+}

form-text

form-text emitted when the user inputs a value in an text-field element.

json
{
+  "type": "form-text",
+  "data": {
+    "fieldName": "firstname",
+    "value": "Aldo Hernandez"
+  }
+}

form-select

form-select emitted when the user inputs a value in an one-select or multi-select element.

json
{
+  "type": "form-select",
+  "data": {
+    "fieldName": "gender",
+    "value": [
+      {
+        "value": "M",
+        "label": "Male"
+      }
+    ],
+    "options": [
+      {
+        "value": "",
+        "label": "-"
+      },
+      {
+        "value": "M",
+        "label": "Male"
+      },
+      {
+        "value": "F",
+        "label": "Female"
+      }
+    ]
+  }
+}

form-checkbox

form-checkbox emitted when the user changes a checkbox field element.

json
{
+  "type": "form-checkbox",
+  "data": {
+    "fieldName": "newsletter",
+    "checked": true
+  }
+}

form-radio

form-radio emitted when the user changes a radio field.

json
{
+  "type": "form-radio",
+  "data": {
+    "fieldName": "drink",
+    "value": "Wine",
+    "defaultValue": "Beer",
+    "options": ["Water", "Beer", "Wine", "Milk"]
+  }
+}

form-button

form-button emitted when the user clicks on a push button element.

json
{
+  "type": "form-button",
+  "data": {
+    "fieldName": "Print",
+    "actions": {
+      "Mouse Down": ["Print()"]
+    },
+    "reset": false
+  }
+}
+ + + + \ No newline at end of file diff --git a/guide/introduction.html b/guide/introduction.html new file mode 100644 index 0000000..478c486 --- /dev/null +++ b/guide/introduction.html @@ -0,0 +1,76 @@ + + + + + + Introduction | VuePDF + + + + + + + + + + + + + + +
Skip to content

Introduction

VuePDF is a client-side component for Vue 3 that allows you to flexibly render PDF pages within your project. This library wraps pdf.js library so all main features of pdf.js are supported by VuePDF as well.

Installation

sh
npm i @tato30/vue-pdf
sh
yarn add @tato30/vue-pdf

Basic Usage

The most basic usage is as simple as import the VuePDF and usePDF and use them on your project 😃

vue
<script setup>
+import { VuePDF, usePDF } from '@tato30/vue-pdf'
+
+const { pdf } = usePDF('sample.pdf')
+</script>
+
+<template>
+  <VuePDF :pdf="pdf" />
+</template>

Working With Layers

Text and Annotations

This component supports text selection and annotation interaction by enabling them with text-layer and annotation-layer props respectively, but for this layers renders correctly is necessary set some css styles, it can be done by importing default styles from @tato30/vue-pdf/style.css.

vue
<script setup>
+import { VuePDF, usePDF } from '@tato30/vue-pdf'
+import '@tato30/vue-pdf/style.css'
+
+const { pdf } = usePDF('sample.pdf')
+</script>
+
+<template>
+  <VuePDF :pdf="pdf" text-layer annotation-layer />
+</template>

Check the examples:

You could create your own custom styles and set them in your project, use this styles as a guide:

XFA Forms

XFA forms also can be supported by enabling them from usePDF.

vue
<script setup>
+import { VuePDF, usePDF } from '@tato30/vue-pdf'
+import '@tato30/vue-pdf/style.css'
+
+const { pdf } = usePDF({
+  url: '/example_xfa.pdf',
+  enableXfa: true,
+})
+</script>
+
+<template>
+  <VuePDF :pdf="pdf" />
+</template>

Check the example:

Server-Side Rendering

VuePDF is a client-side library, so if you are working with a SSR framework like nuxt, surely it will throw an error during the building stage, if that is the case, you could wrap VuePDF in some sort of "client only" directive or component, also usePDF should be wrapped.

Supporting Non-Latin characters

If you are looking for display non-latin text or you are getting a warning like:

Warning: Error during font loading: CMapReaderFactory not initialized, see the useWorkerFetch parameter

you will probably need to copy the cmaps directory from node_modules/pdfjs-dist to your project's public directory, don't worry about no having pdfjs-dist it's installed alongside vue-pdf package.

.
+├─ node_modules
+│  ├─ pdfjs-dist
+│  │  └─ cmaps    <--- Copy this directory
+├─ src
+├─ public         
+|  ├─ *cmaps*     <--- Paste it here!
+├─ package.json
+|  ...

With that made the cmaps will be available on relative path /cmaps/, now you need the tell usePDF uses that cmaps url:

js
const { pdf } = usePDF({
+  url: pdfsource,
+  cMapUrl: '/cmaps/',
+})

Contributing

Any idea, suggestion or contribution to the code or documentation are very welcome.

sh
# Clone the repository
+git clone https://github.com/TaTo30/vue-pdf.git
+
+# Change to code folder
+cd vue-pdf
+cd vue-pdf/docs # In case you want to update docs
+
+# Install node_modules
+npm install
+
+# Run code with hot reload
+npm run dev
+ + + + \ No newline at end of file diff --git a/guide/methods.html b/guide/methods.html new file mode 100644 index 0000000..951ef4b --- /dev/null +++ b/guide/methods.html @@ -0,0 +1,47 @@ + + + + + + Methods | VuePDF + + + + + + + + + + + + + + +
Skip to content

Methods

reload

Reload page's render task, useful to update some props, for example, the parent width when fit-parent is used

vue
<script setup>
+import { ref } from 'vue'
+
+const VPDF = ref({})
+function someEvent() {
+  VPDF.value.reload()
+}
+</script>
+
+<template>
+  <VuePDF ref="VPDF" :pdf="pdf" />
+</template>

cancel

Cancel the render task if the page is currently rendering.

vue
<script setup>
+import { ref } from 'vue'
+
+const VPDF = ref({})
+function someEvent() {
+  VPDF.value.cancel()
+}
+</script>
+
+<template>
+  <VuePDF ref="VPDF" :pdf="pdf" />
+</template>
+ + + + \ No newline at end of file diff --git a/guide/props.html b/guide/props.html new file mode 100644 index 0000000..ad68286 --- /dev/null +++ b/guide/props.html @@ -0,0 +1,58 @@ + + + + + + Props | VuePDF + + + + + + + + + + + + + + +
Skip to content

Props

pdf

Type: PDFDocumentLoadingTask
Required: true

The PDFDocumentLoadingTask obtained from usePDF.

vue
<VuePDF :pdf="pdf" />

page

Type: int
Required: false
Default: 1

Page to render, this prop must be a page number starting at 1.

vue
<VuePDF :pdf="pdf" :page="1" />

intent

Type: string
Required: false
Default: display

Rendering intent, can be display, print, or any.

vue
<VuePDF :pdf="pdf" intent="print" />

scale

Type: int
Required: false
Default: 1

Page's scale.

vue
<VuePDF :pdf="pdf" :scale="0.5" />

fit-parent

Type: boolean
Required: false
Default: false

Fit the page's width with the parent width. This prop replace scale in size calculation and has more precedence than width.

vue
<VuePDF :pdf="pdf" fit-parent />

width

Type: number
Required: false
Default: null

Scale the page using a width in px. This prop replace scale in size calculation and has more precedence than height.

vue
<VuePDF :pdf="pdf" :width="500" />

height

Type: number
Required: false
Default: null

Scale the page using a height in px. This prop replace scale in size calculation.

vue
<VuePDF :pdf="pdf" :height="500" />

rotation

Type: int
Required: false
Default: Document's Default

Rotate the page in 90° multiples eg. (90, 180, 270)

vue
<VuePDF :pdf="pdf" :rotation="90" />

text-layer

Type: boolean
Required: false
Default: false

Enables text selection.

vue
<VuePDF :pdf="pdf" text-layer />

highlight-text v1.9

Type: string | string[]
Required: false
Default: null

Highlight on the page the searched text or the searched array of text.

vue
<VuePDF :pdf="pdf" text-layer hightlight-text="javascript" />
+
+<VuePDF :pdf="pdf" text-layer :hightlight-text="['javascript', 'trace-based']" />

highlight-options v1.9

Type: object
Required: false
Default:

{
+  completeWords: false,
+  ignoreCase: true
+}

Settings for how to find the highlight-text on page's text.

vue
<VuePDF :pdf="pdf" text-layer hightlight-text="javascript" :highlight-options="{
+    completeWords: true,
+    ignoreCase: false
+  }"
+/>

annotation-layer

Type: boolean
Required: false
Default: false

Enables document annotations like links, popups, widgets, etc.

vue
<VuePDF :pdf="pdf" annotation-layer />

watermark-text

Type: string
Required: false
Default: null

Prints a watermark pattern over the canvas.

vue
<VuePDF :pdf="pdf" watermark-text="Sample" />

watermark-options

Type: object
Required: false
Default:

{
+  columns: 4,
+  rows: 4,
+  rotation: 45,
+  fontSize: 18,
+  color: 'rgba(211, 210, 211, 0.4)',
+}

Customize how watermark is printed over the canvas.

vue
<script setup>
+const watermarkOptions = ref({
+  columns: 1,
+  rows: 1,
+  color: '#23FFFF',
+  rotation: 45,
+  fontSize: 20,
+})
+</script>
+
+<VuePDF :pdf="pdf" watermark-text="Sample" :watermark-options="watermarkOptions" />

image-resources-path

Type: string
Required: false
Default: null

Path to image resources needed to render some graphics when required.

vue
<VuePDF :pdf="pdf" image-resources-path="https://unpkg.com/pdfjs-dist@latest/web/images/" />

hide-forms

Type: boolean
Required: false
Default: false

Hide AcroForms from annotation-layer.

vue
<VuePDF :pdf="pdf" annotation-layer hide-forms />

annotations-filter

Type: array
Required: false
Default: null

Allows to choose which annotations display on page, the following options are available:

  • Link
  • Text
  • Stamp
  • Popup
  • FreeText
  • Line
  • Square
  • Circle
  • PolyLine
  • Caret
  • Ink
  • Polygon
  • Highlight
  • Underline
  • Squiggly
  • StrikeOut
  • FileAttachment
  • Widget
    • Widget.Tx
    • Widget.Btn
    • Widget.Ch
    • Widget.Sig

NOTE: Widget shows all Widget subtypes like Widget.Tx, Widget.Btn, etc.

vue
<script setup>
+const filter = ref(['Link', 'Text', 'Widget'])
+</script>
+
+<VuePDF :pdf="pdf" annotation-layer :annotations-filter="filter" />

annotations-map

Type: object
Required: false
Default: null

Allows to map values to annotation's storage, useful for edit annotation's data before rendering.

vue
<script setup>
+const annotationMap = ref({ '7R': { value: 'Modified value' } })
+</script>
+
+<VuePDF :pdf="pdf" annotation-layer :annotations-map="annotationMap" />
+ + + + \ No newline at end of file diff --git a/guide/slots.html b/guide/slots.html new file mode 100644 index 0000000..a02c365 --- /dev/null +++ b/guide/slots.html @@ -0,0 +1,31 @@ + + + + + + Slots | VuePDF + + + + + + + + + + + + + + +
Skip to content

Slots

loading: default

Content to display when page is rendering

vue
<template>
+  <VuePDF :pdf="pdf">
+    <div>
+      Loading...
+    </div>
+  </VuePDF>
+</template>
+ + + + \ No newline at end of file diff --git a/hashmap.json b/hashmap.json new file mode 100644 index 0000000..adc4edb --- /dev/null +++ b/hashmap.json @@ -0,0 +1 @@ +{"examples_readme.md":"xUNjoHVR","examples_loaded_events_annotation_loaded.md":"CvtWpCf6","examples_loaded_events_loaded.md":"ClUowwGY","examples_loaded_events_text_loaded.md":"BfjqVtQx","examples_annotation_events_annotation_links.md":"CZ5CLImb","examples_loaded_events_xfa_loaded.md":"0fevCerE","examples_basic_all_pages.md":"Bgiz8YKO","examples_basic_annotation_layer.md":"bRERWQrF","examples_advanced_multiple_pdf.md":"CPe21CiY","examples_basic_scale.md":"zG8witMG","guide_composables.md":"faNLVSlf","examples_basic_text_layer.md":"CvqCS7X4","examples_text_events_text_highlight.md":"DoaqSf0G","examples_advanced_annotation_filter.md":"CS2HpK38","examples_basic_rotation.md":"hLcYj0sL","guide_props.md":"Bj6ueBb0","guide_events.md":"EJPsrau-","examples_annotation_events_annotation_forms.md":"MU92Ovv6","index.md":"Cn-5gwTH","examples_advanced_watermark.md":"D5LdRjgD","examples_basic_xfa_layer.md":"41D_gXwR","examples_advanced_fit_parent.md":"CdTQz1kl","examples_advanced_highlight_text.md":"E_oQuIkG","examples_advanced_toc.md":"D4_TAtJH","examples_annotation_events_annotation_attachment.md":"BW7DyZWL","guide_slots.md":"CtDmd0rJ","guide_introduction.md":"CdL9bhWN","guide_methods.md":"BSqw95De","examples_basic_one_page.md":"BQJ5PNC5"} diff --git a/index.html b/index.html new file mode 100644 index 0000000..599f6ef --- /dev/null +++ b/index.html @@ -0,0 +1,25 @@ + + + + + + Home | PDF component for Vue 3 + + + + + + + + + + + + + + +
Skip to content

VuePDF

Render PDF pages on your website

An easy-to-use component for rendering PDF pages in a dynamically and customizable way

VuePDF
+ + + + \ No newline at end of file diff --git a/logo.png b/logo.png new file mode 100644 index 0000000..2bbd5d3 Binary files /dev/null and b/logo.png differ